{"version":3,"file":"js/modules.build.js","mappings":"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EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACx3IC,GAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,IAdzB,GAcwC,CAAC,IAdzC,GAcwD,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAC53CC,GAAc,CAAC,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KACjwDC,GAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EA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S,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,SAA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CJC,KAAM,EACNC,KAAM,EACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,EACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,GACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,GACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,GACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,EACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,EACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,EACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,IAEd,MAAMC,GACJ,WAAAnkkB,CAAY1E,EAAM4mB,EAAOxkB,GACvBV,KAAK1B,KAAOA,EACZ0B,KAAKonkB,GAAKlijB,EACVllB,KAAKqnkB,QAAU3mkB,EACfV,KAAKsnkB,MAAQhpkB,EAAK4mB,GAClBllB,KAAKunkB,KAAO,EACZvnkB,KAAKwnkB,SACLxnkB,KAAKsnkB,MAA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,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,KAECyojB,GAAsB,CAAC,CAC3BC,OAAQ,CAAC,CACP3ojB,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,IAELw+V,UAAW,CAAC,CACVz+V,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,KAEJ,CACD0ojB,OAAQ,CAAC,CACP3ojB,GAAI,EACJC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B,EAAEwnpB,QAAU,KACZxnpB,EAAEynpB,cAAgB,KAClBznpB,EAAE0npB,WAAa,KACf1npB,EAAE2npB,iBAAmB,KACrB3npB,EAAE4npB,iBAAmB,IACrB5npB,EAAE6npB,QAAU,KACZ7npB,EAAE8npB,aAAe,KACjB9npB,EAAE+npB,KAAO,GACT/npB,EAAEgopB,WAAa,KACfhopB,EAAEiopB,YAAc,KAChBjopB,EAAEkopB,WAAa,KACflopB,EAAEmopB,2BAA6B,MAC/BnopB,EAAEoopB,SAAW,KACbpopB,EAAEqopB,YAAc,KAChBropB,EAAEsopB,aAAe,KACjBtopB,EAAEuopB,aAAe,KACjBvopB,EAAEwopB,eAAiB,KACnBxopB,EAAEyopB,aAAe,MACjBzopB,EAAE0opB,qBAAuB,MACzB1opB,EAAE2opB,aAAe,KACjB3opB,EAAE4opB,cAAgB,MAClB5opB,EAAE6opB,aAAe,MACjB7opB,EAAE8opB,UAAY,KACd9opB,EAAE+opB,WAAa,KACf/opB,EAAEgppB,YAAc,KAChBhppB,EAAEippB,UAAY,KACdjppB,EAAEkppB,aAAe,KACjBlppB,EAAEmppB,SAAW,KACbnppB,EAAEoppB,GAAK,MACPpppB,EAAEqppB,IAAM,MACRrppB,EAAEsppB,OAAS,IACXtppB,EAAEuppB,WAAa,MACfvppB,EAAEwppB,SAAW,MACbxppB,EAAEyppB,UAAY,KACdzppB,EAAE0ppB,SAAW,KACb1ppB,EAAE2ppB,YAAc,KAChB3ppB,EAAE4ppB,OAAS,KACX5ppB,EAAE6ppB,KAAO,GACT7ppB,EAAE8ppB,WAAa,KACf9ppB,EAAE+ppB,YAAc,KAChB/ppB,EAAEgqpB,WAAa,KACfhqpB,EAAEiqpB,2BAA6B,MAC/BjqpB,EAAEkqpB,SAAW,KACblqpB,EAAEmqpB,aAAe,KACjBnqpB,EAAEoqpB,aAAe,KACjBpqpB,EAAEqqpB,eAAiB,KACnBrqpB,EAAEsqpB,aAAe,MACjBtqpB,EAAEuqpB,qBAAuB,MACzBvqpB,EAAEwqpB,aAAe,KACjBxqpB,EAAEyqpB,cAAgB,MAClBzqpB,EAAE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AAEsnrB,UAAY,KACdtnrB,EAAEunrB,0BAA4B,MAC9BvnrB,EAAEwnrB,QAAU,KACZxnrB,EAAEynrB,eAAiB,KACnBznrB,EAAE0nrB,UAAY,KACd1nrB,EAAE2nrB,UAAY,MACd3nrB,EAAE4nrB,YAAc,KAChB5nrB,EAAE6nrB,YAAc,KAChB7nrB,EAAE8nrB,cAAgB,KAClB9nrB,EAAE+nrB,QAAU,IACZ/nrB,EAAEgorB,YAAc,MAChBhorB,EAAEiorB,oBAAsB,MACxBjorB,EAAEkorB,YAAc,KAChBlorB,EAAEmorB,aAAe,MACjBnorB,EAAEoorB,oBAAsB,KACxBporB,EAAEqorB,YAAc,MAChBrorB,EAAEsorB,SAAW,KACbtorB,EAAEuorB,UAAY,KACdvorB,EAAEworB,WAAa,KACfxorB,EAAEyorB,WAAa,IACfzorB,EAAE0orB,SAAW,KACb1orB,EAAE2orB,YAAc,IAChB3orB,EAAE4orB,QAAU,KACZ5orB,EAAE6orB,SAAW,KACb7orB,EAAE8orB,QAAU,IACZ9orB,EAAE+orB,cAAgB,IAClB/orB,EAAEgprB,WAAa,KACfhprB,EAAEiprB,gBAAkB,KACpBjprB,EAAEkprB,MAAQ,IACVlprB,EAAEmprB,OAAS,KACXnprB,EAAEoprB,WAAa,KACfpprB,EAAE4iM,OAAS,KACX5iM,EAAEqprB,YAAc,IAChBrprB,EAAEsprB,aAAe,IACjBtprB,EAAEuprB,WAAa,KACfvprB,EAAEwprB,WAAa,KACfxprB,EAAEyprB,oBAAsB,KACxBzprB,EAAE0prB,OAAS,IACX1prB,EAAE2prB,YAAc,IAChB3prB,EAAE4prB,eAAiB,MACnB5prB,EAAE6prB,eAAiB,MACnB7prB,EAAE8prB,wBAA0B,MAC5B9prB,EAAE+prB,aAAe,IACjB/prB,EAAEgqrB,UAAY,MACdhqrB,EAAEiqrB,WAAa,KACfjqrB,EAAEkqrB,OAAS,IACXlqrB,EAAEmqrB,YAAc,KAChBnqrB,EAAEoqrB,eAAiB,KACnBpqrB,EAAEqqrB,WAAa,MACfrqrB,EAAE4jM,SAAW,KACb5jM,EAAEsqrB,mBAA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KACxB9mtB,EAAE+mtB,kBAAoB,KACtB/mtB,EAAEgntB,eAAiB,KACnBhntB,EAAEintB,mBAAqB,KACvBjntB,EAAEk8E,EAAI,IACNl8E,EAAEkntB,OAAS,KACXlntB,EAAEmntB,WAAa,KACfnntB,EAAEontB,WAAa,KACfpntB,EAAEqntB,WAAa,MACfrntB,EAAEsntB,IAAM,KACRtntB,EAAEuntB,UAAY,MACdvntB,EAAEwntB,YAAc,MAChBxntB,EAAEyntB,gBAAkB,MACpBzntB,EAAE0ntB,UAAY,KACd1ntB,EAAE2ntB,SAAW,MACb3ntB,EAAE4ntB,eAAiB,MACnB5ntB,EAAE6ntB,aAAe,KACjB7ntB,EAAE8ntB,aAAe,KACjB9ntB,EAAE+ntB,QAAU,KACZ/ntB,EAAEgotB,UAAY,KACdhotB,EAAEiotB,WAAa,KACfjotB,EAAEkotB,UAAY,KACdlotB,EAAEmotB,eAAiB,MACnBnotB,EAAEootB,iBAAmB,MACrBpotB,EAAEqotB,gBAAkB,MACpBrotB,EAAEsotB,WAAa,MACftotB,EAAEuotB,MAAQ,KACVvotB,EAAEwotB,YAAc,IAChBxotB,EAAEyotB,qBAAuB,IACzBzotB,EAAE0otB,qBAAuB,IACzB1otB,EAAE2otB,mBAAqB,IACvB3otB,EAAE4otB,gBAAkB,IACpB5otB,EAAE6otB,YAAc,KAChB7otB,EAAE8otB,MAAQ,IACV9otB,EAAE+otB,WAAa,MACf/otB,EAAEgptB,cAAgB,KAClBhptB,EAAEiptB,WAAa,KACfjptB,EAAEkptB,eAAiB,KACnBlptB,EAAEmptB,eAAiB,KACnBnptB,EAAEoptB,YAAc,KAChBpptB,EAAEqptB,gBAAkB,KACpBrptB,EAAEsptB,WAAa,MACftptB,EAAEuptB,WAAa,KACfvptB,EAAEwptB,wBAA0B,MAC5BxptB,EAAEyptB,wBAA0B,MAC5BzptB,EAAE0ptB,eAAiB,MACnB1ptB,EAAE2ptB,wBAA0B,MAC5B3ptB,EAAE4ptB,WAAa,MACf5ptB,EAAE6ptB,OAAS,KACX7ptB,EAAE8ptB,OAAS,KACX9ptB,EAAE+p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B,IAAM,MACR9kuB,EAAE+kuB,KAAO,MACT/kuB,EAAEgluB,IAAM,MACRhluB,EAAEiluB,KAAO,MACTjluB,EAAEkluB,IAAM,KACRlluB,EAAEmluB,IAAM,KACRnluB,EAAEoluB,IAAM,KACRpluB,EAAEqluB,IAAM,MACRrluB,EAAEsluB,IAAM,KACRtluB,EAAEuluB,IAAM,MACRvluB,EAAEwluB,IAAM,MACRxluB,EAAEyluB,IAAM,MACRzluB,EAAE0luB,IAAM,MACR1luB,EAAE2luB,IAAM,MACR3luB,EAAE4luB,IAAM,MACR5luB,EAAE6luB,KAAO,MACT7luB,EAAE8luB,KAAO,MACT9luB,EAAE+luB,KAAO,MACT/luB,EAAEgmuB,KAAO,MACThmuB,EAAEimuB,KAAO,MACTjmuB,EAAEkmuB,KAAO,MACTlmuB,EAAEmmuB,KAAO,MACTnmuB,EAAEomuB,KAAO,MACTpmuB,EAAEqmuB,KAAO,KACTrmuB,EAAEsmuB,KAAO,KACTtmuB,EAAEumuB,KAAO,KACTvmuB,EAAEwmuB,KAAO,KACTxmuB,EAAEymuB,KAAO,KACTzmuB,EAAE0muB,KAAO,KACT1muB,EAAE2muB,KAAO,KACT3muB,EAAE4muB,KAAO,KACT5muB,EAAE6muB,KAAO,KACT7muB,EAAE8muB,KAAO,KACT9muB,EAAE+muB,KAAO,KACT/muB,EAAEgnuB,KAAO,KACThnuB,EAAEinuB,KAAO,KACTjnuB,EAAEknuB,KAAO,KACTlnuB,EAAEmnuB,KAAO,MACTnnuB,EAAEonuB,KAAO,MACTpnuB,EAAEqnuB,KAAO,MACTrnuB,EAAEsnuB,KAAO,MACTtnuB,EAAEunuB,KAAO,MACTvnuB,EAAEwnuB,KAAO,MACTxnuB,EAAEynuB,KAAO,MACTznuB,EAAE0nuB,KAAO,MACT1nuB,EAAE2nuB,KAAO,MACT3nuB,EAAE4nuB,KAAO,MACT5nuB,EAAE6nuB,KAAO,MACT7nuB,EAAE8nuB,KAAO,MACT9nuB,EAAE+nuB,KAAO,MACT/nuB,EAAEgouB,KAAO,MACThouB,EAAEiouB,KAAO,MACTjouB,EAAEkouB,KAAO,MACTlouB,EAAEmouB,KAAO,MACTnouB,EAAEoouB,KAAO,MACTpouB,EAAEqouB,KAAO,MACTrouB,EAAEsouB,KAAO,MACTtouB,EAAEuouB,KAAO,MACTvouB,EAAEwouB,KAAO,MACTxouB,EAAEyouB,KAAO,MACTzouB,EAAE0ouB,KAAO,MACT1ouB,EAAE2ouB,KAAO,MACT3ouB,EAAE4ouB,KAAO,MACT5ouB,EAAE6ouB,KAAO,MACT7ouB,EAAE8ouB,KAAO,MACT9ouB,EAAE+ouB,KAAO,MACT/ouB,EAAEgpuB,KAAO,MACThpuB,EAAEipuB,KAAO,MACTjpuB,EAAEkpuB,KAAO,KACTlpuB,EAAEmpuB,KAAO,KACTnpuB,EAAEopuB,KAAO,KACTppuB,EAAEqpuB,KAAO,MACTrpuB,EAAEspuB,KAAO,MACTtpuB,EAAEupuB,KAAO,MACTvpuB,EAAEwpuB,KAAO,MACTxpuB,EAAEypuB,KAAO,MACTzpuB,EAAE0puB,KAAO,MACT1puB,EAAE2puB,KAAO,MACT3puB,EAAE4puB,KAAO,MACT5puB,EAAE6puB,KAAO,MACT7puB,EAAE8puB,KAAO,MACT9puB,EAAE+puB,KAAO,MACT/puB,EAAEgquB,KAAO,MACThquB,EAAEiquB,KAAO,MACTjquB,EAAEkquB,KAAO,MACTlquB,EAAEmquB,KAAO,MACTnquB,EAAEoquB,KAAO,MACTpquB,EAAEqquB,KAAO,MACTrquB,EAAEsquB,KAAO,MACTtquB,EAAEuquB,KAAO,MACTvquB,EAAEwquB,KAAO,MACTxquB,EAAEyquB,KAAO,MACTzquB,EAAE0quB,KAAO,MACT1quB,EAAE2quB,KAAO,MACT3quB,EAAE4quB,KAAO,MACT5quB,EAAE6quB,KAAO,MACT7quB,EAAE8quB,KAAO,MACT9quB,EAAE+quB,KAAO,MACT/quB,EAAEgruB,KAAO,MACThruB,EAAEiruB,KAAO,MACTjruB,EAAEkruB,KAAO,MACTlruB,EAAEmruB,KAAO,MACTnruB,EAAEoruB,KAAO,MACTpruB,EAAEqruB,KAAO,MACTrruB,EAAEsruB,KAAO,M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ACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,I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uB,KAAO,IACT9nuB,EAAE+nuB,KAAO,IACT/nuB,EAAEgouB,KAAO,IACThouB,EAAEiouB,KAAO,IACTjouB,EAAEkouB,KAAO,IACTlouB,EAAEmouB,KAAO,IACTnouB,EAAEoouB,KAAO,IACTpouB,EAAEqouB,KAAO,IACTrouB,EAAEsouB,KAAO,IACTtouB,EAAEuouB,KAAO,IACTvouB,EAAEwouB,KAAO,IACTxouB,EAAEyouB,KAAO,IACTzouB,EAAE0ouB,KAAO,IACT1ouB,EAAE2ouB,KAAO,IACT3ouB,EAAE4ouB,KAAO,IACT5ouB,EAAE6ouB,KAAO,IACT7ouB,EAAE8ouB,KAAO,IACT9ouB,EAAE+ouB,KAAO,IACT/ouB,EAAEgpuB,KAAO,IACThpuB,EAAEipuB,KAAO,IACTjpuB,EAAEkpuB,KAAO,IACTlpuB,EAAEmpuB,KAAO,KACTnpuB,EAAEopuB,KAAO,IACTppuB,EAAEqpuB,KAAO,IACTrpuB,EAAEspuB,KAAO,IACTtpuB,EAAEupuB,KAAO,IACTvpuB,EAAEwpuB,KAAO,IACTxpuB,EAAEypuB,KAAO,IACTzpuB,EAAE0puB,KAAO,IACT1puB,EAAE2puB,KAAO,IACT3puB,EAAE4puB,KAAO,IACT5puB,EAAE6puB,KAAO,IACT7puB,EAAE8puB,KAAO,IACT9puB,EAAE+puB,KAAO,IACT/puB,EAAEgquB,KAAO,IACThquB,EAAEiquB,KAAO,IACTjquB,EAAEkquB,KAAO,IACTlquB,EAAEmquB,KAAO,IACTnquB,EAAEoquB,KAAO,IACTpquB,EAAEqquB,KAAO,IACTrquB,EAAEsquB,KAAO,IACTtquB,EAAEuquB,KAAO,IACTvquB,EAAEwquB,KAAO,IACTxquB,EAAEyquB,KAAO,IACTzquB,EAAE0quB,KAAO,IACT1quB,EAAE2quB,KAAO,IACT3quB,EAAE4quB,KAAO,IACT5quB,EAAE6quB,KAAO,IACT7quB,EAAE8quB,KAAO,IACT9quB,EAAE+quB,KAAO,IACT/quB,EAAEgruB,KAAO,IACThruB,EAAEiruB,KAAO,IACTjruB,EAAEkruB,K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OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,EAAG,EAAG,MAAQ,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1tJC,GAAqB,CACzBzyjB,WAAY,OACZ2R,QAAS,OAEL+gjB,GAA2B,CAAC,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxwJC,GAA2B,CAC/B3yjB,WAAY,OACZ2R,QAAS,OAELihjB,GAAuB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,MAAQ,QAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,KAAO,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,MAAQ,KAAO,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACzrJC,GAAuB,CAC3B7yjB,WAAY,OACZ2R,QAAS,OAELmhjB,GAAwB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnvJC,GAAwB,CAC5B/yjB,WAAY,OACZ2R,QAAS,OAILqhjB,GAAuB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,EAAG,OAAQ,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,MAAQ,OAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/iLC,GAAuB,CAC3BjzjB,WAAY,IACZ2R,QAAS,IAELuhjB,GAA6B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxjLC,GAA6B,CACjCnzjB,WAAY,KACZ2R,QAAS,IAELyhjB,GAAyB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAQ,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,EAAG,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACt6KC,GAAyB,CAC7BrzjB,WAAY,KACZ2R,QAAS,IAEL2hjB,GAA0B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,QAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,QAAS,EAAG,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,EAAG,OAAS,OAAS,EAAG,QAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,EAAG,OAAQ,EAAG,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,MAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC32KC,GAA0B,CAC9BvzjB,WAAY,IACZ2R,QAAS,IAIL6hjB,GAA2B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACv3GC,GAA4B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC9gHC,GAAiC,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC33GC,GAAkC,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACphHC,GAA6B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACt3GC,GAA8B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAChhHC,GAA8B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACz3GC,GAA+B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAGjhHC,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,KAAO,QAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,EAAG,EAAG,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,MAAQ,KAAO,MAAQ,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,IAAM,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAQ,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC16IC,GAAuB,CAC3Bj0jB,WAAY,IACZ2R,QAAS,IAELuijB,GAA6B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,GAAK,OAAS,GAAK,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,MAAQ,MAAQ,OAAS,EAAG,KAAM,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACr9IC,GAA6B,CACjCn0jB,WAAY,IACZ2R,QAAS,IAELyijB,GAAyB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,QAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,IAAM,KAAO,KAAO,KAAO,IAAM,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,KAAO,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,IAAM,MAAQ,IAAM,MAAQ,IAAM,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,OAAS,OAAS,IAAM,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,MAAO,MAAO,MAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACh5IC,GAAyB,CAC7Br0jB,WAAY,IACZ2R,QAAS,IAEL2ijB,GAA0B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAM,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAQ,KAAO,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,KAAO,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,KAAO,QAAS,OAAS,KAAO,QAAS,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,IAAM,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,MAAO,QAAS,EAAG,EAAG,OAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACn6IC,GAA0B,CAC9Bv0jB,WAAY,IACZ2R,QAAS,IAIL6ijB,GAAqB,CAAC,QAAS,EAAG,EAAG,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,QAAS,OAAQ,MAAQ,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,KAAO,QAAS,OAAQ,MAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,MAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,MAAQ,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,KAAO,QAAS,KAAO,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5rJC,GAAqB,CACzBz0jB,WAAY,QACZ2R,QAAS,GAEL+ijB,GAA2B,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,MAAO,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,MAAQ,QAAS,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,MAAO,MAAO,EAAG,MAAO,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,MAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAQ,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,MAAO,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5tJC,GAA2B,CAC/B30jB,WAAY,QACZ2R,QAAS,GAELijjB,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,MAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAQ,KAAM,QAAS,IAAK,OAAQ,OAAQ,OAAS,QAAS,QAAS,KAAM,OAAS,QAAS,QAAS,IAAK,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,OAAQ,OAAQ,IAAK,OAAQ,OAAS,OAAQ,OAAQ,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9uJC,GAAuB,CAC3B70jB,WAAY,QACZ2R,QAAS,GAELmjjB,GAAwB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,MAAQ,QAAS,MAAQ,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAQ,OAAS,MAAQ,OAAQ,OAAS,QAAS,IAAK,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,IAAK,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAA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AM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC14CC,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM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Y,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,WAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,WAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,YAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,WAAa,IAAIA,GAAO,UAAY,Y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IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,KACphDgH,KAAK6n0B,OAAS,IAAI7u0B,WAAW,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAA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","sources":["webpack:///../node_modules/@progress/jszip-esm/dist/jszip-esm5.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/find-axis-by-name.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-pane.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/count-numbers.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/aggregates.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/get-field.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/series-binder.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-range-calculator.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-bar-base.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/categorical-error-bar.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/any-has-z-index.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/append-if-not-null.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/are-numbers.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/segment-visible.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/bind-segments.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/categories-count.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/equals-ignore-case.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/eval-options.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/filter-series-by-type.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/parse-date-category.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-gradient-overlay.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-value.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/is-date-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/single-item-or-array.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/utils/create-out-of-range-points.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/categorical-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/mixins/point-events-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/mixins/note-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-point.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/spline-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/mixins/line-chart-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/animations/clip-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/mixins/clip-animation-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/step-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/spline-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/axis-group-range-tracker.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-label.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/mixins/accessibility-attributes-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/layout/utils.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/layout/cluster-layout.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/layout/stack-wrap.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/vertical-box-plot.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/scatter-error-bar.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/target.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/base-tooltip.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair-tooltip.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/chart-container.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pane.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-base.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/mixins/plotarea-events-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/series-aggregator.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/default-aggregates.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-line-point.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-point.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/spline-range-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/step-range-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-point.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/trendline-factory.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/calculate-slope.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/check-all-positive.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/get-trendline-data.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/calculate-moving-average.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/calculate-polynomial.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/trendline-registry.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/exponential-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/linear-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/logarithmic-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/moving-average.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/polynomial-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/power-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/categorical-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/highlight.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/accept-key.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/to-chart-axis-ranges.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/pannable.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/zoom-selection.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/mousewheel-zoom.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-factory.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/selection.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/tooltip.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/shared-tooltip.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/animations/bar-chart-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/animations/bubble-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/animations/fade-in-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/animations/pie-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-line-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/get-scatter-trendline-data.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-value-getter.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/x-value-limits.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-trendline-registry.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-exponential-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-linear-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-logarithmic-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-moving-average.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-polynomial-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/trendlines/scatter-power-trendline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/xy-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/mixins/pie-chart-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/pie-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/donut-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea-base.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/polar-scatter-chart/polar-scatter-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/polar-line-chart/polar-line-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/spline-polar-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/radar-line-chart/radar-line-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/spline-radar-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-cluster-layout.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-stack-layout.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-bar-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/radar-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-segment.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/pyramid-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/funnel-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-point.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/color-scale.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/heatmap-plotarea.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/register-charts.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/constants.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item-marker.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item-line-area.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item-line.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item-square.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-layout.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/is-array.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/add-class.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/remove-class.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/align-path-to-pixel.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/clockwise.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/is-number.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/is-string.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/convertable-to-number.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/cycleUp.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/cycleDown.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/cycleIndex.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/is-object.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/style-value.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/element-styles.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/get-spacing.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/get-template.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/get-aria-template.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/grep.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/has-classes.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/hash-map.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/interpolate-value.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/instance-observer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/is-plain-object.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/map.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/mousewheel-delta.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/font-loader.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/set-default-options.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/render-icon.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/sparse-array-limits.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/find.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/element-scale.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/auto-text-color.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/create-hash-set.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/default-error-handler.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/keys.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/has-own-property.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/matrix.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/event-map.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/event-utils.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/get-supported-features.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/noop.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/now.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/observable.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/user-events.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/constants.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/deep-extend.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/getter.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/in-array.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/common/is-function.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/ring.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/sector.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/shape-builder.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/gradients.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/box-diff.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/root-element.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/float-element.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/text.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/rect-to-box.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/text-box.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/title.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/axis-label.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/note.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-tick.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-grid-line.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/category-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/constants.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/date-category-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/floor.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/ceil.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/limit-coordinate.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/numeric-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-min.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-max.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/date-value-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/logarithmic-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/mixins/grid-lines-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/radar-category-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/polar-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/mixins/radar-numeric-axis-mixin.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/radar-numeric-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/radar-logarithmic-axis.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/curve-processor.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/box-element.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/box.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/chart-element.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/pattern.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/point.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/shape-element.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/add-accessibility-attributes-to-visual.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-major-unit.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/core/utils/guid.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/absolute-date-diff.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/add-ticks.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/to-date.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/start-of-week.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/add-duration.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/floor-date.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/ceil-date.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/date-comparer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/date-diff.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/to-time.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/date-equals.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/date-index.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/duration.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/lte-date-index.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-date.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-dates.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/first-day.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/date-utils/constants.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/drawing-utils.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sparkline/shared-tooltip.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sparkline/sparkline.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/stock/fade-out-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/stock/navigator-hint.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/stock/constants.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/stock/navigator.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/stock/stock-chart.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/constants.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/utils/pad.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/utils/build-label-element.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/utils/get-range.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/utils/unpad.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/gauge.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-scale.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/pointer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-pointer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-gauge.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-scale.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-gauge.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-scale.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer-animation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-gauge.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/gauges/circular/circular-gauge.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/encoding.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code11.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39-extended.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93-extended.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/postnet.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code128.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/msi.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean13.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean8.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/main.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/surface-size.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/barcode.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/barcode/barcode-validator.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/utils.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/free-cell-visitor.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding-result.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/iso-encoder.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/qr-data-mode.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/numeric-data-mode.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/byte-data-mode.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/data-mode-instances.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/utf8-encoder.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/version-codewords.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/qrcode.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/qrcode/qrcode-validator.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/datums.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/location.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/crs.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/utils.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/attribution.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/navigator.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/zoom.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/extent.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/constants.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/tooltip/tooltip.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/layers/layer.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/layers/tile.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/scroller/draggable.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/layers/shape.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/layers/bubble.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/layers/marker.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/scroller/fx.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/scroller/scroller.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/services/map-service.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/map/map.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/calculation.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/element.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/node.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/link.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/label.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/title.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/legend.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/sankey.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/sankey/utils.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart-wizard/state.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart-wizard/messages.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart-wizard.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart-wizard/get-wizard-data-from-data-rows.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/chart/base-theme.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/services/intl-service.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/services/format-service.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/services/chart-service.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/services/dom-events-builder.js","webpack:///../node_modules/@progress/kendo-charts/dist/es/services/template-service.js","webpack:///../node_modules/@progress/kendo-common/dist/es/util.js","webpack:///../node_modules/@progress/kendo-common/dist/es/support.js","webpack:///../node_modules/@progress/kendo-common/dist/es/accessors/getter.js","webpack:///../node_modules/@progress/kendo-common/dist/es/parse-style.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/add-days.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/clone-date.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/create-date.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/get-date.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/dateinput/interaction-mode.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/dateinput/dateinput.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/is-equal.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/last-day-of-month.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/add-months.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/common/mask.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/common/constants.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/common/key.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/dateinput/utils.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/common/utils.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/common/dateobject.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/common/observable.js","webpack:///../node_modules/@progress/kendo-dateinputs-common/dist/es/common/keycode.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/translate-to-point.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/animations/animation-factory.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/animations/easing-functions.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/animations/animation.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/arc-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/circle-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/group-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/path-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/rect-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/root-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/surface-cursor.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/surface.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/class.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/observable.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/support.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/template.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/throttle.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/core/base-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/core/constants.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/core/has-observers.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/core/surface.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/mixins/with-options.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/html/core.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/align-elements.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/align.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/v-align.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/stack-elements.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/create-stack-elements.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/stack.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/v-stack.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/wrap-elements.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/wrap.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/v-wrap.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/fit.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/parsing/path-parser.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/export-group.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/canvas/export-image.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/export-svg.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/common/save-as.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/pdf/drawing.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/mixins/with-accessors.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/mixins/with-geometry.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/mixins/with-points.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/parsing/parse-path.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/patterns/pattern.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/pdf/utils.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/pdf/ttf.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/pdf/deflate.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/pdf/core.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/search/quad-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/search/quad-root.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/search/shapes-quad-tree.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/arc.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start-reverse.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/layout.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/points-to-curve.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/rect.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/surface-factory.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/surface.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/arc-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/circle-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/clip-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/constants.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/pattern-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/definition-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-stop-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/linear-gradient-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/node-map.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/path-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/radial-gradient-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/rect-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/root-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/surface.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-all-attributes.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-attribute.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-style.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-svg.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/append.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/bind-events.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/constants.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/defined.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/deg.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/element-padding.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/element-scale.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/element-set-styles-safe.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/element-size.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/element-styles.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/encode-utf.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/last.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/now.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/promise-all.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/rad.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/round.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/unbind-events.js","webpack:///../node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/services/template-service.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/utils/getter.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/utils/map.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/excel-exporter.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/services/intl-service.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/utils/time.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/ooxml.js","webpack:///../node_modules/@progress/kendo-ooxml/dist/es/utils/create-zip.js","webpack:///../node_modules/@progress/kendo-draggable/dist/es/main.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/common/core.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/common/component.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/scroller.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/search.js","webpack:///../node_modules/@progress/kendo-file-saver/dist/es/save-as.js","webpack:///../node_modules/@progress/kendo-file-saver/dist/es/base64.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/node_modules/@progress/kendo-common/dist/es/util.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/node_modules/@progress/kendo-common/dist/es/support.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/node_modules/@progress/kendo-common/dist/es/accessors/getter.js","webpack:///../node_modules/pdfjs-dist/legacy/build/pdf.mjs","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/utils.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/common/math.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/common/dom.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/shared/utils.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/helpers/id-manager.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/helpers/command-manager.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/annotation-editor-ui-manager.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/shared/event_utils.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/shared/ui_utils.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/helpers/text-accessibility-manager.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/text/text-layer-builder.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/annotation-layer.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/shared/scripting_utils.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/annotation-layer-builder.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/draw-layer.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/draw-layer-builder.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/editors/annotation-editor.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/editors/free-text-editor.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/shared/display_utils.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/helpers/color-manager.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/helpers/tools.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/editors/outliner.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/editors/highlight-editor.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/annotation-editor-layer.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/annotation-editor-layer-builder.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/widget/page.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/shared/murmurhash3.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/annotations/helpers/annotation-storage.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/links/link-service.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/enums/PdfViewerInteractionMode.js","webpack:///../node_modules/@progress/kendo-pdfviewer-common/dist/es/widget/pdfviewer.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/requests/serializers/filters.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/requests/serializers/members.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/requests/requestBuilder.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/node_modules/tslib/tslib.es6.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/responses/responseParser.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/requests/discover.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/requests/fetch.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/responses/discoverParser.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/utils/index.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/dataState/dataState.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/dataState/expand.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/dataState/sort.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/reducers/headers-reducer.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/dataState/filter.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/reducers/configurator-reducer.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/local-data-binding/aggregates.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/funcs.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/utils.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/accessor.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/filtering/operators.enum.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/transducers.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/local-data-binding/filtering.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/local-data-binding/utils.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/local-data-binding/dataTree.js","webpack:///../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/local-data-binding/dataReader.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/local-data-binding/tuples.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/local-data-binding/schemaDimensions.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/navigation/navigation.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/navigation/pivotgrid.js","webpack:///../node_modules/@progress/kendo-pivotgrid-common/dist/es/navigation/configurator.js","webpack:///../node_modules/@progress/kendo-ripple/dist/es/ripple-base.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/day-of-week.js","webpack:///../node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.js","webpack:///../node_modules/@progress/kendo-spreadsheet-common/dist/index-esm.js","webpack:///../node_modules/@progress/kendo-svg-icons/dist/index.es.js","webpack:///../node_modules/@progress/pako-esm/dist/pako-esm5.js","webpack:///../node_modules/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.js","webpack:///../node_modules/jquery-validation/dist/jquery.validate.js","webpack:///../node_modules/jquery/dist/jquery.js","webpack:///./node_modules/anchor-js/anchor.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/math.js","webpack:///./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/@popperjs/core/lib/popper-lite.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack:///./node_modules/cookies-js/dist/cookies.js","webpack:///./node_modules/countup.js/dist/countUp.min.js","webpack:///./node_modules/is-js/dist/builtins.js","webpack:///./node_modules/is-js/dist/index.js","webpack:///./node_modules/is-js/dist/primitives.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/moment/moment.js","webpack:///../node_modules/pdfjs-dist/build/pdf.worker.mjs","webpack:///../node_modules/tslib/tslib.es6.mjs","webpack:///./node_modules/@kurkle/color/dist/color.esm.js","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.js","webpack:///./node_modules/chart.js/auto/auto.js"],"sourcesContent":["import { Deflate, Inflate } from '@progress/pako-esm';\n\n/**\n * Let the user use/change some implementations.\n */\nvar external = {\n Promise: Promise\n};\n\nvar support = {\n base64: true,\n array: true,\n string: true,\n nodebuffer: false,\n nodestream: false,\n\n get arraybuffer() {\n return typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n },\n\n // Returns true if JSZip can read/generate Uint8Array, false otherwise.\n get uint8array() {\n return typeof Uint8Array !== \"undefined\";\n },\n\n get blob() {\n return blob();\n }\n};\n\nvar blob = function() {\n var supported;\n\n if (typeof ArrayBuffer === \"undefined\") {\n supported = false;\n } else {\n var buffer = new ArrayBuffer(0);\n try {\n supported = new Blob([ buffer ], {\n type: \"application/zip\"\n }).size === 0;\n } catch (e) {\n supported = false;\n }\n }\n\n blob = function () { return supported; };\n return supported;\n};\n\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n// public method for encoding\nvar encode = function(input) {\n var output = [];\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0, len = input.length, remainingBytes = len;\n\n var isArray = typeof input !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nvar decode = function(input) {\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0, resultIndex = 0;\n\n var dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\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 letiant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n var output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\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\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nvar newBlob = function(part, type) {\n checkSupport(\"blob\");\n\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n};\n\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\nfunction stringifyByChunk(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n}\n\n/**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction stringifyByChar(array) {\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n}\n\n/**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\nvar fromCharCodeSupportsTypedArrays = function () {\n var supported;\n try {\n supported = support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n supported = false;\n }\n\n fromCharCodeSupportsTypedArrays = function () { return supported; };\n return supported;\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = fromCharCodeSupportsTypedArrays();\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return stringifyByChar(array);\n}\n\nvar applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {\n // string to ?\n \"string\": {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n }\n },\n\n // array to ?\n \"array\": {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // arraybuffer to ?\n \"arraybuffer\": {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // uint8array to ?\n \"uint8array\": {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity\n }\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nvar transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n checkSupport(outputType);\n var inputType = getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Resolve all relative path components, \".\" and \"..\", in a path. If these relative components\n * traverse above the root then the resulting path will only contain the final path component.\n *\n * All empty components, e.g. \"//\", are removed.\n * @param {string} path A path with / or \\ separators\n * @returns {string} The path with all relative path components resolved.\n */\nvar resolve = function(path) {\n var parts = path.split(\"/\");\n var result = [];\n for (var index = 0; index < parts.length; index++) {\n var part = parts[index];\n // Allow the first and last component to be empty for trailing slashes.\n if (part === \".\" || (part === \"\" && index !== 0 && index !== parts.length - 1)) {\n continue;\n } else if (part === \"..\") {\n result.pop();\n } else {\n result.push(part);\n }\n }\n return result.join(\"/\");\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nvar getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nvar checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nvar MAX_VALUE_16BITS = 65535;\nvar MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nvar pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nvar delay = function(callback, args, self) {\n setTimeout(function() {\n callback.apply(self || null, args || []);\n }, 0);\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nvar extend = function() {\n var arguments$1 = arguments;\n\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (Object.hasOwnProperty.call(arguments$1[i], attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments$1[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nvar prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nvar GenericWorker = function GenericWorker(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n};\n\n/**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\nGenericWorker.prototype.push = function push (chunk) {\n this.emit(\"data\", chunk);\n};\n\n/**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\nGenericWorker.prototype.end = function end () {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n};\n\n/**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\nGenericWorker.prototype.error = function error (e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n};\n\n/**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\nGenericWorker.prototype.on = function on (name, listener) {\n this._listeners[name].push(listener);\n return this;\n};\n\n/**\n * Clean any references when a worker is ending.\n */\nGenericWorker.prototype.cleanUp = function cleanUp () {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n};\n\n/**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\nGenericWorker.prototype.emit = function emit (name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n};\n\n/**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\nGenericWorker.prototype.pipe = function pipe (next) {\n return next.registerPrevious(this);\n};\n\n/**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\nGenericWorker.prototype.registerPrevious = function registerPrevious (previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n};\n\n/**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\nGenericWorker.prototype.pause = function pause () {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n};\n\n/**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\nGenericWorker.prototype.resume = function resume () {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n};\n\n/**\n * Flush any remaining bytes as the stream is ending.\n */\nGenericWorker.prototype.flush = function flush () {};\n\n/**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\nGenericWorker.prototype.processChunk = function processChunk (chunk) {\n this.push(chunk);\n};\n\n/**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\nGenericWorker.prototype.withStreamInfo = function withStreamInfo (key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n};\n\n/**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\nGenericWorker.prototype.mergeStreamInfo = function mergeStreamInfo () {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n};\n\n/**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\nGenericWorker.prototype.lock = function lock () {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n};\n\n/**\n *\n * Pretty print the workers chain.\n */\nGenericWorker.prototype.toString = function toString () {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n};\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Returns the utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar utf8len = function(c) {\n var _utf8len = new Array(256);\n for (var i = 0; i < 256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n // Memoize table after first call\n utf8len = function(c) {\n return _utf8len[c];\n };\n\n return _utf8len[c];\n};\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nvar utf8encode = function utf8encode(str) {\n return string2buf(str);\n};\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nvar utf8decode = function utf8decode(buf) {\n buf = transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nvar Utf8DecodeWorker = /*@__PURE__*/(function (GenericWorker) {\n function Utf8DecodeWorker() {\n GenericWorker.call(this, \"utf-8 decode\");\n\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n }\n\n Utf8DecodeWorker.__proto__ = GenericWorker;\n Utf8DecodeWorker.prototype = Object.create( GenericWorker.prototype );\n Utf8DecodeWorker.prototype.constructor = Utf8DecodeWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n Utf8DecodeWorker.prototype.processChunk = function processChunk (chunk) {\n var data = transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : utf8decode(usableData),\n meta : chunk.meta\n });\n };\n\n /**\n * @see GenericWorker.flush\n */\n Utf8DecodeWorker.prototype.flush = function flush () {\n if (this.leftOver && this.leftOver.length) {\n this.push({\n data : utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n };\n\n return Utf8DecodeWorker;\n}(GenericWorker));\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nvar Utf8EncodeWorker = /*@__PURE__*/(function (GenericWorker) {\n function Utf8EncodeWorker() {\n GenericWorker.call(this, \"utf-8 encode\");\n }\n\n Utf8EncodeWorker.__proto__ = GenericWorker;\n Utf8EncodeWorker.prototype = Object.create( GenericWorker.prototype );\n Utf8EncodeWorker.prototype.constructor = Utf8EncodeWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n Utf8EncodeWorker.prototype.processChunk = function processChunk (chunk) {\n this.push({\n data: utf8encode(chunk.data),\n meta: chunk.meta\n });\n };\n\n return Utf8EncodeWorker;\n}(GenericWorker));\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nvar ConvertWorker = /*@__PURE__*/(function (GenericWorker) {\n function ConvertWorker(destType) {\n GenericWorker.call(this, \"ConvertWorker to \" + destType);\n this.destType = destType;\n }\n\n ConvertWorker.__proto__ = GenericWorker;\n ConvertWorker.prototype = Object.create( GenericWorker.prototype );\n ConvertWorker.prototype.constructor = ConvertWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n ConvertWorker.prototype.processChunk = function processChunk (chunk) {\n this.push({\n data: transformTo(this.destType, chunk.data),\n meta: chunk.meta\n });\n };\n\n return ConvertWorker;\n}(GenericWorker));\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return newBlob(transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return encode(content);\n default :\n return transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nvar StreamHelper = function StreamHelper (worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n};\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\nStreamHelper.prototype.accumulate = function accumulate$1 (updateCb) {\n return accumulate(this, updateCb);\n};\n\n/**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.on = function on (evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n delay(fn, arguments, self);\n });\n }\n return this;\n};\n\n/**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.resume = function resume () {\n delay(this._worker.resume, [], this._worker);\n return this;\n};\n\n/**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\nStreamHelper.prototype.pause = function pause () {\n this._worker.pause();\n return this;\n};\n\nvar base64 = false;\nvar binary = false;\nvar dir = false;\nvar createFolders = true;\nvar date = null;\nvar compression = null;\nvar compressionOptions = null;\nvar comment = null;\nvar unixPermissions = null;\nvar dosPermissions = null;\n\nvar defaults = /*#__PURE__*/Object.freeze({\n __proto__: null,\n base64: base64,\n binary: binary,\n comment: comment,\n compression: compression,\n compressionOptions: compressionOptions,\n createFolders: createFolders,\n date: date,\n dir: dir,\n dosPermissions: dosPermissions,\n unixPermissions: unixPermissions\n});\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nvar DataWorker = /*@__PURE__*/(function (GenericWorker) {\n function DataWorker(dataP) {\n GenericWorker.call(this, \"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n }\n\n DataWorker.__proto__ = GenericWorker;\n DataWorker.prototype = Object.create( GenericWorker.prototype );\n DataWorker.prototype.constructor = DataWorker;\n\n /**\n * @see GenericWorker.cleanUp\n */\n DataWorker.prototype.cleanUp = function cleanUp () {\n GenericWorker.prototype.cleanUp.call(this);\n this.data = null;\n };\n\n /**\n * @see GenericWorker.resume\n */\n DataWorker.prototype.resume = function resume () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n delay(this._tickAndRepeat, [], this);\n }\n return true;\n };\n\n /**\n * Trigger a tick a schedule an other call to this function.\n */\n DataWorker.prototype._tickAndRepeat = function _tickAndRepeat () {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n };\n /**\n * Read and push a chunk.\n */\n DataWorker.prototype._tick = function _tick () {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n };\n\n return DataWorker;\n}(GenericWorker));\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nvar DataLengthProbe = /*@__PURE__*/(function (GenericWorker) {\n function DataLengthProbe(propName) {\n GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n }\n\n DataLengthProbe.__proto__ = GenericWorker;\n DataLengthProbe.prototype = Object.create( GenericWorker.prototype );\n DataLengthProbe.prototype.constructor = DataLengthProbe;\n\n /**\n * @see GenericWorker.processChunk\n */\n DataLengthProbe.prototype.processChunk = function processChunk (chunk) {\n if (chunk) {\n var length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n GenericWorker.prototype.processChunk.call(this, chunk);\n };\n\n return DataLengthProbe;\n}(GenericWorker));\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\nvar makeTable = function() {\n // Use ordinary array, since untyped makes no boost here\n var table = [];\n\n for (var n =0; n < 256; n++){\n var c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n // Memoize table on first call.\n makeTable = function() {\n return table;\n };\n\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = makeTable();\n var end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n var t = makeTable();\n var end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nfunction crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = getTypeOf(input) !== \"string\";\n\n if (isArray) {\n return crc32(crc | 0, input, input.length, 0);\n } else {\n return crc32str(crc | 0, input, input.length, 0);\n }\n}\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nvar Crc32Probe = /*@__PURE__*/(function (GenericWorker) {\n function Crc32Probe() {\n GenericWorker.call(this, \"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n }\n\n Crc32Probe.__proto__ = GenericWorker;\n Crc32Probe.prototype = Object.create( GenericWorker.prototype );\n Crc32Probe.prototype.constructor = Crc32Probe;\n\n /**\n * @see GenericWorker.processChunk\n */\n Crc32Probe.prototype.processChunk = function processChunk (chunk) {\n this.streamInfo.crc32 = crc32wrapper(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n };\n\n return Crc32Probe;\n}(GenericWorker));\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nvar CompressedObject = function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n};\n\n/**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\nCompressedObject.prototype.getContentWorker = function getContentWorker () {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n};\n\n/**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\nCompressedObject.prototype.getCompressedWorker = function getCompressedWorker () {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function createWorkerFrom (uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n};\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function ZipObject(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n};\n\n/**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\nZipObject.prototype.internalStream = function internalStream (type) {\n var result = null, outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n\n return new StreamHelper(result, outputType, \"\");\n};\n\n/**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\nZipObject.prototype.async = function async (type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n};\n\n/**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\nZipObject.prototype._compressWorker = function _compressWorker (compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n};\n\n/**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\nZipObject.prototype._decompressWorker = function _decompressWorker () {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n};\n\nvar arrayType = function() {\n var useTypedArray = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n var resolved = useTypedArray ? \"uint8array\" : \"array\";\n\n arrayType = function() {\n return resolved;\n };\n};\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nvar FlateWorker = /*@__PURE__*/(function (GenericWorker) {\n function FlateWorker(action, options) {\n GenericWorker.call(this, \"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n }\n\n FlateWorker.__proto__ = GenericWorker;\n FlateWorker.prototype = Object.create( GenericWorker.prototype );\n FlateWorker.prototype.constructor = FlateWorker;\n\n /**\n * @see GenericWorker.processChunk\n */\n FlateWorker.prototype.processChunk = function processChunk (chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(transformTo(arrayType(), chunk.data), false);\n };\n\n /**\n * @see GenericWorker.flush\n */\n FlateWorker.prototype.flush = function flush () {\n GenericWorker.prototype.flush.call(this);\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n };\n /**\n * @see GenericWorker.cleanUp\n */\n FlateWorker.prototype.cleanUp = function cleanUp () {\n GenericWorker.prototype.cleanUp.call(this);\n this._pako = null;\n };\n\n /**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\n FlateWorker.prototype._createPako = function _createPako () {\n var this$1$1 = this;\n\n var params = {\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n };\n this._pako = this._pakoAction === 'Deflate' ? new Deflate(params) : new Inflate(params);\n this._pako.onData = function (data) {\n this$1$1.push({\n data: data,\n meta: this$1$1.meta\n });\n };\n };\n\n return FlateWorker;\n}(GenericWorker));\n\nvar DEFLATE = {\n magic: \"\\x08\\x00\",\n compressWorker: function(compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n },\n\n uncompressWorker: function() {\n return new FlateWorker(\"Inflate\", {});\n }\n};\n\nvar STORE = {\n magic: \"\\x00\\x00\",\n compressWorker: function() {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker: function() {\n return new GenericWorker(\"STORE decompression\");\n }\n};\n\nvar compressions = {\n STORE: STORE,\n DEFLATE: DEFLATE\n};\n\nvar LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nvar CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nvar CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nvar ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nvar ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nvar DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8encode,\n encodedFileName = transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = transformTo(\"string\", utf8encode(file.name)),\n comment = file.comment,\n encodedComment = transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = transformTo(\"string\", utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32wrapper(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32wrapper(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nvar ZipFileWorker = /*@__PURE__*/(function (GenericWorker) {\n function ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n GenericWorker.call(this, \"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emitted metadata.\n this.currentFile = null;\n\n this._sources = [];\n }\n\n ZipFileWorker.__proto__ = GenericWorker;\n ZipFileWorker.prototype = Object.create( GenericWorker.prototype );\n ZipFileWorker.prototype.constructor = ZipFileWorker;\n\n /**\n * @see GenericWorker.push\n */\n ZipFileWorker.prototype.push = function push (chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n GenericWorker.prototype.push.call(this, {\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n };\n\n /**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\n ZipFileWorker.prototype.openedSource = function openedSource (streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n };\n\n /**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\n ZipFileWorker.prototype.closedSource = function closedSource (streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n };\n\n /**\n * @see GenericWorker.flush\n */\n ZipFileWorker.prototype.flush = function flush () {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n };\n\n /**\n * Prepare the next source to be read.\n */\n ZipFileWorker.prototype.prepareNextSource = function prepareNextSource () {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n };\n\n /**\n * @see GenericWorker.registerPrevious\n */\n ZipFileWorker.prototype.registerPrevious = function registerPrevious (previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n };\n\n /**\n * @see GenericWorker.resume\n */\n ZipFileWorker.prototype.resume = function resume () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n };\n\n /**\n * @see GenericWorker.error\n */\n ZipFileWorker.prototype.error = function error (e) {\n var sources = this._sources;\n if(!GenericWorker.prototype.error.call(this, e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e$1) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n };\n\n /**\n * @see GenericWorker.lock\n */\n ZipFileWorker.prototype.lock = function lock () {\n GenericWorker.prototype.lock.call(this);\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n };\n\n return ZipFileWorker;\n}(GenericWorker));\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nvar generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n\nvar DataReader = function DataReader(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n};\n\n/**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\nDataReader.prototype.checkOffset = function checkOffset (offset) {\n this.checkIndex(this.index + offset);\n};\n\n/**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\nDataReader.prototype.checkIndex = function checkIndex (newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n};\n\n/**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\nDataReader.prototype.setIndex = function setIndex (newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n};\n\n/**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\nDataReader.prototype.skip = function skip (n) {\n this.setIndex(this.index + n);\n};\n\n/**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\nDataReader.prototype.byteAt = function byteAt (i) {\n // see implementations\n};\n\n/**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\nDataReader.prototype.readInt = function readInt (size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n};\n\n/**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\nDataReader.prototype.readString = function readString (size) {\n return transformTo(\"string\", this.readData(size));\n};\n\n/**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\nDataReader.prototype.readData = function readData (size) {\n // see implementations\n};\n\n/**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\nDataReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n // see implementations\n};\n\n/**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\nDataReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n // see implementations\n};\n\n/**\n * Get the next date.\n * @return {Date} the date.\n */\nDataReader.prototype.readDate = function readDate () {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n};\n\nvar ArrayReader = /*@__PURE__*/(function (DataReader) {\n function ArrayReader(data) {\n DataReader.call(this, data);\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n\n ArrayReader.__proto__ = DataReader;\n ArrayReader.prototype = Object.create( DataReader.prototype );\n ArrayReader.prototype.constructor = ArrayReader;\n\n /**\n * @see DataReader.byteAt\n */\n ArrayReader.prototype.byteAt = function byteAt (i) {\n return this.data[this.zero + i];\n };\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n ArrayReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n };\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n ArrayReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n };\n\n /**\n * @see DataReader.readData\n */\n ArrayReader.prototype.readData = function readData (size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n };\n\n return ArrayReader;\n}(DataReader));\n\nvar StringReader = /*@__PURE__*/(function (DataReader) {\n function StringReader(data) {\n DataReader.call(this, data);\n }\n\n StringReader.__proto__ = DataReader;\n StringReader.prototype = Object.create( DataReader.prototype );\n StringReader.prototype.constructor = StringReader;\n\n /**\n * @see DataReader.byteAt\n */\n StringReader.prototype.byteAt = function byteAt (i) {\n return this.data.charCodeAt(this.zero + i);\n };\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n StringReader.prototype.lastIndexOfSignature = function lastIndexOfSignature (sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n };\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n StringReader.prototype.readAndCheckSignature = function readAndCheckSignature (sig) {\n var data = this.readData(4);\n return sig === data;\n };\n\n /**\n * @see DataReader.readData\n */\n StringReader.prototype.readData = function readData (size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n };\n\n return StringReader;\n}(DataReader));\n\nvar Uint8ArrayReader = /*@__PURE__*/(function (ArrayReader) {\n function Uint8ArrayReader(data) {\n ArrayReader.call(this, data);\n }\n\n Uint8ArrayReader.__proto__ = ArrayReader;\n Uint8ArrayReader.prototype = Object.create( ArrayReader.prototype );\n Uint8ArrayReader.prototype.constructor = Uint8ArrayReader;\n\n /**\n * @see DataReader.readData\n */\n Uint8ArrayReader.prototype.readData = function readData (size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n };\n\n return Uint8ArrayReader;\n}(ArrayReader));\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nfunction readerFor(data) {\n var type = getTypeOf(data);\n checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(transformTo(\"uint8array\", data));\n }\n return new ArrayReader(transformTo(\"array\", data));\n}\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nvar ZipEntry = function ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n};\n\n/**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\nZipEntry.prototype.isEncrypted = function isEncrypted () {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n};\n\n/**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\nZipEntry.prototype.useUTF8 = function useUTF8 () {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n};\n\n/**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readLocalPart = function readLocalPart (reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + pretty(this.compressionMethod) + \" unknown (inner file : \" + transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n};\n\n/**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readCentralPart = function readCentralPart (reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n};\n\n/**\n * Parse the external file attributes and get the unix/dos permissions.\n */\nZipEntry.prototype.processAttributes = function processAttributes () {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n};\n\n/**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.parseZIP64ExtraField = function parseZIP64ExtraField (reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n};\n\n/**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\nZipEntry.prototype.readExtraFields = function readExtraFields (reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n};\n\n/**\n * Apply an UTF8 transformation if needed.\n */\nZipEntry.prototype.handleUTF8 = function handleUTF8 () {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8decode(this.fileName);\n this.fileCommentStr = utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n};\n\n/**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\nZipEntry.prototype.findExtraFieldUnicodePath = function findExtraFieldUnicodePath () {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32wrapper(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n};\n\n/**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\nZipEntry.prototype.findExtraFieldUnicodeComment = function findExtraFieldUnicodeComment () {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32wrapper(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n};\n\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nvar ZipEntries = function ZipEntries(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n};\n\n/**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\nZipEntries.prototype.checkSignature = function checkSignature (expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + pretty(signature) + \", expected \" + pretty(expectedSignature) + \")\");\n }\n};\n\n/**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\nZipEntries.prototype.isSignature = function isSignature (askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n};\n\n/**\n * Read the end of the central directory.\n */\nZipEntries.prototype.readBlockEndOfCentral = function readBlockEndOfCentral () {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n};\n\n/**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\nZipEntries.prototype.readBlockZip64EndOfCentral = function readBlockZip64EndOfCentral () {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n};\n\n/**\n * Read the end of the Zip 64 central directory locator.\n */\nZipEntries.prototype.readBlockZip64EndOfCentralLocator = function readBlockZip64EndOfCentralLocator () {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n};\n\n/**\n * Read the local files, based on the offset read in the central part.\n */\nZipEntries.prototype.readLocalFiles = function readLocalFiles () {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n};\n\n/**\n * Read the central directory.\n */\nZipEntries.prototype.readCentralDir = function readCentralDir () {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n }\n }\n};\n\n/**\n * Read the end of central directory.\n */\nZipEntries.prototype.readEndOfCentral = function readEndOfCentral () {\n var offset = this.reader.lastIndexOfSignature(CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, CENTRAL_FILE_HEADER)) ; else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n};\n\nZipEntries.prototype.prepareReader = function prepareReader (data) {\n this.reader = readerFor(data);\n};\n\n/**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\nZipEntries.prototype.load = function load (data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n};\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nfunction load(data, options) {\n var zip = this;\n options = extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8decode\n });\n\n return prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function(data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n\n var unsafeName = input.fileNameStr;\n var safeName = resolve(input.fileNameStr);\n\n zip.file(safeName, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n if (!input.dir) {\n zip.file(safeName).unsafeOriginalName = unsafeName;\n }\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n}\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else {\n zipObjectContent = prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders$1) {\n createFolders$1 = (typeof createFolders$1 !== 'undefined') ? createFolders$1 : createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders$1\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nvar JSZip = function JSZip() {\n if (arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n // NOTE: we use a null prototype because we do not\n // want filenames like \"toString\" coming from a zip file\n // to overwrite methods and attributes in a normal Object.\n this.files = Object.create(null);\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n var newObj = new JSZip();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n};\n\nvar staticAccessors = { support: { configurable: true },defaults: { configurable: true },version: { configurable: true },external: { configurable: true } };\n\n/**\n * @see loadAsync\n */\nJSZip.prototype.load = function load () {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\n/**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\nJSZip.prototype.forEach = function forEach (cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n};\n\n/**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\nJSZip.prototype.filter = function filter (search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n};\n\n/**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\nJSZip.prototype.file = function file (name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n};\n\n/**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\nJSZip.prototype.folder = function folder (arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n};\n\n/**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\nJSZip.prototype.remove = function remove (name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n};\n\n/**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\nJSZip.prototype.generate = function generate (options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\n/**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\nJSZip.prototype.generateInternalStream = function generateInternalStream (options) {\n var worker, opts = {};\n try {\n opts = extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is preferred but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === 'darwin' ||\n opts.platform === 'freebsd' ||\n opts.platform === 'linux' ||\n opts.platform === 'sunos'\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n};\n\n/**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\nJSZip.prototype.generateAsync = function generateAsync (options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n};\n\nJSZip.prototype.loadAsync = function loadAsync (data, options) {\n return load.apply(this, [data, options]);\n};\n\nJSZip.loadAsync = function loadAsync (content, options) {\n return new JSZip().loadAsync(content, options);\n};\n \nstaticAccessors.support.get = function () {\n return support;\n};\n\nstaticAccessors.defaults.get = function () {\n return defaults;\n};\n\nstaticAccessors.version.get = function () {\n return \"3.2.2-esm\";\n};\n\nstaticAccessors.external.get = function () {\n return external;\n};\n\nObject.defineProperties( JSZip, staticAccessors );\n\nexport { JSZip as default };\n","import { Class } from '../../common';\n\nvar ChartAxis = (function (Class) {\n function ChartAxis(axis) {\n Class.call(this);\n\n this._axis = axis;\n this.options = axis.options;\n }\n\n if ( Class ) ChartAxis.__proto__ = Class;\n ChartAxis.prototype = Object.create( Class && Class.prototype );\n ChartAxis.prototype.constructor = ChartAxis;\n\n ChartAxis.prototype.value = function value (point) {\n var axis = this._axis;\n var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n };\n\n ChartAxis.prototype.slot = function slot (from, to, limit) {\n if ( limit === void 0 ) limit = true;\n\n return this._axis.slot(from, to, limit);\n };\n\n ChartAxis.prototype.range = function range () {\n return this._axis.range();\n };\n\n ChartAxis.prototype.valueRange = function valueRange () {\n return this._axis.valueRange();\n };\n\n return ChartAxis;\n}(Class));\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n for (var idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n}","import findAxisByName from './find-axis-by-name';\n\nvar ChartPane = function ChartPane(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n};\n\nChartPane.prototype.findAxisByName = function findAxisByName$1 (name) {\n return findAxisByName(name, this._pane.axes);\n};\n\nexport default ChartPane;","import { Class } from '../../common';\n\nvar ChartPlotArea = (function (Class) {\n function ChartPlotArea(plotArea) {\n Class.call(this);\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n\n if ( Class ) ChartPlotArea.__proto__ = Class;\n ChartPlotArea.prototype = Object.create( Class && Class.prototype );\n ChartPlotArea.prototype.constructor = ChartPlotArea;\n\n return ChartPlotArea;\n}(Class));\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nvar Aggregates = {\n min: function(values) {\n var length = values.length;\n var min = MAX_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n var length = values.length;\n var max = MIN_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n var length = values.length;\n var sum = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n var result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n var count = countNumbers(values);\n var result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n var length = values.length;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n var get = getter(field, true);\n return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nvar SeriesBinder = (function (Class) {\n function SeriesBinder() {\n Class.call(this);\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n }\n\n if ( Class ) SeriesBinder.__proto__ = Class;\n SeriesBinder.prototype = Object.create( Class && Class.prototype );\n SeriesBinder.prototype.constructor = SeriesBinder;\n\n SeriesBinder.prototype.register = function register (seriesTypes, valueFields, otherFields) {\n var this$1 = this;\n if ( valueFields === void 0 ) valueFields = [ VALUE ];\n if ( otherFields === void 0 ) otherFields = {};\n\n\n for (var i = 0; i < seriesTypes.length; i++) {\n var type = seriesTypes[i];\n\n this$1._valueFields[type] = valueFields;\n this$1._otherFields[type] = otherFields;\n this$1._nullValue[type] = this$1._makeValue(valueFields, null);\n this$1._undefinedValue[type] = this$1._makeValue(valueFields, undefined);\n }\n };\n\n SeriesBinder.prototype.canonicalFields = function canonicalFields (series) {\n return this.valueFields(series).concat(this.otherFields(series));\n };\n\n SeriesBinder.prototype.valueFields = function valueFields (series) {\n return this._valueFields[series.type] || [ VALUE ];\n };\n\n SeriesBinder.prototype.otherFields = function otherFields (series) {\n return this._otherFields[series.type] || [ VALUE ];\n };\n\n SeriesBinder.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n var data = series.data;\n var pointData = defined(item) ? item : data[pointIx];\n var result = { valueFields: { value: pointData } };\n var valueFields = this.valueFields(series);\n var otherFields = this._otherFields[series.type];\n var fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n var fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n var srcValueFields = this.sourceFields(series, valueFields);\n var srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n };\n\n SeriesBinder.prototype._makeValue = function _makeValue (fields, initialValue) {\n var value = {};\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n };\n\n SeriesBinder.prototype._bindFromArray = function _bindFromArray (array, fields) {\n var value = {};\n\n if (fields) {\n var length = Math.min(fields.length, array.length);\n\n for (var i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n };\n\n SeriesBinder.prototype._bindFromObject = function _bindFromObject (object, fields, srcFields) {\n if ( srcFields === void 0 ) srcFields = fields;\n\n var value = {};\n\n if (fields) {\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n var srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n };\n\n SeriesBinder.prototype.sourceFields = function sourceFields (series, canonicalFields) {\n var sourceFields = [];\n\n if (canonicalFields) {\n var length = canonicalFields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = canonicalFields[i];\n var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n };\n\n return SeriesBinder;\n}(Class));\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nvar STD_ERR = \"stderr\";\nvar STD_DEV = \"stddev\";\nvar percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nvar standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nvar ErrorRangeCalculator = (function (Class) {\n function ErrorRangeCalculator(errorValue, series, field) {\n Class.call(this);\n\n this.initGlobalRanges(errorValue, series, field);\n }\n\n if ( Class ) ErrorRangeCalculator.__proto__ = Class;\n ErrorRangeCalculator.prototype = Object.create( Class && Class.prototype );\n ErrorRangeCalculator.prototype.constructor = ErrorRangeCalculator;\n\n ErrorRangeCalculator.prototype.initGlobalRanges = function initGlobalRanges (errorValue, series, field) {\n var data = series.data;\n var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n var average = this.getAverage(data);\n var deviation = this.getStandardDeviation(data, average, false);\n var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n var standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n };\n\n ErrorRangeCalculator.prototype.createValueGetter = function createValueGetter (series, field) {\n var data = series.data;\n var binder = SeriesBinder.current;\n var valueFields = binder.valueFields(series);\n var item = defined(data[0]) ? data[0] : {};\n var valueGetter;\n\n if (isArray(item)) {\n var index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === OBJECT) {\n var srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n };\n\n ErrorRangeCalculator.prototype.getErrorRange = function getErrorRange (pointValue, errorValue) {\n var low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n var percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n };\n\n ErrorRangeCalculator.prototype.getStandardError = function getStandardError (data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n };\n\n ErrorRangeCalculator.prototype.getStandardDeviation = function getStandardDeviation (data, average, isSample) {\n var this$1 = this;\n\n var length = data.length;\n var total = isSample ? average.count - 1 : average.count;\n var squareDifferenceSum = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n };\n\n ErrorRangeCalculator.prototype.getAverage = function getAverage (data) {\n var this$1 = this;\n\n var length = data.length;\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n };\n\n return ErrorRangeCalculator;\n}(Class));\n\nexport default ErrorRangeCalculator;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nvar DEFAULT_ERROR_BAR_WIDTH = 4;\n\nvar ErrorBarBase = (function (ChartElement) {\n function ErrorBarBase(low, high, isVertical, chart, series, options) {\n ChartElement.call(this, options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n }\n\n if ( ChartElement ) ErrorBarBase.__proto__ = ChartElement;\n ErrorBarBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n ErrorBarBase.prototype.constructor = ErrorBarBase;\n\n ErrorBarBase.prototype.reflow = function reflow (targetBox) {\n var endCaps = this.options.endCaps;\n var isVertical = this.isVertical;\n var axis = this.getAxis();\n var valueBox = axis.getSlot(this.low, this.high);\n var centerBox = targetBox.center();\n var capsWidth = this.getCapsWidth(targetBox, isVertical);\n var capValue = isVertical ? centerBox.x : centerBox.y;\n var capStart = capValue - capsWidth;\n var capEnd = capValue + capsWidth;\n var linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n };\n\n ErrorBarBase.prototype.getCapsWidth = function getCapsWidth (box, isVertical) {\n var boxSize = isVertical ? box.width() : box.height();\n var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n };\n\n ErrorBarBase.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var options = this.options;\n var visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: function () {\n this$1.createDefaultVisual();\n var defaultVisual = this$1.visual;\n delete this$1.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n };\n\n ErrorBarBase.prototype.createDefaultVisual = function createDefaultVisual () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var linePoints = ref.linePoints;\n var lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n ChartElement.prototype.createVisual.call(this);\n\n for (var idx = 0; idx < linePoints.length; idx += 2) {\n var line = new draw.Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this$1.visual.append(line);\n }\n };\n\n return ErrorBarBase;\n}(ChartElement));\n\nsetDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nvar CategoricalErrorBar = (function (ErrorBarBase) {\n function CategoricalErrorBar () {\n ErrorBarBase.apply(this, arguments);\n }\n\n if ( ErrorBarBase ) CategoricalErrorBar.__proto__ = ErrorBarBase;\n CategoricalErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n CategoricalErrorBar.prototype.constructor = CategoricalErrorBar;\n\n CategoricalErrorBar.prototype.getAxis = function getAxis () {\n var axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n };\n\n return CategoricalErrorBar;\n}(ErrorBarBase));\n\nexport default CategoricalErrorBar;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n for (var idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n}","export default function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n}","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n return countNumbers(values) === values.length;\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n var visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n var pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n var data = series.data;\n var points = [];\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < data.length; idx++) {\n var pointData = SeriesBinder.current.bindPoint(series, idx);\n var value = pointData.valueFields.value;\n\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n}","export default function categoriesCount(series) {\n var seriesCount = series.length;\n var categories = 0;\n\n for (var i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n}","export default function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n}","import { inArray, isFunction, isObject, valueOrDefault, hasOwnProperty } from '../../common';\n\nvar MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state, dryRun) {\n if ( state === void 0 ) state = {};\n if ( dryRun === void 0 ) dryRun = false;\n\n var defaults = state.defaults = state.defaults || {};\n var depth = state.depth = state.depth || 0;\n var needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (var property in options) {\n if (!inArray(property, state.excluded) && hasOwnProperty(options, property)) {\n var propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n var result = [];\n\n var seriesTypes = [].concat(types);\n for (var idx = 0; idx < series.length; idx++) {\n var currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n}","import { parseDate } from '../../date-utils';\n\nvar dateCache = new WeakMap();\n\nexport default function parseDateCategory(category, row, intlService) {\n if (row === null || typeof row !== 'object') {\n return parseDate(intlService, category);\n }\n\n var date = dateCache.get(row);\n if (!date) {\n date = parseDate(intlService, category);\n dateCache.set(row, date);\n }\n\n return date;\n}\n","export default function hasGradientOverlay(options) {\n var overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n return defined(value) && value !== null;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n var type = axisOptions.type;\n var dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nvar AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n var fields = SeriesBinder.current.bindPoint(series, null, item);\n var valueFields = fields.valueFields;\n\n for (var field in valueFields) {\n if (convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n}\n\nfunction findNext(ref) {\n var start = ref.start;\n var dir = ref.dir;\n var min = ref.min;\n var max = ref.max;\n var getter = ref.getter;\n var hasItem = ref.hasItem;\n var series = ref.series;\n\n var pointHasValue, outPoint;\n var idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter(idx);\n pointHasValue = hasValue(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n var min = range.min;\n var max = range.max;\n var hasMinPoint = min > 0 && min < count;\n var hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n var missingValues = seriesMissingValues(series);\n var minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter(max + 1);\n }\n } else {\n var outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter(min - 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter(max + 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport { evalOptions, categoriesCount } from './utils';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE, OBJECT } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nvar CategoricalChart = (function (ChartElement) {\n function CategoricalChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n }\n\n if ( ChartElement ) CategoricalChart.__proto__ = ChartElement;\n CategoricalChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n CategoricalChart.prototype.constructor = CategoricalChart;\n\n CategoricalChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n CategoricalChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n };\n\n CategoricalChart.prototype.plotValue = function plotValue (point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n var otherValues = [];\n var categorySum = 0;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n if (other) {\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n };\n\n CategoricalChart.prototype.plotRange = function plotRange (point, startValue) {\n var this$1 = this;\n if ( startValue === void 0 ) startValue = 0;\n\n var categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n var plotValue = this.plotValue(point);\n var positive = plotValue >= 0;\n var prevValue = startValue;\n var isStackedBar = false;\n var stack = defined(point.series.stack) ? point.series.stack : this.options.defaultStack;\n var isNonGroupStack = function (stack) { return stack === true || typeof stack === OBJECT && !stack.group; };\n\n if (stack) {\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n var otherStack = defined(other.series.stack) ? other.series.stack : this$1.options.defaultStack;\n\n if (!otherStack) {\n continue;\n }\n\n if (typeof stack === STRING && stack !== otherStack) {\n continue;\n }\n\n if (isNonGroupStack(stack) && !isNonGroupStack(otherStack)) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n\n var otherValue = this$1.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n // zero values should be skipped for log axis (startValue !== 0)\n if (startValue === 0 || otherValue !== 0) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n };\n\n CategoricalChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n var this$1 = this;\n\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var i = 0; i < this.categoryPoints.length; i++) {\n var categoryPoints = this$1.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n var point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n var to = this$1.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n };\n\n CategoricalChart.prototype.updateStackRange = function updateStackRange () {\n var this$1 = this;\n\n var ref = this.options;\n var isStacked = ref.isStacked;\n var chartSeries = ref.series;\n var limitsCache = {};\n\n if (isStacked) {\n for (var i = 0; i < chartSeries.length; i++) {\n var series = chartSeries[i];\n var axisName = series.axis;\n var key = axisName + series.stack;\n\n var limits = limitsCache[key];\n if (!limits) {\n limits = this$1.stackLimits(axisName, series.stack);\n\n var errorTotals = this$1.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this$1.valueAxisRanges[axisName] = limits;\n }\n }\n }\n };\n\n CategoricalChart.prototype.addErrorBar = function addErrorBar (point, data, categoryIx) {\n var value = point.value;\n var series = point.series;\n var seriesIx = point.seriesIx;\n var errorBars = point.options.errorBars;\n var lowValue = data.fields[ERROR_LOW_FIELD];\n var highValue = data.fields[ERROR_HIGH_FIELD];\n var errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n };\n\n CategoricalChart.prototype.addPointErrorBar = function addPointErrorBar (point, categoryIx) {\n var isVertical = !this.options.invertAxes;\n var options = point.options.errorBars;\n var series = point.series;\n var low = point.low;\n var high = point.high;\n\n if (this.options.isStacked) {\n var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n var fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n };\n\n CategoricalChart.prototype.stackedErrorRange = function stackedErrorRange (point, categoryIx) {\n var plotValue = this.plotRange(point, 0)[1] - point.value;\n var low = point.low + plotValue;\n var high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n };\n\n CategoricalChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n\n var categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n var seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n var point = this.createPoint(data, fields);\n if (point) {\n Object.assign(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n };\n\n CategoricalChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\", \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n };\n\n CategoricalChart.prototype.updateRange = function updateRange (data, fields) {\n var axisName = fields.series.axis;\n var value = data.value;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n };\n\n CategoricalChart.prototype.seriesValueAxis = function seriesValueAxis (series) {\n var plotArea = this.plotArea;\n var axisName = series.axis;\n var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n };\n\n CategoricalChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var categorySlots = this.categorySlots = [];\n var chartPoints = this.points;\n var categoryAxis = this.categoryAxis;\n var pointIx = 0;\n\n this.traverseDataPoints(function (data, fields) {\n var categoryIx = fields.categoryIx;\n var currentSeries = fields.series;\n\n var valueAxis = this$1.seriesValueAxis(currentSeries);\n var point = chartPoints[pointIx++];\n\n var categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n var plotRange = this$1.plotRange(point, valueAxis.startValue());\n var valueSlot = this$1.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n var pointSlot = this$1.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this$1.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this$1.options.isStacked100) {\n point.percentage = this$1.plotValue(point);\n }\n\n this$1.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n };\n\n CategoricalChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n };\n\n CategoricalChart.prototype.limitPoints = function limitPoints () {\n var this$1 = this;\n\n var categoryPoints = this.categoryPoints;\n var points = categoryPoints[0].concat(last(categoryPoints));\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this$1.limitPoint(points[idx]);\n }\n }\n };\n\n CategoricalChart.prototype.limitPoint = function limitPoint (point) {\n var limitedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limitedSlot.equals(point.box)) {\n point.reflow(limitedSlot);\n }\n };\n\n CategoricalChart.prototype.aboveAxis = function aboveAxis (point, valueAxis) {\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n var value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n };\n\n CategoricalChart.prototype.categoryAxisCrossingValue = function categoryAxisCrossingValue (valueAxis) {\n var categoryAxis = this.categoryAxis;\n var options = valueAxis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n };\n\n CategoricalChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n point.reflow(pointSlot);\n };\n\n CategoricalChart.prototype.reflowCategories = function reflowCategories () { };\n\n CategoricalChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var options = this.options;\n var invertAxes = options.invertAxes;\n var slotX = invertAxes ? valueSlot : categorySlot;\n var slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n CategoricalChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n };\n\n CategoricalChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var series = this.options.series;\n var count = categoriesCount(series);\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n var currentSeries = series[seriesIx$1];\n var currentCategory = this$1.categoryAxis.categoryAt(categoryIx);\n var pointData = this$1.plotArea.bindPoint(currentSeries, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx$1\n });\n }\n }\n\n for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n this$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n }\n };\n\n CategoricalChart.prototype._outOfRangeCallback = function _outOfRangeCallback (series, field, seriesIx, callback) {\n var outOfRangePoint = series[field];\n if (outOfRangePoint) {\n var categoryIx = outOfRangePoint.categoryIx;\n var pointData = this.plotArea.bindPoint(series, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n };\n\n CategoricalChart.prototype.formatPointValue = function formatPointValue (point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n };\n\n CategoricalChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields.value;\n };\n\n return CategoricalChart;\n}(ChartElement));\n\nsetDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nvar PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nvar NoteMixin = {\n createNote: function() {\n var options = this.options.notes;\n var text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n};\n\nexport default NoteMixin;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW, CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getAriaTemplate, valueOrDefault, getSpacing } from '../../common';\nimport guid from '../../core/utils/guid';\n\nvar LinePoint = (function (ChartElement) {\n function LinePoint(value, options) {\n ChartElement.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this._id = guid();\n }\n\n if ( ChartElement ) LinePoint.__proto__ = ChartElement;\n LinePoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n LinePoint.prototype.constructor = LinePoint;\n\n LinePoint.prototype.render = function render () {\n var ref = this.options;\n var markers = ref.markers;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n };\n\n LinePoint.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n };\n\n LinePoint.prototype.createLabelElement = function createLabelElement (options) {\n return new TextBox(this.getLabelText(options),\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n }, options),\n this.pointData()\n );\n };\n\n LinePoint.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n } else if (options.format) {\n return this.formatValue(options.format);\n }\n\n return this.value;\n };\n\n LinePoint.prototype.getAriaLabelText = function getAriaLabelText () {\n var labels = this.options.labels;\n var ariaTemplate = getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n };\n\n LinePoint.prototype.markerBorder = function markerBorder () {\n var options = this.options.markers;\n var background = options.background;\n var border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n };\n\n LinePoint.prototype.createVisual = function createVisual () {};\n\n LinePoint.prototype.createMarker = function createMarker () {\n var options = this.options.markers;\n var marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: options.opacity,\n pattern: this.options.pattern,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual,\n accessibilityOptions: deepExtend({\n ariaLabel: this.getAriaLabelText(this.options.labels)\n }, this.options.accessibility)\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n };\n\n LinePoint.prototype.markerBox = function markerBox () {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n };\n\n LinePoint.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var aboveAxis = ref.aboveAxis;\n var vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n var childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n var noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n var center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n };\n\n LinePoint.prototype.reflowLabel = function reflowLabel (box) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n };\n\n LinePoint.prototype.createHighlight = function createHighlight () {\n var markers = this.options.highlight.markers;\n var defaultColor = this.markerBorder().color;\n var options = this.options.markers;\n var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n var shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n };\n\n LinePoint.prototype.highlightVisual = function highlightVisual () {\n return (this.marker || {}).visual;\n };\n\n LinePoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var marker = this.marker;\n var visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n var size = this.options.markers.size;\n var halfSize = size / 2;\n var center = this.box.center();\n rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n };\n\n LinePoint.prototype.createFocusHighlight = function createFocusHighlight () {\n var markerOptions = this.options.markers;\n var highlightOptions = this.options.accessibility.highlight;\n var size = markerOptions.size + (markerOptions.border.width || 0);\n\n var highlight = new ShapeElement({\n type: markerOptions.type,\n width: size,\n height: size,\n rotation: markerOptions.rotation,\n background: highlightOptions.color,\n border: highlightOptions.border,\n opacity: highlightOptions.opacity,\n padding: highlightOptions.border.width / 2,\n zIndex: highlightOptions.zIndex\n });\n\n highlight.reflow(this._childBox);\n\n return highlight.getElement();\n };\n\n LinePoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var markerBox = this.markerBox();\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n var x = markerBox.x2 + TOOLTIP_OFFSET;\n var horizontalAlign = LEFT;\n var y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n };\n\n LinePoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n LinePoint.prototype.overlapsBox = function overlapsBox (box) {\n var markerBox = this.markerBox();\n return markerBox.overlaps(box);\n };\n\n LinePoint.prototype.unclipElements = function unclipElements () {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n };\n\n LinePoint.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n };\n\n LinePoint.prototype.focusVisual = function focusVisual () {\n if (this.marker) {\n if (this.marker.visual) {\n this.marker.visual.options.set(\"id\", this._id);\n }\n\n this.toggleFocusHighlight(true);\n }\n };\n\n LinePoint.prototype.clearFocusFromVisual = function clearFocusFromVisual () {\n if (this.marker) {\n if (this.marker.visual) {\n this.marker.visual.options.set(\"id\", \"\");\n }\n\n this.toggleFocusHighlight(false);\n }\n };\n\n LinePoint.prototype.getIndex = function getIndex () {\n return defined(this.categoryIx) ? this.categoryIx : this.pointIx;\n };\n\n return LinePoint;\n}(ChartElement));\n\nLinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n },\n accessibility: {\n tabIndex: 0,\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar LineSegment = (function (ChartElement) {\n function LineSegment(linePoints, series, seriesIx) {\n ChartElement.call(this);\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n }\n\n if ( ChartElement ) LineSegment.__proto__ = ChartElement;\n LineSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n LineSegment.prototype.constructor = LineSegment;\n\n LineSegment.prototype.points = function points () {\n return this.toGeometryPoints(this.linePoints);\n };\n\n LineSegment.prototype.toGeometryPoints = function toGeometryPoints (points) {\n var result = [];\n for (var i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n };\n\n LineSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: function () {\n this$1.segmentVisual();\n\n return this$1.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n };\n\n LineSegment.prototype.segmentVisual = function segmentVisual () {\n var ref = this;\n var options = ref.options;\n var series = ref.series;\n var color = series.color;\n var defaults = series._defaults;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var line = draw.Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n };\n\n LineSegment.prototype.aliasFor = function aliasFor (e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n };\n\n return LineSegment;\n}(ChartElement));\n\nsetDefaultOptions(LineSegment, {\n closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nvar StepLineMixin = {\n calculateStepPoints: function(points) {\n var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n var ref = categoryAxis.options;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n\n var stepAxis = vertical ? X : Y;\n var axis = vertical ? Y : X;\n var stepDir = reverse ? 2 : 1;\n var dir = stepDir;\n\n var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n var result = [ previousPoint ];\n\n for (var idx = 1; idx < points.length; idx++) {\n var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n var stepPoint = new geom.Point();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n var box = lintPoint.box;\n var result = new geom.Point();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nvar StepLineSegment = (function (LineSegment) {\n function StepLineSegment () {\n LineSegment.apply(this, arguments);\n }\n\n if ( LineSegment ) StepLineSegment.__proto__ = LineSegment;\n StepLineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n StepLineSegment.prototype.constructor = StepLineSegment;\n\n StepLineSegment.prototype.points = function points () {\n return this.calculateStepPoints(this.linePoints);\n };\n\n return StepLineSegment;\n}(LineSegment));\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nvar SplineSegment = (function (LineSegment) {\n function SplineSegment () {\n LineSegment.apply(this, arguments);\n }\n\n if ( LineSegment ) SplineSegment.__proto__ = LineSegment;\n SplineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n SplineSegment.prototype.constructor = SplineSegment;\n\n SplineSegment.prototype.segmentVisual = function segmentVisual () {\n var series = this.series;\n var defaults = series._defaults;\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var curveProcessor = new CurveProcessor(this.options.closed);\n var segments = curveProcessor.process(this.points());\n var curve = new draw.Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n };\n\n return SplineSegment;\n}(LineSegment));\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar LineChartMixin = {\n renderSegments: function() {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesPoints = ref.seriesPoints;\n var series = options.series;\n var seriesCount = seriesPoints.length;\n var lastSegment;\n\n this._segments = [];\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var sortedPoints = this$1.sortPoints(seriesPoints[seriesIx]);\n var pointCount = sortedPoints.length;\n var linePoints = [];\n\n for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n var point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n var missingValues = series.missingValues;\n var assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n var target = new Point(x, y);\n var allPoints = this.seriesPoints[seriesIx];\n var nearestPointDistance = MAX_VALUE;\n var nearestPoint;\n\n for (var i = 0; i < allPoints.length; i++) {\n var point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n var pointBox = point.box;\n var pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar ClipAnimation = (function (superclass) {\n function ClipAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ClipAnimation.__proto__ = superclass;\n ClipAnimation.prototype = Object.create( superclass && superclass.prototype );\n ClipAnimation.prototype.constructor = ClipAnimation;\n\n ClipAnimation.prototype.setup = function setup () {\n this._setEnd(this.options.box.x1);\n };\n\n ClipAnimation.prototype.step = function step (pos) {\n var box = this.options.box;\n this._setEnd(interpolateValue(box.x1, box.x2, pos));\n };\n\n ClipAnimation.prototype._setEnd = function _setEnd (x) {\n var element = this.element;\n var segments = element.segments;\n var topRight = segments[1].anchor();\n var bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n };\n\n return ClipAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nvar ClipAnimationMixin = {\n createAnimation: function() {\n var root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n var box = root.size();\n var clipPath = draw.Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n var points = this.animationPoints();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nvar LineChart = (function (CategoricalChart) {\n function LineChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) LineChart.__proto__ = CategoricalChart;\n LineChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.render = function render () {\n\n CategoricalChart.prototype.render.call(this);\n\n this.updateStackRange();\n this.renderSegments();\n };\n\n LineChart.prototype.pointType = function pointType () {\n return LinePoint;\n };\n\n LineChart.prototype.createPoint = function createPoint (data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var missingValues = this.seriesMissingValues(series);\n var value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n LineChart.prototype.plotRange = function plotRange (point) {\n var this$1 = this;\n\n var plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this$1.plotValue(other);\n\n if (this$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n };\n\n LineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n };\n\n LineChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n };\n\n LineChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return LineChart;\n}(CategoricalChart));\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\nimport { createPatternFill } from '../../core/pattern';\n\nvar AreaSegment = (function (LineSegment) {\n function AreaSegment(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n LineSegment.call(this, linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n }\n\n if ( LineSegment ) AreaSegment.__proto__ = LineSegment;\n AreaSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n AreaSegment.prototype.constructor = AreaSegment;\n\n AreaSegment.prototype.createVisual = function createVisual () {\n var series = this.series;\n var defaults = series._defaults;\n var lineOptions = series.line || {};\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new draw.Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: createPatternFill(series.pattern, {\n color: color,\n opacity: series.opacity\n }),\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n };\n\n AreaSegment.prototype.strokeSegments = function strokeSegments () {\n var segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n };\n\n AreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.points());\n };\n\n AreaSegment.prototype.stackSegments = function stackSegments () {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n };\n\n AreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n };\n\n AreaSegment.prototype.segmentsFromPoints = function segmentsFromPoints (points) {\n return points.map(function (point) { return new geom.Segment(point); });\n };\n\n AreaSegment.prototype.createStroke = function createStroke (style) {\n var stroke = new draw.Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n };\n\n AreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n };\n\n AreaSegment.prototype.createFill = function createFill (style) {\n var strokeSegments = this.strokeSegments();\n var fillSegments = strokeSegments.slice(0);\n var hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n var stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n var fill = new draw.Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n };\n\n AreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var chart = this.parent;\n var invertAxes = chart.options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.series);\n var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n var segments = this.strokeSegments();\n var firstPoint = segments[0].anchor();\n var lastPoint = last(segments).anchor();\n var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n };\n\n return AreaSegment;\n}(LineSegment));\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nvar StepAreaSegment = (function (AreaSegment) {\n function StepAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) StepAreaSegment.__proto__ = AreaSegment;\n StepAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n StepAreaSegment.prototype.constructor = StepAreaSegment;\n\n StepAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n };\n\n StepAreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n };\n\n return StepAreaSegment;\n}(AreaSegment));\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nvar SplineAreaSegment = (function (AreaSegment) {\n function SplineAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) SplineAreaSegment.__proto__ = AreaSegment;\n SplineAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n SplineAreaSegment.prototype.constructor = SplineAreaSegment;\n\n SplineAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n var curveProcessor = new CurveProcessor(this.options.closed);\n var linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n };\n\n SplineAreaSegment.prototype.createStackSegments = function createStackSegments () {\n var strokeSegments = this.strokeSegments();\n var stackSegments = [];\n for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n var segment = strokeSegments[idx];\n stackSegments.push(new geom.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n };\n\n return SplineAreaSegment;\n}(AreaSegment));\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nvar AreaChart = (function (LineChart) {\n function AreaChart () {\n LineChart.apply(this, arguments);\n }\n\n if ( LineChart ) AreaChart.__proto__ = LineChart;\n AreaChart.prototype = Object.create( LineChart && LineChart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n\n var stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n var missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n var pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n };\n\n AreaChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n LineChart.prototype.reflow.call(this, targetBox);\n\n var stackPoints = this._stackPoints;\n if (stackPoints) {\n for (var idx = 0; idx < stackPoints.length; idx++) {\n var stackPoint = stackPoints[idx];\n var pointSlot = this$1.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n };\n\n AreaChart.prototype._gapStackPoints = function _gapStackPoints (linePoints, seriesIx, style) {\n var this$1 = this;\n\n var seriesPoints = this.seriesPoints;\n var startIdx = linePoints[0].categoryIx;\n var length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n var endIdx = startIdx + length;\n var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n var stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n var pointIx = categoryIx + pointOffset;\n var currentSeriesIx = seriesIx;\n var point = (void 0);\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n var gapStackPoint = this$1._createGapStackPoint(categoryIx);\n this$1._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n };\n\n AreaChart.prototype._previousSegmentPoint = function _previousSegmentPoint (categoryIx, pointIx, segmentIx, seriesIdx) {\n var seriesPoints = this.seriesPoints;\n var index = seriesIdx;\n var point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n };\n\n AreaChart.prototype._createGapStackPoint = function _createGapStackPoint (categoryIx) {\n var options = this.pointOptions({}, 0);\n var point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n };\n\n AreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n AreaChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return AreaChart;\n}(LineChart));\n\nexport default AreaChart;\n","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nvar AxisGroupRangeTracker = (function (Class) {\n function AxisGroupRangeTracker() {\n Class.call(this);\n\n this.axisRanges = {};\n }\n\n if ( Class ) AxisGroupRangeTracker.__proto__ = Class;\n AxisGroupRangeTracker.prototype = Object.create( Class && Class.prototype );\n AxisGroupRangeTracker.prototype.constructor = AxisGroupRangeTracker;\n\n AxisGroupRangeTracker.prototype.update = function update (chartAxisRanges) {\n var axisRanges = this.axisRanges;\n\n for (var axisName in chartAxisRanges) {\n var chartRange = chartAxisRanges[axisName];\n var range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n };\n\n AxisGroupRangeTracker.prototype.reset = function reset (axisName) {\n this.axisRanges[axisName] = undefined;\n };\n\n AxisGroupRangeTracker.prototype.query = function query (axisName) {\n return this.axisRanges[axisName];\n };\n\n return AxisGroupRangeTracker;\n}(Class));\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nvar BarLabel = (function (ChartElement) {\n function BarLabel(content, options, pointData) {\n ChartElement.call(this, options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n }\n\n if ( ChartElement ) BarLabel.__proto__ = ChartElement;\n BarLabel.prototype = Object.create( ChartElement && ChartElement.prototype );\n BarLabel.prototype.constructor = BarLabel;\n\n BarLabel.prototype.createVisual = function createVisual () {\n this.textBox.options.noclip = this.options.noclip;\n };\n\n BarLabel.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var vertical = options.vertical;\n var aboveAxis = options.aboveAxis;\n var text = this.children[0];\n var textOptions = text.options;\n var box = text.box;\n var padding = text.options.padding;\n var labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n };\n\n BarLabel.prototype.alignToClipBox = function alignToClipBox (clipBox) {\n var vertical = this.options.vertical;\n var field = vertical ? Y : X;\n var start = field + \"1\";\n var end = field + \"2\";\n var text = this.children[0];\n var parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n var targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n };\n\n return BarLabel;\n}(ChartElement));\n\nsetDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n});\n\nexport default BarLabel;","import addAccessibilityAttributesToVisual from \"../../core/utils/add-accessibility-attributes-to-visual\";\nimport { deepExtend, getAriaTemplate } from \"../../common\";\nimport guid from '../../core/utils/guid';\n\nvar AccessibilityAttributesMixin = {\n addAccessibilityAttributesToVisual: function() {\n this._id = this._id || guid();\n\n var accessibilityOptions = deepExtend({\n ariaLabel: this.getAriaLabelText()\n }, this.options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n },\n\n getAriaLabelText: function getAriaLabelText() {\n var labels = this.options.labels;\n var ariaTemplate = getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n },\n\n focusVisual: function focusVisual() {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n },\n\n clearFocusFromVisual: function clearFocusFromVisual() {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n }\n};\n\nexport default AccessibilityAttributesMixin;\n","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { CHART_POINT_ROLE_DESCRIPTION, CHART_POINT_CLASSNAME, CHART_POINT_ROLE, BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, createPatternFill, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nvar BAR_ALIGN_MIN_WIDTH = 6;\n\nvar Bar = (function (ChartElement) {\n function Bar(value, options) {\n ChartElement.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n }\n\n if ( ChartElement ) Bar.__proto__ = ChartElement;\n Bar.prototype = Object.create( ChartElement && ChartElement.prototype );\n Bar.prototype.constructor = Bar;\n\n Bar.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n };\n\n Bar.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n };\n\n Bar.prototype.createLabelElement = function createLabelElement (options) {\n return new BarLabel(this.getLabelText(options),\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), this.pointData());\n };\n\n Bar.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n };\n\n Bar.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Bar.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1.errorBars[i].reflow(targetBox);\n }\n }\n };\n\n Bar.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var options = ref.options;\n var customVisual = options.visual;\n\n if (this.visible !== false) {\n ChartElement.prototype.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (customVisual) {\n var visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: function () {\n var group = new draw.Group();\n this$1.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n };\n\n Bar.prototype.createRect = function createRect (visual) {\n var options = this.options;\n var border = options.border;\n var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n var rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n var path = this.rectVisual = draw.Path.fromRect(rect, {\n fill: createPatternFill(options.pattern, {\n color: this.color,\n opacity: options.opacity\n }),\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n var width = this.box.width();\n var height = this.box.height();\n\n var size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n };\n\n Bar.prototype.createHighlight = function createHighlight (style) {\n var highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n };\n\n Bar.prototype.highlightVisual = function highlightVisual () {\n return this.rectVisual;\n };\n\n Bar.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n };\n\n Bar.prototype.createFocusHighlight = function createFocusHighlight (style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var highlight = draw.Path.fromRect(this.box.pad(borderWidth / 2).toRect(), style);\n\n return alignPathToPixel(highlight);\n };\n\n Bar.prototype.getBorderColor = function getBorderColor () {\n var color = this.color;\n var border = this.options.border;\n var brightness = border._brightness || BORDER_BRIGHTNESS;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n };\n\n Bar.prototype.tooltipAnchor = function tooltipAnchor () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var aboveAxis = ref.aboveAxis;\n var clipBox = this.owner.pane.clipBox() || box;\n var horizontalAlign = LEFT;\n var verticalAlign = TOP;\n var x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n var x1 = Math.max(box.x1, clipBox.x1);\n var x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n };\n\n Bar.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n Bar.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n };\n\n Bar.prototype.getIndex = function getIndex () {\n return this.categoryIx;\n };\n\n return Bar;\n}(ChartElement));\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\ndeepExtend(Bar.prototype, AccessibilityAttributesMixin);\n\nBar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nvar ClusterLayout = (function (ChartElement) {\n function ClusterLayout(options) {\n ChartElement.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n if ( ChartElement ) ClusterLayout.__proto__ = ChartElement;\n ClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n ClusterLayout.prototype.constructor = ClusterLayout;\n\n ClusterLayout.prototype.reflow = function reflow (box) {\n var ref = this.options;\n var vertical = ref.vertical;\n var gap = ref.gap;\n var spacing = ref.spacing;\n var children = this.children;\n var count = children.length;\n var axis = vertical ? Y : X;\n var slots = count + gap + (spacing * (count - 1));\n var slotSize = (vertical ? box.height() : box.width()) / slots;\n var position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, function (child, idx) {\n var childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n };\n\n return ClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar StackWrap = (function (ChartElement) {\n function StackWrap () {\n ChartElement.apply(this, arguments);\n }\n\n if ( ChartElement ) StackWrap.__proto__ = ChartElement;\n StackWrap.prototype = Object.create( ChartElement && ChartElement.prototype );\n StackWrap.prototype.constructor = StackWrap;\n\n StackWrap.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var positionAxis = this.options.vertical ? X : Y;\n var children = this.children;\n var childrenCount = children.length;\n var box = this.box = new Box();\n\n for (var i = 0; i < childrenCount; i++) {\n var currentChild = children[i];\n\n if (currentChild.visible !== false) {\n var childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this$1.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n };\n\n return StackWrap;\n}(ChartElement));\n\nsetDefaultOptions(StackWrap, {\n vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { OBJECT, STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar BarChart = (function (CategoricalChart) {\n function BarChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) BarChart.__proto__ = CategoricalChart;\n BarChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.render = function render () {\n CategoricalChart.prototype.render.call(this);\n this.updateStackRange();\n };\n\n BarChart.prototype.pointType = function pointType () {\n return Bar;\n };\n\n BarChart.prototype.clusterType = function clusterType () {\n return ClusterLayout;\n };\n\n BarChart.prototype.stackType = function stackType () {\n return StackWrap;\n };\n\n BarChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n var limits = CategoricalChart.prototype.stackLimits.call(this, axisName, stackName);\n\n return limits;\n };\n\n BarChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var stackOrDefault = defined(series.stack) ? series.stack : options.defaultStack;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var labelOptions = pointOptions.labels;\n if (stackOrDefault) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = stackOrDefault;\n\n var color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var pointType = this.pointType();\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n var clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (options.isStacked) {\n var stackWrap = this.getStackWrap(stackOrDefault, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n };\n\n BarChart.prototype.getStackWrap = function getStackWrap (stack, cluster) {\n var stackGroup = (typeof stack === OBJECT) ? (stack.group || true) : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === STRING || stackGroup === true) {\n for (var i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n }\n\n if (!stackWrap) {\n var stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n };\n\n BarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx, valueAxis) {\n var options = this.options;\n var categorySlot = categoryAxis.getSlot(categoryIx);\n var startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n var stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n };\n\n BarChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n BarChart.prototype.createAnimation = function createAnimation () {\n this._setAnimationOptions();\n CategoricalChart.prototype.createAnimation.call(this);\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n };\n\n BarChart.prototype._setChildrenAnimation = function _setChildrenAnimation () {\n var this$1 = this;\n\n var points = this.points;\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n var pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this$1.options.animation;\n point.createAnimation();\n }\n }\n };\n\n BarChart.prototype._setAnimationOptions = function _setAnimationOptions () {\n var options = this.options;\n var animation = options.animation || {};\n var origin;\n\n if (options.isStacked) {\n var valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new geom.Point(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n };\n\n return BarChart;\n}(CategoricalChart));\n\nsetDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n});\n\nexport default BarChart;\n","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\n\nimport { CHART_POINT_ROLE_DESCRIPTION, CHART_POINT_CLASSNAME, CHART_POINT_ROLE, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\nimport { createPatternFill } from '../../core/pattern';\n\nvar Candlestick = (function (ChartElement) {\n function Candlestick(value, options) {\n ChartElement.call(this, options);\n this.value = value;\n }\n\n if ( ChartElement ) Candlestick.__proto__ = ChartElement;\n Candlestick.prototype = Object.create( ChartElement && ChartElement.prototype );\n Candlestick.prototype.constructor = Candlestick;\n\n Candlestick.prototype.getLabelText = function getLabelText (options) {\n return this.formatValue(options.format);\n };\n\n Candlestick.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var ocSlot = valueAxis.getSlot(value.open, value.close);\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n var mid = lhSlot.center().x;\n var points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n };\n\n Candlestick.prototype.reflowNote = function reflowNote () {\n if (this.note) {\n this.note.reflow(this.box);\n }\n };\n\n Candlestick.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n };\n\n Candlestick.prototype.mainVisual = function mainVisual (options) {\n var group = new draw.Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n };\n\n Candlestick.prototype.createBody = function createBody (container, options) {\n var body = draw.Path.fromRect(this.realBody.toRect(), {\n fill: createPatternFill(options.pattern, {\n color: this.color,\n opacity: options.opacity\n }),\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n };\n\n Candlestick.prototype.createLines = function createLines (container, options) {\n this.drawLines(container, options, this.lines, options.line);\n };\n\n Candlestick.prototype.drawLines = function drawLines (container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n var lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (var i = 0; i < lines.length; i++) {\n var line = draw.Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n };\n\n Candlestick.prototype.getBorderColor = function getBorderColor () {\n var border = this.options.border;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n };\n\n Candlestick.prototype.createOverlay = function createOverlay () {\n var overlay = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n };\n\n Candlestick.prototype.createHighlight = function createHighlight () {\n var highlight = this.options.highlight;\n var normalColor = this.color;\n\n this.color = highlight.color || this.color;\n var overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n };\n\n Candlestick.prototype.highlightVisual = function highlightVisual () {\n return this._mainVisual;\n };\n\n Candlestick.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n };\n\n Candlestick.prototype.tooltipAnchor = function tooltipAnchor () {\n var box = this.box;\n var clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n };\n\n Candlestick.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Candlestick.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n Candlestick.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n value: this.value,\n meanPoints: this.meanPoints,\n medianPoints: this.medianPoints,\n whiskerPoints: this.whiskerPoints,\n stackValue: this.stackValue,\n series: this.series\n };\n };\n\n Candlestick.prototype.getIndex = function getIndex () {\n return this.categoryIx;\n };\n\n return Candlestick;\n}(ChartElement));\n\nCandlestick.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\nsetDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{4:d}
Open:{0:C}
High:{1:C}
Low:{2:C}
Close:{3:C}
\"\n },\n labels: {\n format: \"\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\ndeepExtend(Candlestick.prototype, AccessibilityAttributesMixin);\n\nexport default Candlestick;","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK, OHLC } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nvar CandlestickChart = (function (CategoricalChart) {\n function CandlestickChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) CandlestickChart.__proto__ = CategoricalChart;\n CandlestickChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n CandlestickChart.prototype.constructor = CandlestickChart;\n\n CandlestickChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n CandlestickChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n };\n\n CandlestickChart.prototype.pointType = function pointType () {\n return Candlestick;\n };\n\n CandlestickChart.prototype.createPoint = function createPoint (data, fields) {\n var series = fields.series;\n var pointType = this.pointType();\n var value = data.valueFields;\n var pointOptions = deepExtend({}, series);\n var color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (series.type === CANDLESTICK || series.type === OHLC) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n };\n\n CandlestickChart.prototype.splitValue = function splitValue (value) {\n return [ value.low, value.open, value.close, value.high ];\n };\n\n CandlestickChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value);\n var axisRange = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n\n this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n };\n\n CandlestickChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n };\n\n CandlestickChart.prototype.animationPoints = function animationPoints () {\n return this.points;\n };\n\n return CandlestickChart;\n}(CategoricalChart));\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nvar BoxPlot = (function (Candlestick) {\n function BoxPlot(value, options) {\n Candlestick.call(this, value, options);\n\n this.createNote();\n }\n\n if ( Candlestick ) BoxPlot.__proto__ = Candlestick;\n BoxPlot.prototype = Object.create( Candlestick && Candlestick.prototype );\n BoxPlot.prototype.constructor = BoxPlot;\n\n BoxPlot.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n var medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n var meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n };\n\n BoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n };\n\n BoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n };\n\n BoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n };\n\n BoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n };\n\n BoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n };\n\n BoxPlot.prototype.renderOutliers = function renderOutliers (options) {\n var this$1 = this;\n\n var value = this.value;\n var outliers = value.outliers || [];\n var outerFence = Math.abs(value.q3 - value.q1) * 3;\n var elements = [];\n var markers = options.markers || {};\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n var markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this$1.color)) {\n markersBorder.color = this$1.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n var shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n };\n\n BoxPlot.prototype.reflowOutliers = function reflowOutliers (outliers) {\n var this$1 = this;\n\n var valueAxis = this.owner.seriesValueAxis(this.options);\n var center = this.box.center();\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i].value;\n var markerBox = valueAxis.getSlot(outlierValue);\n\n if (this$1.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this$1.box = this$1.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n };\n\n BoxPlot.prototype.mainVisual = function mainVisual (options) {\n var group = Candlestick.prototype.mainVisual.call(this, options);\n var outliers = this.renderOutliers(options);\n\n for (var i = 0; i < outliers.length; i++) {\n var element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n };\n\n BoxPlot.prototype.createLines = function createLines (container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n };\n\n BoxPlot.prototype.getBorderColor = function getBorderColor () {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return Candlestick.prototype.getBorderColor.call(this);\n };\n\n return BoxPlot;\n}(Candlestick));\n\nsetDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{6:d}
Lower:{0:C}
Q1:{1:C}
Median:{2:C}
Mean:{5:C}
Q3:{3:C}
Upper:{4:C}
\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nvar VerticalBoxPlot = (function (BoxPlot) {\n function VerticalBoxPlot () {\n BoxPlot.apply(this, arguments);\n }\n\n if ( BoxPlot ) VerticalBoxPlot.__proto__ = BoxPlot;\n VerticalBoxPlot.prototype = Object.create( BoxPlot && BoxPlot.prototype );\n VerticalBoxPlot.prototype.constructor = VerticalBoxPlot;\n\n VerticalBoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n };\n\n VerticalBoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n };\n\n VerticalBoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n };\n\n VerticalBoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n };\n\n VerticalBoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n };\n\n return VerticalBoxPlot;\n}(BoxPlot));\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar BoxPlotChart = (function (CandlestickChart) {\n function BoxPlotChart () {\n CandlestickChart.apply(this, arguments);\n }\n\n if ( CandlestickChart ) BoxPlotChart.__proto__ = CandlestickChart;\n BoxPlotChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n BoxPlotChart.prototype.constructor = BoxPlotChart;\n\n BoxPlotChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n };\n\n BoxPlotChart.prototype.pointType = function pointType () {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n };\n\n BoxPlotChart.prototype.splitValue = function splitValue (value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n };\n\n BoxPlotChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n var axisRange = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n\n this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n };\n\n BoxPlotChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n };\n\n BoxPlotChart.prototype.filterOutliers = function filterOutliers (items) {\n var length = (items || []).length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n var item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n };\n\n BoxPlotChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return BoxPlotChart;\n}(CandlestickChart));\n\nexport default BoxPlotChart;\n","import ErrorBarBase from './error-bar-base';\n\nvar ScatterErrorBar = (function (ErrorBarBase) {\n function ScatterErrorBar () {\n ErrorBarBase.apply(this, arguments);\n }\n\n if ( ErrorBarBase ) ScatterErrorBar.__proto__ = ErrorBarBase;\n ScatterErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n ScatterErrorBar.prototype.constructor = ScatterErrorBar;\n\n ScatterErrorBar.prototype.getAxis = function getAxis () {\n var axes = this.chart.seriesAxes(this.series);\n var axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n };\n\n return ScatterErrorBar;\n}(ErrorBarBase));\n\nexport default ScatterErrorBar;","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\n\nimport { hasValue, evalOptions } from '../utils';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nvar ScatterChart = (function (ChartElement) {\n function ScatterChart(plotArea, options) {\n\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n if ( ChartElement ) ScatterChart.__proto__ = ChartElement;\n ScatterChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype._initFields = function _initFields () {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n };\n\n ScatterChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n ScatterChart.prototype.addErrorBar = function addErrorBar (point, field, fields) {\n var value = point.value[field];\n var valueErrorField = field + \"Value\";\n var lowField = field + \"ErrorLow\";\n var highField = field + \"ErrorHigh\";\n var seriesIx = fields.seriesIx;\n var series = fields.series;\n var errorBars = point.options.errorBars;\n var lowValue = fields[lowField];\n var highValue = fields[highField];\n\n if (isNumber(value)) {\n var errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n };\n\n ScatterChart.prototype.addPointErrorBar = function addPointErrorBar (errorRange, point, field) {\n var low = errorRange.low;\n var high = errorRange.high;\n var series = point.series;\n var options = point.options.errorBars;\n var isVertical = field === Y;\n var item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n };\n\n ScatterChart.prototype.addValue = function addValue (value, fields) {\n var x = value.x;\n var y = value.y;\n var seriesIx = fields.seriesIx;\n var series = this.options.series[seriesIx];\n var missingValues = this.seriesMissingValues(series);\n var seriesPoints = this.seriesPoints[seriesIx];\n\n var pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n var point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n Object.assign(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n };\n\n ScatterChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues;\n };\n\n ScatterChart.prototype.createMissingValue = function createMissingValue () {};\n\n ScatterChart.prototype.updateRange = function updateRange (value, series) {\n var intlService = this.chartService.intl;\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var x = value.x;\n var y = value.y;\n var xAxisRange = this.xAxisRanges[xAxisName];\n var yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n };\n\n ScatterChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\",\n \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\", \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n };\n\n ScatterChart.prototype.pointType = function pointType () {\n return LinePoint;\n };\n\n ScatterChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n };\n\n ScatterChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n ScatterChart.prototype.seriesAxes = function seriesAxes (series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n };\n\n ScatterChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var seriesAxes = this$1.seriesAxes(fields.series);\n var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n };\n\n ScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n ScatterChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var seriesPoints = ref.seriesPoints;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$1.valueFields;\n var fields = ref$1.fields;\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1\n }, fields));\n }\n }\n };\n\n ScatterChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n };\n\n ScatterChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n };\n\n return ScatterChart;\n}(ChartElement));\nsetDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin);\n\nexport default ScatterChart;\n","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\nimport { createPatternFill } from '../../core/pattern';\n\nvar Bubble = (function (LinePoint) {\n function Bubble(value, options) {\n LinePoint.call(this, value, options);\n\n this.category = value.category;\n }\n\n if ( LinePoint ) Bubble.__proto__ = LinePoint;\n Bubble.prototype = Object.create( LinePoint && LinePoint.prototype );\n Bubble.prototype.constructor = Bubble;\n\n Bubble.prototype.createHighlight = function createHighlight () {\n var highlight = this.options.highlight;\n var border = highlight.border;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width + border.width) / 2;\n var highlightGroup = new draw.Group();\n var shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n var overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: createPatternFill(this.options.pattern, {\n color: markers.background,\n opacity: highlight.opacity\n })\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n };\n\n Bubble.prototype.createFocusHighlight = function createFocusHighlight (style) {\n var highlightOptions = this.options.accessibility.highlight;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width) / 2 + highlightOptions.border.width / 2;\n var highlight = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), style);\n\n return highlight;\n };\n\n return Bubble;\n}(LinePoint));\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar BubbleChart = (function (ScatterChart) {\n function BubbleChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) BubbleChart.__proto__ = ScatterChart;\n BubbleChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype._initFields = function _initFields () {\n this._maxSize = MIN_VALUE;\n ScatterChart.prototype._initFields.call(this);\n };\n\n BubbleChart.prototype.addValue = function addValue (value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n ScatterChart.prototype.addValue.call(this, value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n };\n\n BubbleChart.prototype.reflow = function reflow (box) {\n this.updateBubblesSize(box);\n ScatterChart.prototype.reflow.call(this, box);\n };\n\n BubbleChart.prototype.pointType = function pointType () {\n return Bubble;\n };\n\n BubbleChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointsCount = series.data.length;\n var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n var animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n var color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n var pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n var point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n BubbleChart.prototype.updateBubblesSize = function updateBubblesSize (box) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var boxSize = Math.min(box.width(), box.height());\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesPoints = this$1.seriesPoints[seriesIx];\n var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n var maxSize = currentSeries.maxSize || boxSize * 0.2;\n var minR = minSize / 2;\n var maxR = maxSize / 2;\n var minArea = Math.PI * minR * minR;\n var maxArea = Math.PI * maxR * maxR;\n var areaRange = maxArea - minArea;\n var areaRatio = areaRange / this$1._maxSize;\n\n for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n var point = seriesPoints[pointIx];\n if (point) {\n var area = Math.abs(point.value.size) * areaRatio;\n var radius = Math.sqrt((minArea + area) / Math.PI);\n var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n var zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n };\n\n BubbleChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n };\n\n BubbleChart.prototype.createAnimation = function createAnimation () {};\n BubbleChart.prototype.createVisual = function createVisual () {};\n\n return BubbleChart;\n}(ScatterChart));\n\nsetDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar Target = (function (ShapeElement) {\n\tfunction Target () {\n\t\tShapeElement.apply(this, arguments);\n\t}if ( ShapeElement ) Target.__proto__ = ShapeElement;\n\tTarget.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n\tTarget.prototype.constructor = Target;\n\n\t\n\n\treturn Target;\n}(ShapeElement));\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { Box, ChartElement } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, setDefaultOptions, valueOrDefault } from '../../common';\n\nimport BarLabel from '../bar-chart/bar-label';\nimport { CHART_POINT_ROLE_DESCRIPTION, CHART_POINT_CLASSNAME, CHART_POINT_ROLE } from '../constants';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\nimport { createPatternFill } from '../../core/pattern';\n\nvar Bullet = (function (ChartElement) {\n function Bullet(value, options) {\n ChartElement.call(this, options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n if ( ChartElement ) Bullet.__proto__ = ChartElement;\n Bullet.prototype = Object.create( ChartElement && ChartElement.prototype );\n Bullet.prototype.constructor = Bullet;\n\n Bullet.prototype.render = function render () {\n var options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createLabel();\n this.createNote();\n }\n };\n\n Bullet.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n };\n\n Bullet.prototype.createLabelElement = function createLabelElement (options) {\n return new BarLabel(this.getLabelText(options),\n options,\n this.pointData());\n };\n\n Bullet.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n };\n\n Bullet.prototype.reflow = function reflow (box) {\n this.render();\n\n var ref = this;\n var options = ref.options;\n var target = ref.target;\n var chart = ref.owner;\n var invertAxes = options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.options);\n var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n var targetValueSlot = valueAxis.getSlot(this.value.target);\n var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n var targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n var label = this.label;\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(box);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n };\n\n Bullet.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n var options = this.options;\n var body = draw.Path.fromRect(this.box.toRect(), {\n fill: createPatternFill(options.pattern, {\n color: this.color,\n opacity: options.opacity\n }),\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n };\n\n Bullet.prototype.createAnimation = function createAnimation () {\n if (this.bodyVisual) {\n this.animation = draw.Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n };\n\n Bullet.prototype.createHighlight = function createHighlight (style) {\n return draw.Path.fromRect(this.box.toRect(), style);\n };\n\n Bullet.prototype.highlightVisual = function highlightVisual () {\n return this.bodyVisual;\n };\n\n Bullet.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n };\n\n Bullet.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Bullet.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n };\n\n Bullet.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n Bullet.prototype.getIndex = function getIndex () {\n return this.categoryIx;\n };\n\n return Bullet;\n}(ChartElement));\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\nBullet.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\nsetDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n labels: {\n visible: false\n },\n tooltip: {\n format: \"Current: {0}
Target: {1}\"\n },\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\ndeepExtend(Bullet.prototype, AccessibilityAttributesMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nvar BulletChart = (function (CategoricalChart) {\n function BulletChart(plotArea, options) {\n\n wrapData(options);\n\n CategoricalChart.call(this, plotArea, options);\n }\n\n if ( CategoricalChart ) BulletChart.__proto__ = CategoricalChart;\n BulletChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n BulletChart.prototype.constructor = BulletChart;\n\n BulletChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n BulletChart.prototype.plotRange = function plotRange (point) {\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n };\n\n BulletChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var value = data.valueFields;\n\n var bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n var color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(bulletOptions, value, fields);\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n var bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n };\n\n BulletChart.prototype.updateRange = function updateRange (value, fields) {\n var current = value.current;\n var target = value.target;\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n };\n\n BulletChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n };\n\n BulletChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields.current;\n };\n\n BulletChart.prototype.aboveAxis = function aboveAxis (point) {\n var value = point.value.current;\n\n return value > 0;\n };\n\n BulletChart.prototype.createAnimation = function createAnimation () {\n var this$1 = this;\n\n var points = this.points;\n\n this._setAnimationOptions();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n point.options.animation = this$1.options.animation;\n point.createAnimation();\n }\n };\n\n return BulletChart;\n}(CategoricalChart));\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n});\n\nfunction wrapData(options) {\n var series = options.series;\n\n for (var i = 0; i < series.length; i++) {\n var seriesItem = series[i];\n var data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n}\n\nexport default BulletChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nvar BaseTooltip = (function (Class) {\n function BaseTooltip(chartService, options) {\n Class.call(this);\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n }\n\n if ( Class ) BaseTooltip.__proto__ = Class;\n BaseTooltip.prototype = Object.create( Class && Class.prototype );\n BaseTooltip.prototype.constructor = BaseTooltip;\n\n BaseTooltip.prototype.getStyle = function getStyle (options, point) {\n var background = options.background;\n var border = options.border.color;\n\n if (point) {\n var pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n var padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n };\n\n BaseTooltip.prototype.show = function show (options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n var style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n var background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n };\n\n BaseTooltip.prototype.hide = function hide () {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n };\n\n BaseTooltip.prototype.destroy = function destroy () {\n delete this.chartService;\n };\n\n return BaseTooltip;\n}(Class));\n\nsetDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar CrosshairTooltip = (function (BaseTooltip) {\n function CrosshairTooltip(chartService, crosshair, options) {\n BaseTooltip.call(this, chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n }\n\n if ( BaseTooltip ) CrosshairTooltip.__proto__ = BaseTooltip;\n CrosshairTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n CrosshairTooltip.prototype.constructor = CrosshairTooltip;\n\n CrosshairTooltip.prototype.initAxisName = function initAxisName () {\n var axis = this.crosshair.axis;\n var plotArea = axis.plotArea;\n var name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n };\n\n CrosshairTooltip.prototype.showAt = function showAt (point) {\n var ref = this;\n var axis = ref.crosshair.axis;\n var options = ref.options;\n var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n var formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n };\n\n CrosshairTooltip.prototype.hide = function hide () {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n };\n\n CrosshairTooltip.prototype.getAnchor = function getAnchor () {\n var ref = this;\n var crosshair = ref.crosshair;\n var ref_options = ref.options;\n var position = ref_options.position;\n var padding = ref_options.padding;\n var vertical = !crosshair.axis.options.vertical;\n var lineBox = crosshair.line.bbox();\n var horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n };\n\n return CrosshairTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(CrosshairTooltip, {\n padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar Crosshair = (function (ChartElement) {\n function Crosshair(chartService, axis, options) {\n ChartElement.call(this, options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n var tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n }\n\n if ( ChartElement ) Crosshair.__proto__ = ChartElement;\n Crosshair.prototype = Object.create( ChartElement && ChartElement.prototype );\n Crosshair.prototype.constructor = Crosshair;\n\n Crosshair.prototype.showAt = function showAt (point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n };\n\n Crosshair.prototype.hide = function hide () {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n };\n\n Crosshair.prototype.moveLine = function moveLine () {\n var ref = this;\n var axis = ref.axis;\n var point = ref.point;\n var vertical = axis.options.vertical;\n var box = this.getBox();\n var dim = vertical ? Y : X;\n var lineStart = new geom.Point(box.x1, box.y1);\n var lineEnd;\n\n if (vertical) {\n lineEnd = new geom.Point(box.x2, box.y1);\n } else {\n lineEnd = new geom.Point(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n var slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n };\n\n Crosshair.prototype.getBox = function getBox () {\n var axis = this.axis;\n var axes = axis.pane.axes;\n var length = axes.length;\n var vertical = axis.options.vertical;\n var box = axis.lineBox().clone();\n var dim = vertical ? X : Y;\n var axisLineBox;\n\n for (var i = 0; i < length; i++) {\n var currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n };\n\n Crosshair.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n this.line = new draw.Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n };\n\n Crosshair.prototype.destroy = function destroy () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n ChartElement.prototype.destroy.call(this);\n };\n\n return Crosshair;\n}(ChartElement));\n\nsetDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nvar ChartContainer = (function (ChartElement) {\n function ChartContainer(options, pane) {\n ChartElement.call(this, options);\n this.pane = pane;\n }\n\n if ( ChartElement ) ChartContainer.__proto__ = ChartElement;\n ChartContainer.prototype = Object.create( ChartElement && ChartElement.prototype );\n ChartContainer.prototype.constructor = ChartContainer;\n\n ChartContainer.prototype.shouldClip = function shouldClip () {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n };\n\n ChartContainer.prototype._clipBox = function _clipBox () {\n return this.pane.chartsBox();\n };\n\n ChartContainer.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n var clipBox = this.clipBox = this._clipBox();\n var clipRect = clipBox.toRect();\n var clipPath = draw.Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n };\n\n ChartContainer.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n ChartContainer.prototype.unclipLabels = function unclipLabels () {\n var ref = this;\n var charts = ref.children;\n var clipBox = ref.clipBox;\n\n for (var i = 0; i < charts.length; i++) {\n var points = charts[i].points || {};\n var length = points.length;\n\n for (var j = 0; j < length; j++) {\n var point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n var label = point.label;\n var note = point.note;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n };\n\n ChartContainer.prototype.destroy = function destroy () {\n ChartElement.prototype.destroy.call(this);\n\n delete this.parent;\n };\n\n return ChartContainer;\n}(ChartElement));\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nvar Pane = (function (BoxElement) {\n function Pane(options) {\n BoxElement.call(this, options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n }\n\n if ( BoxElement ) Pane.__proto__ = BoxElement;\n Pane.prototype = Object.create( BoxElement && BoxElement.prototype );\n Pane.prototype.constructor = Pane;\n\n Pane.prototype.createTitle = function createTitle () {\n var titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n if (this.title) {\n this.append(this.title);\n }\n };\n\n Pane.prototype.appendAxis = function appendAxis (axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n };\n\n Pane.prototype.appendAxisAt = function appendAxisAt (axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n };\n\n Pane.prototype.appendChart = function appendChart (chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n };\n\n Pane.prototype.empty = function empty () {\n var this$1 = this;\n\n var plotArea = this.parent;\n\n if (plotArea) {\n for (var i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this$1.axes[i]);\n }\n\n for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n plotArea.removeChart(this$1.charts[i$1]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n };\n\n Pane.prototype.reflow = function reflow (targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n var content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n BoxElement.prototype.reflow.call(this, targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n };\n\n Pane.prototype.visualStyle = function visualStyle () {\n var style = BoxElement.prototype.visualStyle.call(this);\n style.zIndex = -10;\n\n return style;\n };\n\n Pane.prototype.renderComplete = function renderComplete () {\n if (this.options.visible) {\n this.createGridLines();\n }\n };\n\n Pane.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n Pane.prototype.clipRoot = function clipRoot () {\n return this;\n };\n\n Pane.prototype.createGridLines = function createGridLines () {\n var axes = this.axes;\n var allAxes = axes.concat(this.parent.axes);\n var vGridLines = [];\n var hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var vertical = axis.options.vertical;\n var gridLines = vertical ? vGridLines : hGridLines;\n for (var j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n var altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n };\n\n Pane.prototype.refresh = function refresh () {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n };\n\n Pane.prototype.chartsBox = function chartsBox () {\n var axes = this.axes;\n var length = axes.length;\n var chartsBox = new Box();\n\n for (var idx = 0; idx < length; idx++) {\n var axis = axes[idx];\n var axisValueField = axis.options.vertical ? Y : X;\n var lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n var allAxes = this.parent.axes;\n var length$1 = allAxes.length;\n\n for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n var axis$1 = allAxes[idx$1];\n if (!axis$1.options.vertical) {\n var lineBox$1 = axis$1.lineBox();\n chartsBox.x1 = lineBox$1.x1;\n chartsBox.x2 = lineBox$1.x2;\n }\n }\n }\n return chartsBox;\n };\n\n Pane.prototype.clipBox = function clipBox () {\n return this.chartContainer.clipBox;\n };\n\n Pane.prototype.notifyRender = function notifyRender () {\n var service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n };\n\n return Pane;\n}(BoxElement));\n\nvar ID = 1;\n\nfunction paneID() {\n return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n});\n\nexport default Pane;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\nimport SeriesBinder from '../series-binder';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END, INHERIT } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString,\n limitValue, round, setDefaultOptions, last, cycleIndex } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nvar visiblePoint = function (point) { return point.options.visible !== false; };\n\nvar PlotAreaBase = (function (ChartElement) {\n function PlotAreaBase(series, options, chartService) {\n ChartElement.call(this, options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.data = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n this.originalSeries = series;\n this._bindCache = new WeakMap();\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n }\n\n if ( ChartElement ) PlotAreaBase.__proto__ = ChartElement;\n PlotAreaBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n PlotAreaBase.prototype.constructor = PlotAreaBase;\n\n PlotAreaBase.prototype.initFields = function initFields () { };\n\n PlotAreaBase.prototype.initSeries = function initSeries () {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n };\n\n PlotAreaBase.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n var cached = this._bindCache.get(series);\n if (!cached) {\n cached = [];\n this._bindCache.set(series, cached);\n }\n\n var data = cached[pointIx];\n if (!data) {\n data = cached[pointIx] = SeriesBinder.current.bindPoint(series, pointIx, item);\n }\n\n return data;\n };\n\n PlotAreaBase.prototype.createPanes = function createPanes () {\n var this$1 = this;\n\n var titleOptions = this.options.title || {};\n var paneDefaults = this.options.paneDefaults;\n var paneOptions = this.options.panes || [];\n var panesLength = Math.max(paneOptions.length, 1);\n var panes = [];\n\n var defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (var i = 0; i < panesLength; i++) {\n var options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n var currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this$1.append(currentPane);\n }\n\n this.panes = panes;\n };\n\n PlotAreaBase.prototype.crosshairOptions = function crosshairOptions (axis) {\n return axis.options.crosshair;\n };\n\n PlotAreaBase.prototype.createCrosshairs = function createCrosshairs (panes) {\n var this$1 = this;\n if ( panes === void 0 ) panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n for (var j = 0; j < pane.axes.length; j++) {\n var axis = pane.axes[j];\n var options = this$1.crosshairOptions(axis);\n if (options && options.visible) {\n var currentCrosshair = new Crosshair(this$1.chartService, axis, options);\n\n this$1.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n };\n\n PlotAreaBase.prototype.removeCrosshairs = function removeCrosshairs (pane) {\n var crosshairs = this.crosshairs;\n var axes = pane.axes;\n\n for (var i = crosshairs.length - 1; i >= 0; i--) {\n for (var j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n };\n\n PlotAreaBase.prototype.hideCrosshairs = function hideCrosshairs () {\n var crosshairs = this.crosshairs;\n for (var idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n };\n\n PlotAreaBase.prototype.findPane = function findPane (name) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n };\n\n PlotAreaBase.prototype.findPointPane = function findPointPane (point) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n };\n\n PlotAreaBase.prototype.appendAxis = function appendAxis (axis) {\n var pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n };\n\n PlotAreaBase.prototype.removeAxis = function removeAxis (axisToRemove) {\n var this$1 = this;\n\n var filteredAxes = [];\n\n for (var i = 0; i < this.axes.length; i++) {\n var axis = this$1.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n };\n\n PlotAreaBase.prototype.appendChart = function appendChart (chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n };\n\n PlotAreaBase.prototype.removeChart = function removeChart (chartToRemove) {\n var this$1 = this;\n\n var filteredCharts = [];\n\n for (var i = 0; i < this.charts.length; i++) {\n var chart = this$1.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n };\n\n PlotAreaBase.prototype.addToLegend = function addToLegend (series) {\n var count = series.length;\n var legend = this.options.legend;\n var labels = legend.labels || {};\n var inactiveItems = legend.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n var data = [];\n\n for (var i = 0; i < count; i++) {\n var currentSeries = series[i];\n var seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n var text = currentSeries.name;\n var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n var defaults = currentSeries._defaults;\n var color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var itemLabelOptions = (void 0), markerColor = (void 0);\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.data, data);\n };\n\n PlotAreaBase.prototype.groupAxes = function groupAxes (panes) {\n var xAxes = [];\n var yAxes = [];\n\n for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n var paneAxes = panes[paneIx].axes;\n for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n var axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n };\n\n PlotAreaBase.prototype.groupSeriesByPane = function groupSeriesByPane () {\n var this$1 = this;\n\n var series = this.series;\n var seriesByPane = {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var pane = this$1.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n };\n\n PlotAreaBase.prototype.filterVisibleSeries = function filterVisibleSeries (series) {\n var result = [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.reflow = function reflow (targetBox) {\n var options = this.options.plotArea;\n var panes = this.panes;\n var margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n };\n\n PlotAreaBase.prototype.redraw = function redraw (panes) {\n var this$1 = this;\n\n var panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n var root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (var i = 0; i < panesArray.length; i++) {\n this$1.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this._bindCache = new WeakMap();\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n panesArray[i$1].refresh();\n }\n };\n\n PlotAreaBase.prototype.axisCrossingValues = function axisCrossingValues (axis, crossingAxes) {\n var options = axis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n var valuesToAdd = crossingAxes.length - crossingValues.length;\n var defaultValue = crossingValues[0] || 0;\n\n for (var i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n };\n\n PlotAreaBase.prototype.alignAxisTo = function alignAxisTo (axis, targetAxis, crossingValue, targetCrossingValue) {\n var slot = axis.getSlot(crossingValue, crossingValue, true);\n var slotEdge = axis.options.reverse ? 2 : 1;\n var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n var targetEdge = targetAxis.options.reverse ? 2 : 1;\n var axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n };\n\n PlotAreaBase.prototype.alignAxes = function alignAxes (xAxes, yAxes) {\n var this$1 = this;\n\n var xAnchor = xAxes[0];\n var yAnchor = yAxes[0];\n var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n var leftAnchors = {};\n var rightAnchors = {};\n var topAnchors = {};\n var bottomAnchors = {};\n\n for (var i = 0; i < yAxes.length; i++) {\n var axis = yAxes[i];\n var pane = axis.pane;\n var paneId = pane.id;\n var visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n var anchor = paneAnchor(xAxes, pane) || xAnchor;\n var anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this$1.axisCrossingValues(anchor, yAxes);\n }\n\n this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n // Locate pane anchor, if any, and align the axis to it\n var paneYAnchor = paneAnchor(yAxes, pane) || yAnchor;\n if (paneYAnchor !== axis) {\n axis.alignTo(paneYAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n var axis$1 = xAxes[i$1];\n var pane$1 = axis$1.pane;\n var paneId$1 = pane$1.id;\n var visible$1 = axis$1.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n var anchorCrossings$1 = yAnchorCrossings;\n if (anchor$1 !== yAnchor) {\n anchorCrossings$1 = this$1.axisCrossingValues(anchor$1, xAxes);\n }\n\n this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n if (axis$1.options._overlap) {\n continue;\n }\n\n if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis$1._mirrored) {\n axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n axis$1._mirrored = true;\n }\n this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(topAnchors[paneId$1].box, TOP)\n .translate(0, -axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n topAnchors[paneId$1] = axis$1;\n }\n }\n\n if (round(axis$1.lineBox().y2, COORD_PRECISION) === round(anchor$1.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n .translate(0, axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n bottomAnchors[paneId$1] = axis$1;\n }\n }\n\n if (i$1 !== 0) {\n axis$1.alignTo(xAnchor);\n axis$1.reflow(axis$1.box);\n }\n }\n };\n\n PlotAreaBase.prototype.shrinkAxisWidth = function shrinkAxisWidth (panes) {\n var axes = this.groupAxes(panes).any;\n var axisBox = axisGroupBox(axes);\n var overflowX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis = axes[i$1];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n };\n\n PlotAreaBase.prototype.shrinkAxisHeight = function shrinkAxisHeight (panes) {\n var shrinked;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var axes = currentPane.axes;\n var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (var j = 0; j < axes.length; j++) {\n var currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n };\n\n PlotAreaBase.prototype.fitAxes = function fitAxes (panes) {\n var axes = this.groupAxes(panes).any;\n var offsetX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var paneAxes = currentPane.axes;\n var paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n var axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n for (var j = 0; j < paneAxes.length; j++) {\n var currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis$1 = axes[i$1];\n\n currentAxis$1.reflow(\n currentAxis$1.box.translate(offsetX, 0)\n );\n }\n };\n\n PlotAreaBase.prototype.reflowAxes = function reflowAxes (panes) {\n var this$1 = this;\n\n var axes = this.groupAxes(panes);\n\n for (var i = 0; i < panes.length; i++) {\n this$1.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n };\n\n PlotAreaBase.prototype.autoRotateAxisLabels = function autoRotateAxisLabels (groupedAxes) {\n var this$1 = this;\n\n var ref = this;\n var panes = ref.panes;\n var axes = allPaneAxes(panes);\n var rotated;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n this$1.reflowPaneAxes(panes[idx$1]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowPaneAxes = function reflowPaneAxes (pane) {\n var axes = pane.axes;\n var length = axes.length;\n\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowCharts = function reflowCharts (panes) {\n var charts = this.charts;\n var count = charts.length;\n var box = this.box;\n\n for (var i = 0; i < count; i++) {\n var chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowPanes = function reflowPanes () {\n var ref = this;\n var box = ref.box;\n var panes = ref.panes;\n var panesLength = panes.length;\n var remainingHeight = box.height();\n var autoHeightPanes = 0;\n var top = box.y1;\n\n for (var i = 0; i < panesLength; i++) {\n var currentPane = panes[i];\n var height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n var percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (var i$1 = 0; i$1 < panesLength; i$1++) {\n var currentPane$1 = panes[i$1];\n\n if (!currentPane$1.options.height) {\n currentPane$1.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (var i$2 = 0; i$2 < panesLength; i$2++) {\n var currentPane$2 = panes[i$2];\n var paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane$2.reflow(paneBox);\n\n top += currentPane$2.options.height;\n }\n };\n\n PlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n var axes = this.axes;\n var axesCount = axes.length;\n var box;\n\n for (var i = 0; i < axesCount; i++) {\n var axisA = axes[i];\n\n for (var j = 0; j < axesCount; j++) {\n var axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n };\n\n PlotAreaBase.prototype.chartsBoxes = function chartsBoxes () {\n var panes = this.panes;\n var boxes = [];\n\n for (var idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n };\n\n PlotAreaBase.prototype.addBackgroundPaths = function addBackgroundPaths (multipath) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n }\n };\n\n PlotAreaBase.prototype.backgroundContainsPoint = function backgroundContainsPoint (point) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n };\n\n PlotAreaBase.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options.plotArea;\n var opacity = options.opacity;\n var background = options.background;\n var border = options.border; if ( border === void 0 ) border = {};\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n var bg = this._bgVisual = new draw.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n };\n\n PlotAreaBase.prototype.pointsByCategoryIndex = function pointsByCategoryIndex (categoryIndex) {\n var charts = this.charts;\n var result = [];\n\n if (categoryIndex !== null) {\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.pointsBySeriesIndex = function pointsBySeriesIndex (seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n };\n\n PlotAreaBase.prototype.pointsByPointIndex = function pointsByPointIndex (pointIndex) {\n return this.filterPoints(function(point) {\n return point.getIndex() === pointIndex;\n });\n };\n\n PlotAreaBase.prototype.pointsBySeriesName = function pointsBySeriesName (name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n };\n\n PlotAreaBase.prototype.filterPoints = function filterPoints (callback) {\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.findPoint = function findPoint (callback) {\n var charts = this.charts;\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n };\n\n PlotAreaBase.prototype.paneByPoint = function paneByPoint (point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n };\n\n PlotAreaBase.prototype.detachLabels = function detachLabels () {\n var axes = this.groupAxes(this.panes);\n var xAxes = axes.x;\n var yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n };\n\n PlotAreaBase.prototype.detachAxisGroupLabels = function detachAxisGroupLabels (axes, crossingAxes) {\n var this$1 = this;\n\n var labelAxisCount = 0;\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var pane = axis.pane;\n var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n var axisIndex = i + labelAxisCount;\n var labelAxis = this$1.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n var pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n };\n\n PlotAreaBase.prototype.createLabelAxis = function createLabelAxis (axis, axisIndex, anchor) {\n var labelOptions = axis.options.labels;\n var position = labelOptions.position;\n var onAxis = position !== END && position !== START;\n var visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n var allAxes = this.groupAxes(this.panes);\n var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n var end = position === END;\n var range = anchor.range();\n var edge = end ? range.max : range.min;\n var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n var labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n };\n\n PlotAreaBase.prototype.isTrendline = function isTrendline (series) {\n return series && inArray(series.type, TRENDLINE_SERIES);\n };\n\n PlotAreaBase.prototype.trendlineFactory = function trendlineFactory () { /* abstract */ };\n\n PlotAreaBase.prototype.createTrendlineSeries = function createTrendlineSeries () {\n var this$1 = this;\n\n var modifiedSeries = [];\n\n this.series = this.series.map(function (series) {\n if (!this$1.isTrendline(series)) {\n return series;\n }\n\n var forSeries = this$1.seriesByName(series.for);\n if (!forSeries) {\n throw new Error('Invalid Configuration: Unable to locate linked series ' +\n \"\\\"\" + (series.for) + \"\\\" for trendline \\\"\" + (series.name) + \"\\\".\");\n }\n\n var valueFields = SeriesBinder.current.valueFields(forSeries);\n var field = last(valueFields); // Use the last field for multi-field series\n\n var trendlineSeries = this$1.trendlineFactory(Object.assign({}, {field: field}, series), forSeries);\n if (trendlineSeries) {\n if (forSeries.visible === false) {\n trendlineSeries.visible = false;\n }\n\n if (trendlineSeries.color === INHERIT) {\n trendlineSeries.color = forSeries.color;\n }\n\n modifiedSeries.push(trendlineSeries);\n }\n\n return trendlineSeries;\n }).filter(function (series) { return series !== null; });\n\n return modifiedSeries;\n };\n\n PlotAreaBase.prototype.seriesByName = function seriesByName (name) {\n return this.series.find(function (series) { return series.name === name; });\n };\n\n PlotAreaBase.prototype.getFirstPoint = function getFirstPoint () {\n var this$1 = this;\n\n for (var i = 0; i < this.series.length; i++) {\n var points = this$1.pointsBySeriesIndex(i);\n var point = points.find(visiblePoint);\n if (point) {\n return point;\n }\n }\n };\n\n PlotAreaBase.prototype.getPointBelow = function getPointBelow (point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n };\n\n PlotAreaBase.prototype.getPointAbove = function getPointAbove (point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n };\n\n PlotAreaBase.prototype.getPointToTheRight = function getPointToTheRight (point) {\n return this._getNextPoint(point, this._pointsByHorizontal, 1);\n };\n\n PlotAreaBase.prototype.getPointToTheLeft = function getPointToTheLeft (point) {\n return this._getNextPoint(point, this._pointsByHorizontal, -1);\n };\n\n PlotAreaBase.prototype._getNextPoint = function _getNextPoint (point, getPointsFunc, increment) {\n var this$1 = this;\n\n var points = getPointsFunc.call(this, point).filter(visiblePoint);\n var pointIndex = points.indexOf(point);\n var nextIndex = pointIndex + increment;\n var loopPoints = function (direction) {\n // loop over to last non-empty collection\n var result;\n var offset = 0;\n do {\n offset += direction;\n result = getPointsFunc.call(this$1, point, offset).filter(visiblePoint);\n } while (result.length === 0);\n\n return result;\n };\n\n if (nextIndex < 0) {\n points = loopPoints(-1);\n\n return points.at(-1);\n } else if (nextIndex >= points.length) {\n points = loopPoints(1);\n\n return points.at(0);\n }\n\n return points[nextIndex];\n };\n\n PlotAreaBase.prototype._pointsByVertical = function _pointsByVertical (basePoint) {\n return this.pointsByPointIndex(basePoint.getIndex());\n };\n\n PlotAreaBase.prototype._pointsByHorizontal = function _pointsByHorizontal (basePoint, offset) {\n if ( offset === void 0 ) offset = 0;\n\n var index = cycleIndex(basePoint.series.index + offset, this.series.length);\n return this.pointsBySeriesIndex(index);\n };\n\n return PlotAreaBase;\n}(ChartElement));\n\nfunction isSingleAxis(axis) {\n return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n );\n}\n\nfunction axisGroupBox(axes) {\n var length = axes.length;\n var box;\n\n for (var i = 0; i < length; i++) {\n var axis = axes[i];\n var visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n for (var i = 0; i < axes.length; i++) {\n var anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n}\n\nfunction isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nvar allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\nsetDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nvar PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nvar SeriesAggregator = (function (Class) {\n function SeriesAggregator(series, binder, defaultAggregates) {\n Class.call(this);\n\n var canonicalFields = binder.canonicalFields(series);\n var valueFields = binder.valueFields(series);\n var sourceFields = binder.sourceFields(series, canonicalFields);\n var seriesFields = this._seriesFields = [];\n var defaults = defaultAggregates.query(series.type);\n var rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (var i = 0; i < canonicalFields.length; i++) {\n var field = canonicalFields[i];\n var fieldAggregate = (void 0);\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n }\n\n if ( Class ) SeriesAggregator.__proto__ = Class;\n SeriesAggregator.prototype = Object.create( Class && Class.prototype );\n SeriesAggregator.prototype.constructor = SeriesAggregator;\n\n SeriesAggregator.prototype.aggregatePoints = function aggregatePoints (srcPoints, group) {\n var this$1 = this;\n\n var ref = this;\n var series = ref._series;\n var seriesFields = ref._seriesFields;\n var data = this._bindPoints(srcPoints || []);\n var firstDataItem = data.dataItems[0];\n var result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n var fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (var i = 0; i < seriesFields.length; i++) {\n var field = seriesFields[i];\n var srcValues = this$1._bindField(data.values, field.canonicalName);\n var value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n };\n\n SeriesAggregator.prototype._bindPoints = function _bindPoints (points) {\n var ref = this;\n var binder = ref._binder;\n var series = ref._series;\n var values = [];\n var dataItems = [];\n\n for (var i = 0; i < points.length; i++) {\n var pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n };\n\n SeriesAggregator.prototype._bindField = function _bindField (data, field) {\n var values = [];\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var item = data[i];\n var valueFields = item.valueFields;\n var value = (void 0);\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n };\n\n return SeriesAggregator;\n}(Class));\n\nfunction setValue(fieldName, target, value) {\n var parentObj = target;\n var field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n var parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nvar DefaultAggregates = (function (Class) {\n function DefaultAggregates() {\n Class.call(this);\n\n this._defaults = {};\n }\n\n if ( Class ) DefaultAggregates.__proto__ = Class;\n DefaultAggregates.prototype = Object.create( Class && Class.prototype );\n DefaultAggregates.prototype.constructor = DefaultAggregates;\n\n DefaultAggregates.prototype.register = function register (seriesTypes, aggregates) {\n var this$1 = this;\n\n for (var i = 0; i < seriesTypes.length; i++) {\n this$1._defaults[seriesTypes[i]] = aggregates;\n }\n };\n\n DefaultAggregates.prototype.query = function query (seriesType) {\n return this._defaults[seriesType];\n };\n\n return DefaultAggregates;\n}(Class));\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\n\nimport { deepExtend } from '../../common';\n\nvar RangeBar = (function (Bar) {\n function RangeBar () {\n Bar.apply(this, arguments);\n }\n\n if ( Bar ) RangeBar.__proto__ = Bar;\n RangeBar.prototype = Object.create( Bar && Bar.prototype );\n RangeBar.prototype.constructor = RangeBar;\n\n RangeBar.prototype.createLabel = function createLabel () {\n var labels = this.options.labels;\n var fromOptions = deepExtend({}, labels, labels.from);\n var toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this.createLabelElement(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this.createLabelElement(toOptions);\n this.append(this.labelTo);\n }\n };\n\n RangeBar.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var ref = this;\n var labelFrom = ref.labelFrom;\n var labelTo = ref.labelTo;\n var value = ref.value;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n };\n\n return RangeBar;\n}(Bar));\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nvar RangeBarChart = (function (BarChart) {\n function RangeBarChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) RangeBarChart.__proto__ = BarChart;\n RangeBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n RangeBarChart.prototype.constructor = RangeBarChart;\n\n RangeBarChart.prototype.pointType = function pointType () {\n return RangeBar;\n };\n\n RangeBarChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields;\n };\n\n RangeBarChart.prototype.formatPointValue = function formatPointValue (point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n };\n\n RangeBarChart.prototype.plotRange = function plotRange (point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n };\n\n RangeBarChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var from = value.from;\n var to = value.to;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n };\n\n RangeBarChart.prototype.aboveAxis = function aboveAxis (point) {\n var value = point.value;\n return value.from < value.to;\n };\n\n return RangeBarChart;\n}(BarChart));\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nvar RangeLinePoint = (function (LinePoint) {\n function RangeLinePoint () {\n LinePoint.apply(this, arguments);\n }\n\n if ( LinePoint ) RangeLinePoint.__proto__ = LinePoint;\n RangeLinePoint.prototype = Object.create( LinePoint && LinePoint.prototype );\n RangeLinePoint.prototype.constructor = RangeLinePoint;\n\n RangeLinePoint.prototype.aliasFor = function aliasFor () {\n return this.parent;\n };\n\n return RangeLinePoint;\n}(LinePoint));\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW, CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\nimport guid from '../../core/utils/guid';\n\nvar AUTO = 'auto';\nvar DEFAULT_FROM_FORMAT = '{0}';\nvar DEFAULT_TO_FORMAT = '{1}';\n\nvar RangeAreaPoint = (function (ChartElement) {\n function RangeAreaPoint(value, options) {\n ChartElement.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this._id = guid();\n this.initLabelsFormat();\n }\n\n if ( ChartElement ) RangeAreaPoint.__proto__ = ChartElement;\n RangeAreaPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n RangeAreaPoint.prototype.constructor = RangeAreaPoint;\n\n RangeAreaPoint.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n var value = this.value;\n\n var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n };\n\n RangeAreaPoint.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var fromBox = targetBox.from;\n var toBox = targetBox.to;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n };\n\n RangeAreaPoint.prototype.createHighlight = function createHighlight () {\n var group = new draw.Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n };\n\n RangeAreaPoint.prototype.highlightVisual = function highlightVisual () {\n return this.visual;\n };\n\n RangeAreaPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n };\n\n RangeAreaPoint.prototype.createFocusHighlight = function createFocusHighlight () {\n var group = new draw.Group();\n group.append(this.fromPoint.createFocusHighlight());\n group.append(this.toPoint.createFocusHighlight());\n\n return group;\n };\n\n RangeAreaPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n var box = this.box;\n var center = box.center();\n var horizontalAlign = LEFT;\n var x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n };\n\n RangeAreaPoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n RangeAreaPoint.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n RangeAreaPoint.prototype.unclipElements = function unclipElements () {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n };\n\n RangeAreaPoint.prototype.initLabelsFormat = function initLabelsFormat () {\n var labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = Object.assign({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = Object.assign({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n };\n\n RangeAreaPoint.prototype.positionLabels = function positionLabels (fromBox, toBox) {\n var ref = this.options;\n var labels = ref.labels;\n var vertical = ref.vertical;\n\n if (labels.position === AUTO) {\n var fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n };\n\n RangeAreaPoint.prototype.copyFields = function copyFields (point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n };\n\n RangeAreaPoint.prototype.focusVisual = function focusVisual () {\n this.fromPoint.focusVisual();\n };\n\n RangeAreaPoint.prototype.clearFocusFromVisual = function clearFocusFromVisual () {\n this.toPoint.clearFocusFromVisual();\n };\n\n RangeAreaPoint.prototype.getIndex = function getIndex () {\n return this.categoryIx;\n };\n\n return RangeAreaPoint;\n}(ChartElement));\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar RangeAreaSegment = (function (AreaSegment) {\n function RangeAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) RangeAreaSegment.__proto__ = AreaSegment;\n RangeAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n RangeAreaSegment.prototype.constructor = RangeAreaSegment;\n\n RangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n };\n\n RangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n };\n\n RangeAreaSegment.prototype.createStroke = function createStroke (style) {\n var toPath = new draw.Path(style);\n var fromPath = new draw.Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n };\n\n RangeAreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n return true;\n };\n\n RangeAreaSegment.prototype.fromPoints = function fromPoints () {\n return this.linePoints.map(function (point) { return point.fromPoint; });\n };\n\n RangeAreaSegment.prototype.toPoints = function toPoints () {\n return this.linePoints.map(function (point) { return point.toPoint; });\n };\n\n return RangeAreaSegment;\n}(AreaSegment));\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nvar SplineRangeAreaSegment = (function (RangeAreaSegment) {\n function SplineRangeAreaSegment () {\n RangeAreaSegment.apply(this, arguments);\n }\n\n if ( RangeAreaSegment ) SplineRangeAreaSegment.__proto__ = RangeAreaSegment;\n SplineRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n SplineRangeAreaSegment.prototype.constructor = SplineRangeAreaSegment;\n\n SplineRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.createCurveSegments(this.toPoints());\n };\n\n SplineRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n };\n\n SplineRangeAreaSegment.prototype.createCurveSegments = function createCurveSegments (points) {\n var curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n };\n\n return SplineRangeAreaSegment;\n}(RangeAreaSegment));\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nvar StepRangeAreaSegment = (function (RangeAreaSegment) {\n function StepRangeAreaSegment () {\n RangeAreaSegment.apply(this, arguments);\n }\n\n if ( RangeAreaSegment ) StepRangeAreaSegment.__proto__ = RangeAreaSegment;\n StepRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n StepRangeAreaSegment.prototype.constructor = StepRangeAreaSegment;\n\n StepRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n };\n\n StepRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n };\n\n return StepRangeAreaSegment;\n}(RangeAreaSegment));\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nvar RangeAreaChart = (function (CategoricalChart) {\n function RangeAreaChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) RangeAreaChart.__proto__ = CategoricalChart;\n RangeAreaChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n RangeAreaChart.prototype.constructor = RangeAreaChart;\n\n RangeAreaChart.prototype.render = function render () {\n CategoricalChart.prototype.render.call(this);\n\n this.renderSegments();\n };\n\n RangeAreaChart.prototype.pointType = function pointType () {\n return RangeAreaPoint;\n };\n\n RangeAreaChart.prototype.createPoint = function createPoint (data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n RangeAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n };\n\n RangeAreaChart.prototype.plotRange = function plotRange (point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n };\n\n RangeAreaChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n };\n\n RangeAreaChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var from = valueSlot.from;\n var to = valueSlot.to;\n var fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n };\n\n RangeAreaChart.prototype.addValue = function addValue (data, fields) {\n var valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n CategoricalChart.prototype.addValue.call(this, data, fields);\n };\n\n RangeAreaChart.prototype.updateRange = function updateRange (value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n var from = value.from;\n var to = value.to;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n };\n\n RangeAreaChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n };\n\n RangeAreaChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n };\n\n return RangeAreaChart;\n}(CategoricalChart));\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nvar OHLCPoint = (function (Candlestick) {\n function OHLCPoint () {\n Candlestick.apply(this, arguments);\n }\n\n if ( Candlestick ) OHLCPoint.__proto__ = Candlestick;\n OHLCPoint.prototype = Object.create( Candlestick && Candlestick.prototype );\n OHLCPoint.prototype.constructor = OHLCPoint;\n\n OHLCPoint.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var oPoints = [];\n var cPoints = [];\n var lhPoints = [];\n\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n var oSlot = valueAxis.getSlot(value.open, value.open);\n var cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n var mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n };\n\n OHLCPoint.prototype.createBody = function createBody () {};\n\n return OHLCPoint;\n}(Candlestick));\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nvar OHLCChart = (function (CandlestickChart) {\n function OHLCChart () {\n CandlestickChart.apply(this, arguments);\n }\n\n if ( CandlestickChart ) OHLCChart.__proto__ = CandlestickChart;\n OHLCChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n OHLCChart.prototype.constructor = OHLCChart;\n\n OHLCChart.prototype.pointType = function pointType () {\n return OHLCPoint;\n };\n\n return OHLCChart;\n}(CandlestickChart));\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nvar WaterfallSegment = (function (ChartElement) {\n function WaterfallSegment(from, to, series) {\n ChartElement.call(this);\n\n this.from = from;\n this.to = to;\n this.series = series;\n }\n\n if ( ChartElement ) WaterfallSegment.__proto__ = ChartElement;\n WaterfallSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n WaterfallSegment.prototype.constructor = WaterfallSegment;\n\n WaterfallSegment.prototype.linePoints = function linePoints () {\n var from = this.from;\n var ref = this;\n var fromBox = ref.from.box;\n var toBox = ref.to.box;\n var points = [];\n\n if (from.isVertical) {\n var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n };\n\n WaterfallSegment.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var line = this.series.line || {};\n\n var path = draw.Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n };\n\n return WaterfallSegment;\n}(ChartElement));\n\nsetDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nvar WaterfallChart = (function (BarChart) {\n function WaterfallChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) WaterfallChart.__proto__ = BarChart;\n WaterfallChart.prototype = Object.create( BarChart && BarChart.prototype );\n WaterfallChart.prototype.constructor = WaterfallChart;\n\n WaterfallChart.prototype.render = function render () {\n BarChart.prototype.render.call(this);\n this.createSegments();\n };\n\n WaterfallChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var series = this.options.series;\n var totalCategories = categoriesCount(series);\n var isVertical = !this.options.invertAxes;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var total = 0;\n var runningTotal = 0;\n\n for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n var value = data.valueFields.value;\n var summary = data.fields.summary;\n var from = total;\n var to = (void 0);\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this$1.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n };\n\n WaterfallChart.prototype.updateRange = function updateRange (value, fields) {\n BarChart.prototype.updateRange.call(this, { value: fields.to }, fields);\n };\n\n WaterfallChart.prototype.aboveAxis = function aboveAxis (point) {\n return point.value >= 0;\n };\n\n WaterfallChart.prototype.plotRange = function plotRange (point) {\n return [ point.from, point.to ];\n };\n\n WaterfallChart.prototype.createSegments = function createSegments () {\n var this$1 = this;\n\n var series = this.options.series;\n var seriesPoints = this.seriesPoints;\n var segments = this.segments = [];\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var points = seriesPoints[seriesIx];\n\n if (points) {\n var prevPoint = (void 0);\n for (var pointIx = 0; pointIx < points.length; pointIx++) {\n var point = points[pointIx];\n\n if (point && prevPoint) {\n var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this$1.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n };\n\n return WaterfallChart;\n}(BarChart));\n\nexport default WaterfallChart;","function trendlineFactory(registry, type, context) {\n var impl = registry[String(type)];\n if (impl) {\n return impl(context);\n }\n\n return null;\n}\n\nexport default trendlineFactory;\n","// Optimized version of calculatePolynomial for order = 1\nfunction calculateSlope(sourceValues, valueGetter) {\n var x = 0;\n var y = 0;\n var x2 = 0;\n var xy = 0;\n var count = 0;\n var slope, intercept;\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n\n count++;\n x += xValue;\n y += yValue;\n x2 += Math.pow(xValue, 2);\n xy += xValue * yValue;\n }\n }\n\n if (count > 0) {\n slope = (count * xy - x * y) / (count * x2 - Math.pow(x, 2));\n intercept = (y - slope * x) / count;\n }\n\n return { slope: slope, intercept: intercept, count: count, xMin: xMin, xMax: xMax };\n}\n\nexport default calculateSlope;\n","import { hasValue } from '../utils';\n\nvar checkAllPositive = function (sourceValues, fieldName) { return sourceValues.every(function (ref) {\n var valueFields = ref.valueFields;\n\n return !hasValue(valueFields[fieldName]) || valueFields[fieldName] > 0;\n }); };\n\nexport default checkAllPositive;\n","function getTrendlineData(valueMapper, categoryAxis) {\n var data = [];\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var range = {\n min: Math.floor(Math.max(currentRange.min - 1, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + 2, totalRange.max))\n };\n\n for (var i = range.min; i < range.max; i++) {\n var x = (i + 1);\n data[i] = {\n category: categoryAxis.categoryAt(i, true),\n value: valueMapper(x)\n };\n }\n\n return data;\n}\n\nexport default getTrendlineData;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\n\nfunction calculateMovingAverage(sourceValues, valueGetter, period) {\n var averagePoints = [];\n var values = [];\n var start = Math.max(MIN_MOVING_AVERAGE_PERIOD, period) - 1;\n\n var end = 0;\n var sum = 0;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(yValue) && yValue !== null) {\n values.push(yValue);\n sum += yValue;\n end = Math.max(i, end);\n } else {\n values.push(null);\n }\n\n if (i >= start) {\n var count = values.filter(function (value) { return value !== null; }).length;\n var lastValue = values.shift() || 0;\n\n if (count > 0) {\n var average = sum / count;\n averagePoints.push([xValue, average]);\n\n sum -= lastValue;\n continue;\n }\n }\n\n averagePoints.push([xValue, null]);\n }\n\n return averagePoints.slice(0, end + 1);\n}\n\nexport default calculateMovingAverage;\n","import { Matrix } from '../../common';\n\nvar MIN_ORDER = 1;\nvar MAX_ORDER = 6;\n\nfunction calculatePolynomial(sourceValues, valueGetter, order) {\n var k = Math.min(Math.max(order || MIN_ORDER, MIN_ORDER), MAX_ORDER) + 1;\n var X = new Matrix();\n var Y = new Matrix();\n var count = 0;\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n var valueMapper = function (x) { return x; };\n var coefficients = [];\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n count++;\n\n // Set Y value in matrix\n Y.set(i, 0, yValue);\n\n // Set indicator column to 1 for valid values\n X.set(i, 0, 1);\n X.set(i, 1, xValue);\n for (var pow = 2; pow <= k; pow++) {\n X.set(i, pow, Math.pow(X.get(i, 1), pow));\n }\n } else {\n // Set indicator column to 0 for missing values\n X.set(i, 0, 0);\n }\n }\n\n // Limit order to number of values.\n X.width = Math.min(k, count);\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n coefficients = linearRegression(X, Y);\n valueMapper = function (x) { return coefficients.reduce(function (y, a, n) { return y + a * Math.pow(x, n); }, 0); };\n }\n\n return {\n coefficients: coefficients,\n count: count,\n valueMapper: valueMapper,\n xMin: xMin,\n xMax: xMax\n };\n}\n\nfunction linearRegression(X, Y) {\n var Xt = X.transpose();\n var B = Xt.multiply(X).inverse().multiply(Xt).multiply(Y); // the last square estimate of the coefficients\n\n var coefficients = [];\n for (var i = 0; i < B.height; i++) {\n coefficients.push(B.get(i, 0));\n }\n\n // y_intercept and regression coefficients ('slopes')\n return coefficients;\n\n // It's possible to calculate statistics for the regression based on\n // the LINEST function implementation in kendo-spreadsheet-common/src/calc.js\n //\n // * The standard errors (of coefficients and y-intercept)\n // * The coefficient of determination (R^2)\n // * The standard error for the y estimate\n // * The F statistic\n // * The degrees of freedom\n // * The regression sum of squares (SSR)\n // * The residual sum of squares (SSE)\n}\n\nexport default calculatePolynomial;\n","import {\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n} from '../constants';\nimport exponentialTrendline from './exponential-trendline';\nimport linearTrendline from './linear-trendline';\nimport logarithmicTrendline from './logarithmic-trendline';\nimport movingAverageTrendline from './moving-average';\nimport polynomialTrendline from './polynomial-trendline';\nimport powerTrendline from './power-trendline';\n\nvar registry = {};\nregistry[TRENDLINE_EXPONENTIAL] = exponentialTrendline;\nregistry[TRENDLINE_LINEAR] = linearTrendline;\nregistry[TRENDLINE_LOGARITHMIC] = logarithmicTrendline;\nregistry[TRENDLINE_MOVING_AVERAGE] = movingAverageTrendline;\nregistry[TRENDLINE_POLYNOMIAL] = polynomialTrendline;\nregistry[TRENDLINE_POWER] = powerTrendline;\n\nexport default registry;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getTrendlineData from './get-trendline-data';\n\nfunction exponentialTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: Math.log(valueFields[fieldName]) });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n var a = Math.exp(intercept);\n var b = slope;\n\n return getTrendlineData(function (x) { return a * Math.exp(b * x); }, categoryAxis);\n }\n\n return null;\n}\n\nexport default exponentialTrendline;\n","import calculateSlope from './calculate-slope';\nimport getTrendlineData from './get-trendline-data';\n\nfunction linearTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n\n if (count > 0) {\n return getTrendlineData(function (x) { return slope * x + intercept; }, categoryAxis);\n }\n\n return null;\n}\n\nexport default linearTrendline;\n","import calculateSlope from './calculate-slope';\nimport getTrendlineData from './get-trendline-data';\n\nfunction logarithmicTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(categoryIx + 1), yValue: valueFields[fieldName] });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n var a = slope;\n var b = intercept;\n return getTrendlineData(function (x) { return a * Math.log(x) + b; }, categoryAxis);\n }\n\n return null;\n}\n\nexport default logarithmicTrendline;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport calculateMovingAverage from './calculate-moving-average';\n\nfunction movingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData(context);\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx, yValue: valueFields[fieldName] });\n; } };\n\nfunction calculatePoints(ref) {\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var totalRange = categoryAxis.totalRangeIndices();\n var currentRange = categoryAxis.currentRangeIndices();\n var range = {\n min: Math.floor(Math.max(currentRange.min - period, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + period + 2, totalRange.max))\n };\n\n return calculateMovingAverage(seriesValues(range), valueGetter(options.field), period);\n}\n\nfunction getData(context) {\n var categoryAxis = context.categoryAxis;\n var points = calculatePoints(context);\n var data = [];\n points.forEach(function (ref) {\n var categoryIx = ref[0];\n var value = ref[1];\n\n data[categoryIx] = {\n category: categoryAxis.categoryAt(categoryIx, true),\n value: value\n };\n });\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n}\n\nexport default movingAverageTrendline;\n","import getTrendlineData from './get-trendline-data';\nimport calculatePolynomial from './calculate-polynomial';\n\nfunction polynomialTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var order = (options.trendline || {}).order;\n var ref$1 = calculatePolynomial(seriesValues(), valueGetter(options.field), order);\n var count = ref$1.count;\n var valueMapper = ref$1.valueMapper;\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n\n return getTrendlineData(function (x) { return valueMapper(x); }, categoryAxis);\n }\n\n return null;\n}\n\nexport default polynomialTrendline;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getTrendlineData from './get-trendline-data';\n\nfunction powerTrendline(context) {\n var options = context.options;\n var categoryAxis = context.categoryAxis;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, categoryAxis: categoryAxis, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data: data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var categoryIx = ref.categoryIx;\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(categoryIx + 1), yValue: Math.log(valueFields[fieldName]) });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var categoryAxis = ref.categoryAxis;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n var a = Math.exp(intercept);\n var b = slope;\n\n return getTrendlineData(function (x) { return a * Math.pow(x, b); }, categoryAxis);\n }\n\n return null;\n}\n\nexport default powerTrendline;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport trendlineRegistry from '../trendlines/trendline-registry';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n isDateAxis, parseDateCategory, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES, RADAR_LINE, RADAR_AREA } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, deepExtend, defined, eventElement, grep, cycleIndex, hasOwnProperty } from '../../common';\n\nvar AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nvar OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nvar CategoricalPlotArea = (function (PlotAreaBase) {\n function CategoricalPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) CategoricalPlotArea.__proto__ = PlotAreaBase;\n CategoricalPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n CategoricalPlotArea.prototype.constructor = CategoricalPlotArea;\n\n CategoricalPlotArea.prototype.initFields = function initFields (series) {\n var this$1 = this;\n\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (var i = 0; i < series.length; i++) {\n var stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this$1.stack100 = true;\n break;\n }\n }\n }\n };\n\n CategoricalPlotArea.prototype.render = function render (panes) {\n if ( panes === void 0 ) panes = this.panes;\n\n this.series = [].concat( this.originalSeries );\n this.createCategoryAxes(panes);\n\n this.aggregateCategories(panes);\n this.createTrendlineSeries(panes);\n\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n };\n\n CategoricalPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n };\n\n CategoricalPlotArea.prototype.trendlineFactory = function trendlineFactory$1 (options, series) {\n var categoryAxis = this.seriesCategoryAxis(options);\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(trendlineRegistry, options.type, {\n options: options,\n categoryAxis: categoryAxis,\n seriesValues: seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.categoryAxis = series.categoryAxis;\n trendline.valueAxis = series.valueAxis;\n\n return this.filterSeries(trendline, categoryAxis);\n }\n\n return trendline;\n };\n\n CategoricalPlotArea.prototype.trendlineAggregateForecast = function trendlineAggregateForecast () {\n return this.series\n .map(function (series) { return (series.trendline || {}).forecast; })\n .filter(function (forecast) { return forecast !== undefined; })\n .reduce(function (result, forecast) { return ({\n before: Math.max(result.before, forecast.before || 0),\n after: Math.max(result.after, forecast.after || 0)\n }); }, { before: 0, after: 0 });\n };\n\n CategoricalPlotArea.prototype.seriesValues = function seriesValues (seriesIx, range) {\n var this$1 = this;\n\n var result = [];\n\n var series = this.srcSeries[seriesIx];\n var categoryAxis = this.seriesCategoryAxis(series);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n if (dateAxis) {\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n categoryAxis.options.dataItems = [];\n series = this.aggregateSeries(series, categoryAxis, categoryAxis.totalRangeIndices());\n }\n\n var min = range ? range.min : 0;\n var max = range ? range.max : series.data.length;\n for (var categoryIx = min; categoryIx < max; categoryIx++) {\n var data = this$1.bindPoint(series, categoryIx);\n result.push({ categoryIx: categoryIx, category: data.fields.category, valueFields: data.valueFields });\n }\n\n return result;\n };\n\n CategoricalPlotArea.prototype.createCharts = function createCharts (panes) {\n var this$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n\n var visibleSeries = this$1.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n var groups = this$1.groupSeriesByCategoryAxis(visibleSeries);\n for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n this$1.createChartGroup(groups[groupIx], pane);\n }\n }\n };\n\n CategoricalPlotArea.prototype.createChartGroup = function createChartGroup (series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n };\n\n CategoricalPlotArea.prototype.aggregateCategories = function aggregateCategories (panes) {\n var this$1 = this;\n\n var series = [].concat( this.series );\n var processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n\n if (!this$1.isTrendline(currentSeries)) {\n var categoryAxis = this$1.seriesCategoryAxis(currentSeries);\n var axisPane = this$1.findPane(categoryAxis.options.pane);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this$1.aggregateSeries(currentSeries, categoryAxis, categoryAxis.currentRangeIndices());\n } else {\n currentSeries = this$1.filterSeries(currentSeries, categoryAxis);\n }\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n };\n\n CategoricalPlotArea.prototype.filterSeries = function filterSeries (series, categoryAxis) {\n var dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(defined(categoryAxis.options.min) || defined(categoryAxis.options.max))) {\n return series;\n }\n\n var range = categoryAxis.currentRangeIndices();\n var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n var currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }); }, function (idx) { return defined(series.data[idx]); });\n }\n\n return currentSeries;\n };\n\n CategoricalPlotArea.prototype.clearSeriesPointsCache = function clearSeriesPointsCache () {\n this._seriesPointsCache = {};\n };\n\n CategoricalPlotArea.prototype.seriesSourcePoints = function seriesSourcePoints (series, categoryAxis) {\n var this$1 = this;\n\n var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n if (this._seriesPointsCache && this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n var axisOptions = categoryAxis.options;\n var srcCategories = axisOptions.srcCategories;\n var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n var srcData = series.data;\n var result = [];\n if (!dateAxis) {\n categoryAxis.indexCategories();\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = SeriesBinder.current.bindPoint(series, idx).fields.category;\n if (dateAxis) {\n category = parseDateCategory(category, srcData[idx], this$1.chartService.intl);\n }\n\n if (!defined(category)) {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n var categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n };\n\n CategoricalPlotArea.prototype.aggregateSeries = function aggregateSeries (series, categoryAxis, range) {\n var srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n var result = deepExtend({}, series);\n var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n var data = result.data = [];\n\n var dataItems = categoryAxis.options.dataItems || [];\n\n var categoryItem = function (idx) {\n var categoryIdx = idx - range.min;\n var point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n var category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (var idx = range.min; idx <= range.max; idx++) {\n var point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n };\n\n CategoricalPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n var series = chart.options.series;\n var categoryAxis = this.seriesCategoryAxis(series[0]);\n var categories = categoryAxis.options.categories;\n var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n // TODO: Refactor, optionally use series.pane option\n CategoricalPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var axisName = series.axis;\n var axisOptions = [].concat(options.valueAxis);\n var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = (panes[0] || {}).name || \"default\";\n var paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n CategoricalPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis (series) {\n var axisName = series.categoryAxis;\n var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n };\n\n CategoricalPlotArea.prototype.stackableChartOptions = function stackableChartOptions (series, pane) {\n var anyStackedSeries = series.some(function (s) { return s.stack; });\n var isStacked100 = series.some(function (s) { return s.stack && s.stack.type === \"100%\"; });\n var clip = pane.options.clip;\n\n return {\n defaultStack: series[0].stack,\n isStacked: anyStackedSeries,\n isStacked100: isStacked100,\n clip: clip\n };\n };\n\n CategoricalPlotArea.prototype.groupSeriesByCategoryAxis = function groupSeriesByCategoryAxis (series) {\n var categoryAxes = [];\n var unique = {};\n for (var idx = 0; idx < series.length; idx++) {\n var name = series[idx].categoryAxis || \"$$default$$\";\n if (!hasOwnProperty(unique, name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n var groups = [];\n for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n var axis = categoryAxes[axisIx];\n var axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n };\n\n CategoricalPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var barChart = new BarChart(this, Object.assign({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(barChart, pane);\n };\n\n CategoricalPlotArea.prototype.createRangeBarChart = function createRangeBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n };\n\n CategoricalPlotArea.prototype.createBulletChart = function createBulletChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n };\n\n CategoricalPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new LineChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(lineChart, pane);\n };\n\n CategoricalPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new AreaChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(areaChart, pane);\n };\n\n CategoricalPlotArea.prototype.createRangeAreaChart = function createRangeAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n };\n\n CategoricalPlotArea.prototype.createOHLCChart = function createOHLCChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createCandlestickChart = function createCandlestickChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createBoxPlotChart = function createBoxPlotChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createWaterfallChart = function createWaterfallChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n };\n\n CategoricalPlotArea.prototype.axisRequiresRounding = function axisRequiresRounding (categoryAxisName, categoryAxisIndex) {\n var this$1 = this;\n\n var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n var currentSeries = this$1.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n var line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n };\n\n CategoricalPlotArea.prototype.aggregatedAxis = function aggregatedAxis (categoryAxisName, categoryAxisIndex) {\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n };\n\n CategoricalPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n };\n\n CategoricalPlotArea.prototype.createCategoryAxes = function createCategoryAxes (panes) {\n var this$1 = this;\n\n var invertAxes = this.invertAxes;\n var definitions = [].concat(this.options.categoryAxis);\n var axes = [];\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var categories = axisOptions.categories; if ( categories === void 0 ) categories = [];\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this$1.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this$1.isJustified();\n }\n\n if (this$1.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n var categoryAxis = (void 0);\n\n if (isDateAxis(axisOptions, categories[0])) {\n axisOptions._forecast = this$1.trendlineAggregateForecast();\n categoryAxis = new DateCategoryAxis(axisOptions, this$1.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this$1.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this$1.namedCategoryAxes[name]) {\n throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n }\n this$1.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this$1.appendAxis(categoryAxis);\n }\n }\n\n var primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n };\n\n CategoricalPlotArea.prototype.isJustified = function isJustified () {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n };\n\n CategoricalPlotArea.prototype.createValueAxes = function createValueAxes (panes) {\n var this$1 = this;\n\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var definitions = [].concat(this.options.valueAxis);\n var invertAxes = this.invertAxes;\n var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n var axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var axisType = (void 0);\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n var valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this$1.chartService\n );\n\n if (name) {\n if (this$1.namedValueAxes[name]) {\n throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n }\n this$1.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this$1.appendAxis(valueAxis);\n }\n }\n\n var primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n };\n\n CategoricalPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var pane = this.pointPane(point);\n var categories = [];\n var values = [];\n\n if (!pane) {\n return;\n }\n\n var allAxes = pane.axes;\n for (var i = 0; i < allAxes.length; i++) {\n var axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n };\n\n CategoricalPlotArea.prototype.pointPane = function pointPane (point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n };\n\n CategoricalPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n };\n\n CategoricalPlotArea.prototype._pointsByVertical = function _pointsByVertical (basePoint, offset) {\n if ( offset === void 0 ) offset = 0;\n\n if (this.invertAxes) {\n return this._siblingsBySeriesIndex(basePoint.series.index, offset);\n }\n\n return this._siblingsByPointIndex(basePoint.getIndex());\n };\n\n CategoricalPlotArea.prototype._pointsByHorizontal = function _pointsByHorizontal (basePoint, offset) {\n if ( offset === void 0 ) offset = 0;\n\n if (this.invertAxes) {\n return this._siblingsByPointIndex(basePoint.getIndex());\n }\n\n var siblings = this._siblingsBySeriesIndex(basePoint.series.index, offset);\n\n if (this.chartService.rtl) {\n return siblings.reverse();\n }\n\n return siblings;\n };\n\n CategoricalPlotArea.prototype._siblingsByPointIndex = function _siblingsByPointIndex (pointIndex) {\n var this$1 = this;\n\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n\n if (chart.pane && chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var chartPoints = chart.points\n .filter(function (point) { return point && point.visible !== false && point.getIndex() === pointIndex; }\n );\n\n result.push.apply(result, chartPoints.sort(this$1._getSeriesCompareFn(chartPoints[0])));\n }\n\n return result;\n };\n\n CategoricalPlotArea.prototype._siblingsBySeriesIndex = function _siblingsBySeriesIndex (seriesIndex, offset) {\n var index = cycleIndex(seriesIndex + offset, this.series.length);\n\n return this.pointsBySeriesIndex(index);\n };\n\n CategoricalPlotArea.prototype._getSeriesCompareFn = function _getSeriesCompareFn (point) {\n var isStacked = this._isInStackedSeries(point);\n\n if (isStacked && this.invertAxes || !isStacked && !this.invertAxes) {\n return function (a, b) { return a.box.center().x - b.box.center().x; };\n }\n\n return function (a, b) { return a.box.center().y - b.box.center().y; };\n };\n\n CategoricalPlotArea.prototype._isInStackedSeries = function _isInStackedSeries (point) {\n var sortableSeries = inArray(point.series.type,\n [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA, LINE, VERTICAL_LINE, RADAR_LINE, RADAR_AREA]);\n\n var stackableSeries = inArray(point.series.type, [ COLUMN, BAR]);\n\n return sortableSeries || stackableSeries && point.options.isStacked;\n };\n\n return CategoricalPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;\n","import { Class } from '../common';\n\nvar Highlight = (function (Class) {\n function Highlight() {\n Class.call(this);\n\n this._points = [];\n }\n\n if ( Class ) Highlight.__proto__ = Class;\n Highlight.prototype = Object.create( Class && Class.prototype );\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.destroy = function destroy () {\n this._points = [];\n };\n\n Highlight.prototype.show = function show (points, opacity) {\n var this$1 = this;\n\n var arrayPoints = [].concat(points);\n this.hide();\n\n for (var i = 0; i < arrayPoints.length; i++) {\n var point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this$1.togglePointHighlight(point, true, opacity);\n this$1._points.push(point);\n }\n }\n };\n\n Highlight.prototype.togglePointHighlight = function togglePointHighlight (point, show, opacity) {\n var toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n var eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n };\n\n Highlight.prototype.hide = function hide () {\n var this$1 = this;\n\n var points = this._points;\n while (points.length) {\n this$1.togglePointHighlight(points.pop(), false);\n }\n };\n\n Highlight.prototype.isHighlighted = function isHighlighted (element) {\n var points = this._points;\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n };\n\n return Highlight;\n}(Class));\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nexport default Highlight;\n","export default function acceptKey(e, mouseKey) {\n var key = (mouseKey || \"\").toLowerCase();\n var event = e.event;\n var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n var ranges = {};\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nvar Pannable = (function (Class) {\n function Pannable(plotArea, options) {\n Class.call(this);\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n }\n\n if ( Class ) Pannable.__proto__ = Class;\n Pannable.prototype = Object.create( Class && Class.prototype );\n Pannable.prototype.constructor = Pannable;\n\n Pannable.prototype.start = function start (e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n };\n\n Pannable.prototype.move = function move (e) {\n if (this._active) {\n var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n };\n\n Pannable.prototype.end = function end () {\n var active = this._active;\n this._active = false;\n\n return active;\n };\n\n Pannable.prototype.pan = function pan () {\n var ref = this;\n var plotArea = ref.plotArea;\n var axisRanges = ref.axisRanges;\n if (axisRanges.length) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n Pannable.prototype.destroy = function destroy () {\n delete this.plotArea;\n };\n\n Pannable.prototype._panAxes = function _panAxes (e, position) {\n var plotArea = this.plotArea;\n var delta = -e[position].delta;\n var lock = (this.options.lock || \"\").toLowerCase();\n var updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n var axes = plotArea.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n var range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n };\n\n return Pannable;\n}(Class));\n\nPannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nvar ZoomSelection = (function (Class) {\n function ZoomSelection(chart, options) {\n Class.call(this);\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n }\n\n if ( Class ) ZoomSelection.__proto__ = Class;\n ZoomSelection.prototype = Object.create( Class && Class.prototype );\n ZoomSelection.prototype.constructor = ZoomSelection;\n\n ZoomSelection.prototype.createElement = function createElement () {\n var marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n var marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n };\n\n ZoomSelection.prototype.removeElement = function removeElement () {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n };\n\n ZoomSelection.prototype.setStyles = function setStyles (styles) {\n elementStyles(this._marquee, styles);\n };\n\n ZoomSelection.prototype.start = function start (e) {\n if (acceptKey(e, this.options.key)) {\n var chart = this.chart;\n var point = chart._eventCoordinates(e);\n var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n var offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n };\n\n ZoomSelection.prototype._elementOffset = function _elementOffset () {\n var chartElement = this.chart.element;\n var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var offset = elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n };\n\n ZoomSelection.prototype.move = function move (e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n };\n\n ZoomSelection.prototype.end = function end (e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n var elementOffset = this._elementOffset();\n var selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset.left;\n selectionPosition.top -= elementOffset.top;\n\n var start = { x: selectionPosition.left, y: selectionPosition.top };\n var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n };\n\n ZoomSelection.prototype.zoom = function zoom () {\n var axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n var plotArea = this.chart._plotArea;\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n ZoomSelection.prototype.destroy = function destroy () {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n };\n\n ZoomSelection.prototype._updateAxisRanges = function _updateAxisRanges (start, end) {\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n\n var axes = this._zoomPane.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n var range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n };\n\n ZoomSelection.prototype._selectionPosition = function _selectionPosition (e) {\n var clipBox = this._zoomPaneClipBox;\n var startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n var pageX = e.x.location;\n var pageY = e.y.location;\n var lock = (this.options.lock || \"\").toLowerCase();\n var left = Math.min(startLocation.x, pageX);\n var top = Math.min(startLocation.y, pageY);\n var width = Math.abs(startLocation.x - pageX);\n var height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n };\n\n return ZoomSelection;\n}(Class));\n\nZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nvar MIN_RATE = 0.01;\nvar MAX_RATE = 0.9;\nvar DEFAULT_RATE = 0.3;\n\nvar MousewheelZoom = (function (Class) {\n function MousewheelZoom(chart, options) {\n Class.call(this);\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n }\n\n if ( Class ) MousewheelZoom.__proto__ = Class;\n MousewheelZoom.prototype = Object.create( Class && Class.prototype );\n MousewheelZoom.prototype.constructor = MousewheelZoom;\n\n MousewheelZoom.prototype.updateRanges = function updateRanges (delta, coords) {\n var this$1 = this;\n\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n var axes = this.chart._plotArea.axes;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n var rate = limitValue(this$1.options.rate, MIN_RATE, MAX_RATE);\n var range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n };\n\n MousewheelZoom.prototype.zoom = function zoom () {\n var axisRanges = this.axisRanges;\n var plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n MousewheelZoom.prototype.destroy = function destroy () {\n delete this.chart;\n };\n\n return MousewheelZoom;\n}(Class));\n\nexport default MousewheelZoom;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nvar PlotAreaFactory = (function (Class) {\n function PlotAreaFactory() {\n Class.call(this);\n\n this._registry = [];\n }\n\n if ( Class ) PlotAreaFactory.__proto__ = Class;\n PlotAreaFactory.prototype = Object.create( Class && Class.prototype );\n PlotAreaFactory.prototype.constructor = PlotAreaFactory;\n\n PlotAreaFactory.prototype.register = function register (type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n };\n\n PlotAreaFactory.prototype.create = function create (srcSeries, options, chartService) {\n var registry = this._registry;\n var match = registry[0];\n var series;\n\n for (var idx = 0; idx < registry.length; idx++) {\n var entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n var trendlines = filterSeriesByType(srcSeries, TRENDLINE_SERIES);\n\n if ((series.length - trendlines.length) > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n };\n\n return PlotAreaFactory;\n}(Class));\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;\n","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, eventCoordinates, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nvar ZOOM_ACCELERATION = 3;\nvar SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(classNames) {\n var element = document.createElement(\"div\");\n if (classNames) {\n element.className = classNames;\n }\n\n return element;\n}\n\nfunction closestHandle(element) {\n var current = element;\n while (current && !hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n}\n\nvar Selection = (function (Class) {\n function Selection(chart, categoryAxis, options, observer) {\n Class.call(this);\n\n var chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n }\n\n if ( Class ) Selection.__proto__ = Class;\n Selection.prototype = Object.create( Class && Class.prototype );\n Selection.prototype.constructor = Selection;\n\n Selection.prototype.onPane = function onPane (pane) {\n return this.categoryAxis.pane === pane;\n };\n\n Selection.prototype.createElements = function createElements () {\n var options = this.options;\n var wrapper = this.wrapper = createDiv(\"k-selector k-pointer-events-none\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n\n var selection = this.selection = createDiv(\"k-selection k-pointer-events-none\");\n\n this.leftMask = createDiv(\"k-mask k-pointer-events-none\");\n this.rightMask = createDiv(\"k-mask k-pointer-events-none\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n var body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n selection.appendChild(body);\n\n var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle k-pointer-events-auto\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n /* eslint no-self-assign: \"off\" */\n wrapper.style.cssText = wrapper.style.cssText;\n };\n\n Selection.prototype.bindEvents = function bindEvents$1 () {\n var obj;\n\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n }\n\n this._domEvents = DomEventsBuilder.create(this.chartElement, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n };\n\n Selection.prototype.initOptions = function initOptions () {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var box = categoryAxis.pane.chartsBox();\n var intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref$1.paddingLeft;\n var paddingTop = ref$1.paddingTop;\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n };\n\n Selection.prototype.destroy = function destroy () {\n var obj;\n\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n this._mousewheelHandler = null;\n }\n\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n };\n\n Selection.prototype._rangeEventArgs = function _rangeEventArgs (range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n };\n\n Selection.prototype._pointInPane = function _pointInPane (x, y) {\n var paneBox = this.categoryAxis.pane.box;\n var modelCoords = this.chart._toModelCoordinates(x, y);\n return paneBox.containsPoint(modelCoords);\n };\n\n Selection.prototype._start = function _start (e) {\n var options = this.options;\n var target = eventElement(e);\n if (this._state || !target) {\n return;\n }\n\n var coords = eventCoordinates(e);\n var inPane = this._pointInPane(coords.x, coords.y);\n if (!inPane) {\n return;\n }\n\n var handle = closestHandle(target);\n var bodyRect = this.body.getBoundingClientRect();\n var inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&\n coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: handle,\n startLocation: e.x ? e.x.location : 0,\n inBody: inBody,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n var args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n };\n\n Selection.prototype._press = function _press (e) {\n var handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n addClass(handle, \"k-handle-active\");\n }\n };\n\n Selection.prototype._move = function _move (e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var target = state.moveTarget;\n var reverse = categoryAxis.options.reverse;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var delta = state.startLocation - e.x.location;\n var oldRange = { from: range.from, to: range.to };\n var span = range.to - range.from;\n var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target && !state.inBody) {\n return;\n }\n\n var leftHandle = target && hasClasses(target, \"k-left-handle\");\n var rightHandle = target && hasClasses(target, \"k-right-handle\");\n\n if (state.inBody) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n };\n\n Selection.prototype._end = function _end () {\n if (this._state) {\n var moveTarget = this._state.moveTarget;\n if (moveTarget) {\n removeClass(moveTarget, \"k-handle-active\");\n }\n\n var range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n };\n\n Selection.prototype._tap = function _tap (e) {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var coords = this.chart._eventCoordinates(e);\n var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var span = to - from;\n var mid = from + span / 2;\n var range = {};\n var rightClick = e.event.which === 3;\n var offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n };\n\n Selection.prototype._mousewheel = function _mousewheel (e) {\n var this$1 = this;\n\n var delta = mousewheelDelta(e);\n\n this._start(e);\n\n if (this._state) {\n var range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1._end();\n }, MOUSEWHEEL_DELAY);\n }\n };\n\n Selection.prototype._gesturestart = function _gesturestart (e) {\n var options = this.options;\n var touch = e.touches[0];\n var inPane = this._pointInPane(touch.pageX, touch.pageY);\n\n if (!inPane) {\n return;\n }\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n var args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n };\n\n Selection.prototype._gestureend = function _gestureend () {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n };\n\n Selection.prototype._gesturechange = function _gesturechange (e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var chart = ref.chart;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n var left = Math.min(p0, p1);\n var right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n };\n\n Selection.prototype._index = function _index (value) {\n var index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n };\n\n Selection.prototype._value = function _value (index) {\n var value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n };\n\n Selection.prototype._slot = function _slot (value) {\n var categoryAxis = this.categoryAxis;\n var index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n };\n\n Selection.prototype.move = function move (from, to) {\n var options = this.options;\n var reverse = this.categoryAxis.options.reverse;\n var offset = options.offset;\n var padding = options.padding;\n var border = options.selection.border;\n var left = reverse ? to : from;\n var right = reverse ? from : to;\n var edge = 'x' + (reverse ? 2 : 1);\n\n var box = this._slot(left);\n var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n var distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n };\n\n Selection.prototype.set = function set (from, to) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var fromValue = limitValue(this._index(from), min, max);\n var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n };\n\n Selection.prototype.expand = function expand (delta) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var zDir = options.mousewheel.zoom;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n };\n\n Selection.prototype.zoom = function zoom (delta, coords) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n var ref = this.categoryAxis.options;\n var reverse = ref.reverse;\n var origin = X + (reverse ? '2' : '1');\n var lineBox = this.categoryAxis.lineBox();\n var relative = Math.abs(lineBox[origin] - coords[X]);\n var size = lineBox.width();\n var position = round(relative / size, 2);\n var minDelta = round(position * delta);\n var maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n };\n\n Selection.prototype.trigger = function trigger (name, args) {\n return (this.observer || this.chart).trigger(name, args);\n };\n\n return Selection;\n}(Class));\n\nsetDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nvar Tooltip = (function (BaseTooltip) {\n function Tooltip () {\n BaseTooltip.apply(this, arguments);\n }\n\n if ( BaseTooltip ) Tooltip.__proto__ = BaseTooltip;\n Tooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n Tooltip.prototype.show = function show (point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n var options = deepExtend({}, this.options, point.options.tooltip);\n var anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n BaseTooltip.prototype.show.call(this, {\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n };\n\n Tooltip.prototype.hide = function hide () {\n delete this._current;\n BaseTooltip.prototype.hide.call(this);\n };\n\n return Tooltip;\n}(BaseTooltip));\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nvar SharedTooltip = (function (BaseTooltip) {\n function SharedTooltip(plotArea, options) {\n BaseTooltip.call(this, plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n }\n\n if ( BaseTooltip ) SharedTooltip.__proto__ = BaseTooltip;\n SharedTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n SharedTooltip.prototype.constructor = SharedTooltip;\n\n SharedTooltip.prototype.showAt = function showAt (points, coords) {\n var tooltipPoints = grep(points, function(point) {\n var tooltip = point.series.tooltip;\n var excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n var point = tooltipPoints[0];\n var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n };\n\n SharedTooltip.prototype._slotAnchor = function _slotAnchor (point, slot) {\n var axis = this.plotArea.categoryAxis;\n var align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n };\n\n SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n var box = point.owner.pane.chartsBox();\n var vertical = this.plotArea.categoryAxis.options.vertical;\n var center = box.center();\n var slotCenter = slot.center();\n var align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n var centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n };\n\n return SharedTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar BarChartAnimation = (function (superclass) {\n function BarChartAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BarChartAnimation.__proto__ = superclass;\n BarChartAnimation.prototype = Object.create( superclass && superclass.prototype );\n BarChartAnimation.prototype.constructor = BarChartAnimation;\n\n BarChartAnimation.prototype.setup = function setup () {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n var axis = options.vertical ? Y : X;\n\n var fromScale = this.fromScale = new geom.Point(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(geom.transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n };\n\n BarChartAnimation.prototype.step = function step (pos) {\n var scaleX = interpolateValue(this.fromScale.x, 1, pos);\n var scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(geom.transform()\n .scale(scaleX, scaleY, this.origin)\n );\n };\n\n BarChartAnimation.prototype.abort = function abort () {\n superclass.prototype.abort.call(this);\n this.element.transform(null);\n };\n\n return BarChartAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar BubbleAnimation = (function (superclass) {\n function BubbleAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BubbleAnimation.__proto__ = superclass;\n BubbleAnimation.prototype = Object.create( superclass && superclass.prototype );\n BubbleAnimation.prototype.constructor = BubbleAnimation;\n\n BubbleAnimation.prototype.setup = function setup () {\n var center = this.center = this.element.bbox().center();\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n };\n\n BubbleAnimation.prototype.step = function step (pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.center)\n );\n };\n\n return BubbleAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar FadeInAnimation = (function (superclass) {\n function FadeInAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) FadeInAnimation.__proto__ = superclass;\n FadeInAnimation.prototype = Object.create( superclass && superclass.prototype );\n FadeInAnimation.prototype.constructor = FadeInAnimation;\n\n FadeInAnimation.prototype.setup = function setup () {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n };\n\n FadeInAnimation.prototype.step = function step (pos) {\n this.element.opacity(pos * this.fadeTo);\n };\n\n return FadeInAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PieAnimation = (function (superclass) {\n function PieAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) PieAnimation.__proto__ = superclass;\n PieAnimation.prototype = Object.create( superclass && superclass.prototype );\n PieAnimation.prototype.constructor = PieAnimation;\n\n PieAnimation.prototype.setup = function setup () {\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n };\n\n PieAnimation.prototype.step = function step (pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.options.center)\n );\n };\n\n return PieAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nvar ScatterLineChart = (function (ScatterChart) {\n function ScatterLineChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) ScatterLineChart.__proto__ = ScatterChart;\n ScatterLineChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n ScatterLineChart.prototype.constructor = ScatterLineChart;\n\n ScatterLineChart.prototype.render = function render () {\n ScatterChart.prototype.render.call(this);\n\n this.renderSegments();\n };\n\n ScatterLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n };\n\n ScatterLineChart.prototype.animationPoints = function animationPoints () {\n var points = ScatterChart.prototype.animationPoints.call(this);\n return points.concat(this._segments);\n };\n\n ScatterLineChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n if (missingValues === ZERO) {\n var missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n };\n\n return ScatterLineChart;\n}(ScatterChart));\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","import autoMajorUnit from '../../core/utils/auto-major-unit';\nimport { valueOrDefault } from '../../common';\n\nfunction getScatterTrendlineData(valueMapper, range, options) {\n var data = [];\n var xMin = range.xMin;\n var xMax = range.xMax;\n\n var forecast = (options || {}).forecast;\n if (forecast) {\n if (forecast.before > 0) {\n xMin -= forecast.before;\n }\n\n if (forecast.after > 0) {\n xMax += forecast.after;\n }\n }\n\n var samplingInterval = (options || {}).samplingInterval;\n var delta = valueOrDefault(samplingInterval, autoMajorUnit(xMin, xMax) / 10);\n if (samplingInterval <= 0) {\n delta = xMax - xMin;\n }\n\n for (var x = xMin; x <= xMax; x += delta) {\n data.push([\n x,\n valueMapper(x)\n ]);\n }\n\n return data;\n}\n\nexport default getScatterTrendlineData;\n","var scatterValueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n; } };\n\nexport default scatterValueGetter;\n","function xValueLimits(sourceValues, valueGetter) {\n var xMin = Number.MAX_VALUE;\n var xMax = Number.MIN_VALUE;\n\n for (var i = 0; i < sourceValues.length; i++) {\n var value = sourceValues[i];\n var ref = valueGetter(value);\n var xValue = ref.xValue;\n var yValue = ref.yValue;\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n }\n }\n\n return { xMin: xMin, xMax: xMax };\n}\n\nexport default xValueLimits;\n","import {\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n} from '../constants';\nimport scatterExponentialTrendline from './scatter-exponential-trendline';\nimport scatterLinearTrendline from './scatter-linear-trendline';\nimport scatterLogarithmicTrendline from './scatter-logarithmic-trendline';\nimport scatterMovingAverageTrendline from './scatter-moving-average';\nimport scatterPolynomialTrendline from './scatter-polynomial-trendline';\nimport scatterPowerTrendline from './scatter-power-trendline';\n\nvar scatterRegistry = {};\nscatterRegistry[TRENDLINE_EXPONENTIAL] = scatterExponentialTrendline;\nscatterRegistry[TRENDLINE_LINEAR] = scatterLinearTrendline;\nscatterRegistry[TRENDLINE_LOGARITHMIC] = scatterLogarithmicTrendline;\nscatterRegistry[TRENDLINE_MOVING_AVERAGE] = scatterMovingAverageTrendline;\nscatterRegistry[TRENDLINE_POLYNOMIAL] = scatterPolynomialTrendline;\nscatterRegistry[TRENDLINE_POWER] = scatterPowerTrendline;\n\nexport default scatterRegistry;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\n\nfunction scatterExponentialTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: Math.log(valueFields[fieldName]) });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n var a = Math.exp(intercept);\n var b = slope;\n\n return getScatterTrendlineData(function (x) { return a * Math.exp(b * x); }, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterExponentialTrendline;\n","import calculateSlope from './calculate-slope';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterLinearTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var ref$1 = calculateSlope(seriesValues(), scatterValueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n return getScatterTrendlineData(function (x) { return slope * x + intercept; }, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterLinearTrendline;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\nimport xValueLimits from './x-value-limits';\n\nfunction scatterLogarithmicTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n; } };\n\nvar logValueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(valueFields.x), yValue: valueFields[fieldName] });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, logValueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var range = xValueLimits(sourceValues, valueGetter(options.field));\n\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n var a = slope;\n var b = intercept;\n\n return getScatterTrendlineData(function (x) { return a * Math.log(x) + b; }, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterLogarithmicTrendline;\n","import calculateMovingAverage from './calculate-moving-average';\nimport { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterMovingAverageTrendline(context) {\n var options = context.options;\n\n var data = getData(context);\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nfunction getData(ref) {\n var options = ref.options;\n var seriesValues = ref.seriesValues;\n\n var period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n var range = { before: period, after: period };\n var data = calculateMovingAverage(seriesValues(range), scatterValueGetter(options.field), period);\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n}\n\nexport default scatterMovingAverageTrendline;\n","import getScatterTrendlineData from './get-scatter-trendline-data';\nimport scatterValueGetter from './scatter-value-getter';\nimport calculatePolynomial from './calculate-polynomial';\n\nfunction scatterPolynomialTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var order = (options.trendline || {}).order;\n var valueGetter = scatterValueGetter(options.field);\n var ref$1 = calculatePolynomial(seriesValues(), valueGetter, order);\n var count = ref$1.count;\n var valueMapper = ref$1.valueMapper;\n var xMin = ref$1.xMin;\n var xMax = ref$1.xMax;\n var range = { xMin: xMin, xMax: xMax };\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n return getScatterTrendlineData(valueMapper, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterPolynomialTrendline;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\nimport scatterValueGetter from './scatter-value-getter';\nimport xValueLimits from './x-value-limits';\n\nfunction scatterPowerTrendline(context) {\n var options = context.options;\n var seriesValues = context.seriesValues;\n\n var data = getData({ seriesValues: seriesValues, options: options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data: data});\n }\n\n return null;\n}\n\nvar valueGetter = function (fieldName) { return function (ref) {\n var valueFields = ref.valueFields;\n\n return ({ xValue: Math.log(valueFields.x), yValue: Math.log(valueFields[fieldName]) });\n; } };\n\nfunction getData(ref) {\n var seriesValues = ref.seriesValues;\n var options = ref.options;\n\n var sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n var ref$1 = calculateSlope(sourceValues, valueGetter(options.field));\n var slope = ref$1.slope;\n var intercept = ref$1.intercept;\n var count = ref$1.count;\n var range = xValueLimits(sourceValues, scatterValueGetter(options.field));\n\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n var a = Math.exp(intercept);\n var b = slope;\n return getScatterTrendlineData(function (x) { return a * Math.pow(x, b); }, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterPowerTrendline;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport scatterTrendlineRegistry from '../trendlines/scatter-trendline-registry';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport { filterSeriesByType, equalsIgnoreCase, singleItemOrArray } from '../utils';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nvar XYPlotArea = (function (PlotAreaBase) {\n function XYPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) XYPlotArea.__proto__ = PlotAreaBase;\n XYPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n XYPlotArea.prototype.constructor = XYPlotArea;\n\n XYPlotArea.prototype.initFields = function initFields () {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n };\n\n XYPlotArea.prototype.render = function render (panes) {\n var this$1 = this;\n if ( panes === void 0 ) panes = this.panes;\n\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n var seriesByPane = this.groupSeriesByPane();\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this$1.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this$1.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n };\n\n XYPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n XYPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n };\n\n // TODO: Refactor, optionally use series.pane option\n XYPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n XYPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createScatterLineChart = function createScatterLineChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createBubbleChart = function createBubbleChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n var defaultRange = tracker.query();\n var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n var typeSamples = [ axisOptions.min, axisOptions.max ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateValueAxis;\n } else if (isLog) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n };\n\n XYPlotArea.prototype.createAxes = function createAxes (panes) {\n var this$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n };\n\n XYPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n var currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n };\n\n XYPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n };\n\n XYPlotArea.prototype.trendlineFactory = function trendlineFactory$1 (options, series) {\n var seriesValues = this.seriesValues.bind(this, series.index);\n\n var trendline = trendlineFactory(scatterTrendlineRegistry, options.type, {\n options: options,\n seriesValues: seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.xAxis = series.xAxis;\n trendline.yAxis = series.yAxis;\n }\n\n return trendline;\n };\n\n XYPlotArea.prototype.seriesValues = function seriesValues (seriesIx) {\n var this$1 = this;\n\n var result = [];\n var currentSeries = this.series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var data = this$1.bindPoint(currentSeries, pointIx);\n result.push({ pointIx: pointIx, valueFields: data.valueFields });\n }\n\n return result;\n };\n\n return XYPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box, createPatternFill } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET, CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\n\nvar PieSegment = (function (ChartElement) {\n function PieSegment(value, sector, options) {\n ChartElement.call(this, options);\n\n this.value = value;\n this.sector = sector;\n }\n\n if ( ChartElement ) PieSegment.__proto__ = ChartElement;\n PieSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n PieSegment.prototype.constructor = PieSegment;\n\n PieSegment.prototype.render = function render () {\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n this.createLabel();\n };\n\n PieSegment.prototype.createLabel = function createLabel () {\n var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var labelText = this.getLabelText(labels);\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n var themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), this.pointData());\n\n this.append(this.label);\n }\n };\n\n PieSegment.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.owner.chartService.format.auto(options.format, this.value);\n };\n\n PieSegment.prototype.reflow = function reflow (targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n };\n\n PieSegment.prototype.reflowLabel = function reflowLabel () {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var labelsDistance = labelsOptions.distance;\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n var labelWidth = label.box.width();\n var lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n var x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n };\n\n PieSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n\n ChartElement.prototype.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (this.value) {\n if (options.visual) {\n var startAngle = (sector.startAngle + 180) % 360;\n var visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new geom.Point(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: function () {\n var group = new draw.Group();\n this$1.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n };\n\n PieSegment.prototype.createSegmentVisual = function createSegmentVisual (group) {\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n var borderOptions = options.border || {};\n var border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n var color = options.color;\n var fill = createPatternFill(options.pattern, {\n color: color,\n opacity: options.opacity\n });\n var visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n };\n\n PieSegment.prototype.createSegment = function createSegment (sector, options) {\n if (options.singleSegment) {\n return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return ShapeBuilder.current.createRing(sector, options);\n };\n\n PieSegment.prototype.createAnimation = function createAnimation () {\n var ref = this;\n var options = ref.options;\n var center = ref.sector.center;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n ChartElement.prototype.createAnimation.call(this);\n };\n\n PieSegment.prototype.createHighlight = function createHighlight (options) {\n var highlight = this.options.highlight || {};\n var border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n };\n\n PieSegment.prototype.highlightVisual = function highlightVisual () {\n return this.visual.children[0];\n };\n\n PieSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new geom.Point(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n };\n\n PieSegment.prototype.createFocusHighlight = function createFocusHighlight (style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var result = this.createSegment(this.sector, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n }));\n\n var clipPath = new draw.MultiPath();\n\n clipPath.paths.push(draw.Path.fromRect(result.bbox()));\n clipPath.paths.push(this.createSegment(this.sector, {}));\n\n result.clip(clipPath);\n\n return result;\n };\n\n PieSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n };\n\n PieSegment.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n PieSegment.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n };\n\n PieSegment.prototype.getIndex = function getIndex () {\n return this.index;\n };\n\n return PieSegment;\n}(ChartElement));\n\nvar RAD_30 = round(rad(30), DEFAULT_PRECISION);\nvar RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n var radians = rad(angle);\n var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n var horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n var vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n}\n\nsetDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true,\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\ndeepExtend(PieSegment.prototype, AccessibilityAttributesMixin);\n\nexport default PieSegment;\n","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nvar PieChartMixin = {\n createLegendItem: function(value, point, options) {\n var legendOptions = this.options.legend || {};\n var labelsOptions = legendOptions.labels || {};\n var inactiveItems = legendOptions.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n var pointVisible = options.visible !== false;\n var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n var text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n var itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n pattern: point.pattern,\n labels: itemLabelOptions\n });\n }\n }\n }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar PIE_SECTOR_ANIM_DELAY = 70;\n\nvar PieChart = (function (ChartElement) {\n function PieChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n }\n\n if ( ChartElement ) PieChart.__proto__ = ChartElement;\n PieChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n PieChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n var colorsCount = seriesColors.length;\n var series = options.series;\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var data = currentSeries.data;\n var ref$1 = bindSegments(currentSeries);\n var total = ref$1.total;\n var points = ref$1.points;\n var count = ref$1.count;\n var anglePerValue = 360 / total;\n var constantAngle = (void 0);\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n var currentAngle = (void 0);\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n var value = pointData.value;\n var visible = pointData.visible;\n var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n var explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new Ring(null, 0, 0, currentAngle, angle), {\n owner: this$1,\n category: defined(fields.category) ? fields.category : \"\",\n pattern: defined(fields.pattern) ? fields.pattern : currentSeries.pattern,\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this$1.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n };\n\n PieChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [\n \"data\", \"content\", \"template\", \"visual\", \"toggle\",\n \"ariaTemplate\", \"ariaContent\"\n ] });\n };\n\n PieChart.prototype.addValue = function addValue (value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n segmentOptions.pattern = fields.pattern || segmentOptions.pattern;\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new PieSegment(value, sector, segmentOptions);\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n };\n\n PieChart.prototype.reflow = function reflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var points = ref.points;\n var seriesConfigs = ref.seriesConfigs; if ( seriesConfigs === void 0 ) seriesConfigs = [];\n var count = points.length;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n var newBoxCenter = newBox.center();\n var boxCenter = box.center();\n var seriesCount = options.series.length;\n var leftSideLabels = [];\n var rightSideLabels = [];\n var padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n var radius = halfMinWidth - padding;\n var center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n var seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n var label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n };\n\n PieChart.prototype.leftLabelsReflow = function leftLabelsReflow (labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n };\n\n PieChart.prototype.rightLabelsReflow = function rightLabelsReflow (labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n };\n\n PieChart.prototype.distanceBetweenLabels = function distanceBetweenLabels (labels) {\n var segment = last(this.points);\n var sector = segment.sector;\n var count = labels.length - 1;\n var lr = sector.radius + segment.options.labels.distance;\n var distances = [];\n var firstBox = labels[0].box;\n var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (var i = 0; i < count; i++) {\n var secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n };\n\n PieChart.prototype.distributeLabels = function distributeLabels (distances, labels) {\n var this$1 = this;\n\n var count = distances.length;\n var left, right, remaining;\n\n for (var i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this$1._takeDistance(distances, i, --left, remaining);\n remaining = this$1._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n };\n\n PieChart.prototype._takeDistance = function _takeDistance (distances, anchor, position, amount) {\n var result = amount;\n if (distances[position] > 0) {\n var available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n };\n\n PieChart.prototype.reflowLabels = function reflowLabels (distances, labels) {\n var this$1 = this;\n\n var segment = last(this.points);\n var sector = segment.sector;\n var labelOptions = segment.options.labels;\n var labelsCount = labels.length;\n var labelDistance = labelOptions.distance;\n var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n var boxX;\n\n distances[0] += 2;\n for (var i = 0; i < labelsCount; i++) {\n var label = labels[i];\n var box = label.box;\n\n boxY += distances[i];\n boxX = this$1.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n };\n\n PieChart.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var connectors = ref.options.connectors;\n var points = ref.points;\n var count = points.length;\n var space = 4;\n\n ChartElement.prototype.createVisual.call(this);\n\n this._connectorLines = [];\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var label = segment.label;\n var angle = sector.middle();\n var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n var connectorLine = new draw.Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n var box = label.box;\n var centerPoint = sector.center;\n var start = sector.point(angle);\n var middle = new Point(box.x1, box.center().y);\n var sr = (void 0), end = (void 0), crossing = (void 0);\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this$1._connectorLines.push(connectorLine);\n this$1.visual.append(connectorLine);\n }\n }\n }\n };\n\n PieChart.prototype.renderVisual = function renderVisual () {\n ChartElement.prototype.renderVisual.call(this);\n\n if (find(this.options.series, function (options) { return options.autoFit; })) {\n var targetBox = this.targetBox;\n var pieCenter = this.box.center();\n var bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n var bboxBottom = bbox.bottomRight();\n\n var scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n };\n\n PieChart.prototype.labelComparator = function labelComparator (reverse) {\n var reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n var first = (a.parent.sector.middle() + 270) % 360;\n var second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n };\n\n PieChart.prototype.hAlignLabel = function hAlignLabel (originalX, sector, y1, y2, direction) {\n var radius = sector.radius;\n var sector_center = sector.center;\n var cx = sector_center.x;\n var cy = sector_center.y;\n var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n };\n\n PieChart.prototype.pointInCircle = function pointInCircle (point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n };\n\n PieChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format, point.value);\n };\n\n PieChart.prototype.animationDelay = function animationDelay (categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n };\n\n PieChart.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n return PieChart;\n}(ChartElement));\n\nfunction intersection(a1, a2, b1, b2) {\n var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n var result;\n if (ub !== 0) {\n var ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n}\n\nsetDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nvar PiePlotArea = (function (PlotAreaBase) {\n function PiePlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) PiePlotArea.__proto__ = PlotAreaBase;\n PiePlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n PiePlotArea.prototype.constructor = PiePlotArea;\n\n PiePlotArea.prototype.render = function render () {\n this.createPieChart(this.series);\n };\n\n PiePlotArea.prototype.createPieChart = function createPieChart (series) {\n var firstSeries = series[0];\n var pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n };\n\n PiePlotArea.prototype.appendChart = function appendChart (chart, pane) {\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n append(this.options.legend.data, chart.legendItems);\n };\n\n PiePlotArea.prototype.getPointBelow = function getPointBelow (point) {\n return this.getPointToTheRight(point);\n };\n\n PiePlotArea.prototype.getPointAbove = function getPointAbove (point) {\n return this.getPointToTheLeft(point);\n };\n\n return PiePlotArea;\n}(PlotAreaBase));\n\nexport default PiePlotArea;\n","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar DonutSegment = (function (PieSegment) {\n function DonutSegment () {\n PieSegment.apply(this, arguments);\n }\n\n if ( PieSegment ) DonutSegment.__proto__ = PieSegment;\n DonutSegment.prototype = Object.create( PieSegment && PieSegment.prototype );\n DonutSegment.prototype.constructor = DonutSegment;\n\n DonutSegment.prototype.reflowLabel = function reflowLabel () {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n var lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n PieSegment.prototype.reflowLabel.call(this);\n }\n }\n };\n\n DonutSegment.prototype.createSegment = function createSegment (sector, options) {\n return ShapeBuilder.current.createRing(sector, options);\n };\n\n return DonutSegment;\n}(PieSegment));\n\nsetDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar DONUT_SECTOR_ANIM_DELAY = 50;\n\nvar DonutChart = (function (PieChart) {\n function DonutChart () {\n PieChart.apply(this, arguments);\n }\n\n if ( PieChart ) DonutChart.__proto__ = PieChart;\n DonutChart.prototype = Object.create( PieChart && PieChart.prototype );\n DonutChart.prototype.constructor = DonutChart;\n\n DonutChart.prototype.addValue = function addValue (value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n segmentOptions.pattern = fields.pattern || segmentOptions.pattern;\n\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new DonutSegment(value, sector, segmentOptions);\n\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n };\n\n DonutChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var options = this.options;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var series = options.series;\n var seriesCount = series.length;\n\n var padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n var totalSize = halfMinWidth - padding;\n var seriesWithoutSize = 0;\n var holeSize;\n\n for (var i = 0; i < seriesCount; i++) {\n var currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n var innerRadius = holeSize;\n var margin = 0;\n var size, radius;\n\n this.seriesConfigs = [];\n\n for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n var currentSeries$1 = series[i$1];\n size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries$1.margin || 0;\n innerRadius = radius;\n }\n\n PieChart.prototype.reflow.call(this, targetBox);\n };\n\n DonutChart.prototype.animationDelay = function animationDelay (categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n };\n\n return DonutChart;\n}(PieChart));\n\n\nsetDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n});\n\nexport default DonutChart;\n","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nvar DonutPlotArea = (function (PiePlotArea) {\n function DonutPlotArea () {\n PiePlotArea.apply(this, arguments);\n }\n\n if ( PiePlotArea ) DonutPlotArea.__proto__ = PiePlotArea;\n DonutPlotArea.prototype = Object.create( PiePlotArea && PiePlotArea.prototype );\n DonutPlotArea.prototype.constructor = DonutPlotArea;\n\n DonutPlotArea.prototype.render = function render () {\n this.createDonutChart(this.series);\n };\n\n DonutPlotArea.prototype.createDonutChart = function createDonutChart (series) {\n var firstSeries = series[0];\n var donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n };\n\n // These were overriden in the Pie, so revert to original behavior\n DonutPlotArea.prototype.getPointBelow = function getPointBelow (point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n };\n\n DonutPlotArea.prototype.getPointAbove = function getPointAbove (point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n };\n\n return DonutPlotArea;\n}(PiePlotArea));\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nvar DEFAULT_PADDING = 0.15;\n\nvar PolarPlotAreaBase = (function (PlotAreaBase) {\n function PolarPlotAreaBase () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) PolarPlotAreaBase.__proto__ = PlotAreaBase;\n PolarPlotAreaBase.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n PolarPlotAreaBase.prototype.constructor = PolarPlotAreaBase;\n\n PolarPlotAreaBase.prototype.initFields = function initFields () {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n };\n\n PolarPlotAreaBase.prototype.render = function render () {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n };\n\n PolarPlotAreaBase.prototype.alignAxes = function alignAxes () {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).center;\n var axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n };\n\n PolarPlotAreaBase.prototype.createValueAxis = function createValueAxis () {\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n var axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n };\n\n PolarPlotAreaBase.prototype.reflowAxes = function reflowAxes () {\n var ref = this;\n var options = ref.options.plotArea;\n var valueAxis = ref.valueAxis;\n var polarAxis = ref.polarAxis;\n var box = ref.box;\n var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n var padding = getSpacing(options.padding || {}, defaultPadding);\n var paddingBox = box.clone().unpad(padding);\n var axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n };\n\n PolarPlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n return this.box;\n };\n\n PolarPlotAreaBase.prototype.detachLabels = function detachLabels () {};\n\n return PolarPlotAreaBase;\n}(PlotAreaBase));\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarScatterChart = (function (ScatterChart) {\n function PolarScatterChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) PolarScatterChart.__proto__ = ScatterChart;\n PolarScatterChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n PolarScatterChart.prototype.constructor = PolarScatterChart;\n\n PolarScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n var valueRadius = slotX.center.y - slotY.y1;\n var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n };\n\n return PolarScatterChart;\n}(ScatterChart));\n\nsetDefaultOptions(PolarScatterChart, {\n clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarLineChart = (function (ScatterLineChart) {\n function PolarLineChart () {\n ScatterLineChart.apply(this, arguments);\n }if ( ScatterLineChart ) PolarLineChart.__proto__ = ScatterLineChart;\n PolarLineChart.prototype = Object.create( ScatterLineChart && ScatterLineChart.prototype );\n PolarLineChart.prototype.constructor = PolarLineChart;\n\n \n\n return PolarLineChart;\n}(ScatterLineChart));\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nvar SplinePolarAreaSegment = (function (SplineAreaSegment) {\n function SplinePolarAreaSegment () {\n SplineAreaSegment.apply(this, arguments);\n }\n\n if ( SplineAreaSegment ) SplinePolarAreaSegment.__proto__ = SplineAreaSegment;\n SplinePolarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n SplinePolarAreaSegment.prototype.constructor = SplinePolarAreaSegment;\n\n SplinePolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n };\n\n SplinePolarAreaSegment.prototype._polarAxisCenter = function _polarAxisCenter () {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n return center;\n };\n\n SplinePolarAreaSegment.prototype.strokeSegments = function strokeSegments () {\n var segments = this._strokeSegments;\n\n if (!segments) {\n var center = this._polarAxisCenter();\n var curveProcessor = new CurveProcessor(false);\n var linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n };\n\n return SplinePolarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar PolarAreaSegment = (function (AreaSegment) {\n function PolarAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) PolarAreaSegment.__proto__ = AreaSegment;\n PolarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n PolarAreaSegment.prototype.constructor = PolarAreaSegment;\n\n PolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n var centerSegment = new geom.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n };\n\n return PolarAreaSegment;\n}(AreaSegment));\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nvar PolarAreaChart = (function (PolarLineChart) {\n function PolarAreaChart () {\n PolarLineChart.apply(this, arguments);\n }\n\n if ( PolarLineChart ) PolarAreaChart.__proto__ = PolarLineChart;\n PolarAreaChart.prototype = Object.create( PolarLineChart && PolarLineChart.prototype );\n PolarAreaChart.prototype.constructor = PolarAreaChart;\n\n PolarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n };\n\n PolarAreaChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n var missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n };\n\n PolarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n PolarAreaChart.prototype._hasMissingValuesGap = function _hasMissingValuesGap () {\n var this$1 = this;\n\n var series = this.options.series;\n\n for (var idx = 0; idx < series.length; idx++) {\n if (this$1.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n };\n\n PolarAreaChart.prototype.sortPoints = function sortPoints (points) {\n var this$1 = this;\n\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n var value = point.value;\n if (!hasValue(value.y) && this$1.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n };\n\n return PolarAreaChart;\n}(PolarLineChart));\n\nfunction xComparer(a, b) {\n return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\nimport XYPlotArea from './xy-plotarea';\n\nvar PolarPlotArea = (function (PolarPlotAreaBase) {\n function PolarPlotArea () {\n PolarPlotAreaBase.apply(this, arguments);\n }\n\n if ( PolarPlotAreaBase ) PolarPlotArea.__proto__ = PolarPlotAreaBase;\n PolarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n PolarPlotArea.prototype.constructor = PolarPlotArea;\n\n PolarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n var polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n };\n\n PolarPlotArea.prototype.render = function render () {\n this.series = [].concat( this.originalSeries );\n this.createTrendlineSeries();\n\n PolarPlotAreaBase.prototype.render.call(this);\n };\n\n PolarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n };\n\n PolarPlotArea.prototype.createValueAxis = function createValueAxis () {\n PolarPlotAreaBase.prototype.createValueAxis.call(this);\n this.axisY = this.valueAxis;\n };\n\n PolarPlotArea.prototype.trendlineFactory = function trendlineFactory (options, series) {\n var trendline = XYPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = POLAR_LINE;\n }\n\n return trendline;\n };\n\n PolarPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n PolarPlotArea.prototype.createCharts = function createCharts () {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n };\n\n PolarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n };\n\n PolarPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n };\n\n PolarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n };\n\n PolarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var xValue = this.axisX.getValue(point);\n var yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n };\n\n PolarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n return PolarPlotArea;\n}(PolarPlotAreaBase));\n\nsetDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin, {\n seriesValues: XYPlotArea.prototype.seriesValues\n});\n\nexport default PolarPlotArea;\n","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n var seriesSegments = [];\n for (var idx = 0; idx < segments.length; idx++) {\n var segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n}\n\nvar RadarLineChart = (function (LineChart) {\n function RadarLineChart () {\n LineChart.apply(this, arguments);\n }\n\n if ( LineChart ) RadarLineChart.__proto__ = LineChart;\n RadarLineChart.prototype = Object.create( LineChart && LineChart.prototype );\n RadarLineChart.prototype.constructor = RadarLineChart;\n\n RadarLineChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var valueRadius = categorySlot.center.y - valueSlot.y1;\n var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n };\n\n RadarLineChart.prototype.renderSegments = function renderSegments () {\n LineChart.prototype.renderSegments.call(this);\n\n if (this._segments && this._segments.length > 1) {\n var seriesSegments = groupBySeriesIx(this._segments);\n\n for (var idx = 0; idx < seriesSegments.length; idx++) {\n var segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n var firstPoint = segments[0].linePoints[0];\n var lastSegment = last(segments);\n var lastPoint = last(lastSegment.linePoints);\n var isFirstDataPoint = firstPoint.categoryIx === 0;\n var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n };\n\n RadarLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n var segment = new pointType(linePoints, currentSeries, seriesIx);\n var missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n };\n\n return RadarLineChart;\n}(LineChart));\n\nsetDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n});\n\nexport default RadarLineChart;\n","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nvar SplineRadarAreaSegment = (function (SplineAreaSegment) {\n function SplineRadarAreaSegment () {\n SplineAreaSegment.apply(this, arguments);\n }\n\n if ( SplineAreaSegment ) SplineRadarAreaSegment.__proto__ = SplineAreaSegment;\n SplineRadarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n SplineRadarAreaSegment.prototype.constructor = SplineRadarAreaSegment;\n\n SplineRadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n return SplineRadarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nvar RadarAreaSegment = (function (AreaSegment) {\n function RadarAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) RadarAreaSegment.__proto__ = AreaSegment;\n RadarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n RadarAreaSegment.prototype.constructor = RadarAreaSegment;\n\n RadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n return RadarAreaSegment;\n}(AreaSegment));\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nvar RadarAreaChart = (function (RadarLineChart) {\n function RadarAreaChart () {\n RadarLineChart.apply(this, arguments);\n }\n\n if ( RadarLineChart ) RadarAreaChart.__proto__ = RadarLineChart;\n RadarAreaChart.prototype = Object.create( RadarLineChart && RadarLineChart.prototype );\n RadarAreaChart.prototype.constructor = RadarAreaChart;\n\n RadarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n var stackPoints;\n var segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n };\n\n RadarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n return RadarAreaChart;\n}(RadarLineChart));\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarSegment = (function (DonutSegment) {\n function RadarSegment(value, options) {\n DonutSegment.call(this, value, null, options);\n }\n\n if ( DonutSegment ) RadarSegment.__proto__ = DonutSegment;\n RadarSegment.prototype = Object.create( DonutSegment && DonutSegment.prototype );\n RadarSegment.prototype.constructor = RadarSegment;\n\n RadarSegment.prototype.getIndex = function getIndex () {\n return this.categoryIx;\n };\n\n return RadarSegment;\n}(DonutSegment));\n\nsetDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nvar RadarClusterLayout = (function (ChartElement) {\n function RadarClusterLayout(options) {\n ChartElement.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n if ( ChartElement ) RadarClusterLayout.__proto__ = ChartElement;\n RadarClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n RadarClusterLayout.prototype.constructor = RadarClusterLayout;\n\n RadarClusterLayout.prototype.reflow = function reflow (sector) {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var gap = options.gap;\n var spacing = options.spacing;\n var count = children.length;\n var slots = count + gap + (spacing * (count - 1));\n var slotAngle = sector.angle / slots;\n var angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, function (child) {\n var slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n };\n\n return RadarClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nvar RadarStackLayout = (function (ChartElement) {\n function RadarStackLayout () {\n ChartElement.apply(this, arguments);\n }\n\n if ( ChartElement ) RadarStackLayout.__proto__ = ChartElement;\n RadarStackLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n RadarStackLayout.prototype.constructor = RadarStackLayout;\n\n RadarStackLayout.prototype.reflow = function reflow (sector) {\n var ref = this;\n var reverse = ref.options.reverse;\n var children = ref.children;\n var childrenCount = children.length;\n var first = reverse ? childrenCount - 1 : 0;\n var step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (var i = first; i >= 0 && i < childrenCount; i += step) {\n var childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n };\n\n return RadarStackLayout;\n}(ChartElement));\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarBarChart = (function (BarChart) {\n function RadarBarChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) RadarBarChart.__proto__ = BarChart;\n RadarBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n RadarBarChart.prototype.constructor = RadarBarChart;\n\n RadarBarChart.prototype.pointType = function pointType () {\n return RadarSegment;\n };\n\n RadarBarChart.prototype.clusterType = function clusterType () {\n return RadarClusterLayout;\n };\n\n RadarBarChart.prototype.stackType = function stackType () {\n return RadarStackLayout;\n };\n\n RadarBarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n };\n\n RadarBarChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var slot = categorySlot.clone();\n var y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n };\n\n RadarBarChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n };\n\n RadarBarChart.prototype.createAnimation = function createAnimation () {\n this.options.animation.center = this.box.toRect().center();\n BarChart.prototype.createAnimation.call(this);\n };\n\n return RadarBarChart;\n}(BarChart));\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nvar RadarPlotArea = (function (PolarPlotAreaBase) {\n function RadarPlotArea () {\n PolarPlotAreaBase.apply(this, arguments);\n }\n\n if ( PolarPlotAreaBase ) RadarPlotArea.__proto__ = PolarPlotAreaBase;\n RadarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n RadarPlotArea.prototype.constructor = RadarPlotArea;\n\n RadarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n var categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createTrendlineSeries();\n this.createCategoryAxesLabels();\n };\n\n RadarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n };\n\n RadarPlotArea.prototype.aggregateCategories = function aggregateCategories () {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n };\n\n RadarPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n };\n\n RadarPlotArea.prototype.filterSeries = function filterSeries (currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n };\n\n RadarPlotArea.prototype.trendlineFactory = function trendlineFactory (options, series) {\n var trendline = CategoricalPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = RADAR_LINE;\n }\n\n return trendline;\n };\n\n RadarPlotArea.prototype.createCharts = function createCharts () {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n };\n\n RadarPlotArea.prototype.chartOptions = function chartOptions (series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n };\n\n RadarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n };\n\n RadarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n };\n\n RadarPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n var filteredSeries = this.filterVisibleSeries(series);\n var anyStackedSeries = filteredSeries.some(function (s) { return s.stack; });\n var isStacked100 = filteredSeries.some(function (s) { return s.stack && s.stack.type === \"100%\"; });\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n options.defaultStack = firstSeries.stack && filteredSeries.length > 1;\n options.isStacked = anyStackedSeries && filteredSeries.length > 1;\n options.isStacked100 = isStacked100 && filteredSeries.length > 1;\n\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n };\n\n RadarPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis () {\n return this.categoryAxis;\n };\n\n RadarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var category = this.categoryAxis.getCategory(point);\n var value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n };\n\n RadarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n RadarPlotArea.prototype._pointsByVertical = function _pointsByVertical (basePoint) {\n return PolarPlotAreaBase.prototype._pointsByVertical.call(this, basePoint).sort(this._getSeriesCompareFn());\n };\n\n RadarPlotArea.prototype._getSeriesCompareFn = function _getSeriesCompareFn () {\n return function (a, b) { return b.value - a.value; };\n };\n\n return RadarPlotArea;\n}(PolarPlotAreaBase));\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints,\n seriesValues: CategoricalPlotArea.prototype.seriesValues\n});\n\nsetDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n});\n\nexport default RadarPlotArea;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions, getTemplate } from '../../common';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\nimport { CHART_POINT_CLASSNAME, CHART_POINT_ROLE, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\nimport { createPatternFill } from '../../core/pattern';\n\nvar FunnelSegment = (function (ChartElement) {\n function FunnelSegment(value, options, segmentOptions) {\n ChartElement.call(this, options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n }\n\n if ( ChartElement ) FunnelSegment.__proto__ = ChartElement;\n FunnelSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n FunnelSegment.prototype.constructor = FunnelSegment;\n\n FunnelSegment.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n } else if (options.format) {\n return this.formatValue(options.format);\n }\n\n return this.value;\n };\n\n FunnelSegment.prototype.reflow = function reflow (chartBox) {\n var points = this.points;\n var label = this.children[0];\n var x1 = Math.min(points[0].x, points[3].x);\n var x2 = Math.max(points[1].x, points[2].x);\n\n this.box = new Box(x1, points[0].y, x2, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n };\n\n FunnelSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var options = this.options;\n var visual;\n\n ChartElement.prototype.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: function () { return this$1.createPath(); }\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n };\n\n FunnelSegment.prototype.createPath = function createPath () {\n var options = this.options;\n var border = options.border;\n var path = draw.Path.fromPoints(this.points, {\n fill: createPatternFill(options.pattern, {\n color: options.color,\n opacity: options.opacity\n }),\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n };\n\n FunnelSegment.prototype.createHighlight = function createHighlight (style) {\n return draw.Path.fromPoints(this.points, style);\n };\n\n FunnelSegment.prototype.highlightVisual = function highlightVisual () {\n return this.visual.children[0];\n };\n\n FunnelSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var path = draw.Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n };\n\n FunnelSegment.prototype.createFocusHighlight = function createFocusHighlight (style) {\n var borderWidth = this.options.accessibility.highlight.border.width;\n var result = draw.Path.fromPoints(this.points, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n })).close();\n\n var clipPath = new draw.MultiPath();\n\n clipPath.paths.push(draw.Path.fromRect(this.box.clone().pad(borderWidth).toRect()));\n clipPath.paths.push(draw.Path.fromPoints(this.points));\n\n result.clip(clipPath);\n\n return result;\n };\n\n FunnelSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n var box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n };\n\n FunnelSegment.prototype.formatValue = function formatValue (format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n };\n\n FunnelSegment.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n };\n\n FunnelSegment.prototype.getIndex = function getIndex () {\n return this.index;\n };\n\n return FunnelSegment;\n}(ChartElement));\n\nsetDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n },\n labels: {\n format: \"\"\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\ndeepExtend(FunnelSegment.prototype, AccessibilityAttributesMixin);\n\nexport default FunnelSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nvar FunnelChart = (function (ChartElement) {\n function FunnelChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n }\n\n if ( ChartElement ) FunnelChart.__proto__ = ChartElement;\n FunnelChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n FunnelChart.prototype.constructor = FunnelChart;\n\n FunnelChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.plotArea.chartService.format.auto(format,point.value);\n };\n\n FunnelChart.prototype.render = function render () {\n var this$1 = this;\n\n var seriesIx = 0;\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n var series = options.series[seriesIx];\n var data = series.data;\n\n if (!data) {\n return;\n }\n\n var ref$1 = bindSegments(series);\n var total = ref$1.total;\n var points = ref$1.points;\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this$1,\n series: series,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n var value = pointData.valueFields.value;\n var segment = this$1.createSegment(value, fields);\n var label = this$1.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n };\n\n FunnelChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [\n \"data\", \"content\", \"template\", \"toggle\", \"visual\",\n \"ariaTemplate\", \"ariaContent\"\n ] });\n };\n\n FunnelChart.prototype.createSegment = function createSegment (value, fields) {\n var seriesOptions = deepExtend({}, fields.series);\n seriesOptions.pattern = fields.pattern || seriesOptions.pattern;\n\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n var segment = new FunnelSegment(value, seriesOptions, fields);\n Object.assign(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n };\n\n FunnelChart.prototype.createLabel = function createLabel (value, fields) {\n var series = fields.series;\n var dataItem = fields.dataItem;\n var labels = deepExtend({}, this.options.labels, series.labels);\n var text = value;\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n var textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n };\n\n FunnelChart.prototype.labelPadding = function labelPadding () {\n var labels = this.labels;\n var padding = { left: 0, right: 0 };\n\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n var align = label.options.align;\n if (align !== CENTER) {\n var width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n };\n\n FunnelChart.prototype.dynamicSlopeReflow = function dynamicSlopeReflow (box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var firstSegment = segments[0];\n var maxSegment = firstSegment;\n\n for (var idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n var previousOffset = (width - lastUpperSide) / 2;\n var previousHeight = 0;\n\n for (var idx$1 = 0; idx$1 < count; idx$1++) {\n var percentage = segments[idx$1].percentage;\n var nextSegment = segments[idx$1 + 1];\n var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n var points = segments[idx$1].points = [];\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n var offset = (void 0);\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n };\n\n FunnelChart.prototype.constantSlopeReflow = function constantSlopeReflow (box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var decreasingWidth = options.neckRatio <= 1;\n var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n var finalNarrow = (topMostWidth - neckRatio) / 2;\n var previousHeight = 0;\n\n for (var idx = 0; idx < count; idx++) {\n var points = segments[idx].points = [];\n var percentage = segments[idx].percentage;\n var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n };\n\n FunnelChart.prototype.reflow = function reflow (chartBox) {\n var points = this.points;\n var count = points.length;\n\n if (!count) {\n return;\n }\n\n var options = this.options;\n var box = chartBox.clone().unpad(this.labelPadding());\n var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n var width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (var idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n };\n\n return FunnelChart;\n}(ChartElement));\n\nsetDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import FunnelChart from './funnel-chart';\n\nvar MAX_NECK_RATIO = 1e6;\n\nvar PyramidChart = (function (FunnelChart) {\n function PyramidChart(plotArea, options) {\n options.dynamicSlope = false;\n options.neckRatio = MAX_NECK_RATIO;\n\n FunnelChart.call(this, plotArea, options);\n }\n\n if ( FunnelChart ) PyramidChart.__proto__ = FunnelChart;\n PyramidChart.prototype = Object.create( FunnelChart && FunnelChart.prototype );\n PyramidChart.prototype.constructor = PyramidChart;\n\n return PyramidChart;\n}(FunnelChart));\n\nexport default PyramidChart;\n","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\nimport PyramidChart from '../funnel-chart/pyramid-chart';\n\nimport { append } from '../../common';\nimport { filterSeriesByType } from '../utils';\n\nimport { FUNNEL, PYRAMID } from '../constants';\n\nvar FunnelPlotArea = (function (PlotAreaBase) {\n function FunnelPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) FunnelPlotArea.__proto__ = PlotAreaBase;\n FunnelPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n FunnelPlotArea.prototype.constructor = FunnelPlotArea;\n\n FunnelPlotArea.prototype.render = function render () {\n this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n };\n\n FunnelPlotArea.prototype.createChart = function createChart (chartType, series) {\n var firstSeries = series[0];\n if (!firstSeries) {\n return;\n }\n\n var chart = new chartType(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(chart);\n };\n\n FunnelPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n append(this.options.legend.data, chart.legendItems);\n };\n\n FunnelPlotArea.prototype._pointsByVertical = function _pointsByVertical (basePoint) {\n return this.pointsBySeriesIndex(basePoint.series.index);\n };\n\n FunnelPlotArea.prototype.getPointToTheRight = function getPointToTheRight (point) {\n return this.getPointBelow(point);\n };\n\n FunnelPlotArea.prototype.getPointToTheLeft = function getPointToTheLeft (point) {\n return this.getPointAbove(point);\n };\n\n return FunnelPlotArea;\n}(PlotAreaBase));\n\nexport default FunnelPlotArea;\n","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { CHART_POINT_CLASSNAME, CHART_POINT_ROLE, CHART_POINT_ROLE_DESCRIPTION, TOOLTIP_OFFSET } from '../constants';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar HeatmapPoint = (function (ChartElement) {\n function HeatmapPoint(value, options) {\n ChartElement.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n if ( ChartElement ) HeatmapPoint.__proto__ = ChartElement;\n HeatmapPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n HeatmapPoint.prototype.constructor = HeatmapPoint;\n\n HeatmapPoint.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n };\n\n HeatmapPoint.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n };\n\n HeatmapPoint.prototype.createLabelElement = function createLabelElement (options) {\n var labelColor = options.color;\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n return new TextBox(this.getLabelText(options),\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n },\n options, {\n color: labelColor\n }),\n this.pointData()\n );\n };\n\n HeatmapPoint.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n };\n\n HeatmapPoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n HeatmapPoint.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n };\n\n HeatmapPoint.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n this.addAccessibilityAttributesToVisual();\n };\n\n HeatmapPoint.prototype.markerBox = function markerBox () {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var rect = this.box.toRect();\n var type = valueOrDefault(markers.type, 'rect');\n var isRoundRect = type === ROUNDED_RECT;\n var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n var halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n var center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return rectToBox(rect);\n };\n\n HeatmapPoint.prototype.markerBorder = function markerBorder () {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n };\n\n HeatmapPoint.prototype.createMarker = function createMarker () {\n var options = this.options;\n var markerOptions = options.markers;\n var marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n pattern: options.pattern,\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n };\n\n HeatmapPoint.prototype.createHighlight = function createHighlight (style) {\n var options = this.options;\n var markerOptions = this.options.highlight.markers || this.options.markers;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n var visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n };\n\n HeatmapPoint.prototype.highlightVisual = function highlightVisual () {\n return this.rectVisual;\n };\n\n HeatmapPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n };\n\n HeatmapPoint.prototype.createFocusHighlight = function createFocusHighlight () {\n var markerOptions = this.options.markers;\n var highlightOptions = this.options.accessibility.highlight;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: highlightOptions.color,\n border: highlightOptions.border,\n borderRadius: markerOptions.borderRadius,\n padding: highlightOptions.border.width / 2,\n zIndex: highlightOptions.zIndex\n });\n\n highlight.reflow(this.markerBox());\n\n return highlight.getElement();\n };\n\n HeatmapPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var left = this.box.center().x;\n var top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n };\n\n HeatmapPoint.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n HeatmapPoint.prototype.unclipElements = function unclipElements () {\n /* noop, clip labels */\n };\n\n HeatmapPoint.prototype.pointData = function pointData () {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n };\n\n return HeatmapPoint;\n}(ChartElement));\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\ndeepExtend(HeatmapPoint.prototype, AccessibilityAttributesMixin);\n\nHeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\nexport default HeatmapPoint;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nvar HeatmapChart = (function (ChartElement) {\n function HeatmapChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n if ( ChartElement ) HeatmapChart.__proto__ = ChartElement;\n HeatmapChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n HeatmapChart.prototype.constructor = HeatmapChart;\n\n HeatmapChart.prototype._initFields = function _initFields () {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n };\n\n HeatmapChart.prototype.render = function render () {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n HeatmapChart.prototype.setRange = function setRange () {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n var valueFields = ref$1.valueFields;\n if (defined(valueFields.value) && valueFields.value !== null) {\n this$1.valueRange.min = Math.min(this$1.valueRange.min, valueFields.value);\n this$1.valueRange.max = Math.max(this$1.valueRange.max, valueFields.value);\n }\n }\n }\n };\n\n HeatmapChart.prototype.addValue = function addValue (value, fields) {\n var point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n Object.assign(point, fields);\n }\n }\n\n this.points.push(point);\n };\n\n HeatmapChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"drilldownSeriesFactory\",\n \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n };\n\n HeatmapChart.prototype.pointType = function pointType () {\n return HeatmapPoint;\n };\n\n HeatmapChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return Object.assign({}, options);\n };\n\n HeatmapChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions.pattern = fields.pattern || pointOptions.pattern;\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n var scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n var point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n HeatmapChart.prototype.seriesAxes = function seriesAxes (series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n };\n\n HeatmapChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var ref = this$1.seriesAxes(fields.series);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n var indexX = xAxis.categoryIndex(value.x);\n var indexY = yAxis.categoryIndex(value.y);\n var slotX = xAxis.getSlot(indexX, indexX, limit);\n var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n };\n\n HeatmapChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n HeatmapChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var ref$1 = this$1.seriesAxes(currentSeries);\n var xAxis = ref$1.xAxis;\n var yAxis = ref$1.yAxis;\n var xRange = xAxis.currentRangeIndices();\n var yRange = yAxis.currentRangeIndices();\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$2 = this$1.plotArea.bindPoint(currentSeries, pointIx);\n var value = ref$2.valueFields;\n var fields = ref$2.fields;\n var xIndex = xAxis.totalIndex(value.x);\n var yIndex = yAxis.totalIndex(value.y);\n var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n var yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1\n }, fields));\n }\n }\n }\n };\n\n HeatmapChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n };\n\n HeatmapChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n };\n\n return HeatmapChart;\n}(ChartElement));\nsetDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n});\n\nexport default HeatmapChart;\n","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nvar colorScale = function (color, minLightnessOffset) {\n if ( minLightnessOffset === void 0 ) minLightnessOffset = 0.05;\n\n var baseColor = parseColor(color);\n var offset = 1 - minLightnessOffset;\n\n return function (value) {\n var hsl = baseColor.toHSL();\n var range = 100 - hsl.l;\n var point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n};\n\nexport default colorScale;\n","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet, cycleIndex } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { dateEquals } from '../../date-utils';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nvar HeatmapPlotArea = (function (PlotAreaBase) {\n function HeatmapPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) HeatmapPlotArea.__proto__ = PlotAreaBase;\n HeatmapPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n HeatmapPlotArea.prototype.constructor = HeatmapPlotArea;\n\n HeatmapPlotArea.prototype.initFields = function initFields () {\n this.namedXAxes = {};\n this.namedYAxes = {};\n };\n\n HeatmapPlotArea.prototype.render = function render (panes) {\n if ( panes === void 0 ) panes = this.panes;\n\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n };\n\n HeatmapPlotArea.prototype.bindCategories = function bindCategories () {\n var this$1 = this;\n\n var series = this.srcSeries || this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var data = currentSeries.data || [];\n var ref = this$1.seriesAxes(currentSeries);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n\n var xCategories = createHashSet(xAxis.categories || []);\n var yCategories = createHashSet(yAxis.categories || []);\n\n for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n var x = ref$1.x;\n var y = ref$1.y;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n };\n\n HeatmapPlotArea.prototype.createCharts = function createCharts (panes) {\n var this$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n };\n\n HeatmapPlotArea.prototype.createHeatmapChart = function createHeatmapChart (series, pane) {\n var chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n };\n\n HeatmapPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n HeatmapPlotArea.prototype.seriesAxes = function seriesAxes (series) {\n var xAxis;\n var yAxis;\n\n var options = this.options;\n\n var xAxisOptions = [].concat(options.xAxis);\n var xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n } else {\n xAxis = xAxisOptions[0];\n }\n\n var yAxisOptions = [].concat(options.yAxis);\n var yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(function (axis) { return axis.name === yAxisName; });\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n };\n\n HeatmapPlotArea.prototype.createAxisLabels = function createAxisLabels () {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n };\n\n HeatmapPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var axisOptions = Object.assign({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n var axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.indexCategories();\n\n return axis;\n };\n\n HeatmapPlotArea.prototype.createAxes = function createAxes (panes) {\n var this$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n };\n\n HeatmapPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n };\n\n HeatmapPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n };\n\n HeatmapPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n };\n\n HeatmapPlotArea.prototype.crosshairOptions = function crosshairOptions (axis) {\n // Stack the crosshair above the series points.\n return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n };\n\n HeatmapPlotArea.prototype._pointsByVertical = function _pointsByVertical (basePoint, offset) {\n var this$1 = this;\n if ( offset === void 0 ) offset = 0;\n\n var normalizedOffset = this.axisX.options.reverse ? offset * -1 : offset;\n var axisXItems = this.axisX.children;\n var xIndex = this._getPointAxisXIndex(basePoint) + normalizedOffset;\n\n xIndex = cycleIndex(xIndex, axisXItems.length);\n var targetXValue = axisXItems[xIndex].value;\n\n var points = this\n .filterPoints(function (point) { return compareValues(point.pointData().x, targetXValue); })\n .sort(function (a, b) { return this$1._getPointAxisYIndex(a) - this$1._getPointAxisYIndex(b); });\n\n if (this.axisY.options.reverse) {\n return points.reverse();\n }\n\n return points;\n };\n\n HeatmapPlotArea.prototype._pointsByHorizontal = function _pointsByHorizontal (basePoint, offset) {\n var this$1 = this;\n if ( offset === void 0 ) offset = 0;\n\n var normalizedOffset = this.axisY.options.reverse ? offset * -1 : offset;\n var axisYItems = this.axisY.children;\n var yIndex = this._getPointAxisYIndex(basePoint) + normalizedOffset;\n\n yIndex = cycleIndex(yIndex, axisYItems.length);\n var targetYValue = axisYItems[yIndex].value;\n\n var points = this\n .filterPoints(function (point) { return compareValues(point.pointData().y, targetYValue); })\n .sort(function (a, b) { return this$1._getPointAxisXIndex(a) - this$1._getPointAxisXIndex(b); });\n\n if (this.axisX.options.reverse) {\n return points.reverse();\n }\n\n return points;\n };\n\n HeatmapPlotArea.prototype._getPointAxisXIndex = function _getPointAxisXIndex (point) {\n return this._getPointAxisIndex(this.axisX, point.pointData().x);\n };\n\n HeatmapPlotArea.prototype._getPointAxisYIndex = function _getPointAxisYIndex (point) {\n return this._getPointAxisIndex(this.axisY, point.pointData().y);\n };\n\n HeatmapPlotArea.prototype._getPointAxisIndex = function _getPointAxisIndex (axis, pointValue) {\n return axis.children.findIndex(function (axisItem) { return compareValues(pointValue, axisItem.value); });\n };\n\n return HeatmapPlotArea;\n}(PlotAreaBase));\n\nfunction compareValues(a, b) {\n if (a instanceof Date && b instanceof Date) {\n return dateEquals(a, b);\n }\n\n return a === b;\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, PYRAMID, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP, DRILLDOWN_FIELD, TRENDLINE_SERIES, PATTERN_FIELD } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nvar COLOR = \"color\";\nvar FIRST = \"first\";\nvar FROM = \"from\";\nvar MAX = \"max\";\nvar MIN = \"min\";\nvar NOTE_TEXT = \"noteText\";\nvar SUMMARY_FIELD = \"summary\";\nvar TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(RadarPlotArea, [\n RADAR_AREA, RADAR_COLUMN, RADAR_LINE ].concat( TRENDLINE_SERIES\n));\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD, DRILLDOWN_FIELD, PATTERN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD, PATTERN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD, PATTERN_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD, PATTERN_FIELD ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ CATEGORY, COLOR, DRILLDOWN_FIELD, PATTERN_FIELD ]);\n\nSeriesBinder.current.register(\n [ FUNNEL, PYRAMID ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD, PATTERN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT, PATTERN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT, PATTERN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT, PATTERN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD, PATTERN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD, PATTERN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD, PATTERN_FIELD ]\n);\n","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport isDateAxis from './utils/is-date-axis';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY,\n ARROW_DOWN, ARROW_UP, ARROW_LEFT, ARROW_RIGHT, ARIA_ACTIVE_DESCENDANT, TAB, TOP, LEFT, BLACK,\n ENTER, ESCAPE, BOTTOM } from '../common/constants';\nimport { addClass, removeClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, round,\n valueOrDefault, isString, cycleUp, cycleDown, hasOwnProperty, hasClasses } from '../common';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n RENDER, CATEGORY, PIE, DONUT, FUNNEL, PYRAMID, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER,\n SERIES_OVER, SERIES_LEAVE, SERIES_CLICK, DRILLDOWN, LEGEND_ITEM_CLICK } from './constants';\n\nimport './animations';\nimport './register-charts';\nimport { parseDateCategory } from './utils';\n\nvar AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nvar MOUSEDOWN = \"mousedown\";\nvar MOUSEMOVE = \"mousemove\";\nvar CONTEXTMENU = \"contextmenu\";\nvar MOUSELEAVE = \"mouseleave\";\nvar KEYDOWN = \"keydown\";\nvar FOCUS = \"focus\";\nvar BLUR = \"blur\";\nvar MOUSEMOVE_DELAY = 20;\nvar NO_DATA_OVERLAY_TOP_CLASS = \"k-chart-overlay-top\";\n\nvar Chart = (function (Class) {\n function Chart(element, userOptions, themeOptions, context) {\n var this$1 = this;\n if ( context === void 0 ) context = {};\n\n Class.call(this);\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n var options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n this._focusState = {};\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n FontLoader.preloadFonts(userOptions, function () {\n this$1.fontLoaded = true;\n if (!this$1._destroyed) {\n this$1.trigger('init');\n this$1._redraw();\n this$1._attachEvents();\n this$1._restoreOverlayElement();\n }\n });\n }\n\n if ( Class ) Chart.__proto__ = Class;\n Chart.prototype = Object.create( Class && Class.prototype );\n Chart.prototype.constructor = Chart;\n\n Chart.prototype._initElement = function _initElement (element) {\n var this$1 = this;\n\n this._setElementClass(element);\n element.style.position = \"relative\";\n element.tabIndex = element.getAttribute(\"tabindex\") ? element.getAttribute(\"tabindex\") : 0;\n // To support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the document role as a fallback value, in the form role=\"graphics-document document\".\n element.setAttribute(\"role\", \"graphics-document document\");\n\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n\n if (!hasClasses(child, \"k-chart-overlay\")) {\n element.removeChild(child);\n } else {\n // this is necessary if the overlay is rendered server-side, e.g. in blazor\n // but drawing the surface clears the contents of the element\n // and thus the no data overlay is lost\n this$1.overlayElement = child;\n }\n }\n\n this.element = element;\n };\n\n Chart.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, \"k-chart\");\n };\n\n Chart.prototype._restoreOverlayElement = function _restoreOverlayElement () {\n if (!this.overlayElement) {\n return;\n }\n\n if (this._hasSeriesData()) {\n this.overlayElement.style.display = \"none\";\n } else {\n if (!this.options.title || (this.options.title && this.options.title.position !== BOTTOM)) {\n addClass(this.overlayElement, NO_DATA_OVERLAY_TOP_CLASS);\n } else {\n removeClass(this.overlayElement, NO_DATA_OVERLAY_TOP_CLASS);\n }\n\n this.overlayElement.style.display = \"\";\n }\n\n if (this.overlayElement.parentElement !== this.element) {\n this.element.appendChild(this.overlayElement);\n }\n };\n\n Chart.prototype._hasSeriesData = function _hasSeriesData () {\n var series = this.options.series || [];\n var hasData = series.length > 0 && series.some(function (x) { return x.data && x.data.length > 0; });\n return hasData;\n };\n\n Chart.prototype._initTheme = function _initTheme (options, themeOptions) {\n var seriesCopies = [];\n var series = options.series || [];\n\n for (var i = 0; i < series.length; i++) {\n seriesCopies.push(Object.assign({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n if (isString(options.title)) {\n options.title = { text: options.title };\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n };\n\n Chart.prototype.getSize = function getSize () {\n var chartArea = this.options.chartArea || {};\n var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n };\n\n Chart.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this._size;\n var hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && find(this._selections, function (s) { return !s.visible; })) {\n this._destroySelections();\n this._setupSelection();\n }\n };\n\n Chart.prototype._resize = function _resize () {\n this._noTransitionsRedraw();\n };\n\n Chart.prototype.redraw = function redraw (paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n };\n\n Chart.prototype.getAxis = function getAxis (name) {\n return findAxisByName(name, this._plotArea.axes);\n };\n\n Chart.prototype.findAxisByName = function findAxisByName (name) {\n return this.getAxis(name);\n };\n\n Chart.prototype.findPaneByName = function findPaneByName (name) {\n var panes = this._plotArea.panes;\n\n for (var idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n };\n\n Chart.prototype.findPaneByIndex = function findPaneByIndex (idx) {\n var panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n };\n\n Chart.prototype.plotArea = function plotArea () {\n return new ChartPlotArea(this._plotArea);\n };\n\n Chart.prototype.toggleHighlight = function toggleHighlight (show, filter) {\n var plotArea = this._plotArea;\n var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n var points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n var seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (inArray(firstSeries.type, [ PIE, FUNNEL, PYRAMID ])) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n };\n\n Chart.prototype.togglePointsHighlight = function togglePointsHighlight (show, points) {\n var highlight = this._highlight;\n for (var idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n };\n\n Chart.prototype.showTooltip = function showTooltip (filter) {\n var shared = this._sharedTooltip();\n var ref = this;\n var tooltip = ref._tooltip;\n var plotArea = ref._plotArea;\n var point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n };\n\n Chart.prototype.hideTooltip = function hideTooltip () {\n this._tooltip.hide();\n };\n\n Chart.prototype._initSurface = function _initSurface () {\n var surface = this.surface;\n var wrap = this._surfaceWrap();\n\n var chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = draw.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n\n // Override the surface _kendoExportVisual in order to accept export options with size.\n this.element._kendoExportVisual = this._kendoExportVisual.bind(this);\n };\n\n Chart.prototype._surfaceWrap = function _surfaceWrap () {\n return this.element;\n };\n\n Chart.prototype._redraw = function _redraw () {\n var model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._setElementAccessibilityAttributes();\n\n this._model = model;\n this._plotArea = model._plotArea;\n this._legend = model._legend;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n this._setComputedStyles();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n\n this._redrawFocusHighlight();\n };\n\n Chart.prototype._setComputedStyles = function _setComputedStyles () {\n var titleHeight = this.titleHeight();\n this.element.style.setProperty('--kendo-chart-computed-title-height', (titleHeight + \"px\"));\n };\n\n Chart.prototype._redrawFocusHighlight = function _redrawFocusHighlight () {\n if (this._destroyed) {\n return;\n }\n\n var ref = this;\n var ref_focusState = ref._focusState;\n var legendInFocus = ref_focusState.legendInFocus;\n var preserveHighlight = ref_focusState.preserveHighlight;\n\n if (legendInFocus && preserveHighlight) {\n this._focusElement(this._getFocusedLegendItem(), false);\n this._focusState.preserveHighlight = false;\n }\n };\n\n Chart.prototype._setElementAccessibilityAttributes = function _setElementAccessibilityAttributes () {\n var titleOptions = this.options.title;\n var title = isString(titleOptions) ? titleOptions : (titleOptions.description || titleOptions.text);\n\n if (title) {\n this.element.setAttribute(\"aria-roledescription\", title);\n }\n };\n\n Chart.prototype._kendoExportVisual = function _kendoExportVisual (size) {\n if (size && size.width && size.height) {\n var chartArea = this._originalOptions.chartArea || {};\n var exportOptions = {\n width: chartArea.width || size.width,\n height: chartArea.height || size.height\n };\n\n return this.exportVisual(exportOptions);\n }\n\n return this.exportVisual();\n };\n\n Chart.prototype.exportVisual = function exportVisual (exportOptions) {\n var visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n var currentOptions = this.options;\n var options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n var model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n };\n\n Chart.prototype._sharedTooltip = function _sharedTooltip () {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n };\n\n Chart.prototype._createPannable = function _createPannable () {\n var options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n };\n\n Chart.prototype._createZoomSelection = function _createZoomSelection () {\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n };\n\n Chart.prototype._createMousewheelZoom = function _createMousewheelZoom () {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n };\n\n Chart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n var pannable = this.options.pannable;\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n var mousewheel = (zoomable || {}).mousewheel;\n var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n var element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n };\n\n Chart.prototype._toggleDomEvents = function _toggleDomEvents (drag, zoom) {\n var domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n };\n\n Chart.prototype._createTooltip = function _createTooltip () {\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n };\n\n Chart.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n return new SharedTooltip(this._plotArea, options);\n };\n\n Chart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n };\n\n Chart.prototype.applySeriesColors = function applySeriesColors () {\n var options = this.options;\n var series = options.series;\n var colors = options.seriesColors || [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var seriesColor = colors[i % colors.length];\n var defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n };\n\n Chart.prototype._getModel = function _getModel () {\n var options = this.options;\n var plotArea = this._createPlotArea();\n var model = new RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n var title = Title.buildTitle(options.title);\n var subtitle = Title.buildTitle(options.subtitle, {\n align: options.title.align,\n position: options.title.position\n });\n model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n if (options.legend && options.legend.visible) {\n var legend = new Legend(plotArea.options.legend, this.chartService);\n model.append(legend);\n model._legend = legend;\n }\n model.append(plotArea);\n model.reflow();\n\n this._setTitleBox(title, subtitle);\n\n return model;\n };\n\n Chart.prototype._setTitleBox = function _setTitleBox (title, subtitle) {\n if (!title && !subtitle) {\n return;\n }\n\n this._titleBox = (title || subtitle).box.clone();\n\n var titlePosition = title ? title.options.position : '';\n var subtitlePosition = subtitle ? subtitle.options.position : '';\n var samePosition = titlePosition === subtitlePosition;\n var subtitleAtTop = subtitlePosition !== BOTTOM;\n\n if (samePosition && subtitle) {\n this._titleBox.wrap(subtitle.box);\n } else if (title && subtitle && subtitleAtTop) {\n this._titleBox = subtitle.box.clone();\n }\n };\n\n Chart.prototype._modelOptions = function _modelOptions () {\n var options = this.options;\n var size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || DEFAULT_WIDTH,\n height: size.height || DEFAULT_HEIGHT\n }, options.chartArea);\n };\n\n Chart.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n var options = this.options;\n\n var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n };\n\n Chart.prototype._setupSelection = function _setupSelection () {\n var this$1 = this;\n\n var ref = this;\n var axes = ref._plotArea.axes;\n var selections = this._selections = [];\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n var range = axis.range();\n\n var selection = new Selection(this$1, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n };\n\n Chart.prototype._selectStart = function _selectStart (e) {\n return this.trigger(SELECT_START, e);\n };\n\n Chart.prototype._select = function _select (e) {\n return this.trigger(SELECT, e);\n };\n\n Chart.prototype._selectEnd = function _selectEnd (e) {\n return this.trigger(SELECT_END, e);\n };\n\n Chart.prototype._initHandlers = function _initHandlers () {\n this._clickHandler = this._click.bind(this);\n this._keydownHandler = this._keydown.bind(this);\n this._focusHandler = this._focus.bind(this);\n this._blurHandler = this._blur.bind(this);\n this._mousedownHandler = this._mousedown.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n };\n\n Chart.prototype.addObserver = function addObserver (observer) {\n if (observer) {\n this.observers.push(observer);\n }\n };\n\n Chart.prototype.removeObserver = function removeObserver (observer) {\n var index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n Chart.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n var observers = this.observers;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n };\n\n Chart.prototype.trigger = function trigger (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n } else if (name === SERIES_OVER) {\n this._updateDrilldownPoint(args.point);\n } else if (name === SERIES_LEAVE) {\n this._resetDrilldownPoint();\n } else if (name === SERIES_CLICK) {\n this._focusPoint(args.point);\n this._startDrilldown(args.point);\n } else if (name === LEGEND_ITEM_CLICK) {\n this._focusLegendItem(args);\n }\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n };\n\n Chart.prototype.titleHeight = function titleHeight () {\n if (!this._titleBox) {\n return 0;\n }\n\n return this._titleBox.height();\n };\n\n Chart.prototype._attachEvents = function _attachEvents () {\n var obj, obj$1;\n\n var element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj[ KEYDOWN ] = this._keydownHandler, obj[ MOUSEDOWN ] = this._mousedownHandler, obj[ FOCUS ] = this._focusHandler, obj[ BLUR] = this._blurHandler, obj ));\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n\n this.domEvents = DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n };\n\n Chart.prototype._mouseleave = function _mouseleave (e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotAreaHovered) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n\n if (this._hasInactiveOpacity() && this._activeChartInstance) {\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._updateSeriesOpacity(null, true);\n }\n };\n\n Chart.prototype._cancelDomEvents = function _cancelDomEvents () {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n };\n\n Chart.prototype._gesturestart = function _gesturestart (e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this._clearFocusedElement();\n this.surface.suspendTracking();\n }\n };\n\n Chart.prototype._gestureend = function _gestureend (e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n };\n\n Chart.prototype._gesturechange = function _gesturechange (e) {\n var mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n var previousGestureDistance = this._gestureDistance;\n var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n var coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n };\n\n Chart.prototype._mouseout = function _mouseout (e) {\n if (e.element) {\n var element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n };\n\n Chart.prototype._start = function _start (e) {\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n };\n\n Chart.prototype._move = function _move (e) {\n var ref = this;\n var state = ref._navState;\n var pannable = ref._pannable;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n var ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n var ranges$1 = {};\n var axes = state.axes;\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n var axis = currentAxis.options.vertical ? e.y : e.x;\n var delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges$1;\n this.trigger(DRAG, {\n axisRanges: ranges$1,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n };\n\n Chart.prototype._end = function _end (e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n var pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n var ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n };\n\n Chart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n var selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (var idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n };\n\n Chart.prototype._mousewheelZoomRate = function _mousewheelZoomRate () {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n };\n\n Chart.prototype._mousewheel = function _mousewheel (e) {\n var this$1 = this;\n\n var delta = mousewheelDelta(e);\n var mousewheelZoom = this._mousewheelZoom;\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this._clearFocusedElement();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1.trigger(ZOOM_END, args);\n this$1._zooming = false;\n if (this$1.surface) {\n this$1.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n var state = this._navState;\n if (!state) {\n var prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n var totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n var axes = this._navState.axes;\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n };\n\n Chart.prototype._startNavigation = function _startNavigation (e, coords, chartEvent) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPointPane(coords);\n var axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n var ranges = axisRanges(axes);\n\n var prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n };\n\n Chart.prototype._endNavigation = function _endNavigation (e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n };\n\n Chart.prototype._getChartElement = function _getChartElement (e, match) {\n var element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n };\n\n Chart.prototype._drawingChartElement = function _drawingChartElement (element, e, match) {\n var current = element;\n var chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n };\n\n Chart.prototype._eventCoordinates = function _eventCoordinates (e) {\n var coordinates = eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n };\n\n Chart.prototype._elementPadding = function _elementPadding () {\n if (!this._padding) {\n var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n };\n\n Chart.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n var padding = this._elementPadding();\n var offset = elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n };\n\n // TODO: Breaking change due to peer version change\n // Reuse by exposing _surfacePoint on Surface\n Chart.prototype._toModelCoordinates = function _toModelCoordinates (clientX, clientY) {\n var element = this.element;\n var offset = elementOffset(element);\n var padding = this._elementPadding();\n var inverseTransform = elementScale(element).invert();\n var point = new geometry.Point(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n };\n\n Chart.prototype._tap = function _tap (e) {\n var this$1 = this;\n\n var drawingElement = this.surface.eventTarget(e);\n var element = this._drawingChartElement(drawingElement, e);\n var sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(function () {\n this$1.handlingTap = false;\n }, 0);\n };\n\n Chart.prototype._click = function _click (e) {\n var element = this._getChartElement(e);\n this._propagateClick(element, e);\n };\n\n Chart.prototype._propagateClick = function _propagateClick (element, e) {\n var this$1 = this;\n\n var current = element;\n while (current) {\n if (current.click) {\n current.click(this$1, e);\n }\n\n current = current.parent;\n }\n };\n\n Chart.prototype._isLegendBeforeChart = function _isLegendBeforeChart () {\n var ref = this;\n var legendPosition = ref.options.legend.position;\n var legend = ref._legend;\n\n return legend && legend.hasItems() && (legendPosition === TOP || legendPosition === LEFT);\n };\n\n Chart.prototype._focus = function _focus () {\n if (!this._preventInitialPointFocus) {\n if (this._isLegendBeforeChart()) {\n this._focusFirstLegendItem();\n } else {\n this._focusFirstPoint();\n }\n }\n\n this._preventInitialPointFocus = false;\n };\n\n Chart.prototype._keydown = function _keydown (e) {\n var ref = this;\n var ref_focusState = ref._focusState;\n var legendInFocus = ref_focusState.legendInFocus;\n var focusedElement = ref_focusState.focusedElement;\n var legend = ref._legend;\n\n if (e.key === TAB) {\n this._clearFocusedElement();\n var isLegendBeforeChart = this._isLegendBeforeChart();\n\n if (legendInFocus && isLegendBeforeChart !== e.shiftKey) {\n this._navigatePoints(e);\n } else if (!legendInFocus && isLegendBeforeChart === e.shiftKey && legend.hasItems()) {\n this._navigateLegend(e);\n }\n } else if (e.key === ESCAPE) {\n if (focusedElement) {\n e.stopPropagation();\n }\n\n if (this._tooltip && this._tooltip.visible) {\n this._hideTooltip();\n } else {\n this._blur();\n }\n } else if (e.key === ENTER) {\n if (focusedElement) {\n this._focusState.preserveHighlight = true;\n this._propagateClick(focusedElement, e);\n this._focusElement(focusedElement);\n }\n } else if (!legendInFocus) {\n this._navigatePoints(e);\n } else {\n this._navigateLegend(e);\n }\n };\n\n Chart.prototype._navigatePoints = function _navigatePoints (e) {\n var this$1 = this;\n\n var ref = this;\n var focusState = ref._focusState;\n var plotArea = ref._plotArea;\n\n focusState.legendInFocus = false;\n\n if (!focusState.focusedElement) {\n this._focusFirstPoint();\n e.preventDefault();\n return;\n }\n\n var moveFocus = function (point) {\n focusState.focusedPoint = point;\n\n this$1._focusElement(focusState.focusedPoint);\n this$1._displayTooltip(point);\n e.preventDefault();\n };\n\n switch (e.key) {\n case ARROW_RIGHT:\n moveFocus(plotArea.getPointToTheRight(focusState.focusedPoint));\n break;\n case ARROW_LEFT:\n moveFocus(plotArea.getPointToTheLeft(focusState.focusedPoint));\n break;\n case ARROW_DOWN:\n moveFocus(plotArea.getPointBelow(focusState.focusedPoint));\n break;\n case ARROW_UP:\n moveFocus(plotArea.getPointAbove(focusState.focusedPoint));\n break;\n default:\n break;\n }\n };\n\n Chart.prototype._navigateLegend = function _navigateLegend (e) {\n var this$1 = this;\n\n var ref = this;\n var focusState = ref._focusState;\n var legend = ref._legend;\n var rtl = ref.chartService.rtl;\n\n focusState.legendInFocus = true;\n\n if (!focusState.focusedElement) {\n this._focusFirstLegendItem();\n e.preventDefault();\n return;\n }\n\n var itemsLength = legend.getItems().length;\n var moveFocus = function (cycleFunc) {\n focusState.focusedLegendItemIndex = cycleFunc(\n focusState.focusedLegendItemIndex,\n itemsLength\n );\n this$1._focusElement(this$1._getFocusedLegendItem());\n e.preventDefault();\n };\n\n switch (e.key) {\n case ARROW_UP:\n case ARROW_LEFT:\n moveFocus(rtl ? cycleUp : cycleDown);\n break;\n case ARROW_DOWN:\n case ARROW_RIGHT:\n moveFocus(rtl ? cycleDown : cycleUp);\n break;\n default:\n break;\n }\n };\n\n Chart.prototype._focusFirstPoint = function _focusFirstPoint () {\n var point = this._focusState.focusedPoint = this._plotArea.getFirstPoint();\n\n if (point) {\n this._focusElement(point);\n this._displayTooltip(point);\n }\n };\n\n Chart.prototype._hasFocus = function _hasFocus () {\n return this.element.ownerDocument.activeElement === this.element;\n };\n\n Chart.prototype._mousedown = function _mousedown () {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n }\n };\n\n Chart.prototype._focusChart = function _focusChart () {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n this.element.focus();\n }\n };\n\n Chart.prototype._focusPoint = function _focusPoint (point) {\n this._focusState.focusedPoint = point;\n\n this._focusChart();\n\n this._focusElement(point, true);\n };\n\n Chart.prototype._focusFirstLegendItem = function _focusFirstLegendItem () {\n var ref = this;\n var focusState = ref._focusState;\n\n focusState.focusedLegendItemIndex = 0;\n this._focusElement(this._getFocusedLegendItem());\n focusState.legendInFocus = true;\n\n this._hideTooltip();\n };\n\n Chart.prototype._focusLegendItem = function _focusLegendItem (args) {\n var ref = this;\n var focusState = ref._focusState;\n\n focusState.focusedLegendItemIndex = this._legend\n .getItems()\n .findIndex(function (x) { return x.options.series.index === args.seriesIndex\n && x.options.pointIndex === args.pointIndex; });\n\n focusState.legendInFocus = true;\n\n this._focusChart();\n\n this._focusElement(this._getFocusedLegendItem(), true);\n };\n\n Chart.prototype._getFocusedLegendItem = function _getFocusedLegendItem () {\n var ref = this;\n var focusState = ref._focusState;\n var legend = ref._legend;\n\n return legend.getItems()[focusState.focusedLegendItemIndex];\n };\n\n Chart.prototype._focusElement = function _focusElement (element, omitHighlight) {\n var ref = this;\n var focusState = ref._focusState;\n\n this._clearFocusedElement();\n\n if (!element) {\n return;\n }\n\n focusState.focusedElement = element;\n\n this._setElementActiveDescendant(element);\n\n if (!omitHighlight) {\n element.focusVisual();\n\n if (focusState.legendInFocus) {\n var options = element.options;\n\n this._showSeriesInactiveOpacity(options.series.index, options.pointIndex);\n } else {\n this._showInactiveOpacity(element);\n }\n }\n };\n\n Chart.prototype._clearFocusedElement = function _clearFocusedElement () {\n var ref = this;\n var focusState = ref._focusState;\n\n if (!focusState) {\n return;\n }\n\n if (focusState.focusedElement && focusState.focusedElement.clearFocusFromVisual) {\n focusState.focusedElement.clearFocusFromVisual();\n this._clearElementActiveDescendant();\n }\n\n focusState.focusedElement = null;\n };\n\n Chart.prototype._setElementActiveDescendant = function _setElementActiveDescendant (element) {\n if (this.options.renderAs === \"canvas\") {\n this._pseudoFocusedElement = this._createPseudoFocusedElement(element);\n this.element.append(this._pseudoFocusedElement);\n }\n\n this.element.setAttribute(ARIA_ACTIVE_DESCENDANT, element._id);\n };\n\n Chart.prototype._clearElementActiveDescendant = function _clearElementActiveDescendant () {\n if (this._pseudoFocusedElement) {\n this._pseudoFocusedElement.remove();\n this._pseudoFocusedElement = null;\n }\n\n this.element.removeAttribute(ARIA_ACTIVE_DESCENDANT);\n };\n\n Chart.prototype._createPseudoFocusedElement = function _createPseudoFocusedElement (element) {\n var pseudoElement = document.createElement(\"div\");\n var accessibilityOptions = element.options.accessibility;\n\n pseudoElement.id = element._id;\n pseudoElement.setAttribute(\"aria-label\", element.getAriaLabelText());\n pseudoElement.setAttribute(\"role\", accessibilityOptions.role);\n pseudoElement.setAttribute(\"aria-roledescription\", accessibilityOptions.ariaRoleDescription);\n\n var checked = accessibilityOptions.ariaChecked;\n if (defined(checked)) {\n pseudoElement.setAttribute(\"aria-checked\", checked);\n }\n\n return pseudoElement;\n };\n\n Chart.prototype._blur = function _blur () {\n this._focusState.legendInFocus = false;\n this._clearFocusedElement();\n this._hideInactiveOpacity();\n };\n\n Chart.prototype._startHover = function _startHover (element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n var point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n var activePoint = this._activePoint;\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n this._showInactiveOpacity(point);\n }\n }\n\n return point;\n };\n\n Chart.prototype._displayTooltip = function _displayTooltip (point) {\n var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n if (this._sharedTooltip() && point.box) {\n this._trackSharedTooltip(point.box.center(), {});\n } else {\n this._tooltip.show(point);\n }\n }\n };\n\n Chart.prototype._hideTooltip = function _hideTooltip () {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n };\n\n Chart.prototype._displayInactiveOpacity = function _displayInactiveOpacity (activePoint, multipleSeries, highlightPoints) {\n var chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n var inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n };\n\n Chart.prototype._getInactivePoints = function _getInactivePoints (activePoint, chartInstance) {\n var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(function (point) { return point !== activePoint; });\n };\n\n Chart.prototype._getAllPointsOfType = function _getAllPointsOfType (container, type) {\n var this$1 = this;\n\n var points = [];\n\n for (var i = 0; i < container.children.length; i++) {\n var element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this$1._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n };\n\n Chart.prototype._updateHoveredPoint = function _updateHoveredPoint (point, e) {\n var hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n };\n\n Chart.prototype._updateDrilldownPoint = function _updateDrilldownPoint (point) {\n if (!point || !point.series) {\n return;\n }\n\n var ref = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n var fields = ref.fields;\n if (fields.drilldown) {\n this._drilldownState = { cursor: this.element.style.cursor };\n this.element.style.cursor = 'pointer';\n }\n };\n\n Chart.prototype._resetDrilldownPoint = function _resetDrilldownPoint () {\n if (this._drilldownState) {\n this.element.style.cursor = this._drilldownState.cursor;\n this._drilldownState = null;\n }\n };\n\n Chart.prototype._startDrilldown = function _startDrilldown (point) {\n if (!point || !point.series) {\n return;\n }\n\n var series = point.series;\n var ref = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n var fields = ref.fields;\n var value = fields.drilldown;\n if (value) {\n var args = { series: series, point: point, value: value, sender: this };\n this.trigger(DRILLDOWN, args);\n }\n };\n\n Chart.prototype._updateSeriesOpacity = function _updateSeriesOpacity (point, resetOpacity) {\n var this$1 = this;\n\n var plotArea = this._plotArea;\n var length = plotArea.series.length;\n\n for (var i = 0; i < length; i++) {\n var currSeries = plotArea.series[i];\n var defaultOpacity = this$1._getDefaultOpacityForSeries(currSeries);\n var inactiveOpacity = this$1._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n };\n\n Chart.prototype._applySeriesOpacity = function _applySeriesOpacity (elements, activeSeries, reset, series) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var currSeries = element.series || series;\n var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n var opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n };\n\n Chart.prototype._chartInstanceFromPoint = function _chartInstanceFromPoint (point) {\n var chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n };\n\n Chart.prototype._showInactiveOpacity = function _showInactiveOpacity (point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n };\n\n Chart.prototype._hideInactiveOpacity = function _hideInactiveOpacity (point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n if (hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n };\n\n Chart.prototype._hasInactiveOpacity = function _hasInactiveOpacity () {\n var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n };\n\n Chart.prototype._getInactiveOpacityForSeries = function _getInactiveOpacityForSeries (series) {\n var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n };\n\n Chart.prototype._getDefaultOpacityForSeries = function _getDefaultOpacityForSeries (series) {\n return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n };\n\n Chart.prototype._mouseover = function _mouseover (e) {\n var obj;\n\n var point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n }\n };\n\n Chart.prototype._mouseMoveTracking = function _mouseMoveTracking (e) {\n var obj;\n\n var ref = this;\n var options = ref.options;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n var point = ref._activePoint;\n var coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n };\n\n Chart.prototype._mousemove = function _mousemove (e) {\n var coords = this._eventCoordinates(e);\n var plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n var overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n this._plotAreaHovered = true;\n this._plotArea.hover(this, e);\n } else if (this._plotAreaHovered && !overPlotArea) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n };\n\n Chart.prototype._trackCrosshairs = function _trackCrosshairs (coords) {\n var crosshairs = this._plotArea.crosshairs;\n\n for (var i = 0; i < crosshairs.length; i++) {\n var current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n };\n\n Chart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var plotArea = ref._plotArea;\n var categoryAxis = ref._plotArea.categoryAxis;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n var index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n var points = plotArea.pointsByCategoryIndex(index);\n var pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n var hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n };\n\n Chart.prototype.hideElements = function hideElements (options) {\n var plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n };\n\n Chart.prototype._unsetActivePoint = function _unsetActivePoint (options) {\n var ref = this;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (!options || !options.keepTooltipOpen) {\n this._hideTooltip();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n };\n\n Chart.prototype._deferRedraw = function _deferRedraw () {\n this._redraw();\n };\n\n Chart.prototype._clearRedrawTimeout = function _clearRedrawTimeout () {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n };\n\n Chart.prototype.bindCategories = function bindCategories () {\n var this$1 = this;\n\n var options = this.options;\n var definitions = [].concat(options.categoryAxis);\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this$1.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n };\n\n Chart.prototype.bindCategoryAxisFromSeries = function bindCategoryAxisFromSeries (axis, axisIx) {\n var this$1 = this;\n\n var uniqueCategories = new Set();\n var seriesOnAxis = this.options.series.filter(function (series) { return series.categoryAxis === axis.name || (!series.categoryAxis && axisIx === 0); });\n var hasCategoryBinding = seriesOnAxis.some(function (series) { return Boolean(series.categoryField); });\n var seriesWithData = seriesOnAxis.filter(function (series) { return series.data && series.data.length > 0; });\n var categorySamples = seriesWithData.map(function (series) { return SeriesBinder.current.bindPoint(series, 0).fields.category; });\n var dateAxis = categorySamples.reduce(function (result, firstCategory) { return result || isDateAxis(axis, firstCategory); }, false);\n var seriesWithBinding = seriesWithData.filter(function (series, seriesIx) { return series.categoryField || defined(categorySamples[seriesIx]); });\n\n seriesWithBinding.forEach(function (series) { return series.data.forEach(function (row, index) {\n var category = SeriesBinder.current.bindPoint(series, index).fields.category;\n if (dateAxis) {\n var date = parseDateCategory(category, row, this$1.chartService.intl);\n category = date ? date.getTime() : undefined;\n }\n\n uniqueCategories.add(category);\n }); });\n\n if (uniqueCategories.size > 0) {\n var categories = Array.from(uniqueCategories.values());\n if (dateAxis) {\n categories = categories.sort().map(function (time) { return time && new Date(time); });\n }\n\n axis.categories = categories;\n } else if (hasCategoryBinding) {\n axis.categories = [];\n }\n };\n\n Chart.prototype._isBindable = function _isBindable (series) {\n var valueFields = SeriesBinder.current.valueFields(series);\n var result = true;\n\n for (var i = 0; i < valueFields.length; i++) {\n var field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n };\n\n Chart.prototype._noTransitionsRedraw = function _noTransitionsRedraw () {\n var options = this.options;\n var transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n };\n\n Chart.prototype._legendItemHover = function _legendItemHover (seriesIndex, pointIndex) {\n this._showSeriesInactiveOpacity(seriesIndex, pointIndex);\n };\n\n Chart.prototype._showSeriesInactiveOpacity = function _showSeriesInactiveOpacity (seriesIndex, pointIndex) {\n var ref = this;\n var plotArea = ref._plotArea;\n var highlight = ref._highlight;\n var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n var items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL, PYRAMID ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n var multipleSeries = plotArea.series.length > 1;\n var point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n };\n\n Chart.prototype._shouldAttachMouseMove = function _shouldAttachMouseMove () {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n };\n\n Chart.prototype.updateMouseMoveHandler = function updateMouseMoveHandler () {\n var obj, obj$1;\n\n unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n };\n\n Chart.prototype.applyOptions = function applyOptions (options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n };\n\n Chart.prototype.setOptions = function setOptions (options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n this._restoreOverlayElement();\n };\n\n Chart.prototype.setDirection = function setDirection (rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n };\n\n Chart.prototype.setIntlService = function setIntlService (intl) {\n this.chartService.intl = intl;\n };\n\n Chart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n this._noTransitionsRedraw();\n };\n\n Chart.prototype.destroy = function destroy () {\n var obj, obj$1;\n\n this._destroyed = true;\n\n unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj[ KEYDOWN ] = this._keydownHandler, obj[ FOCUS ] = this._focusHandler, obj[ BLUR] = this._blurHandler, obj ));\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n }\n\n this._focusState = null;\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n };\n\n Chart.prototype._destroySurface = function _destroySurface () {\n var surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n };\n\n Chart.prototype._destroySelections = function _destroySelections () {\n var selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n };\n\n Chart.prototype._destroyView = function _destroyView () {\n var model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._resetDrilldownPoint();\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n };\n\n return Chart;\n}(Class));\n\nfunction resolveAxisAliases(options) {\n var aliases = AXIS_NAMES;\n\n for (var idx = 0; idx < aliases.length; idx++) {\n var alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n}\n\nfunction pointByCategoryName(points, name) {\n if (points) {\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n var axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n var axisColor = (axisOptions || {}).color || axisDefaults.color;\n var result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n var series = options.series;\n var seriesLength = series.length;\n var seriesDefaults = options.seriesDefaults;\n var commonDefaults = deepExtend({}, options.seriesDefaults);\n var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (var i = 0; i < seriesLength; i++) {\n var seriesType = series[i].type || options.seriesDefaults.type;\n\n var baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n}\n\nvar DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n for (var field in options) {\n if (!inArray(field, DATA_FIELDS) && hasOwnProperty(options, field)) {\n var fieldValue = options[field];\n var originalValue = originalOptions[field];\n if (defined(originalValue)) {\n var nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n}\n\nfunction triggerPaneRender(panes) {\n for (var idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n}\n\nsetDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {},\n accessibility: {\n highlight: {\n border: {\n opacity: 1,\n color: BLACK,\n width: 2\n }\n }\n }\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n },\n accessibility: {\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n zIndex: 200\n }\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n});\n\nexport default Chart;\n","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nvar INITIAL_ANIMATION_DURATION = 600;\nvar FADEIN = \"fadeIn\";\n\nvar GLASS = \"glass\";\nvar BORDER_BRIGHTNESS = 0.8;\nvar TOOLTIP_OFFSET = 5;\nvar START_SCALE = browser.msie ? 0.001 : 0;\nvar ERROR_LOW_FIELD = \"errorLow\";\nvar ERROR_HIGH_FIELD = \"errorHigh\";\nvar X_ERROR_LOW_FIELD = \"xErrorLow\";\nvar X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nvar Y_ERROR_LOW_FIELD = \"yErrorLow\";\nvar Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nvar LINE_MARKER_SIZE = 8;\nvar ZERO = \"zero\";\nvar INTERPOLATE = \"interpolate\";\nvar GAP = \"gap\";\nvar ABOVE = \"above\";\nvar BELOW = \"below\";\nvar BOTTOM = \"bottom\";\n\nvar SMOOTH = \"smooth\";\nvar STEP = \"step\";\n\nvar AREA = \"area\";\nvar BAR = \"bar\";\nvar BOX_PLOT = \"boxPlot\";\nvar BUBBLE = \"bubble\";\nvar BULLET = \"bullet\";\nvar CANDLESTICK = \"candlestick\";\nvar COLUMN = \"column\";\nvar DONUT = \"donut\";\nvar FUNNEL = \"funnel\";\nvar PYRAMID = \"pyramid\";\nvar HEATMAP = \"heatmap\";\nvar HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nvar LINE = \"line\";\nvar OHLC = \"ohlc\";\nvar PIE = \"pie\";\nvar POLAR_AREA = \"polarArea\";\nvar POLAR_LINE = \"polarLine\";\nvar POLAR_SCATTER = \"polarScatter\";\nvar RADAR_AREA = \"radarArea\";\nvar RADAR_COLUMN = \"radarColumn\";\nvar RADAR_LINE = \"radarLine\";\nvar RANGE_AREA = \"rangeArea\";\nvar RANGE_BAR = \"rangeBar\";\nvar RANGE_COLUMN = \"rangeColumn\";\nvar SCATTER = \"scatter\";\nvar SCATTER_LINE = \"scatterLine\";\nvar VERTICAL_AREA = \"verticalArea\";\nvar VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nvar VERTICAL_BULLET = \"verticalBullet\";\nvar VERTICAL_LINE = \"verticalLine\";\nvar VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nvar WATERFALL = \"waterfall\";\nvar EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nvar TRENDLINE_EXPONENTIAL = 'exponentialTrendline';\nvar TRENDLINE_LINEAR = 'linearTrendline';\nvar TRENDLINE_LOGARITHMIC = 'logarithmicTrendline';\nvar TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\nvar TRENDLINE_POLYNOMIAL = 'polynomialTrendline';\nvar TRENDLINE_POWER = 'powerTrendline';\nvar TRENDLINE_SERIES = [\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n];\n\nvar LEGEND_ITEM_CLICK = \"legendItemClick\";\nvar LEGEND_ITEM_HOVER = \"legendItemHover\";\nvar LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nvar SERIES_CLICK = \"seriesClick\";\nvar SERIES_HOVER = \"seriesHover\";\nvar SERIES_OVER = \"seriesOver\";\nvar SERIES_LEAVE = \"seriesLeave\";\nvar PLOT_AREA_CLICK = \"plotAreaClick\";\nvar PLOT_AREA_HOVER = \"plotAreaHover\";\nvar PLOT_AREA_LEAVE = \"plotAreaLeave\";\nvar DRAG = \"drag\";\nvar DRAG_END = \"dragEnd\";\nvar DRAG_START = \"dragStart\";\nvar ZOOM_START = \"zoomStart\";\nvar ZOOM = \"zoom\";\nvar ZOOM_END = \"zoomEnd\";\nvar SELECT_START = \"selectStart\";\nvar SELECT = \"select\";\nvar SELECT_END = \"selectEnd\";\nvar RENDER = \"render\";\nvar SHOW_TOOLTIP = \"showTooltip\";\nvar HIDE_TOOLTIP = \"hideTooltip\";\nvar PANE_RENDER = \"paneRender\";\n\n\nvar CHART_POINT_ROLE = \"graphics-symbol\";\nvar CHART_POINT_CLASSNAME = \"k-chart-point\";\nvar CHART_POINT_ROLE_DESCRIPTION = \"Point\";\nvar LEGEND_ITEM_ROLE = \"checkbox\";\nvar LEGEND_ITEM_CLASSNAME = \"k-chart-legend-item\";\nvar LEGEND_ITEM_ARIA_ROLE_DESCRIPTION = \"Legend item\";\n\nvar LOGARITHMIC = \"log\";\nvar CATEGORY = \"category\";\n\nvar INSIDE_END = \"insideEnd\";\nvar INSIDE_BASE = \"insideBase\";\nvar OUTSIDE_END = \"outsideEnd\";\n\nvar MOUSEWHEEL = \"wheel\";\nvar MOUSEWHEEL_DELAY = 150;\nvar MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nvar DRILLDOWN = \"drilldown\";\nvar DRILLDOWN_FIELD = \"drilldown\";\nvar PATTERN_FIELD = \"pattern\";\n\nvar MIN_MOVING_AVERAGE_PERIOD = 2;\n\nexport {\n INITIAL_ANIMATION_DURATION, FADEIN,\n LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE,\n GLASS, BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n SMOOTH, STEP, CATEGORY, FUNNEL, PYRAMID,\n BAR, CANDLESTICK, PIE, COLUMN, AREA,\n VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n SHOW_TOOLTIP, HIDE_TOOLTIP,\n EQUALLY_SPACED_SERIES,\n ABOVE, BELOW, BOTTOM,\n HEATMAP,\n DRILLDOWN, DRILLDOWN_FIELD,\n MIN_MOVING_AVERAGE_PERIOD,\n TRENDLINE_SERIES,\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER,\n PATTERN_FIELD,\n CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION,\n LEGEND_ITEM_ROLE, LEGEND_ITEM_CLASSNAME,\n LEGEND_ITEM_ARIA_ROLE_DESCRIPTION\n};\n","import { ShapeElement } from '../../core';\nimport { deepExtend, setDefaultOptions } from '../../common';\nimport { CROSS, LEFT, TOP, WHITE } from '../../common/constants';\nimport { valueOrDefault } from '../../drawing-utils';\n\nexport var DEFAULT_MARKER_SIZE = 10;\nexport var DEFAULT_MARKER_BORDER_WIDTH = 2;\n\nvar LegendItemMarker = (function (ShapeElement) {\n function LegendItemMarker () {\n ShapeElement.apply(this, arguments);\n }\n\n if ( ShapeElement ) LegendItemMarker.__proto__ = ShapeElement;\n LegendItemMarker.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n LegendItemMarker.prototype.constructor = LegendItemMarker;\n\n LegendItemMarker.prototype.visualStyle = function visualStyle () {\n var options = this.markerOptions();\n var border = options.border;\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n };\n\n LegendItemMarker.prototype.markerOptions = function markerOptions () {\n return this.options;\n };\n\n LegendItemMarker.prototype.markerHighlightOptions = function markerHighlightOptions () {\n var options = this.markerOptions();\n var borderWidth = options.highlight.border.width;\n\n return deepExtend(\n {},\n options,\n { background: options.border.color },\n options.highlight,\n options.type === CROSS ? {\n background: options.highlight.border.color,\n border: { color: options.highlight.background, width: borderWidth / 2 },\n width: options.width,\n height: options.height,\n margin: { top: 0, left: 0 }\n } : {}\n );\n };\n\n LegendItemMarker.prototype.createHighlight = function createHighlight () {\n var highlight = new ShapeElement(this.markerHighlightOptions());\n var box = this.paddingBox.clone();\n highlight.reflow(box.pad(highlight.options.border.width));\n this.highlight = [ highlight.getElement() ];\n\n return this.highlight;\n };\n\n return LegendItemMarker;\n}(ShapeElement));\n\nsetDefaultOptions(LegendItemMarker, {\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH\n },\n width: DEFAULT_MARKER_SIZE - DEFAULT_MARKER_BORDER_WIDTH,\n height: DEFAULT_MARKER_SIZE - DEFAULT_MARKER_BORDER_WIDTH,\n background: WHITE,\n margin: {\n top: -1,\n left: -1\n },\n vAlign: TOP,\n align: LEFT,\n highlight: {\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n color: WHITE,\n width: DEFAULT_MARKER_BORDER_WIDTH\n }\n }\n});\n\nexport default LegendItemMarker;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport ShapeElement from \"../../core/shape-element\";\nimport { setDefaultOptions } from '../../common';\nimport { BOTTOM, RIGHT } from '../../common/constants';\n\nvar MarkerLineArea = (function (ShapeElement) {\n function MarkerLineArea () {\n ShapeElement.apply(this, arguments);\n }\n\n if ( ShapeElement ) MarkerLineArea.__proto__ = ShapeElement;\n MarkerLineArea.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n MarkerLineArea.prototype.constructor = MarkerLineArea;\n\n MarkerLineArea.prototype.getElement = function getElement () {\n var group = new draw.Group();\n var element = new draw.MultiPath(this.visualStyle());\n var ref = this;\n var box = ref.paddingBox;\n var halfHeight = box.height() / 2;\n\n element\n .moveTo(box.x1, box.y1 + halfHeight)\n .lineTo(box.x1, box.y2)\n .lineTo(box.x2, box.y2);\n\n group.append(element);\n\n return group;\n };\n\n return MarkerLineArea;\n}(ShapeElement));\n\nsetDefaultOptions(MarkerLineArea, {\n width: 15,\n height: 15,\n align: RIGHT,\n vAlign: BOTTOM,\n margin: {\n right: -2,\n bottom: 2\n }\n});\n\nexport default MarkerLineArea;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport ShapeElement from \"../../core/shape-element\";\nimport { deepExtend, setDefaultOptions } from '../../common';\nimport { CENTER, CIRCLE, LEFT, RECT, TOP, WHITE } from \"../../common/constants\";\nimport MarkerLineArea from \"./legend-item-line-area\";\nimport { DEFAULT_MARKER_BORDER_WIDTH, DEFAULT_MARKER_SIZE } from \"./legend-item-marker\";\n\nvar LegendItemLine = (function (ShapeElement) {\n function LegendItemLine () {\n ShapeElement.apply(this, arguments);\n }\n\n if ( ShapeElement ) LegendItemLine.__proto__ = ShapeElement;\n LegendItemLine.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n LegendItemLine.prototype.constructor = LegendItemLine;\n\n LegendItemLine.prototype.getElement = function getElement () {\n var group = new draw.Group();\n var element = new draw.MultiPath({\n stroke: {\n color: this.options.border.color,\n opacity: this.options.opacity,\n width: this.options.height,\n dashType: this.options.dashType\n }\n });\n var box = this.paddingBox;\n var centerY = box.center().y;\n\n element\n .moveTo(box.x1, centerY)\n .lineTo(box.x2, centerY);\n\n group.append(element);\n\n return group;\n };\n\n LegendItemLine.prototype.createHighlight = function createHighlight () {\n this.highlight = [ this.createHighlightLine(), this.createHighlightMarker() ];\n return this.highlight;\n };\n\n LegendItemLine.prototype.createHighlightLine = function createHighlightLine () {\n var options = deepExtend({}, {\n border: {\n color: this.options.border.color,\n opacity: this.options.border.opacity,\n dashType: this.options.border.dashType\n }\n }, this.options.highlight);\n var highlightLine = new MarkerLineArea(options);\n highlightLine.reflow(this.parent.paddingBox.clone());\n\n this.highlightLine = highlightLine.getElement();\n\n return this.highlightLine;\n };\n\n LegendItemLine.prototype.createHighlightMarker = function createHighlightMarker () {\n var options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n var highlightMarker = new ShapeElement(options);\n var paddingBox = this.parent.paddingBox;\n var borderWidth = options.border.width;\n var box = this.parent.box.clone();\n\n box.pad({\n left: borderWidth - paddingBox.x1,\n top: borderWidth - paddingBox.y1\n });\n\n highlightMarker.reflow(box);\n this.highlightMarker = highlightMarker.getElement();\n\n return this.highlightMarker;\n };\n\n return LegendItemLine;\n}(ShapeElement));\n\nsetDefaultOptions(LegendItemLine, {\n border: {\n width: 0\n },\n type: RECT,\n align: LEFT,\n vAlign: CENTER,\n highlight: {\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH\n },\n markers: {\n type: CIRCLE,\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH,\n color: WHITE\n },\n align: LEFT,\n vAlign: TOP\n }\n }\n});\n\nexport default LegendItemLine;\n","import ShapeElement from \"../../core/shape-element\";\nimport { deepExtend, setDefaultOptions } from '../../common';\nimport { CIRCLE, LEFT, TOP, WHITE, X, Y } from \"../../common/constants\";\nimport { DEFAULT_MARKER_BORDER_WIDTH, DEFAULT_MARKER_SIZE } from \"./legend-item-marker\";\n\nvar LegendItemSquare = (function (ShapeElement) {\n function LegendItemSquare () {\n ShapeElement.apply(this, arguments);\n }\n\n if ( ShapeElement ) LegendItemSquare.__proto__ = ShapeElement;\n LegendItemSquare.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n LegendItemSquare.prototype.constructor = LegendItemSquare;\n\n LegendItemSquare.prototype.createHighlight = function createHighlight () {\n var options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n var highlight = new ShapeElement(options);\n\n var box = this.paddingBox.clone();\n var targetBox = this.parent.box.clone();\n box.align(targetBox, X, LEFT);\n box.align(targetBox, Y, TOP);\n highlight.reflow(box);\n\n this.highlight = [ highlight.getElement() ];\n\n return this.highlight;\n };\n\n return LegendItemSquare;\n}(ShapeElement));\n\nsetDefaultOptions(LegendItemSquare, {\n highlight: {\n markers: {\n type: CIRCLE,\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH,\n color: WHITE\n },\n margin: {\n top: -3,\n left: -3\n }\n }\n }\n});\n\nexport default LegendItemSquare;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, TextBox } from '../../core';\nimport { AREA, LEGEND_ITEM_ARIA_ROLE_DESCRIPTION, LEGEND_ITEM_CLASSNAME, LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE, LEGEND_ITEM_ROLE, LINE } from '../constants';\nimport { BOTTOM, CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\nimport addAccessibilityAttributesToVisual from '../../core/utils/add-accessibility-attributes-to-visual';\nimport guid from '../../core/utils/guid';\nimport LegendItemMarker from './legend-item-marker';\nimport MarkerLineArea from './legend-item-line-area';\nimport LegendItemLine from './legend-item-line';\nimport LegendItemSquare from './legend-item-square';\n\nvar LegendItem = (function (BoxElement) {\n function LegendItem(options) {\n BoxElement.call(this, options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n\n this._id = guid();\n this.options.accessibility.ariaChecked = options.active;\n }\n\n if ( BoxElement ) LegendItem.__proto__ = BoxElement;\n LegendItem.prototype = Object.create( BoxElement && BoxElement.prototype );\n LegendItem.prototype.constructor = LegendItem;\n\n LegendItem.prototype.createContainer = function createContainer () {\n this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n };\n\n LegendItem.prototype.createMarker = function createMarker () {\n this.markerWrap = new BoxElement({ vertical: false, shrinkToFit: true, wrap: false, margin: 1, width: 22, height: 22 });\n this.container.append(this.markerWrap);\n\n this.createMarkerArea();\n\n if (this.options.markers.visible) {\n this._marker = this._createMarker();\n this.markerWrap.append(this._marker);\n }\n };\n\n LegendItem.prototype.createMarkerArea = function createMarkerArea () {\n var options = this.options;\n var markerColor = options.markerColor;\n var line = options.line; if ( line === void 0 ) line = {};\n var lineOptions = {\n border: {\n color: line.color || markerColor,\n opacity: line.opacity,\n dashType: line.dashType\n }\n };\n return this._createLine(lineOptions) ||\n this._createMarkerLine(lineOptions, line) ||\n this._createSquare();\n };\n\n LegendItem.prototype.markerOptions = function markerOptions () {\n var options = this.options;\n var markers = options.markers; if ( markers === void 0 ) markers = {};\n var markerColor = options.markerColor;\n var border = markers.border; if ( border === void 0 ) border = {};\n markers.zIndex = undefined;\n\n return deepExtend({}, markers, {\n border: { color: border.color || markerColor },\n highlight: options.highlight.markers\n });\n };\n\n LegendItem.prototype._highlightOptions = function _highlightOptions () {\n var options = this.options;\n return deepExtend(\n { markers: { type: options.markers.type } },\n options.highlight\n );\n };\n\n LegendItem.prototype._createLine = function _createLine (lineOptions) {\n var options = this.options;\n if (options.type === LINE && !options.markers.visible) {\n this._line = new LegendItemLine(deepExtend({}, {\n background: options.markerColor,\n highlight: this._highlightOptions(),\n }, lineOptions, options.line));\n\n this.markerWrap.append(this._line);\n }\n return this._line;\n };\n\n LegendItem.prototype._createMarkerLine = function _createMarkerLine (lineOptions, line) {\n var options = this.options;\n if (options.type === LINE) {\n this._markerLineArea = new MarkerLineArea(deepExtend({}, {\n border: {\n width: line.height\n }\n }, lineOptions));\n\n this.markerWrap.append(this._markerLineArea);\n }\n\n return this._markerLineArea;\n };\n\n LegendItem.prototype._reduceSize = function _reduceSize (object, prop, factor) {\n if ( factor === void 0 ) factor = 0.6;\n\n if (typeof object[prop] === 'number') {\n object[prop] = object[prop] * factor;\n }\n };\n\n LegendItem.prototype._createSquare = function _createSquare () {\n var options = this.options;\n if (options.type === AREA) {\n var pattern = options.pattern || (options.series || {}).pattern;\n if (pattern) {\n if (typeof pattern === 'function') {\n pattern = pattern(options.series);\n }\n pattern = structuredClone(pattern);\n this._reduceSize(pattern, 'gap');\n this._reduceSize(pattern, 'width');\n this._reduceSize(pattern, 'radius');\n }\n\n this._square = new LegendItemSquare(Object.assign({}, {border: options.border,\n vAlign: options.markers.visible ? BOTTOM : CENTER,\n highlight: this._highlightOptions()},\n options.area,\n {pattern: pattern,\n background: options.area.background || options.markerColor}));\n this.markerWrap.append(this._square);\n }\n return this._square;\n };\n\n LegendItem.prototype._createMarker = function _createMarker () {\n return new LegendItemMarker(this.markerOptions());\n };\n\n LegendItem.prototype._highlightMarkers = function _highlightMarkers () {\n if (this.options.active) {\n this._toggleHighlight(true);\n }\n };\n\n LegendItem.prototype._restoreMarkers = function _restoreMarkers () {\n this._toggleHighlight(false);\n };\n\n LegendItem.prototype._toggleHighlight = function _toggleHighlight (show) {\n var this$1 = this;\n\n if (!this.options.highlight.visible) {\n return;\n }\n\n var element = this._marker || this._square || this._line;\n\n if (element && element === this._line) {\n this._line.visual.visible(!show);\n }\n\n if (element) {\n var highlight = element.highlight;\n\n if (!highlight) {\n highlight = element.createHighlight();\n highlight.forEach(function (h) { return h && this$1.markerWrap.appendVisual(h); });\n }\n\n highlight.forEach(function (h) { return h && h.visible(show); });\n }\n };\n\n LegendItem.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n };\n\n LegendItem.prototype.getAriaLabelText = function getAriaLabelText () {\n return this.options.text;\n };\n\n LegendItem.prototype.focusVisual = function focusVisual () {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n this._highlightMarkers();\n };\n\n LegendItem.prototype.clearFocusFromVisual = function clearFocusFromVisual () {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n this._restoreMarkers();\n };\n\n LegendItem.prototype.renderComplete = function renderComplete () {\n BoxElement.prototype.renderComplete.call(this);\n\n var cursor = this.options.cursor || {};\n var eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n };\n\n LegendItem.prototype.click = function click (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n };\n\n LegendItem.prototype.over = function over (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n this._highlightMarkers();\n }\n\n // Don't trigger point hover for legend items\n return true;\n };\n\n LegendItem.prototype.out = function out (widget, e) {\n widget._unsetActivePoint();\n this._restoreMarkers();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n };\n\n LegendItem.prototype.eventArgs = function eventArgs (e) {\n var options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n };\n\n LegendItem.prototype.createVisual = function createVisual () {\n BoxElement.prototype.createVisual.call(this);\n var options = this.options;\n\n if (this.options.visible) {\n var accessibilityOptions = deepExtend({\n ariaLabel: options.accessibility.ariaLabel !== undefined ? options.accessibility.ariaLabel : options.text\n }, options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n }\n };\n\n LegendItem.prototype.renderVisual = function renderVisual () {\n var this$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n type: options.type,\n // Passing the markerColor as a background option for backwards compatibility.\n // Example in jq docs - https://docs.telerik.com/kendo-ui/api/javascript/dataviz/ui/chart/configuration/legend.item#legenditemvisual\n markers: deepExtend({ background: this.options.markerColor }, this.markerOptions()),\n labels: options.labels\n },\n createVisual: function () {\n this$1.createVisual();\n this$1.renderChildren();\n this$1.renderComplete();\n\n var defaultVisual = this$1.visual;\n\n delete this$1.visual;\n\n return defaultVisual;\n }\n });\n this._marker = this._markerLineArea = this._square = this._line = null;\n this.addVisual();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n LegendItem.prototype.createFocusHighlight = function createFocusHighlight (style) {\n var borderWidth = style.stroke.width;\n return draw.Path.fromRect(this.container.box.pad(borderWidth / 2).toRect(), style);\n };\n\n return LegendItem;\n}(BoxElement));\n\nsetDefaultOptions(LegendItem, {\n accessibility: {\n role: LEGEND_ITEM_ROLE,\n className: LEGEND_ITEM_CLASSNAME,\n ariaRoleDescription: LEGEND_ITEM_ARIA_ROLE_DESCRIPTION\n },\n markers: {},\n highlight: {\n visible: true,\n markers: {}\n }\n});\n\nexport default LegendItem;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\nimport { CENTER, HORIZONTAL, START, END, VERTICAL } from '../../common/constants';\n\nvar alignItems = function (rtl) { return (rtl ? END : START); };\n\nvar LegendLayout = (function (ChartElement) {\n function LegendLayout(options, chartService) {\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n }\n\n if ( ChartElement ) LegendLayout.__proto__ = ChartElement;\n LegendLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n LegendLayout.prototype.constructor = LegendLayout;\n\n LegendLayout.prototype.render = function render () {\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var vertical = options.vertical;\n\n this.visual = new draw.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? VERTICAL : HORIZONTAL,\n reverse: options.rtl,\n alignItems: vertical ? alignItems(options.rtl) : CENTER\n });\n\n for (var idx = 0; idx < children.length; idx++) {\n var legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n };\n\n LegendLayout.prototype.reflow = function reflow (box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n var bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n };\n\n LegendLayout.prototype.renderVisual = function renderVisual () {\n this.addVisual();\n };\n\n LegendLayout.prototype.createVisual = function createVisual () {};\n\n return LegendLayout;\n}(ChartElement));\n\nexport default LegendLayout;\n","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK, CIRCLE, POINTER, START, END, HORIZONTAL, SQUARE } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nvar CUSTOM = \"custom\";\n\nvar Legend = (function (ChartElement) {\n function Legend(options, chartService) {\n if ( chartService === void 0 ) chartService = {};\n\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n }\n\n if ( ChartElement ) Legend.__proto__ = ChartElement;\n Legend.prototype = Object.create( ChartElement && ChartElement.prototype );\n Legend.prototype.constructor = Legend;\n\n Legend.prototype.createContainers = function createContainers () {\n var options = this.options;\n var position = options.position;\n var userAlign = options.align;\n var align = position;\n var vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === START) {\n align = LEFT;\n } else if (userAlign === END) {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === START) {\n vAlign = TOP;\n } else if (userAlign === END) {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n };\n\n Legend.prototype.createItems = function createItems () {\n var chartService = this.getService();\n var options = this.options;\n var vertical = this.isVertical();\n var innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n var data = options.data;\n\n if (options.reverse) {\n data = data.slice(0).reverse();\n }\n\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var dataItem = data[i];\n var ref = dataItem.series || {};\n var markers = ref.markers; if ( markers === void 0 ) markers = {};\n var dashType = ref.dashType;\n var legendItem = ref.legendItem;\n var opacity = ref.opacity;\n var markersOptions = deepExtend({ visible: markers.visible !== false, type: CIRCLE }, markers);\n delete markersOptions.size;\n\n var itemOptions = deepExtend({},\n {\n markers: markersOptions,\n labels: options.labels,\n rtl: chartService.rtl,\n line: Object.assign({}, {dashType: dashType},\n options.line),\n area: Object.assign({}, {opacity: opacity},\n options.area),\n opacity: opacity,\n accessibility: options.accessibility\n },\n options.item,\n legendItem,\n dataItem,\n { markers: options.markers }\n );\n\n innerElement.append(new LegendItem(itemOptions));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n };\n\n Legend.prototype.isVertical = function isVertical () {\n var ref = this.options;\n var orientation = ref.orientation;\n var position = ref.position;\n var vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n };\n\n Legend.prototype.hasItems = function hasItems () {\n return this.container.children[0].children.length > 0;\n };\n\n Legend.prototype.getItems = function getItems () {\n return this.itemsContainer.children[0].children;\n };\n\n Legend.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n };\n\n Legend.prototype.containerReflow = function containerReflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var position = options.position;\n var width = options.width;\n var height = options.height;\n var pos = position === TOP || position === BOTTOM ? X : Y;\n var vertical = this.isVertical();\n var alignTarget = targetBox.clone();\n var containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n var box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n };\n\n Legend.prototype.containerCustomReflow = function containerCustomReflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var offsetX = options.offsetX;\n var offsetY = options.offsetY;\n var width = options.width;\n var height = options.height;\n var vertical = this.isVertical();\n var containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n };\n\n Legend.prototype.renderVisual = function renderVisual () {\n if (this.hasItems()) {\n ChartElement.prototype.renderVisual.call(this);\n }\n };\n\n Legend.prototype.createLegendTitle = function createLegendTitle (title) {\n var titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n var text = titleOptions.text;\n\n if (!title || title.visible === false || !title.text) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n var labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n };\n\n Legend.prototype.createTitleLayout = function createTitleLayout () {\n this.layout = new FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n };\n\n Legend.prototype.hasTitle = function hasTitle () {\n return Boolean(this.options.title && this.options.title.visible !== false && this.options.title.text);\n };\n\n Legend.prototype.appendTitleLayoutContent = function appendTitleLayoutContent () {\n var options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n };\n\n return Legend;\n}(ChartElement));\n\nsetDefaultOptions(Legend, {\n position: RIGHT,\n data: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(2),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {},\n line: {\n width: 20,\n height: 2,\n cursor: POINTER,\n opacity: 1\n },\n area: {\n type: SQUARE,\n align: RIGHT,\n width: 15,\n height: 15,\n }\n});\n\nexport default Legend;\n","export default function isArray(value) {\n return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n var classArray = isArray(classes) ? classes : [ classes ];\n\n for (var idx = 0; idx < classArray.length; idx++) {\n var className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n}","var SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n var offset = 0.5;\n if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (var i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n}","export default function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function cycleUp(index, count) {\n return (index + 1) % count;\n}\n","export default function cycleDown(index, count) {\n var result = index - 1;\n\n return result < 0 ? count - 1 : result;\n}\n","export default function cycleIndex(index, length) {\n if (length === 1 || (index % length) === 0) {\n return 0;\n }\n\n if (index < 0) {\n return length + (index % length);\n } else if (index >= length) {\n return index % length;\n }\n\n return index;\n}","export default function isObject(value) {\n return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nvar SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n var stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n var result = {};\n var style = window.getComputedStyle(element);\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (var field$1 in styles) {\n element.style[field$1] = styleValue(styles[field$1]);\n }\n }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing) {\n if ( defaultSpacing === void 0 ) defaultSpacing = 0;\n\n var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n}","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options) {\n if ( options === void 0 ) options = {};\n\n var template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n}\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options) {\n if ( options === void 0 ) options = {};\n\n var ariaTemplate;\n if (options.ariaTemplate) {\n options.ariaTemplate = ariaTemplate = TemplateService.compile(options.ariaTemplate);\n } else if (isFunction(options.ariaContent)) {\n ariaTemplate = options.ariaContent;\n }\n\n return ariaTemplate;\n}\n","export default function grep(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n}","export default function hasClasses(element, classNames) {\n if (element.className) {\n var names = classNames.split(\" \");\n for (var idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n}\n","// TODO: Remove and replace with Map/WeakMap.\nvar HashMap = function HashMap() {\n this._map = new Map();\n};\n\nHashMap.prototype.get = function get (key) {\n return this._map.get(key);\n};\n\nHashMap.prototype.set = function set (key, value) {\n this._map.set(key, value);\n};\n\nexport default HashMap;\n","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nvar TRIGGER = 'trigger';\n\nvar InstanceObserver = function InstanceObserver(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n};\n\nInstanceObserver.prototype.trigger = function trigger (name, args) {\n var ref = this;\n var observer = ref.observer;\n var handlerMap = ref.handlerMap;\n var isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n};\n\nInstanceObserver.prototype.callObserver = function callObserver (fnName) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return this.observer[fnName].apply(this.observer, args);\n};\n\nInstanceObserver.prototype.requiresHandlers = function requiresHandlers (names) {\n var this$1 = this;\n\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (var idx = 0; idx < names.length; idx++) {\n if (this$1.handlerMap[names[idx]]) {\n return true;\n }\n }\n};\n\nexport default InstanceObserver;","export default function isPlainObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n var value = callback(array[idx]);\n if (drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n}","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n var delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n}\n","import { logToConsole } from '../drawing-utils';\n\nvar FontLoader = function FontLoader () {};\n\nFontLoader.fetchFonts = function fetchFonts (options, fonts, state) {\n if ( state === void 0 ) state = { depth: 0 };\n\n var MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n var value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n};\n\nFontLoader.loadFonts = function loadFonts (fonts, callback) {\n var promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n};\n\nFontLoader.preloadFonts = function preloadFonts (options, callback) {\n var fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n};\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n var proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n}","import isObject from './is-object';\nimport isPlainObject from './is-plain-object';\nimport isString from './is-string';\nimport deepExtend from './deep-extend';\nimport setDefaultOptions from './set-default-options';\nimport addClass from './add-class';\nimport removeClass from './remove-class';\n\nvar KICON = 'k-icon';\nvar KI_PREFFIX = 'k-i-';\nvar KFONTICON = 'k-font-icon';\nvar KSVGICON = 'k-svg-icon';\nvar KSVG_PREFFIX = 'k-svg-i-';\n\nvar HTMLBaseIcon = function HTMLBaseIcon(element, options) {\n this.element = element;\n this.options = deepExtend({}, this.options, options);\n\n this.wrapper();\n};\n\nHTMLBaseIcon.prototype.wrapper = function wrapper () {\n this.addClasses();\n};\n\nHTMLBaseIcon.prototype.addClasses = function addClasses () {\n};\n\nHTMLBaseIcon.prototype.html = function html () {\n return this.element.outerHTML;\n};\n\nsetDefaultOptions(HTMLBaseIcon, {\n name: '',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n});\n\nvar HTMLFontIcon = (function (HTMLBaseIcon) {\n function HTMLFontIcon(element, options) {\n HTMLBaseIcon.call(this, element, options);\n }\n\n if ( HTMLBaseIcon ) HTMLFontIcon.__proto__ = HTMLBaseIcon;\n HTMLFontIcon.prototype = Object.create( HTMLBaseIcon && HTMLBaseIcon.prototype );\n HTMLFontIcon.prototype.constructor = HTMLFontIcon;\n\n HTMLFontIcon.prototype.wrapper = function wrapper () {\n // Find if there is an existing k-i- class appended to the element.\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KI_PREFFIX); });\n var className = this.options.icon ? (\"\" + (this.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX) + (this.options.icon)) : \"\";\n\n this._className = className;\n\n addClass(this.element, KICON);\n addClass(this.element, KFONTICON);\n removeClass(this.element, currentIconClass); // Remove any existing icons.\n addClass(this.element, className);\n addClass(this.element, this.options.iconClass || '');\n\n HTMLBaseIcon.prototype.wrapper.call(this);\n };\n\n return HTMLFontIcon;\n}(HTMLBaseIcon));\n\nsetDefaultOptions(HTMLFontIcon, {\n name: 'HTMLFontIcon',\n icon: null\n});\n\nvar HTMLSvgIcon = (function (HTMLBaseIcon) {\n function HTMLSvgIcon(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.innerHTML = \"\";\n\n HTMLBaseIcon.call(this, element, options);\n }\n\n if ( HTMLBaseIcon ) HTMLSvgIcon.__proto__ = HTMLBaseIcon;\n HTMLSvgIcon.prototype = Object.create( HTMLBaseIcon && HTMLBaseIcon.prototype );\n HTMLSvgIcon.prototype.constructor = HTMLSvgIcon;\n\n HTMLSvgIcon.prototype.wrapper = function wrapper () {\n var icon = this.options.icon;\n var iconClass = this.options.iconClass;\n var currentIconClass = this.element.className.split(\" \").find(function (x) { return x.startsWith(KSVG_PREFFIX); });\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n var regex = /k-i-(\\w+(?:-\\w+)*)/;\n var iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (isString(icon)) {\n icon = icon.replace(\"k-i-\", \"\").replace(/-./g, function (x) { return x[1].toUpperCase(); });\n icon = this.options.svgIcons[icon] || this.options.svgIcons[(icon + \"Icon\")];\n }\n\n var className = icon && icon.name ? (\"\" + KSVG_PREFFIX + (icon.name)) : \"\";\n this._className = className;\n\n addClass(this.element, KSVGICON);\n removeClass(this.element, currentIconClass);\n addClass(this.element, className);\n addClass(this.element, iconClass || \"\");\n this.element.setAttribute(\"aria-hidden\", \"true\");\n\n if (icon && isPlainObject(icon)) {\n var svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.setAttribute(\"viewBox\", icon.viewBox || \"\");\n svgElement.setAttribute(\"focusable\", \"false\");\n svgElement.innerHTML = icon.content || \"\";\n\n this.element.appendChild(svgElement);\n }\n\n HTMLBaseIcon.prototype.wrapper.call(this);\n };\n\n return HTMLSvgIcon;\n}(HTMLBaseIcon));\n\nsetDefaultOptions(HTMLSvgIcon, {\n name: 'HTMLSvgIcon',\n icon: null,\n svgIcons: {}\n});\n\nvar ICON_TYPES = {\n 'svg': HTMLSvgIcon,\n 'font': HTMLFontIcon\n};\n\nexport default function renderIcon(iconElement, iconOptions) {\n var element = iconElement;\n var options = iconOptions;\n\n if (!element\n || (isObject(element) && !(element instanceof HTMLElement))\n || isString(element)) {\n options = element;\n element = document.createElement(\"span\");\n }\n\n if (isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!options.type) {\n options.type = 'svg';\n }\n\n if (!ICON_TYPES[options.type]) {\n return null;\n }\n\n return (new ICON_TYPES[options.type](element, options).html());\n}\n","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var idx = 0, length = arr.length; idx < length; idx++) {\n var value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n}","export default function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nvar Matrix = geometry.Matrix;\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n var isDark = new Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n}\n\nexport default autoTextColor;\n","var DELETED = {};\n\nvar LegacySet = function LegacySet(values) {\n var this$1 = this;\n\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (var i = 0; i < this._values.length; i++) {\n this$1._index[this$1._values[i]] = i;\n }\n};\n\nvar prototypeAccessors = { size: { configurable: true } };\n\nLegacySet.prototype.values = function values () {\n return this._values.filter(function (item) { return item !== DELETED; });\n};\n\nLegacySet.prototype.has = function has (value) {\n return this._index[value] !== undefined;\n};\n\nLegacySet.prototype.add = function add (value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n};\n\nLegacySet.prototype.delete = function delete$1 (value) {\n var index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n};\n\nLegacySet.prototype.clear = function clear () {\n this._index = {};\n this._values = [];\n};\n\nprototypeAccessors.size.get = function () {\n return this._values.length;\n};\n\nObject.defineProperties( LegacySet.prototype, prototypeAccessors );\n\nvar SetWrapper = function SetWrapper(values) {\n this._set = new Set(values);\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\nSetWrapper.prototype.values = function values () {\n return Array.from(this._set);\n};\n\nSetWrapper.prototype.has = function has (value) {\n return this._set.has(value);\n};\n\nSetWrapper.prototype.add = function add (value) {\n this._set.add(value);\n};\n\nSetWrapper.prototype.delete = function delete$2 (value) {\n this._set.delete(value);\n};\n\nSetWrapper.prototype.clear = function clear () {\n this._set.clear();\n};\n\nprototypeAccessors$1.size.get = function () {\n return this._set.size;\n};\n\nObject.defineProperties( SetWrapper.prototype, prototypeAccessors$1 );\n\n// TODO: Drop LegacySet when removing support for IE10\nvar supportsSet = function () {\n var supported = false;\n\n if (typeof Set === 'function') {\n var set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n};\n\nexport default function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n}\n","export default function defaultErrorHandler(error) {\n throw error;\n}\n","var keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n};\n\nexport default keys;\n","export default function hasOwnProperty(obj, property) {\n return Object.prototype.hasOwnProperty.call(obj, property);\n}\n","// Based on the implementation from kendo-spreadsheet-common/src/calc.js\nvar Matrix = function Matrix() {\n this.height = 0;\n this.width = 0;\n this.data = [];\n};\n\nMatrix.prototype.clone = function clone () {\n var m = new Matrix();\n m.height = this.height;\n m.width = this.width;\n m.data = this.data.map(function (row) { return row.slice(); });\n return m;\n};\n\nMatrix.prototype.get = function get (row, col) {\n var line = this.data[row];\n var val = line ? line[col] : null;\n return val;\n};\n\nMatrix.prototype.set = function set (row, col, data) {\n var line = this.data[row];\n if (line == null) {\n line = this.data[row] = [];\n }\n line[col] = data;\n if (row >= this.height) {\n this.height = row + 1;\n }\n if (col >= this.width) {\n this.width = col + 1;\n }\n};\n\nMatrix.prototype.each = function each (f, includeEmpty) {\n var this$1 = this;\n\n for (var row = 0; row < this.height; ++row) {\n for (var col = 0; col < this.width; ++col) {\n var val = this$1.get(row, col);\n if (includeEmpty || val != null) {\n val = f(val, row, col);\n if (val !== undefined) {\n return val;\n }\n }\n }\n }\n};\n\nMatrix.prototype.map = function map (f, includeEmpty) {\n var m = new Matrix();\n this.each(function(el, row, col) {\n m.set(row, col, f(el, row, col));\n }, includeEmpty);\n return m;\n};\n\nMatrix.prototype.transpose = function transpose () {\n var m = new Matrix();\n this.each(function(el, row, col) {\n m.set(col, row, el);\n });\n return m;\n};\n\nMatrix.prototype.unit = function unit (n) {\n this.width = this.height = n;\n var a = this.data = new Array(n);\n for (var i = n; --i >= 0;) {\n var row = a[i] = new Array(n);\n for (var j = n; --j >= 0;) {\n row[j] = i === j ? 1 : 0;\n }\n }\n return this;\n};\n\nMatrix.prototype.multiply = function multiply (b) {\n var a = this;\n var m = new Matrix();\n for (var row = 0; row < a.height; ++row) {\n for (var col = 0; col < b.width; ++col) {\n var s = 0;\n for (var i = 0; i < a.width; ++i) {\n var va = a.get(row, i);\n var vb = b.get(i, col);\n if (typeof va === \"number\" && typeof vb === \"number\") {\n s += va * vb;\n }\n }\n m.set(row, col, s);\n }\n }\n return m;\n};\n\nMatrix.prototype.inverse = function inverse () {\n var n = this.width;\n var m = this.augment(new Matrix().unit(n));\n var a = m.data;\n\n // Gaussian elimination\n // https://en.wikipedia.org/wiki/Gaussian_elimination#Finding_the_inverse_of_a_matrix\n\n // 1. Get zeros below main diagonal\n var loop = function ( k ) {\n var imax = argmax(k, n, function(i) { return a[i][k]; });\n if (!a[imax][k]) {\n return { v: null }; // singular matrix\n }\n if (k !== imax) {\n var tmp = a[k];\n a[k] = a[imax];\n a[imax] = tmp;\n }\n for (var i = k + 1; i < n; ++i) {\n for (var j = k + 1; j < 2 * n; ++j) {\n a[i][j] -= a[k][j] * a[i][k] / a[k][k];\n }\n a[i][k] = 0;\n }\n };\n\n for (var k = 0; k < n; ++k) {\n var returned = loop( k );\n\n if ( returned ) return returned.v;\n }\n\n // 2. Get 1-s on main diagonal, dividing by pivot\n for (var i$1 = 0; i$1 < n; ++i$1) {\n for (var f = a[i$1][i$1], j$1 = 0; j$1 < 2 * n; ++j$1) {\n a[i$1][j$1] /= f;\n }\n }\n\n // 3. Get zeros above main diagonal. Actually, we only care to compute the right side\n // here (that will be the inverse), so in the inner loop below we go while j >= n,\n // instead of j >= k.\n for (var k$1 = n; --k$1 >= 0;) {\n for (var i$2 = k$1; --i$2 >= 0;) {\n if (a[i$2][k$1]) {\n for (var j$2 = 2 * n; --j$2 >= n;) {\n a[i$2][j$2] -= a[k$1][j$2] * a[i$2][k$1];\n }\n }\n }\n }\n\n return m.slice(0, n, n, n);\n};\n\nMatrix.prototype.augment = function augment (m) {\n var ret = this.clone();\n var n = ret.width;\n m.each(function(val, row, col) {\n ret.set(row, col + n, val);\n });\n return ret;\n};\n\nMatrix.prototype.slice = function slice (row, col, height, width) {\n var this$1 = this;\n\n var m = new Matrix();\n for (var i = 0; i < height; ++i) {\n for (var j = 0; j < width; ++j) {\n m.set(i, j, this$1.get(row + i, col + j));\n }\n }\n return m;\n};\n\nfunction argmax(start, end, f) {\n var max = f(start), pos = start;\n for (var i = start + 1; i < end; i++) {\n var v = f(start);\n if (v > max) {\n max = v;\n pos = start;\n }\n }\n return pos;\n}\n\nexport default Matrix;\n","export var eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n};\n\nfunction queryEventMap(e) {\n return eventMap[e] || e;\n}\n\nexport var applyEventMap = function (events) {\n var eventRegEx = /([^ ]+)/g;\n var appliedEvents = events.replace(eventRegEx, queryEventMap);\n\n return appliedEvents;\n};\n","import isFunction from './is-function';\nimport isArray from './is-array';\nimport guid from '../core/utils/guid';\n\nvar elementEventHandlers = new WeakMap();\nvar ID = Symbol('id');\n\nexport function on(element, events, filter, handler, useCapture) {\n addEventListeners(element, events, filter, handler, useCapture);\n}\n\nexport function off(element, events, filter, handler, useCapture) {\n removeEventListeners(element, events, filter, handler, useCapture);\n}\n\nfunction isString(value) {\n return typeof(value) === \"string\";\n}\n\nfunction addEventListeners(element, events, filter, handler, useCapture) {\n var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n addEventListener(element, eventName, filter, handler, useCapture);\n });\n}\n\nfunction addEventListener(element, event, filter, handler, useCapture) {\n var eventHandler = handler;\n var eventFilter;\n\n if (filter && isFunction(filter) && !handler) {\n eventHandler = filter;\n } else if (filter && isString(filter) && isFunction(eventHandler)) {\n eventFilter = filter;\n }\n\n var attachedHandler = function(e) {\n var closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;\n\n if (!eventFilter ||\n (eventFilter && e.target && closestMatchingTarget)) {\n var currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;\n\n // reassign the property as it is a getters only\n Object.defineProperty(e, \"currentTarget\", { value: currentTarget });\n // keep a reference to the top-level target\n Object.defineProperty(e, \"delegateTarget\", { value: element });\n\n eventHandler(e);\n }\n };\n eventHandler[ID] = guid();\n\n var eventHandlers = elementEventHandlers.get(element);\n\n if (!eventHandlers) {\n eventHandlers = new Map();\n elementEventHandlers.set(element, eventHandlers);\n }\n\n eventHandlers.set(eventHandler[ID], attachedHandler);\n element.addEventListener(event, attachedHandler, Boolean(useCapture));\n}\n\nfunction removeEventListeners(element, events, handler, useCapture) {\n var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n removeEventListener(element, eventName, handler, useCapture);\n });\n}\n\nfunction removeEventListener(element, event, handler, useCapture) {\n var eventHandlers = elementEventHandlers.get(element);\n\n if (eventHandlers && handler && handler[ID]) {\n var handlerId = handler[ID];\n var attachedHandler = eventHandlers.get(handlerId);\n\n eventHandlers.delete(handlerId);\n\n if (attachedHandler) {\n element.removeEventListener(event, attachedHandler, Boolean(useCapture));\n }\n }\n}\n","export default function getSupportedFeatures() {\n var os = detectOS(navigator.userAgent);\n var support = {};\n\n support.mobileOS = os;\n\n return support;\n}\n\nfunction detectOS(ua) {\n var os = false;\n var agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i\n };\n\n for (var agent in agentRxs) {\n var match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent === \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.name = testRegex(agent, osRxs);\n os[os.name] = true;\n\n break;\n }\n }\n\n return os;\n}\n\nfunction testRegex(agent, regexes, dflt) {\n for (var regex in regexes) {\n if (regexes[regex].test(agent)) {\n return regex;\n }\n }\n return dflt !== undefined ? dflt : agent;\n}\n","export default function noop() {}\n","export default function now() {\n return new Date().getTime();\n}\n","import { Class } from '../drawing-utils';\n\nvar STRING = \"string\";\nvar FUNCTION = \"function\";\n\nvar preventDefault = function() {\n this._defaultPrevented = true;\n};\n\nvar isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n};\n\nvar Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.destroy = function destroy () {\n this.unbind();\n };\n\n Observable.prototype.bind = function bind (event, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof event === STRING ? [event] : event || [],\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in event) {\n that.bind(idx, event[idx]);\n }\n\n return that;\n }\n\n /* eslint-disable no-loop-func */\n var loop = function ( ) {\n var eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n\n handler.original = original;\n }\n\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n };\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) loop( );\n /* eslint-enable no-loop-func */\n\n return that;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n events = that._events[eventName$1] = that._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n };\n\n Observable.prototype.trigger = function trigger (eventName, eventArgs) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n var e = eventArgs || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable.prototype.unbind = function unbind (eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n };\n\n Observable.prototype._setEvents = function _setEvents (options) {\n var this$1 = this;\n\n var length = (this.events || []).length;\n\n for (var idx = 0; idx < length; idx ++) {\n var e = this$1.events[idx];\n\n if (this$1.options[e] && options[e]) {\n this$1.unbind(e, this$1.options[e]);\n\n if (this$1._events && this$1._events[e]) {\n delete this$1._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n };\n\n return Observable;\n}(Class));\n\nexport default Observable;\n","import { Class } from '../drawing-utils';\nimport { applyEventMap, eventMap } from './event-map';\nimport { on, off } from './event-utils';\nimport getSupportedFeatures from './get-supported-features';\nimport noop from './noop';\nimport now from './now';\nimport grep from './grep';\nimport Observable from './observable';\n\nvar extend = Object.assign;\n\nvar preventDefault = function (e) {\n e.preventDefault();\n};\n\nvar\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n DEFAULT_THRESHOLD = 0,\n PRESS = 'press',\n HOLD = 'hold',\n SELECT = 'select',\n START = 'start',\n MOVE = 'move',\n END = 'end',\n CANCEL = 'cancel',\n TAP = 'tap',\n DOUBLETAP = 'doubleTap',\n RELEASE = 'release',\n GESTURESTART = 'gesturestart',\n GESTURECHANGE = 'gesturechange',\n GESTUREEND = 'gestureend',\n GESTURETAP = 'gesturetap';\n\nvar THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n};\n\nfunction touchDelta(touch1, touch2) {\n var x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n}\n\nfunction getTouches(e) {\n var touches = [],\n originalEvent = e.originalEvent || e,\n currentTarget = e.currentTarget;\n\n if (e.api) {\n touches.push({\n id: 2, // hardcoded ID for API call\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n }\n\n return touches;\n}\nvar TouchAxis = (function (Class) {\n function TouchAxis(axis, location) {\n Class.call(this);\n var that = this;\n\n that.support = getSupportedFeatures();\n that.invalidZeroEvents = this.support.mobileOS && this.support.mobileOS.android;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n }\n\n if ( Class ) TouchAxis.__proto__ = Class;\n TouchAxis.prototype = Object.create( Class && Class.prototype );\n TouchAxis.prototype.constructor = TouchAxis;\n\n TouchAxis.prototype.move = function move (location) {\n var that = this,\n offset = location['page' + that.axis],\n timeStamp = now(),\n timeDelta = timeStamp - that.timeStamp || 1;\n\n if (!offset && this.invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n };\n\n TouchAxis.prototype._updateLocationData = function _updateLocationData (location) {\n var that = this,\n axis = that.axis;\n\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n };\n\n return TouchAxis;\n}(Class));\n\nvar Touch = (function (Class) {\n function Touch(userEvents, target, touchInfo) {\n Class.call(this);\n\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n }\n\n if ( Class ) Touch.__proto__ = Class;\n Touch.prototype = Object.create( Class && Class.prototype );\n Touch.prototype.constructor = Touch;\n\n Touch.prototype.press = function press () {\n var this$1 = this;\n\n this._holdTimeout = setTimeout(function () { return this$1._hold(); }, this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n };\n\n Touch.prototype._tap = function _tap (touchInfo) {\n var that = this;\n\n that.userEvents._clicks++;\n\n if (that.userEvents._clicks === 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks === 1) {\n that._trigger(TAP, touchInfo);\n } else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n };\n\n Touch.prototype._hold = function _hold () {\n this._trigger(HOLD, this.pressEvent);\n };\n\n /* eslint-disable consistent-return */\n Touch.prototype.move = function move (touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) {\n return;\n }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n };\n /* eslint-enable consistent-return */\n\n Touch.prototype.end = function end (touchInfo) {\n this.endTime = now();\n\n if (this._finished) {\n return;\n }\n\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n } else {\n this._trigger(TAP, touchInfo);\n }\n }\n\n clearTimeout(this._holdTimeout);\n this.dispose();\n };\n\n Touch.prototype.dispose = function dispose () {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches || [];\n\n this._finished = true;\n this.pressEvent = null;\n\n clearTimeout(this._holdTimeout);\n // activeTouches.splice($.inArray(this, activeTouches), 1);\n var activeTouchIndex = activeTouches.indexOf(this);\n activeTouches.splice(activeTouchIndex, 1);\n };\n\n Touch.prototype.skip = function skip () {\n this.dispose();\n };\n\n Touch.prototype.cancel = function cancel () {\n this.dispose();\n };\n\n Touch.prototype.isMoved = function isMoved () {\n return this._moved;\n };\n\n Touch.prototype._start = function _start (touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n };\n\n Touch.prototype._trigger = function _trigger (name, touchInfo) {\n var e = touchInfo.event;\n var data = {\n touch: this,\n x: this.x,\n y: this.y,\n target: this.target,\n event: e\n };\n\n if (this.userEvents.notify(name, data)) {\n e.preventDefault();\n }\n };\n\n Touch.prototype._withinIgnoreThreshold = function _withinIgnoreThreshold () {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n };\n\n return Touch;\n}(Class));\n\nfunction withEachUpEvent(callback) {\n var downEvents = eventMap.up.split(' '),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n}\n\nvar UserEvents = (function (Observable) {\n function UserEvents(element, options) {\n Observable.call(this);\n var that = this;\n var filter;\n\n var support = getSupportedFeatures();\n this.support = support;\n\n /* eslint-disable no-param-reassign */\n options = options || {};\n /* eslint-enable no-param-reassign */\n this.options = options;\n\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n extend(that, {\n element: element,\n surface: options.surface || element,\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n this._surfaceMoveHandler = this._move.bind(this);\n on(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n\n this._surfaceEndHandler = this._end.bind(this);\n on(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n this._elementStartHandler = this._start.bind(this);\n on(element, applyEventMap('down'), filter, this._elementStartHandler);\n\n element.style['touch-action'] = options.touchAction || 'none';\n\n if (options.preventDragEvent) {\n this._elementDragStartHandler = preventDefault;\n on(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n // element.on(kendo.applyEventMap('mousedown'), filter, {\n // root: element\n // } '_select');\n\n // todo: use root\n this._elementSelectHandler = this._select.bind(this);\n on(element, applyEventMap('mousedown'), filter, this._elementSelectHandler);\n\n if (that.captureUpIfMoved) {\n var surfaceElement = that.surface,\n preventIfMovingProxy = that.preventIfMoving.bind(that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n }\n\n if ( Observable ) UserEvents.__proto__ = Observable;\n UserEvents.prototype = Object.create( Observable && Observable.prototype );\n UserEvents.prototype.constructor = UserEvents;\n\n UserEvents.prototype.preventIfMoving = function preventIfMoving (e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype.destroy = function destroy () {\n var that = this;\n var options = this.options;\n var element = this.element;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved) {\n var surfaceElement = that.surface;\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n off(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n off(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n off(element, applyEventMap('down'), this._elementStartHandler);\n\n if (options.preventDragEvent) {\n off(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n off(element, applyEventMap('mousedown'), this._elementSelectHandler);\n\n that._disposeAll();\n that.unbind();\n\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n };\n\n UserEvents.prototype.capture = function capture () {\n UserEvents.current = this;\n };\n\n UserEvents.prototype.cancel = function cancel () {\n this._disposeAll();\n this.trigger(CANCEL);\n };\n\n UserEvents.prototype.notify = function notify (event, data) {\n var that = this,\n touches = that.touches;\n var eventName = event;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n default:\n break;\n }\n\n extend(data, {\n touches: touches\n }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, {\n type: eventName\n }));\n };\n\n UserEvents.prototype.press = function press (x, y, target) {\n this._apiCall('_start', x, y, target);\n };\n\n UserEvents.prototype.move = function move (x, y) {\n this._apiCall('_move', x, y);\n };\n\n UserEvents.prototype.end = function end (x, y) {\n this._apiCall('_end', x, y);\n };\n\n UserEvents.prototype._isMultiTouch = function _isMultiTouch () {\n return this.touches.length > 1;\n };\n\n UserEvents.prototype._maxTouchesReached = function _maxTouchesReached () {\n return this.touches.length >= this._maxTouches;\n };\n\n UserEvents.prototype._disposeAll = function _disposeAll () {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n };\n\n UserEvents.prototype._isMoved = function _isMoved () {\n return grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n };\n\n UserEvents.prototype._select = function _select (e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype._start = function _start (e) {\n var this$1 = this;\n\n if (e.which && e.which > 1 || this._maxTouchesReached()) {\n return;\n }\n\n UserEvents.current = null;\n this.currentTarget = e.currentTarget;\n\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n\n var target;\n var eventTouches = getTouches(e);\n for (var idx = 0; idx < eventTouches.length; idx++) {\n if (this$1._maxTouchesReached()) {\n break;\n }\n\n var eventTouch = eventTouches[idx];\n if (this$1.filter) {\n target = eventTouch.currentTarget;\n } else {\n target = this$1.element;\n }\n\n if (target && target.length === 0) {\n continue;\n }\n\n var touch = new Touch(this$1, target, eventTouch);\n this$1.touches.push(touch);\n touch.press();\n\n if (this$1._isMultiTouch()) {\n this$1.notify('gesturestart', {});\n }\n }\n };\n\n UserEvents.prototype._move = function _move (e) {\n this._eachTouch('move', e);\n };\n\n UserEvents.prototype._end = function _end (e) {\n this._eachTouch('end', e);\n };\n\n UserEvents.prototype._eachTouch = function _eachTouch (methodName, e) {\n var this$1 = this;\n\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n var shouldCapture = methodName === 'move' && touchInfo.type === 'pointer' && !this$1.surface.hasPointerCapture(touchInfo.id);\n if (shouldCapture) {\n this$1.surface.setPointerCapture(touchInfo.id);\n }\n\n matchingTouch[methodName](touchInfo);\n }\n }\n };\n\n UserEvents.prototype._apiCall = function _apiCall (type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: target || this.element,\n stopPropagation: noop,\n preventDefault: noop\n });\n };\n\n UserEvents.defaultThreshold = function defaultThreshold (value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function minHold (value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n return UserEvents;\n}(Observable));\n\nexport default UserEvents;\n","export var ARC = \"arc\";\nexport var ARROW_UP = \"ArrowUp\";\nexport var ARROW_DOWN = \"ArrowDown\";\nexport var ARROW_LEFT = \"ArrowLeft\";\nexport var ARROW_RIGHT = \"ArrowRight\";\nexport var TAB = \"Tab\";\nexport var ARIA_ACTIVE_DESCENDANT = \"aria-activedescendant\";\nexport var AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport var BLACK = \"#000\";\nexport var BOTTOM = \"bottom\";\nexport var CENTER = \"center\";\nexport var CIRCLE = \"circle\";\nexport var COORD_PRECISION = 3;\nexport var CROSS = \"cross\";\nexport var DATE = \"date\";\nexport var DEFAULT_FONT = \"12px sans-serif\";\nexport var DEFAULT_HEIGHT = 400;\nexport var DEFAULT_PRECISION = 10;\nexport var DEFAULT_WIDTH = 600;\nexport var END = \"end\";\nexport var ENTER = \"Enter\";\nexport var ESCAPE = \"Escape\";\nexport var FORMAT_REGEX = /\\{\\d+:?/;\nexport var HEIGHT = \"height\";\nexport var HIGHLIGHT_ZINDEX = 100;\nexport var INSIDE = \"inside\";\nexport var INHERIT = \"inherit\";\nexport var LEFT = \"left\";\nexport var MAX_VALUE = Number.MAX_VALUE;\nexport var MIN_VALUE = -Number.MAX_VALUE;\nexport var NONE = \"none\";\nexport var NOTE_CLICK = \"noteClick\";\nexport var NOTE_HOVER = \"noteHover\";\nexport var NOTE_LEAVE = \"noteLeave\";\nexport var OBJECT = \"object\";\nexport var OUTSIDE = \"outside\";\nexport var RIGHT = \"right\";\nexport var ROUNDED_RECT = \"roundedRect\";\nexport var START = \"start\";\nexport var STRING = \"string\";\nexport var TOP = \"top\";\nexport var TRIANGLE = \"triangle\";\nexport var SQUARE = \"square\";\nexport var RECT = \"rect\";\nexport var VALUE = \"value\";\nexport var WHITE = \"#fff\";\nexport var WIDTH = \"width\";\nexport var X = \"x\";\nexport var Y = \"y\";\nexport var DEFAULT_SERIES_OPACITY = 1;\nexport var POINTER = \"pointer\";\nexport var HORIZONTAL = \"horizontal\";\nexport var VERTICAL = \"vertical\";\n","import isFunction from './is-function';\n\nvar OBJECT = \"object\";\nvar UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n for (var property in source) {\n if (property === '__proto__' || property === 'constructor') {\n continue;\n }\n\n var propValue = source[property];\n var propType = typeof propValue;\n\n var propInit = (void 0);\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit && propInit !== Array) {\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n var destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n}\n\nexport default function deepExtend(destination) {\n var arguments$1 = arguments;\n\n var length = arguments.length;\n\n for (var i = 1; i < length; i++) {\n deepExtendOne(destination, arguments$1[i]);\n }\n\n return destination;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n}","export default function isFunction(fn) {\n return typeof fn === \"function\";\n}","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nvar Ring = (function (Class) {\n function Ring(center, innerRadius, radius, startAngle, angle) {\n Class.call(this);\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n }\n\n if ( Class ) Ring.__proto__ = Class;\n Ring.prototype = Object.create( Class && Class.prototype );\n Ring.prototype.constructor = Ring;\n\n Ring.prototype.clone = function clone () {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n };\n\n Ring.prototype.middle = function middle () {\n return this.startAngle + this.angle / 2;\n };\n\n Ring.prototype.setRadius = function setRadius (newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n };\n\n // TODO: Remove and replace with Point.onCircle\n Ring.prototype.point = function point (angle, innerRadius) {\n var radianAngle = rad(angle);\n var ax = Math.cos(radianAngle);\n var ay = Math.sin(radianAngle);\n var radius = innerRadius ? this.innerRadius : this.radius;\n var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n };\n\n Ring.prototype.adjacentBox = function adjacentBox (distance, width, height) {\n var sector = this.clone().expand(distance);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n var hw = width / 2;\n var hh = height / 2;\n var sa = Math.sin(rad(midAndle));\n var ca = Math.cos(rad(midAndle));\n var x = midPoint.x - hw;\n var y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n };\n\n Ring.prototype.containsPoint = function containsPoint (p) {\n var center = this.center;\n var innerRadius = this.innerRadius;\n var radius = this.radius;\n var startAngle = this.startAngle;\n var endAngle = this.startAngle + this.angle;\n var dx = p.x - center.x;\n var dy = p.y - center.y;\n var vector = new Point(dx, dy);\n var startPoint = this.point(startAngle);\n var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n var endPoint = this.point(endAngle);\n var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n };\n\n Ring.prototype.getBBox = function getBBox () {\n var this$1 = this;\n\n var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n var startAngle = round(this.startAngle % 360);\n var endAngle = round((startAngle + this.angle) % 360);\n var innerRadius = this.innerRadius;\n var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n var startAngleIndex = allAngles.indexOf(startAngle);\n var endAngleIndex = allAngles.indexOf(endAngle);\n var angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (var i = 0; i < angles.length; i++) {\n var point = this$1.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n };\n\n Ring.prototype.expand = function expand (value) {\n this.radius += value;\n return this;\n };\n\n return Ring;\n}(Class));\n\nfunction numericComparer(a, b) {\n return a - b;\n}\n\nexport default Ring;","import Ring from './ring';\n\nvar Sector = (function (Ring) {\n function Sector(center, radius, startAngle, angle) {\n Ring.call(this, center, 0, radius, startAngle, angle);\n }\n\n if ( Ring ) Sector.__proto__ = Ring;\n Sector.prototype = Object.create( Ring && Ring.prototype );\n Sector.prototype.constructor = Sector;\n\n Sector.prototype.expand = function expand (value) {\n return Ring.prototype.expand.call(this, value);\n };\n\n Sector.prototype.clone = function clone () {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n };\n\n Sector.prototype.setRadius = function setRadius (newRadius) {\n this.radius = newRadius;\n\n return this;\n };\n\n return Sector;\n}(Ring));\n\nexport default Sector;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nvar DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nvar ShapeBuilder = (function (Class) {\n function ShapeBuilder () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) ShapeBuilder.__proto__ = Class;\n ShapeBuilder.prototype = Object.create( Class && Class.prototype );\n ShapeBuilder.prototype.constructor = ShapeBuilder;\n\n ShapeBuilder.prototype.createRing = function createRing (sector, options) {\n var startAngle = sector.startAngle + 180;\n var endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle === 0 || sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n var center = new geom.Point(sector.center.x, sector.center.y);\n var radius = Math.max(sector.radius, 0);\n var innerRadius = Math.max(sector.innerRadius, 0);\n var arc = new geom.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n var path = draw.Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n var innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n };\n\n return ShapeBuilder;\n}(Class));\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","import { WHITE } from '../common/constants';\n\nvar LINEAR = \"linear\";\nvar RADIAL = \"radial\";\n\nvar GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n var a = Math.min(r.x1, s.x1);\n var b = Math.max(r.x1, s.x1);\n var c = Math.min(r.x2, s.x2);\n var d = Math.max(r.x2, s.x2);\n var e = Math.min(r.y1, s.y1);\n var f = Math.max(r.y1, s.y1);\n var g = Math.min(r.y2, s.y2);\n var h = Math.max(r.y2, s.y2);\n var boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nvar RootElement = (function (ChartElement) {\n function RootElement(options) {\n ChartElement.call(this, options);\n\n var rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n }\n\n if ( ChartElement ) RootElement.__proto__ = ChartElement;\n RootElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n RootElement.prototype.constructor = RootElement;\n\n RootElement.prototype.reflow = function reflow () {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (var i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n };\n\n RootElement.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group();\n this.createBackground();\n };\n\n RootElement.prototype.createBackground = function createBackground () {\n var options = this.options;\n var border = options.border || {};\n var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n var background = draw.Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n };\n\n RootElement.prototype.getRoot = function getRoot () {\n return this;\n };\n\n RootElement.prototype.createGradient = function createGradient (options) {\n var gradients = this.gradients;\n var hashCode = objectKey(options);\n var gradient = GRADIENTS[options.gradient];\n var drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n var gradientOptions = Object.assign({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new draw.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new draw.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n };\n\n RootElement.prototype.cleanGradients = function cleanGradients () {\n var gradients = this.gradients;\n for (var hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n };\n\n RootElement.prototype.size = function size () {\n var options = this.options;\n return new Box(0, 0, options.width, options.height);\n };\n\n return RootElement;\n}(ChartElement));\n\nsetDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n var stops = options.stops;\n var usedSpace = ((options.innerRadius / options.radius) * 100);\n var length = stops.length;\n var currentStops = [];\n\n for (var i = 0; i < length; i++) {\n var currentStop = Object.assign({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nvar FloatElement = (function (ChartElement) {\n function FloatElement(options) {\n ChartElement.call(this, options);\n this._initDirection();\n }\n\n if ( ChartElement ) FloatElement.__proto__ = ChartElement;\n FloatElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n FloatElement.prototype.constructor = FloatElement;\n\n FloatElement.prototype._initDirection = function _initDirection () {\n var options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n };\n\n FloatElement.prototype.reflow = function reflow (targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n };\n\n FloatElement.prototype.reflowChildren = function reflowChildren () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var elementAxis = ref.elementAxis;\n var groupAxis = ref.groupAxis;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var ref$1 = this.groupOptions();\n var groups = ref$1.groups;\n var groupsSize = ref$1.groupsSize;\n var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n var groupsCount = groups.length;\n var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n var groupStart = groupsStart;\n\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var group = groups[groupIdx];\n var groupElements = group.groupElements;\n var elementStart = box[elementAxis + 1];\n var groupElementsCount = groupElements.length;\n\n for (var idx = 0; idx < groupElementsCount; idx++) {\n var element = groupElements[idx];\n var elementSize = this$1.elementSize(element);\n var groupElementStart = groupStart + this$1.alignStart(elementSize[groupSizeField], group.groupSize);\n\n var elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize[elementSizeField] + this$1.elementSpacing;\n }\n groupStart += group.groupSize + this$1.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n };\n\n FloatElement.prototype.alignStart = function alignStart (size, maxSize) {\n var start = 0;\n var align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n };\n\n FloatElement.prototype.groupOptions = function groupOptions () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var children = ref.children;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var elementSpacing = ref.elementSpacing;\n var groupSpacing = ref.groupSpacing;\n var maxSize = round(box[elementSizeField]());\n var childrenCount = children.length;\n var groups = [];\n\n var groupSize = 0;\n var groupElementsSize = 0;\n var groupsSize = 0;\n var maxGroupElementsSize = 0;\n var groupElements = [];\n\n for (var idx = 0; idx < childrenCount; idx++) {\n var element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n var elementSize = this$1.elementSize(element);\n if (this$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n };\n\n FloatElement.prototype.elementSize = function elementSize (element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n };\n\n FloatElement.prototype.createVisual = function createVisual () {};\n\n return FloatElement;\n}(ChartElement));\n\nsetDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n});\n\nexport default FloatElement;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nvar DrawingText = draw.Text;\n\nvar Text = (function (ChartElement) {\n function Text(content, options) {\n ChartElement.call(this, options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n }\n\n if ( ChartElement ) Text.__proto__ = ChartElement;\n Text.prototype = Object.create( ChartElement && ChartElement.prototype );\n Text.prototype.constructor = Text;\n\n Text.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n };\n\n Text.prototype.createVisual = function createVisual () {\n var ref = this.options;\n var font = ref.font;\n var color = ref.color;\n var opacity = ref.opacity;\n var cursor = ref.cursor;\n var stroke = ref.stroke;\n var paintOrder = ref.paintOrder;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor,\n stroke: stroke,\n paintOrder: paintOrder\n });\n };\n\n return Text;\n}(ChartElement));\n\nsetDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n var origin = rect.origin;\n var bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nvar ROWS_SPLIT_REGEX = /\\n/m;\n\nvar TextBox = (function (BoxElement) {\n function TextBox(content, options, data) {\n BoxElement.call(this, options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n }\n\n if ( BoxElement ) TextBox.__proto__ = BoxElement;\n TextBox.prototype = Object.create( BoxElement && BoxElement.prototype );\n TextBox.prototype.constructor = TextBox;\n\n TextBox.prototype._initContainer = function _initContainer () {\n var options = this.options;\n var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n var text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n };\n\n TextBox.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n var visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n BoxElement.prototype.reflow.call(this, targetBox);\n\n if (options.rotation) {\n var margin = getSpacing(options.margin);\n var box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n };\n\n TextBox.prototype.createVisual = function createVisual () {\n var options = this.options;\n\n this.visual = new draw.Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n var box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n };\n\n TextBox.prototype.renderVisual = function renderVisual () {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n var visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n TextBox.prototype.visualContext = function visualContext (targetBox) {\n var this$1 = this;\n\n var context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: function () {\n this$1._boxReflow = true;\n this$1.reflow(targetBox);\n this$1._boxReflow = false;\n return this$1.getDefaultVisual();\n }\n };\n if (this.data) {\n Object.assign(context, this.data);\n }\n\n return context;\n };\n\n TextBox.prototype.getDefaultVisual = function getDefaultVisual () {\n this.createVisual();\n this.renderChildren();\n var visual = this.visual;\n delete this.visual;\n return visual;\n };\n\n TextBox.prototype.rotate = function rotate () {\n var options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n };\n\n TextBox.prototype.rotationTransform = function rotationTransform () {\n var rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n var ref = this.normalBox.center();\n var cx = ref.x;\n var cy = ref.y;\n var boxCenter = this.rotatedBox.center();\n\n return geom.transform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n };\n\n return TextBox;\n}(BoxElement));\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER, BOTTOM } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nvar Title = (function (ChartElement) {\n function Title(options) {\n ChartElement.call(this, options);\n\n this._textBox = new TextBox(this.options.text, Object.assign({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n }\n\n if ( ChartElement ) Title.__proto__ = ChartElement;\n Title.prototype = Object.create( ChartElement && ChartElement.prototype );\n Title.prototype.constructor = Title;\n\n Title.prototype.reflow = function reflow (targetBox) {\n ChartElement.prototype.reflow.call(this, targetBox);\n this.box.snapTo(targetBox, X);\n };\n\n Title.buildTitle = function buildTitle (options, defaultOptions) {\n var titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n var title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n };\n\n Title.orderTitles = function orderTitles (titles) {\n var items = [].concat(titles);\n var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n };\n\n return Title;\n}(ChartElement));\n\nfunction collapseVerticalMargins(items) {\n for (var i = 1; i < items.length; i++) {\n var box = items[i]._textBox;\n var prevBox = items[i - 1]._textBox;\n prevBox.options.margin = Object.assign(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = Object.assign(getSpacing(box.options.margin), { top: 0 });\n }\n}\n\nsetDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n\nexport default Title;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nvar AxisLabel = (function (TextBox) {\n function AxisLabel(value, text, index, dataItem, options) {\n TextBox.call(this, text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n }\n\n if ( TextBox ) AxisLabel.__proto__ = TextBox;\n AxisLabel.prototype = Object.create( TextBox && TextBox.prototype );\n AxisLabel.prototype.constructor = AxisLabel;\n\n AxisLabel.prototype.visualContext = function visualContext (targetBox) {\n var context = TextBox.prototype.visualContext.call(this, targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n };\n\n AxisLabel.prototype.click = function click (widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n };\n\n AxisLabel.prototype.rotate = function rotate () {\n if (this.options.alignRotation !== CENTER) {\n var box = this.normalBox.toRect();\n var transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n TextBox.prototype.rotate.call(this);\n }\n\n return this.box;\n };\n\n AxisLabel.prototype.rotationTransform = function rotationTransform () {\n var options = this.options;\n var rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return TextBox.prototype.rotationTransform.call(this);\n }\n\n var rotationMatrix = geom.transform().rotate(rotation).matrix();\n var box = this.normalBox.toRect();\n var rect = this.targetBox.toRect();\n\n var rotationOrigin = options.rotationOrigin || TOP;\n var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n var topLeft = box.topLeft().transformCopy(rotationMatrix);\n var topRight = box.topRight().transformCopy(rotationMatrix);\n var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n var rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n var translate = {};\n translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n var alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geom.transform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n };\n\n return AxisLabel;\n}(TextBox));\n\nsetDefaultOptions(AxisLabel, {\n _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nvar DEFAULT_ICON_SIZE = 7;\nvar DEFAULT_LABEL_COLOR = \"#fff\";\n\nvar Note = (function (BoxElement) {\n function Note(fields, options, chartService) {\n BoxElement.call(this, options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n }\n\n if ( BoxElement ) Note.__proto__ = BoxElement;\n Note.prototype = Object.create( BoxElement && BoxElement.prototype );\n Note.prototype.constructor = Note;\n\n Note.prototype.hide = function hide () {\n this.options.visible = false;\n };\n\n Note.prototype.show = function show () {\n this.options.visible = true;\n };\n\n Note.prototype.render = function render () {\n var this$1 = this;\n\n var options = this.options;\n\n if (options.visible) {\n var label = options.label;\n var icon = options.icon;\n var box = new Box();\n var childAlias = function () { return this$1; };\n var size = icon.size;\n var text = this.fields.text;\n var width, height;\n\n if (defined(label) && label.visible) {\n var noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n var marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n };\n\n Note.prototype.reflow = function reflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var marker = ref.marker;\n var wrapperBox = ref.wrapperBox;\n var center = targetBox.center();\n var length = options.line.length;\n var position = options.position;\n\n // TODO: Review\n if (options.visible) {\n var lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n };\n\n Note.prototype.createVisual = function createVisual () {\n BoxElement.prototype.createVisual.call(this);\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n };\n\n Note.prototype.renderVisual = function renderVisual () {\n var this$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual(Object.assign(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: function () {\n this$1.createVisual();\n this$1.renderChildren();\n var defaultVisual = this$1.visual;\n delete this$1.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n Note.prototype.createLine = function createLine () {\n var options = this.options.line;\n\n if (this.linePoints) {\n var path = draw.Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n };\n\n Note.prototype.click = function click (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n };\n\n Note.prototype.over = function over (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n };\n\n Note.prototype.out = function out (widget, e) {\n var args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n };\n\n Note.prototype.eventArgs = function eventArgs (e) {\n var options = this.options;\n\n return Object.assign(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n };\n\n return Note;\n}(BoxElement));\n\nsetDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n});\n\nexport default Note;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n\n var tick = new draw.Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n}\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n var lineStart = options.lineStart;\n var lineEnd = options.lineEnd;\n var position = options.position;\n\n var line = new draw.Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nvar Axis = (function (ChartElement) {\n function Axis(options, chartService) {\n if ( chartService === void 0 ) chartService = new ChartService();\n\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n }\n\n if ( ChartElement ) Axis.__proto__ = ChartElement;\n Axis.prototype = Object.create( ChartElement && ChartElement.prototype );\n Axis.prototype.constructor = Axis;\n\n Axis.prototype.initFields = function initFields () {\n };\n\n // abstract labelsCount(): Number\n // abstract createAxisLabel(index, options): AxisLabel\n\n Axis.prototype.labelsRange = function labelsRange () {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n };\n\n Axis.prototype.normalizeLabelRotation = function normalizeLabelRotation (labelOptions) {\n var rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n };\n\n Axis.prototype.createLabels = function createLabels () {\n var this$1 = this;\n\n var options = this.options;\n var align = options.vertical ? RIGHT : CENTER;\n var labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n var step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n var range = this.labelsRange();\n for (var idx = range.min; idx < range.max; idx += step) {\n var labelContext = { index: idx, count: range.max };\n var label = this$1.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this$1.append(label);\n this$1.labels.push(label);\n }\n }\n }\n };\n\n Axis.prototype.clearLabels = function clearLabels () {\n this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n this.labels = [];\n };\n\n Axis.prototype.clearTitle = function clearTitle () {\n var this$1 = this;\n\n if (this.title) {\n this.children = grep(this.children, function (child) { return child !== this$1.title; });\n this.title = undefined;\n }\n };\n\n Axis.prototype.clear = function clear () {\n this.clearLabels();\n this.clearTitle();\n };\n\n Axis.prototype.lineBox = function lineBox () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var axisX = mirror ? box.x1 : box.x2;\n var axisY = mirror ? box.y2 : box.y1;\n var lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n };\n\n Axis.prototype.createTitle = function createTitle () {\n var options = this.options;\n var titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n var title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n };\n\n Axis.prototype.createNotes = function createNotes () {\n var this$1 = this;\n\n var options = this.options;\n var notes = options.notes;\n var items = notes.data || [];\n\n this.notes = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = deepExtend({}, notes, items[i]);\n item.value = this$1.parseNoteValue(item.value);\n\n var note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this$1.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this$1.append(note);\n this$1.notes.push(note);\n }\n }\n };\n\n Axis.prototype.parseNoteValue = function parseNoteValue (value) {\n return value;\n };\n\n Axis.prototype.renderVisual = function renderVisual () {\n ChartElement.prototype.renderVisual.call(this);\n\n this.createPlotBands();\n };\n\n Axis.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n this.createBackground();\n this.createLine();\n };\n\n Axis.prototype.gridLinesVisual = function gridLinesVisual () {\n var gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new draw.Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n };\n\n Axis.prototype.createTicks = function createTicks (lineGroup) {\n var options = this.options;\n var lineBox = this.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (var i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n };\n\n Axis.prototype.createLine = function createLine () {\n var options = this.options;\n var line = options.line;\n var lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n var path = new draw.Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n var group = this._lineGroup = new draw.Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n };\n\n Axis.prototype.getActualTickSize = function getActualTickSize () {\n var options = this.options;\n var tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n };\n\n Axis.prototype.createBackground = function createBackground () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var background = options.background;\n\n if (background) {\n this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n };\n\n Axis.prototype.createPlotBands = function createPlotBands () {\n var this$1 = this;\n\n var options = this.options;\n var plotBands = options.plotBands || [];\n var vertical = options.vertical;\n var plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1.options.vertical; })[0];\n\n for (var idx = 0; idx < plotBands.length; idx++) {\n var item = plotBands[idx];\n var slotX = (void 0), slotY = (void 0);\n var labelOptions = item.label;\n var label = (void 0);\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this$1.getSlot(item.from, item.to, true);\n } else {\n slotX = this$1.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this$1.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n var bandRect = new geom.Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n var path = draw.Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n };\n\n Axis.prototype.createPlotBandLabel = function createPlotBandLabel (label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n var text = label.text;\n var textbox;\n\n if (defined(label) && label.visible) {\n var labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n };\n\n Axis.prototype.createGridLines = function createGridLines (altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var minorUnit = options.minorUnit;\n var vertical = options.vertical;\n var axisLineVisible = altAxis.options.line.visible;\n var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n var lineBox = altAxis.lineBox();\n var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (var i = gridLine.skip; i < count; i += step) {\n var pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n };\n\n Axis.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var title = ref.title;\n var vertical = options.vertical;\n var count = labels.length;\n var sizeFn = vertical ? WIDTH : HEIGHT;\n var titleSize = title ? title.box[sizeFn]() : 0;\n var space = this.getActualTickSize() + options.margin + titleSize;\n var rootBox = (this.getRoot() || {}).box || box;\n var boxSize = rootBox[sizeFn]();\n var maxLabelSize = 0;\n\n for (var i = 0; i < count; i++) {\n var labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n };\n\n Axis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n return this.getMajorTickPositions();\n };\n\n Axis.prototype.labelTickIndex = function labelTickIndex (label) {\n return label.index;\n };\n\n Axis.prototype.arrangeLabels = function arrangeLabels () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var tickPositions = this.getLabelsTickPositions();\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1.labelTickIndex(label);\n var labelSize = vertical ? label.box.height() : label.box.width();\n var firstTickPosition = tickPositions[tickIx];\n var nextTickPosition = tickPositions[tickIx + 1];\n var positionStart = (void 0), positionEnd = (void 0);\n\n if (vertical) {\n if (labelsBetweenTicks) {\n var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this$1.positionLabel(label, mirror, positionStart, positionEnd);\n }\n };\n\n Axis.prototype.positionLabel = function positionLabel (label, mirror, positionStart, positionEnd) {\n if ( positionEnd === void 0 ) positionEnd = positionStart;\n\n var options = this.options;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var labelOffset = this.getActualTickSize() + options.margin;\n var labelBox;\n\n if (vertical) {\n var labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n var labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n };\n\n Axis.prototype.autoRotateLabelAngle = function autoRotateLabelAngle (labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n };\n\n Axis.prototype.autoRotateLabels = function autoRotateLabels () {\n var this$1 = this;\n\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n var tickPositions = this.getMajorTickPositions();\n var labels = this.labels;\n var limit = Math.min(labels.length, tickPositions.length - 1);\n var angle = 0;\n\n for (var idx = 0; idx < limit; idx++) {\n var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n var labelBox = labels[idx].box;\n var labelAngle = this$1.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n labels[idx$1].options.rotation = angle;\n labels[idx$1].reflow(new Box());\n }\n\n return true;\n }\n };\n\n Axis.prototype.arrangeTitle = function arrangeTitle () {\n var ref = this;\n var options = ref.options;\n var title = ref.title;\n var mirror = options.labels.mirror;\n var vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n };\n\n Axis.prototype.arrangeNotes = function arrangeNotes () {\n var this$1 = this;\n\n for (var idx = 0; idx < this.notes.length; idx++) {\n var item = this$1.notes[idx];\n var value = item.options.value;\n var slot = (void 0);\n\n if (defined(value)) {\n if (this$1.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this$1.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this$1.lineBox());\n }\n };\n\n Axis.prototype.noteSlot = function noteSlot (value) {\n return this.getSlot(value);\n };\n\n Axis.prototype.alignTo = function alignTo (secondAxis) {\n var lineBox = secondAxis.lineBox();\n var vertical = this.options.vertical;\n var pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n };\n\n Axis.prototype.axisLabelText = function axisLabelText (value, options, context) {\n var this$1 = this;\n\n var text;\n var tmpl = getTemplate(options);\n var defaultText = function () {\n if (!options.format) {\n return value;\n }\n\n return this$1.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n var templateContext = Object.assign({}, context, {\n get text() { return defaultText(); },\n value: value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n };\n\n Axis.prototype.slot = function slot (from , to, limit) {\n var slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n };\n\n Axis.prototype.contentBox = function contentBox () {\n var box = this.box.clone();\n var labels = this.labels;\n if (labels.length) {\n var axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n var offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n var lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n };\n\n Axis.prototype.maxLabelOffset = function maxLabelOffset () {\n var this$1 = this;\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var tickPositions = this.getLabelsTickPositions();\n var offsetField = vertical ? Y : X;\n var labels = this.labels;\n var startPosition = reverse ? 1 : 0;\n var endPosition = reverse ? 0 : 1;\n var maxStartOffset = 0;\n var maxEndOffset = 0;\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1.labelTickIndex(label);\n var startTick = (void 0), endTick = (void 0);\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n };\n\n Axis.prototype.limitRange = function limitRange (from, to, min, max, offset) {\n var options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n var rangeSize = to - from;\n var minValue = from;\n var maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n };\n\n Axis.prototype.valueRange = function valueRange () {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n };\n\n Axis.prototype.lineDir = function lineDir () {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n };\n\n Axis.prototype.lineInfo = function lineInfo () {\n var ref = this.options;\n var vertical = ref.vertical;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = this.lineDir();\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n };\n\n Axis.prototype.pointOffset = function pointOffset (point) {\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n var offset = relative / lineSize;\n\n return offset;\n };\n\n // Computes the axis range change (delta) for a given scale factor.\n // The delta is subtracted from the axis range:\n // * delta > 0 reduces the axis range (zoom-in)\n // * delta < 0 expands the axis range (zoom-out)\n Axis.prototype.scaleToDelta = function scaleToDelta (rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n var MAX_SCALE = 0.999;\n var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n var delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n };\n\n Axis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n return !this.options.justified;\n };\n\n //add legacy fields to the options that are no longer generated by default\n Axis.prototype.prepareUserOptions = function prepareUserOptions () {\n };\n\n return Axis;\n}(ChartElement));\n\nsetDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n});\n\nexport default Axis;\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nvar MIN_CATEGORY_POINTS_RANGE = 0.01;\nvar MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n if (value instanceof Date) {\n var length = arr.length;\n for (var idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n}\n\nvar CategoryAxis = (function (Axis) {\n function CategoryAxis () {\n Axis.apply(this, arguments);\n }\n\n if ( Axis ) CategoryAxis.__proto__ = Axis;\n CategoryAxis.prototype = Object.create( Axis && Axis.prototype );\n CategoryAxis.prototype.constructor = CategoryAxis;\n\n CategoryAxis.prototype.initFields = function initFields () {\n this._ticks = {};\n };\n\n CategoryAxis.prototype.categoriesHash = function categoriesHash () {\n return \"\";\n };\n\n CategoryAxis.prototype.clone = function clone () {\n var copy = new CategoryAxis(Object.assign({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n };\n\n CategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n var categories = options.categories || [];\n var definedMin = defined(options.min);\n var definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n var min = definedMin ? Math.floor(options.min) : 0;\n var max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n };\n\n CategoryAxis.prototype.rangeIndices = function rangeIndices () {\n var options = this.options;\n var length = options.categories.length || 1;\n var min = isNumber(options.min) ? options.min % 1 : 0;\n var max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.range = function range () {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.roundedRange = function roundedRange () {\n return this.range();\n };\n\n CategoryAxis.prototype.totalRange = function totalRange () {\n var options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n };\n\n CategoryAxis.prototype.scaleOptions = function scaleOptions () {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var lineBox = this.lineBox();\n var size = this.options.vertical ? lineBox.height() : lineBox.width();\n var scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n Axis.prototype.arrangeLabels.call(this);\n this.hideOutOfRangeLabels();\n };\n\n CategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n var ref = this;\n var box = ref.box;\n var labels = ref.labels;\n\n if (labels.length > 0) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n var firstLabel = labels[0];\n var lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n };\n\n CategoryAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTicks().majorTicks;\n };\n\n CategoryAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTicks().minorTicks;\n };\n\n CategoryAxis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n return this.getTicks().labelTicks;\n };\n\n CategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var limit = Math.ceil(max);\n var current = Math.floor(min);\n var indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n };\n\n CategoryAxis.prototype.getTickPositions = function getTickPositions (stepSize) {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n var indices = this.tickIndices(stepSize);\n var positions = [];\n\n for (var idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n };\n\n CategoryAxis.prototype.getTicks = function getTicks () {\n var options = this.options;\n var cache = this._ticks;\n var range = this.rangeIndices();\n var lineBox = this.lineBox();\n var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n };\n\n CategoryAxis.prototype.filterOutOfRangePositions = function filterOutOfRangePositions (positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n var axis = this.options.vertical ? Y : X;\n var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n var end = positions.length - 1;\n var startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n var endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n };\n\n CategoryAxis.prototype.lineInfo = function lineInfo () {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = reverse ? -1 : 1;\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n };\n\n CategoryAxis.prototype.lineDir = function lineDir () {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var reverse = ref.reverse;\n return reverse ? -1 : 1;\n };\n\n // TODO: Rename to slotBox, valueSlot, slotByIndex?\n CategoryAxis.prototype.getSlot = function getSlot (from, to, limit) {\n var options = this.options;\n var reverse = options.reverse;\n var justified = options.justified;\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var box = ref.box;\n var min = ref.min;\n var ref$1 = this.lineInfo();\n var valueAxis = ref$1.axis;\n var lineStart = ref$1.lineStart;\n\n var slotBox = box.clone();\n var singleSlot = !defined(to);\n\n var start = valueOrDefault(from, 0);\n var end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n var p1 = lineStart + (start - min) * scale;\n var p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n };\n\n CategoryAxis.prototype.limitSlot = function limitSlot (slot) {\n var vertical = this.options.vertical;\n var valueAxis = vertical ? Y : X;\n var lineBox = this.lineBox();\n var limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n };\n\n CategoryAxis.prototype.slot = function slot (from, to, limit) {\n var min = Math.floor(this.options.min || 0);\n var start = from;\n var end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return Axis.prototype.slot.call(this, start, end, limit);\n };\n\n CategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n var ref = this.options;\n var reverse = ref.reverse;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var max = ref$1.max;\n var startValue = reverse ? max : min;\n var lineStart = box[valueAxis + 1];\n var lineEnd = box[valueAxis + 2];\n var pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n var value = startValue + (pos - lineStart) / scale;\n var diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n };\n\n CategoryAxis.prototype.getCategory = function getCategory (point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n };\n\n CategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n };\n\n CategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n var options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n };\n\n CategoryAxis.prototype.categoriesCount = function categoriesCount () {\n return (this.options.categories || []).length;\n };\n\n CategoryAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var range = options.categories.length;\n var scale = size / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n };\n\n CategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var rangeIndices = this.limitedRangeIndices();\n var range = rangeIndices.max - rangeIndices.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = rangeIndices.min + minDelta;\n var max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var ref = this.totalRange();\n var totalMin = ref.min;\n var totalMax = ref.max;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n };\n\n CategoryAxis.prototype.labelsCount = function labelsCount () {\n var labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n };\n\n CategoryAxis.prototype.labelsRange = function labelsRange () {\n var options = this.options;\n var justified = options.justified;\n var labelOptions = options.labels;\n var ref = this.limitedRangeIndices(true);\n var min = ref.min;\n var max = ref.max;\n var start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n var skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n };\n\n CategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var dataItem = options.dataItems ? options.dataItems[index] : null;\n var category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n var text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n };\n\n CategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.limitedRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n };\n\n CategoryAxis.prototype.noteSlot = function noteSlot (value) {\n var options = this.options;\n var index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n };\n\n CategoryAxis.prototype.arrangeNotes = function arrangeNotes () {\n Axis.prototype.arrangeNotes.call(this);\n this.hideOutOfRangeNotes();\n };\n\n CategoryAxis.prototype.hideOutOfRangeNotes = function hideOutOfRangeNotes () {\n var ref = this;\n var notes = ref.notes;\n var box = ref.box;\n if (notes && notes.length) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n\n for (var idx = 0; idx < notes.length; idx++) {\n var note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n };\n\n CategoryAxis.prototype.pan = function pan (delta) {\n var range = this.limitedRangeIndices(true);\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n var totalRange = this.totalRange();\n var min = range.min + offset;\n var max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n };\n\n CategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n var ref = this.options;\n var reverse = ref.reverse;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var range = this.limitedRangeIndices(true);\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n var diffStart = start[valueAxis] - lineStart;\n var diffEnd = end[valueAxis] - lineStart;\n\n var min = range.min + diffStart / scale;\n var max = range.min + diffEnd / scale;\n var rangeMin = Math.min(min, max);\n var rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n };\n\n CategoryAxis.prototype.valueRange = function valueRange () {\n return this.range();\n };\n\n CategoryAxis.prototype.totalIndex = function totalIndex (value) {\n var options = this.options;\n var index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n };\n\n CategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n var options = this.options;\n var min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n var max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.limitedRangeIndices = function limitedRangeIndices (totalLimit) {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (totalLimit) {\n var totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.totalRangeIndices = function totalRangeIndices () {\n return {\n min: 0,\n max: this.totalRange().max || 1\n };\n };\n\n CategoryAxis.prototype.indexCategories = function indexCategories () {\n if (!this._categoriesMap) {\n var map = this._categoriesMap = new HashMap();\n var srcCategories = this.options.srcCategories;\n for (var idx = 0; idx < srcCategories.length; idx++) {\n map.set(srcCategories[idx], idx);\n }\n }\n };\n\n CategoryAxis.prototype.totalCount = function totalCount () {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n };\n\n return CategoryAxis;\n}(Axis));\n\nsetDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n});\n\nexport default CategoryAxis;\n","var COORDINATE_LIMIT = 300000;\n\nvar DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n};\n\nvar ZERO_THRESHOLD = 0.2;\n\nexport {\n COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nvar AUTO = \"auto\";\nvar BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nvar FIT = \"fit\";\n\n\nfunction categoryRange(categories, clearCache) {\n if (clearCache) {\n categories._range = undefined;\n }\n\n var range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n}\n\nvar EmptyDateRange = function EmptyDateRange(options) {\n this.options = options;\n};\n\nEmptyDateRange.prototype.displayIndices = function displayIndices () {\n return {\n min: 0,\n max: 1\n };\n};\n\nEmptyDateRange.prototype.displayRange = function displayRange () {\n return {};\n};\n\nEmptyDateRange.prototype.total = function total () {\n return {};\n};\n\nEmptyDateRange.prototype.valueRange = function valueRange () {\n return {};\n};\n\nEmptyDateRange.prototype.valueIndex = function valueIndex () {\n return -1;\n};\n\nEmptyDateRange.prototype.values = function values () {\n return [];\n};\n\nEmptyDateRange.prototype.totalIndex = function totalIndex () {\n return -1;\n};\n\nEmptyDateRange.prototype.valuesCount = function valuesCount () {\n return 0;\n};\n\nEmptyDateRange.prototype.totalCount = function totalCount () {\n return 0;\n};\n\nEmptyDateRange.prototype.dateAt = function dateAt () {\n return null;\n};\n\nvar DateRange = function DateRange(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n var roundToBaseUnit = options.roundToBaseUnit;\n var justified = options.justified;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n var lowerEnd = this.roundToTotalStep(end);\n var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n var min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n var max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n var next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n};\n\nDateRange.prototype.displayRange = function displayRange () {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n};\n\nDateRange.prototype.displayIndices = function displayIndices () {\n if (!this._indices) {\n var options = this.options;\n\n var baseUnit = options.baseUnit;\n var baseUnitStep = options.baseUnitStep;\n\n var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n};\n\nDateRange.prototype.total = function total () {\n return {\n min: this.start,\n max: this.end\n };\n};\n\nDateRange.prototype.totalCount = function totalCount () {\n var last = this.totalIndex(this.end);\n\n return last + (this.options.justified ? 1 : 0);\n};\n\nDateRange.prototype.valueRange = function valueRange () {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n};\n\nDateRange.prototype.valueIndex = function valueIndex (value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.totalIndex = function totalIndex (value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.dateIndex = function dateIndex$1 (value) {\n var options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n};\n\nDateRange.prototype.valuesCount = function valuesCount () {\n var maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n};\n\nDateRange.prototype.values = function values () {\n var values = this._values;\n if (!values) {\n var options = this.options;\n var range = this.valueRange();\n this._values = values = [];\n\n for (var date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n};\n\nDateRange.prototype.dateAt = function dateAt (index, total) {\n var options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n};\n\nDateRange.prototype.roundToTotalStep = function roundToTotalStep (value, upper, next) {\n var ref = this.options;\n var baseUnit = ref.baseUnit;\n var baseUnitStep = ref.baseUnitStep;\n var weekStartDay = ref.weekStartDay;\n var start = this.start;\n\n var step = dateIndex(value, start, baseUnit, baseUnitStep);\n var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n};\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n var categoryLimits = categoryRange(options.categories);\n var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n var autoUnit = options.baseUnit === FIT;\n var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n var units = span / TIME_PER_UNIT[baseUnit];\n var totalUnits = units;\n var unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n var categories = options.categories;\n var count = defined(categories) ? categories.length : 0;\n var minDiff = MAX_VALUE;\n var lastCategory, unit;\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n var category = categories[categoryIx];\n\n if (category && lastCategory) {\n var diff = Math.abs(absoluteDateDiff(category, lastCategory));\n\n if (diff !== 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n var baseUnit = (options.baseUnit || \"\").toLowerCase();\n var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n}\n\nvar DateCategoryAxis = (function (CategoryAxis) {\n function DateCategoryAxis () {\n CategoryAxis.apply(this, arguments);\n }\n\n if ( CategoryAxis ) DateCategoryAxis.__proto__ = CategoryAxis;\n DateCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n DateCategoryAxis.prototype.constructor = DateCategoryAxis;\n\n DateCategoryAxis.prototype.clone = function clone () {\n var copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n };\n\n DateCategoryAxis.prototype.categoriesHash = function categoriesHash () {\n var start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n };\n\n DateCategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n return options;\n };\n\n DateCategoryAxis.prototype.initFields = function initFields () {\n CategoryAxis.prototype.initFields.call(this);\n\n var chartService = this.chartService;\n var intlService = chartService.intl;\n var options = this.options;\n\n var categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n var range = categoryRange(categories, true);\n var maxDivisions = options.maxDivisions;\n var safeOptions = initUnit(options);\n\n var forecast = options._forecast;\n if (forecast) {\n if (forecast.before > 0) {\n range.min = addDuration(range.min, -forecast.before, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n\n if (forecast.after > 0) {\n range.max = addDuration(range.max, forecast.after, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n }\n\n this.dataRange = new DateRange(range.min, range.max, safeOptions);\n\n if (maxDivisions) {\n var dataRange = this.dataRange.displayRange();\n\n var divisionOptions = Object.assign({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n var dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n };\n\n DateCategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n var ref = this;\n var dataRange = ref.dataRange;\n var divisionRange = ref.divisionRange;\n var valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return CategoryAxis.prototype.tickIndices.call(this, stepSize);\n }\n\n var indices = [];\n var values = divisionRange.values();\n var offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (var idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n var last = indices.length - 1;\n indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n }\n }\n\n return indices;\n };\n\n DateCategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n var categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n };\n\n DateCategoryAxis.prototype.parseNoteValue = function parseNoteValue (value) {\n return parseDate(this.chartService.intl, value);\n };\n\n DateCategoryAxis.prototype.noteSlot = function noteSlot (value) {\n return this.getSlot(value);\n };\n\n DateCategoryAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var baseUnit = options.baseUnit;\n var weekStartDay = options.weekStartDay;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / (range.max - range.min);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n var from = addTicks(options.min || range.min, offset);\n var to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n };\n\n DateCategoryAxis.prototype.labelsRange = function labelsRange () {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n };\n\n DateCategoryAxis.prototype.pan = function pan (delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var ref = this.dataRange.displayRange();\n var min = ref.min;\n var max = ref.max;\n var totalLimits = this.dataRange.total();\n var scale = size / (max - min);\n var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n var from = addTicks(min, offset);\n var to = addTicks(max, offset);\n\n var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n };\n\n DateCategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n var pointsRange = CategoryAxis.prototype.pointsRange.call(this, start, end);\n var datesRange = this.dataRange.displayRange();\n var indicesRange = this.dataRange.displayIndices();\n var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n var options = this.options;\n\n var min = addTicks(datesRange.min, pointsRange.min * scale);\n var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n };\n\n DateCategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n var options = this.options;\n var fit = options.userSetBaseUnit === FIT;\n var totalLimits = this.dataRange.total();\n var ref = this.dataRange.displayRange();\n var rangeMin = ref.min;\n var rangeMax = ref.max;\n\n var position = Math.abs(this.pointOffset(cursor));\n var range = rangeMax - rangeMin;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = Math.round(position * delta);\n var maxDelta = Math.round((1 - position) * delta);\n\n var ref$1 = this.dataRange.options;\n var baseUnit = ref$1.baseUnit;\n var min = new Date(rangeMin.getTime() + minDelta);\n var max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n\n var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n var rangeDiff = dateDiff(rangeMax, rangeMin);\n var diff = dateDiff(max, min);\n var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n var autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n var stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n };\n\n DateCategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var totalLimits = this.dataRange.total();\n var range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n };\n\n DateCategoryAxis.prototype.range = function range () {\n return this.dataRange.displayRange();\n };\n\n DateCategoryAxis.prototype.createLabels = function createLabels () {\n CategoryAxis.prototype.createLabels.call(this);\n this.createRangeLabels();\n };\n\n DateCategoryAxis.prototype.clearLabels = function clearLabels () {\n CategoryAxis.prototype.clearLabels.call(this);\n this.rangeLabels = [];\n };\n\n DateCategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n this.arrangeRangeLabels();\n CategoryAxis.prototype.arrangeLabels.call(this);\n };\n\n DateCategoryAxis.prototype.arrangeRangeLabels = function arrangeRangeLabels () {\n var ref = this;\n var options = ref.options;\n var rangeLabels = ref.rangeLabels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n var firstLabel = rangeLabels[0];\n if (firstLabel) {\n var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n var lastLabel = rangeLabels[1];\n if (lastLabel) {\n var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position$1);\n }\n };\n\n DateCategoryAxis.prototype.autoRotateLabels = function autoRotateLabels () {\n CategoryAxis.prototype.autoRotateLabels.call(this);\n this.autoRotateRangeLabels();\n };\n\n DateCategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n CategoryAxis.prototype.hideOutOfRangeLabels.call(this);\n this.hideOverlappingLabels();\n };\n\n DateCategoryAxis.prototype.hideOverlappingLabels = function hideOverlappingLabels () {\n var ref = this;\n var rangeLabels = ref.rangeLabels;\n var labels = ref.labels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n var firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (var i = 0; i < labels.length; i++) {\n var overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n var lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n if (!overlaps$1) {\n break;\n }\n }\n }\n };\n\n DateCategoryAxis.prototype.contentBox = function contentBox () {\n var box = CategoryAxis.prototype.contentBox.call(this);\n var rangeLabels = this.rangeLabels;\n\n for (var i = 0; i < rangeLabels.length; i++) {\n var label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n };\n\n DateCategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n if ( labelContext === void 0 ) labelContext = {};\n\n var options = this.options;\n var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n var date = this.divisionRange.dateAt(index);\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n };\n\n DateCategoryAxis.prototype.createRangeLabels = function createRangeLabels () {\n var this$1 = this;\n\n var ref = this.divisionRange;\n var displayStart = ref.displayStart;\n var displayEnd = ref.displayEnd;\n var options = this.options;\n var labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var createLabel = function (index, date, text) {\n if (text) {\n var label = new AxisLabel(date, text, index, null, labelOptions);\n this$1.append(label);\n this$1.rangeLabels.push(label);\n }\n };\n\n var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n };\n\n DateCategoryAxis.prototype.autoRotateRangeLabels = function autoRotateRangeLabels () {\n var this$1 = this;\n\n var labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n var rotateLabel = function (label, tickPositions, index) {\n var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n var angle = this$1.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n var tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n };\n\n DateCategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n return this.dataRange.valueIndex(value);\n };\n\n DateCategoryAxis.prototype.slot = function slot (from, to, limit) {\n var dateRange = this.dataRange;\n var start = from;\n var end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n var slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n };\n\n DateCategoryAxis.prototype.getSlot = function getSlot (a, b, limit) {\n var start = a;\n var end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return CategoryAxis.prototype.getSlot.call(this, start, end, limit);\n };\n\n DateCategoryAxis.prototype.valueRange = function valueRange () {\n var options = this.options;\n var range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n };\n\n DateCategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n return this.dataRange.dateAt(index, total);\n };\n\n DateCategoryAxis.prototype.categoriesCount = function categoriesCount () {\n return this.dataRange.valuesCount();\n };\n\n DateCategoryAxis.prototype.rangeIndices = function rangeIndices () {\n return this.dataRange.displayIndices();\n };\n\n DateCategoryAxis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n return !this.divisionRange.options.justified;\n };\n\n DateCategoryAxis.prototype.prepareUserOptions = function prepareUserOptions () {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n };\n\n DateCategoryAxis.prototype.getCategory = function getCategory (point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n };\n\n DateCategoryAxis.prototype.totalIndex = function totalIndex (value) {\n return this.dataRange.totalIndex(value);\n };\n\n DateCategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n var range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n };\n\n DateCategoryAxis.prototype.totalRange = function totalRange () {\n return this.dataRange.total();\n };\n\n DateCategoryAxis.prototype.totalRangeIndices = function totalRangeIndices () {\n var range = this.dataRange.total();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n };\n\n DateCategoryAxis.prototype.totalCount = function totalCount () {\n return this.dataRange.totalCount();\n };\n\n DateCategoryAxis.prototype.isEmpty = function isEmpty () {\n return !this.options.srcCategories.length;\n };\n\n DateCategoryAxis.prototype.roundedRange = function roundedRange () {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n var options = this.options;\n var datesRange = categoryRange(options.srcCategories);\n\n var dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: false\n }));\n\n return dateRange.displayRange();\n };\n\n return DateCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nvar MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nvar NumericAxis = (function (Axis) {\n function NumericAxis(seriesMin, seriesMax, options, chartService) {\n Axis.call(this, Object.assign({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n }\n\n if ( Axis ) NumericAxis.__proto__ = Axis;\n NumericAxis.prototype = Object.create( Axis && Axis.prototype );\n NumericAxis.prototype.constructor = NumericAxis;\n\n NumericAxis.prototype.initUserOptions = function initUserOptions (options) {\n var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n };\n\n NumericAxis.prototype.initFields = function initFields () {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n };\n\n NumericAxis.prototype.clone = function clone () {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n };\n\n NumericAxis.prototype.startValue = function startValue () {\n return 0;\n };\n\n NumericAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n NumericAxis.prototype.getDivisions = function getDivisions (stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n var options = this.options;\n var range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n };\n\n NumericAxis.prototype.getTickPositions = function getTickPositions (unit, skipUnit) {\n var options = this.options;\n var ref = this.lineInfo();\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var range = options.max - options.min;\n var scale = lineSize / range;\n var step = unit * scale;\n var divisions = this.getDivisions(unit);\n var positions = [];\n var pos = lineBox[axisOrigin];\n var skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (var idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n };\n\n NumericAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n NumericAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTickPositions(this.options.minorUnit);\n };\n\n NumericAxis.prototype.getSlot = function getSlot (a, b, limit) {\n if ( limit === void 0 ) limit = false;\n\n var options = this.options;\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var lineStart = ref.lineStart;\n var step = axisDir * (lineSize / (options.max - options.min));\n\n var start = valueOrDefault(a, b || 0);\n var end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n var p1 = Math.min(start, end) - options.min;\n var p2 = Math.max(start, end) - options.min;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n };\n\n NumericAxis.prototype.getValue = function getValue (point) {\n var options = this.options;\n var max = Number(options.max);\n var min = Number(options.min);\n var offset = this.pointOffset(point);\n var valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n var value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n };\n\n NumericAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var vertical = options.vertical;\n var reverse = options.reverse;\n var max = options.max;\n var min = options.min;\n var ref = this.lineInfo();\n var lineSize = ref.lineSize;\n var range = max - min;\n var scale = lineSize / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n };\n\n NumericAxis.prototype.labelsCount = function labelsCount () {\n return this.getDivisions(this.options.majorUnit);\n };\n\n NumericAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n };\n\n NumericAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n };\n\n NumericAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n };\n\n NumericAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n };\n\n NumericAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n NumericAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n };\n\n NumericAxis.prototype.isValidRange = function isValidRange (min, max) {\n return max - min > MIN_VALUE_RANGE;\n };\n\n return NumericAxis;\n}(Axis));\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n var narrowRange = options.narrowRange;\n\n var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n var majorUnit = autoMajorUnit(autoMin, autoMax);\n var autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n}\n\nfunction clearNullValues(options, fields) {\n for (var idx = 0; idx < fields.length; idx++) {\n var field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n var options = userOptions;\n var userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n var userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n var result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n var threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n var axisMin;\n\n if (min >= 0 && max >= 0) {\n var minValue = min === max ? 0 : min;\n\n var diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n var axisMax;\n\n if (min <= 0 && max <= 0) {\n var maxValue = min === max ? 0 : max;\n\n var diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nvar MIN_VALUE_RANGE = 1000;\n\nvar DateValueAxis = (function (Axis) {\n function DateValueAxis(seriesMin, seriesMax, axisOptions, chartService) {\n var min = toDate(seriesMin);\n var max = toDate(seriesMax);\n\n var intlService = chartService.intl;\n var options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n Axis.call(this, options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n var weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n }\n\n if ( Axis ) DateValueAxis.__proto__ = Axis;\n DateValueAxis.prototype = Object.create( Axis && Axis.prototype );\n DateValueAxis.prototype.constructor = DateValueAxis;\n\n DateValueAxis.prototype.clone = function clone () {\n return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n };\n\n DateValueAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n DateValueAxis.prototype.getDivisions = function getDivisions (stepValue) {\n var options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n };\n\n DateValueAxis.prototype.getTickPositions = function getTickPositions (step) {\n var options = this.options;\n var ref = this.lineInfo();\n var dir = ref.axisDir;\n var lineSize = ref.lineSize;\n var start = ref.lineStart;\n var divisions = this.getDivisions(step);\n var timeRange = dateDiff(options.max, options.min);\n var scale = lineSize / timeRange;\n var weekStartDay = options.weekStartDay || 0;\n\n var positions = [ start ];\n for (var i = 1; i < divisions; i++) {\n var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n var pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n };\n\n DateValueAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n DateValueAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTickPositions(this.options.minorUnit);\n };\n\n DateValueAxis.prototype.getSlot = function getSlot (a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n };\n\n DateValueAxis.prototype.getValue = function getValue (point) {\n var value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n };\n\n DateValueAxis.prototype.labelsCount = function labelsCount () {\n return this.getDivisions(this.options.majorUnit);\n };\n\n DateValueAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var offset = index * options.majorUnit;\n var weekStartDay = options.weekStartDay || 0;\n var date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n var unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n };\n\n DateValueAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var reverse = options.reverse;\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / dateDiff(range.max, range.min);\n\n var offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n var from = addTicks(options.min, offset);\n var to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n };\n\n DateValueAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n };\n\n DateValueAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta, true);\n var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n };\n\n DateValueAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n };\n\n DateValueAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = toDate(toTime(this.options.min) + minDelta);\n var max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n DateValueAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min: min,\n max: max\n };\n };\n\n return DateValueAxis;\n}(Axis));\n\nfunction timeUnits(delta) {\n var unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n var min = options.min || seriesMin;\n var max = options.max || seriesMax;\n var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n var baseUnitTime = TIME_PER_UNIT[baseUnit];\n var weekStartDay = options.weekStartDay || 0;\n var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n var majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n var actualUnits = duration(autoMin, autoMax, baseUnit);\n var totalUnits = ceil(actualUnits, majorUnit);\n var unitsToAdd = totalUnits - actualUnits;\n var head = Math.floor(unitsToAdd / 2);\n var tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nvar DEFAULT_MAJOR_UNIT = 10;\nvar MIN_VALUE_RANGE = 1e-6;\n\nvar LogarithmicAxis = (function (Axis) {\n function LogarithmicAxis(seriesMin, seriesMax, options, chartService) {\n\n var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n var base = axisOptions.majorUnit;\n var autoMax = autoAxisMax(seriesMax, base);\n var autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n var range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n Axis.call(this, axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n }\n\n if ( Axis ) LogarithmicAxis.__proto__ = Axis;\n LogarithmicAxis.prototype = Object.create( Axis && Axis.prototype );\n LogarithmicAxis.prototype.constructor = LogarithmicAxis;\n\n LogarithmicAxis.prototype.clone = function clone () {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n };\n\n LogarithmicAxis.prototype.startValue = function startValue () {\n return this.options.min;\n };\n\n LogarithmicAxis.prototype.getSlot = function getSlot (a, b, limit) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var min = options.min;\n var max = options.max;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineBox = ref$1.lineBox;\n var lineSize = ref$1.lineSize;\n var lineStart = ref$1.lineStart;\n var step = axisDir * (lineSize / (logMax - logMin));\n var start = valueOrDefault(a, b || 1);\n var end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n var p1 = Math.min(start, end) - logMin;\n var p2 = Math.max(start, end) - logMin;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n };\n\n LogarithmicAxis.prototype.getValue = function getValue (point) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineStart = ref$1.lineStart;\n var lineSize = ref$1.lineSize;\n var step = ((logMax - logMin) / lineSize);\n var offset = axisDir * (point[axis] - lineStart);\n var valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n var value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n };\n\n LogarithmicAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n LogarithmicAxis.prototype.translateRange = function translateRange (delta) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var reverse = options.reverse;\n var vertical = options.vertical;\n var base = options.majorUnit;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var scale = size / (logMax - logMin);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n };\n\n LogarithmicAxis.prototype.labelsCount = function labelsCount () {\n var floorMax = Math.floor(this.logMax);\n var count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n };\n\n LogarithmicAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n var ticks = [];\n\n this.traverseMajorTicksPositions(function (position) {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n };\n\n LogarithmicAxis.prototype.createTicks = function createTicks (lineGroup) {\n var options = this.options;\n var majorTicks = options.majorTicks;\n var minorTicks = options.minorTicks;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var lineBox = this.lineBox();\n var ticks = [];\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n };\n\n LogarithmicAxis.prototype.createGridLines = function createGridLines (altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var vertical = options.vertical;\n var lineBox = altAxis.lineBox();\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n };\n\n LogarithmicAxis.prototype.traverseMajorTicksPositions = function traverseMajorTicksPositions (callback, tickOptions) {\n var ref = this.lineInfo();\n var lineStart = ref.lineStart;\n var step = ref.step;\n var ref$1 = this;\n var logMin = ref$1.logMin;\n var logMax = ref$1.logMax;\n\n for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n };\n\n LogarithmicAxis.prototype.traverseMinorTicksPositions = function traverseMinorTicksPositions (callback, tickOptions) {\n var this$1 = this;\n\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var ref$1 = this.lineInfo();\n var lineStart = ref$1.lineStart;\n var step = ref$1.step;\n var ref$2 = this;\n var logMin = ref$2.logMin;\n var logMax = ref$2.logMax;\n var start = Math.floor(logMin);\n\n for (var power = start; power < logMax; power++) {\n var minorOptions = this$1._minorIntervalOptions(power);\n for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n var value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n };\n\n LogarithmicAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var power = Math.ceil(this.logMin + index);\n var value = Math.pow(this.options.majorUnit, power);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n };\n\n LogarithmicAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n };\n\n LogarithmicAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n };\n\n LogarithmicAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n };\n\n LogarithmicAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var ref = this.options;\n var base = ref.majorUnit;\n var logMin = log(this.options.min, base);\n var logMax = log(this.options.max, base);\n var position = Math.abs(this.pointOffset(cursor));\n var range = logMax - logMin;\n var delta = this.scaleToDelta(scale, range);\n var min = Math.pow(base, logMin + position * delta);\n var max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n LogarithmicAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n };\n\n LogarithmicAxis.prototype._minorIntervalOptions = function _minorIntervalOptions (power) {\n var ref = this.options;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var value = Math.pow(base, power);\n var nextValue = Math.pow(base, power + 1);\n var difference = nextValue - value;\n var minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n };\n\n LogarithmicAxis.prototype.lineInfo = function lineInfo () {\n var info = Axis.prototype.lineInfo.call(this);\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n };\n\n return LogarithmicAxis;\n}(Axis));\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n var min = axisOptions.min;\n var max = axisOptions.max;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction autoAxisMin(min, max, options) {\n var base = options.majorUnit;\n var autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n var autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nvar GridLinesMixin = {\n createGridLines: function(altAxis) {\n var options = this.options;\n var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n var gridLines = [];\n var skipMajor = false;\n var majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n var center = this.box.center();\n var circle = new geom.Circle([ center.x, center.y ], radius);\n var container = this.gridLinesVisual();\n\n for (var i = 0; i < angles.length; i++) {\n var line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n var this$1 = this;\n\n var divs = this.intervals(size, skip, step, skipAngles);\n var options = altAxis.options;\n var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, function (d) {\n var alpha = this$1.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nvar RadarCategoryAxis = (function (CategoryAxis) {\n function RadarCategoryAxis () {\n CategoryAxis.apply(this, arguments);\n }\n\n if ( CategoryAxis ) RadarCategoryAxis.__proto__ = CategoryAxis;\n RadarCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n RadarCategoryAxis.prototype.constructor = RadarCategoryAxis;\n\n RadarCategoryAxis.prototype.range = function range () {\n return { min: 0, max: this.options.categories.length };\n };\n\n RadarCategoryAxis.prototype.reflow = function reflow (box) {\n this.box = box;\n this.reflowLabels();\n };\n\n RadarCategoryAxis.prototype.lineBox = function lineBox () {\n return this.box;\n };\n\n RadarCategoryAxis.prototype.reflowLabels = function reflowLabels () {\n var this$1 = this;\n\n var ref = this;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n var measureBox = new Box();\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n };\n\n RadarCategoryAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n if ( skipAngles === void 0 ) skipAngles = false;\n\n var options = this.options;\n var categories = options.categories.length;\n var divCount = categories / size || 1;\n var divAngle = 360 / divCount;\n var skip = skipOption || 0;\n var step = stepOption || 1;\n var divs = [];\n var angle = 0;\n\n for (var i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n };\n\n RadarCategoryAxis.prototype.majorIntervals = function majorIntervals () {\n return this.intervals(1);\n };\n\n RadarCategoryAxis.prototype.minorIntervals = function minorIntervals () {\n return this.intervals(0.5);\n };\n\n RadarCategoryAxis.prototype.intervalAngle = function intervalAngle (interval) {\n return (360 + interval + this.options.startAngle) % 360;\n };\n\n RadarCategoryAxis.prototype.majorAngles = function majorAngles () {\n var this$1 = this;\n\n return map(this.majorIntervals(), function (interval) { return this$1.intervalAngle(interval); });\n };\n\n RadarCategoryAxis.prototype.createLine = function createLine () {\n return [];\n };\n\n RadarCategoryAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n };\n\n RadarCategoryAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n var ref = this.options;\n var minorGridLines = ref.minorGridLines;\n var majorGridLines = ref.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n };\n\n RadarCategoryAxis.prototype.radiusCallback = function radiusCallback (radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = rad(360 / (this.options.categories.length * 2));\n var minorRadius = Math.cos(minorAngle) * radius;\n var majorAngles = this.majorAngles();\n\n var radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n };\n\n RadarCategoryAxis.prototype.createPlotBands = function createPlotBands () {\n var this$1 = this;\n\n var plotBands = this.options.plotBands || [];\n\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var slot = this$1.plotBandSlot(band);\n var singleSlot = this$1.getSlot(band.from);\n\n var head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n var tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n };\n\n RadarCategoryAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n return this.getSlot(band.from, band.to - 1);\n };\n\n RadarCategoryAxis.prototype.getSlot = function getSlot (from, to) {\n var options = this.options;\n var justified = options.justified;\n var box = this.box;\n var divs = this.majorAngles();\n var totalDivs = divs.length;\n var slotAngle = 360 / totalDivs;\n var fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n var slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n var slots = toValue - fromValue + 1;\n var angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n };\n\n RadarCategoryAxis.prototype.slot = function slot (from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n };\n\n RadarCategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n var this$1 = this;\n\n var length = this.options.categories.length;\n var index = null;\n\n for (var i = 0; i < length; i++) {\n var slot = this$1.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n };\n\n return RadarCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nvar PolarAxis = (function (Axis) {\n function PolarAxis(options, chartService) {\n Axis.call(this, options, chartService);\n\n var instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n }\n\n if ( Axis ) PolarAxis.__proto__ = Axis;\n PolarAxis.prototype = Object.create( Axis && Axis.prototype );\n PolarAxis.prototype.constructor = PolarAxis;\n\n PolarAxis.prototype.getDivisions = function getDivisions (stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n };\n\n PolarAxis.prototype.reflow = function reflow (box) {\n this.box = box;\n this.reflowLabels();\n };\n\n PolarAxis.prototype.reflowLabels = function reflowLabels () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n\n var measureBox = new Box();\n var divs = this.intervals(options.majorUnit, skip, step);\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n };\n\n PolarAxis.prototype.lineBox = function lineBox () {\n return this.box;\n };\n\n PolarAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n if ( skipAngles === void 0 ) skipAngles = false;\n\n var min = this.options.min;\n var divisions = this.getDivisions(size);\n var divs = [];\n var skip = skipOption || 0;\n var step = stepOption || 1;\n\n for (var i = skip; i < divisions; i += step) {\n var current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n };\n\n PolarAxis.prototype.majorIntervals = function majorIntervals () {\n return this.intervals(this.options.majorUnit);\n };\n\n PolarAxis.prototype.minorIntervals = function minorIntervals () {\n return this.intervals(this.options.minorUnit);\n };\n\n PolarAxis.prototype.intervalAngle = function intervalAngle (i) {\n return (540 - i - this.options.startAngle) % 360;\n };\n\n PolarAxis.prototype.createLine = function createLine () {\n return [];\n };\n\n PolarAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n };\n\n PolarAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n };\n\n PolarAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n return this.getSlot(band.from, band.to);\n };\n\n PolarAxis.prototype.getSlot = function getSlot (a, b) {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var startAngle = options.startAngle;\n var start = limitValue(a, options.min, options.max);\n var end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n var tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n };\n\n PolarAxis.prototype.slot = function slot (from, to) {\n if ( to === void 0 ) to = from;\n\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var min = Math.min(from, to);\n var max = Math.max(from, to);\n var startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n };\n\n PolarAxis.prototype.getValue = function getValue (point) {\n var options = this.options;\n var center = this.box.center();\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = Math.round(deg(Math.atan2(dy, dx)));\n var start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n };\n\n PolarAxis.prototype.valueRange = function valueRange () {\n return {\n min: 0,\n max: Math.PI * 2\n };\n };\n\n return PolarAxis;\n}(Axis));\n\nsetDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nvar RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n var this$1 = this;\n\n var ref = this.options;\n var type = ref.majorGridLines.type;\n var plotBands = ref.plotBands; if ( plotBands === void 0 ) plotBands = [];\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n var slot = this$1.getSlot(band.from, band.to, true);\n var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n var shape = (void 0);\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(this$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n var innerPoints = [];\n var outerPoints = [];\n var center = [ ring.center.x, ring.center.y ];\n var innerCircle = new geom.Circle(center, ring.innerRadius);\n var outerCircle = new geom.Circle(center, ring.radius);\n\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var majorTicks = this.radarMajorGridLinePositions();\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n var minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip; if ( skip === void 0 ) skip = 0;\n var step = options.step; if ( step === void 0 ) step = 0;\n var container = this.gridLinesVisual();\n\n for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n var tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new geom.Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n var line = new draw.Path(style);\n for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n var lineBox = this.lineBox();\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var radius = point.distanceTo(center);\n var distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n var alpha = angularDistance(theta, majorAngles[0]);\n var gamma = 90 - midAngle;\n var beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n};\n\nfunction angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarNumericAxis = (function (NumericAxis) {\n function RadarNumericAxis () {\n NumericAxis.apply(this, arguments);\n }\n\n if ( NumericAxis ) RadarNumericAxis.__proto__ = NumericAxis;\n RadarNumericAxis.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n RadarNumericAxis.prototype.constructor = RadarNumericAxis;\n\n RadarNumericAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n RadarNumericAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n var options = this.options;\n var minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n };\n\n RadarNumericAxis.prototype.axisType = function axisType () {\n return NumericAxis;\n };\n\n return RadarNumericAxis;\n}(NumericAxis));\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarLogarithmicAxis = (function (LogarithmicAxis) {\n function RadarLogarithmicAxis () {\n LogarithmicAxis.apply(this, arguments);\n }\n\n if ( LogarithmicAxis ) RadarLogarithmicAxis.__proto__ = LogarithmicAxis;\n RadarLogarithmicAxis.prototype = Object.create( LogarithmicAxis && LogarithmicAxis.prototype );\n RadarLogarithmicAxis.prototype.constructor = RadarLogarithmicAxis;\n\n RadarLogarithmicAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n var positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n };\n\n RadarLogarithmicAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n var positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n };\n\n RadarLogarithmicAxis.prototype.axisType = function axisType () {\n return LogarithmicAxis;\n };\n\n return RadarLogarithmicAxis;\n}(LogarithmicAxis));\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nvar CurveProcessor = (function (Class) {\n function CurveProcessor(closed) {\n Class.call(this);\n\n this.closed = closed;\n }\n\n if ( Class ) CurveProcessor.__proto__ = Class;\n CurveProcessor.prototype = Object.create( Class && Class.prototype );\n CurveProcessor.prototype.constructor = CurveProcessor;\n\n CurveProcessor.prototype.process = function process (dataPoints) {\n var this$1 = this;\n\n var points = dataPoints.slice(0);\n var segments = [];\n var closed = this.closed;\n var length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new geom.Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new geom.Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n this$1.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = this$1.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new geom.Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new geom.Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p2,\n this.secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n };\n\n CurveProcessor.prototype.removeDuplicates = function removeDuplicates (idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n };\n\n CurveProcessor.prototype.invertAxis = function invertAxis (p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = this.lineFunction(p0,p1);\n var y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n };\n\n CurveProcessor.prototype.isLine = function isLine (p0, p1, p2) {\n var fn = this.lineFunction(p0, p1);\n var y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n };\n\n CurveProcessor.prototype.lineFunction = function lineFunction (p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n };\n\n CurveProcessor.prototype.controlPoints = function controlPoints (p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n };\n\n CurveProcessor.prototype.restrictControlPoint = function restrictControlPoint (p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n };\n\n CurveProcessor.prototype.tangent = function tangent (p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n };\n\n CurveProcessor.prototype.isMonotonicByField = function isMonotonicByField (p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n };\n\n CurveProcessor.prototype.firstControlPoint = function firstControlPoint (tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n };\n\n CurveProcessor.prototype.secondControlPoint = function secondControlPoint (tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n };\n\n CurveProcessor.prototype.point = function point (xValue, yValue, xField, yField) {\n var controlPoint = new geom.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n };\n\n CurveProcessor.prototype.calculateFunction = function calculateFunction (fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n };\n\n return CurveProcessor;\n}(Class));\n\nfunction numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\nimport { createPatternFill } from './pattern';\n\nvar BoxElement = (function (ChartElement) {\n function BoxElement(options) {\n ChartElement.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n }\n\n if ( ChartElement ) BoxElement.__proto__ = ChartElement;\n BoxElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n BoxElement.prototype.constructor = BoxElement;\n\n BoxElement.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1.align(targetBox, X, options.align);\n this$1.align(targetBox, Y, options.vAlign);\n this$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n ChartElement.prototype.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n };\n\n BoxElement.prototype.align = function align (targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n };\n\n BoxElement.prototype.hasBox = function hasBox () {\n var options = this.options;\n return options.border.width || options.background;\n };\n\n BoxElement.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(draw.Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n };\n\n BoxElement.prototype.visualStyle = function visualStyle () {\n var options = this.options;\n var border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: createPatternFill(options.pattern, {\n color: options.background,\n opacity: options.opacity\n }, undefined),\n cursor: options.cursor\n };\n };\n\n return BoxElement;\n}(ChartElement));\n\nsetDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n});\n\nexport default BoxElement;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nvar Box = (function (Class) {\n function Box(x1, y1, x2, y2) {\n Class.call(this);\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n }\n\n if ( Class ) Box.__proto__ = Class;\n Box.prototype = Object.create( Class && Class.prototype );\n Box.prototype.constructor = Box;\n\n Box.prototype.equals = function equals (box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n };\n\n Box.prototype.width = function width () {\n return this.x2 - this.x1;\n };\n\n Box.prototype.height = function height () {\n return this.y2 - this.y1;\n };\n\n Box.prototype.translate = function translate (dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n };\n\n Box.prototype.move = function move (x, y) {\n var height = this.height();\n var width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n };\n\n Box.prototype.wrap = function wrap (targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n };\n\n Box.prototype.wrapPoint = function wrapPoint (point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n };\n\n Box.prototype.snapTo = function snapTo (targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n };\n\n Box.prototype.alignTo = function alignTo (targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n };\n\n Box.prototype.shrink = function shrink (dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n };\n\n Box.prototype.expand = function expand (dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n };\n\n Box.prototype.pad = function pad (padding) {\n var spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n };\n\n Box.prototype.unpad = function unpad (padding) {\n var spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n };\n\n Box.prototype.clone = function clone () {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n };\n\n Box.prototype.center = function center () {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n };\n\n Box.prototype.containsPoint = function containsPoint (point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n };\n\n Box.prototype.points = function points () {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n };\n\n Box.prototype.getHash = function getHash () {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n };\n\n Box.prototype.overlaps = function overlaps (box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n };\n\n Box.prototype.rotate = function rotate (rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n };\n\n Box.prototype.toRect = function toRect () {\n return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n };\n\n Box.prototype.hasSize = function hasSize () {\n return this.width() !== 0 && this.height() !== 0;\n };\n\n Box.prototype.align = function align (targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? WIDTH : HEIGHT;\n var size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n };\n\n return Box;\n}(Class));\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n}\n\nexport default Box;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault, autoTextColor } from '../common';\n\nvar ChartElement = (function (Class) {\n function ChartElement(options) {\n Class.call(this);\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n }\n\n if ( Class ) ChartElement.__proto__ = Class;\n ChartElement.prototype = Object.create( Class && Class.prototype );\n ChartElement.prototype.constructor = ChartElement;\n\n ChartElement.prototype.initUserOptions = function initUserOptions (options) {\n return options;\n };\n\n ChartElement.prototype.reflow = function reflow (targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n };\n\n ChartElement.prototype.destroy = function destroy () {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n };\n\n ChartElement.prototype.getRoot = function getRoot () {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n };\n\n ChartElement.prototype.getSender = function getSender () {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n };\n\n ChartElement.prototype.getService = function getService () {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n };\n\n ChartElement.prototype.translateChildren = function translateChildren (dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n };\n\n ChartElement.prototype.append = function append () {\n var arguments$1 = arguments;\n var this$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1.children.push(item);\n item.parent = this$1;\n }\n };\n\n ChartElement.prototype.renderVisual = function renderVisual () {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n };\n\n ChartElement.prototype.addVisual = function addVisual () {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n };\n\n ChartElement.prototype.renderChildren = function renderChildren () {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n };\n\n ChartElement.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n };\n\n ChartElement.prototype.createAnimation = function createAnimation () {\n if (this.visual && this.options.animation) {\n this.animation = draw.Animation.create(\n this.visual, this.options.animation\n );\n }\n };\n\n ChartElement.prototype.appendVisual = function appendVisual (childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n };\n\n ChartElement.prototype.clipRoot = function clipRoot () {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n };\n\n ChartElement.prototype.stackRoot = function stackRoot () {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n };\n\n ChartElement.prototype.stackVisual = function stackVisual (childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n };\n\n ChartElement.prototype.traverse = function traverse (callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n };\n\n ChartElement.prototype.closest = function closest (match) {\n var element = this;\n var matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n };\n\n ChartElement.prototype.renderComplete = function renderComplete () {};\n\n ChartElement.prototype.hasHighlight = function hasHighlight () {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n };\n\n ChartElement.prototype.toggleHighlight = function toggleHighlight (show, opacity) {\n var this$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n Object.assign(this.highlightVisualArgs(), {\n createVisual: function () { return this$1.createHighlight(highlightOptions); },\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n })\n );\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n };\n\n ChartElement.prototype.toggleFocusHighlight = function toggleFocusHighlight (show) {\n var options = ((this.options || {}).accessibility || {}).highlight || {};\n var focusHighlight = this._focusHighlight;\n\n if (!show && !focusHighlight) {\n return;\n }\n\n if (!focusHighlight) {\n var rootBackground = this.getRoot().options.background;\n var highlightColor = autoTextColor(rootBackground);\n var focusHighlightOptions = {\n fill: {\n opacity: options.opacity,\n color: options.color\n },\n stroke: Object.assign({}, {color: highlightColor}, options.border),\n zIndex: options.zIndex\n };\n\n focusHighlight = this._focusHighlight = this.createFocusHighlight(focusHighlightOptions);\n\n this.appendVisual(focusHighlight);\n }\n\n focusHighlight.visible(show);\n };\n\n ChartElement.prototype.createGradientOverlay = function createGradientOverlay (element, options, gradientOptions) {\n var overlay = new draw.Path(Object.assign({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n };\n\n ChartElement.prototype.createGradient = function createGradient (options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n };\n\n ChartElement.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return true;\n };\n\n return ChartElement;\n}(Class));\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","import { drawing } from '@progress/kendo-drawing';\nimport { isFunction } from './../common';\n\nvar dotsPattern = drawing.dotsPattern;\nvar verticalStripesPattern = drawing.verticalStripesPattern;\nvar crosshatchPattern = drawing.crosshatchPattern;\nvar diagonalStripesPattern = drawing.diagonalStripesPattern;\nvar gridPattern = drawing.gridPattern;\n\nvar patternMap = {\n dots: dotsPattern,\n verticalStripes: verticalStripesPattern,\n crosshatch: crosshatchPattern,\n diagonalStripes: diagonalStripesPattern,\n grid: gridPattern\n};\n\nexport function evaluatePattern(options, point) {\n return isFunction(options) ? options(point) : options;\n}\n\nexport function createPatternFill(options, fill, point) {\n var patternOptions = evaluatePattern(options, point);\n var pattern = patternOptions && patternMap[patternOptions.type];\n\n return pattern ? pattern(Object.assign({}, fill, patternOptions)) : fill;\n}\n","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nvar Point = (function (Class) {\n function Point(x, y) {\n Class.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( Class ) Point.__proto__ = Class;\n Point.prototype = Object.create( Class && Class.prototype );\n Point.prototype.constructor = Point;\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.equals = function equals (point) {\n return point && this.x === point.x && this.y === point.y;\n };\n\n Point.prototype.rotate = function rotate (center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n };\n\n Point.prototype.multiply = function multiply (a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.onCircle = function onCircle (center, angle, radius) {\n var radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n return Point;\n}(Class));\n\n\nexport default Point;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\nimport addAccessibilityAttributesToVisual from './utils/add-accessibility-attributes-to-visual';\n\nvar ShapeElement = (function (BoxElement) {\n function ShapeElement(options, pointData) {\n BoxElement.call(this, options);\n\n this.pointData = pointData;\n }\n\n if ( BoxElement ) ShapeElement.__proto__ = BoxElement;\n ShapeElement.prototype = Object.create( BoxElement && BoxElement.prototype );\n ShapeElement.prototype.constructor = ShapeElement;\n\n ShapeElement.prototype.getElement = function getElement () {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new draw.Circle(\n new geom.Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = draw.Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new draw.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n var rect = box.toRect();\n if (type === ROUNDED_RECT) {\n var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = draw.Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geom.transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n };\n\n ShapeElement.prototype.createElement = function createElement () {\n var this$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: function () { return this$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n };\n\n ShapeElement.prototype.visualOptions = function visualOptions () {\n var options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n };\n\n ShapeElement.prototype.createVisual = function createVisual () {\n this.visual = this.createElement();\n\n addAccessibilityAttributesToVisual(this.visual, this.options.accessibilityOptions);\n };\n\n return ShapeElement;\n}(BoxElement));\n\nsetDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n});\n\nexport default ShapeElement;\n","export default function addAccessibilityAttributesToVisual(visual, accessibilityOptions) {\n if (accessibilityOptions) {\n visual.options.className = accessibilityOptions.className;\n visual.options.role = accessibilityOptions.role;\n visual.options.ariaLabel = accessibilityOptions.ariaLabel;\n visual.options.ariaRoleDescription = accessibilityOptions.ariaRoleDescription;\n visual.options.ariaChecked = accessibilityOptions.ariaChecked;\n }\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","export default function guid() {\n var id = \"\";\n var i;\n var random;\n\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n }\n\n return id;\n}","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n var diff = a.getTime() - b;\n var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n var result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay) {\n if ( weekStartDay === void 0 ) weekStartDay = 0;\n\n var daysToSubtract = 0;\n var day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n}\n\nfunction addHours(date, hours) {\n var roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n var result = dateValue;\n\n if (dateValue) {\n var date = toDate(dateValue);\n var hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n var date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n}","export default function dateDiff(a, b) {\n return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n if (isArray(value)) {\n var result = [];\n for (var idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n var date = toDate(value);\n var startDate = toDate(start);\n var index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n var diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n}","import dateEquals from './date-equals';\n\nexport default function lteDateIndex(date, sortedDates) {\n var low = 0;\n var high = sortedDates.length - 1;\n var index;\n\n while (low <= high) {\n index = Math.floor((low + high) / 2);\n var currentDate = sortedDates[index];\n\n if (currentDate < date) {\n low = index + 1;\n continue;\n }\n\n if (currentDate > date) {\n high = index - 1;\n continue;\n }\n\n while (dateEquals(sortedDates[index - 1], date)) {\n index--;\n }\n\n return index;\n }\n\n if (sortedDates[index] <= date) {\n return index;\n }\n\n return index - 1;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n var result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n if (isArray(dates)) {\n var result = [];\n for (var idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n}\n","export var MILLISECONDS = \"milliseconds\";\nexport var SECONDS = \"seconds\";\nexport var MINUTES = \"minutes\";\nexport var HOURS = \"hours\";\nexport var DAYS = \"days\";\nexport var WEEKS = \"weeks\";\nexport var MONTHS = \"months\";\nexport var YEARS = \"years\";\n\nexport var TIME_PER_MILLISECOND = 1;\nexport var TIME_PER_SECOND = 1000;\nexport var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport var TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport var TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport var TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport var TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport var TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import {\n drawing,\n Class,\n logToConsole\n} from '@progress/kendo-drawing';\n\nvar ref = drawing.util;\nvar append = ref.append;\nvar bindEvents = ref.bindEvents;\nvar defined = ref.defined;\nvar deg = ref.deg;\nvar elementOffset = ref.elementOffset;\nvar elementSize = ref.elementSize;\nvar eventCoordinates = ref.eventCoordinates;\nvar eventElement = ref.eventElement;\nvar hashKey = ref.hashKey;\nvar last = ref.last;\nvar limitValue = ref.limitValue;\nvar objectKey = ref.objectKey;\nvar rad = ref.rad;\nvar round = ref.round;\nvar unbindEvents = ref.unbindEvents;\nvar valueOrDefault = ref.valueOrDefault;\n\nexport {\n append,\n bindEvents,\n Class,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n logToConsole,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n};\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nvar TOP_OFFSET = -2;\n\nvar SharedTooltip = (function (ChartSharedTooltip) {\n function SharedTooltip () {\n ChartSharedTooltip.apply(this, arguments);\n }\n\n if ( ChartSharedTooltip ) SharedTooltip.__proto__ = ChartSharedTooltip;\n SharedTooltip.prototype = Object.create( ChartSharedTooltip && ChartSharedTooltip.prototype );\n SharedTooltip.prototype.constructor = SharedTooltip;\n\n SharedTooltip.prototype._slotAnchor = function _slotAnchor (coords, slot) {\n var axis = this.plotArea.categoryAxis;\n var vertical = axis.options.vertical;\n var align = vertical ? {\n horizontal: \"left\",\n vertical: \"center\"\n } : {\n horizontal: \"center\",\n vertical: \"bottom\"\n };\n\n var point;\n\n if (vertical) {\n point = new Point(this.plotArea.box.x2, slot.center().y);\n } else {\n point = new Point(slot.center().x, TOP_OFFSET);\n }\n\n return {\n point: point,\n align: align\n };\n };\n\n SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n return this._slotAnchor({}, slot);\n };\n\n return SharedTooltip;\n}(ChartSharedTooltip));\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport { addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nvar DEAULT_BAR_WIDTH = 150;\nvar DEAULT_BULLET_WIDTH = 150;\nvar NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n var state = [];\n for (var idx = 0; idx < children.length; idx++) {\n var child = children[idx];\n state[idx] = child.style.display;\n child.style.display = \"none\";\n }\n\n return state;\n}\n\nfunction show(children, state) {\n for (var idx = 0; idx < children.length; idx++) {\n children[idx].style.display = state[idx];\n }\n}\n\nfunction wrapNumber(value) {\n return isNumber(value) ? [ value ] : value;\n}\n\nvar Sparkline = (function (Chart) {\n function Sparkline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Sparkline.__proto__ = Chart;\n Sparkline.prototype = Object.create( Chart && Chart.prototype );\n Sparkline.prototype.constructor = Sparkline;\n\n Sparkline.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, 'k-sparkline');\n };\n\n Sparkline.prototype._initElement = function _initElement (element) {\n Chart.prototype._initElement.call(this, element);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n };\n\n Sparkline.prototype._resize = function _resize () {\n var element = this.element;\n var state = hide(element.childNodes);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n\n show(element.childNodes, state);\n\n Chart.prototype._resize.call(this);\n };\n\n Sparkline.prototype._modelOptions = function _modelOptions () {\n var chartOptions = this.options;\n var stage = this._surfaceWrap();\n var displayState = hide(stage.childNodes);\n\n var space = document.createElement('span');\n space.innerHTML = ' ';\n\n stage.appendChild(space);\n\n var options = deepExtend({\n width: this._autoWidth,\n height: elementSize(stage).height,\n transitions: chartOptions.transitions\n }, chartOptions.chartArea, {\n inline: true,\n align: false\n });\n\n elementSize(stage, {\n width: options.width,\n height: options.height\n });\n\n stage.removeChild(space);\n\n show(stage.childNodes, displayState);\n\n if (this.surface) {\n this.surface.resize();\n }\n\n return options;\n };\n\n Sparkline.prototype._surfaceWrap = function _surfaceWrap () {\n if (!this.stage) {\n var stage = this.stage = document.createElement('span');\n this.element.appendChild(stage);\n }\n return this.stage;\n };\n\n Sparkline.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n var plotArea = Chart.prototype._createPlotArea.call(this, skipSeries);\n this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n return plotArea;\n };\n\n Sparkline.prototype._calculateWidth = function _calculateWidth (plotArea) {\n var options = this.options;\n var margin = getSpacing(options.chartArea.margin);\n var charts = plotArea.charts;\n var stage = this._surfaceWrap();\n var total = 0;\n\n\n for (var i = 0; i < charts.length; i++) {\n var currentChart = charts[i];\n var firstSeries = (currentChart.options.series || [])[0];\n if (!firstSeries) {\n continue;\n }\n\n if (firstSeries.type === BAR) {\n return DEAULT_BAR_WIDTH;\n }\n\n if (firstSeries.type === BULLET) {\n return DEAULT_BULLET_WIDTH;\n }\n\n if (firstSeries.type === PIE) {\n return elementSize(stage).height;\n }\n\n var categoryAxis = currentChart.categoryAxis;\n if (categoryAxis) {\n var pointsCount = categoryAxis.categoriesCount() *\n (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n total = Math.max(total, pointsCount);\n }\n }\n\n var size = total * options.pointWidth;\n if (size > 0) {\n size += margin.left + margin.right;\n }\n\n return size;\n };\n\n Sparkline.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n return new SharedTooltip(this._plotArea, options);\n };\n\n Sparkline.normalizeOptions = function normalizeOptions (userOptions) {\n var options = wrapNumber(userOptions);\n\n if (isArray(options)) {\n options = { seriesDefaults: { data: options } };\n } else {\n options = deepExtend({}, options);\n }\n\n if (!options.series) {\n options.series = [ { data: wrapNumber(options.data) } ];\n }\n\n deepExtend(options, {\n seriesDefaults: {\n type: options.type\n }\n });\n\n if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n options = deepExtend({}, {\n categoryAxis: {\n crosshair: {\n visible: false\n }\n }\n }, options);\n }\n\n return options;\n };\n\n return Sparkline;\n}(Chart));\n\nsetDefaultOptions(Sparkline, {\n chartArea: {\n margin: 2\n },\n axisDefaults: {\n visible: false,\n majorGridLines: {\n visible: false\n },\n valueAxis: {\n narrowRange: true\n }\n },\n seriesDefaults: {\n type: \"line\",\n area: {\n line: {\n width: 0.5\n }\n },\n bar: {\n stack: true\n },\n padding: 2,\n width: 0.5,\n overlay: {\n gradient: null\n },\n highlight: {\n visible: false\n },\n border: {\n width: 0\n },\n markers: {\n size: 2,\n visible: false\n }\n },\n tooltip: {\n visible: true,\n shared: true\n },\n categoryAxis: {\n crosshair: {\n visible: true,\n tooltip: {\n visible: false\n }\n }\n },\n legend: {\n visible: false\n },\n transitions: false,\n\n pointWidth: 5,\n\n panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nvar FadeOutAnimation = (function (superclass) {\n function FadeOutAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) FadeOutAnimation.__proto__ = superclass;\n FadeOutAnimation.prototype = Object.create( superclass && superclass.prototype );\n FadeOutAnimation.prototype.constructor = FadeOutAnimation;\n\n FadeOutAnimation.prototype.setup = function setup () {\n this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n };\n\n FadeOutAnimation.prototype.step = function step (pos) {\n elementStyles(this.element, {\n opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n });\n };\n\n FadeOutAnimation.prototype.abort = function abort () {\n superclass.prototype.abort.call(this);\n elementStyles(this.element, {\n display: 'none',\n opacity: String(this._initialOpacity)\n });\n };\n\n FadeOutAnimation.prototype.cancel = function cancel () {\n superclass.prototype.abort.call(this);\n elementStyles(this.element, {\n opacity: String(this._initialOpacity)\n });\n };\n\n return FadeOutAnimation;\n}(draw.Animation));\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n var div = document.createElement(\"div\");\n div.className = className;\n if (style) {\n div.style.cssText = style;\n }\n\n return div;\n}\n\nvar NavigatorHint = (function (Class) {\n function NavigatorHint(container, chartService, options) {\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.container = container;\n this.chartService = chartService;\n\n var padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n this.chartPadding = {\n top: padding.paddingTop,\n left: padding.paddingLeft\n };\n\n this.createElements();\n container.appendChild(this.element);\n }\n\n if ( Class ) NavigatorHint.__proto__ = Class;\n NavigatorHint.prototype = Object.create( Class && Class.prototype );\n NavigatorHint.prototype.constructor = NavigatorHint;\n\n NavigatorHint.prototype.createElements = function createElements () {\n var element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n var tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n var scroll = this.scroll = createDiv('k-scroll');\n\n tooltip.innerHTML = ' ';\n\n element.appendChild(tooltip);\n element.appendChild(scroll);\n };\n\n NavigatorHint.prototype.show = function show (from, to, bbox) {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var scroll = ref.scroll;\n var tooltip = ref.tooltip;\n var middle = toDate(toTime(from) + toTime(to - from) / 2);\n var scrollWidth = bbox.width() * 0.4;\n var minPos = bbox.center().x - scrollWidth;\n var maxPos = bbox.center().x;\n var posRange = maxPos - minPos;\n var range = options.max - options.min;\n var scale = posRange / range;\n var offset = middle - options.min;\n var text = this.chartService.intl.format(options.format, from, to);\n var template = getTemplate(options);\n\n this.clearHideTimeout();\n\n if (!this._visible) {\n elementStyles(element, {\n visibility: 'hidden',\n display: 'block'\n });\n this._visible = true;\n }\n\n if (template) {\n text = template({\n from: from,\n to: to\n });\n }\n\n tooltip.innerHTML = text;\n elementStyles(tooltip, {\n left: bbox.center().x - tooltip.offsetWidth / 2,\n top: bbox.y1\n });\n\n var tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n elementStyles(scroll, {\n width: scrollWidth,\n left: minPos + offset * scale,\n top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n });\n\n elementStyles(element, {\n visibility: 'visible'\n });\n };\n\n NavigatorHint.prototype.clearHideTimeout = function clearHideTimeout () {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n if (this._hideAnimation) {\n this._hideAnimation.cancel();\n }\n };\n\n NavigatorHint.prototype.hide = function hide () {\n var this$1 = this;\n\n this.clearHideTimeout();\n\n this._hideTimeout = setTimeout(function () {\n this$1._visible = false;\n this$1._hideAnimation = new FadeOutAnimation(this$1.element);\n this$1._hideAnimation.setup();\n this$1._hideAnimation.play();\n }, this.options.hideDelay);\n };\n\n NavigatorHint.prototype.destroy = function destroy () {\n this.clearHideTimeout();\n if (this.container) {\n this.container.removeChild(this.element);\n }\n delete this.container;\n delete this.chartService;\n delete this.element;\n delete this.tooltip;\n delete this.scroll;\n };\n\n return NavigatorHint;\n}(Class));\n\nsetDefaultOptions(NavigatorHint, {\n format: \"{0:d} - {1:d}\",\n hideDelay: 500\n});\n\nexport default NavigatorHint;","var NAVIGATOR_PANE = \"_navigator\";\nvar NAVIGATOR_AXIS = NAVIGATOR_PANE;\nvar DEFAULT_PANE = \"_default\";\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE };\n","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE } from './constants';\n\nvar ZOOM_ACCELERATION = 3;\n\nvar Navigator = (function (Class) {\n function Navigator(chart) {\n var obj;\n\n Class.call(this);\n\n this.chart = chart;\n var options = this.options = deepExtend({}, this.options, chart.options.navigator);\n var select = options.select;\n if (select) {\n select.from = this.parseDate(select.from);\n select.to = this.parseDate(select.to);\n }\n\n if (!defined(options.hint.visible)) {\n options.hint.visible = options.visible;\n }\n\n this.chartObserver = new InstanceObserver(this, ( obj = {}, obj[DRAG] = '_drag', obj[DRAG_END] = '_dragEnd', obj[ZOOM] = '_zoom', obj[ZOOM_END] = '_zoomEnd', obj ));\n chart.addObserver(this.chartObserver);\n }\n\n if ( Class ) Navigator.__proto__ = Class;\n Navigator.prototype = Object.create( Class && Class.prototype );\n Navigator.prototype.constructor = Navigator;\n\n Navigator.prototype.parseDate = function parseDate$1 (value) {\n return parseDate(this.chart.chartService.intl, value);\n };\n\n Navigator.prototype.clean = function clean () {\n if (this.selection) {\n this.selection.destroy();\n this.selection = null;\n }\n\n if (this.hint) {\n this.hint.destroy();\n this.hint = null;\n }\n };\n\n Navigator.prototype.destroy = function destroy () {\n if (this.chart) {\n this.chart.removeObserver(this.chartObserver);\n delete this.chart;\n }\n\n this.clean();\n };\n\n Navigator.prototype.redraw = function redraw () {\n this._redrawSelf();\n this.initSelection();\n };\n\n Navigator.prototype.initSelection = function initSelection () {\n var ref = this;\n var chart = ref.chart;\n var options = ref.options;\n var axis = this.mainAxis();\n var ref$1 = axis.roundedRange();\n var min = ref$1.min;\n var max = ref$1.max;\n var ref$2 = options.select;\n var from = ref$2.from;\n var to = ref$2.to;\n var mousewheel = ref$2.mousewheel;\n var axisClone = clone(axis);\n\n if (axis.categoriesCount() === 0) {\n return;\n }\n\n this.clean();\n\n // \"Freeze\" the selection axis position until the next redraw\n axisClone.box = axis.box;\n\n this.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n visible: options.visible\n }, new InstanceObserver(this, {\n selectStart: '_selectStart',\n select: '_select',\n selectEnd: '_selectEnd'\n }));\n\n if (options.hint.visible) {\n this.hint = new NavigatorHint(chart.element, chart.chartService, {\n min: min,\n max: max,\n template: getTemplate(options.hint),\n format: options.hint.format\n });\n }\n };\n\n Navigator.prototype.setRange = function setRange () {\n var plotArea = this.chart._createPlotArea(true);\n var axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n var ref = axis.roundedRange();\n var min = ref.min;\n var max = ref.max;\n\n var select = this.options.select || {};\n var from = select.from || min;\n if (from < min) {\n from = min;\n }\n\n var to = select.to || max;\n if (to > max) {\n to = max;\n }\n\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n\n this.filterAxes();\n };\n\n Navigator.prototype._redrawSelf = function _redrawSelf (silent) {\n var plotArea = this.chart._plotArea;\n\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n };\n\n Navigator.prototype.redrawSlaves = function redrawSlaves () {\n var chart = this.chart;\n var plotArea = chart._plotArea;\n var slavePanes = plotArea.panes.filter(function (pane) { return pane.options.name !== NAVIGATOR_PANE; });\n\n // Update the original series and categoryAxis before partial refresh.\n plotArea.srcSeries = chart.options.series;\n plotArea.options.categoryAxis = chart.options.categoryAxis;\n plotArea.clearSeriesPointsCache();\n\n plotArea.redraw(slavePanes);\n };\n\n Navigator.prototype._drag = function _drag (e) {\n var ref = this;\n var chart = ref.chart;\n var selection = ref.selection;\n var coords = chart._eventCoordinates(e.originalEvent);\n var navigatorAxis = this.mainAxis();\n var naviRange = navigatorAxis.roundedRange();\n var inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n var axis = chart._plotArea.categoryAxis;\n var range = e.axisRanges[axis.options.name];\n var select = this.options.select;\n var duration;\n\n if (!range || inNavigator || !selection) {\n return;\n }\n\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n\n var from = toDate(limitValue(\n toTime(range.min),\n naviRange.min, toTime(naviRange.max) - duration\n ));\n\n var to = toDate(limitValue(\n toTime(from) + duration,\n toTime(naviRange.min) + duration, naviRange.max\n ));\n\n this.options.select = { from: from, to: to };\n\n if (this.options.liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(from, to);\n\n this.showHint(from, to);\n };\n\n Navigator.prototype._dragEnd = function _dragEnd () {\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n if (this.hint) {\n this.hint.hide();\n }\n };\n\n Navigator.prototype.readSelection = function readSelection () {\n var ref = this;\n var ref_selection_options = ref.selection.options;\n var from = ref_selection_options.from;\n var to = ref_selection_options.to;\n var select = ref.options.select;\n\n select.from = from;\n select.to = to;\n };\n\n Navigator.prototype.filterAxes = function filterAxes () {\n var ref = this;\n var select = ref.options.select; if ( select === void 0 ) select = { };\n var chart = ref.chart;\n var allAxes = chart.options.categoryAxis;\n var from = select.from;\n var to = select.to;\n\n for (var idx = 0; idx < allAxes.length; idx++) {\n var axis = allAxes[idx];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = from;\n axis.max = to;\n }\n }\n };\n\n Navigator.prototype.filter = function filter () {\n var ref = this;\n var chart = ref.chart;\n var select = ref.options.select;\n\n if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n return;\n }\n\n var mainAxis = this.mainAxis();\n var args = {\n from: select.from,\n to: select.to\n };\n\n if (mainAxis.options.type !== 'category') {\n var axisOptions = new DateCategoryAxis(deepExtend({\n baseUnit: \"fit\"\n }, chart.options.categoryAxis[0], {\n categories: [ select.from, select.to ]\n }), chart.chartService).options;\n\n args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n }\n\n this.chart.trigger(\"navigatorFilter\", args);\n };\n\n Navigator.prototype._zoom = function _zoom (e) {\n var ref = this;\n var axis = ref.chart._plotArea.categoryAxis;\n var selection = ref.selection;\n var ref_options = ref.options;\n var select = ref_options.select;\n var liveDrag = ref_options.liveDrag;\n var mainAxis = this.mainAxis();\n var delta = e.delta;\n\n if (!selection) {\n return;\n }\n\n var fromIx = mainAxis.categoryIndex(selection.options.from);\n var toIx = mainAxis.categoryIndex(selection.options.to);\n var coords = this.chart._eventCoordinates(e.originalEvent);\n\n e.originalEvent.preventDefault();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (toIx - fromIx > 1) {\n selection.zoom(delta, coords);\n this.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n }\n\n if (liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(select.from, select.to);\n\n this.showHint(this.options.select.from, this.options.select.to);\n };\n\n Navigator.prototype._zoomEnd = function _zoomEnd (e) {\n this._dragEnd(e);\n };\n\n Navigator.prototype.showHint = function showHint (from, to) {\n var plotArea = this.chart._plotArea;\n\n if (this.hint) {\n this.hint.show(from, to, plotArea.backgroundBox());\n }\n };\n\n Navigator.prototype._selectStart = function _selectStart (e) {\n return this.chart._selectStart(e);\n };\n\n Navigator.prototype._select = function _select (e) {\n this.showHint(e.from, e.to);\n\n return this.chart._select(e);\n };\n\n Navigator.prototype._selectEnd = function _selectEnd (e) {\n if (this.hint) {\n this.hint.hide();\n }\n\n this.readSelection();\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n return this.chart._selectEnd(e);\n };\n\n Navigator.prototype.mainAxis = function mainAxis () {\n var plotArea = this.chart._plotArea;\n\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n };\n\n Navigator.prototype.select = function select (from, to) {\n var select = this.options.select;\n\n if (from && to) {\n select.from = this.parseDate(from);\n select.to = this.parseDate(to);\n\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n this.selection.set(from, to);\n }\n\n return {\n from: select.from,\n to: select.to\n };\n };\n\n Navigator.setup = function setup (options, themeOptions) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n\n var naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n var panes = options.panes = [].concat(options.panes);\n var paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n\n if (options.navigator.position !== 'top') {\n panes.push(paneOptions);\n } else {\n panes.unshift(paneOptions);\n }\n\n panes.forEach(function (pane) {\n pane.name = pane.name || DEFAULT_PANE;\n });\n\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n };\n\n Navigator.attachAxes = function attachAxes (options, naviOptions) {\n var series = naviOptions.series || [];\n var categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n var valueAxes = options.valueAxis = [].concat(options.valueAxis);\n var allAxes = categoryAxes.concat(valueAxes);\n allAxes.forEach(function (axis) {\n axis.pane = axis.pane || DEFAULT_PANE;\n });\n\n var equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n var justifyAxis = equallySpacedSeries.length === 0;\n\n var base = deepExtend({\n type: \"date\",\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: naviOptions.autoBindElements,\n autoBaseUnitSteps: {\n minutes: [ 1 ],\n hours: [ 1, 2 ],\n days: [ 1, 2 ],\n weeks: [],\n months: [ 1 ],\n years: [ 1 ]\n }\n });\n var user = naviOptions.categoryAxis;\n\n categoryAxes.push(\n deepExtend({}, base, {\n maxDateGroups: 200\n }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: \"fit\",\n baseUnitStep: \"auto\",\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_labels\",\n maxDateGroups: 20,\n baseUnitStep: \"auto\",\n labels: { position: \"\" },\n plotBands: [],\n autoBaseUnitSteps: {\n minutes: []\n },\n _overlap: true\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_ticks\",\n maxDateGroups: 200,\n majorTicks: {\n width: 0.5\n },\n plotBands: [],\n title: null,\n labels: { visible: false, mirror: true },\n _overlap: true\n })\n );\n\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: {\n visible: false\n },\n visible: false\n }, naviOptions.valueAxis));\n };\n\n Navigator.attachSeries = function attachSeries (options, naviOptions, themeOptions) {\n var series = options.series = options.series || [];\n var navigatorSeries = [].concat(naviOptions.series || []);\n var seriesColors = themeOptions.seriesColors;\n var defaults = naviOptions.seriesDefaults;\n\n for (var idx = 0; idx < navigatorSeries.length; idx++) {\n series.push(\n deepExtend({\n color: seriesColors[idx % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: {\n visible: false\n }\n }, defaults, navigatorSeries[idx], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: naviOptions.autoBindElements\n })\n );\n }\n };\n\n return Navigator;\n}(Class));\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n ClonedObject.prototype = obj;\n return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nvar AUTO_CATEGORY_WIDTH = 28;\n\nvar StockChart = (function (Chart) {\n function StockChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) StockChart.__proto__ = Chart;\n StockChart.prototype = Object.create( Chart && Chart.prototype );\n StockChart.prototype.constructor = StockChart;\n\n StockChart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n var width = elementSize(this.element).width || DEFAULT_WIDTH;\n var theme = themeOptions;\n\n var stockDefaults = {\n seriesDefaults: {\n categoryField: options.dateField\n },\n axisDefaults: {\n categoryAxis: {\n name: \"default\",\n majorGridLines: {\n visible: false\n },\n labels: {\n step: 2\n },\n majorTicks: {\n visible: false\n },\n maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n\n if (theme) {\n theme = deepExtend({}, theme, stockDefaults);\n }\n\n Navigator.setup(options, theme);\n\n Chart.prototype.applyDefaults.call(this, options, theme);\n };\n\n StockChart.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, 'k-chart k-stockchart');\n };\n\n StockChart.prototype.setOptions = function setOptions (options) {\n this.destroyNavigator();\n Chart.prototype.setOptions.call(this, options);\n };\n\n StockChart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n var transitions = this.options.transitions;\n\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = transitions;\n };\n\n StockChart.prototype._resize = function _resize () {\n this.noTransitionsRedraw();\n };\n\n StockChart.prototype._redraw = function _redraw () {\n var navigator = this.navigator;\n\n if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n navigator.redrawSlaves();\n } else {\n this._fullRedraw();\n }\n };\n\n StockChart.prototype._dirty = function _dirty () {\n var options = this.options;\n var series = [].concat(options.series, options.navigator.series);\n var seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n var dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n\n return dirty;\n };\n\n StockChart.prototype._fullRedraw = function _fullRedraw () {\n var navigator = this.navigator;\n\n if (!navigator) {\n navigator = this.navigator = new Navigator(this);\n this.trigger(\"navigatorCreated\", { navigator: navigator });\n }\n\n navigator.clean();\n navigator.setRange();\n\n Chart.prototype._redraw.call(this);\n\n navigator.initSelection();\n };\n\n StockChart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords) {\n var plotArea = this._plotArea;\n var pane = plotArea.paneByPoint(coords);\n\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n this._unsetActivePoint();\n } else {\n Chart.prototype._trackSharedTooltip.call(this, coords);\n }\n };\n\n StockChart.prototype.bindCategories = function bindCategories () {\n Chart.prototype.bindCategories.call(this);\n this.copyNavigatorCategories();\n };\n\n StockChart.prototype.copyNavigatorCategories = function copyNavigatorCategories () {\n var definitions = [].concat(this.options.categoryAxis);\n var categories;\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.name === NAVIGATOR_AXIS) {\n categories = axis.categories;\n } else if (categories && axis.pane === NAVIGATOR_PANE) {\n axis.categories = categories;\n }\n }\n };\n\n StockChart.prototype.destroyNavigator = function destroyNavigator () {\n if (this.navigator) {\n this.navigator.destroy();\n this.navigator = null;\n }\n };\n\n StockChart.prototype.destroy = function destroy () {\n this.destroyNavigator();\n Chart.prototype.destroy.call(this);\n };\n\n StockChart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n\n return Chart.prototype._stopChartHandlers.call(this, e) || (pane && pane.options.name === NAVIGATOR_PANE);\n };\n\n StockChart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n if (!this._dragZoomEnabled) {\n this.element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n };\n\n return StockChart;\n}(Chart));\n\nsetDefaultOptions(StockChart, {\n dateField: \"date\",\n axisDefaults: {\n categoryAxis: {\n type: \"date\",\n baseUnit: \"fit\",\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: {\n format: \"C\"\n }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: {\n visible: false\n },\n tooltip: {\n visible: false\n },\n highlight: {\n visible: false\n },\n line: {\n width: 2\n }\n },\n hint: {},\n visible: true\n },\n tooltip: {\n visible: true\n },\n legend: {\n visible: false\n }\n});\n\nexport default StockChart;\n","var ANGULAR_SPEED = 150;\nvar LINEAR_SPEED = 250;\nvar ARROW = \"arrow\";\nvar ARROW_POINTER = \"arrowPointer\";\nvar BAR_POINTER = \"barPointer\";\nvar DEFAULT_HEIGHT = 200;\nvar DEFAULT_LINE_WIDTH = 0.5;\nvar DEFAULT_WIDTH = 200;\nvar DEGREE = Math.PI / 180;\nvar INSIDE = \"inside\";\nvar LINEAR = \"linear\";\nvar OUTSIDE = \"outside\";\nvar RADIAL_POINTER = \"radialPointer\";\nvar RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n var origin = bbox.getOrigin();\n var size = bbox.getSize();\n var spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\nvar Text = drawing.Text;\n\nexport default function buildLabelElement(label, options) {\n var labelBox = label.box;\n var textBox = label.children[0].box;\n var border = options.border || {};\n var background = options.background || \"\";\n\n var wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n var text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n var styleGeometry = pad(text.bbox().clone(), options.padding);\n\n var styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n var elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n var from = defined(range.from) ? range.from : MIN_VALUE;\n var to = defined(range.to) ? range.to : MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n var spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nvar DEFAULT_MARGIN = 5;\nvar Path = drawing.Path;\nvar Surface = drawing.Surface;\n\nvar Gauge = (function (Class) {\n function Gauge(element, userOptions, theme, context) {\n if ( context === void 0 ) context = {};\n\n Class.call(this);\n\n this.element = element;\n this.theme = theme;\n this.contextService = new ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n }\n\n if ( Class ) Gauge.__proto__ = Class;\n Gauge.prototype = Object.create( Class && Class.prototype );\n Gauge.prototype.constructor = Gauge;\n\n Gauge.prototype.destroy = function destroy () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n };\n\n Gauge.prototype.value = function value (pointerValue) {\n var pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n };\n\n Gauge.prototype._draw = function _draw () {\n var surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n };\n\n Gauge.prototype.exportVisual = function exportVisual () {\n return this._visuals;\n };\n\n Gauge.prototype.allValues = function allValues (values) {\n var pointers = this.pointers;\n var allValues = [];\n\n if (arguments.length === 0) {\n for (var i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (var i$1 = 0; i$1 < values.length; i$1++) {\n if (isNumber(values[i$1])) {\n pointers[i$1].value(values[i$1]);\n }\n }\n }\n\n this._setValueOptions(values);\n };\n\n Gauge.prototype._setValueOptions = function _setValueOptions (values) {\n var pointers = [].concat(this.options.pointer);\n var arrayValues = [].concat(values);\n\n for (var i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n };\n\n Gauge.prototype.resize = function resize () {\n this.noTransitionsRedraw();\n };\n\n Gauge.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n var transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n };\n\n Gauge.prototype.redraw = function redraw () {\n var size = this._surfaceSize();\n var wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n var bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n };\n\n Gauge.prototype.setOptions = function setOptions (options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n };\n\n Gauge.prototype.setDirection = function setDirection (rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n };\n\n Gauge.prototype.setIntlService = function setIntlService (intl) {\n this.contextService.intl = intl;\n };\n\n Gauge.prototype._initTheme = function _initTheme (theme) {\n var currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n var options = this.options;\n var pointer = options.pointer;\n\n if (isArray(pointer)) {\n var pointers = [];\n for (var i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n };\n\n Gauge.prototype._createGaugeArea = function _createGaugeArea () {\n var options = this.options.gaugeArea;\n var size = this.surface.size();\n var border = options.border || {};\n var areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n var gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n };\n\n Gauge.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n var element = this._surfaceElement();\n var size = this._surfaceSize();\n\n elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n };\n\n Gauge.prototype._surfaceSize = function _surfaceSize () {\n var options = this.options;\n var size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n };\n\n Gauge.prototype._surfaceElement = function _surfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n };\n\n Gauge.prototype.getSize = function getSize () {\n return this._getSize();\n };\n\n Gauge.prototype._getSize = function _getSize () {\n var element = this.element;\n var defaultSize = this._defaultSize();\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n };\n\n Gauge.prototype._defaultSize = function _defaultSize () {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n };\n\n Gauge.prototype._toggleTransitions = function _toggleTransitions (value) {\n var this$1 = this;\n\n this.options.transitions = value;\n for (var i = 0; i < this.pointers.length; i++) {\n this$1.pointers[i].options.animation.transitions = value;\n }\n };\n\n return Gauge;\n}(Class));\n\nsetDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"default\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nvar Path = drawing.Path;\nvar Group = drawing.Group;\nvar Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n var position = tickRenderOptions.position;\n var tickX = tickRenderOptions.tickX;\n var tickY = tickRenderOptions.tickY;\n var start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n var tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n var count = tickPositions.length;\n\n if (tickOptions.visible) {\n var mirror = tickRenderOptions.mirror;\n var lineBox = tickRenderOptions.lineBox;\n for (var i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n}\n\nvar LinearScale = (function (NumericAxis) {\n function LinearScale(options, service) {\n var scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = Object.assign({}, scaleOptions, {\n reverse: true\n });\n }\n\n NumericAxis.call(this, 0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n }\n\n if ( NumericAxis ) LinearScale.__proto__ = NumericAxis;\n LinearScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n LinearScale.prototype.constructor = LinearScale;\n\n LinearScale.prototype.initUserOptions = function initUserOptions (options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n };\n\n LinearScale.prototype.initFields = function initFields () {\n };\n\n LinearScale.prototype.render = function render () {\n var elements = this.elements = new Group();\n var labels = this.renderLabels();\n var scaleLine = this.renderLine();\n var scaleTicks = this.renderTicks();\n var ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n };\n\n LinearScale.prototype.renderRanges = function renderRanges () {\n var this$1 = this;\n\n var options = this.options;\n var min = options.min;\n var max = options.max;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var ranges = options.ranges || [];\n var elements = new Group();\n var count = ranges.length;\n var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var slot = this$1.getSlot(range.from, range.to);\n var slotX = vertical ? this$1.lineBox() : slot;\n var slotY = vertical ? slot : this$1.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderLabels = function renderLabels () {\n var ref = this;\n var labels = ref.labels;\n var options = ref.options;\n var elements = new Group();\n\n for (var i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderLine = function renderLine () {\n var line = this.options.line;\n var lineBox = this.lineBox();\n var elements = new Group();\n\n if (line.width > 0 && line.visible) {\n var linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderTicks = function renderTicks$1 () {\n var ticks = new Group();\n var options = this.options;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n };\n\n return LinearScale;\n}(NumericAxis));\n\nsetDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nvar Pointer = (function (Class) {\n function Pointer(scale, userOptions) {\n Class.call(this);\n\n var ref = scale.options;\n var min = ref.min;\n var max = ref.max;\n var options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n }\n\n if ( Class ) Pointer.__proto__ = Class;\n Pointer.prototype = Object.create( Class && Class.prototype );\n Pointer.prototype.constructor = Pointer;\n\n Pointer.prototype.value = function value (newValue) {\n var options = this.options;\n var value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n };\n\n return Pointer;\n}(Class));\n\nsetDefaultOptions(Pointer, {\n color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nvar LinearPointer = (function (Pointer) {\n function LinearPointer(scale, options) {\n Pointer.call(this, scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n }\n\n if ( Pointer ) LinearPointer.__proto__ = Pointer;\n LinearPointer.prototype = Object.create( Pointer && Pointer.prototype );\n LinearPointer.prototype.constructor = LinearPointer;\n\n LinearPointer.prototype.reflow = function reflow () {\n var ref = this;\n var options = ref.options;\n var scale = ref.scale;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var scaleLine = scale.lineBox();\n var trackSize = options.track.size || options.size;\n var pointerHalfSize = options.size / 2;\n var margin = getSpacing(options.margin);\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n var pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n };\n\n LinearPointer.prototype.getElementOptions = function getElementOptions () {\n var options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n };\n\n LinearPointer.prototype._margin = function _margin () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var margin = getSpacing(options.margin);\n\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n };\n\n return LinearPointer;\n}(Pointer));\n\nsetDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar ArrowLinearPointerAnimation = (function (superclass) {\n function ArrowLinearPointerAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ArrowLinearPointerAnimation.__proto__ = superclass;\n ArrowLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n ArrowLinearPointerAnimation.prototype.constructor = ArrowLinearPointerAnimation;\n\n ArrowLinearPointerAnimation.prototype.setup = function setup () {\n var options = this.options;\n var margin = options.margin;\n var from = options.from;\n var to = options.to;\n var vertical = options.vertical;\n var axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n var fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n var toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n };\n\n ArrowLinearPointerAnimation.prototype.step = function step (pos) {\n var translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n var translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(geometry.transform().translate(translateX, translateY));\n };\n\n return ArrowLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nvar Point = geo.Point;\nvar Path = drawing.Path;\n\nvar ArrowLinearPointer = (function (LinearPointer) {\n function ArrowLinearPointer(scale, options) {\n LinearPointer.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n }\n\n if ( LinearPointer ) ArrowLinearPointer.__proto__ = LinearPointer;\n ArrowLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n ArrowLinearPointer.prototype.constructor = ArrowLinearPointer;\n\n ArrowLinearPointer.prototype.pointerShape = function pointerShape () {\n var ref = this;\n var scale = ref.scale;\n var size = ref.options.size;\n var halfSize = size / 2;\n var sign = (scale.options.mirror ? -1 : 1);\n var shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n ];\n }\n\n return shape;\n };\n\n ArrowLinearPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n };\n\n ArrowLinearPointer.prototype.render = function render () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elementOptions = this.getElementOptions();\n var shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n var elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n var slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n };\n\n return ArrowLinearPointer;\n}(LinearPointer));\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar BarLinearPointerAnimation = (function (superclass) {\n function BarLinearPointerAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BarLinearPointerAnimation.__proto__ = superclass;\n BarLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n BarLinearPointerAnimation.prototype.constructor = BarLinearPointerAnimation;\n\n BarLinearPointerAnimation.prototype.setup = function setup () {\n var options = this.options;\n var axis = this.axis = options.vertical ? Y : X;\n var to = this.to = options.newPoints[0][axis];\n var from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n };\n\n BarLinearPointerAnimation.prototype.step = function step (pos) {\n var value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n };\n\n BarLinearPointerAnimation.prototype._set = function _set (value) {\n var setter = \"set\" + this.axis.toUpperCase();\n var points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n };\n\n return BarLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar BarLinearPointer = (function (LinearPointer) {\n function BarLinearPointer(scale, options) {\n LinearPointer.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n }\n\n if ( LinearPointer ) BarLinearPointer.__proto__ = LinearPointer;\n BarLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n BarLinearPointer.prototype.constructor = BarLinearPointer;\n\n BarLinearPointer.prototype.pointerShape = function pointerShape (value) {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var dir = mirror === vertical ? -1 : 1;\n var size = options.size * dir;\n var minSlot = scale.getSlot(scale.options.min);\n var slot = scale.getSlot(value);\n var axis = vertical ? Y : X;\n var sizeAxis = vertical ? X : Y;\n var margin = this._margin() * dir;\n\n var p1 = new geo.Point();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n var p2 = new geo.Point();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n var p3 = p2.clone();\n var p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n };\n\n BarLinearPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var shape = this.pointerShape(options.value);\n var pointerPath = this.pointerPath;\n var oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n var animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n };\n\n BarLinearPointer.prototype.render = function render () {\n var group = new Group();\n var elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n var pointer = this.pointerPath = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n };\n\n BarLinearPointer.prototype.renderTrack = function renderTrack () {\n var trackOptions = this.options.track;\n var border = trackOptions.border || {};\n var trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n };\n\n return BarLinearPointer;\n}(LinearPointer));\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nvar DEFAULT_MIN_WIDTH = 60;\nvar DEFAULT_MIN_HEIGHT = 60;\n\nvar Group = drawing.Group;\n\nvar LinearGauge = (function (Gauge) {\n function LinearGauge () {\n Gauge.apply(this, arguments);\n }\n\n if ( Gauge ) LinearGauge.__proto__ = Gauge;\n LinearGauge.prototype = Object.create( Gauge && Gauge.prototype );\n LinearGauge.prototype.constructor = LinearGauge;\n\n LinearGauge.prototype.reflow = function reflow (bbox) {\n var pointers = this.pointers;\n var bboxX = bbox.origin.x;\n var bboxY = bbox.origin.y;\n\n var box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n };\n\n LinearGauge.prototype._buildVisual = function _buildVisual () {\n var visuals = new Group();\n var scaleElements = this.scale.render();\n var pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n };\n\n LinearGauge.prototype._createModel = function _createModel () {\n var this$1 = this;\n\n var options = this.options;\n var scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (var i = 0; i < pointers.length; i++) {\n var currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n var pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this$1.pointers.push(new pointerType(scale, currentOptions));\n }\n };\n\n LinearGauge.prototype._defaultSize = function _defaultSize () {\n var vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n };\n\n LinearGauge.prototype._getBox = function _getBox (box) {\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var boxCenter = box.center();\n var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (var i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n var size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n };\n\n LinearGauge.prototype._alignElements = function _alignElements () {\n var this$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box;\n var box = pointers[0].box.clone().wrap(scale.box);\n var plotAreaBox = this.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n var diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1.bbox);\n }\n };\n\n LinearGauge.prototype._shrinkScaleWidth = function _shrinkScaleWidth (bbox) {\n var ref = this;\n var scale = ref.scale;\n if (!scale.options.vertical) {\n var overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n };\n\n LinearGauge.prototype._shrinkElements = function _shrinkElements () {\n var this$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box.clone();\n var pos = scale.options.vertical ? \"y\" : \"x\";\n var pointerBox = pointers[0].box;\n\n for (var i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1.bbox);\n }\n };\n\n return LinearGauge;\n}(Gauge));\n\nsetDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n});\n\nexport default LinearGauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nvar GEO_ARC_ADJUST_ANGLE = 180;\n\nvar Arc = drawing.Arc;\nvar Path = drawing.Path;\nvar Group = drawing.Group;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n var ticks = new Group();\n var center = arc.center;\n var radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (var i = 0; i < tickAngles.length; i++) {\n var tickStart = arc.pointAt(tickAngles[i]);\n var tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n}\n\nvar RadialScale = (function (NumericAxis) {\n function RadialScale(options, service) {\n NumericAxis.call(this, 0, 1, options, service);\n }\n\n if ( NumericAxis ) RadialScale.__proto__ = NumericAxis;\n RadialScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n RadialScale.prototype.constructor = RadialScale;\n\n RadialScale.prototype.initUserOptions = function initUserOptions (options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n };\n\n RadialScale.prototype.initFields = function initFields () {\n };\n\n RadialScale.prototype.render = function render (center, radius) {\n var arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n };\n\n RadialScale.prototype.reflow = function reflow (bbox) {\n var center = bbox.center();\n var radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n };\n\n RadialScale.prototype.slotAngle = function slotAngle (value) {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var reverse = ref.reverse;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var angle = endAngle - startAngle;\n var result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n };\n\n RadialScale.prototype.hasRanges = function hasRanges () {\n var ranges = this.options.ranges;\n\n return ranges && ranges.length;\n };\n\n RadialScale.prototype.ticksSize = function ticksSize () {\n var ref = this.options;\n var majorTicks = ref.majorTicks;\n var minorTicks = ref.minorTicks;\n var size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n };\n\n RadialScale.prototype.labelsCount = function labelsCount () {\n var count = NumericAxis.prototype.labelsCount.call(this);\n var options = this.options;\n var angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n };\n\n RadialScale.prototype.renderLabels = function renderLabels () {\n var this$1 = this;\n\n var options = this.options;\n var arc = this.arc.clone();\n var radius = arc.getRadiusX();\n var tickAngles = this.tickAngles(arc, options.majorUnit);\n var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n var labelsGroup = new Group();\n\n var rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n var labelsOptions = options.labels;\n var isInside = labelsOptions.position === INSIDE;\n var hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n var labels = this.labels;\n var count = labels.length;\n var padding = getSpacing(labelsOptions.padding);\n var paddingWidth = (padding.left + padding.right) / 2;\n var paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (var i = 0; i < count; i++) {\n var label = labels[i];\n var halfWidth = label.box.width() / 2;\n var halfHeight = label.box.height() / 2;\n var angle = tickAngles[i];\n var labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n var lp = arc.pointAt(angle);\n var cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n var cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n var labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n var labelElement = (void 0);\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this$1.labelElements.children[i];\n var prevLabelPos = labelElement.bbox().origin;\n\n var labelTransform = labelElement.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this$1.bbox = geo.Rect.union(this$1.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n };\n\n RadialScale.prototype.repositionRanges = function repositionRanges () {\n var ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n var ref = this.options;\n var rangeDistance = ref.rangeDistance;\n var rangeSize = ref.rangeSize;\n var rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n var newRadius = rangeRadius + (rangeSize / 2);\n\n for (var i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n }\n };\n\n RadialScale.prototype.renderRanges = function renderRanges () {\n var this$1 = this;\n\n var segments = this.rangeSegments();\n var segmentsCount = segments.length;\n var result = new Group();\n\n if (segmentsCount) {\n var ref = this.options;\n var rangeSize = ref.rangeSize;\n var reverse = ref.reverse;\n var rangeDistance = ref.rangeDistance;\n var rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (var i = 0; i < segmentsCount; i++) {\n var segment = segments[i];\n var from = this$1.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n var to = this$1.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this$1.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n };\n\n RadialScale.prototype.createRange = function createRange (startAngle, endAngle, rangeRadius, options) {\n var rangeSize = this.options.rangeSize;\n var rangeGeom = new geo.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n };\n\n RadialScale.prototype.rangeSegments = function rangeSegments () {\n var options = this.options;\n var ranges = options.ranges || [];\n var count = ranges.length;\n var segments = [];\n\n if (count) {\n var min = options.min;\n var max = options.max;\n var defaultColor = options.rangePlaceholderColor;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var segmentsCount = segments.length;\n\n for (var j = 0; j < segmentsCount; j++) {\n var segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n };\n\n RadialScale.prototype.getRangeRadius = function getRangeRadius () {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var rangeSize = options.rangeSize;\n var rangeDistance = options.rangeDistance;\n var majorTickSize = options.majorTicks.size;\n var radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n };\n\n RadialScale.prototype.renderArc = function renderArc (center, radius) {\n var options = this.options;\n\n var arc = this.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n };\n\n RadialScale.prototype.renderTicks = function renderTicks () {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n var allTicks = new Group();\n allTicks.append(this.majorTicks);\n\n var majorTickSize = options.majorTicks.size;\n var minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n var radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n };\n\n RadialScale.prototype.normalizeTickAngles = function normalizeTickAngles (angles) {\n var options = this.options;\n var skip = options.majorUnit / options.minorUnit;\n\n for (var i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n };\n\n RadialScale.prototype.tickAngles = function tickAngles (ring, stepValue) {\n var options = this.options;\n var reverse = options.reverse;\n var range = options.max - options.min;\n var angle = ring.endAngle - ring.startAngle;\n var tickCount = range / stepValue;\n var pos = ring.startAngle;\n var step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n var positions = [];\n for (var i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n };\n\n RadialScale.prototype.radius = function radius (value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n };\n\n RadialScale.prototype.repositionTicks = function repositionTicks (ticks, tickAngles, minor) {\n var diff = minor ? (this._tickDifference || 0) : 0;\n var tickArc = this.arc;\n var radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (var i = 0; i < ticks.length; i++) {\n var newPoint = tickArc.pointAt(tickAngles[i]);\n var segments = ticks[i].segments;\n var xDiff = newPoint.x - segments[0].anchor().x;\n var yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n }\n };\n\n return RadialScale;\n}(NumericAxis));\n\nsetDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n});\n\nexport default RadialScale;\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nvar RadialPointerAnimation = (function (superclass) {\n function RadialPointerAnimation(element, options) {\n superclass.call(this, element, options);\n\n var animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n }\n\n if ( superclass ) RadialPointerAnimation.__proto__ = superclass;\n RadialPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n RadialPointerAnimation.prototype.constructor = RadialPointerAnimation;\n\n RadialPointerAnimation.prototype.step = function step (pos) {\n var options = this.options;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(geometry.transform().rotate(angle, options.center));\n };\n\n return RadialPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nvar CAP_SIZE = 0.05;\nvar Circle = drawing.Circle;\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar RadialPointer = (function (Pointer) {\n function RadialPointer () {\n Pointer.apply(this, arguments);\n }\n\n if ( Pointer ) RadialPointer.__proto__ = Pointer;\n RadialPointer.prototype = Object.create( Pointer && Pointer.prototype );\n RadialPointer.prototype.constructor = RadialPointer;\n\n RadialPointer.prototype.setAngle = function setAngle (angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n };\n\n RadialPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n };\n\n RadialPointer.prototype.render = function render () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elements = new Group();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n };\n\n RadialPointer.prototype.reflow = function reflow (arc) {\n var center = this.center = arc.center;\n var length = limitValue(this.options.length || 1, 0.1, 1.5);\n var radius = this.radius = arc.getRadiusX() * length;\n var capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n new geo.Point(center.x + capSize, center.y + capSize));\n };\n\n RadialPointer.prototype._renderNeedle = function _renderNeedle () {\n var minorTickSize = this.scale.options.minorTicks.size;\n var center = this.center;\n var needleColor = this.options.color;\n\n var needlePath = new Path({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n };\n\n RadialPointer.prototype._renderCap = function _renderCap () {\n var options = this.options;\n var capColor = options.cap.color || options.color;\n var circle = new geo.Circle(this.center, this.capSize);\n\n var cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n };\n\n return RadialPointer;\n}(Pointer));\n\nsetDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nvar Group = drawing.Group;\n\nvar RadialGauge = (function (Gauge) {\n function RadialGauge () {\n Gauge.apply(this, arguments);\n }\n\n if ( Gauge ) RadialGauge.__proto__ = Gauge;\n RadialGauge.prototype = Object.create( Gauge && Gauge.prototype );\n RadialGauge.prototype.constructor = RadialGauge;\n\n RadialGauge.prototype.reflow = function reflow (bbox) {\n var this$1 = this;\n\n var pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this$1.scale.arc);\n this$1._initialPlotArea = geo.Rect.union(this$1._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n };\n\n RadialGauge.prototype._buildVisual = function _buildVisual (gaugeArea, pointers, scale) {\n var visuals = this._visuals = new Group();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n };\n\n RadialGauge.prototype._buildPointers = function _buildPointers (pointers) {\n var this$1 = this;\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n this$1._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n };\n\n RadialGauge.prototype.fitScale = function fitScale (bbox) {\n var this$1 = this;\n\n var arc = this.scale.arc;\n var plotAreaBox = this._initialPlotArea;\n var step = Math.abs(this.getDiff(plotAreaBox, bbox));\n var min = round(step, COORD_PRECISION);\n var max = round(-step, COORD_PRECISION);\n var minDiff, midDiff, maxDiff, mid, oldDiff;\n var staleFlag = 0;\n var i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this$1.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this$1.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this$1.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n };\n\n RadialGauge.prototype.getPlotBox = function getPlotBox (step, bbox, arc) {\n var this$1 = this;\n\n var scale = this.scale;\n var pointers = this.pointers;\n var radius = arc.getRadiusX();\n var scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this$1.plotBbox = geo.Rect.union(this$1.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n };\n\n RadialGauge.prototype.getDiff = function getDiff (plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n };\n\n RadialGauge.prototype.alignScale = function alignScale (bbox) {\n var this$1 = this;\n\n var plotBoxCenter = this.plotBbox.center();\n var boxCenter = bbox.center();\n var paddingX = plotBoxCenter.x - boxCenter.x;\n var paddingY = plotBoxCenter.y - boxCenter.y;\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this$1.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n }\n };\n\n RadialGauge.prototype._createModel = function _createModel () {\n var this$1 = this;\n\n var options = this.options;\n var pointers = options.pointer;\n var scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (var i = 0; i < pointersArr.length; i++) {\n var current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this$1.pointers.push(current);\n }\n };\n\n return RadialGauge;\n}(Gauge));\n\nsetDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nvar ArcScale = (function (RadialScale) {\n function ArcScale () {\n RadialScale.apply(this, arguments);\n }\n\n if ( RadialScale ) ArcScale.__proto__ = RadialScale;\n ArcScale.prototype = Object.create( RadialScale && RadialScale.prototype );\n ArcScale.prototype.constructor = ArcScale;\n\n ArcScale.prototype.rangeSegments = function rangeSegments () {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var rangePlaceholderColor = ref.rangePlaceholderColor;\n var rangeLineCap = ref.rangeLineCap;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n };\n\n ArcScale.prototype.hasRanges = function hasRanges () {\n return true;\n };\n\n ArcScale.prototype.placeholderRangeAngle = function placeholderRangeAngle (angle) {\n var geometry = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry.setEndAngle(angle);\n } else {\n geometry.setStartAngle(angle);\n }\n };\n\n ArcScale.prototype.addRange = function addRange (from, to, options) {\n var reverse = this.options.reverse;\n\n var startAngle = this.slotAngle(reverse ? to : from);\n var endAngle = this.slotAngle(reverse ? from : to);\n\n var range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n };\n\n return ArcScale;\n}(RadialScale));\n\nsetDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nvar MAX_DURATION = 800;\n\nvar RangePointerAnimation = (function (superclass) {\n function RangePointerAnimation(element, options) {\n superclass.call(this, element, options);\n\n var animationOptions = this.options;\n var duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n var startColor = element.elements.options.get(\"stroke.color\");\n var color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new Color(startColor);\n this.color = new Color(color);\n }\n }\n\n if ( superclass ) RangePointerAnimation.__proto__ = superclass;\n RangePointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n RangePointerAnimation.prototype.constructor = RangePointerAnimation;\n\n RangePointerAnimation.prototype.step = function step (pos) {\n var ref = this;\n var options = ref.options;\n var startColor = ref.startColor;\n var color = ref.color;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n var r = round(interpolateValue(startColor.r, color.r, pos));\n var g = round(interpolateValue(startColor.g, color.g, pos));\n var b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new Color(r, g, b).toHex());\n }\n };\n\n return RangePointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nvar RangePointer = (function (Pointer) {\n function RangePointer () {\n Pointer.apply(this, arguments);\n }\n\n if ( Pointer ) RangePointer.__proto__ = Pointer;\n RangePointer.prototype = Object.create( Pointer && Pointer.prototype );\n RangePointer.prototype.constructor = RangePointer;\n\n RangePointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n };\n\n RangePointer.prototype.angle = function angle (value) {\n var geometry = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry.setStartAngle(value);\n } else {\n geometry.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n };\n\n RangePointer.prototype.stroke = function stroke (value) {\n this.elements.stroke(value);\n };\n\n RangePointer.prototype.render = function render () {\n if (this.elements) {\n return;\n }\n\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n };\n\n RangePointer.prototype.currentColor = function currentColor () {\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n var ref$1 = this.options;\n var colors = ref$1.colors;\n var color = ref$1.color;\n var value = ref$1.value;\n var currentValue = isNumber(value) ? value : min;\n\n if (colors) {\n for (var idx = 0; idx < colors.length; idx++) {\n var ref$2 = colors[idx];\n var rangeColor = ref$2.color;\n var from = ref$2.from; if ( from === void 0 ) from = min;\n var to = ref$2.to; if ( to === void 0 ) to = max;\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n };\n\n RangePointer.prototype.reflow = function reflow () {\n this.render();\n\n this.bbox = this.elements.bbox();\n };\n\n return RangePointer;\n}(Pointer));\n\nsetDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RangePointer;\n","import RadialGauge from '../radial/radial-gauge';\nimport ArcScale from './arc-scale';\nimport RangePointer from './range-pointer';\n\nimport { deepExtend } from '../../common';\n\n\nvar ArcGauge = (function (RadialGauge) {\n function ArcGauge () {\n RadialGauge.apply(this, arguments);\n }\n\n if ( RadialGauge ) ArcGauge.__proto__ = RadialGauge;\n ArcGauge.prototype = Object.create( RadialGauge && RadialGauge.prototype );\n ArcGauge.prototype.constructor = ArcGauge;\n\n ArcGauge.prototype._initTheme = function _initTheme (theme) {\n RadialGauge.prototype._initTheme.call(this, theme);\n\n this.options.color = this.options.color || (this.theme.pointer || {}).color;\n };\n\n ArcGauge.prototype._createModel = function _createModel () {\n var options = this.options;\n var scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n var pointer = new RangePointer(scale, deepExtend({}, {\n colors: options.colors,\n color: options.color,\n value: options.value,\n opacity: options.opacity,\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers = [ pointer ];\n };\n\n ArcGauge.prototype._buildPointers = function _buildPointers (pointers) {\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n\n current.value(current.options.value);\n }\n };\n\n ArcGauge.prototype._setValueOptions = function _setValueOptions (value) {\n this.options.value = value;\n };\n\n ArcGauge.prototype.currentColor = function currentColor () {\n var pointer = this.pointers[0];\n if (pointer) {\n return pointer.currentColor();\n }\n };\n\n ArcGauge.prototype.centerLabelPosition = function centerLabelPosition (width, height) {\n var size = this.getSize();\n var center = this.scale.arc.center;\n\n var left = center.x - width / 2;\n var top = center.y - height / 2;\n\n if (width < size.width) {\n var right = left + width;\n\n left = Math.max(left, 0);\n\n if (right > size.width) {\n left -= right - size.width;\n }\n }\n\n if (height < size.height) {\n var bbox = this.scale.bbox;\n var yLimit = bbox.bottomRight().y;\n var bottom = top + height;\n\n top = Math.max(top, bbox.origin.y);\n\n if (bottom > yLimit) {\n top -= bottom - yLimit;\n }\n }\n\n return {\n left: left,\n top: top\n };\n };\n\n return ArcGauge;\n}(RadialGauge));\n\nexport default ArcGauge;","import ArcGauge from '../arc/arc-gauge';\n\nvar defaultStartAngle = 90;\n\nvar CircularGauge = (function (ArcGauge) {\n function CircularGauge () {\n ArcGauge.apply(this, arguments);\n }\n\n if ( ArcGauge ) CircularGauge.__proto__ = ArcGauge;\n CircularGauge.prototype = Object.create( ArcGauge && ArcGauge.prototype );\n CircularGauge.prototype.constructor = CircularGauge;\n\n CircularGauge.prototype._createModel = function _createModel () {\n var scaleOptions = this.options.scale;\n if (typeof scaleOptions.startAngle !== 'number') {\n scaleOptions.startAngle = defaultStartAngle;\n }\n\n scaleOptions.endAngle = scaleOptions.startAngle + 360;\n\n ArcGauge.prototype._createModel.call(this);\n };\n\n return CircularGauge;\n}(ArcGauge));\n\nexport default CircularGauge;\n","import {\n Class,\n defined,\n setDefaultOptions\n} from '../../common';\n\nvar DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport var Encoding = (function (Class) {\n function Encoding(options) {\n Class.call(this);\n this.setOptions(options);\n this.initProperties();\n }\n\n if ( Class ) Encoding.__proto__ = Class;\n Encoding.prototype = Object.create( Class && Class.prototype );\n Encoding.prototype.constructor = Encoding;\n\n Encoding.prototype.initProperties = function initProperties () { };\n\n Encoding.prototype.setOptions = function setOptions (options) {\n this.options = Object.assign({}, this.options, options);\n this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n };\n\n Encoding.prototype.encode = function encode (value, width, height) {\n var convertedValue = defined(value) ? String(value) : value;\n\n this.initValue(convertedValue, width, height);\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n this.addData();\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n return {\n baseUnit: this.baseUnit,\n pattern: this.pattern\n };\n };\n\n Encoding.prototype.initValue = function initValue () { };\n\n Encoding.prototype.addQuietZone = function addQuietZone () {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n };\n\n Encoding.prototype.addData = function addData () { };\n\n Encoding.prototype.invalidCharacterError = function invalidCharacterError (character) {\n throw new Error((\"Character \\\"\" + character + \"\\\" is not valid for symbology \" + (this.name) + \".\"));\n };\n\n return Encoding;\n}(Class));\n\nsetDefaultOptions(Encoding, {\n quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n});\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nvar extend = Object.assign;\n\nexport var Code11 = (function (Encoding) {\n function Code11 () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Code11.__proto__ = Encoding;\n Code11.prototype = Object.create( Encoding && Encoding.prototype );\n Code11.prototype.constructor = Code11;\n\n Code11.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 11\",\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\"\n });\n };\n\n Code11.prototype.initValue = function initValue (value, width) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.totalUnits = 0;\n };\n\n Code11.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n };\n\n Code11.prototype.setBaseUnit = function setBaseUnit () {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n };\n\n Code11.prototype.addCheckSum = function addCheckSum () {\n var value = this.value;\n var length = value.length;\n var cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n this.checksum = String(cValue);\n this.addPattern(this.characterMap[cValue]);\n\n length++;\n\n if (length >= this.kCheckSumMinLength) {\n var kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n this.checksum += kValue;\n this.addPattern(this.characterMap[kValue]);\n }\n };\n\n Code11.prototype.getWeightedSum = function getWeightedSum (value, length, total) {\n var this$1 = this;\n\n var weightedSum = 0;\n\n for (var i = 0; i < value.length; i++) {\n weightedSum += this$1.weightedValue(this$1.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n };\n\n Code11.prototype.weightedValue = function weightedValue (value, length, index, total) {\n var weight = (length - index) % total || total;\n return weight * value;\n };\n\n Code11.prototype.getValue = function getValue (character) {\n if (!isNaN(character)) {\n return parseInt(character, 10);\n } else if (character !== this.DASH) {\n this.invalidCharacterError(character);\n }\n\n return this.DASH_VALUE;\n };\n\n Code11.prototype.addCharacter = function addCharacter (character) {\n var value = this.getValue(character);\n var pattern = this.characterMap[value];\n\n this.addPattern(pattern);\n };\n\n Code11.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n this$1.totalUnits += value;\n }\n };\n\n return Code11;\n}(Encoding));\n\nsetDefaultOptions(Code11, {\n addCheckSum: true\n});\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Code39Base = (function (Encoding) {\n function Code39Base () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Code39Base.__proto__ = Encoding;\n Code39Base.prototype = Object.create( Encoding && Encoding.prototype );\n Code39Base.prototype.constructor = Code39Base;\n\n Code39Base.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n minBaseUnitLength: 0.7\n });\n };\n\n Code39Base.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addStart();\n\n for (var idx = 0; idx < value.length; idx++) {\n this$1.addCharacter(value.charAt(idx));\n }\n\n if (this.options.addCheckSum) {\n this.pushCheckSum();\n }\n\n this.addStop();\n this.prepareValues();\n };\n\n Code39Base.prototype.addCharacter = function addCharacter (character) {\n var characterData = this.characterMap[character];\n\n if (!characterData) {\n this.invalidCharacterError(character);\n }\n\n this.addBase(characterData);\n };\n\n Code39Base.prototype.addBase = function addBase () { };\n\n return Code39Base;\n}(Encoding));\n\nexport var Code39 = (function (Code39Base) {\n function Code39 () {\n Code39Base.apply(this, arguments);\n }\n\n if ( Code39Base ) Code39.__proto__ = Code39Base;\n Code39.prototype = Object.create( Code39Base && Code39Base.prototype );\n Code39.prototype.constructor = Code39;\n\n Code39.prototype.initProperties = function initProperties () {\n Code39Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n }\n });\n };\n\n Code39.prototype.initValue = function initValue (value, width, height) {\n this.width = width;\n this.height = height;\n this.value = value;\n this.dataLength = value.length;\n this.pattern = [];\n this.patternString = \"\";\n };\n\n Code39.prototype.prepareValues = function prepareValues () {\n var this$1 = this;\n\n var minBaseUnit = this.minBaseUnitLength;\n var minRatio = this.minRatio;\n var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n var baseUnit;\n var ratio = this.maxRatio;\n\n if (this.height < minHeight) {\n throw new Error((\"Insufficient height for Code39 encoding: the current height is \" + (this.height) + \"px and the minimum height is \" + minHeight + \"px.\"));\n }\n\n baseUnit = this.getBaseUnit(ratio);\n\n while (baseUnit < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n baseUnit = this$1.getBaseUnit(ratio);\n }\n\n if (baseUnit < minBaseUnit) {\n var minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error((\"Insufficient width for Code39 encoding: the current width is \" + (this.width) + \"px and the minimum width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n }\n\n this.ratio = ratio;\n this.baseUnit = baseUnit;\n this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n };\n\n Code39.prototype.getBaseUnit = function getBaseUnit (ratio) {\n return this.width / this.getBaseWidth(ratio);\n };\n\n Code39.prototype.getBaseWidth = function getBaseWidth (ratio) {\n var characterLength = 3 * (ratio + 2);\n return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n };\n\n Code39.prototype.addStart = function addStart () {\n this.addPattern(this.characterMap.START.pattern);\n this.addCharacterGap();\n };\n\n Code39.prototype.addBase = function addBase (character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n };\n\n Code39.prototype.addStop = function addStop () {\n this.addPattern(this.characterMap.START.pattern);\n };\n\n Code39.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n for (var i = 0; i < pattern.length; i++) {\n this$1.patternString += this$1.patternMappings[pattern.charAt(i)];\n }\n };\n\n Code39.prototype.addCharacterGap = function addCharacterGap () {\n this.patternString += this.gapWidth + this.splitCharacter;\n };\n\n return Code39;\n}(Code39Base));\n\nsetDefaultOptions(Code39, {\n addCheckSum: false\n});\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code39ExtendedBase = {\n addCharacter: function addCharacter(character) {\n if (this.characterMap[character]) {\n this.addBase(this.characterMap[character]);\n } else if (character.charCodeAt(0) > 127) {\n this.invalidCharacterError(character);\n } else {\n this.addExtended(character.charCodeAt(0));\n }\n },\n\n addExtended: function addExtended(code) {\n var this$1 = this;\n\n var patterns;\n\n for (var i = 0; i < this.extendedMappings.length; i++) {\n patterns = this$1.extendedMappings[i].call(this$1, code);\n\n if (patterns) {\n for (var patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n var pattern = patterns[patternIndex];\n this$1.addBase(pattern);\n }\n\n this$1.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n var this$1 = this;\n\n var result;\n var dataCharacter;\n\n if (!this.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n } else {\n result = [];\n\n for (var i = 0; i < this.specialAsciiCodes[code].length; i++) {\n result.push(this$1.characterMap[this$1.shiftCharacters[3]]);\n result.push(this$1.characterMap[this$1.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport var Code39Extended = (function (Code39) {\n function Code39Extended () {\n Code39.apply(this, arguments);\n }\n\n if ( Code39 ) Code39Extended.__proto__ = Code39;\n Code39Extended.prototype = Object.create( Code39 && Code39.prototype );\n Code39Extended.prototype.constructor = Code39Extended;\n\n Code39Extended.prototype.initProperties = function initProperties () {\n Code39.prototype.initProperties.call(this);\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n }\n });\n };\n\n return Code39Extended;\n}(Code39));\n","import { Code39Base } from './code39';\n\nvar extend = Object.assign;\n\nexport var Code93 = (function (Code39Base) {\n function Code93 () {\n Code39Base.apply(this, arguments);\n }\n\n if ( Code39Base ) Code93.__proto__ = Code39Base;\n Code93.prototype = Object.create( Code39Base && Code39Base.prototype );\n Code93.prototype.constructor = Code93;\n\n Code93.prototype.initProperties = function initProperties () {\n Code39Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n characterMap: {\n \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n \".\": { \"pattern\": \"311112\", \"value\": 37 },\n \" \": { \"pattern\": \"311211\", \"value\": 38 },\n \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n };\n\n Code93.prototype.initValue = function initValue (value, width, height) {\n this.value = value;\n this.width = width;\n this.height = height;\n this.pattern = [];\n this.values = [];\n this.dataLength = value.length;\n };\n\n Code93.prototype.prepareValues = function prepareValues () {\n var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n if (this.height < minHeight) {\n throw new Error((\"Insufficient height for Code93 encoding: the current height is \" + (this.height) + \"px, the minimum required height is \" + minHeight + \"px.\"));\n }\n\n this.setBaseUnit();\n\n if (this.baseUnit < this.minBaseUnitLength) {\n var minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n throw new Error((\"Insufficient width for Code93 encoding: the current width is \" + (this.width) + \"px and the minimum required width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n }\n };\n\n Code93.prototype.setBaseUnit = function setBaseUnit () {\n var checkSumLength = 2;\n\n this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n };\n\n Code93.prototype.addStart = function addStart () {\n var pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n };\n\n Code93.prototype.addStop = function addStop () {\n this.addStart();\n this.pattern.push(this.characterMap.TERMINATION_BAR);\n };\n\n Code93.prototype.addBase = function addBase (charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n };\n\n Code93.prototype.pushCheckSum = function pushCheckSum () {\n var this$1 = this;\n\n var checkValues = this._getCheckValues();\n var charData;\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n charData = this$1.characterMap[this$1._findCharacterByValue(checkValues[i])];\n this$1.addPattern(charData.pattern);\n }\n };\n\n Code93.prototype._getCheckValues = function _getCheckValues () {\n var this$1 = this;\n\n var values = this.values;\n var length = values.length;\n var wightedSum = 0;\n var cValue;\n var kValue;\n var idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this$1.weightedValue(values[idx], length - idx, this$1.cCheckSumTotal);\n }\n\n cValue = wightedSum % this.checkSumMod;\n\n wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this$1.weightedValue(values[idx], length - idx + 1, this$1.kCheckSumTotal);\n }\n\n kValue = wightedSum % this.checkSumMod;\n return [cValue, kValue];\n };\n\n Code93.prototype._findCharacterByValue = function _findCharacterByValue (value) {\n var this$1 = this;\n\n for (var character in this$1.characterMap) {\n if (this$1.characterMap[character].value === value) {\n return character;\n }\n }\n };\n\n Code93.prototype.weightedValue = function weightedValue (value, index, total) {\n return (index % total || total) * value;\n };\n\n Code93.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n }\n };\n\n return Code93;\n}(Code39Base));\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code93Extended = (function (Code93) {\n function Code93Extended () {\n Code93.apply(this, arguments);\n }\n\n if ( Code93 ) Code93Extended.__proto__ = Code93;\n Code93Extended.prototype = Object.create( Code93 && Code93.prototype );\n Code93Extended.prototype.constructor = Code93Extended;\n\n Code93Extended.prototype.initProperties = function initProperties () {\n Code93.prototype.initProperties.call(this);\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n var this$1 = this;\n\n var checkValues = this._getCheckValues();\n var value;\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n\n if (this$1.shiftValuesAsciiCodes[value]) {\n this$1.addExtended(this$1.shiftValuesAsciiCodes[value]);\n } else {\n var characterByValue = this$1._findCharacterByValue(value);\n this$1.addPattern(this$1.characterMap[characterByValue].pattern);\n }\n }\n }\n });\n };\n\n return Code93Extended;\n}(Code93));\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar extend = Object.assign;\n\nexport var Postnet = (function (Encoding) {\n function Postnet () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Postnet.__proto__ = Encoding;\n Postnet.prototype = Object.create( Encoding && Encoding.prototype );\n Postnet.prototype.constructor = Postnet;\n\n Postnet.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5, 9, 11],\n DIGIT_SEPARATOR: \"-\",\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n };\n\n Postnet.prototype.initValue = function initValue (value, width, height) {\n this.height = height;\n this.width = width;\n this.baseHeight = height / 2;\n this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n this.pattern = [];\n this.validate(this.value);\n this.checkSum = 0;\n this.setBaseUnit();\n };\n\n Postnet.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.START);\n this.pattern.pop();\n };\n\n Postnet.prototype.addCharacter = function addCharacter (character) {\n var pattern = this.characterMap[character];\n this.checkSum += parseInt(character, 10);\n this.addPattern(pattern);\n };\n\n Postnet.prototype.addCheckSum = function addCheckSum () {\n this.checksum = (10 - (this.checkSum % 10)) % 10;\n this.addCharacter(this.checksum);\n };\n\n Postnet.prototype.setBaseUnit = function setBaseUnit () {\n var startStopLength = 3;\n\n this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n };\n\n Postnet.prototype.validate = function validate (value) {\n if (!numberRegex.test(value)) {\n this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n\n if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n }\n };\n\n Postnet.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var y1;\n\n for (var i = 0; i < pattern.length; i++) {\n y1 = this$1.height - this$1.baseHeight * pattern.charAt(i);\n this$1.pattern.push({ width: 1, y1: y1, y2: this$1.height });\n this$1.pattern.push(1);\n }\n };\n\n return Postnet;\n}(Encoding));\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar alphanumericRegex = /^[a-z0-9]+$/i;\nvar extend = Object.assign;\n\nexport var State128 = (function (Class) {\n function State128(encoding) {\n Class.call(this);\n this.encoding = encoding;\n this.initProperties();\n }\n\n if ( Class ) State128.__proto__ = Class;\n State128.prototype = Object.create( Class && Class.prototype );\n State128.prototype.constructor = State128;\n\n State128.prototype.initProperties = function initProperties () { };\n\n State128.prototype.addStart = function addStart () { };\n\n State128.prototype.is = function is () { };\n\n State128.prototype.isCode = function isCode () {\n return false;\n };\n\n State128.prototype.move = function move () { };\n\n State128.prototype.pushState = function pushState () { };\n\n return State128;\n}(Class));\n\nexport var State128AB = (function (State128) {\n function State128AB(encoding, states) {\n State128.call(this, encoding);\n this.states = states;\n this._initMoves(states);\n }\n\n if ( State128 ) State128AB.__proto__ = State128;\n State128AB.prototype = Object.create( State128 && State128.prototype );\n State128AB.prototype.constructor = State128AB;\n\n State128AB.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n deepExtend(this, {\n FNC4: \"FNC4\",\n SHIFT: 98\n });\n };\n\n State128AB.prototype.addStart = function addStart () {\n this.encoding.addPattern(this.START);\n };\n\n State128AB.prototype.is = function is (value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n };\n\n State128AB.prototype.move = function move (encodingState) {\n var idx = 0;\n\n while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n idx++;\n }\n };\n\n State128AB.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var states = this.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states)) {\n var numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n this.isCode(code) &&\n encodingState.index < maxLength) {\n this$1.encoding.addPattern(this$1.getValue(code));\n encodingState.index++;\n }\n };\n\n State128AB.prototype._initMoves = function _initMoves (states) {\n this._moves = [];\n\n if (inArray(this.FNC4, states)) {\n this._moves.push(this._moveFNC);\n }\n\n if (inArray(this.shiftKey, states)) {\n this._moves.push(this._shiftState);\n }\n\n this._moves.push(this._moveState);\n };\n\n State128AB.prototype._moveFNC = function _moveFNC (encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState === this.key;\n }\n };\n\n State128AB.prototype._shiftState = function _shiftState (encodingState) {\n if (encodingState.previousState === this.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n this.encoding.addPattern(this.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n };\n\n State128AB.prototype._moveState = function _moveState () {\n this.encoding.addPattern(this.MOVE);\n return true;\n };\n\n return State128AB;\n}(State128));\n\nvar states128 = {};\n\nstates128.A = (function (State128AB) {\n function State128A () {\n State128AB.apply(this, arguments);\n }\n\n if ( State128AB ) State128A.__proto__ = State128AB;\n State128A.prototype = Object.create( State128AB && State128AB.prototype );\n State128A.prototype.constructor = State128A;\n\n State128A.prototype.initProperties = function initProperties () {\n State128AB.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"A\",\n shiftKey: \"B\",\n MOVE: 101,\n START: 103\n });\n };\n\n State128A.prototype.isCode = function isCode (code) {\n return 0 <= code && code < 96;\n };\n\n State128A.prototype.getValue = function getValue (code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n };\n\n return State128A;\n}(State128AB));\n\nstates128.B = (function (State128AB) {\n function State128B () {\n State128AB.apply(this, arguments);\n }\n\n if ( State128AB ) State128B.__proto__ = State128AB;\n State128B.prototype = Object.create( State128AB && State128AB.prototype );\n State128B.prototype.constructor = State128B;\n\n State128B.prototype.initProperties = function initProperties () {\n State128AB.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"B\",\n shiftKey: \"A\",\n MOVE: 100,\n START: 104\n });\n };\n\n State128B.prototype.isCode = function isCode (code) {\n return 32 <= code && code < 128;\n };\n\n State128B.prototype.getValue = function getValue (code) {\n return code - 32;\n };\n\n return State128B;\n}(State128AB));\n\nstates128.C = (function (State128) {\n function State128C () {\n State128.apply(this, arguments);\n }\n\n if ( State128 ) State128C.__proto__ = State128;\n State128C.prototype = Object.create( State128 && State128.prototype );\n State128C.prototype.constructor = State128C;\n\n State128C.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"C\",\n MOVE: 99,\n START: 105\n });\n };\n\n State128C.prototype.addStart = function addStart () {\n this.encoding.addPattern(this.START);\n };\n\n State128C.prototype.is = function is (value, index) {\n var next4 = getSubstring(value, index, 4);\n return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n };\n\n State128C.prototype.move = function move () {\n this.encoding.addPattern(this.MOVE);\n };\n\n State128C.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var code;\n\n while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length === 2) {\n this$1.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n };\n\n State128C.prototype.getValue = function getValue (code) {\n return code;\n };\n\n return State128C;\n}(State128));\n\nstates128.FNC4 = (function (State128) {\n function State128FNC4(encoding, states) {\n State128.call(this, encoding);\n this._initSubStates(states);\n }\n\n if ( State128 ) State128FNC4.__proto__ = State128;\n State128FNC4.prototype = Object.create( State128 && State128.prototype );\n State128FNC4.prototype.constructor = State128FNC4;\n\n State128FNC4.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"FNC4\",\n dependentStates: [\"A\", \"B\"]\n });\n };\n\n State128FNC4.prototype.addStart = function addStart (encodingState) {\n var code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n };\n\n State128FNC4.prototype.is = function is (value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n };\n\n State128FNC4.prototype.isCode = function isCode (code) {\n return 128 <= code && code < 256;\n };\n\n State128FNC4.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var subState = this._initSubState(encodingState),\n encoding = this.encoding,\n length = subState.value.length;\n var code;\n\n encodingState.index += length;\n\n if (length < 3) {\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = this$1._getSubState(code);\n\n if (subState.previousState !== subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n } else {\n if (subState.state !== subState.previousState) {\n encoding[subState.state].move(subState);\n }\n\n this._pushStart(subState);\n encoding.pushData(subState, this.subStates);\n\n if (encodingState.index < encodingState.value.length) {\n this._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n };\n\n State128FNC4.prototype._pushStart = function _pushStart (subState) {\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n };\n\n State128FNC4.prototype._initSubState = function _initSubState (encodingState) {\n var subState = {\n value: this._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n\n subState.state = this._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState === this.key ?\n subState.state :\n encodingState.previousState;\n\n return subState;\n };\n\n State128FNC4.prototype._initSubStates = function _initSubStates (states) {\n var this$1 = this;\n\n this.subStates = [];\n\n for (var i = 0; i < states.length; i++) {\n if (inArray(states[i], this$1.dependentStates)) {\n this$1.subStates.push(states[i]);\n }\n }\n };\n\n State128FNC4.prototype._getSubState = function _getSubState (code) {\n var this$1 = this;\n\n for (var i = 0; i < this.subStates.length; i++) {\n if (this$1.encoding[this$1.subStates[i]].isCode(code)) {\n return this$1.subStates[i];\n }\n }\n };\n\n State128FNC4.prototype._getAll = function _getAll (value, index) {\n var code;\n var result = \"\";\n var i = index;\n\n while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n\n return result;\n };\n\n return State128FNC4;\n}(State128));\n\nstates128.FNC1 = (function (State128) {\n function States128FNC1(encoding, states) {\n State128.call(this, encoding);\n this.states = states;\n }\n\n if ( State128 ) States128FNC1.__proto__ = State128;\n States128FNC1.prototype = Object.create( State128 && State128.prototype );\n States128FNC1.prototype.constructor = States128FNC1;\n\n States128FNC1.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"FNC1\",\n startState: \"C\",\n startAI: \"(\",\n endAI: \")\",\n dependentStates: [\"C\", \"B\"],\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n }, {\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n }, {\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n }, {\n ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n }, {\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n }, {\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n }, {\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n }, {\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n }, {\n ids: [\"30\", \"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n }, {\n ids: [\"390\", \"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n }, {\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n };\n\n\n States128FNC1.prototype.addStart = function addStart () {\n this.encoding[this.startState].addStart();\n };\n\n States128FNC1.prototype.is = function is () {\n return inArray(this.key, this.states);\n };\n\n States128FNC1.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var encoding = this.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: this.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(this.START);\n\n var trueCondition = true;\n\n while (trueCondition) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === this$1.startAI ? 2 : 0;\n current = separatorLength > 0 ? this$1.getBySeparator(value, index) : this$1.getByLength(value, index);\n\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n } else {\n nextStart = value.indexOf(this$1.startAI, index + 1);\n\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n\n nextStart = value.length;\n }\n }\n\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n this$1.validate(current, subState.value);\n encoding.pushData(subState, this$1.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state !== this$1.startState) {\n encoding[this$1.startState].move(subState);\n subState.state = this$1.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(this$1.START);\n }\n }\n\n encodingState.index = encodingState.value.length;\n };\n\n States128FNC1.prototype.validate = function validate (current, value) {\n var code = value.substr(current.id.length),\n ai = current.ai;\n\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n };\n\n States128FNC1.prototype.getByLength = function getByLength (value, index) {\n var this$1 = this;\n\n var id;\n var applicationIdentifier;\n\n for (var i = 2; i <= 4; i++) {\n id = getSubstring(value, index, i);\n applicationIdentifier = this$1.getApplicationIdentifier(id) || this$1.getApplicationIdentifier(id.substring(0, id.length - 1));\n if (applicationIdentifier) {\n return {\n id: id,\n ai: applicationIdentifier\n };\n }\n }\n this.unsupportedAIError(id);\n };\n\n States128FNC1.prototype.unsupportedAIError = function unsupportedAIError (id) {\n throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n };\n\n States128FNC1.prototype.getBySeparator = function getBySeparator (value, index) {\n var start = value.indexOf(this.startAI, index),\n end = value.indexOf(this.endAI, start),\n id = value.substring(start + 1, end),\n ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n if (!ai) {\n this.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n };\n\n States128FNC1.prototype.getApplicationIdentifier = function getApplicationIdentifier (id) {\n var applicationIdentifier = this.applicationIdentifiers,\n multiKey = applicationIdentifier.multiKey;\n\n if (applicationIdentifier[id]) {\n return applicationIdentifier[id];\n }\n\n for (var i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n return multiKey[i].type;\n } else if (multiKey[i].ranges) {\n var ranges = multiKey[i].ranges;\n\n for (var j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n };\n\n return States128FNC1;\n}(State128));\n\nexport var Code128Base = (function (Encoding) {\n function Code128Base(options) {\n Encoding.call(this, options);\n this._initStates();\n }\n\n if ( Encoding ) Code128Base.__proto__ = Encoding;\n Code128Base.prototype = Object.create( Encoding && Encoding.prototype );\n Code128Base.prototype.constructor = Code128Base;\n\n Code128Base.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n characterMap: [\n 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n 221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n 221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n 212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n 231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n 231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n 314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n 112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n 114131, 311141, 411131, 211412, 211214, 211232, 2331112\n ],\n STOP: 106\n });\n };\n\n Code128Base.prototype._initStates = function _initStates () {\n var this$1 = this;\n\n for (var i = 0; i < this.states.length; i++) {\n this$1[this$1.states[i]] = new states128[this$1.states[i]](this$1, this$1.states);\n }\n };\n\n Code128Base.prototype.initValue = function initValue (value, width, height) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.height = height;\n this.checkSum = 0;\n this.totalUnits = 0;\n this.index = 0;\n this.position = 1;\n };\n\n Code128Base.prototype.addData = function addData () {\n var encodingState = {\n value: this.value,\n index: 0,\n state: \"\"\n };\n\n if (this.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = this.getNextState(encodingState, this.states);\n\n this.addStart(encodingState);\n\n this.pushData(encodingState, this.states);\n\n this.addCheckSum();\n this.addStop();\n this.setBaseUnit();\n };\n\n Code128Base.prototype.pushData = function pushData (encodingState, states) {\n var this$1 = this;\n\n var trueCondition = true;\n\n while (trueCondition) {\n this$1[encodingState.state].pushState(encodingState);\n\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = this$1.getNextState(encodingState, states);\n this$1[encodingState.state].move(encodingState);\n } else {\n var temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n };\n\n Code128Base.prototype.addStart = function addStart (encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n };\n\n Code128Base.prototype.addCheckSum = function addCheckSum () {\n this.checksum = this.checkSum % 103;\n this.addPattern(this.checksum);\n };\n\n Code128Base.prototype.addStop = function addStop () {\n this.addPattern(this.STOP);\n };\n\n Code128Base.prototype.setBaseUnit = function setBaseUnit () {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n };\n\n Code128Base.prototype.addPattern = function addPattern (code) {\n var this$1 = this;\n\n var pattern = this.characterMap[code].toString();\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n this$1.totalUnits += value;\n }\n this.checkSum += code * this.position++;\n };\n\n Code128Base.prototype.getNextState = function getNextState (encodingState, states) {\n var this$1 = this;\n\n for (var i = 0; i < states.length; i++) {\n if (this$1[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n };\n\n return Code128Base;\n}(Encoding));\n\nexport var Code128a = (function (Code128Base) {\n function Code128a () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128a.__proto__ = Code128Base;\n Code128a.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128a.prototype.constructor = Code128a;\n\n Code128a.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n };\n\n return Code128a;\n}(Code128Base));\n\nexport var Code128b = (function (Code128Base) {\n function Code128b () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128b.__proto__ = Code128Base;\n Code128b.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128b.prototype.constructor = Code128b;\n\n Code128b.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n };\n\n return Code128b;\n}(Code128Base));\n\nexport var Code128c = (function (Code128Base) {\n function Code128c () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128c.__proto__ = Code128Base;\n Code128c.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128c.prototype.constructor = Code128c;\n\n Code128c.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n };\n\n return Code128c;\n}(Code128Base));\n\nexport var Code128 = (function (Code128Base) {\n function Code128 () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128.__proto__ = Code128Base;\n Code128.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128.prototype.constructor = Code128;\n\n Code128.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n };\n\n return Code128;\n}(Code128Base));\n\nexport var CodeGS1128 = (function (Code128Base) {\n function CodeGS1128 () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) CodeGS1128.__proto__ = Code128Base;\n CodeGS1128.prototype = Object.create( Code128Base && Code128Base.prototype );\n CodeGS1128.prototype.constructor = CodeGS1128;\n\n CodeGS1128.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n };\n\n return CodeGS1128;\n}(Code128Base));\n\nfunction getSubstring(value, index, count) {\n return value.substring(index, index + count);\n}\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var MsiBase = (function (Encoding) {\n function MsiBase () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) MsiBase.__proto__ = Encoding;\n MsiBase.prototype = Object.create( Encoding && Encoding.prototype );\n MsiBase.prototype.constructor = MsiBase;\n\n MsiBase.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n characterMap: [\n \"12121212\",\n \"12121221\",\n \"12122112\",\n \"12122121\",\n \"12211212\",\n \"12211221\",\n \"12212112\",\n \"12212121\",\n \"21121212\",\n \"21121221\"\n ],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\",\n checkSums: checkSums\n });\n };\n\n MsiBase.prototype.initValue = function initValue (value, width) {\n this.pattern = [];\n this.value = value;\n this.checkSumLength = 0;\n this.width = width;\n };\n\n MsiBase.prototype.setBaseUnit = function setBaseUnit () {\n var startStopLength = 7;\n\n this.baseUnit = this.width /\n (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n };\n\n MsiBase.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n };\n\n MsiBase.prototype.addCharacter = function addCharacter (character) {\n var pattern = this.characterMap[character];\n\n if (!pattern) {\n this.invalidCharacterError(character);\n }\n\n this.addPattern(pattern);\n };\n\n MsiBase.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n for (var i = 0; i < pattern.length; i++) {\n this$1.pattern.push(parseInt(pattern.charAt(i), 10));\n }\n };\n\n MsiBase.prototype.addCheckSum = function addCheckSum () {\n var this$1 = this;\n\n var checkSumFunction = this.checkSums[this.checkSumType];\n var checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n this$1.checkSumLength++;\n this$1.addPattern(this$1.characterMap[checkValues[i]]);\n }\n };\n\n return MsiBase;\n}(Encoding));\n\nexport var MsiMod10 = (function (MsiBase) {\n function MsiMod10 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod10.__proto__ = MsiBase;\n MsiMod10.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod10.prototype.constructor = MsiMod10;\n\n MsiMod10.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n };\n\n return MsiMod10;\n}(MsiBase));\n\nexport var MsiMod11 = (function (MsiBase) {\n function MsiMod11 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod11.__proto__ = MsiBase;\n MsiMod11.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod11.prototype.constructor = MsiMod11;\n\n MsiMod11.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n };\n\n return MsiMod11;\n}(MsiBase));\n\nexport var MsiMod1010 = (function (MsiBase) {\n function MsiMod1010 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod1010.__proto__ = MsiBase;\n MsiMod1010.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod1010.prototype.constructor = MsiMod1010;\n\n MsiMod1010.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n };\n\n return MsiMod1010;\n}(MsiBase));\n\nexport var MsiMod1110 = (function (MsiBase) {\n function MsiMod1110 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod1110.__proto__ = MsiBase;\n MsiMod1110.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod1110.prototype.constructor = MsiMod1110;\n\n MsiMod1110.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n };\n\n return MsiMod1110;\n}(MsiBase));\n\nvar checkSums = {\n Modulo10: function Modulo10(value) {\n var checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx), 10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11: function Modulo11(value) {\n var weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (var i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n\n checkValue = (mod - weightedSum % mod) % mod;\n\n if (checkValue !== 10) {\n return [checkValue];\n }\n\n return [1, 0];\n },\n Modulo11Modulo10: function Modulo11Modulo10(value) {\n var checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10: function Modulo10Modulo10(value) {\n var checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n};\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Ean13 = (function (Encoding) {\n function Ean13 () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Ean13.__proto__ = Encoding;\n Ean13.prototype = Object.create( Encoding && Encoding.prototype );\n Ean13.prototype.constructor = Ean13;\n\n Ean13.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"EAN 13\",\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3, 2, 1, 1],\n [2, 2, 2, 1],\n [2, 1, 2, 2],\n [1, 4, 1, 1],\n [1, 1, 3, 2],\n [1, 2, 3, 1],\n [1, 1, 1, 4],\n [1, 3, 1, 2],\n [1, 2, 1, 3],\n [3, 1, 1, 2]\n ],\n start: [1, 1, 1],\n middle: [1, 1, 1, 1, 1]\n }\n });\n };\n\n Ean13.prototype.initValue = function initValue (value, width, height) {\n var valueAsString = String(value);\n\n if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n this.pattern = [];\n this.options.height = height;\n this.baseUnit = width / (95 + this.quietZoneLength);\n this.value = valueAsString;\n this.checksum = this.calculateChecksum();\n this.leftKey = valueAsString[0];\n this.leftPart = valueAsString.substr(1, 6);\n this.rightPart = valueAsString.substr(7) + this.checksum;\n };\n\n Ean13.prototype.addData = function addData () {\n this.addPieces(this.characterMap.start);\n this.addSide(this.leftPart, this.leftKey);\n this.addPieces(this.characterMap.middle);\n this.addSide(this.rightPart);\n this.addPieces(this.characterMap.start);\n };\n\n Ean13.prototype.addSide = function addSide (leftPart, key) {\n var this$1 = this;\n\n for (var i = 0; i < leftPart.length; i++) {\n if (key && parseInt(this$1.keyTable[key].charAt(i), 10)) {\n this$1.addPieces(Array.prototype.slice.call(this$1.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n } else {\n this$1.addPieces(this$1.characterMap.digits[leftPart.charAt(i)], true);\n }\n }\n };\n\n Ean13.prototype.addPieces = function addPieces (arrToAdd, limitedHeight) {\n var this$1 = this;\n\n for (var i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n this$1.pattern.push({\n y1: 0,\n y2: this$1.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n this$1.pattern.push(arrToAdd[i]);\n }\n }\n };\n\n Ean13.prototype.calculateChecksum = function calculateChecksum () {\n var odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n\n for (var i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i), 10);\n } else {\n odd += parseInt(value.charAt(i), 10);\n }\n }\n\n var checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n return checksum;\n };\n\n return Ean13;\n}(Encoding));\n","import { Ean13 } from './ean13';\n\nvar extend = Object.assign;\n\nexport var Ean8 = (function (Ean13) {\n function Ean8 () {\n Ean13.apply(this, arguments);\n }\n\n if ( Ean13 ) Ean8.__proto__ = Ean13;\n Ean8.prototype = Object.create( Ean13 && Ean13.prototype );\n Ean8.prototype.constructor = Ean8;\n\n Ean8.prototype.initProperties = function initProperties () {\n Ean13.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"EAN 8\"\n });\n };\n\n Ean8.prototype.initValue = function initValue (value, width, height) {\n if (value.length !== 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n\n this.value = value;\n this.options.height = height;\n this.checksum = this.calculateChecksum(this.value);\n this.leftPart = this.value.substr(0, 4);\n this.rightPart = this.value.substr(4) + this.checksum;\n this.pattern = [];\n this.baseUnit = width / (67 + this.quietZoneLength);\n };\n\n return Ean8;\n}(Ean13));\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n Code128,\n Code128a,\n Code128b,\n Code128c,\n CodeGS1128\n} from './code128';\n\nimport {\n MsiMod10,\n MsiMod11,\n MsiMod1010,\n MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport var Encodings = {\n code11: Code11,\n\n code39: Code39,\n code39extended: Code39Extended,\n\n code93: Code93,\n code93extended: Code93Extended,\n\n code128: Code128,\n code128a: Code128a,\n code128b: Code128b,\n code128c: Code128c\n};\nEncodings[\"gs1-128\"] = CodeGS1128;\nEncodings.msimod10 = MsiMod10;\nEncodings.msimod11 = MsiMod11;\nEncodings.msimod1010 = MsiMod1010;\nEncodings.msimod1110 = MsiMod1110;\nEncodings.postnet = Postnet;\nEncodings.ean8 = Ean8;\nEncodings.ean13 = Ean13;\n","export function surfaceSize(element, surfaceType) {\n var display = element.style.display;\n if (surfaceType === 'canvas') {\n // The Canvas default size is different from SVG for\n // inline-block containers such as the Barcode and QR Code.\n //\n // Switch to display: block to get same dimensions.\n element.style.display = 'block';\n }\n\n var size = {\n width: element.clientWidth,\n height: element.clientHeight\n };\n\n element.style.display = display;\n\n return size;\n}\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n addClass,\n setDefaultOptions,\n deepExtend,\n getSpacing,\n isObject,\n defaultErrorHandler\n} from '../common';\n\nimport {\n Box,\n TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\nimport { surfaceSize } from './surface-size';\n\nvar DEFAULT_BARCODE_WIDTH = 300;\nvar DEFAULT_BARCODE_HEIGHT = 100;\n\nvar Barcode = (function (Class) {\n function Barcode(element, options, errorHandler) {\n if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n this._setOptions(options);\n\n if (options && defined(options.value)) {\n this.redraw();\n }\n }\n\n if ( Class ) Barcode.__proto__ = Class;\n Barcode.prototype = Object.create( Class && Class.prototype );\n Barcode.prototype.constructor = Barcode;\n\n Barcode.prototype.destroy = function destroy () {\n this._destroySurface();\n };\n\n Barcode.prototype._initElement = function _initElement () {\n addClass(this.element, \"k-barcode\");\n };\n\n Barcode.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n };\n\n Barcode.prototype._createSurface = function _createSurface () {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n };\n\n Barcode.prototype._destroySurface = function _destroySurface () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n };\n\n Barcode.prototype._initSurfaceElement = function _initSurfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = 'relative';\n this.element.appendChild(this.surfaceElement);\n }\n };\n\n Barcode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n };\n\n Barcode.prototype.setOptions = function setOptions (options) {\n this._setOptions(options);\n this._initSurface();\n this.redraw();\n };\n\n Barcode.prototype.redraw = function redraw () {\n var size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n };\n\n Barcode.prototype.getSize = function getSize () {\n return {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n };\n\n Barcode.prototype._resize = function _resize () {\n this.redraw();\n };\n\n Barcode.prototype.createVisual = function createVisual () {\n this.visual = this._render();\n };\n\n Barcode.prototype._render = function _render () {\n var options = this.options;\n var value = options.value;\n var textOptions = options.text;\n var textMargin = getSpacing(textOptions.margin);\n var size = this._getSize();\n var border = options.border || {};\n var encoding = this.encoding;\n var contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n var barHeight = contentBox.height();\n var encodedValue;\n var textToDisplay;\n var textHeight;\n var visual = new draw.Group();\n\n this.contentBox = contentBox;\n visual.append(this._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n try {\n encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n } catch (error) {\n this.onError(error);\n return visual;\n }\n\n if (textOptions.visible) {\n textToDisplay = value;\n\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(this._getText(textToDisplay));\n }\n\n this.barHeight = barHeight;\n this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n };\n\n Barcode.prototype.exportVisual = function exportVisual () {\n return this._render();\n };\n\n Barcode.prototype._getSize = function _getSize () {\n var element = this.element;\n var elementSize = surfaceSize(element, this.options.renderAs);\n var size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n if (elementSize.width > 0) {\n size.width = elementSize.width;\n }\n\n if (elementSize.height > 0) {\n size.height = elementSize.height;\n }\n\n if (this.options.width) {\n size.width = this.options.width;\n }\n\n if (this.options.height) {\n size.height = this.options.height;\n }\n\n return size;\n };\n\n Barcode.prototype.value = function value (value$1) {\n if (!defined(value$1)) {\n return this.options.value;\n }\n\n this.options.value = String(value$1);\n this.redraw();\n };\n\n Barcode.prototype._getBands = function _getBands (pattern, baseUnit) {\n var this$1 = this;\n\n var contentBox = this.contentBox;\n var offsetX = contentBox.x1;\n var stepX;\n var patternItem;\n var group = new draw.Group();\n\n for (var i = 0; i < pattern.length; i++) {\n patternItem = isObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: this$1.barHeight\n };\n\n stepX = patternItem.width * baseUnit;\n\n if (i % 2) {\n var rect = geom.Rect.fromPoints(\n new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n );\n\n var path = draw.Path.fromRect(rect, {\n fill: {\n color: this$1.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n offsetX += stepX;\n }\n\n return group;\n };\n\n Barcode.prototype._getBackground = function _getBackground (size) {\n var options = this.options;\n var border = options.border || {};\n var box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n var path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n };\n\n Barcode.prototype._getText = function _getText (value) {\n var textOptions = this.options.text;\n var text = this._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(this.contentBox);\n text.renderVisual();\n\n return text.visual;\n };\n\n Barcode.prototype._setOptions = function _setOptions (options) {\n this.type = (options.type || this.options.type).toLowerCase();\n\n if (this.type === \"upca\") {\n this.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (this.type === \"upce\") {\n this.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!Encodings[this.type]) {\n throw new Error((\"Encoding '\" + (this.type) + \"' is not supported.\"));\n }\n\n this.encoding = new Encodings[this.type]();\n\n this.options = deepExtend({}, this.options, options);\n };\n\n return Barcode;\n}(Class));\n\nsetDefaultOptions(Barcode, {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n});\n\nexport default Barcode;\n","import { Encodings } from './encodings/main';\n\nvar validate = function (encoding, size, prefix) { return function (value) {\n try {\n encoding.encode(\n prefix + value,\n size.width,\n size.height\n );\n } catch (error) {\n return {\n valid: false,\n error: error\n };\n }\n\n return {\n valid: true\n };\n}; };\n\n// A default size for encodings, so the validator can check only the value if no size is provided.\nvar fallbackSize = { width: 500, height: 100 };\n\nfunction barcodeValidator(type, size) {\n if ( size === void 0 ) size = fallbackSize;\n\n if (!type) {\n throw new Error(\"Please specify barcode type to validate.\");\n }\n\n var resolvedType = type.toLowerCase();\n var prefix = '';\n if (resolvedType === 'upca') {\n resolvedType = 'ean13';\n prefix = '0';\n } else if (resolvedType === 'upce') {\n resolvedType = 'ean8';\n prefix = '0';\n }\n\n if (!Encodings[resolvedType]) {\n throw new Error((\"Encoding '\" + type + \"' is not supported.\"));\n }\n\n var encoding = new Encodings[resolvedType]();\n return validate(encoding, size, prefix);\n}\n\nexport default barcodeValidator;\n","export var extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n var result = [];\n var idx = 0;\n\n while (idx < str.length) {\n result.push(str.substring(idx, idx + chunkLength));\n idx += chunkLength;\n }\n\n return result;\n}\n\nexport function toBitsString(value, length) {\n var bitString = Number(value).toString(2);\n\n if (bitString.length < length) {\n bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n }\n\n return bitString;\n}\n\nexport function toDecimal(value) {\n return parseInt(value, 2);\n}\n\n","import { Class } from '../../common';\n\nexport var FreeCellVisitor = (function (Class) {\n function FreeCellVisitor(matrix) {\n Class.call(this);\n\n this.matrix = matrix;\n this.row = matrix.length - 1;\n this.column = matrix.length - 1;\n this.startColumn = this.column;\n this.dir = -1;\n this.c = 0;\n }\n\n if ( Class ) FreeCellVisitor.__proto__ = Class;\n FreeCellVisitor.prototype = Object.create( Class && Class.prototype );\n FreeCellVisitor.prototype.constructor = FreeCellVisitor;\n\n FreeCellVisitor.prototype.move = function move () {\n this.row += this.dir * this.c;\n this.c ^= 1;\n this.column = this.startColumn - this.c;\n };\n\n FreeCellVisitor.prototype.getNextCell = function getNextCell () {\n var this$1 = this;\n\n while (this.matrix[this.row][this.column] !== undefined) {\n this$1.move();\n\n if (this$1.row < 0 || this$1.row >= this$1.matrix.length) {\n this$1.dir = -this$1.dir;\n this$1.startColumn -= this$1.startColumn !== 8 ? 2 : 3;\n this$1.column = this$1.startColumn;\n this$1.row = this$1.dir < 0 ? this$1.matrix.length - 1 : 0;\n }\n }\n\n return {\n row: this.row,\n column: this.column\n };\n };\n\n FreeCellVisitor.prototype.getNextRemainderCell = function getNextRemainderCell () {\n this.move();\n\n if (this.matrix[this.row][this.column] === undefined) {\n return {\n row: this.row,\n column: this.column\n };\n }\n };\n\n return FreeCellVisitor;\n}(Class));\n","import { Class } from '../../common';\n\nexport var EncodingResult = (function (Class) {\n function EncodingResult(dataString, version) {\n Class.call(this);\n\n this.dataString = dataString;\n this.version = version;\n }\n\n if ( Class ) EncodingResult.__proto__ = Class;\n EncodingResult.prototype = Object.create( Class && Class.prototype );\n EncodingResult.prototype.constructor = EncodingResult;\n\n return EncodingResult;\n}(Class));\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n getModes,\n getVersion,\n getDataCodewordsCount,\n getDataString\n} from '../encoding';\n\nexport var IsoEncoder = (function (Class) {\n function IsoEncoder () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) IsoEncoder.__proto__ = Class;\n IsoEncoder.prototype = Object.create( Class && Class.prototype );\n IsoEncoder.prototype.constructor = IsoEncoder;\n\n IsoEncoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n var modes = getModes(inputString),\n dataCodewordsCount = getDataCodewordsCount(modes),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = getDataString(modes, version);\n\n return new EncodingResult(dataString, version);\n };\n\n return IsoEncoder;\n}(Class));\n","import {\n toBitsString,\n toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nvar terminator = \"0000\",\n NUMERIC = \"numeric\",\n ALPHA_NUMERIC = \"alphanumeric\",\n BYTE = \"byte\",\n powersOfTwo = { \"1\": 0 },\n powersOfTwoResult = { \"0\": 1 },\n irregularAlignmentPatternsStartDistance = {\n 15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n 24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n 32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n },\n finderPattern = [1, 0, 1, 1, 1],\n alignmentPattern = [1, 0, 1],\n errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n formatMaskPattern = \"101010000010010\",\n formatGeneratorPolynomial = \"10100110111\",\n versionGeneratorPolynomial = \"1111100100101\",\n paddingCodewords = [\"11101100\", \"00010001\"],\n finderPatternValue = 93,\n /* eslint-disable arrow-body-style */\n /* eslint-disable no-unused-vars */\n maskPatternConditions = [\n function (row, column) { return (row + column) % 2 === 0; },\n function (row, column) { return row % 2 === 0; },\n function (row, column) { return column % 3 === 0; },\n function (row, column) { return (row + column) % 3 === 0; },\n function (row, column) { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n function (row, column) { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n function (row, column) { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n function (row, column) { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n ],\n /* eslint-enable no-unused-vars */\n /* eslint-enable arrow-body-style */\n numberRegex = /^\\d+/,\n alphaPattern = \"A-Z0-9 $%*+./:-\",\n alphaExclusiveSet = \"A-Z $%*+./:-\",\n alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n initMinNumericBeforeAlpha = 8,\n initMinNumericBeforeByte = 5,\n initMinAlphaBeforeByte = 8,\n minNumericBeforeAlpha = 17,\n minNumericBeforeByte = 9,\n minAlphaBeforeByte = 16;\n\nexport var generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n for (var i = 0; i < matrices.length; i++) {\n matrices[i][x][y] = bit;\n }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n for (var i = 0; i < maskPatternConditions.length; i++) {\n matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n }\n}\n\nexport function fillData(matrices, blocks) {\n var cellVisitor = new FreeCellVisitor(matrices[0]),\n block,\n codewordIdx,\n cell;\n\n for (var blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n block = blocks[blockIdx];\n codewordIdx = 0;\n\n while (block.length > 0) {\n for (var i = 0; i < block.length; i++) {\n for (var j = 0; j < 8; j++) {\n cell = cellVisitor.getNextCell();\n fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n }\n }\n\n codewordIdx++;\n\n while (block[0] && codewordIdx === block[0].length) {\n block.splice(0, 1);\n }\n }\n }\n\n while ((cell = cellVisitor.getNextRemainderCell())) {\n fillDataCell(matrices, 0, cell.row, cell.column);\n }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n var dataBitsCount = totalDataCodewords * 8,\n terminatorIndex = 0,\n paddingCodewordIndex = 0;\n var dataString = initialDataString;\n\n while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n dataString += terminator.charAt(terminatorIndex++);\n }\n\n if (dataString.length % 8 !== 0) {\n dataString += new Array(9 - dataString.length % 8).join(\"0\");\n }\n\n while (dataString.length < dataBitsCount) {\n dataString += paddingCodewords[paddingCodewordIndex];\n paddingCodewordIndex ^= 1;\n }\n\n return dataString;\n}\n\nexport function generatePowersOfTwo() {\n var result;\n var power;\n\n for (power = 1; power < 255; power++) {\n result = powersOfTwoResult[power - 1] * 2;\n if (result > 255) {\n result = result ^ 285;\n }\n\n powersOfTwoResult[power] = result;\n powersOfTwo[result] = power;\n }\n\n result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n powersOfTwoResult[power] = result;\n powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n var result = [],\n idx = x.length - 2;\n\n for (var i = idx; i >= 0; i--) {\n result[i] = x[i] ^ y[i];\n }\n\n return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n var result = [];\n\n for (var i = 0; i < x.length; i++) {\n for (var j = 0; j < y.length; j++) {\n if (result[i + j] === undefined) {\n result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n } else {\n result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n }\n }\n }\n\n return result;\n}\n\nexport function generateGeneratorPolynomials() {\n var maxErrorCorrectionCodeWordsCount = 68;\n\n for (var idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n var firstPolynomial = generatorPolynomials[idx - 1],\n secondPolynomial = [idx, 0];\n\n generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n var result = [],\n idx = polynomial.length - 1;\n\n do {\n result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n idx--;\n }\n while (polynomial[idx] !== undefined);\n\n return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n var generator = generatorPolynomials[errorCodewordsCount - 1],\n result = new Array(errorCodewordsCount).concat(data),\n generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n steps = data.length,\n errorCodewords = [],\n divisor,\n idx;\n\n for (idx = 0; idx < steps; idx++) {\n divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n generatorPolynomial.splice(0, 1);\n\n result = xorPolynomials(divisor, result);\n }\n\n for (idx = result.length - 1; idx >= 0; idx--) {\n errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n }\n\n return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n var codewordStart = 0,\n dataBlocks = [],\n errorBlocks = [],\n dataBlock,\n versionGroups = versionCodewordsInformation.groups,\n blockCodewordsCount,\n groupBlocksCount,\n messagePolynomial,\n codeword;\n\n for (var groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n groupBlocksCount = versionGroups[groupIdx][0];\n\n for (var blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n blockCodewordsCount = versionGroups[groupIdx][1];\n dataBlock = [];\n messagePolynomial = [];\n\n for (var codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n codeword = dataStream.substring(codewordStart, codewordStart + 8);\n dataBlock.push(codeword);\n messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n codewordStart += 8;\n }\n\n dataBlocks.push(dataBlock);\n errorBlocks.push(generateErrorCodewords(messagePolynomial,\n versionCodewordsInformation.errorCodewordsPerBlock));\n }\n }\n return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n var numeric = numberRegex.exec(str),\n numericMatch = numeric ? numeric[0] : \"\",\n alpha = alphaRegex.exec(str),\n alphaMatch = alpha ? alpha[0] : \"\",\n alphaNumeric = alphaNumericRegex.exec(str),\n alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n mode,\n modeString;\n\n if (numericMatch &&\n (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n mode = NUMERIC;\n modeString = numericMatch;\n } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n mode = ALPHA_NUMERIC;\n modeString = numericMatch || alphaMatch;\n } else {\n mode = BYTE;\n\n if (alphaNumericMatch) {\n modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n } else {\n modeString = byteRegex.exec(str)[0];\n }\n }\n\n return {\n mode: mode,\n modeString: modeString\n };\n}\n\nexport function getModes(inputString) {\n var modes = [],\n previousMode,\n idx = 0;\n var str = inputString;\n\n modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n previousMode = modes[0].mode;\n str = str.substr(modes[0].modeString.length);\n\n while (str.length > 0) {\n var nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n if (nextMode.mode !== previousMode) {\n previousMode = nextMode.mode;\n modes.push(nextMode);\n idx++;\n } else {\n modes[idx].modeString += nextMode.modeString;\n }\n\n str = str.substr(nextMode.modeString.length);\n }\n\n return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n var length = 0,\n mode;\n\n for (var i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n length += mode.getStringBitsLength(modes[i].modeString.length);\n }\n\n return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n var x = 0,\n y = VersionsCodewordsInformation.length - 1,\n version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n do {\n if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n y = version;\n } else {\n x = version;\n }\n\n version = x + Math.floor((y - x) / 2);\n } while (y - x > 1);\n\n if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n return version + 1;\n }\n\n return y + 1;\n}\n\nexport function getDataString(modes, version) {\n var dataString = \"\",\n mode;\n\n for (var i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n dataString += mode.encode(modes[i].modeString, version);\n }\n\n return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n var formatNumber = toDecimal(format),\n encodedString,\n result = \"\";\n\n if (formatNumber === 0) {\n return \"101010000010010\";\n }\n\n encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n for (var i = 0; i < encodedString.length; i++) {\n result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n }\n\n return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n var generatorNumber = toDecimal(generatorPolynomial),\n polynomialLength = generatorPolynomial.length - 1,\n valueNumber = value << polynomialLength,\n length = codeLength - polynomialLength,\n valueString = toBitsString(value, length),\n result = dividePolynomials(valueNumber, generatorNumber);\n\n result = valueString + toBitsString(result, polynomialLength);\n\n return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n var yLength = numberY.toString(2).length,\n xLength = numberX.toString(2).length;\n var x = numberX;\n\n do {\n x ^= numberY << xLength - yLength;\n xLength = x.toString(2).length;\n }\n while (xLength >= yLength);\n\n return x;\n}\n\nexport function getNumberAt(str, idx) {\n return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n var matrices = [],\n modules = 17 + 4 * version;\n\n for (var i = 0; i < maskPatternConditions.length; i++) {\n matrices[i] = new Array(modules);\n\n for (var j = 0; j < modules; j++) {\n matrices[i][j] = new Array(modules);\n }\n }\n\n return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n var matrix = matrices[0],\n x,\n y,\n idx = 0,\n length = formatString.length;\n\n for (x = 0, y = 8; x <= 8; x++) {\n if (x !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n for (x = 8, y = 7; y >= 0; y--) {\n if (y !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n idx = 0;\n\n for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n\n fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n}\n\nexport function encodeVersionInformation(version) {\n return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n var matrix = matrices[0],\n modules = matrix.length,\n x1 = 0,\n y1 = modules - 11,\n x2 = modules - 11,\n y2 = 0,\n quotient,\n mod,\n value;\n\n for (var idx = 0; idx < dataString.length; idx++) {\n quotient = Math.floor(idx / 3);\n mod = idx % 3;\n value = getNumberAt(dataString, dataString.length - idx - 1);\n\n fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n var size = pattern.length + 2,\n length = pattern.length + 1,\n value;\n\n for (var i = 0; i < pattern.length; i++) {\n for (var j = i; j < size - i; j++) {\n value = pattern[i];\n\n fillFunctionCell(matrices, value, x + j, y + i);\n fillFunctionCell(matrices, value, x + i, y + j);\n fillFunctionCell(matrices, value, x + length - j, y + length - i);\n fillFunctionCell(matrices, value, x + length - i, y + length - j);\n }\n }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n var nextX = x,\n nextY = y,\n matrix = matrices[0];\n\n do {\n fillFunctionCell(matrices, 0, nextX, y);\n fillFunctionCell(matrices, 0, x, nextY);\n nextX += direction[0];\n nextY += direction[1];\n }\n while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n var modules = matrices[0].length;\n\n addCentricPattern(matrices, finderPattern, 0, 0);\n addFinderSeparator(matrices, [-1, -1], 7, 7);\n addCentricPattern(matrices, finderPattern, modules - 7, 0);\n addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n addCentricPattern(matrices, finderPattern, 0, modules - 7);\n addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n if (version < 2) {\n return;\n }\n\n var matrix = matrices[0],\n modules = matrix.length,\n pointsCount = Math.floor(version / 7),\n points = [6],\n startDistance,\n distance,\n idx = 0;\n\n if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n distance = (modules - 13 - startDistance) / pointsCount;\n } else {\n startDistance = distance = (modules - 13) / (pointsCount + 1);\n }\n\n points.push(points[idx++] + startDistance);\n\n while ((points[idx] + distance) < modules) {\n points.push(points[idx++] + distance);\n }\n\n for (var i = 0; i < points.length; i++) {\n for (var j = 0; j < points.length; j++) {\n if (matrix[points[i]][points[j]] === undefined) {\n addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n }\n }\n }\n}\n\nexport function addTimingFunctions(matrices) {\n var row = 6,\n column = 6,\n value = 1,\n modules = matrices[0].length;\n\n for (var i = 8; i < modules - 8; i++) {\n fillFunctionCell(matrices, value, row, i);\n fillFunctionCell(matrices, value, i, column);\n value ^= 1;\n }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n var scores = [],\n previousBits = [],\n darkModules = [],\n patterns = [],\n adjacentSameBits = [],\n matrix,\n i,\n row = 0,\n column = 1,\n modulesLength = matrices[0].length;\n\n for (i = 0; i < matrices.length; i++) {\n scores[i] = 0;\n darkModules[i] = 0;\n adjacentSameBits[i] = [0, 0];\n patterns[i] = [0, 0];\n previousBits[i] = [];\n }\n\n for (var rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n for (var columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n for (var matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n matrix = matrices[matrixIndex];\n darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n rowIndex + 1 < modulesLength &&\n columnIndex - 1 >= 0 &&\n matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n scores[matrixIndex] += 3;\n }\n\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n }\n }\n }\n\n var total = modulesLength * modulesLength,\n minIdx,\n min = Number.MAX_VALUE;\n\n for (i = 0; i < scores.length; i++) {\n scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n if (scores[i] < min) {\n min = scores[i];\n minIdx = i;\n }\n }\n\n return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n if (patterns[idx][rowColumn] === finderPatternValue) {\n scores[idx] += 40;\n }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n if (previousBits[idx][rowColumn] === bit) {\n adjacentBits[idx][rowColumn]++;\n } else {\n previousBits[idx][rowColumn] = bit;\n\n if (adjacentBits[idx][rowColumn] >= 5) {\n scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n }\n\n adjacentBits[idx][rowColumn] = 1;\n }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n var percent = Math.floor((darkModules / total) * 100),\n mod5 = percent % 5,\n previous = Math.abs(percent - mod5 - 50),\n next = Math.abs(percent + 5 - mod5 - 50),\n score = 10 * Math.min(previous / 5, next / 5);\n\n return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n return new Utf8Encoder();\n }\n\n return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n var encoder = createQRCodeDataEncoder(encoding),\n encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n version = encodingResult.version,\n versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n blocks = getBlocks(dataString, versionInformation),\n matrices = initMatrices(version);\n\n addFinderPatterns(matrices);\n addAlignmentPatterns(matrices, version);\n addTimingFunctions(matrices);\n\n if (version >= 7) {\n addVersionInformation(matrices, toBitsString(0, 18));\n }\n\n addFormatInformation(matrices, toBitsString(0, 15));\n fillData(matrices, blocks);\n\n var minIdx = scoreMaskMatrixes(matrices),\n optimalMatrix = matrices[minIdx];\n\n if (version >= 7) {\n addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n }\n\n var formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n return optimalMatrix;\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport var QRDataMode = (function (Class) {\n function QRDataMode() {\n Class.call(this);\n\n this.initProperties();\n }\n\n if ( Class ) QRDataMode.__proto__ = Class;\n QRDataMode.prototype = Object.create( Class && Class.prototype );\n QRDataMode.prototype.constructor = QRDataMode;\n\n QRDataMode.prototype.initProperties = function initProperties () {\n extend(this, {\n modeIndicator: \"\",\n bitsInCharacterCount: []\n });\n };\n\n QRDataMode.prototype.getVersionIndex = function getVersionIndex (version) {\n if (version < 10) {\n return 0;\n } else if (version > 26) {\n return 2;\n }\n\n return 1;\n };\n\n QRDataMode.prototype.getBitsCharacterCount = function getBitsCharacterCount (version) {\n return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n };\n\n QRDataMode.prototype.getModeCountString = function getModeCountString (length, version) {\n return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n };\n\n QRDataMode.prototype.encode = function encode () { };\n\n QRDataMode.prototype.getStringBitsLength = function getStringBitsLength () { };\n\n QRDataMode.prototype.getValue = function getValue () { };\n\n return QRDataMode;\n}(Class));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport var NumericQRDataMode = (function (QRDataMode) {\n function NumericQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) NumericQRDataMode.__proto__ = QRDataMode;\n NumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n NumericQRDataMode.prototype.constructor = NumericQRDataMode;\n\n NumericQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n bitsInCharacterCount: [10, 12, 14],\n modeIndicator: \"0001\"\n });\n };\n\n NumericQRDataMode.prototype.getValue = function getValue (character) {\n return parseInt(character, 10);\n };\n\n NumericQRDataMode.prototype.encode = function encode (str, version) {\n var mode = this,\n parts = splitInto(str, 3),\n result = mode.getModeCountString(str.length, version);\n var i;\n\n for (i = 0; i < parts.length - 1; i++) {\n result += toBitsString(parts[i], 10);\n }\n\n return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n };\n\n NumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n var mod3 = inputLength % 3;\n return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n };\n\n return NumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport var AlphaNumericQRDataMode = (function (QRDataMode) {\n function AlphaNumericQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) AlphaNumericQRDataMode.__proto__ = QRDataMode;\n AlphaNumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n AlphaNumericQRDataMode.prototype.constructor = AlphaNumericQRDataMode;\n\n AlphaNumericQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n characters: {\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 \"A\": 10,\n \"B\": 11,\n \"C\": 12,\n \"D\": 13,\n \"E\": 14,\n \"F\": 15,\n \"G\": 16,\n \"H\": 17,\n \"I\": 18,\n \"J\": 19,\n \"K\": 20,\n \"L\": 21,\n \"M\": 22,\n \"N\": 23,\n \"O\": 24,\n \"P\": 25,\n \"Q\": 26,\n \"R\": 27,\n \"S\": 28,\n \"T\": 29,\n \"U\": 30,\n \"V\": 31,\n \"W\": 32,\n \"X\": 33,\n \"Y\": 34,\n \"Z\": 35,\n \" \": 36,\n \"$\": 37,\n \"%\": 38,\n \"*\": 39,\n \"+\": 40,\n \"-\": 41,\n \".\": 42,\n \"/\": 43,\n \":\": 44\n },\n bitsInCharacterCount: [9, 11, 13],\n modeIndicator: \"0010\"\n });\n };\n\n AlphaNumericQRDataMode.prototype.getValue = function getValue (character) {\n return this.characters[character];\n };\n\n AlphaNumericQRDataMode.prototype.encode = function encode (str, version) {\n var this$1 = this;\n\n var\n parts = splitInto(str, 2),\n result = this.getModeCountString(str.length, version),\n value;\n var i;\n\n for (i = 0; i < parts.length - 1; i++) {\n value = 45 * this$1.getValue(parts[i].charAt(0)) + this$1.getValue(parts[i].charAt(1));\n result += toBitsString(value, 11);\n }\n\n value = parts[i].length === 2 ?\n 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n this.getValue(parts[i].charAt(0));\n\n return result + toBitsString(value, 1 + 5 * parts[i].length);\n };\n\n AlphaNumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n };\n\n return AlphaNumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport var ByteQRDataMode = (function (QRDataMode) {\n function ByteQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) ByteQRDataMode.__proto__ = QRDataMode;\n ByteQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n ByteQRDataMode.prototype.constructor = ByteQRDataMode;\n\n ByteQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n bitsInCharacterCount: [8, 16, 16],\n modeIndicator: \"0100\"\n });\n };\n\n ByteQRDataMode.prototype.getValue = function getValue (character) {\n var code = character.charCodeAt(0);\n\n if (code <= 127 || (160 <= code && code <= 255)) {\n return code;\n }\n\n throw new Error((\"Unsupported character in QR Code: \\\"\" + character + \"\\\".\"));\n };\n\n ByteQRDataMode.prototype.encode = function encode (str, version) {\n var mode = this,\n result = mode.getModeCountString(str.length, version);\n\n for (var i = 0; i < str.length; i++) {\n result += toBitsString(mode.getValue(str.charAt(i)), 8);\n }\n\n return result;\n };\n\n ByteQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n };\n\n return ByteQRDataMode;\n}(QRDataMode));\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nvar NUMERIC = \"numeric\";\nvar ALPHA_NUMERIC = \"alphanumeric\";\nvar BYTE = \"byte\";\n\nexport var DataModeInstances = {};\nDataModeInstances[NUMERIC] = new NumericQRDataMode();\nDataModeInstances[ALPHA_NUMERIC] = new AlphaNumericQRDataMode();\nDataModeInstances[BYTE] = new ByteQRDataMode();\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nvar BYTE = \"byte\";\n\nexport var Utf8Encoder = (function (Class) {\n function Utf8Encoder() {\n Class.call(this);\n\n this.initProperties();\n\n this.mode = DataModeInstances[this.encodingMode];\n }\n\n if ( Class ) Utf8Encoder.__proto__ = Class;\n Utf8Encoder.prototype = Object.create( Class && Class.prototype );\n Utf8Encoder.prototype.constructor = Utf8Encoder;\n\n Utf8Encoder.prototype.initProperties = function initProperties () {\n extend(this, {\n encodingMode: BYTE,\n utfBOM: \"111011111011101110111111\",\n initialModeCountStringLength: 20,\n ranges: [128, 2048, 65536, 2097152, 67108864]\n });\n };\n\n Utf8Encoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n var data = this.encode(inputString),\n dataCodewordsCount = this.getDataCodewordsCount(data),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n return new EncodingResult(dataString, version);\n };\n\n Utf8Encoder.prototype.getDataCodewordsCount = function getDataCodewordsCount (data) {\n var dataLength = data.length,\n dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n return dataCodewordsCount;\n };\n\n Utf8Encoder.prototype.encode = function encode (str) {\n var this$1 = this;\n\n var result = this.utfBOM;\n\n for (var i = 0; i < str.length; i++) {\n result += this$1.encodeCharacter(str.charCodeAt(i));\n }\n\n return result;\n };\n\n Utf8Encoder.prototype.encodeCharacter = function encodeCharacter (code) {\n var bytesCount = this.getBytesCount(code),\n bc = bytesCount - 1,\n result = \"\";\n\n if (bytesCount === 1) {\n result = toBitsString(code, 8);\n } else {\n var significantOnes = 8 - bytesCount;\n\n for (var i = 0; i < bc; i++) {\n result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n }\n\n result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n }\n\n return result;\n };\n\n Utf8Encoder.prototype.getBytesCount = function getBytesCount (code) {\n var ranges = this.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n if (code < ranges[i]) {\n return i + 1;\n }\n }\n };\n\n return Utf8Encoder;\n}(Class));\n","export var VersionsCodewordsInformation = [{\n L: {\n groups: [\n [1, 19]\n ],\n totalDataCodewords: 19,\n errorCodewordsPerBlock: 7\n },\n M: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 10\n },\n Q: {\n groups: [\n [1, 13]\n ],\n totalDataCodewords: 13,\n errorCodewordsPerBlock: 13\n },\n H: {\n groups: [\n [1, 9]\n ],\n totalDataCodewords: 9,\n errorCodewordsPerBlock: 17\n }\n}, {\n L: {\n groups: [\n [1, 34]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 10\n },\n M: {\n groups: [\n [1, 28]\n ],\n totalDataCodewords: 28,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [1, 22]\n ],\n totalDataCodewords: 22,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [1, 55]\n ],\n totalDataCodewords: 55,\n errorCodewordsPerBlock: 15\n },\n M: {\n groups: [\n [1, 44]\n ],\n totalDataCodewords: 44,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [2, 17]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 13]\n ],\n totalDataCodewords: 26,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [1, 80]\n ],\n totalDataCodewords: 80,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [2, 32]\n ],\n totalDataCodewords: 64,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 24]\n ],\n totalDataCodewords: 48,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [4, 9]\n ],\n totalDataCodewords: 36,\n errorCodewordsPerBlock: 16\n }\n}, {\n L: {\n groups: [\n [1, 108]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [2, 43]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [2, 15],\n [2, 16]\n ],\n totalDataCodewords: 62,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 11],\n [2, 12]\n ],\n totalDataCodewords: 46,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [2, 68]\n ],\n totalDataCodewords: 136,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 27]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [4, 19]\n ],\n totalDataCodewords: 76,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [4, 15]\n ],\n totalDataCodewords: 60,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [2, 78]\n ],\n totalDataCodewords: 156,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [4, 31]\n ],\n totalDataCodewords: 124,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 14],\n [4, 15]\n ],\n totalDataCodewords: 88,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [4, 13],\n [1, 14]\n ],\n totalDataCodewords: 66,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 97]\n ],\n totalDataCodewords: 194,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [2, 38],\n [2, 39]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 18],\n [2, 19]\n ],\n totalDataCodewords: 110,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [4, 14],\n [2, 15]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 116]\n ],\n totalDataCodewords: 232,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 36],\n [2, 37]\n ],\n totalDataCodewords: 182,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 16],\n [4, 17]\n ],\n totalDataCodewords: 132,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [4, 12],\n [4, 13]\n ],\n totalDataCodewords: 100,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 68],\n [2, 69]\n ],\n totalDataCodewords: 274,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 43],\n [1, 44]\n ],\n totalDataCodewords: 216,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [6, 19],\n [2, 20]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [6, 15],\n [2, 16]\n ],\n totalDataCodewords: 122,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 81]\n ],\n totalDataCodewords: 324,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [1, 50],\n [4, 51]\n ],\n totalDataCodewords: 254,\n errorCodewordsPerBlock: 30\n },\n Q: {\n groups: [\n [4, 22],\n [4, 23]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [3, 12],\n [8, 13]\n ],\n totalDataCodewords: 140,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 92],\n [2, 93]\n ],\n totalDataCodewords: 370,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [6, 36],\n [2, 37]\n ],\n totalDataCodewords: 290,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 20],\n [6, 21]\n ],\n totalDataCodewords: 206,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [7, 14],\n [4, 15]\n ],\n totalDataCodewords: 158,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 107]\n ],\n totalDataCodewords: 428,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 37],\n [1, 38]\n ],\n totalDataCodewords: 334,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [8, 20],\n [4, 21]\n ],\n totalDataCodewords: 244,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [12, 11],\n [4, 12]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [3, 115],\n [1, 116]\n ],\n totalDataCodewords: 461,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 40],\n [5, 41]\n ],\n totalDataCodewords: 365,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [11, 16],\n [5, 17]\n ],\n totalDataCodewords: 261,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [11, 12],\n [5, 13]\n ],\n totalDataCodewords: 197,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 87],\n [1, 88]\n ],\n totalDataCodewords: 523,\n errorCodewordsPerBlock: 22\n },\n M: {\n groups: [\n [5, 41],\n [5, 42]\n ],\n totalDataCodewords: 415,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [5, 24],\n [7, 25]\n ],\n totalDataCodewords: 295,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 12],\n [7, 13]\n ],\n totalDataCodewords: 223,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 98],\n [1, 99]\n ],\n totalDataCodewords: 589,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [7, 45],\n [3, 46]\n ],\n totalDataCodewords: 453,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 19],\n [2, 20]\n ],\n totalDataCodewords: 325,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [3, 15],\n [13, 16]\n ],\n totalDataCodewords: 253,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [1, 107],\n [5, 108]\n ],\n totalDataCodewords: 647,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [10, 46],\n [1, 47]\n ],\n totalDataCodewords: 507,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 22],\n [15, 23]\n ],\n totalDataCodewords: 367,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [17, 15]\n ],\n totalDataCodewords: 283,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [5, 120],\n [1, 121]\n ],\n totalDataCodewords: 721,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [9, 43],\n [4, 44]\n ],\n totalDataCodewords: 563,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [1, 23]\n ],\n totalDataCodewords: 397,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [19, 15]\n ],\n totalDataCodewords: 313,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [3, 113],\n [4, 114]\n ],\n totalDataCodewords: 795,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 44],\n [11, 45]\n ],\n totalDataCodewords: 627,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 21],\n [4, 22]\n ],\n totalDataCodewords: 445,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [9, 13],\n [16, 14]\n ],\n totalDataCodewords: 341,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [3, 107],\n [5, 108]\n ],\n totalDataCodewords: 861,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 41],\n [13, 42]\n ],\n totalDataCodewords: 669,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [15, 24],\n [5, 25]\n ],\n totalDataCodewords: 485,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [15, 15],\n [10, 16]\n ],\n totalDataCodewords: 385,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 116],\n [4, 117]\n ],\n totalDataCodewords: 932,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 42]\n ],\n totalDataCodewords: 714,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [6, 23]\n ],\n totalDataCodewords: 512,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [19, 16],\n [6, 17]\n ],\n totalDataCodewords: 406,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [2, 111],\n [7, 112]\n ],\n totalDataCodewords: 1006,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 46]\n ],\n totalDataCodewords: 782,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [16, 25]\n ],\n totalDataCodewords: 568,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [34, 13]\n ],\n totalDataCodewords: 442,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [4, 121],\n [5, 122]\n ],\n totalDataCodewords: 1094,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 47],\n [14, 48]\n ],\n totalDataCodewords: 860,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [14, 25]\n ],\n totalDataCodewords: 614,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [16, 15],\n [14, 16]\n ],\n totalDataCodewords: 464,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 117],\n [4, 118]\n ],\n totalDataCodewords: 1174,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 45],\n [14, 46]\n ],\n totalDataCodewords: 914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [16, 25]\n ],\n totalDataCodewords: 664,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [30, 16],\n [2, 17]\n ],\n totalDataCodewords: 514,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 106],\n [4, 107]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 47],\n [13, 48]\n ],\n totalDataCodewords: 1000,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [22, 25]\n ],\n totalDataCodewords: 718,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [13, 16]\n ],\n totalDataCodewords: 538,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [10, 114],\n [2, 115]\n ],\n totalDataCodewords: 1370,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [19, 46],\n [4, 47]\n ],\n totalDataCodewords: 1062,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [28, 22],\n [6, 23]\n ],\n totalDataCodewords: 754,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [33, 16],\n [4, 17]\n ],\n totalDataCodewords: 596,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 122],\n [4, 123]\n ],\n totalDataCodewords: 1468,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [22, 45],\n [3, 46]\n ],\n totalDataCodewords: 1128,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [8, 23],\n [26, 24]\n ],\n totalDataCodewords: 808,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [12, 15],\n [28, 16]\n ],\n totalDataCodewords: 628,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [3, 117],\n [10, 118]\n ],\n totalDataCodewords: 1531,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 45],\n [23, 46]\n ],\n totalDataCodewords: 1193,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [4, 24],\n [31, 25]\n ],\n totalDataCodewords: 871,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [31, 16]\n ],\n totalDataCodewords: 661,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [7, 116],\n [7, 117]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [21, 45],\n [7, 46]\n ],\n totalDataCodewords: 1267,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 23],\n [37, 24]\n ],\n totalDataCodewords: 911,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [26, 16]\n ],\n totalDataCodewords: 701,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [5, 115],\n [10, 116]\n ],\n totalDataCodewords: 1735,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [19, 47],\n [10, 48]\n ],\n totalDataCodewords: 1373,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 24],\n [25, 25]\n ],\n totalDataCodewords: 985,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [25, 16]\n ],\n totalDataCodewords: 745,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [3, 116]\n ],\n totalDataCodewords: 1843,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [2, 46],\n [29, 47]\n ],\n totalDataCodewords: 1455,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [42, 24],\n [1, 25]\n ],\n totalDataCodewords: 1033,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [28, 16]\n ],\n totalDataCodewords: 793,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115]\n ],\n totalDataCodewords: 1955,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [10, 46],\n [23, 47]\n ],\n totalDataCodewords: 1541,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [10, 24],\n [35, 25]\n ],\n totalDataCodewords: 1115,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [35, 16]\n ],\n totalDataCodewords: 845,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115],\n [1, 116]\n ],\n totalDataCodewords: 2071,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [21, 47]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [29, 24],\n [19, 25]\n ],\n totalDataCodewords: 1171,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [46, 16]\n ],\n totalDataCodewords: 901,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [6, 116]\n ],\n totalDataCodewords: 2191,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [23, 47]\n ],\n totalDataCodewords: 1725,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [44, 24],\n [7, 25]\n ],\n totalDataCodewords: 1231,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [59, 16],\n [1, 17]\n ],\n totalDataCodewords: 961,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [12, 121],\n [7, 122]\n ],\n totalDataCodewords: 2306,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [12, 47],\n [26, 48]\n ],\n totalDataCodewords: 1812,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [39, 24],\n [14, 25]\n ],\n totalDataCodewords: 1286,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [41, 16]\n ],\n totalDataCodewords: 986,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 121],\n [14, 122]\n ],\n totalDataCodewords: 2434,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 47],\n [34, 48]\n ],\n totalDataCodewords: 1914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [46, 24],\n [10, 25]\n ],\n totalDataCodewords: 1354,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [2, 15],\n [64, 16]\n ],\n totalDataCodewords: 1054,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 122],\n [4, 123]\n ],\n totalDataCodewords: 2566,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [29, 46],\n [14, 47]\n ],\n totalDataCodewords: 1992,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [49, 24],\n [10, 25]\n ],\n totalDataCodewords: 1426,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [24, 15],\n [46, 16]\n ],\n totalDataCodewords: 1096,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [4, 122],\n [18, 123]\n ],\n totalDataCodewords: 2702,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [13, 46],\n [32, 47]\n ],\n totalDataCodewords: 2102,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [48, 24],\n [14, 25]\n ],\n totalDataCodewords: 1502,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [42, 15],\n [32, 16]\n ],\n totalDataCodewords: 1142,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [20, 117],\n [4, 118]\n ],\n totalDataCodewords: 2812,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [40, 47],\n [7, 48]\n ],\n totalDataCodewords: 2216,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [43, 24],\n [22, 25]\n ],\n totalDataCodewords: 1582,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [10, 15],\n [67, 16]\n ],\n totalDataCodewords: 1222,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [19, 118],\n [6, 119]\n ],\n totalDataCodewords: 2956,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [18, 47],\n [31, 48]\n ],\n totalDataCodewords: 2334,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [34, 24],\n [34, 25]\n ],\n totalDataCodewords: 1666,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [20, 15],\n [61, 16]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 30\n }\n}];\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n addClass,\n setDefaultOptions,\n deepExtend,\n defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nimport { surfaceSize } from '../barcode/surface-size';\n\nvar round = Math.round;\nvar crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nvar squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nvar QRCodeDefaults = {\n DEFAULT_SIZE: 200,\n QUIET_ZONE_LENGTH: 4,\n DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n DEFAULT_BACKGROUND: \"#fff\",\n DEFAULT_DARK_MODULE_COLOR: \"#000\",\n MIN_BASE_UNIT_SIZE: 1,\n DEFAULT_LOGO_SIZE: 7\n};\n\nvar QRCode = (function (Class) {\n function QRCode(element, options, errorHandler) {\n if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.wrapper = this.element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n\n this.setOptions(options);\n }\n\n if ( Class ) QRCode.__proto__ = Class;\n QRCode.prototype = Object.create( Class && Class.prototype );\n QRCode.prototype.constructor = QRCode;\n\n QRCode.prototype.destroy = function destroy () {\n this._destroySurface();\n };\n\n QRCode.prototype._initElement = function _initElement () {\n addClass(this.element, \"k-qrcode\");\n };\n\n QRCode.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n };\n\n QRCode.prototype._createSurface = function _createSurface () {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n };\n\n QRCode.prototype._destroySurface = function _destroySurface () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n };\n\n QRCode.prototype._initSurfaceElement = function _initSurfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n };\n\n QRCode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n };\n\n QRCode.prototype.redraw = function redraw () {\n var size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size,\n height: size\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n };\n\n QRCode.prototype.getSize = function getSize () {\n var element = this.element;\n var elementWidth = element.clientWidth;\n var elementHeight = element.clientHeight;\n var size = { width: 0, height: 0 };\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n return size;\n };\n\n QRCode.prototype._resize = function _resize () {\n this.redraw();\n };\n\n QRCode.prototype.createVisual = function createVisual () {\n this.visual = this._render();\n };\n\n QRCode.prototype.exportVisual = function exportVisual () {\n return this._render();\n };\n\n QRCode.prototype._render = function _render () {\n var value = this._value,\n baseUnit,\n border = this.options.border || {},\n padding = this.options.padding || 0,\n borderWidth = border.width || 0,\n quietZoneSize,\n matrix,\n size,\n dataSize,\n contentSize;\n\n border.width = borderWidth;\n\n var visual = new draw.Group();\n\n try {\n if (value) {\n matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n size = this._getSize();\n contentSize = size - 2 * (borderWidth + padding);\n baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n dataSize = matrix.length * baseUnit;\n quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n visual.append(this._renderBackground(size, border));\n visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n if (this._hasCustomLogo()) {\n visual.append(this._renderLogo(size, baseUnit));\n } else if (this._isSwiss()) {\n visual.append(this._renderSwissCode(size, baseUnit));\n }\n }\n } catch (error) {\n this.onError(error);\n }\n\n return visual;\n };\n\n QRCode.prototype._renderLogo = function _renderLogo (qrSize, baseUnit) {\n var image;\n var imageRect;\n var center = round(qrSize / 2);\n var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n var logoUrl = this.options.overlay.imageUrl;\n var position = {\n x: center - logoSize.width / 2,\n y: center - logoSize.height / 2\n };\n\n imageRect = new geom.Rect(\n new geom.Point(position.x, position.y),\n new geom.Size(logoSize.width, logoSize.height)\n );\n\n image = new draw.Image(logoUrl, imageRect);\n\n return image;\n };\n\n QRCode.prototype._renderSwissCode = function _renderSwissCode (qrSize, baseUnit) {\n var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n logoSize = Math.max(logoSize.width, logoSize.height);\n var crossSize = logoSize / 4;\n var crossOffset = crossSize / 2;\n var center = qrSize / 2;\n var start = {};\n var visual = new draw.Group();\n\n start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n start.x = start.y = center - logoSize / 2;\n visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n start.x = center + crossOffset - logoSize / 2;\n start.y = center + crossOffset + crossSize - logoSize / 2;\n visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n return visual;\n };\n\n QRCode.prototype._renderShape = function _renderShape (start, step, pattern, color) {\n var path = new draw.MultiPath({\n fill: {\n color: color\n },\n stroke: null\n });\n\n path.moveTo(start.x, start.y);\n\n for (var i = 0; i < pattern.length; i++) {\n path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n }\n\n path.close();\n\n return path;\n };\n\n QRCode.prototype._getSize = function _getSize () {\n var size;\n\n if (this.options.size) {\n size = parseInt(this.options.size, 10);\n } else {\n var element = this.element;\n var elementSize = surfaceSize(element, this.options.renderAs);\n var min = Math.min(elementSize.width, elementSize.height);\n\n if (min > 0) {\n size = min;\n } else {\n size = QRCodeDefaults.DEFAULT_SIZE;\n }\n }\n\n return size;\n };\n\n QRCode.prototype._calculateBaseUnit = function _calculateBaseUnit (size, matrixSize) {\n var baseUnit = Math.floor(size / matrixSize);\n\n if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n var minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n this.onError(new Error(\n (\"Insufficient size for QR Code: the current size is \" + size + \"px and the minimum size is \" + minSize + \"px.\")\n ));\n } else if (baseUnit * matrixSize >= size &&\n baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n baseUnit--;\n }\n\n return baseUnit;\n };\n\n QRCode.prototype._renderMatrix = function _renderMatrix (matrix, baseUnit, quietZoneSize) {\n var path = new draw.MultiPath({\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n for (var row = 0; row < matrix.length; row++) {\n var y = quietZoneSize + row * baseUnit;\n var column = 0;\n\n while (column < matrix.length) {\n while (matrix[row][column] === 0 && column < matrix.length) {\n column++;\n }\n\n if (column < matrix.length) {\n var x = column;\n while (matrix[row][column] === 1) {\n column++;\n }\n\n var x1 = round(quietZoneSize + x * baseUnit);\n var y1 = round(y);\n var x2 = round(quietZoneSize + column * baseUnit);\n var y2 = round(y + baseUnit);\n\n path.moveTo(x1, y1)\n .lineTo(x1, y2)\n .lineTo(x2, y2)\n .lineTo(x2, y1)\n .close();\n }\n }\n }\n\n return path;\n };\n\n QRCode.prototype._renderBackground = function _renderBackground (size, border) {\n var box = new Box(0, 0, size, size).unpad(border.width / 2);\n var background = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: this.options.background\n },\n stroke: {\n color: border.color,\n width: border.width\n }\n });\n\n return background;\n };\n\n QRCode.prototype.setOptions = function setOptions (options) {\n var newOptions = options || {};\n this.options = extend(this.options, newOptions);\n\n if (options.value !== undefined) {\n this._value = String(this.options.value);\n }\n\n this._initSurface();\n this.redraw();\n };\n\n QRCode.prototype.value = function value (value$1) {\n if (value$1 === undefined) {\n return this._value;\n }\n\n this._value = String(value$1);\n\n this.redraw();\n };\n\n QRCode.prototype._hasCustomLogo = function _hasCustomLogo () {\n return Boolean(this.options.overlay.imageUrl);\n };\n\n QRCode.prototype._isSwiss = function _isSwiss () {\n return this.options.overlay.type === \"swiss\";\n };\n\n QRCode.prototype._getLogoSize = function _getLogoSize (defautLogoSize) {\n var width = this.options.overlay.width;\n var height = this.options.overlay.height;\n\n if (!width && !height) {\n width = height = defautLogoSize;\n } else if (width && !height) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n return {\n width: width,\n height: height\n };\n };\n\n return QRCode;\n}(Class));\n\nsetDefaultOptions(QRCode, {\n name: \"QRCode\",\n renderAs: \"svg\",\n encoding: \"ISO_8859_1\",\n value: \"\",\n errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n background: QRCodeDefaults.DEFAULT_BACKGROUND,\n color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n size: \"\",\n padding: 0,\n border: {\n color: \"\",\n width: 0\n },\n overlay: {\n type: \"image\",\n imageUrl: \"\",\n width: 0,\n height: 0\n }\n});\n\nexport default QRCode;\n","import { encodeData } from './encodings/encoding';\n\nvar ISO = 'ISO_8859_1';\n\nfunction qrcodeValidator(encoding) {\n if ( encoding === void 0 ) encoding = ISO;\n\n return function(value) {\n try {\n encodeData(value, 'L', encoding);\n } catch (error) {\n return {\n valid: false,\n error: error\n };\n }\n\n return {\n valid: true\n };\n };\n}\n\nexport default qrcodeValidator;\n","// Coordinate reference system\n// World Geodetic System of 1984\nvar WGS84 = {\n a: 6378137, // Semi-major radius\n b: 6356752.314245179, // Semi-minor radius\n f: 0.0033528106647474805, // Flattening\n e: 0.08181919084262149 // Eccentricity\n};\n\n// Geographic coordinate systems use a spheroid to calculate positions on the earth.\n// A datum defines the position of the spheroid relative to the center of the earth\n// it provides a frame of reference for measuring locations on the surface of the earth\n// and defines the origin and orientation of latitude and longitude lines.\nexport var datums = {\n WGS84: WGS84\n};\n","import {\n Class,\n deepExtend,\n deg,\n rad,\n round,\n defined\n} from '../common';\n\nimport {\n datums\n} from './datums';\n\nfunction toSquare(value) {\n return value * value;\n}\n\n\nvar math = Math,\n abs = math.abs,\n atan = math.atan,\n atan2 = math.atan2,\n cos = math.cos,\n sin = math.sin,\n tan = math.tan;\n\nexport var Location = (function (Class) {\n function Location(lat, lng) {\n Class.call(this);\n\n this.initProperties();\n\n if (arguments.length === 1) {\n this.lat = lat[0];\n this.lng = lat[1];\n } else {\n this.lat = lat;\n this.lng = lng;\n }\n }\n\n if ( Class ) Location.__proto__ = Class;\n Location.prototype = Object.create( Class && Class.prototype );\n Location.prototype.constructor = Location;\n\n Location.prototype.initProperties = function initProperties () {\n deepExtend(this, {\n DISTANCE_ITERATIONS: 100,\n DISTANCE_CONVERGENCE: 1e-12,\n DISTANCE_PRECISION: 2,\n FORMAT: '{0:N6}{1:N6}'\n });\n };\n\n Location.prototype.toArray = function toArray () {\n return [\n this.lat,\n this.lng\n ];\n };\n\n Location.prototype.equals = function equals (loc) {\n return loc && loc.lat === this.lat && loc.lng === this.lng;\n };\n\n Location.prototype.clone = function clone () {\n return new Location(this.lat, this.lng);\n };\n\n Location.prototype.round = function round$1 (precision) {\n this.lng = round(this.lng, precision);\n this.lat = round(this.lat, precision);\n return this;\n };\n\n Location.prototype.wrap = function wrap () {\n this.lng = this.lng % 180;\n this.lat = this.lat % 90;\n return this;\n };\n\n Location.prototype.distanceTo = function distanceTo (dest, datum) {\n return this.greatCircleTo(dest, datum).distance;\n };\n\n Location.prototype.destination = function destination (distance, initialBearing, initialDatum) {\n var bearing = rad(initialBearing);\n var datum = initialDatum || datums.WGS84;\n var fromLat = rad(this.lat);\n var fromLng = rad(this.lng);\n var dToR = distance / datum.a;\n var lat = math.asin(sin(fromLat) * cos(dToR) + cos(fromLat) * sin(dToR) * cos(bearing));\n var lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat), cos(dToR) - sin(fromLat) * sin(lat));\n\n return new Location(deg(lat), deg(lng));\n };\n\n Location.prototype.greatCircleTo = function greatCircleTo (initialDest, initialDatum) {\n var this$1 = this;\n\n var dest = Location.create(dest);\n var datum = initialDatum || datums.WGS84;\n\n if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n return {\n distance: 0,\n azimuthFrom: 0,\n azimuthTo: 0\n };\n }\n\n // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n // o == sigma\n // A == alpha\n\n var a = datum.a;\n var b = datum.b;\n var f = datum.f;\n var L = rad(dest.lng - this.lng);\n var U1 = atan((1 - f) * tan(rad(this.lat)));\n var sinU1 = sin(U1);\n var cosU1 = cos(U1);\n var U2 = atan((1 - f) * tan(rad(dest.lat)));\n var sinU2 = sin(U2);\n var cosU2 = cos(U2);\n var lambda = L;\n var prevLambda;\n var i = this.DISTANCE_ITERATIONS;\n var converged = false;\n var sinLambda;\n var cosLambda;\n var sino;\n var cosA2;\n var coso;\n var cos2om;\n var sigma;\n\n while (!converged && i-- > 0) {\n sinLambda = sin(lambda);\n cosLambda = cos(lambda);\n sino = math.sqrt(toSquare(cosU2 * sinLambda) + toSquare(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n sigma = atan2(sino, coso);\n\n var sinA = cosU1 * cosU2 * sinLambda / sino;\n cosA2 = 1 - toSquare(sinA);\n cos2om = 0;\n\n if (cosA2 !== 0) {\n cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n }\n\n prevLambda = lambda;\n var C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n lambda = L + (1 - C) * f * sinA * (sigma + C * sino * (cos2om + C * coso * (-1 + 2 * toSquare(cos2om))));\n converged = abs(lambda - prevLambda) <= this$1.DISTANCE_CONVERGENCE;\n }\n\n var u2 = cosA2 * (toSquare(a) - toSquare(b)) / toSquare(b);\n var A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n var B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n var deltao = B * sino * (cos2om + B / 4 * (coso * (-1 + 2 * toSquare(cos2om)) - B / 6 * cos2om * (-3 + 4 * toSquare(sino)) * (-3 + 4 * toSquare(cos2om))));\n\n var azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n var azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n return {\n distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n azimuthFrom: deg(azimuthFrom),\n azimuthTo: deg(azimuthTo)\n };\n };\n\n // IE < 9 doesn't allow to override toString on definition\n Location.prototype.toString = function toString () {\n // return kendo.format(this.FORMAT, this.lat, this.lng);\n return String(this.lat) + \",\" + String(this.lng);\n };\n\n Location.fromLngLat = function fromLngLat (lngAndLat) {\n return new Location(lngAndLat[1], lngAndLat[0]);\n };\n\n Location.fromLatLng = function fromLatLng (lngAndLat) {\n return new Location(lngAndLat[0], lngAndLat[1]);\n };\n\n Location.create = function create (a, b) {\n if (defined(a)) {\n if (a instanceof Location) {\n return a.clone();\n } else if (arguments.length === 1 && a.length === 2) {\n return Location.fromLatLng(a);\n }\n\n return new Location(a, b);\n }\n };\n\n return Location;\n}(Class));\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n setDefaultOptions,\n limitValue,\n rad,\n deg,\n deepExtend\n} from '../common';\n\nimport {\n Location\n} from './location';\n\nimport {\n datums\n} from './datums';\n\n\nvar math = Math,\n atan = math.atan,\n exp = math.exp,\n pow = math.pow,\n sin = math.sin,\n log = math.log,\n tan = math.tan,\n Point = g.Point;\n\nvar PI = math.PI,\n PI_DIV_2 = PI / 2,\n PI_DIV_4 = PI / 4,\n DEG_TO_RAD = PI / 180;\n\nvar WGS84 = datums.WGS84;\n\n// WGS 84 / World Mercator\nexport var Mercator = (function (Class) {\n function Mercator(options) {\n Class.call(this);\n this.initProperties();\n this._initOptions(options);\n }\n\n if ( Class ) Mercator.__proto__ = Class;\n Mercator.prototype = Object.create( Class && Class.prototype );\n Mercator.prototype.constructor = Mercator;\n\n Mercator.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Mercator.prototype.initProperties = function initProperties () {\n // super.initProperties();\n\n deepExtend(this, {\n MAX_LNG: 180,\n MAX_LAT: 85.0840590501,\n INVERSE_ITERATIONS: 15,\n INVERSE_CONVERGENCE: 1e-12\n });\n };\n\n Mercator.prototype.forward = function forward (loc, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lat = limitValue(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n lng = clamp ? limitValue(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n x = rad(lng - lng0) * r,\n y = proj._projectLat(lat);\n return new Point(x, y);\n };\n Mercator.prototype._projectLat = function _projectLat (lat) {\n var datum = this.options.datum,\n ecc = datum.e,\n r = datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2),\n con = ecc * sin(y),\n p = pow((1 - con) / (1 + con), ecc / 2);\n\n // See: http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n return r * log(ts * p);\n };\n Mercator.prototype.inverse = function inverse (point, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lng = point.x / (DEG_TO_RAD * r) + lng0,\n lat = limitValue(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n if (clamp) {\n lng = limitValue(lng, -proj.MAX_LNG, proj.MAX_LNG);\n }\n return new Location(lat, lng);\n };\n Mercator.prototype._inverseY = function _inverseY (y) {\n var proj = this,\n datum = proj.options.datum,\n r = datum.a,\n ecc = datum.e,\n ecch = ecc / 2,\n ts = exp(-y / r),\n phi = PI_DIV_2 - 2 * atan(ts),\n i;\n for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n var con = ecc * sin(phi),\n p = pow((1 - con) / (1 + con), ecch),\n dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n phi += dphi;\n if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n break;\n }\n }\n return deg(phi);\n };\n\n return Mercator;\n}(Class));\n\nsetDefaultOptions(Mercator, {\n centralMeridian: 0,\n datum: WGS84\n});\n\n\n// WGS 84 / Pseudo-Mercator\n// Used by Google Maps, Bing, OSM, etc.\n// Spherical projection of ellipsoidal coordinates.\nexport var SphericalMercator = (function (Mercator) {\n function SphericalMercator () {\n Mercator.apply(this, arguments);\n }\n\n if ( Mercator ) SphericalMercator.__proto__ = Mercator;\n SphericalMercator.prototype = Object.create( Mercator && Mercator.prototype );\n SphericalMercator.prototype.constructor = SphericalMercator;\n\n SphericalMercator.prototype.initProperties = function initProperties () {\n Mercator.prototype.initProperties.call(this);\n\n deepExtend(this, {\n MAX_LAT: 85.0511287798\n });\n };\n\n SphericalMercator.prototype._projectLat = function _projectLat (lat) {\n var r = this.options.datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2);\n return r * log(ts);\n };\n\n SphericalMercator.prototype._inverseY = function _inverseY (y) {\n var r = this.options.datum.a,\n ts = exp(-y / r);\n return deg(PI_DIV_2 - 2 * atan(ts));\n };\n\n return SphericalMercator;\n}(Mercator));\n\nexport var Equirectangular = (function (Class) {\n function Equirectangular () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) Equirectangular.__proto__ = Class;\n Equirectangular.prototype = Object.create( Class && Class.prototype );\n Equirectangular.prototype.constructor = Equirectangular;\n\n Equirectangular.prototype.forward = function forward (loc) {\n return new Point(loc.lng, loc.lat);\n };\n Equirectangular.prototype.inverse = function inverse (point) {\n return new Location(point.y, point.x);\n };\n\n return Equirectangular;\n}(Class));\n\n// This is the projected coordinate system used for rendering maps in Google Maps, OpenStreetMap, etc\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Certain Web mapping and visualisation applications. It is not a recognised geodetic system: for that see ellipsoidal Mercator CRS code 3395 (WGS 84 / World Mercator).\n// Remarks: Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.\n// Area of use: World between 85.06°S and 85.06°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (X,Y). Orientations: east, north. UoM: m.\n// https://epsg.io/3857\nexport var EPSG3857 = (function (Class) {\n function EPSG3857() {\n Class.call(this);\n var crs = this,\n proj = crs._proj = new SphericalMercator();\n var c = this.c = 2 * PI * proj.options.datum.a;\n\n // transfrom matrix\n // Scale circumference to 1, mirror Y and shift origin to top left\n this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n // Inverse transform matrix\n this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n }\n\n if ( Class ) EPSG3857.__proto__ = Class;\n EPSG3857.prototype = Object.create( Class && Class.prototype );\n EPSG3857.prototype.constructor = EPSG3857;\n\n // Location <-> Point (screen coordinates for a given scale)\n EPSG3857.prototype.toPoint = function toPoint (loc, scale, clamp) {\n var point = this._proj.forward(loc, clamp);\n return point.transform(this._tm).scale(scale || 1);\n };\n EPSG3857.prototype.toLocation = function toLocation (point, scale, clamp) {\n var newPoint = point.clone().scale(1 / (scale || 1)).transform(this._itm);\n return this._proj.inverse(newPoint, clamp);\n };\n\n return EPSG3857;\n}(Class));\n\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Very small scale mapping.\n// Remarks: Euro-centric view of world excluding polar areas.\n// Area of use: World between 80°S and 84°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m.\n// https://epsg.io/3395\nexport var EPSG3395 = (function (Class) {\n function EPSG3395() {\n Class.call(this);\n this._proj = new Mercator();\n }\n\n if ( Class ) EPSG3395.__proto__ = Class;\n EPSG3395.prototype = Object.create( Class && Class.prototype );\n EPSG3395.prototype.constructor = EPSG3395;\n EPSG3395.prototype.toPoint = function toPoint (loc) {\n return this._proj.forward(loc);\n };\n EPSG3395.prototype.toLocation = function toLocation (point) {\n return this._proj.inverse(point);\n };\n\n return EPSG3395;\n}(Class));\n\n// Unit: degree\n// Geodetic CRS: WGS 84\n// Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.\n// Area of use: World.\n// Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree\n// https://epsg.io/4326\nexport var EPSG4326 = (function (Class) {\n function EPSG4326() {\n Class.call(this);\n this._proj = new Equirectangular();\n }\n\n if ( Class ) EPSG4326.__proto__ = Class;\n EPSG4326.prototype = Object.create( Class && Class.prototype );\n EPSG4326.prototype.constructor = EPSG4326;\n EPSG4326.prototype.toPoint = function toPoint (loc) {\n return this._proj.forward(loc);\n };\n EPSG4326.prototype.toLocation = function toLocation (point) {\n return this._proj.inverse(point);\n };\n\n return EPSG4326;\n}(Class));\n","import { getSupportedFeatures } from '../common';\n\n/* eslint-disable arrow-body-style, no-useless-escape */\n\nexport var extend = Object.assign;\n\nexport var proxy = function (method, context) {\n return method.bind(context);\n};\n\nexport var convertToHtml = function (html) {\n var div = document.createElement(\"div\");\n div.innerHTML = html;\n return div.firstChild;\n};\n\nexport var appendHtml = function (html, element) {\n var div = document.createElement('div');\n div.innerHTML = html;\n\n // use childNodes instead of children\n // to cover text nodes as well\n while (div.childNodes.length > 0) {\n element.appendChild(div.childNodes[0]);\n }\n};\n\nexport var removeChildren = function (element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n};\n\nexport var prepend = function (element, originElement) {\n originElement.insertBefore(element, originElement.firstChild);\n};\n\nexport var wrapInner = function (parent, wrapper) {\n parent.appendChild(wrapper);\n\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n};\n\nexport var toHyphens = function (str) {\n var result = str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n\n return result;\n};\n\nexport var toPixels = function (value) {\n var result;\n\n if (value && String(value).endsWith(\"px\")) {\n result = value;\n } else {\n result = String(value) + \"px\";\n }\n\n return result;\n};\n\nexport var hasNativeScrolling = function (userAgent) {\n var ref = getSupportedFeatures(userAgent);\n var mobileOS = ref.mobileOS;\n return mobileOS.ios || mobileOS.android;\n};\n\nexport var setDefaultEvents = function (type, events) {\n var proto = type.prototype;\n\n if (proto.events) {\n events.forEach(function (event) {\n if (proto.events.indexOf(event) < 0) {\n proto.events.push(event);\n }\n });\n } else {\n proto.events = events;\n }\n};\n\nexport var wheelDeltaY = function (e) {\n var deltaY = e.wheelDeltaY;\n var delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n};\n\nexport var renderPos = function (pos) {\n var result = [];\n\n if (pos) {\n var parts = toHyphens(pos).split(\"-\");\n\n for (var i = 0; i < parts.length; i++) {\n result.push(\"k-pos-\" + parts[i]);\n }\n }\n\n return result.join(\" \");\n};\n\n/* eslint-enable arrow-body-style, no-useless-escape */\n","import {\n addClass,\n defined,\n Observable,\n valueOrDefault,\n deepExtend,\n setDefaultOptions\n} from '../common';\n\nimport {\n appendHtml,\n removeChildren\n} from './utils';\n\nexport var Attribution = (function (Observable) {\n function Attribution(element, options) {\n Observable.call(this);\n this.element = element;\n\n this._initOptions(options);\n this.items = [];\n\n addClass(this.element, 'k-widget k-attribution');\n }\n\n if ( Observable ) Attribution.__proto__ = Observable;\n Attribution.prototype = Object.create( Observable && Observable.prototype );\n Attribution.prototype.constructor = Attribution;\n\n Attribution.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Attribution.prototype.filter = function filter (extent, zoom) {\n this._extent = extent;\n this._zoom = zoom;\n this._render();\n };\n\n Attribution.prototype.add = function add (item) {\n var newItem = item;\n\n if (defined(item)) {\n if (typeof item === 'string') {\n newItem = {\n text: item\n };\n }\n\n this.items.push(newItem);\n this._render();\n }\n };\n\n Attribution.prototype.remove = function remove (text) {\n var this$1 = this;\n\n var result = [];\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this$1.items[i];\n\n if (item.text !== text) {\n result.push(item);\n }\n }\n\n this.items = result;\n this._render();\n };\n\n Attribution.prototype.clear = function clear () {\n this.items = [];\n removeChildren(this.element);\n };\n\n Attribution.prototype._render = function _render () {\n var this$1 = this;\n\n var result = [];\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this$1.items[i];\n var text = this$1._itemText(item);\n\n if (text !== '') {\n result.push(text);\n }\n }\n\n if (result.length > 0) {\n removeChildren(this.element);\n\n var html = result.join(this.options.separator);\n appendHtml(html, this.element);\n\n this.showElement();\n } else {\n this.hideElement();\n }\n };\n\n Attribution.prototype.hideElement = function hideElement () {\n this.element.style.display = \"none\";\n };\n\n Attribution.prototype.showElement = function showElement () {\n this.element.style.display = \"\";\n };\n\n Attribution.prototype._itemText = function _itemText (item) {\n var text = '';\n var inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n var inArea = this._inArea(item.extent);\n\n if (inZoomLevel && inArea) {\n text += item.text;\n }\n\n return text;\n };\n\n Attribution.prototype._inZoomLevel = function _inZoomLevel (min, max) {\n var result = true;\n var newMin = valueOrDefault(min, -Number.MAX_VALUE);\n var newMax = valueOrDefault(max, Number.MAX_VALUE);\n\n result = this._zoom > newMin && this._zoom < newMax;\n return result;\n };\n\n Attribution.prototype._inArea = function _inArea (area) {\n var result = true;\n\n if (area) {\n result = area.contains(this._extent);\n }\n\n return result;\n };\n\n return Attribution;\n}(Observable));\n\nsetDefaultOptions(Attribution, {\n name: 'Attribution',\n separator: ' | '\n});\n","import {\n deepExtend,\n addClass,\n Observable,\n keys,\n setDefaultOptions,\n renderIcon,\n on,\n off,\n} from '../common';\n\nimport {\n proxy,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nvar PAN = \"pan\";\n\nvar directionsMap = {\n up: {\n className: \"k-navigator-n\",\n iconClass: \"k-i-caret-alt-up\"\n },\n down: {\n className: \"k-navigator-s\",\n iconClass: \"k-i-caret-alt-down\"\n },\n right: {\n className: \"k-navigator-e\",\n iconClass: \"k-i-caret-alt-right\"\n },\n left: {\n className: \"k-navigator-w\",\n iconClass: \"k-i-caret-alt-left\"\n }\n};\n\nfunction createButton(direction, iconOptions) {\n var html =\n '';\n\n return convertToHtml(html);\n}\n\nexport var Navigator = (function (Observable) {\n function Navigator(element, options) {\n Observable.call(this);\n\n this.element = element;\n this._initOptions(options);\n\n var navigateUpButton = createButton(\"up\", options.icons);\n var navigateRightlButton = createButton(\"right\", options.icons);\n var navigateDownButton = createButton(\"down\", options.icons);\n var navigateLeftButton = createButton(\"left\", options.icons);\n\n this.element.appendChild(navigateUpButton);\n this.element.appendChild(navigateRightlButton);\n this.element.appendChild(navigateDownButton);\n this.element.appendChild(navigateLeftButton);\n\n addClass(this.element, 'k-widget k-navigator');\n\n on(this.element, \"click\", \".k-button\", proxy(this._click, this));\n\n var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n this._tabindex(this._keyroot);\n\n this._keydownHandler = proxy(this._keydown, this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n if ( Observable ) Navigator.__proto__ = Observable;\n Navigator.prototype = Object.create( Observable && Observable.prototype );\n Navigator.prototype.constructor = Navigator;\n\n Navigator.prototype.destroy = function destroy () {\n this.dispose();\n };\n\n // originates from the kendo.jquery version\n Navigator.prototype.dispose = function dispose () {\n off(this._keyroot, \"keydown\", this._keydownHandler);\n };\n\n Navigator.prototype._tabindex = function _tabindex (target) {\n var targetElement = target || this.wrapper || this.element;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n };\n\n Navigator.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Navigator.prototype._pan = function _pan (x, y) {\n var panStep = this.options.panStep;\n\n this.trigger(PAN, {\n x: x * panStep,\n y: y * panStep\n });\n };\n\n Navigator.prototype._click = function _click (e) {\n var x = 0;\n var y = 0;\n var button = e.currentTarget;\n\n if (button.matches('.k-navigator-n')) {\n y = 1;\n } else if (button.matches('.k-navigator-s')) {\n y = -1;\n } else if (button.matches('.k-navigator-e')) {\n x = 1;\n } else if (button.matches('.k-navigator-w')) {\n x = -1;\n }\n\n this._pan(x, y);\n\n e.preventDefault();\n };\n\n Navigator.prototype._keydown = function _keydown (e) {\n switch (e.which) {\n case keys.UP:\n this._pan(0, 1);\n e.preventDefault();\n break;\n case keys.DOWN:\n this._pan(0, -1);\n e.preventDefault();\n break;\n case keys.RIGHT:\n this._pan(1, 0);\n e.preventDefault();\n break;\n case keys.LEFT:\n this._pan(-1, 0);\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n\n return Navigator;\n}(Observable));\n\nsetDefaultOptions(Navigator, {\n name: 'Navigator',\n panStep: 1\n});\n\n\nsetDefaultEvents(Navigator, [\n PAN\n]);\n","import {\n deepExtend,\n addClass,\n Observable,\n keys,\n hasClasses,\n setDefaultOptions,\n renderIcon,\n on,\n off,\n} from '../common';\n\nimport {\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nfunction createButton(direction, icon, iconOptions) {\n var html =\n '';\n\n return convertToHtml(html);\n}\n\nvar PLUS = 187;\nvar MINUS = 189;\nvar FF_PLUS = 61;\nvar FF_MINUS = 173;\nvar CHANGE = \"change\";\n\nexport var ZoomControl = (function (Observable) {\n function ZoomControl(element, options, iconOptions) {\n Observable.call(this);\n this.element = element;\n this._initOptions(options);\n\n var zoomInButton = createButton('in', 'plus', iconOptions);\n var zoomOutButton = createButton('out', 'minus', iconOptions);\n\n this.element.appendChild(zoomInButton);\n this.element.appendChild(zoomOutButton);\n this.element.setAttribute(\"role\", \"group\");\n\n addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');\n\n this._clickHandler = this._click.bind(this);\n on(this.element, \"click\", \".k-button\", this._clickHandler);\n\n var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n\n this._tabindex(this._keyroot);\n\n this._keydownHandler = this._keydown.bind(this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n if ( Observable ) ZoomControl.__proto__ = Observable;\n ZoomControl.prototype = Object.create( Observable && Observable.prototype );\n ZoomControl.prototype.constructor = ZoomControl;\n\n ZoomControl.prototype.destroy = function destroy () {\n if (this.element) {\n off(this.element, \"click\", this._clickHandler);\n }\n\n if (this._keyroot) {\n off(this._keyroot, 'keydown', this._keydownHandler);\n }\n };\n\n ZoomControl.prototype._tabindex = function _tabindex (target) {\n var targetElement = target || this.wrapper || this.element;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n };\n\n ZoomControl.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n ZoomControl.prototype._change = function _change (direction) {\n var zoomStep = this.options.zoomStep;\n this.trigger(CHANGE, { delta: direction * zoomStep });\n };\n\n ZoomControl.prototype._click = function _click (e) {\n var button = e.currentTarget;\n var direction = 1;\n\n if (hasClasses(button, 'k-zoom-out')) {\n direction = -1;\n }\n\n this._change(direction);\n e.preventDefault();\n };\n\n ZoomControl.prototype._keydown = function _keydown (e) {\n switch (e.which) {\n case keys.NUMPAD_PLUS:\n case PLUS:\n case FF_PLUS:\n this._change(1);\n break;\n case keys.NUMPAD_MINUS:\n case MINUS:\n case FF_MINUS:\n this._change(-1);\n break;\n default:\n break;\n }\n };\n\n return ZoomControl;\n}(Observable));\n\nsetDefaultOptions(ZoomControl, {\n name: 'ZoomControl',\n zoomStep: 1\n});\n\nsetDefaultEvents(ZoomControl, [\n CHANGE\n]);\n","import {\n Class,\n valueOrDefault\n} from '../common';\n\nimport { Location } from './location';\n\nvar math = Math,\n max = math.max,\n min = math.min;\n\nexport var Extent = (function (Class) {\n function Extent(initialNw, initialSe) {\n Class.call(this);\n var nw = Location.create(initialNw);\n var se = Location.create(initialSe);\n\n if (nw.lng + 180 > se.lng + 180 && nw.lat + 90 < se.lat + 90) {\n this.se = nw;\n this.nw = se;\n } else {\n this.se = se;\n this.nw = nw;\n }\n }\n\n if ( Class ) Extent.__proto__ = Class;\n Extent.prototype = Object.create( Class && Class.prototype );\n Extent.prototype.constructor = Extent;\n\n var staticAccessors = { World: { configurable: true } };\n\n Extent.prototype.contains = function contains (loc) {\n var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n return loc &&\n lng + 180 >= nw.lng + 180 && lng + 180 <= se.lng + 180 &&\n lat + 90 >= se.lat + 90 && lat + 90 <= nw.lat + 90;\n };\n\n Extent.prototype.center = function center () {\n var nw = this.nw;\n var se = this.se;\n var lng = nw.lng + (se.lng - nw.lng) / 2;\n var lat = nw.lat + (se.lat - nw.lat) / 2;\n\n return new Location(lat, lng);\n };\n\n Extent.prototype.containsAny = function containsAny (locs) {\n var this$1 = this;\n\n var result = false;\n\n for (var i = 0; i < locs.length; i++) {\n result = result || this$1.contains(locs[i]);\n }\n\n return result;\n };\n\n Extent.prototype.include = function include (loc) {\n var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n nw.lng = min(nw.lng, lng);\n nw.lat = max(nw.lat, lat);\n se.lng = max(se.lng, lng);\n se.lat = min(se.lat, lat);\n };\n\n Extent.prototype.includeAll = function includeAll (locs) {\n var this$1 = this;\n\n for (var i = 0; i < locs.length; i++) {\n this$1.include(locs[i]);\n }\n };\n\n Extent.prototype.edges = function edges () {\n var nw = this.nw, se = this.se;\n\n return {\n nw: this.nw,\n ne: new Location(nw.lat, se.lng),\n se: this.se,\n sw: new Location(se.lat, nw.lng)\n };\n };\n\n Extent.prototype.toArray = function toArray () {\n var nw = this.nw, se = this.se;\n\n return [\n nw,\n new Location(nw.lat, se.lng),\n se,\n new Location(se.lat, nw.lng)\n ];\n };\n\n Extent.prototype.overlaps = function overlaps (extent) {\n return this.containsAny(extent.toArray()) ||\n extent.containsAny(this.toArray());\n };\n\n Extent.create = function create (a, b) {\n if (a instanceof Extent) {\n return a;\n } else if (a && b) {\n return new Extent(a, b);\n } else if (a && a.length === 4 && !b) {\n return new Extent([\n a[0],\n a[1]\n ], [\n a[2],\n a[3]\n ]);\n }\n };\n\n staticAccessors.World.get = function () {\n return new Extent([ 90, -180 ], [ -90, 180 ]);\n };\n\n Object.defineProperties( Extent, staticAccessors );\n\n return Extent;\n}(Class));\n","export var SHOW_TOOLTIP = 'showTooltip';\nexport var HIDE_TOOLTIP = 'hideTooltip';\nexport var CENTER_CHANGE = 'centerChange';\nexport var ZOOM_CHANGE = 'zoomChange';\nexport var INIT = 'init';\n","import { Class, deepExtend, setDefaultOptions } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nexport var Tooltip = (function (Class) {\n function Tooltip(widgetService, options) {\n Class.call(this);\n\n this.widgetService = widgetService;\n this.options = deepExtend({}, this.options, options);\n this.offset = { x: 0, y: 0 };\n }\n\n if ( Class ) Tooltip.__proto__ = Class;\n Tooltip.prototype = Object.create( Class && Class.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n var prototypeAccessors = { anchor: { configurable: true } };\n\n Tooltip.prototype.show = function show (anchor, args) {\n if (this.location === args.location) {\n return;\n }\n\n this.anchor = anchor;\n this.location = args.location;\n\n this.widgetService.notify(SHOW_TOOLTIP,\n Object.assign({ anchor: this.anchor }, args)\n );\n\n this.visible = true;\n };\n\n Tooltip.prototype.hide = function hide () {\n if (this.widgetService) {\n this.widgetService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n this.location = null;\n };\n\n prototypeAccessors.anchor.get = function () {\n return this._anchor;\n };\n\n prototypeAccessors.anchor.set = function (anchor) {\n var documentPoint = this.widgetService.widget._toDocumentCoordinates({\n x: anchor.left - this.offset.x,\n y: anchor.top - this.offset.y\n });\n\n this._anchor = {\n left: documentPoint.left,\n top: documentPoint.top\n };\n };\n\n Tooltip.prototype.destroy = function destroy () {\n this.widgetService = null;\n };\n\n Object.defineProperties( Tooltip.prototype, prototypeAccessors );\n\n return Tooltip;\n}(Class));\n\nsetDefaultOptions(Tooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n","import {\n Class,\n addClass,\n deepExtend,\n defined,\n getSupportedFeatures\n} from '../../common';\n\nimport {\n Extent\n} from './../extent';\n\nexport var Layer = (function (Class) {\n function Layer(map, options) {\n Class.call(this);\n\n this.support = getSupportedFeatures();\n\n this._initOptions(options);\n this.map = map;\n\n var element = document.createElement(\"div\");\n addClass(element, \"k-layer\");\n element.style.zIndex = this.options.zIndex;\n element.style.opacity = this.options.opacity;\n\n this.element = element;\n\n map.scrollElement.appendChild(this.element);\n\n this._beforeReset = this._beforeReset.bind(this);\n this._reset = this._reset.bind(this);\n this._resize = this._resize.bind(this);\n this._panEnd = this._panEnd.bind(this);\n\n this._activate();\n this._updateAttribution();\n }\n\n if ( Class ) Layer.__proto__ = Class;\n Layer.prototype = Object.create( Class && Class.prototype );\n Layer.prototype.constructor = Layer;\n\n Layer.prototype.destroy = function destroy () {\n this._deactivate();\n };\n\n Layer.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Layer.prototype.show = function show () {\n this.reset();\n this._activate();\n this._applyExtent(true);\n };\n\n Layer.prototype.hide = function hide () {\n this._deactivate();\n this._setVisibility(false);\n };\n\n Layer.prototype.reset = function reset () {\n this._beforeReset();\n this._reset();\n };\n\n Layer.prototype._reset = function _reset () {\n this._applyExtent();\n };\n\n Layer.prototype._beforeReset = function _beforeReset () {\n\n };\n\n Layer.prototype._resize = function _resize () {\n\n };\n\n Layer.prototype._panEnd = function _panEnd () {\n this._applyExtent();\n };\n\n Layer.prototype._applyExtent = function _applyExtent () {\n var options = this.options;\n var zoom = this.map.zoom();\n var matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n var matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n var extent = Extent.create(options.extent);\n var inside = !extent || extent.overlaps(this.map.extent());\n\n this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n };\n\n Layer.prototype._setVisibility = function _setVisibility (visible) {\n this.element.style.display = visible ? '' : 'none';\n };\n\n Layer.prototype._activate = function _activate () {\n var map = this.map;\n\n this._deactivate();\n\n map.bind('beforeReset', this._beforeReset);\n map.bind('reset', this._reset);\n map.bind('resize', this._resize);\n map.bind('panEnd', this._panEnd);\n };\n\n Layer.prototype._deactivate = function _deactivate () {\n var map = this.map;\n\n map.unbind('beforeReset', this._beforeReset);\n map.unbind('reset', this._reset);\n map.unbind('resize', this._resize);\n map.unbind('panEnd', this._panEnd);\n };\n\n Layer.prototype._updateAttribution = function _updateAttribution () {\n var attribution = this.map.attribution;\n\n if (attribution) {\n attribution.add(this.options.attribution);\n }\n };\n\n Layer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n Layer.prototype._hasData = function _hasData () {\n return this._data && this._data.length > 0;\n };\n\n Layer.prototype._layerIndex = function _layerIndex () {\n var layers = this.map.layers || [];\n return layers.indexOf(this);\n };\n\n return Layer;\n}(Class));\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n deepExtend,\n round,\n limitValue,\n hashKey,\n setDefaultOptions,\n isFunction\n} from '../../common';\n\nimport { removeChildren } from '../utils';\n\nimport { Layer } from './layer';\n\nimport TemplateService from '../../services/template-service';\n\nvar math = Math,\n Point = g.Point;\n\nfunction compileTemplate(template) {\n if (isFunction(template)) {\n return template;\n }\n\n return TemplateService.compile(template);\n}\n\nfunction roundPoint(point) {\n return new Point(round(point.x), round(point.y));\n}\n\nfunction renderSize(size) {\n var newSize = size;\n\n if (typeof(size) !== \"string\") {\n newSize += \"px\";\n }\n\n return newSize;\n}\n\nexport var TileLayer = (function (Layer) {\n function TileLayer(map, options) {\n Layer.call(this, map, options);\n\n if (typeof this.options.subdomains === 'string') {\n this.options.subdomains = this.options.subdomains.split('');\n }\n\n var viewType = this._viewType();\n this._view = new viewType(this.element, this.options);\n }\n\n if ( Layer ) TileLayer.__proto__ = Layer;\n TileLayer.prototype = Object.create( Layer && Layer.prototype );\n TileLayer.prototype.constructor = TileLayer;\n\n TileLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n this._view.destroy();\n this._view = null;\n };\n\n TileLayer.prototype._beforeReset = function _beforeReset () {\n var map = this.map;\n var origin = map.locationToLayer(map.extent().nw).round();\n this._view.viewOrigin(origin);\n };\n\n TileLayer.prototype._reset = function _reset () {\n Layer.prototype._reset.call(this);\n this._updateView();\n this._view.reset();\n };\n\n TileLayer.prototype._viewType = function _viewType () {\n return TileView;\n };\n\n TileLayer.prototype._activate = function _activate () {\n Layer.prototype._activate.call(this);\n\n if (!this.support.mobileOS) {\n if (!this._pan) {\n this._pan = throttle(this._render.bind(this), 100);\n }\n\n this.map.bind('pan', this._pan);\n }\n };\n\n TileLayer.prototype._deactivate = function _deactivate () {\n Layer.prototype._deactivate.call(this);\n\n if (this._pan) {\n this.map.unbind('pan', this._pan);\n }\n };\n\n TileLayer.prototype._updateView = function _updateView () {\n var view = this._view,\n map = this.map,\n extent = map.extent(),\n extentToPoint = {\n nw: map.locationToLayer(extent.nw).round(),\n se: map.locationToLayer(extent.se).round()\n };\n\n view.center(map.locationToLayer(map.center()));\n view.extent(extentToPoint);\n view.zoom(map.zoom());\n };\n\n TileLayer.prototype._resize = function _resize () {\n this._render();\n };\n\n TileLayer.prototype._panEnd = function _panEnd (e) {\n Layer.prototype._panEnd.call(this, e);\n this._render();\n };\n\n TileLayer.prototype._render = function _render () {\n this._updateView();\n this._view.render();\n };\n\n return TileLayer;\n}(Layer));\n\nsetDefaultOptions(TileLayer, {\n tileSize: 256,\n subdomains: ['a', 'b', 'c'],\n urlTemplate: '',\n zIndex: 1\n});\n\nexport var TileView = (function (Class) {\n function TileView(element, options) {\n Class.call(this);\n this.element = element;\n this._initOptions(options);\n this.pool = new TilePool();\n }\n\n if ( Class ) TileView.__proto__ = Class;\n TileView.prototype = Object.create( Class && Class.prototype );\n TileView.prototype.constructor = TileView;\n\n TileView.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n TileView.prototype.center = function center (center$1) {\n this._center = center$1;\n };\n\n TileView.prototype.extent = function extent (extent$1) {\n this._extent = extent$1;\n };\n\n TileView.prototype.viewOrigin = function viewOrigin (origin) {\n this._viewOrigin = origin;\n };\n\n TileView.prototype.zoom = function zoom (zoom$1) {\n this._zoom = zoom$1;\n };\n\n TileView.prototype.pointToTileIndex = function pointToTileIndex (point) {\n return new Point(math.floor(point.x / this.options.tileSize), math.floor(point.y / this.options.tileSize));\n };\n\n TileView.prototype.tileCount = function tileCount () {\n var size = this.size(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n nw = this._extent.nw,\n point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n return {\n x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n };\n };\n\n TileView.prototype.size = function size () {\n var nw = this._extent.nw,\n se = this._extent.se,\n diff = se.clone().translate(-nw.x, -nw.y);\n\n return {\n width: diff.x,\n height: diff.y\n };\n };\n\n TileView.prototype.indexToPoint = function indexToPoint (index) {\n var x = index.x,\n y = index.y;\n\n return new Point(x * this.options.tileSize, y * this.options.tileSize);\n };\n\n TileView.prototype.subdomainText = function subdomainText () {\n var subdomains = this.options.subdomains;\n return subdomains[this.subdomainIndex++ % subdomains.length];\n };\n\n TileView.prototype.destroy = function destroy () {\n removeChildren(this.element);\n this.pool.empty();\n };\n\n TileView.prototype.reset = function reset () {\n this.pool.reset();\n this.subdomainIndex = 0;\n this.render();\n };\n\n TileView.prototype.render = function render () {\n var this$1 = this;\n\n var size = this.tileCount(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n tile, x, y;\n\n for (x = 0; x < size.x; x++) {\n for (y = 0; y < size.y; y++) {\n tile = this$1.createTile({\n x: firstTileIndex.x + x,\n y: firstTileIndex.y + y\n });\n\n if (!tile.visible) {\n tile.show();\n }\n }\n }\n };\n\n TileView.prototype.createTile = function createTile (currentIndex) {\n var options = this.tileOptions(currentIndex);\n var tile = this.pool.get(this._center, options);\n\n if (!tile.element.parentNode) {\n this.element.append(tile.element);\n }\n\n return tile;\n };\n\n TileView.prototype.tileOptions = function tileOptions (currentIndex) {\n var index = this.wrapIndex(currentIndex),\n point = this.indexToPoint(currentIndex),\n origin = this._viewOrigin,\n offset = point.clone().translate(-origin.x, -origin.y);\n\n return {\n index: index,\n currentIndex: currentIndex,\n point: point,\n offset: roundPoint(offset),\n zoom: this._zoom,\n size: this.options.tileSize,\n subdomain: this.subdomainText(),\n urlTemplate: this.options.urlTemplate,\n errorUrlTemplate: this.options.errorUrlTemplate\n };\n };\n\n TileView.prototype.wrapIndex = function wrapIndex (index) {\n var boundary = math.pow(2, this._zoom);\n\n return {\n x: this.wrapValue(index.x, boundary),\n y: limitValue(index.y, 0, boundary - 1)\n };\n };\n\n TileView.prototype.wrapValue = function wrapValue (value, boundary) {\n var remainder = math.abs(value) % boundary;\n var wrappedValue = value;\n\n if (value >= 0) {\n wrappedValue = remainder;\n } else {\n wrappedValue = boundary - (remainder === 0 ? boundary : remainder);\n }\n\n return wrappedValue;\n };\n\n return TileView;\n}(Class));\n\nexport var ImageTile = (function (Class) {\n function ImageTile(id, options) {\n Class.call(this);\n this.id = id;\n this.visible = true;\n this._initOptions(options);\n this.createElement();\n this.show();\n }\n\n if ( Class ) ImageTile.__proto__ = Class;\n ImageTile.prototype = Object.create( Class && Class.prototype );\n ImageTile.prototype.constructor = ImageTile;\n\n ImageTile.prototype.destroy = function destroy () {\n var element = this.element;\n var parentNode = element ? element.parentNode : null;\n\n if (element) {\n if (parentNode) {\n parentNode.removeChild(element);\n }\n\n this.element = null;\n }\n };\n\n ImageTile.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n ImageTile.prototype.createElement = function createElement () {\n var el = document.createElement(\"img\");\n var size = this.options.size + \"px\";\n el.setAttribute(\"alt\", \"\");\n el.style.position = \"absolute\";\n el.style.display = \"block\";\n el.style.width = el.style.maxWidth = size;\n el.style.height = el.style.maxHeight = size;\n\n this.element = el;\n\n // todo\n // add on error handler\n\n // this.element =\n // $('\\'\\'')\n // .css({\n // width: this.options.size,\n // height: this.options.size\n // })\n // .on('error', proxy(function(e) {\n // if (this.errorUrl()) {\n // e.target.setAttribute('src', this.errorUrl());\n // } else {\n // e.target.removeAttribute('src');\n // }\n // }, this));\n };\n\n ImageTile.prototype.show = function show () {\n var element = this.element;\n element.style.top = renderSize(this.options.offset.y);\n element.style.left = renderSize(this.options.offset.x);\n\n var url = this.url();\n\n if (url) {\n element.setAttribute('src', url);\n }\n\n element.style.visibility = 'visible';\n this.visible = true;\n };\n\n ImageTile.prototype.hide = function hide () {\n this.element.style.visibility = 'hidden';\n this.visible = false;\n };\n\n ImageTile.prototype.url = function url () {\n var urlResult = compileTemplate(this.options.urlTemplate);\n return urlResult(this.urlOptions());\n };\n\n ImageTile.prototype.errorUrl = function errorUrl () {\n var urlResult = compileTemplate(this.options.errorUrlTemplate);\n return urlResult(this.urlOptions());\n };\n\n ImageTile.prototype.urlOptions = function urlOptions () {\n var options = this.options;\n\n return {\n zoom: options.zoom,\n subdomain: options.subdomain,\n z: options.zoom,\n x: options.index.x,\n y: options.index.y,\n s: options.subdomain,\n quadkey: options.quadkey,\n q: options.quadkey,\n culture: options.culture,\n c: options.culture\n };\n };\n\n return ImageTile;\n}(Class));\n\nsetDefaultOptions(ImageTile, {\n urlTemplate: '',\n errorUrlTemplate: ''\n});\n\nexport var TilePool = (function (Class) {\n function TilePool() {\n Class.call(this);\n this._items = [];\n }\n\n if ( Class ) TilePool.__proto__ = Class;\n TilePool.prototype = Object.create( Class && Class.prototype );\n TilePool.prototype.constructor = TilePool;\n\n TilePool.prototype.get = function get (center, options) {\n if (this._items.length >= this.options.maxSize) {\n this._remove(center);\n }\n\n return this._create(options);\n };\n\n TilePool.prototype.empty = function empty () {\n var items = this._items;\n\n for (var i = 0; i < items.length; i++) {\n items[i].destroy();\n }\n\n this._items = [];\n };\n\n TilePool.prototype.reset = function reset () {\n var items = this._items;\n\n for (var i = 0; i < items.length; i++) {\n items[i].hide();\n }\n };\n\n TilePool.prototype._create = function _create (options) {\n var items = this._items;\n var tile;\n var id = hashKey(options.point.toString() + options.offset.toString() + options.zoom + options.urlTemplate);\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === id) {\n tile = items[i];\n break;\n }\n }\n\n if (tile) {\n tile.show();\n } else {\n tile = new ImageTile(id, options);\n this._items.push(tile);\n }\n\n return tile;\n };\n\n TilePool.prototype._remove = function _remove (center) {\n var items = this._items;\n var maxDist = -1;\n var index = -1;\n\n for (var i = 0; i < items.length; i++) {\n var dist = items[i].options.point.distanceTo(center);\n\n if (dist > maxDist && !items[i].visible) {\n index = i;\n maxDist = dist;\n }\n }\n\n if (index !== -1) {\n items[index].destroy();\n items.splice(index, 1);\n }\n };\n\n return TilePool;\n}(Class));\n\nsetDefaultOptions(TilePool, {\n maxSize: 100\n});\n","import {\n Class,\n Observable,\n elementOffset,\n eventMap\n} from '../../common';\n\nimport {\n proxy\n} from '../utils';\n\nvar extend = Object.assign;\n\nvar CHANGE = 'change';\n\nexport var TapCapture = (function (Observable) {\n function TapCapture(element, options) {\n Observable.call(this);\n var that = this,\n domElement = element[0] || element;\n\n that.capture = false;\n\n if (domElement.addEventListener) {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._press, that), true);\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._release, that), true);\n });\n } else {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._press, that));\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._release, that));\n });\n }\n\n that.bind([\n 'press',\n 'release'\n ], options || {});\n }\n\n if ( Observable ) TapCapture.__proto__ = Observable;\n TapCapture.prototype = Object.create( Observable && Observable.prototype );\n TapCapture.prototype.constructor = TapCapture;\n\n TapCapture.prototype.captureNext = function captureNext () {\n this.capture = true;\n };\n\n TapCapture.prototype.cancelCapture = function cancelCapture () {\n this.capture = false;\n };\n\n TapCapture.prototype._press = function _press (e) {\n var that = this;\n\n that.trigger('press');\n\n if (that.capture) {\n e.preventDefault();\n }\n };\n\n TapCapture.prototype._release = function _release (e) {\n var that = this;\n\n that.trigger('release');\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n };\n\n return TapCapture;\n}(Observable));\n\nexport var PaneDimension = (function (Observable) {\n function PaneDimension(options) {\n Observable.call(this);\n var that = this;\n that.forcedEnabled = false;\n extend(that, options);\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n }\n\n if ( Observable ) PaneDimension.__proto__ = Observable;\n PaneDimension.prototype = Object.create( Observable && Observable.prototype );\n PaneDimension.prototype.constructor = PaneDimension;\n\n PaneDimension.prototype.makeVirtual = function makeVirtual () {\n extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n };\n\n PaneDimension.prototype.virtualSize = function virtualSize (min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n };\n\n PaneDimension.prototype.outOfBounds = function outOfBounds (offset) {\n return offset > this.max || offset < this.min;\n };\n\n PaneDimension.prototype.forceEnabled = function forceEnabled () {\n this.forcedEnabled = true;\n };\n\n PaneDimension.prototype.getSize = function getSize () {\n return this.container[this.measure];\n };\n\n PaneDimension.prototype.getTotal = function getTotal () {\n return this.element[this.scrollSize];\n };\n\n PaneDimension.prototype.rescale = function rescale (scale) {\n this.scale = scale;\n };\n\n PaneDimension.prototype.update = function update (silent) {\n var that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n };\n\n return PaneDimension;\n}(Observable));\n\nexport var PaneDimensions = (function (Observable) {\n function PaneDimensions(options) {\n Observable.call(this);\n var that = this;\n\n that.x = new PaneDimension(extend({\n horizontal: true\n }, options));\n\n that.y = new PaneDimension(extend({\n horizontal: false\n }, options));\n\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n }\n\n if ( Observable ) PaneDimensions.__proto__ = Observable;\n PaneDimensions.prototype = Object.create( Observable && Observable.prototype );\n PaneDimensions.prototype.constructor = PaneDimensions;\n\n PaneDimensions.prototype.rescale = function rescale (newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n };\n\n PaneDimensions.prototype.centerCoordinates = function centerCoordinates () {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n };\n\n PaneDimensions.prototype.refresh = function refresh () {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n };\n\n return PaneDimensions;\n}(Observable));\n\nexport var PaneAxis = (function (Observable) {\n function PaneAxis(options) {\n Observable.call(this);\n extend(this, options);\n }\n\n if ( Observable ) PaneAxis.__proto__ = Observable;\n PaneAxis.prototype = Object.create( Observable && Observable.prototype );\n PaneAxis.prototype.constructor = PaneAxis;\n\n PaneAxis.prototype.outOfBounds = function outOfBounds () {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n };\n\n PaneAxis.prototype.dragMove = function dragMove (delta) {\n var that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n var dragDelta = delta;\n\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n dragDelta *= that.resistance;\n }\n\n movable.translateAxis(axis, dragDelta);\n that.trigger(CHANGE, that);\n };\n\n return PaneAxis;\n}(Observable));\n\nexport var Pane = (function (Class) {\n function Pane(options) {\n Class.call(this);\n\n var that = this,\n x, y,\n resistance,\n movable;\n\n extend(that, {\n elastic: true\n }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart: function gesturestart(e) {\n that.gesture = e;\n\n that.offset = elementOffset(that.dimensions.container);\n },\n press: function press(e) {\n var closestAnchor = e.event.target.closest('a');\n\n if (closestAnchor && closestAnchor.matches('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange: function gesturechange(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n center = e.center,\n scaleDelta = e.distance / previousGesture.distance,\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n\n e.preventDefault();\n },\n move: function move(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end: function end(e) {\n e.preventDefault();\n }\n });\n }\n\n if ( Class ) Pane.__proto__ = Class;\n Pane.prototype = Object.create( Class && Class.prototype );\n Pane.prototype.constructor = Pane;\n\n return Pane;\n}(Class));\n\nvar translate = function(x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n};\n\nexport var Movable = (function (Observable) {\n function Movable(element) {\n Observable.call(this);\n\n var that = this;\n\n that.element = element;\n that.element.style.transformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n\n var coordinates = translate(that.x, that.y, that.scale);\n that.element.style.transform = coordinates;\n\n that._saveCoordinates(coordinates);\n }\n\n if ( Observable ) Movable.__proto__ = Observable;\n Movable.prototype = Object.create( Observable && Observable.prototype );\n Movable.prototype.constructor = Movable;\n\n Movable.prototype.translateAxis = function translateAxis (axis, by) {\n this[axis] += by;\n this.refresh();\n };\n\n Movable.prototype.scaleTo = function scaleTo (scale) {\n this.scale = scale;\n this.refresh();\n };\n\n Movable.prototype.scaleWith = function scaleWith (scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n };\n\n Movable.prototype.translate = function translate (coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n };\n\n Movable.prototype.moveAxis = function moveAxis (axis, value) {\n this[axis] = value;\n this.refresh();\n };\n\n Movable.prototype.moveTo = function moveTo (coordinates) {\n extend(this, coordinates);\n this.refresh();\n };\n\n Movable.prototype.refresh = function refresh () {\n var that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates !== that.coordinates) {\n that.element.style.transform = newCoordinates;\n\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n };\n\n Movable.prototype._saveCoordinates = function _saveCoordinates (coordinates) {\n this.coordinates = coordinates;\n };\n\n return Movable;\n}(Observable));\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n last,\n setDefaultOptions\n} from '../../common';\n\nimport {\n proxy\n} from '../utils';\n\nimport {\n Layer\n} from './layer';\n\nimport {\n Movable\n} from '../scroller/draggable';\n\nimport {\n Location\n} from '../location';\n\nvar Group = d.Group;\n\nexport var ShapeLayer = (function (Layer) {\n function ShapeLayer(map, options) {\n Layer.call(this, map, options);\n\n this._pan = proxy(this._pan, this);\n\n this.surface = d.Surface.create(this.element, {\n width: map.scrollElement.clientWidth,\n height: map.scrollElement.clientHeight\n });\n\n this._initRoot();\n this.movable = new Movable(this.surface.element);\n this._markers = [];\n\n this._click = this._handler('shapeClick');\n this.surface.bind('click', this._click);\n this._mouseleave = this._handler('shapeMouseLeave');\n this.surface.bind('mouseleave', this._mouseleave);\n this.surface.bind('mouseenter', this._mouseenter.bind(this));\n }\n\n if ( Layer ) ShapeLayer.__proto__ = Layer;\n ShapeLayer.prototype = Object.create( Layer && Layer.prototype );\n ShapeLayer.prototype.constructor = ShapeLayer;\n\n ShapeLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n\n this.surface.destroy();\n };\n\n ShapeLayer.prototype._reset = function _reset () {\n Layer.prototype._reset.call(this);\n\n this._translateSurface();\n\n this._data = this._readData();\n\n if (this._hasData()) {\n this._load(this._data);\n }\n };\n\n ShapeLayer.prototype._initRoot = function _initRoot () {\n this._root = new Group();\n this.surface.draw(this._root);\n };\n\n ShapeLayer.prototype._beforeReset = function _beforeReset () {\n this.surface.clear();\n this._initRoot();\n };\n\n ShapeLayer.prototype._resize = function _resize () {\n this.surface.size(this.map.size());\n };\n\n ShapeLayer.prototype._readData = function _readData () {\n var data = Layer.prototype._readData.call(this);\n\n if (data.type === \"FeatureCollection\") {\n return data.features;\n }\n\n if (data.type === \"GeometryCollection\") {\n return data.geometries;\n }\n\n return data;\n };\n\n ShapeLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this._clearMarkers();\n\n if (!this._loader) {\n this._loader = new GeoJsonLoader(this.map, this.options.style, this);\n }\n\n var container = new Group();\n\n for (var i = 0; i < data.length; i++) {\n var shape = this$1._loader.parse(data[i]);\n\n if (shape) {\n container.append(shape);\n }\n }\n\n this._root.clear();\n this._root.append(container);\n };\n\n ShapeLayer.prototype.shapeCreated = function shapeCreated (shape) {\n var cancelled = false;\n\n // the GeoJSON loader builds \"Point\" type as a circle\n // use the circle shape type as and indicator for rendering a marker\n // keep the behavior under a setting as this is supported by kendo jQuery Map\n // but we opted out of this in blazor\n if (shape instanceof d.Circle && this.map.options.renderPointsAsMarkers) {\n cancelled = defined(this._createMarker(shape));\n }\n\n if (!cancelled) {\n var args = {\n layer: this,\n shape: shape\n };\n\n cancelled = this.map.trigger('shapeCreated', args);\n }\n\n return cancelled;\n };\n\n ShapeLayer.prototype.featureCreated = function featureCreated (e) {\n e.layer = this;\n this.map.trigger('shapeFeatureCreated', e);\n };\n\n ShapeLayer.prototype._createMarker = function _createMarker (shape) {\n var marker = this.map.markers.bind({\n location: shape.location\n }, shape.dataItem);\n\n if (marker) {\n this._markers.push(marker);\n }\n\n return marker;\n };\n\n ShapeLayer.prototype._clearMarkers = function _clearMarkers () {\n var this$1 = this;\n\n for (var i = 0; i < this._markers.length; i++) {\n this$1.map.markers.remove(this$1._markers[i]);\n }\n\n this._markers = [];\n };\n\n ShapeLayer.prototype._pan = function _pan () {\n if (!this._panning) {\n this._panning = true;\n this.surface.suspendTracking();\n }\n };\n\n ShapeLayer.prototype._panEnd = function _panEnd (e) {\n Layer.prototype._panEnd.call(this, e);\n this._translateSurface();\n this.surface.resumeTracking();\n this._panning = false;\n };\n\n ShapeLayer.prototype._translateSurface = function _translateSurface () {\n var map = this.map;\n var nw = map.locationToView(map.extent().nw);\n\n if (this.surface.translate) {\n this.surface.translate(nw);\n this.movable.moveTo({\n x: nw.x,\n y: nw.y\n });\n }\n };\n\n ShapeLayer.prototype._eventArgs = function _eventArgs (e) {\n return {\n layer: this,\n layerIndex: this._layerIndex(),\n shape: e.element,\n shapeIndex: (this._data || []).indexOf(e.element.dataItem),\n originalEvent: e.originalEvent\n };\n };\n\n ShapeLayer.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n if (e.element) {\n this$1.map.trigger(eventName, this$1._eventArgs(e));\n }\n };\n };\n\n ShapeLayer.prototype._mouseenter = function _mouseenter (e) {\n if (!e.element) {\n return;\n }\n\n this.map.trigger('shapeMouseEnter', this._eventArgs(e));\n\n var shape = e.element;\n var anchor = this._tooltipAnchor(e);\n this.map._tooltip.show(anchor, this._tooltipContext(shape));\n };\n\n ShapeLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n return {\n type: 'shape',\n layerIndex: this._layerIndex(),\n className: 'k-map-shape-tooltip',\n dataItem: shape.dataItem,\n location: shape.location\n };\n };\n\n ShapeLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n var cursor = this.map.eventOffset(e.originalEvent);\n return {\n top: cursor.y,\n left: cursor.x\n };\n };\n\n ShapeLayer.prototype._activate = function _activate () {\n Layer.prototype._activate.call(this);\n this._panHandler = proxy(this._pan, this);\n this.map.bind('pan', this.panHandler);\n };\n\n ShapeLayer.prototype._deactivate = function _deactivate () {\n Layer.prototype._deactivate.call(this);\n this.map.unbind('pan', this._panHandler);\n };\n\n return ShapeLayer;\n}(Layer));\n\nsetDefaultOptions(ShapeLayer, {\n autoBind: true,\n zIndex: 100\n});\n\nvar GeoJsonLoader = (function (Class) {\n function GeoJsonLoader(locator, defaultStyle, observer) {\n Class.call(this);\n this.observer = observer;\n this.locator = locator;\n this.style = defaultStyle;\n }\n\n if ( Class ) GeoJsonLoader.__proto__ = Class;\n GeoJsonLoader.prototype = Object.create( Class && Class.prototype );\n GeoJsonLoader.prototype.constructor = GeoJsonLoader;\n\n GeoJsonLoader.prototype.parse = function parse (item) {\n var root = new Group();\n var unwrap = true;\n\n if (item.type === 'Feature') {\n unwrap = false;\n this._loadGeometryTo(root, item.geometry, item);\n this._featureCreated(root, item);\n } else {\n this._loadGeometryTo(root, item, item);\n }\n\n if (unwrap && root.children.length < 2) {\n root = root.children[0];\n }\n\n return root;\n };\n\n GeoJsonLoader.prototype._shapeCreated = function _shapeCreated (shape) {\n var cancelled = false;\n\n if (this.observer && this.observer.shapeCreated) {\n cancelled = this.observer.shapeCreated(shape);\n }\n\n return cancelled;\n };\n\n GeoJsonLoader.prototype._featureCreated = function _featureCreated (group, dataItem) {\n if (this.observer && this.observer.featureCreated) {\n this.observer.featureCreated({\n group: group,\n dataItem: dataItem,\n properties: dataItem.properties\n });\n }\n };\n\n GeoJsonLoader.prototype._loadGeometryTo = function _loadGeometryTo (container, geometry, dataItem) {\n var this$1 = this;\n\n var coords = geometry.coordinates;\n var i;\n var path;\n\n switch (geometry.type) {\n case 'LineString':\n path = this._loadPolygon(container, [coords], dataItem);\n this._setLineFill(path);\n break;\n case 'MultiLineString':\n for (i = 0; i < coords.length; i++) {\n path = this$1._loadPolygon(container, [coords[i]], dataItem);\n this$1._setLineFill(path);\n }\n break;\n case 'Polygon':\n this._loadPolygon(container, coords, dataItem);\n break;\n case 'MultiPolygon':\n for (i = 0; i < coords.length; i++) {\n this$1._loadPolygon(container, coords[i], dataItem);\n }\n break;\n case 'Point':\n this._loadPoint(container, coords, dataItem);\n break;\n case 'MultiPoint':\n for (i = 0; i < coords.length; i++) {\n this$1._loadPoint(container, coords[i], dataItem);\n }\n break;\n default:\n break;\n }\n };\n\n GeoJsonLoader.prototype._setLineFill = function _setLineFill (path) {\n var segments = path.segments;\n\n if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n path.options.fill = null;\n }\n };\n\n GeoJsonLoader.prototype._loadShape = function _loadShape (container, shape) {\n if (!this._shapeCreated(shape)) {\n container.append(shape);\n }\n\n return shape;\n };\n\n GeoJsonLoader.prototype._loadPolygon = function _loadPolygon (container, rings, dataItem) {\n var shape = this._buildPolygon(rings);\n shape.dataItem = dataItem;\n shape.location = this.locator.viewToLocation(shape.bbox().center());\n return this._loadShape(container, shape);\n };\n\n GeoJsonLoader.prototype._buildPolygon = function _buildPolygon (rings) {\n var this$1 = this;\n\n var type = rings.length > 1 ? d.MultiPath : d.Path;\n var path = new type(this.style);\n\n for (var i = 0; i < rings.length; i++) {\n for (var j = 0; j < rings[i].length; j++) {\n var point = this$1.locator.locationToView(Location.fromLngLat(rings[i][j]));\n if (j === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n }\n }\n\n return path;\n };\n\n GeoJsonLoader.prototype._loadPoint = function _loadPoint (container, coords, dataItem) {\n var location = Location.fromLngLat(coords);\n var point = this.locator.locationToView(location);\n var circle = new g.Circle(point, 10);\n var shape = new d.Circle(circle, this.style);\n\n shape.dataItem = dataItem;\n shape.location = location;\n\n return this._loadShape(container, shape);\n };\n\n return GeoJsonLoader;\n}(Class));\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n isFunction,\n getter,\n setDefaultOptions\n} from '../../common';\n\nimport {\n ShapeLayer\n} from './shape';\n\nimport {\n Location\n} from '../location';\n\nexport var BubbleLayer = (function (ShapeLayer) {\n function BubbleLayer () {\n ShapeLayer.apply(this, arguments);\n }\n\n if ( ShapeLayer ) BubbleLayer.__proto__ = ShapeLayer;\n BubbleLayer.prototype = Object.create( ShapeLayer && ShapeLayer.prototype );\n BubbleLayer.prototype.constructor = BubbleLayer;\n\n BubbleLayer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n BubbleLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this.surface.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var options = this.options;\n var getValue = getter(options.valueField);\n\n var newData = data.slice(0);\n newData.sort(function(a, b) {\n return getValue(b) - getValue(a);\n });\n\n var scaleType = this._scaleType();\n var scale;\n var getLocation = getter(this.options.locationField);\n\n for (var i = 0; i < newData.length; i++) {\n var dataItem = newData[i];\n var location = getLocation(dataItem);\n var value = getValue(dataItem);\n\n if (defined(location) && defined(value)) {\n if (!scale) {\n scale = new scaleType([\n 0,\n value\n ], [\n options.minSize,\n options.maxSize\n ]);\n }\n\n location = Location.create(location);\n\n var center = this$1.map.locationToView(location);\n var size = scale.map(value);\n var symbol = this$1._createSymbol({\n center: center,\n size: size,\n style: options.style,\n dataItem: dataItem,\n location: location\n });\n\n symbol.dataItem = dataItem;\n symbol.location = location;\n symbol.value = value;\n\n this$1._drawSymbol(symbol);\n }\n }\n };\n\n BubbleLayer.prototype._scaleType = function _scaleType () {\n var scale = this.options.scale;\n\n if (isFunction(scale)) {\n return scale;\n }\n\n return Scales[scale];\n };\n\n BubbleLayer.prototype._createSymbol = function _createSymbol (args) {\n var symbol = this.options.symbol;\n\n if (!isFunction(symbol)) {\n symbol = Symbols[symbol];\n }\n\n return symbol(args);\n };\n\n BubbleLayer.prototype._drawSymbol = function _drawSymbol (shape) {\n var args = {\n layer: this,\n shape: shape\n };\n\n var cancelled = this.map.trigger('shapeCreated', args);\n\n if (!cancelled) {\n this.surface.draw(shape);\n }\n };\n\n BubbleLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n return {\n type: 'bubble',\n layerIndex: this._layerIndex(),\n className: 'k-map-bubble-tooltip',\n dataItem: shape.dataItem,\n location: shape.location,\n value: shape.value\n };\n };\n\n BubbleLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n var shape = e.element;\n var center = shape.bbox().center();\n\n return {\n top: center.y,\n left: center.x\n };\n };\n\n return BubbleLayer;\n}(ShapeLayer));\n\nsetDefaultOptions(BubbleLayer, {\n // autoBind: true,\n locationField: 'location',\n valueField: 'value',\n minSize: 0,\n maxSize: 100,\n scale: 'sqrt',\n symbol: 'circle',\n // ensure bubble layers are displayed over tile and shape layers\n zIndex: 200\n});\n\nvar SqrtScale = (function (Class) {\n function SqrtScale(domain, range) {\n Class.call(this);\n\n this._domain = domain;\n this._range = range;\n\n var domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n var outputRange = range[1] - range[0];\n\n this._ratio = outputRange / domainRange;\n }\n\n if ( Class ) SqrtScale.__proto__ = Class;\n SqrtScale.prototype = Object.create( Class && Class.prototype );\n SqrtScale.prototype.constructor = SqrtScale;\n\n SqrtScale.prototype.map = function map (value) {\n var rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n return this._range[0] + rel;\n };\n\n return SqrtScale;\n}(Class));\n\nvar Scales = {\n sqrt: SqrtScale\n};\n\nvar Symbols = {\n circle: function(args) {\n var geo = new g.Circle(args.center, args.size / 2);\n return new d.Circle(geo, args.style);\n },\n\n square: function(args) {\n var path = new d.Path(args.style);\n var halfSize = args.size / 2;\n var center = args.center;\n path.moveTo(center.x - halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y + halfSize).lineTo(center.x - halfSize, center.y + halfSize).close();\n return path;\n }\n};\n","import {\n Class,\n addClass,\n isArray,\n getter,\n deepExtend,\n setDefaultOptions,\n renderIcon,\n on,\n off,\n} from '../../common';\n\nimport { Layer } from './layer';\nimport { Location } from '../location';\nimport {\n proxy,\n toHyphens,\n toPixels,\n convertToHtml\n} from '../utils';\nimport TemplateService from '../../services/template-service';\n\nvar CLICK = \"click\";\nvar MOUSE_ENTER = \"mouseenter\";\nvar MOUSE_LEAVE = \"mouseleave\";\n\nvar extend = Object.assign;\nvar MARKER_CLASS_NAME = \"k-marker\";\nvar MARKER_CLASS = \".\" + MARKER_CLASS_NAME;\n\nexport var MarkerLayer = (function (Layer) {\n function MarkerLayer(map, options) {\n Layer.call(this, map, options);\n\n this._markerClickHandler = proxy(this._markerClick, this);\n on(this.element, CLICK, MARKER_CLASS, this._markerClickHandler);\n\n this.items = [];\n\n this._load(this._readData());\n }\n\n if ( Layer ) MarkerLayer.__proto__ = Layer;\n MarkerLayer.prototype = Object.create( Layer && Layer.prototype );\n MarkerLayer.prototype.constructor = MarkerLayer;\n\n MarkerLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n off(this.element, CLICK, this._markerClickHandler);\n this.clear();\n };\n\n MarkerLayer.prototype.add = function add (args) {\n var this$1 = this;\n\n if (isArray(args)) {\n for (var i = 0; i < args.length; i++) {\n this$1._addOne(args[i]);\n }\n } else {\n return this._addOne(args);\n }\n };\n\n MarkerLayer.prototype.remove = function remove (marker) {\n marker.destroy();\n var index = (this.items || []).indexOf(marker);\n\n if (index > -1) {\n this.items.splice(index, 1);\n }\n };\n\n MarkerLayer.prototype.clear = function clear () {\n var this$1 = this;\n\n for (var i = 0; i < this.items.length; i++) {\n this$1.items[i].destroy();\n }\n\n this.items = [];\n };\n\n MarkerLayer.prototype.update = function update (marker) {\n var location = marker.location();\n\n if (location) {\n marker.showAt(this.map.locationToView(location));\n\n var args = {\n marker: marker,\n layer: this\n };\n\n this.map.trigger('markerActivate', args);\n }\n };\n\n MarkerLayer.prototype._reset = function _reset () {\n var this$1 = this;\n\n Layer.prototype._reset.call(this);\n\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n this$1.update(items[i]);\n }\n };\n\n MarkerLayer.prototype.bind = function bind (options, dataItem) {\n var marker = Marker.create(options, this.options);\n marker.dataItem = dataItem;\n\n var args = {\n marker: marker,\n layer: this\n };\n\n var cancelled = this.map.trigger('markerCreated', args);\n\n if (!cancelled) {\n this.add(marker);\n return marker;\n }\n };\n\n MarkerLayer.prototype._addOne = function _addOne (arg) {\n var marker = Marker.create(arg, this.options);\n marker.addTo(this);\n return marker;\n };\n\n MarkerLayer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n MarkerLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this.clear();\n\n var getLocation = getter(this.options.locationField);\n var getTitle = getter(this.options.titleField);\n\n for (var i = 0; i < data.length; i++) {\n var dataItem = data[i];\n\n this$1.bind({\n location: getLocation(dataItem),\n title: getTitle(dataItem)\n }, dataItem);\n }\n };\n\n MarkerLayer.prototype._markerClick = function _markerClick (e) {\n var marker = e.currentTarget._kendoNode;\n\n var args = {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker),\n originalEvent: e\n };\n\n this.map.trigger('markerClick', args);\n };\n\n MarkerLayer.prototype._markerMouseEnter = function _markerMouseEnter (e) {\n var args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseEnter\", args);\n };\n\n MarkerLayer.prototype._markerMouseLeave = function _markerMouseLeave (e) {\n var args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseLeave\", args);\n };\n\n MarkerLayer.prototype._createMarkerEventArgs = function _createMarkerEventArgs (e) {\n var marker = e.marker;\n\n var args = extend({}, {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker)\n }, e);\n\n return args;\n };\n\n return MarkerLayer;\n}(Layer));\n\nsetDefaultOptions(MarkerLayer, {\n zIndex: 1000,\n autoBind: true,\n locationField: 'location',\n titleField: 'title',\n template: \"\"\n});\n\nexport var Marker = (function (Class) {\n function Marker(options) {\n Class.call(this);\n this.options = options || {};\n }\n\n if ( Class ) Marker.__proto__ = Class;\n Marker.prototype = Object.create( Class && Class.prototype );\n Marker.prototype.constructor = Marker;\n\n Marker.prototype.destroy = function destroy () {\n this.layer = null;\n this.unbindEvents();\n this.hide();\n };\n\n Marker.prototype.addTo = function addTo (parent) {\n this.layer = parent.markers || parent;\n this.layer.items.push(this);\n this.layer.update(this);\n };\n\n Marker.prototype.location = function location (value) {\n if (value) {\n this.options.location = Location.create(value).toArray();\n\n if (this.layer) {\n this.layer.update(this);\n }\n\n return this;\n }\n\n return Location.create(this.options.location);\n };\n\n Marker.prototype.showAt = function showAt (point) {\n this.render();\n\n this._anchor = { left: Math.round(point.x), top: Math.round(point.y) };\n this.element.style.left = toPixels(this._anchor.left);\n this.element.style.top = toPixels(this._anchor.top);\n };\n\n Marker.prototype.hide = function hide () {\n if (this.element) {\n this.element.remove();\n this.element = null;\n }\n };\n\n Marker.prototype.bindEvents = function bindEvents () {\n if (!this.element) {\n return;\n }\n\n this._mouseEnterHandler = proxy(this._mouseEnter, this);\n on(this.element, MOUSE_ENTER, MARKER_CLASS, this._mouseEnterHandler);\n this._mouseLeaveHandler = proxy(this._mouseLeave, this);\n on(this.element, MOUSE_LEAVE, MARKER_CLASS, this._mouseLeaveHandler);\n };\n\n Marker.prototype.unbindEvents = function unbindEvents () {\n if (!this.element) {\n return;\n }\n\n off(this.element, MOUSE_ENTER, this._mouseEnterHandler);\n off(this.element, MOUSE_LEAVE, this._mouseLeaveHandler);\n };\n\n Marker.prototype.render = function render () {\n if (!this.element) {\n var options = this.options;\n var layer = this.layer;\n var element = document.createElement('span');\n addClass(element, MARKER_CLASS_NAME);\n\n if (this.options.template) {\n var templateFn = this._compileTemplate(this.options.template);\n var templateHtml = templateFn(this.dataItem);\n var templateElement = convertToHtml(templateHtml);\n element.appendChild(templateElement);\n } else if (options.svgIcon) {\n renderIcon(element, { icon: options.svgIcon, iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: \"svg\" });\n } else {\n var iconOptions = { icon: \"map-marker\", iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: this.options.icons.type };\n\n if (options.shape) {\n if (options.shape === \"pinTarget\") {\n iconOptions.icon = \"map-marker-target\";\n renderIcon(element, iconOptions);\n } else if (options.shape === \"pin\") {\n renderIcon(element, iconOptions);\n } else {\n addClass(element, 'k-icon k-icon-xxl k-i-marker-' + toHyphens(options.shape || 'pin'));\n }\n } else {\n renderIcon(element, iconOptions);\n }\n }\n\n if (options.title) {\n element.setAttribute(\"title\", options.title);\n }\n\n var attributes = options.attributes || {};\n Object.keys(attributes).forEach(function(key) {\n element.setAttribute(key, attributes[key]);\n });\n\n element._kendoNode = this;\n element.style.zIndex = options.zIndex;\n\n this.element = element;\n\n if (layer) {\n layer.element.appendChild(this.element);\n }\n\n this.bindEvents();\n }\n };\n\n Marker.prototype._mouseEnter = function _mouseEnter (e) {\n var args = this._createEventArgs(e);\n this.layer._markerMouseEnter(args);\n\n this.layer.map._tooltip.show({\n top: this._anchor.top - this.element.offsetHeight,\n left: this._anchor.left\n }, this._tooltipContext());\n };\n\n Marker.prototype._tooltipContext = function _tooltipContext () {\n return {\n type: 'marker',\n layerIndex: this.layer._layerIndex(),\n className: 'k-map-marker-tooltip',\n dataItem: this.dataItem,\n title: this.options.title,\n location: this.location()\n };\n };\n\n Marker.prototype._mouseLeave = function _mouseLeave (e) {\n var args = this._createEventArgs(e);\n this.layer._markerMouseLeave(args);\n };\n\n Marker.prototype._createEventArgs = function _createEventArgs (e) {\n var args = {\n marker: this,\n originalEvent: e\n };\n\n return args;\n };\n\n Marker.prototype._compileTemplate = function _compileTemplate (template) {\n return TemplateService.compile(template, {\n paramName: \"dataItem\",\n useWithBlock: false\n });\n };\n\n Marker.create = function create (arg, defaults) {\n if (arg instanceof Marker) {\n return arg;\n }\n\n return new Marker(deepExtend({}, defaults, arg));\n };\n\n return Marker;\n}(Class));\n","import {\n Class,\n now\n} from '../../common';\n\nimport {\n proxy,\n} from '../utils';\n\nvar extend = Object.assign;\n\nfunction animationFrame(callback) {\n window.requestAnimationFrame(callback);\n}\n\nexport var Animation = (function (Class) {\n function Animation() {\n Class.call(this);\n var that = this;\n\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n }\n\n if ( Class ) Animation.__proto__ = Class;\n Animation.prototype = Object.create( Class && Class.prototype );\n Animation.prototype.constructor = Animation;\n\n Animation.prototype.tick = function tick () { };\n Animation.prototype.done = function done () { };\n Animation.prototype.onEnd = function onEnd () { };\n Animation.prototype.onCancel = function onCancel () { };\n\n Animation.prototype.start = function start () {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n };\n\n Animation.prototype.enabled = function enabled () {\n return true;\n };\n\n Animation.prototype.cancel = function cancel () {\n this._started = false;\n this.onCancel();\n };\n\n Animation.prototype._tick = function _tick () {\n var that = this;\n\n if (!that._started) {\n return;\n }\n\n that.tick();\n\n if (!that.done()) {\n animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n };\n\n return Animation;\n}(Class));\n\nexport var Transition = (function (Animation) {\n function Transition(options) {\n Animation.call(this);\n extend(this, options);\n }\n\n if ( Animation ) Transition.__proto__ = Animation;\n Transition.prototype = Object.create( Animation && Animation.prototype );\n Transition.prototype.constructor = Transition;\n\n Transition.prototype.done = function done () {\n return this.timePassed() >= this.duration;\n };\n\n Transition.prototype.timePassed = function timePassed () {\n return Math.min(this.duration, now() - this.startDate);\n };\n\n Transition.prototype.moveTo = function moveTo (options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration === 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = now();\n that.start();\n };\n\n Transition.prototype._easeProxy = function _easeProxy (ease) {\n var that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n };\n\n Transition.easeOutExpo = function easeOutExpo (t, b, c, d) {\n return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n };\n\n return Transition;\n}(Animation));\n","// todo: extract to a separate place\n\nimport {\n Class,\n deepExtend,\n addClass,\n Observable,\n isFunction,\n setDefaultOptions,\n on,\n off,\n UserEvents\n} from '../../common';\n\nimport {\n convertToHtml,\n prepend,\n wrapInner,\n hasNativeScrolling,\n wheelDeltaY,\n proxy,\n setDefaultEvents\n} from '../utils';\n\nimport {\n Transition,\n Animation\n} from './fx';\n\nimport {\n Pane,\n PaneDimensions,\n Movable,\n TapCapture\n} from './draggable';\n\nvar\n extend = Object.assign,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n // SCROLLER_RELEASE_CLASS = 'km-scroller-release',\n // SCROLLER_REFRESH_CLASS = 'km-scroller-refresh',\n PULL = 'pull',\n CHANGE = 'change',\n RESIZE = 'resize',\n SCROLL = 'scroll',\n MOUSE_WHEEL_ID = 2;\n\nvar ZoomSnapBack = (function (Animation) {\n function ZoomSnapBack(options) {\n Animation.call(this, options);\n var that = this;\n extend(that, options);\n that.userEvents.bind('gestureend', that.start.bind(this));\n that.tapCapture.bind('press', that.cancel.bind(this));\n }\n\n if ( Animation ) ZoomSnapBack.__proto__ = Animation;\n ZoomSnapBack.prototype = Object.create( Animation && Animation.prototype );\n ZoomSnapBack.prototype.constructor = ZoomSnapBack;\n\n ZoomSnapBack.prototype.enabled = function enabled () {\n return this.movable.scale < this.dimensions.minScale;\n };\n\n ZoomSnapBack.prototype.done = function done () {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n };\n\n ZoomSnapBack.prototype.tick = function tick () {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n };\n\n ZoomSnapBack.prototype.onEnd = function onEnd () {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n };\n\n return ZoomSnapBack;\n}(Animation));\n\nvar DragInertia = (function (Animation) {\n function DragInertia(options) {\n Animation.call(this);\n var that = this;\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function onEnd() {\n that._end();\n }\n })\n });\n\n that.tapCapture.bind('press', function() {\n that.cancel();\n });\n\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n }\n\n if ( Animation ) DragInertia.__proto__ = Animation;\n DragInertia.prototype = Object.create( Animation && Animation.prototype );\n DragInertia.prototype.constructor = DragInertia;\n\n DragInertia.prototype.onCancel = function onCancel () {\n this.transition.cancel();\n };\n\n DragInertia.prototype.freeze = function freeze (location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n };\n\n DragInertia.prototype.onEnd = function onEnd () {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n };\n\n DragInertia.prototype.done = function done () {\n return abs(this.velocity) < 1;\n };\n\n DragInertia.prototype.start = function start (e) {\n var that = this,\n velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n Animation.prototype.start.call(this);\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n Animation.prototype.start.call(this);\n }\n };\n\n DragInertia.prototype.tick = function tick () {\n var that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = that.velocity *= friction,\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n };\n\n DragInertia.prototype._end = function _end () {\n this.tapCapture.cancelCapture();\n this.end();\n };\n\n DragInertia.prototype._snapBack = function _snapBack () {\n var that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n\n that._moveTo(snapBack);\n };\n\n DragInertia.prototype._moveTo = function _moveTo (location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n };\n\n return DragInertia;\n}(Animation));\n\nvar AnimatedScroller = (function (Animation) {\n function AnimatedScroller(options) {\n Animation.call(this, options);\n var that = this;\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n }\n\n if ( Animation ) AnimatedScroller.__proto__ = Animation;\n AnimatedScroller.prototype = Object.create( Animation && Animation.prototype );\n AnimatedScroller.prototype.constructor = AnimatedScroller;\n\n AnimatedScroller.prototype.tick = function tick () {\n this._updateCoordinates();\n this.moveTo(this.origin);\n };\n\n AnimatedScroller.prototype.done = function done () {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n };\n\n AnimatedScroller.prototype.onEnd = function onEnd () {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n };\n\n AnimatedScroller.prototype.setCoordinates = function setCoordinates (from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n };\n\n /* eslint-disable no-param-reassign */\n AnimatedScroller.prototype.setCallback = function setCallback (callback) {\n if (callback && isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n };\n /* eslint-enable no-param-reassign */\n\n AnimatedScroller.prototype._updateCoordinates = function _updateCoordinates () {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n };\n\n return AnimatedScroller;\n}(Animation));\n\nvar ScrollBar = (function (Class) {\n function ScrollBar(options) {\n Class.call(this);\n var that = this,\n horizontal = options.axis === 'x';\n\n var orientation = (horizontal ? 'horizontal' : 'vertical');\n var element = convertToHtml('
');\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n\n that.container.appendChild(element);\n\n if (options.alwaysVisible) {\n that.show();\n }\n }\n\n if ( Class ) ScrollBar.__proto__ = Class;\n ScrollBar.prototype = Object.create( Class && Class.prototype );\n ScrollBar.prototype.constructor = ScrollBar;\n\n ScrollBar.prototype.refresh = function refresh () {\n var that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.style.display = \"none\";\n } else {\n this.element.style.display = \"\";\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize !== size) {\n that.element.style[that.size] = size + 'px';\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n };\n\n ScrollBar.prototype.show = function show () {\n this.element.style.opacity = SCROLLBAR_OPACITY;\n this.element.style.visibility = \"visible\";\n };\n\n ScrollBar.prototype.hide = function hide () {\n if (!this.alwaysVisible) {\n this.element.style.opacity = 0;\n }\n };\n\n return ScrollBar;\n}(Class));\n\n// export class Scroller extends Class {\nexport var Scroller = (function (Observable) {\n function Scroller(element, options) {\n Observable.call(this);\n var that = this;\n this.element = element;\n\n this._initOptions(options);\n\n var hasScrolling = hasNativeScrolling(navigator.userAgent);\n that._native = that.options.useNative && hasScrolling;\n var scrollHeader = convertToHtml('
');\n\n if (that._native) {\n addClass(element, 'km-native-scroller');\n prepend(scrollHeader, element);\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children[0]\n });\n\n return;\n }\n\n element.style.overflow = \"hidden\";\n addClass(element, 'km-scroll-wrapper');\n\n var scrollContainer = convertToHtml('
');\n wrapInner(element, scrollContainer);\n prepend(scrollHeader, element);\n\n var inner = element.children[1],\n tapCapture = new TapCapture(element),\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new UserEvents(element, {\n touchAction: 'none',\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function start(e) {\n dimensions.refresh();\n var velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = that.fixedContainer.contains(e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo: function moveTo(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n this._wheelScrollHandler = this._wheelScroll.bind(this);\n on(element, 'wheel', this._wheelScrollHandler);\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children[0]\n });\n\n that._initAxis('x');\n that._initAxis('y');\n\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n if ( Observable ) Scroller.__proto__ = Observable;\n Scroller.prototype = Object.create( Observable && Observable.prototype );\n Scroller.prototype.constructor = Scroller;\n\n Scroller.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Scroller.prototype._wheelScroll = function _wheelScroll (e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n var delta = wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n };\n\n Scroller.prototype.makeVirtual = function makeVirtual () {\n this.dimensions.y.makeVirtual();\n };\n\n Scroller.prototype.virtualSize = function virtualSize (min, max) {\n this.dimensions.y.virtualSize(min, max);\n };\n\n Scroller.prototype.height = function height () {\n return this.dimensions.y.size;\n };\n\n Scroller.prototype.scrollHeight = function scrollHeight () {\n return this.scrollElement.scrollHeight;\n };\n\n Scroller.prototype.scrollWidth = function scrollWidth () {\n return this.scrollElement.scrollWidth;\n };\n\n Scroller.prototype._resize = function _resize () {\n if (!this._native) {\n this.contentResized();\n }\n };\n\n Scroller.prototype.setOptions = function setOptions (options) {\n var that = this;\n\n this._initOptions(options);\n\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n };\n\n Scroller.prototype.reset = function reset () {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n };\n\n Scroller.prototype.contentResized = function contentResized () {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n };\n\n Scroller.prototype.zoomOut = function zoomOut () {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n };\n\n Scroller.prototype.enable = function enable () {\n this.enabled = true;\n };\n\n Scroller.prototype.disable = function disable () {\n this.enabled = false;\n };\n\n Scroller.prototype.scrollTo = function scrollTo (x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n };\n\n Scroller.prototype.animatedScrollTo = function animatedScrollTo (x, y, callback) {\n var from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n };\n\n // kept for API compatibility, not used\n Scroller.prototype.pullHandled = function pullHandled () {\n // let that = this;\n\n // removeClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n // that.hintContainer.innerHTML = that.pullTemplate({}));\n\n // that.yinertia.onEnd();\n // that.xinertia.onEnd();\n // that.userEvents.cancel();\n };\n\n Scroller.prototype.destroy = function destroy () {\n var element = this.element;\n\n off(element, 'wheel', this._wheelScrollHandler);\n\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n };\n\n Scroller.prototype._scale = function _scale (scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n };\n\n Scroller.prototype._initPullToRefresh = function _initPullToRefresh () {\n };\n\n // kept for API compatibility, not used\n Scroller.prototype._dragEnd = function _dragEnd () {\n // let that = this;\n\n // if (!that.pulled) {\n // return;\n // }\n\n // that.pulled = false;\n\n // removeClass(that.refreshHint, SCROLLER_RELEASE_CLASS);\n // addClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n\n // that.hintContainer.innerHTML = that.refreshTemplate({});\n\n // that.yinertia.freeze(that.options.pullOffset / 2);\n // that.trigger('pull');\n };\n\n // kept for API compatibility, not used\n Scroller.prototype._paneChange = function _paneChange () {\n // let that = this;\n // if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n // if (!that.pulled) {\n // that.pulled = true;\n // that.refreshHint.removeClass(SCROLLER_REFRESH_CLASS).addClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.releaseTemplate({}));\n // that.hintContainer.html(that.releaseTemplate({}));\n // }\n // } else if (that.pulled) {\n // that.pulled = false;\n // that.refreshHint.removeClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.pullTemplate({}));\n // }\n };\n\n Scroller.prototype._initAxis = function _initAxis (axis) {\n var that = this,\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function end() {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n };\n\n return Scroller;\n}(Observable));\n\nsetDefaultOptions(Scroller, {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function avoidScrolling() {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n});\n\nsetDefaultEvents(Scroller, [\n PULL,\n SCROLL,\n RESIZE\n]);\n\n","var MapService = function MapService(widget, context) {\n if ( context === void 0 ) context = {};\n\n this.sender = context.sender || widget;\n this.widget = widget;\n this.rtl = Boolean(context.rtl);\n};\n\nMapService.prototype.notify = function notify (name, args) {\n if (this.widget) {\n this.widget.trigger(name, args);\n }\n};\n\nexport default MapService;\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n addClass,\n setDefaultOptions,\n valueOrDefault,\n defined,\n Observable,\n mousewheelDelta,\n limitValue,\n deepExtend,\n elementOffset,\n isArray,\n round,\n now,\n on,\n off,\n getSupportedFeatures,\n} from '../common';\n\nimport {\n EPSG3857\n} from './crs';\n\nimport {\n Attribution\n} from './attribution';\n\nimport {\n Navigator\n} from './navigator';\n\nimport {\n ZoomControl\n} from './zoom';\n\nimport {\n Location\n} from './location';\n\nimport {\n Extent\n} from './extent';\n\nimport { Tooltip } from './tooltip/tooltip';\n\nimport {\n TileLayer\n} from './layers/tile';\n\nimport {\n BubbleLayer\n} from './layers/bubble';\n\nimport {\n ShapeLayer\n} from './layers/shape';\n\nimport {\n MarkerLayer\n} from './layers/marker';\n\nimport {\n removeChildren,\n proxy,\n setDefaultEvents,\n convertToHtml,\n renderPos\n} from './utils';\n\nimport {\n Scroller\n} from './scroller/scroller';\n\nimport MapService from './../services/map-service';\n\nimport { CENTER_CHANGE, INIT, ZOOM_CHANGE } from './constants';\n\nvar math = Math,\n min = math.min,\n pow = math.pow,\n Point = g.Point,\n MARKER = \"marker\",\n LOCATION = \"location\",\n FRICTION = 0.9,\n FRICTION_MOBILE = 0.93,\n MOUSEWHEEL = 'wheel',\n MOUSEWHEEL_THROTTLE = 50,\n VELOCITY_MULTIPLIER = 5,\n DEFAULT_ZOOM_RATE = 1;\n\nvar layersMap = {\n bubble: BubbleLayer,\n shape: ShapeLayer,\n tile: TileLayer\n};\nlayersMap[MARKER] = MarkerLayer;\n\nvar Map = (function (Observable) {\n function Map(element, options, themeOptions, context) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n if ( context === void 0 ) context = {};\n\n Observable.call(this);\n\n this._init(element, options, themeOptions, context);\n }\n\n if ( Observable ) Map.__proto__ = Observable;\n Map.prototype = Object.create( Observable && Observable.prototype );\n Map.prototype.constructor = Map;\n\n Map.prototype.destroy = function destroy () {\n var this$1 = this;\n\n this.scroller.destroy();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this.navigator) {\n this.navigator.destroy();\n }\n if (this.attribution) {\n this.attribution.destroy();\n }\n if (this.zoomControl) {\n this.zoomControl.destroy();\n }\n\n if (isArray(this.markers)) {\n this.markers.forEach(function (markerLayer) {\n markerLayer.destroy();\n });\n } else {\n this.markers.destroy();\n }\n\n for (var i = 0; i < this.layers.length; i++) {\n this$1.layers[i].destroy();\n }\n\n off(this.element, MOUSEWHEEL, this._mousewheelHandler);\n\n Observable.prototype.destroy.call(this);\n };\n\n // eslint-disable-next-line no-unused-vars\n Map.prototype._init = function _init (element, options, themeOptions, context) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n if ( context === void 0 ) context = {};\n\n this.support = getSupportedFeatures();\n this.context = context;\n\n this.initObserver(context);\n this.initServices(context);\n this._notifyObserver(INIT);\n\n this._initOptions(options);\n this._setEvents(options);\n this.crs = new EPSG3857();\n\n this._initElement(element);\n\n this._viewOrigin = this._getOrigin();\n\n this._tooltip = this._createTooltip();\n this._initScroller();\n this._initMarkers();\n this._initControls();\n this._initLayers();\n this._reset();\n\n var mousewheelThrottled = throttle(this._mousewheel.bind(this), MOUSEWHEEL_THROTTLE);\n this._mousewheelHandler = function (e) {\n e.preventDefault();\n mousewheelThrottled(e);\n };\n on(this.element, MOUSEWHEEL, this._mousewheelHandler);\n };\n\n Map.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Map.prototype._initElement = function _initElement (element) {\n this.element = element;\n\n addClass(element, \"k-map\");\n element.style.position = \"relative\";\n element.setAttribute(\"data-role\", \"map\");\n removeChildren(element);\n\n var div = convertToHtml(\"
\");\n this.element.appendChild(div);\n };\n\n Map.prototype.initServices = function initServices (context) {\n if ( context === void 0 ) context = {};\n\n this.widgetService = new MapService(this, context);\n };\n\n Map.prototype.initObserver = function initObserver (context) {\n if ( context === void 0 ) context = {};\n\n this.observers = [];\n this.addObserver(context.observer);\n };\n\n Map.prototype.addObserver = function addObserver (observer) {\n if (observer) {\n this.observers.push(observer);\n }\n };\n\n Map.prototype.removeObserver = function removeObserver (observer) {\n var index = this.observers.indexOf(observer);\n\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n Map.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n var observers = this.observers;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n };\n\n Map.prototype.trigger = function trigger (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n if (!isDefaultPrevented) {\n Observable.prototype.trigger.call(this, name, args);\n }\n\n return isDefaultPrevented;\n };\n\n Map.prototype._notifyObserver = function _notifyObserver (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n };\n\n Map.prototype.zoom = function zoom (level) {\n var options = this.options;\n var result;\n\n if (defined(level)) {\n var zoomLevel = math.round(limitValue(level, options.minZoom, options.maxZoom));\n\n if (options.zoom !== zoomLevel) {\n options.zoom = zoomLevel;\n this.widgetService.notify(ZOOM_CHANGE, { zoom: options.zoom });\n\n this._reset();\n }\n result = this;\n } else {\n result = options.zoom;\n }\n\n return result;\n };\n\n Map.prototype.center = function center (center$1) {\n var result;\n\n if (center$1) {\n var current = Location.create(center$1);\n var previous = Location.create(this.options.center);\n if (!current.equals(previous)) {\n this.options.center = current.toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n this._reset();\n }\n\n result = this;\n } else {\n result = Location.create(this.options.center);\n }\n\n return result;\n };\n\n Map.prototype.extent = function extent (extent$1) {\n var result;\n\n if (extent$1) {\n this._setExtent(extent$1);\n result = this;\n } else {\n result = this._getExtent();\n }\n\n return result;\n };\n\n Map.prototype.setOptions = function setOptions (options) {\n if ( options === void 0 ) options = {};\n\n var element = this.element;\n\n this.destroy();\n removeChildren(element);\n this._init(element, options, {}, this.context);\n\n this._reset();\n };\n\n Map.prototype.locationToLayer = function locationToLayer (location, zoom) {\n var clamp = !this.options.wraparound;\n var locationObject = Location.create(location);\n\n return this.crs.toPoint(locationObject, this._layerSize(zoom), clamp);\n };\n\n Map.prototype.layerToLocation = function layerToLocation (point, zoom) {\n var clamp = !this.options.wraparound;\n var pointObject = Point.create(point);\n\n return this.crs.toLocation(pointObject, this._layerSize(zoom), clamp);\n };\n\n Map.prototype.locationToView = function locationToView (location) {\n var locationObject = Location.create(location);\n var origin = this.locationToLayer(this._viewOrigin);\n var point = this.locationToLayer(locationObject);\n\n return point.translateWith(origin.scale(-1));\n };\n\n Map.prototype.viewToLocation = function viewToLocation (point, zoom) {\n var origin = this.locationToLayer(this._getOrigin(), zoom);\n var pointObject = Point.create(point);\n var pointResult = pointObject.clone().translateWith(origin);\n\n return this.layerToLocation(pointResult, zoom);\n };\n\n Map.prototype.eventOffset = function eventOffset (e) {\n var x;\n var y;\n var offset = elementOffset(this.element);\n\n if ((e.x && e.x[LOCATION]) || (e.y && e.y[LOCATION])) {\n x = e.x[LOCATION] - offset.left;\n y = e.y[LOCATION] - offset.top;\n } else {\n var event = e.originalEvent || e;\n x = valueOrDefault(event.pageX, event.clientX) - offset.left;\n y = valueOrDefault(event.pageY, event.clientY) - offset.top;\n }\n\n var point = new g.Point(x, y);\n\n return point;\n };\n\n Map.prototype.eventToView = function eventToView (e) {\n var cursor = this.eventOffset(e);\n return this.locationToView(this.viewToLocation(cursor));\n };\n\n Map.prototype.eventToLayer = function eventToLayer (e) {\n return this.locationToLayer(this.eventToLocation(e));\n };\n\n Map.prototype.eventToLocation = function eventToLocation (e) {\n var cursor = this.eventOffset(e);\n return this.viewToLocation(cursor);\n };\n\n Map.prototype.viewSize = function viewSize () {\n var element = this.element;\n var scale = this._layerSize();\n var width = element.clientWidth;\n\n if (!this.options.wraparound) {\n width = min(scale, width);\n }\n\n return {\n width: width,\n height: min(scale, element.clientHeight)\n };\n };\n\n Map.prototype.exportVisual = function exportVisual () {\n this._reset();\n return false;\n };\n\n Map.prototype.hideTooltip = function hideTooltip () {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n };\n\n Map.prototype._setOrigin = function _setOrigin (origin, zoom) {\n var size = this.viewSize(),\n topLeft;\n\n var originLocation = this._origin = Location.create(origin);\n topLeft = this.locationToLayer(originLocation, zoom);\n topLeft.x += size.width / 2;\n topLeft.y += size.height / 2;\n this.options.center = this.layerToLocation(topLeft, zoom).toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n\n return this;\n };\n\n Map.prototype._getOrigin = function _getOrigin (invalidate) {\n var size = this.viewSize(),\n topLeft;\n\n if (invalidate || !this._origin) {\n topLeft = this.locationToLayer(this.center());\n topLeft.x -= size.width / 2;\n topLeft.y -= size.height / 2;\n this._origin = this.layerToLocation(topLeft);\n }\n\n return this._origin;\n };\n\n Map.prototype._setExtent = function _setExtent (newExtent) {\n var this$1 = this;\n\n var raw = Extent.create(newExtent);\n var se = raw.se.clone();\n\n if (this.options.wraparound && se.lng < 0 && newExtent.nw.lng > 0) {\n se.lng = 180 + (180 + se.lng);\n }\n\n var extent = new Extent(raw.nw, se);\n this.center(extent.center());\n var width = this.element.clientWidth;\n var height = this.element.clientHeight;\n var zoom;\n\n for (zoom = this.options.maxZoom; zoom >= this.options.minZoom; zoom--) {\n var topLeft = this$1.locationToLayer(extent.nw, zoom);\n var bottomRight = this$1.locationToLayer(extent.se, zoom);\n var layerWidth = math.abs(bottomRight.x - topLeft.x);\n var layerHeight = math.abs(bottomRight.y - topLeft.y);\n\n if (layerWidth <= width && layerHeight <= height) {\n break;\n }\n }\n\n this.zoom(zoom);\n };\n\n Map.prototype._getExtent = function _getExtent () {\n var nw = this._getOrigin();\n var bottomRight = this.locationToLayer(nw);\n var size = this.viewSize();\n\n bottomRight.x += size.width;\n bottomRight.y += size.height;\n\n var se = this.layerToLocation(bottomRight);\n\n return new Extent(nw, se);\n };\n\n Map.prototype._zoomAround = function _zoomAround (pivot, level) {\n this._setOrigin(this.layerToLocation(pivot, level), level);\n this.zoom(level);\n };\n\n Map.prototype._initControls = function _initControls () {\n var controls = this.options.controls;\n if (controls.attribution) {\n this._createAttribution(controls.attribution);\n }\n\n if (!this.support.mobileOS) {\n if (controls.navigator) {\n this._createNavigator(controls.navigator);\n }\n\n if (controls.zoom) {\n this._createZoomControl(controls.zoom);\n }\n }\n };\n\n Map.prototype._createControlElement = function _createControlElement (options, defaultPosition) {\n var pos = options.position || defaultPosition;\n var posSelector = '.' + renderPos(pos).replace(' ', '.');\n var wrap = this.element.querySelector('.k-map-controls' + posSelector) || [];\n\n if (wrap.length === 0) {\n var div$1 = document.createElement(\"div\");\n addClass(div$1, 'k-map-controls ' + renderPos(pos));\n wrap = div$1;\n this.element.appendChild(wrap);\n }\n\n var div = document.createElement(\"div\");\n\n wrap.appendChild(div);\n\n return div;\n };\n\n Map.prototype._createAttribution = function _createAttribution (options) {\n var element = this._createControlElement(options, 'bottomRight');\n this.attribution = new Attribution(element, options);\n };\n\n Map.prototype._createNavigator = function _createNavigator (options) {\n var element = this._createControlElement(options, 'topLeft');\n var navigator = this.navigator = new Navigator(element, deepExtend({}, options, { icons: this.options.icons }));\n\n this._navigatorPan = this._navigatorPan.bind(this);\n navigator.bind('pan', this._navigatorPan);\n\n this._navigatorCenter = this._navigatorCenter.bind(this);\n navigator.bind('center', this._navigatorCenter);\n };\n\n Map.prototype._navigatorPan = function _navigatorPan (e) {\n var scroller = this.scroller;\n var x = scroller.scrollLeft + e.x;\n var y = scroller.scrollTop - e.y;\n var bounds = this._virtualSize;\n var width = this.element.clientWidth;\n var height = this.element.clientHeight;\n\n // TODO: Move limits to scroller\n x = limitValue(x, bounds.x.min, bounds.x.max - width);\n y = limitValue(y, bounds.y.min, bounds.y.max - height);\n\n this.scroller.one('scroll', proxy(this._scrollEnd, this));\n\n this.scroller.scrollTo(-x, -y);\n };\n\n Map.prototype._navigatorCenter = function _navigatorCenter () {\n this.center(this.options.center);\n };\n\n Map.prototype._createZoomControl = function _createZoomControl (options) {\n var element = this._createControlElement(options, 'topLeft');\n var zoomControl = this.zoomControl = new ZoomControl(element, options, this.options.icons);\n\n this._zoomControlChange = this._zoomControlChange.bind(this);\n zoomControl.bind('change', this._zoomControlChange);\n };\n\n Map.prototype._zoomControlChange = function _zoomControlChange (e) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n this.zoom(this.zoom() + e.delta);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n };\n\n Map.prototype._initScroller = function _initScroller () {\n var friction = this.support.mobileOS ? FRICTION_MOBILE : FRICTION;\n var zoomable = this.options.zoomable !== false;\n var scroller = this.scroller = new Scroller(this.element.children[0], {\n friction: friction,\n velocityMultiplier: VELOCITY_MULTIPLIER,\n zoom: zoomable,\n mousewheelScrolling: false,\n supportDoubleTap: true\n });\n\n scroller.bind('scroll', proxy(this._scroll, this));\n scroller.bind('scrollEnd', proxy(this._scrollEnd, this));\n\n scroller.userEvents.bind('gesturestart', proxy(this._scaleStart, this));\n scroller.userEvents.bind('gestureend', proxy(this._scale, this));\n scroller.userEvents.bind('doubleTap', proxy(this._doubleTap, this));\n scroller.userEvents.bind('tap', proxy(this._tap, this));\n\n this.scrollElement = scroller.scrollElement;\n };\n\n Map.prototype._initLayers = function _initLayers () {\n var this$1 = this;\n\n var defs = this.options.layers,\n layers = this.layers = [];\n\n for (var i = 0; i < defs.length; i++) {\n var options = defs[i];\n\n var layer = this$1._createLayer(options);\n layers.push(layer);\n }\n };\n\n Map.prototype._createLayer = function _createLayer (options) {\n var type = options.type || 'shape';\n var layerDefaults = this.options.layerDefaults[type];\n var layerOptions = type === MARKER ?\n deepExtend({}, this.options.markerDefaults, options, { icons: this.options.icons }) :\n deepExtend({}, layerDefaults, options);\n\n var layerConstructor = layersMap[type];\n var layer = new layerConstructor(this, layerOptions);\n\n if (type === MARKER) {\n this.markers = layer;\n }\n\n return layer;\n };\n\n Map.prototype._createTooltip = function _createTooltip () {\n return new Tooltip(this.widgetService, this.options.tooltip);\n };\n\n /* eslint-disable arrow-body-style */\n Map.prototype._initMarkers = function _initMarkers () {\n var markerLayers = (this.options.layers || []).filter(function (x) {\n return x && x.type === MARKER;\n });\n\n if (markerLayers.length > 0) {\n // render the markers from options.layers\n // instead of options.markers\n return;\n }\n\n this.markers = new MarkerLayer(this, deepExtend({}, this.options.markerDefaults, { icons: this.options.icons }));\n this.markers.add(this.options.markers);\n };\n /* eslint-enable arrow-body-style */\n\n Map.prototype._scroll = function _scroll (e) {\n var origin = this.locationToLayer(this._viewOrigin).round();\n var movable = e.sender.movable;\n var offset = new g.Point(movable.x, movable.y).scale(-1).scale(1 / movable.scale);\n\n origin.x += offset.x;\n origin.y += offset.y;\n this._scrollOffset = offset;\n\n this._tooltip.offset = offset;\n this.hideTooltip();\n\n this._setOrigin(this.layerToLocation(origin));\n\n this.trigger('pan', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n };\n\n Map.prototype._scrollEnd = function _scrollEnd (e) {\n if (!this._scrollOffset || !this._panComplete()) {\n return;\n }\n\n this._scrollOffset = null;\n this._panEndTimestamp = now();\n\n this.trigger('panEnd', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n };\n\n Map.prototype._panComplete = function _panComplete () {\n return now() - (this._panEndTimestamp || 0) > 50;\n };\n\n Map.prototype._scaleStart = function _scaleStart (e) {\n if (this.trigger('zoomStart', { originalEvent: e })) {\n var touch = e.touches[1];\n\n if (touch) {\n touch.cancel();\n }\n }\n };\n\n Map.prototype._scale = function _scale (e) {\n var scale = this.scroller.movable.scale;\n var zoom = this._scaleToZoom(scale);\n var gestureCenter = new g.Point(e.center.x, e.center.y);\n var centerLocation = this.viewToLocation(gestureCenter, zoom);\n var centerPoint = this.locationToLayer(centerLocation, zoom);\n var originPoint = centerPoint.translate(-gestureCenter.x, -gestureCenter.y);\n\n this._zoomAround(originPoint, zoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n };\n\n Map.prototype._scaleToZoom = function _scaleToZoom (scaleDelta) {\n var scale = this._layerSize() * scaleDelta;\n var tiles = scale / this.options.minSize;\n var zoom = math.log(tiles) / math.log(2);\n\n return math.round(zoom);\n };\n\n Map.prototype._reset = function _reset () {\n if (this.attribution) {\n this.attribution.filter(this.center(), this.zoom());\n }\n\n this._viewOrigin = this._getOrigin(true);\n\n this._resetScroller();\n this.hideTooltip();\n\n this.trigger('beforeReset');\n this.trigger('reset');\n };\n\n Map.prototype._resetScroller = function _resetScroller () {\n var scroller = this.scroller;\n var x = scroller.dimensions.x;\n var y = scroller.dimensions.y;\n var scale = this._layerSize();\n var nw = this.extent().nw;\n var topLeft = this.locationToLayer(nw).round();\n\n scroller.movable.round = true;\n scroller.reset();\n scroller.userEvents.cancel();\n\n var zoom = this.zoom();\n\n scroller.dimensions.forcedMinScale = pow(2, this.options.minZoom - zoom);\n scroller.dimensions.maxScale = pow(2, this.options.maxZoom - zoom);\n\n var xBounds = {\n min: -topLeft.x,\n max: scale - topLeft.x\n };\n\n var yBounds = {\n min: -topLeft.y,\n max: scale - topLeft.y\n };\n\n if (this.options.wraparound) {\n xBounds.max = 20 * scale;\n xBounds.min = -xBounds.max;\n }\n\n if (this.options.pannable === false) {\n var viewSize = this.viewSize();\n xBounds.min = yBounds.min = 0;\n xBounds.max = viewSize.width;\n yBounds.max = viewSize.height;\n }\n\n x.makeVirtual();\n y.makeVirtual();\n\n x.virtualSize(xBounds.min, xBounds.max);\n y.virtualSize(yBounds.min, yBounds.max);\n\n this._virtualSize = {\n x: xBounds,\n y: yBounds\n };\n };\n\n // kept for API compatibility, not used\n Map.prototype._renderLayers = function _renderLayers () {\n };\n\n Map.prototype._layerSize = function _layerSize (zoom) {\n var newZoom = valueOrDefault(zoom, this.options.zoom);\n return this.options.minSize * pow(2, newZoom);\n };\n\n Map.prototype._tap = function _tap (e) {\n if (!this._panComplete()) {\n return;\n }\n\n var cursor = this.eventOffset(e);\n this.hideTooltip();\n\n this.trigger('click', {\n originalEvent: e,\n location: this.viewToLocation(cursor)\n });\n };\n\n Map.prototype._doubleTap = function _doubleTap (e) {\n var options = this.options;\n\n if (options.zoomable !== false) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n var toZoom = this.zoom() + DEFAULT_ZOOM_RATE;\n var cursor = this.eventOffset(e);\n var location = this.viewToLocation(cursor);\n var postZoom = this.locationToLayer(location, toZoom);\n var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n };\n\n Map.prototype._mousewheel = function _mousewheel (e) {\n var delta = mousewheelDelta(e) > 0 ? -1 : 1;\n var options = this.options;\n var fromZoom = this.zoom();\n var toZoom = limitValue(fromZoom + delta, options.minZoom, options.maxZoom);\n\n if (options.zoomable !== false && toZoom !== fromZoom) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n var cursor = this.eventOffset(e);\n var location = this.viewToLocation(cursor);\n var postZoom = this.locationToLayer(location, toZoom);\n var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n };\n\n Map.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n var offset = elementOffset(this.element);\n\n return {\n left: round(point.x + offset.left),\n top: round(point.y + offset.top)\n };\n };\n\n return Map;\n}(Observable));\n\nsetDefaultOptions(Map, {\n name: 'Map',\n controls: {\n attribution: true,\n navigator: {\n panStep: 100\n },\n zoom: true\n },\n layers: [],\n layerDefaults: {\n shape: {\n style: {\n fill: {\n color: '#fff'\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n bubble: {\n style: {\n fill: {\n color: '#fff',\n opacity: 0.5\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n marker: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n }\n },\n center: [\n 0,\n 0\n ],\n icons: {\n type: \"font\",\n svgIcons: {}\n },\n zoom: 3,\n minSize: 256,\n minZoom: 1,\n maxZoom: 19,\n markers: [],\n markerDefaults: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n },\n wraparound: true,\n // If set to true, GeoJSON layer \"Point\" features will be rendered as markers.\n // Otherwise, the points will be rendered as circles.\n // Defaults to `true` for KUI/jQuery, `false` everywhere else.\n renderPointsAsMarkers: false\n});\n\nsetDefaultEvents(Map, [\n 'beforeReset',\n 'click',\n 'markerActivate',\n 'markerClick',\n 'markerCreated',\n\n // Events for implementing custom tooltips.\n 'markerMouseEnter',\n 'markerMouseLeave',\n\n 'pan',\n 'panEnd',\n 'reset',\n 'shapeClick',\n 'shapeCreated',\n 'shapeFeatureCreated',\n 'shapeMouseEnter',\n 'shapeMouseLeave',\n 'zoomEnd',\n 'zoomStart'\n]);\n\nexport default Map;\n","import { deepExtend } from '../common';\n\nvar max = function (array, mapFn) { return Math.max.apply(null, array.map(mapFn)); };\nvar min = function (array, mapFn) { return Math.min.apply(null, array.map(mapFn)); };\nvar sum = function (array, mapFn) { return array.map(mapFn).reduce(function (acc, curr) { return (acc + curr); }, 0); };\nvar sortAsc = function (a, b) { return (a.y0 === b.y0 ? a.index - b.index : a.y0 + a.y1 - b.y0 - b.y1); };\nvar sortSource = function (a, b) { return sortAsc(a.source, b.source); };\nvar sortTarget = function (a, b) { return sortAsc(a.target, b.target); };\nvar value = function (node) { return node.value; };\n\nfunction sortLinks(nodes) {\n nodes.forEach(function (node) {\n node.targetLinks.forEach(function (link) {\n link.source.sourceLinks.sort(sortTarget);\n });\n node.sourceLinks.forEach(function (link) {\n link.target.targetLinks.sort(sortSource);\n });\n });\n}\n\nvar calcLayer = function (node, maxDepth) {\n if (node.align === 'left') {\n return node.depth;\n }\n\n if (node.align === 'right') {\n return maxDepth - node.height;\n }\n\n return node.sourceLinks.length ? node.depth : maxDepth;\n};\n\nvar Sankey = function Sankey(options) {\n var ref = options.nodesOptions;\n var offset = ref.offset; if ( offset === void 0 ) offset = {};\n var align = ref.align;\n this.data = {\n nodes: options.nodes.map(function (node) { return deepExtend({}, { offset: offset, align: align }, node); }),\n links: options.links.map(function (link) { return deepExtend({}, link); })\n };\n\n this.width = options.width;\n this.height = options.height;\n this.offsetX = options.offsetX || 0;\n this.offsetY = options.offsetY || 0;\n this.nodeWidth = options.nodesOptions.width;\n this.nodePadding = options.nodesOptions.padding;\n this.reverse = options.reverse;\n this.targetColumnIndex = options.targetColumnIndex;\n this.loops = options.loops;\n this.autoLayout = options.autoLayout;\n};\n\nSankey.prototype.calculate = function calculate () {\n var ref = this.data;\n var nodes = ref.nodes;\n var links = ref.links;\n this.connectLinksToNodes(nodes, links);\n this.calculateNodeValues(nodes);\n\n var circularLinks = this.calculateNodeHeights(nodes);\n\n if (circularLinks) {\n return { nodes: [], links: [], columns: [], circularLinks: circularLinks };\n }\n\n this.calculateNodeDepths(nodes);\n var columns = this.calculateNodeColumns(nodes);\n this.calculateNodeBreadths(columns);\n this.applyNodesOffset(nodes);\n this.calculateLinkBreadths(nodes);\n\n return Object.assign({}, this.data, {columns: columns});\n};\n\nSankey.prototype.connectLinksToNodes = function connectLinksToNodes (nodes, links) {\n var nodesMap = new Map();\n\n nodes.forEach(function (node, i) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n node.id = node.id !== undefined ? node.id : node.label.text;\n nodesMap.set(node.id, node);\n });\n\n links.forEach(function (link) {\n link.source = nodesMap.get(link.sourceId);\n link.target = nodesMap.get(link.targetId);\n link.source.sourceLinks.push(link);\n link.target.targetLinks.push(link);\n });\n};\n\nSankey.prototype.calculateNodeValues = function calculateNodeValues (nodes) {\n nodes.forEach(function (node) {\n node.value = Math.max(\n sum(node.sourceLinks, value),\n sum(node.targetLinks, value)\n );\n });\n};\n\nSankey.prototype.calculateNodeDepths = function calculateNodeDepths (nodes) {\n var current = new Set(nodes);\n var next = new Set();\n var currDepth = 0;\n while (current.size) {\n var currentNodes = Array.from(current);\n for (var n = 0; n < currentNodes.length; n++) {\n var node = currentNodes[n];\n node.depth = currDepth;\n for (var l = 0; l < node.sourceLinks.length; l++) {\n var link = node.sourceLinks[l];\n next.add(link.target);\n }\n }\n currDepth++;\n current = next;\n next = new Set();\n }\n};\n\nSankey.prototype.calculateNodeHeights = function calculateNodeHeights (nodes) {\n var nodesLength = nodes.length;\n var current = new Set(nodes);\n var next = new Set;\n var currentHeight = 0;\n var eachNode = function (node) {\n node.height = currentHeight;\n node.targetLinks.forEach(function (link) {\n next.add(link.source);\n });\n };\n while (current.size) {\n current.forEach(eachNode);\n currentHeight++;\n if (currentHeight > nodesLength) {\n return true;\n }\n current = next;\n next = new Set;\n }\n return false;\n};\n\nSankey.prototype.calculateNodeColumns = function calculateNodeColumns (nodes) {\n var this$1 = this;\n\n var maxDepth = max(nodes, function (d) { return d.depth; });\n var columnWidth = (this.width - this.offsetX - this.nodeWidth) / maxDepth;\n var columns = new Array(maxDepth + 1);\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var layer = Math.max(0, Math.min(maxDepth, calcLayer(node, maxDepth)));\n node.x0 = this$1.offsetX + layer * columnWidth;\n node.x1 = node.x0 + this$1.nodeWidth;\n node.layer = layer;\n columns[layer] = columns[layer] || [];\n columns[layer].push(node);\n }\n\n return columns;\n};\n\nSankey.prototype.calculateNodeBreadths = function calculateNodeBreadths (columns) {\n var this$1 = this;\n\n var kSize = min(columns, function (c) { return (this$1.height - this$1.offsetY - (c.length - 1) * this$1.nodePadding) / sum(c, value); });\n\n columns.forEach(function (nodes) {\n var y = this$1.offsetY;\n nodes.forEach(function (node) {\n node.y0 = y;\n node.y1 = y + node.value * kSize;\n y = node.y1 + this$1.nodePadding;\n node.sourceLinks.forEach(function (link) {\n link.width = link.value * kSize;\n });\n });\n y = (this$1.height - y + this$1.nodePadding) / (nodes.length + 1);\n nodes.forEach(function (node, i) {\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n });\n });\n\n if (this.autoLayout !== false) {\n var loops = this.loops !== undefined ? this.loops : columns.length - 1;\n var targetColumnIndex = this.targetColumnIndex || 1;\n\n for (var i = 0; i < loops; i++) {\n if (!this$1.reverse) {\n this$1.uncurlLinksToLeft(columns, targetColumnIndex);\n this$1.uncurlLinksToRight(columns, targetColumnIndex);\n } else {\n this$1.uncurlLinksToRight(columns, targetColumnIndex);\n this$1.uncurlLinksToLeft(columns, targetColumnIndex);\n }\n }\n }\n\n columns.forEach(sortLinks);\n};\n\nSankey.prototype.applyNodesOffset = function applyNodesOffset (nodes) {\n nodes.forEach(function (node) {\n var offsetX = (node.offset ? node.offset.left : 0) || 0;\n var offsetY = (node.offset ? node.offset.top : 0) || 0;\n node.x0 += offsetX;\n node.x1 += offsetX;\n node.y0 += offsetY;\n node.y1 += offsetY;\n });\n};\n\nSankey.prototype.calculateLinkBreadths = function calculateLinkBreadths (nodes) {\n nodes.forEach(function (node) {\n var sourceLinks = node.sourceLinks;\n var targetLinks = node.targetLinks;\n var y = node.y0;\n var y1 = y;\n sourceLinks.forEach(function (link) {\n link.x0 = link.source.x1;\n link.y0 = y + link.width / 2;\n y += link.width;\n });\n targetLinks.forEach(function (link) {\n link.x1 = link.target.x0;\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n });\n });\n};\n\nSankey.prototype.uncurlLinksToRight = function uncurlLinksToRight (columns, targetColumnIndex) {\n var this$1 = this;\n\n var n = columns.length;\n for (var i = targetColumnIndex; i < n; i++) {\n var column = columns[i];\n column.forEach(function (target) {\n var y = 0;\n var sum = 0;\n target.targetLinks.forEach(function (link) {\n var kValue = link.value * (target.layer - link.source.layer);\n y += this$1.targetTopPos(link.source, target) * kValue;\n sum += kValue;\n });\n\n var dy = y === 0 ? 0 : (y / sum - target.y0);\n target.y0 += dy;\n target.y1 += dy;\n sortLinks([target]);\n });\n column.sort(sortAsc);\n this$1.arrangeNodesVertically(column);\n }\n};\n\nSankey.prototype.uncurlLinksToLeft = function uncurlLinksToLeft (columns, targetColumnIndex) {\n var this$1 = this;\n\n var l = columns.length;\n var startIndex = l - 1 - targetColumnIndex;\n for (var i = startIndex; i >= 0; i--) {\n var column = columns[i];\n var loop = function ( j ) {\n var source = column[j];\n var y = 0;\n var sum = 0;\n source.sourceLinks.forEach(function (link) {\n var kValue = link.value * (link.target.layer - source.layer);\n y += this$1.sourceTopPos(source, link.target) * kValue;\n sum += kValue;\n });\n var dy = y === 0 ? 0 : (y / sum - source.y0);\n source.y0 += dy;\n source.y1 += dy;\n sortLinks([source]);\n };\n\n for (var j = 0; j < column.length; j++) loop( j );\n\n column.sort(sortAsc);\n this$1.arrangeNodesVertically(column);\n }\n};\n\nSankey.prototype.arrangeNodesVertically = function arrangeNodesVertically (nodes) {\n var startIndex = 0;\n var endIndex = nodes.length - 1;\n\n this.arrangeUp(nodes, this.height, endIndex);\n this.arrangeDown(nodes, this.offsetY, startIndex);\n};\n\nSankey.prototype.arrangeDown = function arrangeDown (nodes, yPos, index) {\n var this$1 = this;\n\n var currentY = yPos;\n\n for (var i = index; i < nodes.length; i++) {\n var node = nodes[i];\n var dy = Math.max(0, currentY - node.y0);\n node.y0 += dy;\n node.y1 += dy;\n currentY = node.y1 + this$1.nodePadding;\n }\n};\n\nSankey.prototype.arrangeUp = function arrangeUp (nodes, yPos, index) {\n var this$1 = this;\n\n var currentY = yPos;\n for (var i = index; i >= 0; --i) {\n var node = nodes[i];\n var dy = Math.max(0, node.y1 - currentY);\n node.y0 -= dy;\n node.y1 -= dy;\n currentY = node.y0 - this$1.nodePadding;\n }\n};\n\nSankey.prototype.sourceTopPos = function sourceTopPos (source, target) {\n var this$1 = this;\n\n var y = target.y0 - ((target.targetLinks.length - 1) * this.nodePadding) / 2;\n for (var i = 0; i < target.targetLinks.length; i++) {\n var link = target.targetLinks[i];\n if (link.source === source) {\n break;\n }\n y += link.width + this$1.nodePadding;\n }\n for (var i$1 = 0; i$1 < source.sourceLinks.length; i$1++) {\n var link$1 = source.sourceLinks[i$1];\n if (link$1.target === target) {\n break;\n }\n y -= link$1.width;\n }\n return y;\n};\n\nSankey.prototype.targetTopPos = function targetTopPos (source, target) {\n var this$1 = this;\n\n var y = source.y0 - ((source.sourceLinks.length - 1) * this.nodePadding) / 2;\n for (var i = 0; i < source.sourceLinks.length; i++) {\n var link = source.sourceLinks[i];\n if (link.target === target) {\n break;\n }\n y += link.width + this$1.nodePadding;\n }\n for (var i$1 = 0; i$1 < target.targetLinks.length; i$1++) {\n var link$1 = target.targetLinks[i$1];\n if (link$1.source === source) {\n break;\n }\n y -= link$1.width;\n }\n return y;\n};\n\nexport var calculateSankey = function (options) { return new Sankey(options).calculate(); };\n\nexport var crossesValue = function (links) {\n var value = 0;\n var linksLength = links.length;\n\n for (var i = 0; i < linksLength; i++) {\n var link = links[i];\n\n for (var lNext = i + 1; lNext < linksLength; lNext++) {\n var nextLink = links[lNext];\n\n if (intersect(link, nextLink)) {\n value += Math.min(link.value, nextLink.value);\n }\n }\n }\n\n return value;\n};\n\nfunction rotationDirection(p1x, p1y, p2x, p2y, p3x, p3y) {\n var expression1 = (p3y - p1y) * (p2x - p1x);\n var expression2 = (p2y - p1y) * (p3x - p1x);\n\n if (expression1 > expression2) {\n return 1;\n } else if (expression1 === expression2) {\n return 0;\n }\n\n return -1;\n}\n\nfunction intersect(link1, link2) {\n var f1 = rotationDirection(link1.x0, link1.y0, link1.x1, link1.y1, link2.x1, link2.y1);\n var f2 = rotationDirection(link1.x0, link1.y0, link1.x1, link1.y1, link2.x0, link2.y0);\n var f3 = rotationDirection(link1.x0, link1.y0, link2.x0, link2.y0, link2.x1, link2.y1);\n var f4 = rotationDirection(link1.x1, link1.y1, link2.x0, link2.y0, link2.x1, link2.y1);\n\n return f1 !== f2 && f3 !== f4;\n}\n","import {\n Class,\n deepExtend\n} from '../common';\n\nexport var SankeyElement = (function (Class) {\n function SankeyElement(options) {\n Class.call(this);\n this.options = deepExtend({}, this.options, options);\n this.createVisual();\n }\n\n if ( Class ) SankeyElement.__proto__ = Class;\n SankeyElement.prototype = Object.create( Class && Class.prototype );\n SankeyElement.prototype.constructor = SankeyElement;\n\n SankeyElement.prototype.createVisual = function createVisual () {\n this.visual = this.createElement();\n };\n\n SankeyElement.prototype.exportVisual = function exportVisual () {\n return this.visual;\n };\n\n SankeyElement.prototype.createElement = function createElement () {\n var this$1 = this;\n\n var customVisual = this.options.visual;\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n sender: this.getSender(),\n options: this.visualOptions(),\n createVisual: function () { return this$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n };\n\n SankeyElement.prototype.getSender = function getSender () {\n return this;\n };\n\n return SankeyElement;\n}(Class));\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { SankeyElement } from './element';\nimport { deepExtend } from '../common';\nimport { ARIA_ACTIVE_DESCENDANT } from '../common/constants';\n\nexport var Node = (function (SankeyElement) {\n function Node () {\n SankeyElement.apply(this, arguments);\n }\n\n if ( SankeyElement ) Node.__proto__ = SankeyElement;\n Node.prototype = Object.create( SankeyElement && SankeyElement.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.getElement = function getElement () {\n return drawing.Path.fromRect(this.getRect(), this.visualOptions());\n };\n\n Node.prototype.getRect = function getRect () {\n var node = this.options.node;\n return new geometry.Rect([node.x0, node.y0], [node.x1 - node.x0, node.y1 - node.y0]);\n };\n\n Node.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = options.labels.ariaTemplate;\n\n if (labelTemplate) {\n return labelTemplate({ node: options.node });\n }\n };\n\n Node.prototype.visualOptions = function visualOptions () {\n var options = deepExtend({}, this.options, this.options.node);\n var ariaLabel = this.getLabelText(options);\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: { width: 0 },\n className: 'k-sankey-node',\n role: 'graphics-symbol',\n ariaRoleDescription: 'Node',\n ariaLabel: ariaLabel\n };\n };\n\n Node.prototype.createFocusHighlight = function createFocusHighlight () {\n if (!this.options.navigatable) {\n return;\n }\n\n this._highlight = drawing.Path.fromRect(this.getRect(), {\n stroke: this.options.focusHighlight,\n visible: false\n });\n\n return this._highlight;\n };\n\n Node.prototype.focus = function focus (options) {\n if (this._highlight) {\n var ref = options || {};\n var highlight = ref.highlight; if ( highlight === void 0 ) highlight = true;\n if (highlight) {\n this._highlight.options.set('visible', true);\n }\n var id = this.options.node.id;\n this.visual.options.set('id', id);\n\n if (this.options.root()) {\n this.options.root().setAttribute(ARIA_ACTIVE_DESCENDANT, id);\n }\n }\n };\n\n Node.prototype.blur = function blur () {\n if (this._highlight) {\n this._highlight.options.set('visible', false);\n this.visual.options.set('id', '');\n\n if (this.options.root()) {\n this.options.root().removeAttribute(ARIA_ACTIVE_DESCENDANT);\n }\n }\n };\n\n return Node;\n}(SankeyElement));\n\nvar nodeColor = function (node, nodeColors, index) { return node.color || nodeColors[index % nodeColors.length]; };\n\nexport var resolveNodeOptions = function (node, options, nodeColors, index) {\n var nodeOptions = deepExtend({}, options, options.node);\n return deepExtend({},\n { color: nodeColor(node, nodeColors, index) },\n nodeOptions,\n { node: node },\n {\n visual: node.visual,\n opacity: node.opacity,\n offset: node.offset,\n color: node.color\n }\n );\n};\n","import { drawing } from '@progress/kendo-drawing';\nimport { SankeyElement } from './element';\nimport { deepExtend } from '../common';\nimport { defined } from '../drawing-utils';\nimport { ARIA_ACTIVE_DESCENDANT } from '../common/constants';\n\nvar distanceToLine = function (line, point) {\n var ref = line[0];\n var x1 = ref[0];\n var y1 = ref[1];\n var ref$1 = line[1];\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var x3 = point[0];\n var y3 = point[1];\n\n return Math.abs((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / Math.sqrt(Math.pow( (x2 - x1), 2 ) + Math.pow( (y2 - y1), 2 ));\n};\n\nvar bezierPoint = function (p1, p2, p3, p4, t) {\n var t1 = 1 - t;\n var t1t1 = t1 * t1;\n var tt = t * t;\n return (p1 * t1t1 * t1) + (3 * p2 * t * t1t1) + (3 * p3 * tt * t1) + (p4 * tt * t);\n};\n\nvar angelBetweenTwoLines = function (line1, line2) {\n var ref = line1[0];\n var x1 = ref[0];\n var y1 = ref[1];\n var ref$1 = line1[1];\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var ref$2 = line2[0];\n var x3 = ref$2[0];\n var y3 = ref$2[1];\n var ref$3 = line2[1];\n var x4 = ref$3[0];\n var y4 = ref$3[1];\n\n var a1 = Math.atan2(y2 - y1, x2 - x1);\n var a2 = Math.atan2(y4 - y3, x4 - x3);\n\n return Math.abs(a1 - a2);\n};\n\nvar calculateControlPointsOffsetX = function (link, rtl) {\n var x0 = link.x0;\n var x1 = link.x1;\n var y0 = link.y0;\n var y1 = link.y1;\n var xC = (x0 + x1) / 2;\n\n var width = link.width;\n var halfWidth = width / 2;\n\n // upper curve, t = 0.5\n var upperCurveMiddleLine = [[(x0 + xC) / 2, y0 - halfWidth], [(x1 + xC) / 2, y1 - halfWidth]];\n\n // for lower curve, bezier-point at t = 0.5\n // for the case t = 0.5, the bezier-point is the middle point of the curve. => ((y0 + halfWidth) + (y1 + halfWidth)) / 2\n var lowerCurveMiddlePoint = [xC, bezierPoint(y0 + halfWidth, y0 + halfWidth, y1 + halfWidth, y1 + halfWidth, 0.5)];\n\n // The actual width of the link at its middle point as can be seen on the screen.\n var actualWidth = distanceToLine(upperCurveMiddleLine, lowerCurveMiddlePoint);\n\n var upperNarrowness = (width - actualWidth) / 2;\n\n // The line `upperCurveMiddleLine` shows the upper border of the link.\n // Assumption 1: Translated to the left to the desired link width and the translate value will be the `offset`.\n // Assumption 2: The translate value is a hypotenuse of a triangle.\n var alpha = angelBetweenTwoLines(upperCurveMiddleLine, [[x0, y0 - halfWidth], [xC, y0 - halfWidth]]);\n var a = upperNarrowness;\n var b = Math.sin(alpha) * a;\n var offset = Math.sqrt(a * a + b * b);\n // Another option is to assume the triangle is isosceles\n // => offset = Math.sqrt(2) * upperNarrowness;\n\n var sign = y0 - y1 > 0 ? (-1) : 1;\n if (rtl) {\n sign = -sign;\n }\n\n return sign * offset;\n};\n\nexport var Link = (function (SankeyElement) {\n function Link () {\n SankeyElement.apply(this, arguments);\n }\n\n if ( SankeyElement ) Link.__proto__ = SankeyElement;\n Link.prototype = Object.create( SankeyElement && SankeyElement.prototype );\n Link.prototype.constructor = Link;\n\n Link.prototype.getElement = function getElement () {\n var link = this.options.link;\n var x0 = link.x0;\n var x1 = link.x1;\n var y0 = link.y0;\n var y1 = link.y1;\n var xC = (x0 + x1) / 2;\n\n return new drawing.Path(this.visualOptions())\n .moveTo(x0, y0).curveTo([xC, y0], [xC, y1], [x1, y1]);\n };\n\n Link.prototype.getLabelText = function getLabelText (options) {\n var labelTemplate = options.labels.ariaTemplate;\n\n if (labelTemplate) {\n return labelTemplate({ link: options.link });\n }\n };\n\n Link.prototype.visualOptions = function visualOptions () {\n var options = this.options;\n var link = this.options.link;\n var ariaLabel = this.getLabelText(options);\n\n return {\n stroke: {\n width: options.link.width,\n color: link.color || options.color,\n opacity: defined(link.opacity) ? link.opacity : options.opacity\n },\n role: 'graphics-symbol',\n ariaRoleDescription: 'Link',\n ariaLabel: ariaLabel\n };\n };\n\n Link.prototype.createFocusHighlight = function createFocusHighlight () {\n if (!this.options.navigatable) {\n return;\n }\n var ref = this.options;\n var link = ref.link;\n var rtl = ref.rtl;\n var x0 = link.x0;\n var x1 = link.x1;\n var y0 = link.y0;\n var y1 = link.y1;\n var xC = (x0 + x1) / 2;\n var halfWidth = link.width / 2;\n\n var offset = calculateControlPointsOffsetX(link, rtl);\n\n this._highlight = new drawing.Path({ stroke: this.options.focusHighlight, visible: false })\n .moveTo(x0, y0 + halfWidth)\n .lineTo(x0, y0 - halfWidth)\n .curveTo([xC + offset, y0 - halfWidth], [xC + offset, y1 - halfWidth], [x1, y1 - halfWidth])\n .lineTo(x1, y1 + halfWidth)\n .curveTo([xC - offset, y1 + halfWidth], [xC - offset, y0 + halfWidth], [x0, y0 + halfWidth]);\n };\n\n Link.prototype.focus = function focus (options) {\n if (this._highlight) {\n var ref = options || {};\n var highlight = ref.highlight; if ( highlight === void 0 ) highlight = true;\n if (highlight) {\n this._highlight.options.set('visible', true);\n }\n var id = (this.options.link.sourceId) + \"->\" + (this.options.link.targetId);\n this.visual.options.set('id', id);\n\n if (this.options.root()) {\n this.options.root().setAttribute(ARIA_ACTIVE_DESCENDANT, id);\n }\n }\n };\n\n Link.prototype.blur = function blur () {\n if (this._highlight) {\n this._highlight.options.set('visible', false);\n this.visual.options.set('id', '');\n\n if (this.options.root()) {\n this.options.root().removeAttribute(ARIA_ACTIVE_DESCENDANT);\n }\n }\n };\n\n return Link;\n}(SankeyElement));\n\nexport var resolveLinkOptions = function (link, options, sourceNode, targetNode) {\n var linkOptions = deepExtend({},\n options,\n {\n link: link,\n opacity: link.opacity,\n color: link.color,\n colorType: link.colorType,\n visual: link.visual,\n highlight: link.highlight\n }\n );\n\n if (linkOptions.colorType === 'source') {\n linkOptions.color = sourceNode.options.fill.color;\n } else if (linkOptions.colorType === 'target') {\n linkOptions.color = targetNode.options.fill.color;\n }\n\n return linkOptions;\n};\n","import { setDefaultOptions, deepExtend } from '../common';\nimport { SankeyElement } from './element';\nimport { Box, TextBox } from '../core';\nvar INSIDE = 'inside';\nvar BEFORE = 'before';\nvar AFTER = 'after';\n\nexport var Label = (function (SankeyElement) {\n function Label () {\n SankeyElement.apply(this, arguments);\n }\n\n if ( SankeyElement ) Label.__proto__ = SankeyElement;\n Label.prototype = Object.create( SankeyElement && SankeyElement.prototype );\n Label.prototype.constructor = Label;\n\n Label.prototype.getElement = function getElement () {\n var options = deepExtend({}, this.options, this.options.node.label);\n var node = options.node;\n var diagramMinX = options.diagramMinX;\n var diagramMaxX = options.diagramMaxX;\n var text = options.text;\n var offset = options.offset;\n var rtl = options.rtl;\n var position = options.position;\n if (rtl && position !== INSIDE) {\n position = position === BEFORE ? AFTER : BEFORE;\n }\n\n if (!options.visible || !text) {\n return null;\n }\n\n var nodeBox = new Box(node.x0, node.y0, node.x1, node.y1);\n var visualOptions = this.visualOptions();\n if (rtl && !visualOptions.align) {\n visualOptions.align = 'right';\n }\n var textbox = new TextBox(text, visualOptions);\n textbox.reflow(new Box());\n var textSizeBox = textbox.box;\n var textY = nodeBox.center().y - (textSizeBox.height() / 2);\n\n var labelAfterLastNode = node.x1 + textSizeBox.width() > diagramMaxX;\n var labelBeforeFirstNode = node.x0 - textSizeBox.width() < diagramMinX;\n var side = position === BEFORE || (position === INSIDE && labelAfterLastNode) ? BEFORE : AFTER;\n if (rtl) {\n side = position === AFTER || (position === INSIDE && labelBeforeFirstNode) ? AFTER : BEFORE;\n }\n var textOrigin = [side === BEFORE ? node.x0 - textSizeBox.width() : node.x1, textY];\n\n var textRect = new Box(textOrigin[0], textOrigin[1], textOrigin[0] + textSizeBox.width(), textOrigin[1] + textSizeBox.height());\n textRect.translate(offset.left || 0, offset.top || 0);\n textbox.reflow(textRect);\n\n textbox.renderVisual();\n\n return textbox.visual;\n };\n\n Label.prototype.visualOptions = function visualOptions () {\n var options = deepExtend({}, this.options, this.options.node.label);\n return {\n color: options.color,\n font: options.font,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n align: options.align,\n paintOrder: options.paintOrder,\n stroke: options.stroke,\n };\n };\n\n return Label;\n}(SankeyElement));\n\nsetDefaultOptions(Label, {\n position: INSIDE, // inside, before, after\n});\n\nexport var resolveLabelOptions = function (node, options, rtl, diagramMinX, diagramMaxX) { return deepExtend({},\n options,\n {\n node: node,\n diagramMinX: diagramMinX,\n diagramMaxX: diagramMaxX,\n rtl: rtl,\n visual: node.label.visual,\n visible: node.label.visible,\n margin: node.label.margin,\n padding: node.label.padding,\n border: node.label.border,\n align: node.label.align,\n offset: node.label.offset\n }\n); };\n","import { Title as ChartTitle } from \"../core\";\nimport { SankeyElement } from \"./element\";\nimport { setDefaultOptions, getSpacing } from '../common';\nimport { CENTER } from \"../common/constants\";\n\nexport var Title = (function (SankeyElement) {\n function Title () {\n SankeyElement.apply(this, arguments);\n }\n\n if ( SankeyElement ) Title.__proto__ = SankeyElement;\n Title.prototype = Object.create( SankeyElement && SankeyElement.prototype );\n Title.prototype.constructor = Title;\n\n Title.prototype.getElement = function getElement () {\n var options = this.options;\n var drawingRect = options.drawingRect;\n var text = options.text;\n\n if (options.visible === false || !text) {\n return null;\n }\n\n var title = ChartTitle.buildTitle(text, options);\n\n title.reflow(drawingRect);\n\n title.renderVisual();\n return title.visual;\n };\n\n Title.prototype.createElement = function createElement () {\n return this.getElement();\n };\n\n return Title;\n}(SankeyElement));\n\nsetDefaultOptions(Title, {\n align: CENTER, // 'left', 'right', 'center'\n border: {\n width: 0\n },\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n","import { default as ChartLegend } from \"../chart/legend/legend\";\nimport { SankeyElement } from \"./element\";\nimport { setDefaultOptions } from '../common';\nimport { BOTTOM, CENTER, LEFT, POINTER, RIGHT } from \"../common/constants\";\nimport { AREA } from \"../chart/constants\";\n\nvar sortData = function (a, b) {\n if (a.node.x0 - b.node.x0 !== 0) {\n return a.node.x0 - b.node.x0;\n }\n return a.node.y0 - b.node.y0;\n};\n\nvar sortDataRTL = function (a, b) {\n if (a.node.x1 - b.node.x1 !== 0) {\n return a.node.x1 - b.node.x1;\n }\n return b.node.y0 - a.node.y0;\n};\n\nvar sort = function (rtl) { return (rtl ? sortDataRTL : sortData); };\n\nexport var Legend = (function (SankeyElement) {\n function Legend () {\n SankeyElement.apply(this, arguments);\n }\n\n if ( SankeyElement ) Legend.__proto__ = SankeyElement;\n Legend.prototype = Object.create( SankeyElement && SankeyElement.prototype );\n Legend.prototype.constructor = Legend;\n\n Legend.prototype.getElement = function getElement () {\n var options = this.options;\n var drawingRect = options.drawingRect;\n var rtl = options.rtl;\n var nodes = options.nodes; if ( nodes === void 0 ) nodes = [];\n var item = options.item;\n var position = options.position;\n\n if (options.visible === false || !nodes.length) {\n return null;\n }\n\n var data = nodes.map(function (node) { return ({\n text: (node.label && node.label.text) || '',\n area: {\n background: item.areaBackground !== undefined ? item.areaBackground : node.color,\n opacity: item.areaOpacity !== undefined ? item.areaOpacity : node.opacity\n },\n node: node\n }); });\n\n data.sort(sort(rtl));\n\n var reverse = rtl && position !== LEFT && position !== RIGHT;\n var legend = new ChartLegend(Object.assign({}, options, {data: data, reverse: reverse}), { rtl: rtl });\n legend.reflow(drawingRect);\n\n legend.renderVisual();\n return legend.visual;\n };\n\n Legend.prototype.createElement = function createElement () {\n return this.getElement();\n };\n\n return Legend;\n}(SankeyElement));\n\nsetDefaultOptions(Legend, {\n markers: { visible: false },\n item: {\n type: AREA,\n cursor: POINTER,\n opacity: 1\n },\n position: BOTTOM,\n align: CENTER,\n accessibility: {\n role: 'presentation',\n ariaLabel: null,\n ariaRoleDescription: null\n },\n border: {\n width: 0\n }\n});\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, addClass, Observable, setDefaultOptions } from '../common';\nimport { calculateSankey, crossesValue } from './calculation';\nimport { Node, resolveNodeOptions } from './node';\nimport { Link, resolveLinkOptions } from './link';\nimport { Label, resolveLabelOptions } from './label';\nimport { Title } from './title';\nimport { BLACK, BOTTOM, LEFT, RIGHT, TOP } from '../common/constants';\nimport { Box, rectToBox } from '../core';\nimport { Legend } from './legend';\nimport { defined } from '../drawing-utils';\n\nvar LINK = 'link';\nvar NODE = 'node';\n\nvar toRtl = function (sankey) {\n var nodes = sankey.nodes;\n var links = sankey.links;\n var startX = Math.min.apply(Math, nodes.map(function (node) { return node.x0; }));\n var endX = Math.max.apply(Math, nodes.map(function (node) { return node.x1; }));\n var width = endX - startX;\n\n nodes.forEach(function (node) {\n var x0 = width - (node.x1 - 2 * startX);\n var x1 = width - (node.x0 - 2 * startX);\n node.x0 = x0;\n node.x1 = x1;\n });\n\n links.forEach(function (link) {\n var x0 = width - (link.x1 - 2 * startX);\n var x1 = width - (link.x0 - 2 * startX);\n link.x1 = x0;\n link.x0 = x1;\n });\n};\n\nexport var Sankey = (function (Observable) {\n function Sankey(element, options, theme) {\n Observable.call(this);\n\n this._initTheme(theme);\n this._setOptions(options);\n this._initElement(element);\n this._initSurface();\n\n if (options && options.data) {\n this._redraw();\n this._initResizeObserver();\n this._initNavigation(element);\n }\n }\n\n if ( Observable ) Sankey.__proto__ = Observable;\n Sankey.prototype = Object.create( Observable && Observable.prototype );\n Sankey.prototype.constructor = Sankey;\n\n Sankey.prototype.destroy = function destroy () {\n this.unbind();\n this._destroySurface();\n this._destroyResizeObserver();\n\n if (this.element) {\n this.element.removeEventListener('keydown', this._keydownHandler);\n this.element.removeEventListener('focus', this._focusHandler);\n this.element.removeEventListener('mousedown', this._onDownHandler);\n this.element.removeEventListener('touchstart', this._onDownHandler);\n this.element.removeEventListener('pointerdown', this._onDownHandler);\n }\n\n this._focusState = null;\n\n this.element = null;\n };\n\n Sankey.prototype._initElement = function _initElement (element) {\n this.element = element;\n addClass(element, [ \"k-chart\", \"k-sankey\" ]);\n element.setAttribute('role', 'graphics-document');\n\n var ref = this.options;\n var title = ref.title;\n\n if (title.text) {\n element.setAttribute('aria-label', title.text);\n }\n\n if (title.description) {\n element.setAttribute(\"aria-roledescription\", title.description);\n }\n };\n\n Sankey.prototype._initSurface = function _initSurface () {\n if (!this.surface) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n };\n\n Sankey.prototype._initNavigation = function _initNavigation (element) {\n element.tabIndex = element.getAttribute(\"tabindex\") || 0;\n\n if (this.options.disableKeyboardNavigation) {\n return;\n }\n\n this._keydownHandler = this._keydown.bind(this);\n this._focusHandler = this._focus.bind(this);\n this._blurHandler = this._blur.bind(this);\n this._onDownHandler = this._onDown.bind(this);\n\n element.addEventListener('keydown', this._keydownHandler);\n element.addEventListener('focus', this._focusHandler);\n element.addEventListener('blur', this._blurHandler);\n element.addEventListener('mousedown', this._onDownHandler);\n element.addEventListener('touchstart', this._onDownHandler);\n element.addEventListener('pointerdown', this._onDownHandler);\n\n this._focusState = {\n node: this.firstFocusableNode(),\n link: null\n };\n };\n\n Sankey.prototype.firstFocusableNode = function firstFocusableNode () {\n return this.columns[0][0];\n };\n\n Sankey.prototype._initResizeObserver = function _initResizeObserver () {\n var this$1 = this;\n\n var observer = new ResizeObserver(function (entries) {\n entries.forEach(function (entry) {\n var ref = entry.contentRect;\n var width = ref.width;\n var height = ref.height;\n if (entry.target !== this$1.element ||\n (this$1.size && this$1.size.width === width && this$1.size.height === height)) {\n return;\n }\n this$1.size = { width: width, height: height };\n this$1.surface.setSize(this$1.size);\n this$1.resize = true;\n this$1._redraw();\n });\n });\n this._resizeObserver = observer;\n observer.observe(this.element);\n };\n\n Sankey.prototype._createSurface = function _createSurface () {\n return drawing.Surface.create(this.surfaceElement, {\n mouseenter: this._mouseenter.bind(this),\n mouseleave: this._mouseleave.bind(this),\n mousemove: this._mousemove.bind(this),\n click: this._click.bind(this)\n });\n };\n\n Sankey.prototype._initTheme = function _initTheme (theme) {\n var currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n this.options = deepExtend({}, currentTheme, this.options);\n };\n\n Sankey.prototype.setLinksOpacity = function setLinksOpacity (opacity) {\n var this$1 = this;\n\n this.linksVisuals.forEach(function (link) {\n this$1.setOpacity(link, opacity, link.linkOptions.opacity);\n });\n };\n\n Sankey.prototype.setLinksInactivityOpacity = function setLinksInactivityOpacity (inactiveOpacity) {\n var this$1 = this;\n\n this.linksVisuals.forEach(function (link) {\n this$1.setOpacity(link, inactiveOpacity, link.linkOptions.highlight.inactiveOpacity);\n });\n };\n\n Sankey.prototype.setOpacity = function setOpacity (link, opacity, linkValue) {\n link.options.set('stroke', Object.assign({}, link.options.stroke,\n {opacity: defined(linkValue) ? linkValue : opacity}));\n };\n\n Sankey.prototype.trigger = function trigger (name, ev) {\n var dataItem = ev.element.dataItem;\n var targetType = ev.element.type;\n\n var event = Object.assign({}, ev,\n {type: name,\n targetType: targetType,\n dataItem: dataItem});\n\n return Observable.prototype.trigger.call(this, name, event);\n };\n\n Sankey.prototype._mouseenter = function _mouseenter (ev) {\n var element = ev.element;\n var isLink = element.type === LINK;\n var isNode = element.type === NODE;\n var isLegendItem = Boolean(element.chartElement && element.chartElement.options.node);\n\n if ((isLink && this.trigger('linkEnter', ev)) ||\n (isNode && this.trigger('nodeEnter', ev))) {\n return;\n }\n\n var ref = this.options.links;\n var highlight = ref.highlight;\n if (isLink) {\n this.setLinksInactivityOpacity(highlight.inactiveOpacity);\n this.setOpacity(element, highlight.opacity, element.linkOptions.highlight.opacity);\n } else if (isNode) {\n this.highlightLinks(element, highlight);\n } else if (isLegendItem) {\n var nodeVisual = this.nodesVisuals.get(element.chartElement.options.node.id);\n this.highlightLinks(nodeVisual, highlight);\n }\n };\n\n Sankey.prototype._mouseleave = function _mouseleave (ev) {\n var this$1 = this;\n\n var element = ev.element;\n var isLink = element.type === LINK;\n var isNode = element.type === NODE;\n var isLegendItem = Boolean(element.chartElement && element.chartElement.options.node);\n var target = ev.originalEvent.relatedTarget;\n\n if (isLink && target && target.nodeName === 'text') {\n return;\n }\n\n if (isLink || isNode) {\n if (this.tooltipTimeOut) {\n clearTimeout(this.tooltipTimeOut);\n this.tooltipTimeOut = null;\n }\n this.tooltipShown = false;\n this.trigger('tooltipHide', ev);\n }\n\n if ((isLink && this.trigger('linkLeave', ev)) ||\n (isNode && this.trigger('nodeLeave', ev))) {\n return;\n }\n\n if (isLink || isNode || isLegendItem) {\n this.linksVisuals.forEach(function (link) {\n this$1.setOpacity(link, this$1.options.links.opacity, link.linkOptions.opacity);\n });\n }\n };\n\n Sankey.prototype._mousemove = function _mousemove (ev) {\n var this$1 = this;\n\n var ref = this.options.tooltip;\n var followPointer = ref.followPointer;\n var delay = ref.delay;\n var element = ev.element;\n var tooltipElType = element.type;\n\n if ((tooltipElType !== LINK && tooltipElType !== NODE) || (this.tooltipShown && !followPointer)) {\n return;\n }\n\n var mouseEvent = ev.originalEvent;\n var rect = this.element.getBoundingClientRect();\n var isLeft = mouseEvent.clientX - rect.left < rect.width / 2;\n var isTop = mouseEvent.clientY - rect.top < rect.height / 2;\n\n ev.tooltipData = {\n popupOffset: {\n left: mouseEvent.pageX,\n top: mouseEvent.pageY\n },\n popupAlign: {\n horizontal: isLeft ? 'left' : 'right',\n vertical: isTop ? 'top' : 'bottom'\n }\n };\n\n if (tooltipElType === NODE) {\n var ref$1 = element.dataItem;\n var sourceLinks = ref$1.sourceLinks;\n var targetLinks = ref$1.targetLinks;\n var links = targetLinks.length ? targetLinks : sourceLinks;\n ev.nodeValue = links.reduce(function (acc, link) { return acc + link.value; }, 0);\n }\n\n if (this.tooltipTimeOut) {\n clearTimeout(this.tooltipTimeOut);\n this.tooltipTimeOut = null;\n }\n\n var nextDelay = followPointer && this.tooltipShown ? 0 : delay;\n\n this.tooltipTimeOut = setTimeout(function () {\n this$1.trigger('tooltipShow', ev);\n this$1.tooltipShown = true;\n this$1.tooltipTimeOut = null;\n }, nextDelay);\n };\n\n Sankey.prototype._click = function _click (ev) {\n var element = ev.element;\n var dataItem = element.dataItem;\n var isLink = element.type === LINK;\n var isNode = element.type === NODE;\n var focusState = this._focusState || {};\n\n if (isNode) {\n var focusedNodeClicked = !focusState.link && this.sameNode(focusState.node, dataItem);\n\n if (!focusedNodeClicked) {\n this._focusState = { node: dataItem, link: null };\n this._focusNode({ highlight: false });\n }\n\n this.trigger('nodeClick', ev);\n } else if (isLink) {\n var link = {\n sourceId: dataItem.source.id,\n targetId: dataItem.target.id,\n value: dataItem.value\n };\n var focusedLinkClicked = this.sameLink(focusState.link, link);\n\n if (!focusedLinkClicked) {\n this._focusState = { node: dataItem.source, link: link };\n this._focusLink({ highlight: false });\n }\n\n this.trigger('linkClick', ev);\n }\n };\n\n Sankey.prototype.sameNode = function sameNode (node1, node2) {\n return node1 && node2 && node1.id === node2.id;\n };\n\n Sankey.prototype.sameLink = function sameLink (link1, link2) {\n return link1 && link2 && link1.sourceId === link2.sourceId && link1.targetId === link2.targetId;\n };\n\n Sankey.prototype._focusNode = function _focusNode (options) {\n this._cleanFocusHighlight();\n\n var nodeData = this._focusState.node;\n var node = this.models.map.get(nodeData.id);\n node.focus(options);\n };\n\n Sankey.prototype._focusLink = function _focusLink (options) {\n this._cleanFocusHighlight();\n\n var linkData = this._focusState.link;\n var link = this.models.map.get(((linkData.sourceId) + \"-\" + (linkData.targetId)));\n link.focus(options);\n };\n\n Sankey.prototype._focusNextNode = function _focusNextNode (direction) {\n if ( direction === void 0 ) direction = 1;\n\n var current = this._focusState.node;\n\n var columnIndex = this.columns.findIndex(function (column) { return column.find(function (n) { return n.id === current.id; }); });\n var columnNodes = this.columns[columnIndex];\n var nodeIndex = columnNodes.findIndex(function (n) { return n.id === current.id; });\n\n var nextNode = columnNodes[nodeIndex + direction];\n if (nextNode) {\n this._focusState.node = nextNode;\n this._focusNode();\n }\n };\n\n Sankey.prototype._focusNextLink = function _focusNextLink (direction) {\n if ( direction === void 0 ) direction = 1;\n\n var node = this._focusState.node;\n var link = this._focusState.link;\n\n var sourceLinkIndex = node.sourceLinks.findIndex(function (l) { return l.sourceId === link.sourceId && l.targetId === link.targetId; });\n var targetLinkIndex = node.targetLinks.findIndex(function (l) { return l.sourceId === link.sourceId && l.targetId === link.targetId; });\n\n if (sourceLinkIndex !== -1) {\n var nextLink = node.sourceLinks[sourceLinkIndex + direction];\n\n if (nextLink) {\n this._focusState.link = nextLink;\n this._focusLink();\n }\n } else if (targetLinkIndex !== -1) {\n var nextLink$1 = node.targetLinks[targetLinkIndex + direction];\n\n if (nextLink$1) {\n this._focusState.link = nextLink$1;\n this._focusLink();\n }\n }\n };\n\n Sankey.prototype._focusSourceNode = function _focusSourceNode () {\n var linkData = this._focusState.link;\n var sourceNode = this.models.map.get(linkData.sourceId);\n this._focusState = { node: sourceNode.options.node, link: null };\n this._focusNode();\n };\n\n Sankey.prototype._focusTargetNode = function _focusTargetNode () {\n var linkData = this._focusState.link;\n var targetNode = this.models.map.get(linkData.targetId);\n this._focusState = { node: targetNode.options.node, link: null };\n this._focusNode();\n };\n\n Sankey.prototype._focusSourceLink = function _focusSourceLink () {\n var nodeData = this._focusState.node;\n var sourceLinks = nodeData.sourceLinks;\n var linkData = sourceLinks[0];\n if (linkData) {\n this._focusState.link = linkData;\n this._focusLink();\n }\n };\n\n Sankey.prototype._focusTargetLink = function _focusTargetLink () {\n var nodeData = this._focusState.node;\n var targetLinks = nodeData.targetLinks;\n var linkData = targetLinks[0];\n if (linkData) {\n this._focusState.link = linkData;\n this._focusLink();\n }\n };\n\n Sankey.prototype._focus = function _focus () {\n if (!this._skipFocusHighlight) {\n if (this._focusState.link) {\n this._focusLink();\n } else {\n this._focusNode();\n }\n }\n\n this._skipFocusHighlight = false;\n };\n\n Sankey.prototype._blur = function _blur () {\n this._cleanFocusHighlight();\n };\n\n Sankey.prototype._onDown = function _onDown () {\n if (!this._hasFocus()) {\n this._skipFocusHighlight = true;\n }\n };\n\n Sankey.prototype._hasFocus = function _hasFocus () {\n return this.element.ownerDocument.activeElement === this.element;\n };\n\n Sankey.prototype._cleanFocusHighlight = function _cleanFocusHighlight () {\n this.models.nodes.forEach(function (node) { return node.blur(); });\n this.models.links.forEach(function (link) { return link.blur(); });\n };\n\n Sankey.prototype._keydown = function _keydown (ev) {\n var handler = this['on' + ev.key];\n var rtl = this.options.rtl;\n\n if (rtl && ev.key === 'ArrowLeft') {\n handler = this.onArrowRight;\n } else if (rtl && ev.key === 'ArrowRight') {\n handler = this.onArrowLeft;\n }\n\n if (handler) {\n handler.call(this, ev);\n }\n };\n\n Sankey.prototype.onEscape = function onEscape (ev) {\n ev.preventDefault();\n\n this._focusState = { node: this.firstFocusableNode(), link: null };\n this._focusNode();\n };\n\n Sankey.prototype.onArrowDown = function onArrowDown (ev) {\n ev.preventDefault();\n\n if (this._focusState.link) {\n this._focusNextLink(1);\n } else {\n this._focusNextNode(1);\n }\n };\n\n Sankey.prototype.onArrowUp = function onArrowUp (ev) {\n ev.preventDefault();\n\n if (this._focusState.link) {\n this._focusNextLink(-1);\n } else {\n this._focusNextNode(-1);\n }\n };\n\n Sankey.prototype.onArrowLeft = function onArrowLeft (ev) {\n ev.preventDefault();\n\n if (this._focusState.link) {\n this._focusSourceNode();\n } else {\n this._focusTargetLink();\n }\n };\n\n Sankey.prototype.onArrowRight = function onArrowRight (ev) {\n ev.preventDefault();\n\n if (this._focusState.link) {\n this._focusTargetNode();\n } else {\n this._focusSourceLink();\n }\n };\n\n Sankey.prototype.highlightLinks = function highlightLinks (node, highlight) {\n var this$1 = this;\n\n if (node) {\n this.setLinksInactivityOpacity(highlight.inactiveOpacity);\n node.links.forEach(function (link) {\n this$1.setOpacity(link, highlight.opacity, link.linkOptions.highlight.opacity);\n });\n }\n };\n\n Sankey.prototype._destroySurface = function _destroySurface () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n };\n\n Sankey.prototype._destroyResizeObserver = function _destroyResizeObserver () {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = null;\n }\n };\n\n Sankey.prototype._initSurfaceElement = function _initSurfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n };\n\n Sankey.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n };\n\n Sankey.prototype.setOptions = function setOptions (options, theme) {\n this._setOptions(options);\n this._initTheme(theme);\n this._initSurface();\n this._redraw();\n };\n\n Sankey.prototype._redraw = function _redraw () {\n this.surface.clear();\n\n var ref = this._getSize();\n var width = ref.width;\n var height = ref.height;\n this.size = { width: width, height: height };\n this.surface.setSize(this.size);\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n };\n\n Sankey.prototype._getSize = function _getSize () {\n return this.element.getBoundingClientRect();\n };\n\n Sankey.prototype.createVisual = function createVisual () {\n this.visual = this._render();\n };\n\n Sankey.prototype.titleBox = function titleBox (title, drawingRect) {\n if (!title || title.visible === false || !title.text) {\n return null;\n }\n\n var titleElement = new Title(Object.assign({}, {drawingRect: drawingRect}, title));\n var titleVisual = titleElement.exportVisual();\n return titleVisual.chartElement.box;\n };\n\n Sankey.prototype.legendBox = function legendBox (options, nodes, drawingRect) {\n if (!options || options.visible === false) {\n return null;\n }\n\n var legend = new Legend(Object.assign({}, {nodes: nodes}, options, {drawingRect: drawingRect}));\n var legendVisual = legend.exportVisual();\n\n return legendVisual.chartElement.box;\n };\n\n Sankey.prototype.calculateSankey = function calculateSankey$1 (calcOptions, sankeyOptions) {\n var title = sankeyOptions.title;\n var legend = sankeyOptions.legend;\n var data = sankeyOptions.data;\n var nodes = sankeyOptions.nodes;\n var labels = sankeyOptions.labels;\n var nodeColors = sankeyOptions.nodeColors;\n var disableAutoLayout = sankeyOptions.disableAutoLayout;\n var disableKeyboardNavigation = sankeyOptions.disableKeyboardNavigation;\n var rtl = sankeyOptions.rtl;\n var autoLayout = !disableAutoLayout;\n var padding = disableKeyboardNavigation ? 0 : highlightOptions.width / 2;\n\n var sankeyBox = new Box(0, 0, calcOptions.width, calcOptions.height);\n sankeyBox.unpad(padding);\n\n var titleBox = this.titleBox(title, sankeyBox);\n\n var legendArea = sankeyBox.clone();\n\n if (titleBox) {\n var titleHeight = titleBox.height();\n if (title.position === TOP) {\n sankeyBox.unpad({ top: titleHeight });\n legendArea = new Box(0, titleHeight, calcOptions.width, calcOptions.height);\n } else {\n sankeyBox.shrink(0, titleHeight);\n legendArea = new Box(0, 0, calcOptions.width, calcOptions.height - titleHeight);\n }\n }\n\n var legendBox = this.legendBox(legend, data.nodes, legendArea);\n var legendPosition = (legend && legend.position) || Legend.prototype.options.position;\n\n if (legendBox) {\n if (legendPosition === LEFT) {\n sankeyBox.unpad({ left: legendBox.width() });\n }\n\n if (legendPosition === RIGHT) {\n sankeyBox.shrink(legendBox.width(), 0);\n }\n\n if (legendPosition === TOP) {\n sankeyBox.unpad({ top: legendBox.height() });\n }\n\n if (legendPosition === BOTTOM) {\n sankeyBox.shrink(0, legendBox.height());\n }\n }\n\n var ref = calculateSankey(Object.assign({}, calcOptions, {offsetX: 0, offsetY: 0, width: sankeyBox.width(), height: sankeyBox.height()}));\n var calculatedNodes = ref.nodes;\n var circularLinks = ref.circularLinks;\n if (circularLinks) {\n console.warn('Circular links detected. Kendo Sankey diagram does not support circular links.');\n return { sankey: { nodes: [], links: [], columns: [[]], circularLinks: circularLinks }, legendBox: legendBox, titleBox: titleBox };\n }\n\n var box = new Box();\n\n var diagramMinX = calculatedNodes.reduce(function (acc, node) { return Math.min(acc, node.x0); }, Infinity);\n var diagramMaxX = calculatedNodes.reduce(function (acc, node) { return Math.max(acc, node.x1); }, 0);\n\n calculatedNodes.forEach(function (nodeEl, i) {\n if (rtl) {\n var x0 = nodeEl.x0;\n var x1 = nodeEl.x1;\n nodeEl.x0 = diagramMaxX - x1;\n nodeEl.x1 = diagramMaxX - x0;\n }\n var nodeOps = resolveNodeOptions(nodeEl, nodes, nodeColors, i);\n var nodeInstance = new Node(nodeOps);\n box.wrap(rectToBox(nodeInstance.exportVisual().rawBBox()));\n\n var labelInstance = new Label(resolveLabelOptions(nodeEl, labels, rtl, diagramMinX, diagramMaxX));\n var labelVisual = labelInstance.exportVisual();\n if (labelVisual) {\n box.wrap(rectToBox(labelVisual.rawBBox()));\n }\n });\n\n var offsetX = sankeyBox.x1;\n var offsetY = sankeyBox.y1;\n\n var width = sankeyBox.width() + offsetX;\n var height = sankeyBox.height() + offsetY;\n\n width -= box.x2 > sankeyBox.width() ? box.x2 - sankeyBox.width() : 0;\n height -= box.y2 > sankeyBox.height() ? box.y2 - sankeyBox.height() : 0;\n\n offsetX += box.x1 < 0 ? -box.x1 : 0;\n offsetY += box.y1 < 0 ? -box.y1 : 0;\n\n if (autoLayout === false) {\n return {\n sankey: calculateSankey(Object.assign({}, calcOptions, {offsetX: offsetX, offsetY: offsetY, width: width, height: height, autoLayout: false})),\n legendBox: legendBox,\n titleBox: titleBox\n };\n }\n\n if (this.resize && autoLayout && this.permutation) {\n this.resize = false;\n return {\n sankey: calculateSankey(Object.assign({}, calcOptions, {offsetX: offsetX, offsetY: offsetY, width: width, height: height}, this.permutation)),\n legendBox: legendBox,\n titleBox: titleBox\n };\n }\n\n var startColumn = 1;\n var loops = 2;\n var columnsLength = calculateSankey(Object.assign({}, calcOptions, {offsetX: offsetX, offsetY: offsetY, width: width, height: height, autoLayout: false})).columns.length;\n var results = [];\n\n var permutation = function (targetColumnIndex, reverse) {\n var currPerm = calculateSankey(Object.assign({}, calcOptions, {offsetX: offsetX, offsetY: offsetY, width: width, height: height, loops: loops, targetColumnIndex: targetColumnIndex, reverse: reverse}));\n var crosses = crossesValue(currPerm.links);\n results.push({\n crosses: crosses,\n reverse: reverse,\n targetColumnIndex: targetColumnIndex\n });\n return crosses === 0;\n };\n\n for (var index = startColumn; index <= columnsLength - 1; index++) {\n if (permutation(index, false) || permutation(index, true)) {\n break;\n }\n }\n\n var minCrosses = Math.min.apply(null, results.map(function (r) { return r.crosses; }));\n var bestResult = results.find(function (r) { return r.crosses === minCrosses; });\n this.permutation = { targetColumnIndex: bestResult.targetColumnIndex, reverse: bestResult.reverse };\n var result = calculateSankey(Object.assign({}, calcOptions, {offsetX: offsetX, offsetY: offsetY, width: width, height: height}, this.permutation));\n\n return {\n sankey: result,\n legendBox: legendBox,\n titleBox: titleBox\n };\n };\n\n Sankey.prototype._render = function _render (options, context) {\n var sankeyOptions = options || this.options;\n var sankeyContext = context || this;\n\n var labelOptions = sankeyOptions.labels;\n var nodesOptions = sankeyOptions.nodes;\n var linkOptions = sankeyOptions.links;\n var nodeColors = sankeyOptions.nodeColors;\n var title = sankeyOptions.title;\n var legend = sankeyOptions.legend;\n var rtl = sankeyOptions.rtl;\n var disableKeyboardNavigation = sankeyOptions.disableKeyboardNavigation;\n var data = sankeyOptions.data;\n var ref = sankeyContext.size;\n var width = ref.width;\n var height = ref.height;\n\n var calcOptions = Object.assign({}, data, {width: width, height: height, nodesOptions: nodesOptions, title: title, legend: legend});\n var ref$1 = this.calculateSankey(calcOptions, sankeyOptions);\n var sankey = ref$1.sankey;\n var titleBox = ref$1.titleBox;\n var legendBox = ref$1.legendBox;\n if (rtl) {\n toRtl(sankey);\n }\n var nodes = sankey.nodes;\n var links = sankey.links;\n var columns = sankey.columns;\n\n sankeyContext.columns = columns.map(function (column) {\n var newColumn = column.slice();\n newColumn.sort(function (a, b) { return a.y0 - b.y0; });\n return newColumn;\n });\n\n var visual = new drawing.Group({\n clip: drawing.Path.fromRect(new geometry.Rect([0, 0], [width, height]))\n });\n\n if (titleBox) {\n var titleElement = new Title(Object.assign({}, title, {drawingRect: titleBox}));\n var titleVisual = titleElement.exportVisual();\n visual.append(titleVisual);\n }\n\n if (sankey.circularLinks) {\n return visual;\n }\n\n var visualNodes = new Map();\n sankeyContext.nodesVisuals = visualNodes;\n\n var models = {\n nodes: [],\n links: [],\n map: new Map()\n };\n sankeyContext.models = models;\n\n var focusHighlights = [];\n\n nodes.forEach(function (node, i) {\n var nodeOps = resolveNodeOptions(node, nodesOptions, nodeColors, i);\n nodeOps.root = function () { return sankeyContext.element; };\n nodeOps.navigatable = disableKeyboardNavigation !== true;\n\n var nodeInstance = new Node(nodeOps);\n var nodeVisual = nodeInstance.exportVisual();\n nodeVisual.links = [];\n nodeVisual.type = NODE;\n\n node.color = nodeOps.color;\n node.opacity = nodeOps.opacity;\n\n nodeVisual.dataItem = Object.assign({}, data.nodes[i],\n {color: nodeOps.color,\n opacity: nodeOps.opacity,\n sourceLinks: node.sourceLinks.map(function (link) { return ({ sourceId: link.sourceId, targetId: link.targetId, value: link.value }); }),\n targetLinks: node.targetLinks.map(function (link) { return ({ sourceId: link.sourceId, targetId: link.targetId, value: link.value }); })});\n visualNodes.set(node.id, nodeVisual);\n\n models.nodes.push(nodeInstance);\n models.map.set(node.id, nodeInstance);\n\n visual.append(nodeVisual);\n\n nodeInstance.createFocusHighlight();\n\n if (nodeInstance._highlight) {\n focusHighlights.push(nodeInstance._highlight);\n }\n });\n\n var sortedLinks = links.slice().sort(function (a, b) { return b.value - a.value; });\n\n var linksVisuals = [];\n sankeyContext.linksVisuals = linksVisuals;\n\n sortedLinks.forEach(function (link) {\n var source = link.source;\n var target = link.target;\n var sourceNode = visualNodes.get(source.id);\n var targetNode = visualNodes.get(target.id);\n var resolvedOptions = resolveLinkOptions(link, linkOptions, sourceNode, targetNode);\n resolvedOptions.root = function () { return sankeyContext.element; };\n resolvedOptions.navigatable = disableKeyboardNavigation !== true;\n resolvedOptions.rtl = rtl;\n var linkInstance = new Link(resolvedOptions);\n var linkVisual = linkInstance.exportVisual();\n\n linkVisual.type = LINK;\n linkVisual.dataItem = {\n source: Object.assign({}, sourceNode.dataItem),\n target: Object.assign({}, targetNode.dataItem),\n value: link.value\n };\n linkVisual.linkOptions = resolvedOptions;\n linksVisuals.push(linkVisual);\n\n sourceNode.links.push(linkVisual);\n targetNode.links.push(linkVisual);\n\n models.links.push(linkInstance);\n models.map.set(((source.id) + \"-\" + (target.id)), linkInstance);\n\n linkInstance.createFocusHighlight();\n\n if (linkInstance._highlight) {\n focusHighlights.push(linkInstance._highlight);\n }\n\n visual.append(linkVisual);\n });\n\n var diagramMinX = nodes.reduce(function (acc, node) { return Math.min(acc, node.x0); }, Infinity);\n var diagramMaxX = nodes.reduce(function (acc, node) { return Math.max(acc, node.x1); }, 0);\n\n nodes.forEach(function (node) {\n var textOps = resolveLabelOptions(node, labelOptions, rtl, diagramMinX, diagramMaxX);\n var labelInstance = new Label(textOps);\n var labelVisual = labelInstance.exportVisual();\n\n if (labelVisual) {\n visual.append(labelVisual);\n }\n });\n\n if (legendBox) {\n var legendElement = new Legend(Object.assign({}, legend, {rtl: rtl, drawingRect: legendBox, nodes: nodes}));\n var legendVisual = legendElement.exportVisual();\n visual.append(legendVisual);\n }\n\n if (focusHighlights.length !== 0) {\n var focusHighlight = new drawing.Group();\n focusHighlight.append.apply(focusHighlight, focusHighlights);\n visual.append(focusHighlight);\n }\n\n return visual;\n };\n\n Sankey.prototype.exportVisual = function exportVisual (exportOptions) {\n var options = (exportOptions && exportOptions.options) ?\n deepExtend({}, this.options, exportOptions.options) : this.options;\n\n var context = {\n size: {\n width: defined(exportOptions && exportOptions.width) ? exportOptions.width : this.size.width,\n height: defined(exportOptions && exportOptions.height) ? exportOptions.height : this.size.height\n }\n };\n\n return this._render(options, context);\n };\n\n Sankey.prototype._setOptions = function _setOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n return Sankey;\n}(Observable));\n\nvar highlightOptions = {\n opacity: 1,\n width: 2,\n color: BLACK\n};\n\nsetDefaultOptions(Sankey, {\n title: {\n position: TOP, // 'top', 'bottom'\n },\n labels: {\n visible: true,\n margin: {\n left: 8,\n right: 8\n },\n padding: 0,\n border: {\n width: 0\n },\n paintOrder: 'stroke',\n stroke: {\n lineJoin: \"round\",\n width: 1\n },\n offset: { left: 0, top: 0 }\n },\n nodes: {\n width: 24,\n padding: 16,\n opacity: 1,\n align: 'stretch', // 'left', 'right', 'stretch'\n offset: { left: 0, top: 0 },\n focusHighlight: Object.assign({}, highlightOptions),\n labels: {\n ariaTemplate: function (ref) {\n var node = ref.node;\n\n return node.label.text;\n}\n }\n },\n links: {\n colorType: 'static', // 'source', 'target', 'static'\n opacity: 0.4,\n highlight: {\n opacity: 0.8,\n inactiveOpacity: 0.2\n },\n focusHighlight: Object.assign({}, highlightOptions),\n labels: {\n ariaTemplate: function (ref) {\n var link = ref.link;\n\n return ((link.source.label.text) + \" to \" + (link.target.label.text));\n}\n }\n },\n tooltip: {\n followPointer: false,\n delay: 200\n }\n});\n","export var createSankeyData = function (data, dimensions, measure) {\n var nodes = new Set();\n var links = new Map();\n var linksMap = new Map();\n\n data.forEach(function (row) {\n dimensions.forEach(function (dimension) {\n nodes.add(dimension.value(row));\n });\n\n for (var i = 0; i < dimensions.length - 1; i++) {\n var source = dimensions[i].value(row);\n var target = dimensions[i + 1].value(row);\n var key = source + \"_\" + target;\n var value = measure.value(row);\n var existingValue = links.get(key);\n\n if (existingValue !== undefined) {\n links.set(key, existingValue + value);\n } else {\n links.set(key, value);\n linksMap.set(key, { source: source, target: target });\n }\n }\n });\n\n var nodesId = new Map();\n var nodesArray = Array.from(nodes).map(function (node, index) {\n nodesId.set(node, index);\n return { id: index, label: { text: String(node) } };\n });\n\n var linksArray = Array.from(links).map(function (ref) {\n var key = ref[0];\n var value = ref[1];\n\n var ref$1 = linksMap.get(key);\n var source = ref$1.source;\n var target = ref$1.target;\n return {\n sourceId: nodesId.get(source),\n targetId: nodesId.get(target),\n value: value\n };\n });\n\n return { nodes: nodesArray, links: linksArray };\n};\n","var ActionTypes = Object.freeze({\n seriesType: 0,\n stacked: 1,\n\n categoryAxisX: 2,\n valueAxisY: 3,\n\n seriesChange: 4,\n\n areaMarginLeft: 5,\n areaMarginRight: 6,\n areaMarginTop: 7,\n areaMarginBottom: 8,\n areaBackground: 9,\n\n titleText: 10,\n titleFontName: 11,\n titleFontSize: 12,\n titleColor: 13,\n\n subtitleText: 14,\n subtitleFontName: 15,\n subtitleFontSize: 16,\n subtitleColor: 17,\n\n seriesColor: 18,\n seriesLabel: 19,\n\n legendVisible: 20,\n legendFontName: 21,\n legendFontSize: 22,\n legendColor: 23,\n legendPosition: 24,\n\n categoryAxisTitleText: 25,\n categoryAxisTitleFontName: 26,\n categoryAxisTitleFontSize: 27,\n categoryAxisTitleColor: 28,\n categoryAxisLabelsFontName: 29,\n categoryAxisLabelsFontSize: 30,\n categoryAxisLabelsColor: 31,\n categoryAxisLabelsRotation: 32,\n categoryAxisReverseOrder: 33,\n\n valueAxisTitleText: 34,\n valueAxisTitleFontName: 35,\n valueAxisTitleFontSize: 36,\n valueAxisTitleColor: 37,\n valueAxisLabelsFormat: 38,\n valueAxisLabelsFontName: 39,\n valueAxisLabelsFontSize: 40,\n valueAxisLabelsColor: 41,\n valueAxisLabelsRotation: 42,\n});\n\nvar fontSizes = [\n { text: \"10\", value: \"10px\" },\n { text: \"12\", value: \"12px\" },\n { text: \"14\", value: \"14px\" },\n { text: \"16\", value: \"16px\" },\n { text: \"20\", value: \"20px\" },\n { text: \"28\", value: \"28px\" },\n { text: \"42\", value: \"42px\" },\n { text: \"56\", value: \"56px\" }\n];\n\nvar titleSizeDefault = '20px';\nvar subtitleSizeDefault = '16px';\nvar labelSizeDefault = '12px';\nvar axisTitleSizeDefault = '16px';\n\nvar fontNames = [\n {\n text: \"Arial\",\n value: \"Arial, Helvetica, sans-serif\",\n style: { fontFamily: \"Arial, Helvetica, sans-serif\" },\n },\n {\n text: \"Courier New\",\n value: \"'Courier New', Courier, monospace\",\n style: { fontFamily: \"'Courier New', Courier, monospace\" },\n },\n {\n text: \"Georgia\",\n value: \"Georgia, serif\",\n style: { fontFamily: \"Georgia, serif\" },\n },\n {\n text: \"Impact\",\n value: \"Impact, Charcoal, sans-serif\",\n style: { fontFamily: \"Impact, Charcoal, sans-serif\" },\n },\n {\n text: \"Lucida Console\",\n value: \"'Lucida Console', Monaco, monospace\",\n style: { fontFamily: \"'Lucida Console', Monaco, monospace\" },\n },\n {\n text: \"Tahoma\",\n value: \"Tahoma, Geneva, sans-serif\",\n style: { fontFamily: \"Tahoma, Geneva, sans-serif\" },\n },\n {\n text: \"Times New Roman\",\n value: \"'Times New Roman', Times,serif\",\n style: { fontFamily: \"'Times New Roman', Times,serif\" },\n },\n {\n text: \"Trebuchet MS\",\n value: \"'Trebuchet MS', Helvetica, sans-serif\",\n style: { fontFamily: \"'Trebuchet MS', Helvetica, sans-serif\" },\n },\n {\n text: \"Verdana\",\n value: \"Verdana, Geneva, sans-serif\",\n style: { fontFamily: \"Verdana, Geneva, sans-serif\" },\n } ];\n\nvar fontNameDefault = fontNames[0].value;\n\nvar columnType = \"column\";\nvar barType = \"bar\";\nvar lineType = \"line\";\nvar pieType = \"pie\";\nvar scatterType = \"scatter\";\nvar categoricalTypes = [columnType, barType, lineType, scatterType];\n\nvar scatterSeries = {\n type: lineType,\n width: 0,\n};\n\nfunction isCategorical(type) {\n return type && categoricalTypes.includes(type);\n}\n\nvar categoryTypes = [\"string\", \"date\", \"number\"];\nvar valueTypes = [\"number\"];\n\nvar axesDefinitions = {\n bar: [\n { axisType: \"category\", types: categoryTypes },\n { axisType: \"value\", types: valueTypes } ],\n column: [\n { axisType: \"category\", types: categoryTypes },\n { axisType: \"value\", types: valueTypes } ],\n line: [\n { axisType: \"category\", types: categoryTypes },\n { axisType: \"value\", types: valueTypes } ],\n pie: [\n { axisType: \"category\", types: categoryTypes },\n { axisType: \"value\", types: valueTypes, count: 1 } ],\n scatter: [\n { axisType: \"category\", types: categoryTypes },\n { axisType: \"value\", types: valueTypes } ],\n};\n\nfunction getFont(font, size) {\n return ((size || \"\") + \" \" + (font || \"\")).trim();\n}\n\nfunction parseFont(font) {\n var spaceIndex = (font || \"\").indexOf(\" \");\n var size = font && font.substring(0, spaceIndex);\n var name = font && font.substring(spaceIndex + 1);\n return { size: size, name: name };\n}\n\nvar updateFontName = function (fontName, defaultSize, currentFont) {\n var ref = parseFont(currentFont);\n var size = ref.size;\n return fontName ? getFont(fontName, size || defaultSize) : \"\";\n};\n\nvar updateFontSize = function (fontSize, defaultFontName, currentFont) {\n var ref = parseFont(currentFont);\n var name = ref.name;\n return fontSize ? getFont(name || defaultFontName, fontSize) : \"\";\n};\n\nvar hasValue = function (value) { return value !== undefined && value !== null; };\n\nvar recordWithValues = function (data) {\n var result = structuredClone(data[0]);\n result.forEach(function (item, i) {\n if (!hasValue(item.value)) {\n for (var index = 0; index < data.length; index++) {\n var value = data[index][i].value;\n if (hasValue(value)) {\n item.value = value;\n break;\n }\n }\n }\n });\n\n return result;\n};\n\nvar getCategoryColumnIndex = function (data, categoryDef) {\n var candidates = [];\n var sampleRecord = recordWithValues(data);\n\n categoryDef.types.forEach(function (type) {\n sampleRecord.forEach(function (item, i) {\n if (typeof item.value === type) {\n candidates.push(i);\n }\n });\n });\n\n var result = candidates.findIndex(function (index) {\n var values = data.map(function (record) { return record[index].value; });\n return new Set(values).size === values.length;\n });\n\n return Math.max(result, 0);\n};\n\nvar getValueColumnIndexes = function (data, valuesDef) {\n var candidates = [];\n var sampleRecord = recordWithValues(data);\n\n valuesDef.forEach(function (def) {\n def.types.forEach(function (type) {\n sampleRecord.forEach(function (item, i) {\n if (typeof item.value === type) {\n candidates.push(i);\n }\n });\n });\n });\n\n return candidates;\n};\n\nvar emptyState = function () { return structuredClone({\n columns: [],\n data: [],\n series: [],\n initialSeries: [],\n categoryAxis: [ { categories: [], labels: { visible: true, rotation: \"auto\" }, title: { text: '' } } ],\n valueAxis: [{ labels: { visible: true, rotation: 'auto' } }],\n area: {\n margin: {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined,\n },\n },\n title: { text: '' },\n subtitle: { text: '' },\n stack: false,\n }); };\n\nvar categoryValueChartState = function (data, seriesType, options) {\n var state = emptyState();\n state.seriesType = seriesType;\n state.data = data || [];\n state.legend = { visible: true, position: \"bottom\" };\n var chartDef = axesDefinitions[seriesType];\n\n if (!chartDef || !data.length) {\n return state;\n }\n\n var firstRecord = data[0].slice();\n state.columns = data[0].map(function (i) { return String(i.field); });\n\n var categoryDef = chartDef.find(function (def) { return def.axisType === \"category\"; });\n var catIndex = -1;\n if (categoryDef) {\n catIndex =\n options && options.categoryAxis\n ? state.columns.indexOf(options.categoryAxis)\n : getCategoryColumnIndex(data, categoryDef);\n }\n\n var valuesDef = chartDef.filter(function (def) { return def.axisType === \"value\"; });\n var valuesIndexes = getValueColumnIndexes(data, valuesDef);\n\n if (valuesIndexes.includes(catIndex)) {\n if (valuesIndexes.length > 1) {\n valuesIndexes = valuesIndexes.filter(function (index) { return index !== catIndex; });\n } else {\n catIndex = -1;\n }\n }\n\n var series = [];\n valuesIndexes.forEach(function (index) {\n var valuesColumn = firstRecord[index];\n var valuesResult = [];\n data.forEach(function (record) {\n valuesResult.push(record[index].value);\n });\n series.push(Object.assign({}, {name: valuesColumn.field,\n type: seriesType,\n data: valuesResult,\n stack: false,\n labels: { visible: false }},\n (seriesType === scatterType ? scatterSeries : {})));\n });\n\n var categories =\n catIndex > -1\n ? data.map(function (item) { return String(\n hasValue(item[catIndex].value)\n ? item[catIndex].value\n : \" \"\n ); }\n )\n : [];\n\n if (series.length) {\n state.series = series.map(function (s, i) { return (Object.assign({}, s, {id: i})); });\n state.initialSeries = structuredClone(state.series);\n }\n\n state.categoryAxis = [\n { categories: categories, labels: { visible: true, rotation: \"auto\" } } ];\n state.categoryField = state.columns[catIndex];\n\n return state;\n};\n\nvar pieChartState = function (data, seriesType, options) {\n var state = emptyState();\n state.seriesType = seriesType;\n state.data = data || [];\n\n var chartDef = axesDefinitions[seriesType];\n\n if (!chartDef || !data.length) {\n return state;\n }\n\n var categoriesAxis = data[0].map(function (i) { return i.field; });\n var categoryDef = chartDef.find(function (def) { return def.axisType === \"category\"; });\n var catIndex = -1;\n if (categoryDef) {\n catIndex =\n options && options.categoryAxis\n ? categoriesAxis.indexOf(options.categoryAxis)\n : getCategoryColumnIndex(data, categoryDef);\n }\n\n var valuesDef = chartDef.filter(function (def) { return def.axisType === \"value\"; });\n\n var valuesIndexes = [];\n if (options && options.valueAxis) {\n valuesIndexes = [categoriesAxis.indexOf(options.valueAxis)];\n } else {\n valuesIndexes = getValueColumnIndexes(data, valuesDef);\n }\n\n if (valuesIndexes.includes(catIndex) && valuesIndexes.length > 1) {\n valuesIndexes = valuesIndexes.filter(function (index) { return index !== catIndex; });\n }\n\n if (typeof valuesDef[0].count === \"number\") {\n valuesIndexes = valuesIndexes.slice(0, valuesDef[0].count);\n }\n\n var categories =\n catIndex > -1 ? data.map(function (item) { return String(item[catIndex].value); }) : [];\n\n var flatData = [];\n\n data.forEach(function (item) {\n var record = {};\n valuesIndexes.forEach(function (index) {\n var col = item[index];\n record[col.field] = col.value || 0;\n record[item[catIndex].field] = item[catIndex].value || \" \";\n });\n flatData.push(record);\n });\n\n state.columns = categoriesAxis;\n state.categoryAxis = [{ categories: categories, title: { text: \"\" } }];\n\n state.series = [\n {\n id: 0,\n data: flatData,\n type: seriesType,\n name: categoriesAxis[catIndex],\n labels: { visible: true },\n categoryField: categoriesAxis[catIndex],\n field: categoriesAxis[valuesIndexes[0]],\n } ];\n\n state.categoryField = categoriesAxis[catIndex];\n state.valueField = categoriesAxis[valuesIndexes[0]];\n\n state.initialSeries = structuredClone(state.series);\n\n return state;\n};\n\nfunction createInitialState(data, seriesType, defaultState) {\n var state = createState(\n data,\n (defaultState && defaultState.seriesType) || seriesType\n );\n\n return typeof (defaultState && defaultState.stack) !== \"undefined\"\n ? updateState(state, ActionTypes.stacked, defaultState.stack)\n : state;\n}\n\nfunction createState(data, seriesType) {\n return (isCategorical(seriesType) ? categoryValueChartState : pieChartState)(\n data,\n seriesType\n );\n}\n\nfunction mergeStates(source, target) {\n var newState = structuredClone(target);\n newState.legend = source.legend;\n newState.area = source.area;\n newState.title = source.title;\n newState.subtitle = source.subtitle;\n if (newState.series.length === source.series.length) {\n for (var i = 0; i < newState.series.length; i++) {\n newState.series[i].color = source.series[i].color;\n newState.series[i].labels = source.series[i].labels;\n }\n }\n\n if (\n source.series.every(function (s) { return s.labels && s.labels.visible; }) &&\n isCategorical(newState.seriesType) &&\n isCategorical(source.seriesType)\n ) {\n newState.series.forEach(function (s) {\n s.labels = s.labels || {};\n s.labels.visible = true;\n });\n }\n\n return newState;\n}\n\n/* eslint-disable complexity */\nfunction updateState(currentState, action, value) {\n var state = Object.assign({}, currentState);\n\n switch (action) {\n case ActionTypes.seriesType:\n return createState(state.data, value);\n\n case ActionTypes.stacked:\n state.series = state.series.map(function (s) { return (Object.assign({}, s, {stack: value})); });\n state.stack = value;\n return state;\n\n case ActionTypes.categoryAxisX: {\n if (state.seriesType && isCategorical(state.seriesType)) {\n var newState = categoryValueChartState(\n state.data,\n state.seriesType,\n { categoryAxis: value }\n );\n return mergeStates(state, newState);\n } else if (state.seriesType === pieType) {\n var newState$1 = pieChartState(state.data, state.seriesType, {\n categoryAxis: value,\n });\n return mergeStates(state, newState$1);\n }\n\n return state;\n }\n\n case ActionTypes.valueAxisY: {\n if (state.seriesType === pieType) {\n var newState$2 = pieChartState(state.data, state.seriesType, {\n categoryAxis: state.categoryField,\n valueAxis: value,\n });\n return mergeStates(state, newState$2);\n }\n\n return state;\n }\n\n case ActionTypes.seriesChange:\n state.series = value;\n return state;\n\n case ActionTypes.areaMarginLeft:\n state.area = Object.assign({}, state.area,\n {margin: Object.assign({}, ((state.area && state.area.margin) || {}),\n {left: value})});\n return state;\n\n case ActionTypes.areaMarginRight:\n state.area = Object.assign({}, state.area,\n {margin: Object.assign({}, ((state.area && state.area.margin) || {}),\n {right: value})});\n return state;\n\n case ActionTypes.areaMarginTop:\n state.area = Object.assign({}, state.area,\n {margin: Object.assign({}, ((state.area && state.area.margin) || {}),\n {top: value})});\n return state;\n\n case ActionTypes.areaMarginBottom:\n state.area = Object.assign({}, state.area,\n {margin: Object.assign({}, ((state.area && state.area.margin) || {}),\n {bottom: value})});\n return state;\n\n case ActionTypes.areaBackground:\n state.area = Object.assign({}, state.area, {background: value});\n return state;\n\n case ActionTypes.titleText:\n state.title = Object.assign({}, state.title, {text: value});\n return state;\n\n case ActionTypes.titleFontName: {\n state.title = Object.assign({}, state.title,\n {font: updateFontName(\n value,\n titleSizeDefault,\n state.title && state.title.font\n )});\n return state;\n }\n case ActionTypes.titleFontSize:\n state.title = Object.assign({}, state.title,\n {font: updateFontSize(\n value,\n fontNameDefault,\n state.title && state.title.font\n )});\n return state;\n\n case ActionTypes.titleColor:\n state.title = Object.assign({}, state.title, {color: value});\n return state;\n\n case ActionTypes.subtitleText:\n state.subtitle = Object.assign({}, state.subtitle, {text: value});\n return state;\n\n case ActionTypes.subtitleFontName:\n state.subtitle = Object.assign({}, state.subtitle,\n {font: updateFontName(\n value,\n subtitleSizeDefault,\n state.subtitle && state.subtitle.font\n )});\n return state;\n\n case ActionTypes.subtitleFontSize:\n state.subtitle = Object.assign({}, state.subtitle,\n {font: updateFontSize(\n value,\n fontNameDefault,\n state.subtitle && state.subtitle.font\n )});\n return state;\n\n case ActionTypes.subtitleColor:\n state.subtitle = Object.assign({}, state.subtitle, {color: value});\n return state;\n\n case ActionTypes.seriesColor:\n state.series = state.series.map(function (s) { return (Object.assign({}, s,\n {color: value.seriesName === s.name ? value.color : s.color})); });\n return state;\n\n case ActionTypes.seriesLabel:\n state.series = state.series.map(function (s) {\n if (value.all || value.seriesName === s.name) {\n return Object.assign({}, s, {labels: { visible: value.visible }});\n }\n return s;\n });\n return state;\n\n case ActionTypes.legendVisible:\n state.legend = Object.assign({}, state.legend, {visible: value});\n return state;\n\n case ActionTypes.legendFontName: {\n var legend = state.legend || {};\n state.legend = Object.assign({}, legend,\n {labels: Object.assign({}, legend.labels,\n {font: updateFontName(\n value,\n labelSizeDefault,\n legend.labels && legend.labels.font\n )})});\n return state;\n }\n case ActionTypes.legendFontSize: {\n var legend$1 = state.legend || {};\n state.legend = Object.assign({}, legend$1,\n {labels: Object.assign({}, legend$1.labels,\n {font: updateFontSize(\n value,\n fontNameDefault,\n legend$1.labels && legend$1.labels.font\n )})});\n return state;\n }\n case ActionTypes.legendColor: {\n var legend$2 = state.legend || {};\n state.legend = Object.assign({}, legend$2,\n {labels: Object.assign({}, legend$2.labels, {color: value})});\n return state;\n }\n case ActionTypes.legendPosition:\n state.legend = Object.assign({}, state.legend, {position: value});\n return state;\n\n case ActionTypes.categoryAxisTitleText:\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {text: value})})); });\n return state;\n\n case ActionTypes.categoryAxisTitleFontName: {\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {font: updateFontName(value, axisTitleSizeDefault, axis.title && axis.title.font)})})); });\n return state;\n }\n case ActionTypes.categoryAxisTitleFontSize:\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {font: updateFontSize(value, fontNameDefault, axis.title && axis.title.font)})})); });\n return state;\n\n case ActionTypes.categoryAxisTitleColor:\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {color: value})})); });\n return state;\n\n case ActionTypes.categoryAxisLabelsFontName: {\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {font: updateFontName(value, labelSizeDefault, axis.labels && axis.labels.font)})})); });\n return state;\n }\n\n case ActionTypes.categoryAxisLabelsFontSize:\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {font: updateFontSize(value, fontNameDefault, axis.labels && axis.labels.font)})})); });\n return state;\n\n case ActionTypes.categoryAxisLabelsColor:\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {color: value})})); });\n return state;\n\n case ActionTypes.categoryAxisLabelsRotation: {\n var rotation = hasValue(value) ? value : 'auto';\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {rotation: rotation})})); });\n return state;\n }\n case ActionTypes.categoryAxisReverseOrder:\n state.categoryAxis = (state.categoryAxis || []).map(function (axis) { return (Object.assign({}, axis, {reverse: value})); });\n return state;\n\n case ActionTypes.valueAxisTitleText: {\n if (!state.valueAxis || state.valueAxis.length === 0) {\n state.valueAxis = [{ title: { text: value } }];\n } else {\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {text: value})})); });\n }\n return state;\n }\n case ActionTypes.valueAxisTitleFontName: {\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {font: updateFontName(value, axisTitleSizeDefault, axis.title && axis.title.font)})})); });\n return state;\n }\n case ActionTypes.valueAxisTitleFontSize:\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {font: updateFontSize(value, fontNameDefault, axis.title && axis.title.font)})})); });\n return state;\n case ActionTypes.valueAxisTitleColor:\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {title: Object.assign({}, axis.title, {color: value})})); });\n return state;\n\n case ActionTypes.valueAxisLabelsFormat:\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {format: value})})); });\n return state;\n\n case ActionTypes.valueAxisLabelsFontName: {\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {font: updateFontName(value, labelSizeDefault, axis.labels && axis.labels.font)})})); });\n return state;\n }\n case ActionTypes.valueAxisLabelsFontSize:\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {font: updateFontSize(value, fontNameDefault, axis.labels && axis.labels.font)})})); });\n return state;\n case ActionTypes.valueAxisLabelsColor:\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {color: value})})); });\n return state;\n\n case ActionTypes.valueAxisLabelsRotation: {\n var rotation$1 = hasValue(value) ? value : 'auto';\n state.valueAxis = (state.valueAxis || []).map(function (axis) { return (Object.assign({}, axis, {labels: Object.assign({}, axis.labels, {rotation: rotation$1})})); });\n return state;\n }\n\n default:\n return state;\n }\n}\n\nexport {\n ActionTypes,\n fontSizes,\n fontNames,\n isCategorical,\n parseFont,\n createInitialState,\n createState,\n mergeStates,\n updateState\n};\n","export var messages = Object.freeze({\n windowTitle: 'Chart Preview',\n exportButton: 'Export',\n exportPDFButton: 'PDF File',\n exportSVGButton: 'SVG File',\n exportPNGButton: 'PNG File',\n tabChart: 'Chart',\n tabData: 'Data',\n tabFormat: 'Format',\n barChart: 'Bar Chart',\n barChartBar: 'Bar',\n barChartStackedBar: 'Stacked Bar',\n barChart100StackedBar: '100% Stacked Bar',\n pieChart: 'Pie Chart',\n pieChartPie: 'Pie',\n columnChart: 'Column Chart',\n columnChartColumn: 'Column',\n columnChartStackedColumn: 'Stacked Column',\n columnChart100StackedColumn: '100% Stacked Column',\n lineChart: 'Line Chart',\n lineChartLine: 'Line',\n lineChartStackedLine: 'Stacked Line',\n lineChart100StackedLine: '100% Stacked Line',\n scatterChart: 'Scatter Chart',\n scatterChartScatter: 'Scatter',\n configuration: 'Configuration',\n configurationCategoryAxis: 'Category Axis',\n configurationXAxis: 'X Axis',\n configurationValueAxis: 'Value Axis',\n configurationSeries: 'Series',\n configurationSeriesAdd: 'Add',\n formatChartArea: 'Chart Area',\n formatChartAreaMargins: 'Margins',\n formatChartAreaMarginsAuto: 'Auto',\n formatChartAreaMarginsLeft: 'Left',\n formatChartAreaMarginsRight: 'Right',\n formatChartAreaMarginsTop: 'Top',\n formatChartAreaMarginsBottom: 'Bottom',\n formatChartAreaBackground: 'Background',\n formatChartAreaBackgroundColor: 'Color',\n formatTitle: 'Title',\n formatTitleApplyTo: 'Apply to',\n formatTitleChartTitle: 'Chart Title',\n formatTitleChartSubtitle: 'Chart Subtitle',\n formatTitleLabel: 'Title',\n formatTitleFont: 'Font',\n formatTitleFontPlaceholder: '(inherited font)',\n formatTitleSize: 'Size',\n formatTitleSizePlaceholder: 'px',\n formatTitleColor: 'Color',\n formatSeries: 'Series',\n formatSeriesApplyTo: 'Apply to',\n formatSeriesAllSeries: 'All Series',\n formatSeriesColor: 'Color',\n formatSeriesShowLabels: 'Show Labels',\n formatLegend: 'Legend',\n formatLegendShowLegend: 'Show Legend',\n formatLegendFont: 'Font',\n formatLegendFontPlaceholder: '(inherited font)',\n formatLegendSize: 'Size',\n formatLegendSizePlaceholder: 'px',\n formatLegendColor: 'Color',\n formatLegendPosition: 'Position',\n formatLegendPositionTop: 'Top',\n formatLegendPositionBottom: 'Bottom',\n formatLegendPositionLeft: 'Left',\n formatLegendPositionRight: 'Right',\n formatCategoryAxis: 'Category Axis',\n formatXAxis: 'X Axis',\n formatCategoryAxisTitle: 'Title',\n formatCategoryAxisTitlePlaceholder: 'Axis Title',\n formatCategoryAxisTitleFont: 'Font',\n formatCategoryAxisTitleFontPlaceholder: '(inherited font)',\n formatCategoryAxisTitleSize: 'Size',\n formatCategoryAxisTitleSizePlaceholder: 'px',\n formatCategoryAxisTitleColor: 'Color',\n formatCategoryAxisLabels: 'Labels',\n formatCategoryAxisLabelsFont: 'Font',\n formatCategoryAxisLabelsFontPlaceholder: '(inherited font)',\n formatCategoryAxisLabelsSize: 'Size',\n formatCategoryAxisLabelsSizePlaceholder: 'px',\n formatCategoryAxisLabelsColor: 'Color',\n formatCategoryAxisLabelsRotation: 'Rotation',\n formatCategoryAxisLabelsRotationAuto: 'Auto',\n formatCategoryAxisLabelsReverseOrder: 'Reverse Order',\n formatValueAxis: 'Value Axis',\n formatYAxis: 'Y Axis',\n formatValueAxisTitle: 'Title',\n formatValueAxisTitlePlaceholder: 'Axis Title',\n formatValueAxisTitleFont: 'Font',\n formatValueAxisTitleFontPlaceholder: '(inherited font)',\n formatValueAxisTitleSize: 'Size',\n formatValueAxisTitleSizePlaceholder: 'px',\n formatValueAxisTitleColor: 'Color',\n formatValueAxisLabels: 'Labels',\n formatValueAxisLabelsFormat: 'Label Format',\n formatValueAxisLabelsFormatText: 'Text',\n formatValueAxisLabelsFormatNumber: 'Number',\n formatValueAxisLabelsFormatCurrency: 'Currency',\n formatValueAxisLabelsFormatPercent: 'Percent',\n formatValueAxisLabelsFont: 'Font',\n formatValueAxisLabelsFontPlaceholder: '(inherited font)',\n formatValueAxisLabelsSize: 'Size',\n formatValueAxisLabelsSizePlaceholder: 'px',\n formatValueAxisLabelsColor: 'Color',\n formatValueAxisLabelsRotation: 'Rotation',\n formatValueAxisLabelsRotationAuto: 'Auto'\n});\n","import { getWizardDataFromDataRows } from './chart-wizard/get-wizard-data-from-data-rows';\nimport { ActionTypes, createInitialState, createState, fontNames, fontSizes, isCategorical, mergeStates, parseFont, updateState } from './chart-wizard/state';\nimport {\n messages\n} from './chart-wizard/messages';\n\nexport var ChartWizardCommon = Object.freeze({\n getWizardDataFromDataRows: getWizardDataFromDataRows,\n ActionTypes: ActionTypes,\n createInitialState: createInitialState,\n createState: createState,\n fontNames: fontNames,\n fontSizes: fontSizes,\n isCategorical: isCategorical,\n mergeStates: mergeStates,\n parseFont: parseFont,\n updateState: updateState,\n messages: messages\n});\n","import getter from './../common/getter';\n\nexport function getWizardDataFromDataRows(dataRows) {\n var result = [];\n\n dataRows.forEach(function (item) {\n var dataItem = item.dataItem;\n var dataColumns = item.dataColumns;\n\n var row = [];\n dataColumns.forEach(function (column) {\n row.push({\n field: column.title || column.field,\n value: getter(column.field)(dataItem)\n });\n });\n\n result.push(row);\n });\n\n return result;\n}\n","import { AREA, LINE } from './constants';\nimport { INHERIT } from '../common/constants';\n\nvar BAR_GAP = 1.5;\nvar BAR_SPACING = 0.4;\nvar BLACK = '#000';\nvar SANS = 'Arial, Helvetica, sans-serif';\nvar SANS11 = \"11px \" + SANS;\nvar SANS12 = '12px ' + SANS;\nvar SANS16 = '16px ' + SANS;\nvar TRANSPARENT = 'transparent';\nvar WHITE = '#fff';\n\nvar lineSeriesLegendItem = {\n type: LINE\n};\n\nvar areaSeriesLegendItem = {\n type: AREA\n};\n\nvar areaNoMarkersSeriesLegendItem = Object.assign({}, areaSeriesLegendItem,\n {markers: {\n visible: false\n },\n highlight: {\n visible: false\n }});\n\nvar notes = function () { return ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n visible: true\n}); };\n\nvar axisDefaults = function () { return ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n}); };\n\nvar areaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.4\n}); };\n\nvar rangeAreaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.4\n}); };\n\nvar barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem,\n}); };\n\nvar boxPlotSeries = function () { return ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n}); };\n\nvar bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n opacity: 0.6\n}); };\n\nvar bulletSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n },\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar candlestickSeries = function () { return ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: 0.3\n}); };\n\nvar columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar radarColumnSeries = function () { return ({\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar polarScatterSeries = function () { return ({\n legendItem: lineSeriesLegendItem\n}); };\n\nvar scatterSeries = function () { return ({\n legendItem: lineSeriesLegendItem\n}); };\n\nvar donutSeries = function () { return ({\n margin: 1,\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar lineSeries = function () { return ({\n width: 2,\n legendItem: lineSeriesLegendItem\n}); };\n\nvar ohlcSeries = function () { return ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: 0.3\n}); };\n\nvar radarAreaSeries = function () { return ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.5\n}); };\n\nvar radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n legendItem: lineSeriesLegendItem,\n width: 2\n}); };\n\nvar rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar scatterLineSeries = function () { return ({\n width: 1,\n legendItem: lineSeriesLegendItem\n}); };\n\nvar waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: BAR_SPACING\n}); };\n\nvar pieSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar funnelSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar pyramidSeries = funnelSeries;\n\nvar heatmapSeries = function () { return ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n}); };\n\nvar trendlineSeriesDefaults = function (options) { return Object.assign({\n color: INHERIT,\n trendline: {},\n markers: {\n visible: false\n },\n width: 1,\n dashType: 'longDash',\n legendItem: lineSeriesLegendItem\n}, options); };\n\nvar seriesDefaults = function (options) { return ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n pyramid: pyramidSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n radarColumn: radarColumnSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n polarScatter: polarScatterSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatter: scatterSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries(),\n linearTrendline: trendlineSeriesDefaults(),\n exponentialTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n logarithmicTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n polynomialTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n powerTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n movingAverageTrendline: trendlineSeriesDefaults()\n}); };\n\nvar title = function () { return ({\n font: SANS16\n}); };\n\nvar subtitle = function () { return ({\n font: SANS12\n}); };\n\nvar legend = function () { return ({\n labels: {\n font: SANS12\n }\n}); };\n\nexport var baseTheme = function (options) {\n if ( options === void 0 ) options = {};\n\n return ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n subtitle: subtitle(),\n legend: legend()\n});\n};\n\n","var defaultImplementation = {\n format: function (format, value) { return value; },\n\n toString: function (value) { return value; },\n\n parseDate: function (value) { return new Date(value); },\n\n firstDay: function () { return 0; }\n};\n\nvar current = defaultImplementation;\n\nvar IntlService = function IntlService () {};\n\nvar staticAccessors = { implementation: { configurable: true } };\n\nIntlService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nstaticAccessors.implementation.get = function () {\n return current;\n};\n\nObject.defineProperties( IntlService, staticAccessors );\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\n// eslint-disable-next-line no-useless-escape\nvar FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nvar FormatService = function FormatService(intlService) {\n this._intlService = intlService;\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n this._intlService = value;\n};\n\nFormatService.prototype.auto = function auto (formatString) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format.apply(intl, [ formatString ].concat( values ));\n }\n\n return intl.toString(values[0], formatString);\n};\n\nFormatService.prototype.localeAuto = function localeAuto (formatString, values, locale) {\n var intl = this.intl;\n var result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n};\n\nObject.defineProperties( FormatService.prototype, prototypeAccessors );\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nvar ChartService = function ChartService(chart, context) {\n if ( context === void 0 ) context = {};\n\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n this._intlService = value;\n this.format.intl = value;\n};\n\nChartService.prototype.notify = function notify (name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n};\n\nChartService.prototype.isPannable = function isPannable (axis) {\n var pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n};\n\nObject.defineProperties( ChartService.prototype, prototypeAccessors );\n\nexport default ChartService;\n","import { UserEvents } from '../common';\n\nvar current;\n\nvar DomEventsBuilder = function DomEventsBuilder () {};\n\nDomEventsBuilder.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nDomEventsBuilder.create = function create (element, events) {\n var builder;\n\n if (current) {\n builder = current.create(element, events);\n } else {\n builder = new UserEvents(element, Object.assign({}, {multiTouch: true},\n\n events));\n }\n\n return builder;\n};\n\nexport default DomEventsBuilder;\n","var current = {\n compile: function(template) {\n return template;\n }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nTemplateService.compile = function compile (template, options) {\n return current.compile(template, options);\n};\n\nexport default TemplateService;\n","/**\n * @hidden\n */\nexport var isWindowAvailable = function () {\n return typeof window !== 'undefined';\n};\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nvar agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nvar osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nvar desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nvar mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nvar testRx = function (agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport var detectMobileOS = function (ua) {\n var minorVersion;\n var match = [];\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n var os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport var detectDesktopBrowser = function (ua) {\n var browserInfo = null;\n var match = [];\n for (var agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nvar userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport var browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport var mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport var touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport var msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport var pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport var touchEnabled = mobileOS && (touch || msPointers || pointers);\n","import { fieldList } from './field-list';\nvar getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n var fields = fieldList(field);\n getterCache[field] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","var reComment = /\\/\\*[\\s\\S]*?\\*\\//g;\n/*\n([^\\s:;]+?)\\s*:\\s* # Property name and colon\n(\n (?:\n (?: # Begin alternation\n url\\( # Match 'url('\n \\s*\n (?:\n (?:[^\"')\\\\]|\\\\.)* # Content inside url(), excluding quotes and closing parenthesis\n |\n \"(?:[^\"\\\\]|\\\\.)*\" # Double-quoted strings, handling escaped characters\n |\n '(?:[^'\\\\]|\\\\.)*' # Single-quoted strings, handling escaped characters\n )\n \\s*\n \\)\n |\n \"(?:[^\"\\\\]|\\\\.)*\" # Double-quoted strings, handling escaped characters\n |\n '(?:[^'\\\\]|\\\\.)*' # Single-quoted strings, handling escaped characters\n |\n [^;\"'] # Any character except ';', double or single quotes\n )*? # Repeat zero or more times, non-greedy\n \\s*\n )\n)\n(?=;|$) # Lookahead for ';' or end of string\n*/\nvar reDeclaration = /([^\\s:;]+?)\\s*:\\s*((?:(?:url\\(\\s*(?:(?:[^\"')\\\\]|\\\\.)*|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')\\s*\\)|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|[^;\"'])*?)\\s*)(?=;|$)/gi;\nvar reDoubleQuoted = /"|"|"/gi;\nvar reSingleQuoted = /'|'|'/gi;\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\nvar empty = '';\nfunction replaceQuoteEntities(str) {\n return str.replace(reDoubleQuoted, doubleQuote)\n .replace(reSingleQuoted, singleQuote);\n}\n/**\n * Parse inline styles string into object.\n *\n * @param styleString - inline styles string\n * @returns object with styles\n */\nexport function parseInlineStyles(styleString) {\n var styleObject = {};\n var input = replaceQuoteEntities((styleString || empty).replace(reComment, empty));\n var match = reDeclaration.exec(input), property, value;\n while (match !== null) {\n property = match[1].trim();\n value = match[2].trim();\n styleObject[property] = value;\n match = reDeclaration.exec(input);\n }\n return styleObject;\n}\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport var addDays = function (date, offset) {\n var newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\n};\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport var adjustDST = function (date, hour) {\n var newDate = cloneDate(date);\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n return newDate;\n};\n","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport var createDate = function (year, month, day, hours, minutes, seconds, milliseconds) {\n if (hours === void 0) { hours = 0; }\n if (minutes === void 0) { minutes = 0; }\n if (seconds === void 0) { seconds = 0; }\n if (milliseconds === void 0) { milliseconds = 0; }\n var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n return adjustDST(date, hours);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport var getDate = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","export var DateInputInteractionMode;\n(function (DateInputInteractionMode) {\n DateInputInteractionMode[\"None\"] = \"none\";\n DateInputInteractionMode[\"Caret\"] = \"caret\";\n DateInputInteractionMode[\"Selection\"] = \"selection\";\n})(DateInputInteractionMode || (DateInputInteractionMode = {}));\n","import * as tslib_1 from \"tslib\";\nvar _a;\nimport { DateObject } from '../common/dateobject';\nimport { approximateStringMatching } from './utils';\nimport { KeyCode } from '../common/keycode';\nimport { Key } from '../common/key';\nimport { extend, isPresent, isDocumentAvailable, millisecondDigitsInFormat, millisecondStepFor, isValidDate, isIOS } from '../common/utils';\nimport { Observable } from '../common/observable';\nimport { DateInputInteractionMode } from './interaction-mode';\nimport { isEqual, cloneDate } from '@progress/kendo-date-math';\nimport { Constants } from '../common/constants';\nvar DEFAULT_SEGMENT_STEP = 1;\nvar DRAG_START = \"dragStart\";\nvar DROP = \"drop\";\nvar TOUCH_START = \"touchstart\";\nvar MOUSE_DOWN = \"mousedown\";\nvar MOUSE_UP = \"mouseup\";\nvar CLICK = \"click\";\nvar INPUT = \"input\";\nvar KEY_DOWN = \"keydown\";\nvar FOCUS = \"focus\";\nvar BLUR = \"blur\";\nvar PASTE = \"paste\";\nvar MOUSE_SCROLL = \"DOMMouseScroll\";\nvar MOUSE_WHEEL = \"mousewheel\";\nvar VALUE_CHANGE = \"valueChange\";\nvar INPUT_END = \"inputEnd\";\nvar BLUR_END = \"blurEnd\";\nvar FOCUS_END = \"focusEnd\";\nvar CHANGE = \"change\";\nvar defaultDateInputOptions = {\n format: \"d\",\n hasPlaceholder: false,\n placeholder: null,\n cycleTime: true,\n locale: null,\n steps: {\n millisecond: DEFAULT_SEGMENT_STEP,\n second: DEFAULT_SEGMENT_STEP,\n minute: DEFAULT_SEGMENT_STEP,\n hour: DEFAULT_SEGMENT_STEP,\n day: DEFAULT_SEGMENT_STEP,\n month: DEFAULT_SEGMENT_STEP,\n year: DEFAULT_SEGMENT_STEP\n },\n formatPlaceholder: null,\n events: (_a = {},\n _a[VALUE_CHANGE] = null,\n _a[INPUT] = null,\n _a[INPUT_END] = null,\n _a[FOCUS] = null,\n _a[FOCUS_END] = null,\n _a[BLUR] = null,\n _a[BLUR_END] = null,\n _a[KEY_DOWN] = null,\n _a[MOUSE_WHEEL] = null,\n _a[CHANGE] = null,\n _a),\n selectNearestSegmentOnFocus: false,\n selectPreviousSegmentOnBackspace: false,\n enableMouseWheel: false,\n allowCaretMode: false,\n autoSwitchParts: true,\n autoSwitchKeys: [],\n twoDigitYearMax: Constants.twoDigitYearMax,\n autoCorrectParts: true,\n autoFill: false,\n toggleDayPeriod: false\n};\nvar DateInput = /** @class */ (function (_super) {\n tslib_1.__extends(DateInput, _super);\n function DateInput(element, options) {\n var _this = _super.call(this, options) || this;\n _this.dateObject = null;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n _this.currentText = '';\n _this.currentFormat = '';\n _this.interactionMode = DateInputInteractionMode.None;\n _this.previousElementSelection = { start: 0, end: 0 };\n _this.init(element, options);\n return _this;\n }\n Object.defineProperty(DateInput.prototype, \"value\", {\n get: function () {\n return this.dateObject && this.dateObject.getValue();\n },\n enumerable: true,\n configurable: true\n });\n DateInput.prototype.init = function (element, options) {\n var dateValue = isValidDate(this.options.value) ? cloneDate(this.options.value) : new Date(options.formattedValue);\n if (!isValidDate(dateValue)) {\n dateValue = null;\n }\n this.element = element;\n // this.element._kendoWidget = this;\n this.options = extend({}, defaultDateInputOptions, options, { steps: tslib_1.__assign({}, defaultDateInputOptions.steps, options.steps) });\n this.intl = this.options.intlService;\n this.dateObject = this.createDateObject();\n this.dateObject.setValue(dateValue);\n this.setTextAndFormat();\n this.bindEvents();\n this.resetSegmentValue = true;\n this.interactionMode = DateInputInteractionMode.None;\n this.forceUpdate();\n };\n DateInput.prototype.destroy = function () {\n this.unbindEvents();\n this.dateObject = null;\n _super.prototype.destroy.call(this);\n };\n DateInput.prototype.bindEvents = function () {\n this.onElementDragStart = this.onElementDragStart.bind(this);\n this.element.addEventListener(DRAG_START, this.onElementDragStart);\n this.onElementDrop = this.onElementDrop.bind(this);\n this.element.addEventListener(DROP, this.onElementDrop);\n this.onElementClick = this.onElementClick.bind(this);\n this.element.addEventListener(CLICK, this.onElementClick);\n this.onElementMouseDown = this.onElementMouseDown.bind(this);\n this.element.addEventListener(MOUSE_DOWN, this.onElementMouseDown);\n this.element.addEventListener(TOUCH_START, this.onElementMouseDown);\n this.onElementMouseUp = this.onElementMouseUp.bind(this);\n this.element.addEventListener(MOUSE_UP, this.onElementMouseUp);\n this.onElementInput = this.onElementInput.bind(this);\n this.element.addEventListener(INPUT, this.onElementInput);\n this.onElementKeyDown = this.onElementKeyDown.bind(this);\n this.element.addEventListener(KEY_DOWN, this.onElementKeyDown);\n this.onElementFocus = this.onElementFocus.bind(this);\n this.element.addEventListener(FOCUS, this.onElementFocus);\n this.onElementBlur = this.onElementBlur.bind(this);\n this.element.addEventListener(BLUR, this.onElementBlur);\n this.onElementChange = this.onElementChange.bind(this);\n this.element.addEventListener(CHANGE, this.onElementChange);\n this.onElementPaste = this.onElementPaste.bind(this);\n this.element.addEventListener(PASTE, this.onElementPaste);\n this.onElementMouseWheel = this.onElementMouseWheel.bind(this);\n this.element.addEventListener(MOUSE_SCROLL, this.onElementMouseWheel);\n this.element.addEventListener(MOUSE_WHEEL, this.onElementMouseWheel);\n };\n DateInput.prototype.unbindEvents = function () {\n this.element.removeEventListener(DRAG_START, this.onElementDragStart);\n this.element.removeEventListener(DROP, this.onElementDrop);\n this.element.removeEventListener(TOUCH_START, this.onElementMouseDown);\n this.element.removeEventListener(MOUSE_DOWN, this.onElementMouseDown);\n this.element.removeEventListener(MOUSE_UP, this.onElementMouseUp);\n this.element.removeEventListener(CLICK, this.onElementClick);\n this.element.removeEventListener(INPUT, this.onElementInput);\n this.element.removeEventListener(KEY_DOWN, this.onElementKeyDown);\n this.element.removeEventListener(FOCUS, this.onElementFocus);\n this.element.removeEventListener(BLUR, this.onElementBlur);\n this.element.removeEventListener(CHANGE, this.onElementChange);\n this.element.removeEventListener(PASTE, this.onElementPaste);\n this.element.removeEventListener(MOUSE_SCROLL, this.onElementMouseWheel);\n this.element.removeEventListener(MOUSE_WHEEL, this.onElementMouseWheel);\n };\n DateInput.prototype.setOptions = function (options, refresh) {\n if (refresh === void 0) { refresh = false; }\n this.options = extend({}, this.options, options, { steps: tslib_1.__assign({}, defaultDateInputOptions.steps, options.steps) });\n this.setDateObjectOptions();\n if (refresh) {\n this.unbindEvents();\n this.init(this.element, this.options);\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.setDateObjectOptions = function () {\n if (this.dateObject) {\n var newOptions = this.getDateObjectOptions();\n this.dateObject.setOptions(newOptions);\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.resetLocale = function () {\n this.unbindEvents();\n this.init(this.element, this.options);\n };\n /**\n * @hidden\n */\n DateInput.prototype.isInCaretMode = function () {\n return this.interactionMode === DateInputInteractionMode.Caret;\n };\n DateInput.prototype.focus = function () {\n this.element.focus();\n if (this.options.selectNearestSegmentOnFocus) {\n this.selectNearestSegment(0);\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementDragStart = function (e) {\n e.preventDefault();\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementDrop = function (e) {\n e.preventDefault();\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementMouseDown = function () {\n this.mouseDownStarted = true;\n this.focusedPriorToMouseDown = this.isActive;\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementMouseUp = function (e) {\n this.mouseDownStarted = false;\n e.preventDefault();\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementClick = function (e) {\n this.mouseDownStarted = false;\n this.switchedPartOnPreviousKeyAction = false;\n var selection = this.selection;\n if (this.isInCaretMode()) {\n // explicitly refresh the input element value\n // caret mode can change the number of symbols in the element\n // thus clicking on a segment can result in incorrect selection\n this.forceUpdate();\n }\n if (e.detail === 3) {\n // when 3 clicks occur, leave the native event to handle the change\n // this results in selecting the whole element value\n }\n else {\n if (this.isActive && this.options.selectNearestSegmentOnFocus) {\n var selectionPresent = this.element.selectionStart !== this.element.selectionEnd;\n var placeholderToggled = isPresent(this.options.placeholder) &&\n !this.dateObject.hasValue() &&\n !this.focusedPriorToMouseDown;\n // focus first segment if the user hasn't selected something during mousedown and if the placeholder was just toggled\n var selectFirstSegment = !selectionPresent && placeholderToggled;\n var index = selectFirstSegment ? 0 : this.caret()[0];\n this.selectNearestSegment(index);\n }\n else {\n this.setSelection(this.selectionByIndex(selection.start));\n }\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementInput = function (e) {\n this.triggerInput({ event: e });\n var oldElementValue = this.elementValue;\n if (!this.element || !this.dateObject) {\n return;\n }\n var switchedPartOnPreviousKeyAction = this.switchedPartOnPreviousKeyAction;\n if (this.isPasteInProgress) {\n if (this.options.allowCaretMode) {\n // pasting should leave the input with caret\n // thus allow direct input instead of selection mode\n this.resetSegmentValue = false;\n }\n this.updateOnPaste(e);\n this.isPasteInProgress = false;\n return;\n }\n var keyDownEvent = this.keyDownEvent || {};\n var isBackspaceKey = keyDownEvent.keyCode === KeyCode.BACKSPACE || keyDownEvent.key === Key.BACKSPACE;\n var isDeleteKey = keyDownEvent.keyCode === KeyCode.DELETE || keyDownEvent.key === Key.DELETE;\n var originalInteractionMode = this.interactionMode;\n if (this.options.allowCaretMode &&\n originalInteractionMode !== DateInputInteractionMode.Caret &&\n !isDeleteKey && !isBackspaceKey) {\n this.resetSegmentValue = true;\n }\n if (this.options.allowCaretMode) {\n this.interactionMode = DateInputInteractionMode.Caret;\n }\n else {\n this.interactionMode = DateInputInteractionMode.Selection;\n }\n var hasCaret = this.isInCaretMode();\n if (hasCaret && this.keyDownEvent.key === Key.SPACE) {\n // do not allow custom \"holes\" in the date segments\n this.restorePreviousInputEventState();\n return;\n }\n var oldExistingDateValue = this.dateObject && this.dateObject.getValue();\n var oldDateValue = this.dateObject ? this.dateObject.value : null;\n var _a = this.dateObject.getTextAndFormat(), currentText = _a.text, currentFormat = _a.format;\n this.currentFormat = currentFormat;\n var oldText = \"\";\n if (hasCaret) {\n if (isBackspaceKey || isDeleteKey) {\n oldText = this.previousElementValue;\n }\n else if (originalInteractionMode === DateInputInteractionMode.Caret) {\n oldText = this.previousElementValue;\n }\n else {\n oldText = currentText;\n }\n }\n else {\n oldText = currentText;\n }\n var newText = this.elementValue;\n var diff = approximateStringMatching({\n oldText: oldText,\n newText: newText,\n formatPattern: this.currentFormat,\n selectionStart: this.selection.start,\n isInCaretMode: hasCaret,\n keyEvent: this.keyDownEvent\n });\n if (diff && diff.length && diff[0] && diff[0][1] !== Constants.formatSeparator) {\n this.switchedPartOnPreviousKeyAction = false;\n }\n if (hasCaret && (!diff || diff.length === 0)) {\n this.restorePreviousInputEventState();\n return;\n }\n else if (hasCaret && diff.length === 1) {\n if (!diff[0] || !diff[0][0]) {\n this.restorePreviousInputEventState();\n return;\n }\n else if (hasCaret && diff[0] &&\n (diff[0][0] === Constants.formatSeparator || diff[0][1] === Constants.formatSeparator)) {\n this.restorePreviousInputEventState();\n return;\n }\n }\n var navigationOnly = (diff.length === 1 && diff[0][1] === Constants.formatSeparator);\n var parsePartsResults = [];\n var switchPart = false;\n var error = null;\n if (!navigationOnly) {\n for (var i = 0; i < diff.length; i++) {\n var parsePartResult = this.dateObject.parsePart({\n symbol: diff[i][0],\n currentChar: diff[i][1],\n resetSegmentValue: this.resetSegmentValue,\n cycleSegmentValue: !this.isInCaretMode(),\n rawTextValue: this.element.value,\n isDeleting: isBackspaceKey || isDeleteKey,\n originalFormat: this.currentFormat\n });\n parsePartsResults.push(parsePartResult);\n if (!parsePartResult.value) {\n error = { type: \"parse\" };\n }\n switchPart = parsePartResult.switchToNext;\n }\n }\n if (!this.options.autoSwitchParts) {\n switchPart = false;\n }\n this.resetSegmentValue = false;\n var hasFixedFormat = this.options.format === this.currentFormat ||\n // all not fixed formats are 1 symbol, e.g. \"d\"\n (isPresent(this.options.format) && this.options.format.length > 1);\n var lastParseResult = parsePartsResults[parsePartsResults.length - 1];\n var lastParseResultHasNoValue = lastParseResult && !isPresent(lastParseResult.value);\n var parsingFailedOnDelete = (hasCaret && (isBackspaceKey || isDeleteKey) && lastParseResultHasNoValue);\n var resetPart = lastParseResult ? lastParseResult.resetPart : false;\n var newExistingDateValue = this.dateObject.getValue();\n var hasExistingDateValueChanged = !isEqual(oldExistingDateValue, newExistingDateValue);\n var newDateValue = this.dateObject.value;\n var symbolForSelection;\n var currentSelection = this.selection;\n if (hasCaret) {\n var diffChar = diff && diff.length > 0 ? diff[0][0] : null;\n var hasLeadingZero = this.dateObject.getLeadingZero()[diffChar];\n if (diff.length && diff[0][0] !== Constants.formatSeparator) {\n if (switchPart) {\n this.forceUpdateWithSelection();\n this.switchDateSegment(1);\n }\n else if (resetPart) {\n symbolForSelection = this.currentFormat[currentSelection.start];\n if (symbolForSelection) {\n this.forceUpdate();\n this.setSelection(this.selectionBySymbol(symbolForSelection));\n }\n else {\n this.restorePreviousInputEventState();\n }\n }\n else if (parsingFailedOnDelete) {\n this.forceUpdate();\n if (diff.length && diff[0][0] !== Constants.formatSeparator) {\n this.setSelection(this.selectionBySymbol(diff[0][0]));\n }\n }\n else if (lastParseResultHasNoValue) {\n if (e.data === \"0\" && hasLeadingZero) {\n // do not reset element value on a leading zero\n // wait for consecutive input to determine the value\n }\n else if (isPresent(oldExistingDateValue) && !isPresent(newExistingDateValue)) {\n this.restorePreviousInputEventState();\n }\n else if (!isPresent(oldExistingDateValue) && isPresent(newExistingDateValue)) {\n this.forceUpdateWithSelection();\n }\n else if (isPresent(oldExistingDateValue) && isPresent(newExistingDateValue)) {\n if (hasExistingDateValueChanged) {\n this.forceUpdateWithSelection();\n }\n else {\n this.restorePreviousInputEventState();\n }\n }\n else if (!isPresent(oldExistingDateValue) && !isPresent(newExistingDateValue)) {\n this.forceUpdateWithSelection();\n }\n else if (oldDateValue !== newDateValue) {\n // this can happen on auto correct when no valid value is parsed\n }\n else {\n this.restorePreviousInputEventState();\n }\n }\n else if (!lastParseResultHasNoValue) {\n // the user types a valid but incomplete date (e.g. year \"123\" with format \"yyyy\")\n // let them continue typing, but refresh for not fixed formats\n if (!hasFixedFormat) {\n this.forceUpdateWithSelection();\n }\n }\n }\n else {\n if (!this.options.autoSwitchParts && diff[0][1] === Constants.formatSeparator) {\n // do not change the selection when a separator is pressed\n // this should happen only if autoSwitchKeys contains the separator explicitly\n }\n else {\n this.setSelection(this.selectionBySymbol(diff[0][0]));\n }\n }\n }\n else if (!hasCaret) {\n this.forceUpdate();\n if (diff.length && diff[0][0] !== Constants.formatSeparator) {\n this.setSelection(this.selectionBySymbol(diff[0][0]));\n }\n if (this.options.autoSwitchParts) {\n if (navigationOnly) {\n this.resetSegmentValue = true;\n if (!switchedPartOnPreviousKeyAction) {\n this.switchDateSegment(1);\n }\n this.switchedPartOnPreviousKeyAction = true;\n }\n else if (switchPart) {\n this.switchDateSegment(1);\n this.switchedPartOnPreviousKeyAction = true;\n }\n }\n else {\n if (lastParseResult && lastParseResult.switchToNext) {\n // the value is complete and should be switched, but the \"autoSwitchParts\" option prevents this\n // ensure that the segment value can be reset on next input\n this.resetSegmentValue = true;\n }\n else if (navigationOnly) {\n this.resetSegmentValue = true;\n if (!switchedPartOnPreviousKeyAction) {\n this.switchDateSegment(1);\n }\n this.switchedPartOnPreviousKeyAction = true;\n }\n }\n if (isBackspaceKey && this.options.selectPreviousSegmentOnBackspace) {\n // kendo angular have this UX\n this.switchDateSegment(-1);\n }\n }\n this.tryTriggerValueChange({\n oldValue: oldExistingDateValue,\n event: e\n });\n this.triggerInputEnd({ event: e, error: error, oldElementValue: oldElementValue, newElementValue: this.elementValue });\n if (hasCaret) {\n // a format like \"F\" can dynamically change the resolved format pattern based on the value, e.g.\n // \"Tuesday, February 1, 2022 3:04:05 AM\" becomes\n // \"Wednesday, February 2, 2022 3:04:05 AM\" giving a diff of 2 (\"Tuesday\".length - \"Wednesday\".length)\n this.setTextAndFormat();\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementFocus = function (e) {\n if (this.triggerFocus({ event: e })) {\n return;\n }\n this.isActive = true;\n this.interactionMode = DateInputInteractionMode.None;\n this.switchedPartOnPreviousKeyAction = false;\n this.refreshElementValue();\n if (!this.mouseDownStarted) {\n this.caret(0, this.elementValue.length);\n }\n this.mouseDownStarted = false;\n this.triggerFocusEnd({ event: e });\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementBlur = function (e) {\n this.resetSegmentValue = true;\n this.isActive = false;\n if (this.triggerBlur({ event: e })) {\n return;\n }\n if (this.options.autoFill) {\n this.autoFill();\n }\n this.interactionMode = DateInputInteractionMode.None;\n this.switchedPartOnPreviousKeyAction = false;\n this.refreshElementValue();\n this.triggerBlurEnd({ event: e });\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementChange = function (e) {\n this.triggerChange({ event: e });\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementKeyDown = function (e) {\n if (this.triggerKeyDown({ event: e })) {\n return;\n }\n var _a = this.selection, start = _a.start, end = _a.end;\n var event = e;\n this.keyDownEvent = e;\n this.previousElementValue = this.element.value;\n this.previousElementSelection = { start: start, end: end };\n if (this.keyEventMatchesAutoSwitchKeys(e)) {\n var isTabKey = e.keyCode === KeyCode.TAB;\n if (isTabKey) {\n var _b = this.selection, selectionStart = _b.start, selectionEnd = _b.end;\n if (e.shiftKey && isTabKey) {\n this.switchDateSegment(-1);\n }\n else {\n this.switchDateSegment(1);\n }\n if (selectionStart !== this.selection.start || selectionEnd !== this.selection.end) {\n // when the selection changes, prevent the default Tab behavior\n e.preventDefault();\n return;\n }\n }\n else {\n // do not allow the \"input\" event to be triggered\n e.preventDefault();\n this.switchDateSegment(1);\n return;\n }\n }\n var symbol = this.currentFormat[this.selection.start];\n var step = this.getStepFromSymbol(symbol);\n var shouldPreventDefault = false;\n var oldElementValue = this.elementValue;\n if (e.altKey || e.ctrlKey || e.metaKey || e.keyCode === KeyCode.TAB) {\n return;\n }\n switch (e.keyCode) {\n case KeyCode.ARROW_LEFT:\n this.switchDateSegment(-1);\n shouldPreventDefault = true;\n this.switchedPartOnPreviousKeyAction = false;\n break;\n case KeyCode.ARROW_UP:\n this.modifyDateSegmentValue(step, symbol, event);\n if (oldElementValue !== this.elementValue) {\n this.triggerInputEnd({ event: e, error: null, newElementValue: this.elementValue, oldElementValue: oldElementValue });\n }\n shouldPreventDefault = true;\n this.switchedPartOnPreviousKeyAction = false;\n break;\n case KeyCode.ARROW_RIGHT:\n this.switchDateSegment(1);\n shouldPreventDefault = true;\n this.switchedPartOnPreviousKeyAction = false;\n break;\n case KeyCode.ARROW_DOWN:\n this.modifyDateSegmentValue(-step, symbol, event);\n if (oldElementValue !== this.elementValue) {\n this.triggerInputEnd({ event: e, error: null, newElementValue: this.elementValue, oldElementValue: oldElementValue });\n }\n shouldPreventDefault = true;\n this.switchedPartOnPreviousKeyAction = false;\n break;\n case KeyCode.ENTER:\n // todo: handle \"change\" event\n break;\n case KeyCode.HOME:\n this.selectNearestSegment(0);\n shouldPreventDefault = true;\n this.switchedPartOnPreviousKeyAction = false;\n this.resetSegmentValue = true;\n break;\n case KeyCode.END:\n this.selectNearestSegment(this.elementValue.length);\n shouldPreventDefault = true;\n this.switchedPartOnPreviousKeyAction = false;\n this.resetSegmentValue = true;\n break;\n default:\n // allow the \"input\" event to handle the change\n return;\n }\n if (shouldPreventDefault) {\n e.preventDefault();\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementPaste = function () {\n this.isPasteInProgress = true;\n };\n /**\n * @hidden\n */\n DateInput.prototype.onElementMouseWheel = function (e) {\n var oldElementValue = this.elementValue;\n if (!this.options.enableMouseWheel || this.triggerMouseWheel({ event: e })) {\n return;\n }\n if (!this.isActive) {\n return;\n }\n var event = e;\n if (event.shiftKey) {\n this.switchDateSegment((event.wheelDelta || -event.detail) > 0 ? -1 : 1);\n }\n else {\n this.modifyDateSegmentValue((event.wheelDelta || -event.detail) > 0 ? 1 : -1);\n }\n event.returnValue = false;\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (oldElementValue !== this.elementValue) {\n this.triggerInputEnd({ event: e, error: null, newElementValue: this.elementValue, oldElementValue: oldElementValue });\n }\n };\n DateInput.prototype.updateOnPaste = function (e) {\n var value = this.intl.parseDate(this.elementValue, this.inputFormat) || this.value;\n if (isPresent(value) && this.dateObject.shouldNormalizeCentury()) {\n value = this.dateObject.normalizeCentury(value);\n }\n var oldDateObjectValue = this.dateObject && this.dateObject.getValue();\n this.writeValue(value);\n this.tryTriggerValueChange({\n oldValue: oldDateObjectValue,\n event: e\n });\n };\n Object.defineProperty(DateInput.prototype, \"elementValue\", {\n get: function () {\n return (this.element || {}).value || '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"inputFormat\", {\n get: function () {\n if (!this.options.format) {\n return Constants.defaultDateFormat;\n }\n if (typeof this.options.format === 'string') {\n return this.options.format;\n }\n else {\n return this.options.format.inputFormat;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"displayFormat\", {\n get: function () {\n if (!this.options.format) {\n return Constants.defaultDateFormat;\n }\n if (typeof this.options.format === 'string') {\n return this.options.format;\n }\n else {\n return this.options.format.displayFormat;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"selection\", {\n get: function () {\n var returnValue = { start: 0, end: 0 };\n if (this.element !== null && this.element.selectionStart !== undefined) {\n returnValue = {\n start: this.element.selectionStart,\n end: this.element.selectionEnd\n };\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n DateInput.prototype.setSelection = function (selection) {\n if (this.element && document.activeElement === this.element) {\n this.element.setSelectionRange(selection.start, selection.end);\n if (isDocumentAvailable() && isIOS()) {\n this.element.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n if (selection.start !== selection.end) {\n this.interactionMode = DateInputInteractionMode.Selection;\n }\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.selectionBySymbol = function (symbol) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n if (!this.options.autoCorrectParts && this.currentFormat.length !== this.currentText.length) {\n if (this.currentFormat.length < this.currentText.length) {\n end += this.currentText.length - this.currentFormat.length;\n }\n else {\n end = Math.max(0, end - (this.currentFormat.length - this.currentText.length));\n }\n }\n return { start: start, end: end };\n };\n /**\n * @hidden\n */\n DateInput.prototype.selectionByIndex = function (index) {\n var selection = { start: index, end: index };\n for (var i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== Constants.formatSeparator) {\n selection = this.selectionBySymbol(this.currentFormat[i]);\n break;\n }\n if (j >= 0 && this.currentFormat[j] !== Constants.formatSeparator) {\n selection = this.selectionBySymbol(this.currentFormat[j]);\n break;\n }\n }\n return selection;\n };\n DateInput.prototype.switchDateSegment = function (offset) {\n var selection = this.selection;\n if (this.isInCaretMode()) {\n var start = selection.start;\n var currentSymbol = this.currentFormat[start - 1];\n var symbol = \"\";\n var symbolCandidate = \"\";\n if (offset < 0) {\n for (var i = start + offset; i >= 0; i--) {\n symbolCandidate = this.currentFormat[i];\n if (symbolCandidate !== Constants.formatSeparator &&\n symbolCandidate !== currentSymbol) {\n start = i;\n symbol = symbolCandidate;\n break;\n }\n }\n }\n else {\n for (var i = start + offset; i < this.currentFormat.length; i++) {\n symbolCandidate = this.currentFormat[i];\n if (symbolCandidate !== Constants.formatSeparator &&\n symbolCandidate !== currentSymbol) {\n start = i;\n symbol = symbolCandidate;\n break;\n }\n }\n }\n if (symbol) {\n this.forceUpdate();\n this.setSelection(this.selectionBySymbol(symbol));\n this.interactionMode = DateInputInteractionMode.Selection;\n return;\n }\n }\n this.interactionMode = DateInputInteractionMode.None;\n var _a = this.selection, selectionStart = _a.start, selectionEnd = _a.end;\n if (selectionStart < selectionEnd &&\n this.currentFormat[selectionStart] !== this.currentFormat[selectionEnd - 1]) {\n this.setSelection(this.selectionByIndex(offset > 0 ? selectionStart : selectionEnd - 1));\n this.resetSegmentValue = true;\n this.interactionMode = DateInputInteractionMode.None;\n return;\n }\n var previousFormatSymbol = this.currentFormat[selectionStart];\n var a = selectionStart + offset;\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol &&\n this.currentFormat[a] !== Constants.formatSeparator) {\n break;\n }\n a += offset;\n }\n if (this.currentFormat[a] === Constants.formatSeparator) {\n // no known symbol is found\n return;\n }\n var b = a;\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n b += offset;\n }\n if (a > b && (b + 1 !== selectionStart || a + 1 !== selectionEnd)) {\n this.setSelection({ start: b + 1, end: a + 1 });\n this.resetSegmentValue = true;\n }\n else if (a < b && (a !== selectionStart || b !== selectionEnd)) {\n this.setSelection({ start: a, end: b });\n this.resetSegmentValue = true;\n }\n this.interactionMode = DateInputInteractionMode.None;\n };\n DateInput.prototype.modifyDateSegmentValue = function (offset, symbol, event) {\n if (symbol === void 0) { symbol = \"\"; }\n if (event === void 0) { event = {}; }\n if (!this.dateObject || this.options.readonly) {\n return;\n }\n var oldValue = this.value;\n var step = DEFAULT_SEGMENT_STEP;\n var caret = this.caret();\n symbol = symbol || this.currentFormat[caret[0]];\n if (symbol === \"S\" && (!this.options.steps.millisecond || this.options.steps.millisecond === DEFAULT_SEGMENT_STEP)) {\n var msDigits = millisecondDigitsInFormat(this.inputFormat);\n step = millisecondStepFor(msDigits);\n }\n this.dateObject.modifyPart(symbol, step * offset);\n this.tryTriggerValueChange({\n oldValue: oldValue,\n event: event\n });\n this.forceUpdate();\n this.setSelection(this.selectionBySymbol(symbol));\n };\n /**\n * @hidden\n */\n DateInput.prototype.tryTriggerValueChange = function (args) {\n if (args === void 0) { args = { oldValue: null, event: {} }; }\n if (!isEqual(this.value, args.oldValue)) {\n return this.triggerValueChange(args);\n }\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerValueChange = function (args) {\n if (args === void 0) { args = { oldValue: null, event: {} }; }\n return this.trigger(VALUE_CHANGE, extend(args, {\n value: this.value\n }));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerInput = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(INPUT, extend(args, {\n value: this.value\n }));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerInputEnd = function (args) {\n if (args === void 0) { args = { event: {}, error: null, oldElementValue: '', newElementValue: '' }; }\n return this.trigger(INPUT_END, extend(args, {\n value: this.value\n }));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerFocus = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(FOCUS, extend({}, args));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerFocusEnd = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(FOCUS_END, extend({}, args));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerBlur = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(BLUR, extend({}, args));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerBlurEnd = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(BLUR_END, extend({}, args));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerChange = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(CHANGE, extend(args, {\n value: this.value\n }));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerKeyDown = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(KEY_DOWN, extend({}, args));\n };\n /**\n * @hidden\n */\n DateInput.prototype.triggerMouseWheel = function (args) {\n if (args === void 0) { args = { event: {} }; }\n return this.trigger(MOUSE_WHEEL, extend({}, args));\n };\n /**\n * @hidden\n */\n DateInput.prototype.forceUpdate = function () {\n this.setTextAndFormat();\n this.refreshElementValue();\n };\n /**\n * @hidden\n */\n DateInput.prototype.forceUpdateWithSelection = function () {\n var _a = this.selection, start = _a.start, end = _a.end;\n var elementValueLength = this.elementValue.length;\n this.forceUpdate();\n var selectionOffset = this.elementValue.length - elementValueLength;\n this.setSelection({\n start: start + selectionOffset,\n end: end + selectionOffset\n });\n };\n /**\n * @hidden\n */\n DateInput.prototype.setTextAndFormat = function () {\n var _a = this.dateObject.getTextAndFormat(), currentText = _a.text, currentFormat = _a.format;\n this.currentFormat = currentFormat;\n this.currentText = currentText;\n };\n /**\n * @hidden\n */\n DateInput.prototype.setElementValue = function (value) {\n this.element.value = value;\n };\n /**\n * @hidden\n */\n DateInput.prototype.getStepFromSymbol = function (symbol) {\n /* eslint-disable no-fallthrough */\n switch (symbol) {\n case \"S\":\n return Number(this.options.steps.millisecond);\n case \"s\":\n return Number(this.options.steps.second);\n case \"m\":\n return Number(this.options.steps.minute);\n // represents hour as value from 01 through 12\n case \"h\":\n // represents hour as value from 01 through 23\n case \"H\":\n return Number(this.options.steps.hour);\n case \"M\":\n return Number(this.options.steps.month);\n // there is no 'D' format specifier for day\n case \"d\":\n // used for formats such as \"EEEE, MMMM d, yyyy\",\n // where \"EEEE\" stands for full name of the day e.g. Monday\n case \"E\":\n return Number(this.options.steps.day);\n // there is no 'Y' format specifier for year\n case \"y\":\n return Number(this.options.steps.year);\n default:\n return DEFAULT_SEGMENT_STEP;\n }\n /* eslint-enable no-fallthrough */\n };\n /**\n * @hidden\n */\n DateInput.prototype.restorePreviousInputEventState = function () {\n this.restorePreviousElementValue();\n this.restorePreviousElementSelection();\n };\n /**\n * @hidden\n */\n DateInput.prototype.restorePreviousElementValue = function () {\n this.setElementValue(this.previousElementValue || '');\n };\n /**\n * @hidden\n */\n DateInput.prototype.restorePreviousElementSelection = function () {\n var _a = this.previousElementSelection, start = _a.start, end = _a.end;\n this.setSelection({ start: start || 0, end: end || 0 });\n };\n DateInput.prototype.writeValue = function (value) {\n this.verifyValue(value);\n this.dateObject = this.getDateObject(value);\n this.refreshElementValue();\n };\n DateInput.prototype.verifyValue = function (value) {\n if (value && !isValidDate(value)) {\n throw new Error(\"The 'value' should be a valid JavaScript Date instance.\");\n }\n };\n DateInput.prototype.refreshElementValue = function () {\n var element = this.element;\n var format = this.isActive ? this.inputFormat : this.displayFormat;\n var _a = this.dateObject.getTextAndFormat(format), currentText = _a.text, currentFormat = _a.format;\n this.currentFormat = currentFormat;\n this.currentText = currentText;\n var hasPlaceholder = this.options.hasPlaceholder || isPresent(this.options.placeholder);\n var showPlaceholder = !this.isActive &&\n hasPlaceholder &&\n !this.dateObject.hasValue();\n if (hasPlaceholder && isPresent(this.options.placeholder)) {\n element.placeholder = this.options.placeholder;\n }\n var newElementValue = showPlaceholder ? \"\" : currentText;\n this.previousElementValue = this.elementValue;\n this.setElementValue(newElementValue);\n };\n /**\n * @hidden\n */\n DateInput.prototype.caret = function (start, end) {\n if (end === void 0) { end = start; }\n var isPosition = start !== undefined;\n var returnValue = [start, start];\n var element = this.element;\n if (isPosition && (this.options.disabled || this.options.readonly)) {\n return undefined;\n }\n try {\n if (element.selectionStart !== undefined) {\n if (isPosition) {\n if (isDocumentAvailable() && document.activeElement !== element) {\n element.focus();\n }\n element.setSelectionRange(start, end);\n }\n returnValue = [element.selectionStart, element.selectionEnd];\n }\n }\n catch (e) {\n returnValue = [];\n }\n return returnValue;\n };\n DateInput.prototype.selectNearestSegment = function (index) {\n // Finds the nearest (in both directions) known part.\n for (var i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== \"_\") {\n this.selectDateSegment(this.currentFormat[i]);\n return;\n }\n if (j >= 0 && this.currentFormat[j] !== \"_\") {\n this.selectDateSegment(this.currentFormat[j]);\n return;\n }\n }\n };\n DateInput.prototype.selectDateSegment = function (symbol) {\n var begin = -1;\n var end = 0;\n for (var i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (begin === -1) {\n begin = i;\n }\n }\n }\n if (begin < 0) {\n begin = 0;\n }\n this.caret(0, 0);\n this.caret(begin, end);\n };\n /**\n * @hidden\n */\n DateInput.prototype.getDateObject = function (value) {\n var leadingZero = ((this.dateObject || {}) || null).leadingZero;\n this.options.value = value;\n var dateObject = this.createDateObject();\n dateObject.setLeadingZero(this.isActive ? leadingZero : null);\n return dateObject;\n };\n /* tslint:disable:align */\n /**\n * @hidden\n */\n DateInput.prototype.createDateObject = function () {\n var defaultOptions = this.getDateObjectOptions();\n var dateObject = new DateObject(extend({}, defaultOptions));\n return dateObject;\n };\n /**\n * @hidden\n */\n DateInput.prototype.getDateObjectOptions = function () {\n var newOptions = {\n intlService: this.options.intlService,\n formatPlaceholder: this.options.formatPlaceholder ? this.options.formatPlaceholder : 'formatPattern',\n format: this.inputFormat,\n cycleTime: this.options.cycleTime,\n twoDigitYearMax: this.options.twoDigitYearMax,\n autoCorrectParts: this.options.autoCorrectParts,\n value: this.options.value,\n toggleDayPeriod: this.options.toggleDayPeriod\n };\n return newOptions;\n };\n /* tslint:enable:align */\n /**\n * @hidden\n */\n DateInput.prototype.keyEventMatchesAutoSwitchKeys = function (keyObject) {\n var autoSwitchKeys = (this.options.autoSwitchKeys || [])\n .map(function (x) { return x.toString().toLowerCase().trim(); });\n if (autoSwitchKeys.indexOf(keyObject.keyCode.toString()) >= 0 ||\n autoSwitchKeys.indexOf(keyObject.keyCode) >= 0 ||\n autoSwitchKeys.indexOf(keyObject.key.toLowerCase().trim()) >= 0) {\n return true;\n }\n return false;\n };\n /**\n * @hidden\n */\n DateInput.prototype.autoFill = function () {\n var dateObject = this.dateObject, currentDate = new Date(), day, month, year, hours, minutes, seconds;\n if (dateObject.date || dateObject.month || dateObject.year || dateObject.hours || dateObject.minutes || dateObject.seconds) {\n year = dateObject.year ? dateObject.value.getFullYear() : currentDate.getFullYear(),\n month = dateObject.month ? dateObject.value.getMonth() : currentDate.getMonth(),\n day = dateObject.date ? dateObject.value.getDate() : currentDate.getDate(),\n hours = dateObject.hours ? dateObject.value.getHours() : currentDate.getHours(),\n minutes = dateObject.minutes ? dateObject.value.getMinutes() : currentDate.getMinutes(),\n seconds = dateObject.seconds ? dateObject.value.getSeconds() : currentDate.getSeconds();\n dateObject.setValue(new Date(year, month, day, hours, minutes, seconds));\n this.refreshElementValue();\n this.triggerValueChange();\n }\n };\n return DateInput;\n}(Observable));\nexport { DateInput };\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport var isEqual = function (candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport var lastDayOfMonth = function (date) {\n var newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return addDays(newDate, -1);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nvar MONTHS_LENGTH = 12;\nvar normalize = function (date, expectedMonth) { return (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n); };\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport var addMonths = function (date, offset) {\n var newDate = cloneDate(date);\n var diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n var expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n newDate.setMonth(newDate.getMonth() + offset);\n return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","var Mask = /** @class */ (function () {\n function Mask() {\n this.symbols = '';\n this.partMap = [];\n }\n return Mask;\n}());\nexport { Mask };\n","export var Constants = {\n formatSeparator: \"_\",\n twoDigitYearMax: 68,\n defaultDateFormat: \"d\",\n defaultLocaleId: \"en\"\n};\n","export var Key = {\n DELETE: \"Delete\",\n BACKSPACE: \"Backspace\",\n TAB: \"Tab\",\n ENTER: \"Enter\",\n ESCAPE: \"Escape\",\n ARROW_LEFT: \"ArrowLeft\",\n ARROW_UP: \"ArrowUp\",\n ARROW_RIGHT: \"ArrowRight\",\n ARROW_DOWN: \"ArrowDown\",\n SPACE: \" \",\n END: \"End\",\n HOME: \"Home\",\n PAGE_UP: \"PageUp\",\n PAGE_DOWN: \"PageDown\"\n};\n","import { Constants } from '../common/constants';\nimport { Key } from '../common/key';\n/**\n * @hidden\n */\nexport var padZero = function (length) { return new Array(Math.max(length, 0)).fill('0').join(''); };\n/**\n * @hidden\n */\nexport var unpadZero = function (value) { return value.replace(/^0*/, ''); };\n/**\n * @hidden\n */\nexport var approximateStringMatching = function (_a) {\n var oldText = _a.oldText, newText = _a.newText, formatPattern = _a.formatPattern, selectionStart = _a.selectionStart, isInCaretMode = _a.isInCaretMode, keyEvent = _a.keyEvent;\n /*\n Remove the right part of the cursor.\n oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n */\n var oldIndex = selectionStart + oldText.length - newText.length;\n var oldTextSeparator = oldText[oldIndex];\n var oldSegmentText = oldText.substring(0, oldIndex);\n var newSegmentText = newText.substring(0, selectionStart);\n var diff = [];\n /* Handle the typing of a single character over the same selection. */\n if (oldSegmentText === newSegmentText && selectionStart > 0) {\n diff.push([formatPattern[selectionStart - 1], newSegmentText[selectionStart - 1]]);\n return diff;\n }\n if (oldSegmentText.indexOf(newSegmentText) === 0 && (isInCaretMode &&\n (keyEvent.key === Key.DELETE || keyEvent.key === Key.BACKSPACE)) ||\n (oldSegmentText.indexOf(newSegmentText) === 0 && !isInCaretMode &&\n (newSegmentText.length === 0 ||\n formatPattern[newSegmentText.length - 1] !== formatPattern[newSegmentText.length]))) {\n /* Handle Delete/Backspace. */\n var deletedSymbol = '';\n /*\n The whole text is replaced by the same character.\n A nasty patch is required to keep the selection in the first segment.\n */\n if (!isInCaretMode && newSegmentText.length === 1) {\n diff.push([formatPattern[0], newSegmentText[0]]);\n }\n for (var i = newSegmentText.length; i < oldSegmentText.length; i++) {\n if (formatPattern[i] !== deletedSymbol && formatPattern[i] !== Constants.formatSeparator) {\n deletedSymbol = formatPattern[i];\n diff.push([deletedSymbol, '']);\n }\n }\n return diff;\n }\n /*\n Handle the insertion of the text (the new text is longer than the previous one).\n Handle the typing over a literal as well.\n */\n if ((isInCaretMode &&\n (newSegmentText.indexOf(oldSegmentText) === 0 ||\n formatPattern[selectionStart - 1] === Constants.formatSeparator)) ||\n (!isInCaretMode &&\n (newSegmentText.indexOf(oldSegmentText) === 0 ||\n formatPattern[selectionStart - 1] === Constants.formatSeparator))) {\n var symbol = formatPattern[0];\n for (var i = Math.max(0, oldSegmentText.length - 1); i < formatPattern.length; i++) {\n if (formatPattern[i] !== Constants.formatSeparator) {\n symbol = formatPattern[i];\n break;\n }\n }\n return [[symbol, newSegmentText[selectionStart - 1]]];\n }\n /* Handle the entering of a space or a separator for navigating to the next item. */\n if ((newSegmentText[newSegmentText.length - 1] === ' ') ||\n (newSegmentText[newSegmentText.length - 1] === oldTextSeparator && formatPattern[oldIndex] === '_')) {\n return [[formatPattern[selectionStart - 1], Constants.formatSeparator]];\n }\n /* Handle typing over a correctly selected part. */\n var result = [[formatPattern[selectionStart - 1], newSegmentText[selectionStart - 1]]];\n return result;\n};\n/**\n * @hidden\n */\nexport var dateSymbolMap = function (map, part) {\n map[part.pattern[0]] = part.type;\n return map;\n};\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (candidate === null || !((min && min > candidate) || (max && max < candidate))); };\n","import { cloneDate } from '@progress/kendo-date-math';\nvar isObject = function (value) { return value && typeof (value) === \"object\" && !Array.isArray(value); };\nvar isHtmlElement = function (element) { return element instanceof HTMLElement; };\nvar dateSetter = function (method) { return function (date, value) {\n var clone = cloneDate(date);\n clone[method](value);\n return clone;\n}; };\n/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== undefined && value !== null; };\n/**\n * @hidden\n */\nexport var isDocumentAvailable = function () { return !!document; };\n/**\n * @hidden\n */\nexport var isNumber = function (value) { return isPresent(value) && typeof (value) === \"number\" && !Number.isNaN(value); };\n/**\n * @hidden\n */\nexport var parseToInt = function (value) { return parseInt(value, 10); };\n/**\n * @hidden\n */\nexport var isParseableToInt = function (value) { return isNumber(parseToInt(value)) && /^[0-9]+$/.test(value); };\n/**\n * @hidden\n */\nexport var clamp = function (value, min, max) { return Math.min(max, Math.max(min, value)); };\n/**\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport var extend = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Object.assign.apply(Object, args);\n};\n/**\n * @hidden\n */\nexport var deepExtend = function (target) {\n var _a, _b;\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n if (!sources.length) {\n return target;\n }\n var source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (var key in source) {\n if (isHtmlElement(source[key])) {\n target[key] = source[key];\n }\n else if (isObject(source[key]) && !(source[key] instanceof Date)) {\n if (!target[key] || !isObject(target[key])) {\n extend(target, (_a = {}, _a[key] = {}, _a));\n }\n deepExtend(target[key], source[key]);\n }\n else {\n extend(target, (_b = {}, _b[key] = source[key], _b));\n }\n }\n }\n return deepExtend.apply(void 0, [target].concat(sources));\n};\n/**\n * @hidden\n */\nexport var noop = function () { };\n/**\n * @hidden\n */\nexport var isFunction = function (fn) { return typeof (fn) === \"function\"; };\n/**\n * @hidden\n */\nexport var cropTwoDigitYear = function (date) {\n if (!isPresent(date) || isNaN(date.getTime())) {\n return 0;\n }\n return Number(date\n .getFullYear()\n .toString()\n .slice(-2));\n};\n/**\n * @hidden\n */\nexport var setYears = dateSetter('setFullYear');\n/**\n * @hidden\n */\nexport var millisecondDigitsInFormat = function (format) {\n var result = format && format.match(/S+(\\1)/);\n return result ? result[0].length : 0;\n};\n/**\n * @hidden\n */\nexport var millisecondStepFor = function (digits) {\n return Math.pow(10, 3 - digits);\n};\n/**\n * @hidden\n */\nexport var areDatePartsEqualTo = function (date, year, month, day, hour, minutes, seconds, milliseconds) {\n if (date &&\n date.getFullYear() === year &&\n date.getMonth() === month &&\n date.getDate() === day &&\n date.getHours() === hour &&\n date.getMinutes() === minutes &&\n date.getSeconds() === seconds &&\n date.getMilliseconds() === milliseconds) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n */\nexport var isValidDate = function (value) { return isPresent(value) && value.getTime && isNumber(value.getTime()); };\n/**\n * @hidden\n */\nexport var isIOS = function () { return /iPad|iPhone|iPod/.test(navigator.userAgent) || (navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /Macintosh/i.test(navigator.userAgent)); };\n","import { addMonths, cloneDate, createDate, isEqual, getDate, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Mask } from './mask';\nimport { dateSymbolMap, padZero, unpadZero } from '../dateinput/utils';\nimport { extend, isPresent, cropTwoDigitYear, setYears, parseToInt, clamp, areDatePartsEqualTo, isNumber, isValidDate, isParseableToInt } from './utils';\nimport { Constants } from './constants';\nvar MONTH_INDEX_FEBRUARY = 1;\nvar DEFAULT_LEAP_YEAR = 2000;\nvar PREVIOUS_CENTURY_BASE = 1900;\nvar CURRENT_CENTURY_BASE = 2000;\nvar SHORT_PATTERN_LENGTH_REGEXP = /d|M|H|h|m|s/;\nvar MONTH_PART_WITH_WORDS_THRESHOLD = 2;\nvar MONTH_SYMBOL = \"M\";\n// JS months start from 0 (January) instead of 1 (January)\nvar JS_MONTH_OFFSET = 1;\nvar DateObject = /** @class */ (function () {\n function DateObject(_a) {\n var intlService = _a.intlService, formatPlaceholder = _a.formatPlaceholder, format = _a.format, _b = _a.cycleTime, cycleTime = _b === void 0 ? false : _b, _c = _a.twoDigitYearMax, twoDigitYearMax = _c === void 0 ? Constants.twoDigitYearMax : _c, _d = _a.value, value = _d === void 0 ? null : _d, _e = _a.autoCorrectParts, autoCorrectParts = _e === void 0 ? true : _e, _f = _a.toggleDayPeriod, toggleDayPeriod = _f === void 0 ? false : _f;\n this.year = true;\n this.month = true;\n this.date = true;\n this.hours = true;\n this.minutes = true;\n this.seconds = true;\n this.milliseconds = true;\n this.dayperiod = true;\n this.leadingZero = null;\n this.typedMonthPart = '';\n this.knownParts = 'adHhmMsEyS';\n this.symbols = {\n 'E': 'E',\n 'H': 'H',\n 'M': 'M',\n 'a': 'a',\n 'd': 'd',\n 'h': 'h',\n 'm': 'm',\n 's': 's',\n 'y': 'y',\n 'S': 'S'\n };\n this._value = this.getDefaultDate();\n this.cycleTime = false;\n this._partiallyInvalidDate = {\n startDate: null,\n invalidDateParts: {\n 'E': { value: null, date: null, startDateOffset: 0 },\n 'H': { value: null, date: null, startDateOffset: 0 },\n 'M': { value: null, date: null, startDateOffset: 0 },\n 'a': { value: null, date: null, startDateOffset: 0 },\n 'd': { value: null, date: null, startDateOffset: 0 },\n 'h': { value: null, date: null, startDateOffset: 0 },\n 'm': { value: null, date: null, startDateOffset: 0 },\n 's': { value: null, date: null, startDateOffset: 0 },\n 'y': { value: null, date: null, startDateOffset: 0 },\n 'S': { value: null, date: null, startDateOffset: 0 }\n }\n };\n this.setOptions({\n intlService: intlService,\n formatPlaceholder: formatPlaceholder,\n format: format,\n cycleTime: cycleTime,\n twoDigitYearMax: twoDigitYearMax,\n value: value,\n autoCorrectParts: autoCorrectParts,\n toggleDayPeriod: toggleDayPeriod\n });\n if (!value) {\n this._value = this.getDefaultDate();\n var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (var i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], false);\n }\n }\n else {\n this._value = cloneDate(value);\n }\n }\n Object.defineProperty(DateObject.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n set: function (value) {\n if (value && !(value instanceof Date)) {\n // throw new Error(\"The 'value' should be a valid JavaScript Date instance.\");\n return;\n }\n this._value = value;\n this.resetInvalidDate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateObject.prototype, \"localeId\", {\n get: function () {\n var localeId = Constants.defaultLocaleId;\n var cldrKeys = Object.keys(this.intl.cldr);\n for (var i = 0; i < cldrKeys.length; i++) {\n var key = cldrKeys[i];\n var value = this.intl.cldr[key];\n if (value.name && value.calendar && value.numbers &&\n value.name !== Constants.defaultLocaleId) {\n localeId = value.name;\n break;\n }\n }\n return localeId;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DateObject.prototype.setOptions = function (options) {\n this.intl = options.intlService;\n this.formatPlaceholder = options.formatPlaceholder || 'wide';\n this.format = options.format;\n this.cycleTime = options.cycleTime;\n this.monthNames = this.allFormattedMonths(this.localeId);\n this.dayPeriods = this.allDayPeriods(this.localeId);\n this.twoDigitYearMax = options.twoDigitYearMax;\n this.autoCorrectParts = options.autoCorrectParts;\n this.toggleDayPeriod = options.toggleDayPeriod;\n };\n DateObject.prototype.setValue = function (value) {\n if (!value) {\n this._value = this.getDefaultDate();\n this.modifyExisting(false);\n }\n else if (!isEqual(value, this._value)) {\n this._value = cloneDate(value);\n this.modifyExisting(true);\n }\n this.resetInvalidDate();\n };\n /**\n * @hidden\n */\n DateObject.prototype.hasValue = function () {\n var _this = this;\n var pred = function (a, p) { return a || p.type !== 'literal' && p.type !== 'dayperiod' && _this.getExisting(p.pattern[0]); };\n return this.intl.splitDateFormat(this.format, this.localeId).reduce(pred, false);\n };\n /**\n * @hidden\n */\n DateObject.prototype.getValue = function () {\n for (var i = 0; i < this.knownParts.length; i++) {\n if (!this.getExisting(this.knownParts[i])) {\n return null;\n }\n }\n return cloneDate(this.value);\n };\n /**\n * @hidden\n */\n DateObject.prototype.createDefaultDate = function () {\n // use the leap year 2000 that has 29th February\n // and a month that has 31 days\n // so that the default date can accommodate maximum date values\n // it is better to use a fixed date instead of new Date()\n // as otherwise the\n return createDate(DEFAULT_LEAP_YEAR, 0, 31);\n };\n /**\n * @hidden\n */\n DateObject.prototype.getDefaultDate = function () {\n return getDate(this.createDefaultDate());\n };\n /**\n * @hidden\n */\n DateObject.prototype.getFormattedDate = function (format) {\n return this.intl.formatDate(this.getValue(), format, this.localeId);\n };\n /**\n * @hidden\n */\n DateObject.prototype.getTextAndFormat = function (customFormat) {\n if (customFormat === void 0) { customFormat = \"\"; }\n var format = customFormat || this.format;\n var text = this.intl.formatDate(this.value, format, this.localeId);\n var mask = this.dateFormatString(this.value, format);\n if (!this.autoCorrectParts && this._partiallyInvalidDate.startDate) {\n var partiallyInvalidText = \"\";\n var formattedDate = this.intl.formatDate(this.value, format, this.localeId);\n var formattedDates = this.getFormattedInvalidDates(format);\n for (var i = 0; i < formattedDate.length; i++) {\n var symbol = mask.symbols[i];\n if (mask.partMap[i].type === \"literal\") {\n partiallyInvalidText += text[i];\n }\n else if (this.getInvalidDatePartValue(symbol)) {\n var partsForSegment = this.getPartsForSegment(mask, i);\n if (symbol === \"M\") {\n var datePartText = (parseToInt(this.getInvalidDatePartValue(symbol)) + JS_MONTH_OFFSET).toString();\n if (partsForSegment.length > MONTH_PART_WITH_WORDS_THRESHOLD) {\n partiallyInvalidText += formattedDates[symbol][i];\n }\n else {\n if (this.getInvalidDatePartValue(symbol)) {\n var formattedDatePart = padZero(partsForSegment.length - datePartText.length) + datePartText;\n partiallyInvalidText += formattedDatePart;\n // add -1 as the first character in the segment is at index i\n i += partsForSegment.length - 1;\n }\n else {\n partiallyInvalidText += formattedDates[symbol][i];\n }\n }\n }\n else {\n if (this.getInvalidDatePartValue(symbol)) {\n var datePartText = this.getInvalidDatePartValue(symbol).toString();\n var formattedDatePart = padZero(partsForSegment.length - datePartText.length) + datePartText;\n partiallyInvalidText += formattedDatePart;\n // add -1 as the first character in the segment is at index i\n i += partsForSegment.length - 1;\n }\n else {\n partiallyInvalidText += formattedDates[symbol][i];\n }\n }\n }\n else {\n partiallyInvalidText += text[i];\n }\n }\n text = partiallyInvalidText;\n }\n var result = this.merge(text, mask);\n return result;\n };\n /**\n * @hidden\n */\n DateObject.prototype.getFormattedInvalidDates = function (customFormat) {\n var _this = this;\n if (customFormat === void 0) { customFormat = \"\"; }\n var format = customFormat || this.format;\n var formattedDatesForSymbol = {\n 'E': '',\n 'H': '',\n 'M': '',\n 'a': '',\n 'd': '',\n 'h': '',\n 'm': '',\n 's': '',\n 'y': '',\n 'S': ''\n };\n Object.keys(this._partiallyInvalidDate.invalidDateParts).forEach(function (key) {\n var date = _this.getInvalidDatePart(key).date;\n if (date) {\n var formattedInvalidDate = _this.intl.formatDate(date, format, _this.localeId);\n formattedDatesForSymbol[key] = formattedInvalidDate;\n }\n });\n return formattedDatesForSymbol;\n };\n DateObject.prototype.modifyExisting = function (value) {\n var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (var i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], value);\n }\n };\n /**\n * @hidden\n */\n DateObject.prototype.getExisting = function (symbol) {\n switch (symbol) {\n case 'y': return this.year;\n case 'M':\n case 'L': return this.month;\n case 'd': return this.date;\n case 'E': return this.date && this.month && this.year;\n case 'h':\n case 'H': return this.hours;\n case 't':\n case 'a': return this.dayperiod;\n case 'm': return this.minutes;\n case 's': return this.seconds;\n case \"S\": return this.milliseconds;\n default:\n return true;\n }\n };\n DateObject.prototype.setExisting = function (symbol, value) {\n switch (symbol) {\n case 'y':\n // allow 2/29 dates\n this.year = value;\n if (value === false) {\n this._value.setFullYear(DEFAULT_LEAP_YEAR);\n }\n break;\n case 'M':\n // make sure you can type 31 in the day part\n this.month = value;\n if (value === false) {\n if (this.autoCorrectParts) {\n this._value.setMonth(0);\n }\n }\n break;\n case 'd':\n this.date = value;\n break;\n case 'h':\n case 'H':\n this.hours = value;\n break;\n case 't':\n case 'a':\n this.dayperiod = value;\n break;\n case 'm':\n this.minutes = value;\n break;\n case 's':\n this.seconds = value;\n break;\n case \"S\":\n this.milliseconds = value;\n break;\n default:\n break;\n }\n if (this.getValue()) {\n this.resetInvalidDate();\n }\n };\n DateObject.prototype.modifyPart = function (symbol, offset) {\n if (!isPresent(symbol) || !isPresent(offset) || offset === 0) {\n return;\n }\n var newValue = cloneDate(this.value);\n var timeModified = false;\n var invalidDateFound;\n var isMonth = symbol === \"M\";\n var isDay = symbol === \"d\" || symbol === \"E\";\n var symbolExists = this.getExisting(symbol);\n if (!this.autoCorrectParts && (isDay || isMonth)) {\n var invalidDateParts = this._partiallyInvalidDate.invalidDateParts || {};\n var invalidDatePartValue = this.getInvalidDatePartValue(symbol);\n var year = invalidDateParts.y.value || newValue.getFullYear();\n var month = invalidDateParts.M.value || newValue.getMonth();\n var day = invalidDateParts.d.value || invalidDateParts.E.value || newValue.getDate();\n var hour = invalidDateParts.h.value || invalidDateParts.H.value || newValue.getHours();\n var minutes = invalidDateParts.m.value || newValue.getMinutes();\n var seconds = invalidDateParts.s.value || newValue.getSeconds();\n var milliseconds = invalidDateParts.S.value || newValue.getMilliseconds();\n switch (symbol) {\n case 'y':\n year += offset;\n break;\n case 'M':\n month += offset;\n break;\n case 'd':\n case 'E':\n day += offset;\n break;\n // case 'h':\n // case 'H': hour += offset; break;\n // case 'm': minutes += offset; break;\n // case 's': seconds += offset; break;\n // case 'S': milliseconds += offset; break;\n default: break;\n }\n if (symbol === \"M\") {\n if ((month < 0 || month > 11)) {\n if (symbolExists) {\n this.setExisting(symbol, false);\n this.resetInvalidDateSymbol(symbol);\n return;\n }\n }\n if (!symbolExists) {\n if (month < 0) {\n month = clamp(11 + ((month % 11) + 1), 0, 11);\n }\n else {\n var monthValue = isPresent(invalidDatePartValue) ?\n month :\n ((offset - JS_MONTH_OFFSET) % 12);\n month = clamp(monthValue, 0, 11);\n }\n month = clamp(month, 0, 11);\n }\n month = clamp(month, 0, 11);\n }\n else if (symbol === \"d\") {\n if (symbolExists) {\n if (day <= 0 || day > 31) {\n this.setExisting(symbol, false);\n this.resetInvalidDateSymbol(symbol);\n return;\n }\n }\n else if (!symbolExists) {\n if (isPresent(invalidDatePartValue)) {\n if (day <= 0 || day > 31) {\n this.setExisting(symbol, false);\n this.resetInvalidDateSymbol(symbol);\n return;\n }\n }\n if (offset < 0) {\n var dayValue = isPresent(invalidDatePartValue) ? day : 1 + (31 - Math.abs(offset % 31));\n day = clamp(dayValue, 1, 31);\n }\n else {\n var dayValue = isPresent(invalidDatePartValue) ? day : offset % 31;\n day = clamp(dayValue, 1, 31);\n }\n day = clamp(day, 1, 31);\n }\n }\n var dateCandidate = createDate(year, month, day, hour, minutes, seconds, milliseconds);\n var newValueCandidate = isMonth || isDay ?\n this.modifyDateSymbolWithValue(newValue, symbol, isMonth ? month : day) :\n null;\n var dateCandidateExists = areDatePartsEqualTo(dateCandidate, year, month, day, hour, minutes, seconds, milliseconds);\n if (this.getValue() && areDatePartsEqualTo(dateCandidate, year, month, day, hour, minutes, seconds, milliseconds)) {\n newValue = cloneDate(dateCandidate);\n this.markDatePartsAsExisting();\n }\n else if (isMonth && newValueCandidate) {\n if (newValueCandidate.getMonth() === month) {\n if (this.getExisting(\"d\")) {\n if (dateCandidateExists) {\n newValue = cloneDate(dateCandidate);\n this.resetInvalidDateSymbol(symbol);\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: month,\n date: cloneDate(newValueCandidate),\n startDateOffset: offset,\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n else if (dateCandidateExists) {\n this.resetInvalidDateSymbol(symbol);\n newValue = cloneDate(dateCandidate);\n if (this.getExisting(\"M\") && this.getExisting(\"y\")) {\n // changing from 28/Feb to 29/Feb to 29/March\n this.setExisting(\"d\", true);\n this.resetInvalidDateSymbol(\"d\");\n }\n }\n else {\n this.resetInvalidDateSymbol(symbol);\n newValue = cloneDate(newValueCandidate);\n }\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: month,\n date: cloneDate(newValueCandidate),\n startDateOffset: offset,\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n else if (isDay && newValueCandidate) {\n if (newValueCandidate.getDate() === day) {\n if (this.getExisting(\"M\")) {\n if (dateCandidateExists) {\n newValue = cloneDate(dateCandidate);\n this.resetInvalidDateSymbol(symbol);\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: day,\n date: cloneDate(newValueCandidate),\n startDateOffset: offset,\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n else if (dateCandidateExists) {\n newValue = cloneDate(dateCandidate);\n this.resetInvalidDateSymbol(symbol);\n if (this.getExisting(\"d\") && this.getExisting(\"y\")) {\n // changing from 31/Jan to 31/Feb to 28/Feb\n this.setExisting(\"M\", true);\n this.resetInvalidDateSymbol(\"M\");\n }\n }\n else {\n this.resetInvalidDateSymbol(symbol);\n newValue = cloneDate(newValueCandidate);\n }\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: day,\n date: cloneDate(this.value),\n startDateOffset: offset,\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n }\n else {\n switch (symbol) {\n case 'y':\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case 'M':\n newValue = addMonths(this.value, offset);\n break;\n case 'd':\n case 'E':\n newValue.setDate(newValue.getDate() + offset);\n break;\n case 'h':\n case 'H':\n newValue.setHours(newValue.getHours() + offset);\n timeModified = true;\n break;\n case 'm':\n newValue.setMinutes(newValue.getMinutes() + offset);\n timeModified = true;\n break;\n case 's':\n newValue.setSeconds(newValue.getSeconds() + offset);\n timeModified = true;\n break;\n case \"S\":\n newValue.setMilliseconds(newValue.getMilliseconds() + offset);\n break;\n case 'a':\n var hours = newValue.getHours();\n if (this.toggleDayPeriod) {\n newValue.setHours(hours >= 12 ? hours - 12 : hours + 12);\n }\n else {\n newValue.setHours(newValue.getHours() + (12 * offset));\n }\n timeModified = true;\n break;\n default: break;\n }\n }\n if (this.shouldNormalizeCentury()) {\n newValue = this.normalizeCentury(newValue);\n }\n if (timeModified && !this.cycleTime && newValue.getDate() !== this._value.getDate()) {\n // todo: blazor has this fix, but this fails a unit test\n // newValue.setDate(this._value.getDate());\n // newValue.setMonth(this._value.getMonth());\n // newValue.setFullYear(this._value.getFullYear());\n }\n if (!invalidDateFound) {\n this.setExisting(symbol, true);\n this._value = newValue;\n if (this.getValue()) {\n this.resetInvalidDate();\n }\n }\n };\n /**\n * @hidden\n */\n DateObject.prototype.parsePart = function (_a) {\n var symbol = _a.symbol, currentChar = _a.currentChar, resetSegmentValue = _a.resetSegmentValue, cycleSegmentValue = _a.cycleSegmentValue, rawInputValue = _a.rawTextValue, isDeleting = _a.isDeleting, originalFormat = _a.originalFormat;\n var isInCaretMode = !cycleSegmentValue;\n var dateParts = this.dateFormatString(this.value, this.format);\n var datePartsLiterals = dateParts.partMap\n .filter(function (x) { return x.type === \"literal\"; })\n .map(function (x, index) {\n return {\n datePartIndex: index,\n type: x.type,\n pattern: x.pattern,\n literal: \"\"\n };\n });\n var flatDateParts = dateParts.partMap\n .map(function (x) {\n return {\n type: x.type,\n pattern: x.pattern,\n text: \"\"\n };\n });\n for (var i = 0; i < datePartsLiterals.length; i++) {\n var datePart = datePartsLiterals[i];\n for (var j = 0; j < datePart.pattern.length; j++) {\n if (datePartsLiterals[i + j]) {\n datePartsLiterals[i + j].literal = datePart.pattern[j];\n }\n }\n i += datePart.pattern.length - 1;\n }\n for (var i = 0; i < flatDateParts.length; i++) {\n var datePart = flatDateParts[i];\n for (var j = 0; j < datePart.pattern.length; j++) {\n if (flatDateParts[i + j]) {\n flatDateParts[i + j].text = datePart.pattern[j];\n }\n }\n i += datePart.pattern.length - 1;\n }\n var shouldResetPart = isInCaretMode && symbol === \"M\" && dateParts.partMap\n .filter(function (x) { return x.type === \"month\"; })\n .some(function (x) { return x.pattern.length > MONTH_PART_WITH_WORDS_THRESHOLD; });\n var parseResult = {\n value: null,\n switchToNext: false,\n resetPart: shouldResetPart,\n hasInvalidDatePart: false\n };\n if (!currentChar) {\n if (isInCaretMode) {\n for (var i = 0; i < datePartsLiterals.length; i++) {\n var literal = datePartsLiterals[i].literal;\n var rawValueStartsWithLiteral = rawInputValue.startsWith(literal);\n var rawValueEndsWithLiteral = rawInputValue.endsWith(literal);\n var rawValueHasConsecutiveLiterals = rawInputValue.indexOf(literal + literal) >= 0;\n if (rawValueStartsWithLiteral || rawValueEndsWithLiteral || rawValueHasConsecutiveLiterals) {\n this.resetLeadingZero();\n this.setExisting(symbol, false);\n this.resetInvalidDateSymbol(symbol);\n return extend(parseResult, { value: null, switchToNext: false });\n }\n }\n }\n else {\n this.resetLeadingZero();\n this.setExisting(symbol, false);\n this.resetInvalidDateSymbol(symbol);\n return extend(parseResult, { value: null, switchToNext: false });\n }\n }\n var baseDate = this.intl.formatDate(this.value, this.format, this.localeId);\n var baseFormat = dateParts.symbols;\n var replaced = false;\n var prefix = '';\n var current = '';\n var datePartText = '';\n var basePrefix = '';\n var baseSuffix = '';\n var suffix = '';\n var convertedBaseFormat = \"\";\n for (var i = 0; i < flatDateParts.length; i++) {\n convertedBaseFormat += flatDateParts[i].text;\n }\n var hasFixedFormat = (this.format === baseFormat) ||\n (this.format === convertedBaseFormat) ||\n (this.format === originalFormat) ||\n (this.format.length === originalFormat.length);\n var datePartStartIndex = (hasFixedFormat ? convertedBaseFormat : originalFormat).indexOf(symbol);\n var datePartEndIndex = (hasFixedFormat ? convertedBaseFormat : originalFormat).lastIndexOf(symbol);\n var segmentLength = datePartEndIndex - datePartStartIndex + 1;\n var formatToTextLengthDiff = originalFormat.length - rawInputValue.length;\n if (isInCaretMode || (!isInCaretMode && !this.autoCorrectParts)) {\n for (var i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n var existing = this.getExisting(symbol);\n current += existing ? baseDate[i] : '0';\n if (formatToTextLengthDiff > 0) {\n if (datePartText.length + formatToTextLengthDiff < segmentLength) {\n datePartText += rawInputValue[i] || \"\";\n }\n }\n else {\n datePartText += rawInputValue[i] || \"\";\n }\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n basePrefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n baseSuffix += baseDate[i];\n }\n }\n if (hasFixedFormat) {\n if (convertedBaseFormat.length < rawInputValue.length) {\n datePartText += currentChar;\n }\n else if (!isDeleting && originalFormat.length > rawInputValue.length) {\n // let the parsing to determine if the incomplete value is valid\n }\n if (datePartText.length > segmentLength) {\n return extend(parseResult, { value: null, switchToNext: false });\n }\n }\n if (!hasFixedFormat || (hasFixedFormat && !this.autoCorrectParts)) {\n current = \"\";\n datePartText = \"\";\n prefix = \"\";\n suffix = \"\";\n replaced = false;\n for (var i = 0; i < originalFormat.length; i++) {\n if (originalFormat[i] === symbol) {\n var existing = this.getExisting(symbol);\n current += existing ? baseDate[i] || \"\" : '0';\n if (formatToTextLengthDiff > 0) {\n if (datePartText.length + formatToTextLengthDiff < segmentLength) {\n datePartText += rawInputValue[i] || \"\";\n }\n }\n else {\n datePartText += rawInputValue[i] || \"\";\n }\n replaced = true;\n }\n else if (!replaced) {\n prefix += rawInputValue[i] || \"\";\n }\n else {\n suffix += rawInputValue[i - formatToTextLengthDiff] || \"\";\n }\n }\n if (originalFormat.length < rawInputValue.length) {\n datePartText += currentChar;\n }\n }\n }\n if (!isInCaretMode) {\n if (this.autoCorrectParts) {\n current = \"\";\n datePartText = \"\";\n prefix = \"\";\n suffix = \"\";\n replaced = false;\n for (var i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n var existing = this.getExisting(symbol);\n current += existing ? baseDate[i] : '0';\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n }\n }\n }\n else {\n current = resetSegmentValue ? datePartText : current;\n }\n }\n var parsedDate = null;\n var month = this.matchMonth(currentChar);\n var dayPeriod = this.matchDayPeriod(currentChar, symbol);\n var isZeroCurrentChar = currentChar === '0';\n var leadingZero = this.leadingZero || {};\n if (isZeroCurrentChar) {\n if (datePartText === \"0\") {\n datePartText = current;\n }\n var valueNumber = parseToInt(resetSegmentValue ?\n currentChar :\n (isInCaretMode ? datePartText : current) + currentChar);\n if (valueNumber === 0 && !this.isAbbrMonth(dateParts.partMap, symbol)) {\n this.incrementLeadingZero(symbol);\n }\n }\n else {\n this.resetLeadingZero();\n }\n var partPattern = this.partPattern(dateParts.partMap, symbol);\n var patternValue = partPattern ? partPattern.pattern : null;\n var patternLength = this.patternLength(patternValue) || patternValue.length;\n if (isInCaretMode) {\n if (isDeleting && !datePartText) {\n this.setExisting(symbol, false);\n return extend(parseResult, { value: null, switchToNext: false });\n }\n }\n var currentMaxLength = current.length - 3;\n var tryParse = true;\n var middle = isInCaretMode ? datePartText : current;\n for (var i = Math.max(0, currentMaxLength); i <= current.length; i++) {\n if (!tryParse) {\n break;\n }\n middle = resetSegmentValue ?\n currentChar :\n isInCaretMode ?\n datePartText :\n (current.substring(i) + currentChar);\n if (isInCaretMode || !this.autoCorrectParts) {\n tryParse = false;\n middle = unpadZero(middle);\n // middle = padZero(segmentLength - middle.length) + middle;\n middle = padZero(patternLength - middle.length) + middle;\n }\n var middleNumber = parseInt(middle, 10);\n var candidateDateString = prefix + middle + suffix;\n parsedDate = this.intl.parseDate(candidateDateString, this.format, this.localeId);\n var autoCorrectedPrefixAndSuffix = false;\n if (isInCaretMode && !isValidDate(parsedDate)) {\n // if part of the date is not available, e.g. \"d\"\n // but an expanded format like \"F\" is used\n // the element value can be \"EEEE, February 1, 2022 3:04:05 AM\"\n // which is not parsable by intl\n // use the base prefix and suffix, e.g. convert the candidate date string\n // to \"Thursday, February 1, 2022 3:04:05 AM\"\n // as \"EEEE, February...\" is not parsable\n if (this.autoCorrectParts) {\n parsedDate = this.intl.parseDate(basePrefix + middle + baseSuffix, this.format, this.localeId);\n autoCorrectedPrefixAndSuffix = true;\n }\n }\n var isCurrentCharParsable = !isNaN(parseInt(currentChar, 10)) || (isInCaretMode && isDeleting && currentChar === \"\");\n if (!parsedDate && !isNaN(middleNumber) && isCurrentCharParsable && this.autoCorrectParts) {\n if (symbol === MONTH_SYMBOL && !month) {\n // JS months start from 0 (January) instead of 1 (January)\n var monthNumber = middleNumber - JS_MONTH_OFFSET;\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (symbol === 'y') {\n parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n if (((isInCaretMode && isValidDate(parsedDate)) ||\n (!isInCaretMode && parsedDate)) && this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if ((isInCaretMode && isValidDate(parsedDate)) || (!isInCaretMode && parsedDate)) {\n // move to next segment if the part will overflow with next char\n // when start from empty date (01, then 010), padded zeros should be trimmed\n var peekResult = this.isPeekDateOverflowingDatePart({\n useBasePrefixAndSuffix: autoCorrectedPrefixAndSuffix,\n middle: middle,\n patternValue: patternValue,\n basePrefix: basePrefix,\n baseSuffix: baseSuffix,\n prefix: prefix,\n suffix: suffix,\n symbol: symbol,\n patternLength: patternLength,\n leadingZero: leadingZero\n });\n var switchToNext = peekResult.switchToNext;\n if (this.shouldNormalizeCentury()) {\n parsedDate = this.normalizeCentury(parsedDate);\n }\n if (symbol === 'H' && parsedDate.getHours() >= 12) {\n this.setExisting('a', true);\n }\n this._value = parsedDate;\n this.setExisting(symbol, true);\n this.resetInvalidDateSymbol(symbol);\n if (!this.autoCorrectParts) {\n if (symbol === \"M\") {\n if (this.getExisting(\"M\") && this.getExisting(\"y\")) {\n // changing from 28/Feb to 29/Feb to 29/March\n this.setExisting(\"d\", true);\n this.resetInvalidDateSymbol(\"d\");\n }\n }\n else if (symbol === \"d\") {\n if (this.getExisting(\"d\") && this.getExisting(\"y\")) {\n // changing from 31/Jan to 31/Feb to 28/Feb\n this.setExisting(\"M\", true);\n this.resetInvalidDateSymbol(\"M\");\n }\n }\n if (!this.hasInvalidDatePart()) {\n this.markDatePartsAsExisting();\n if (!peekResult.peekedDate && peekResult.switchToNext && !this.autoCorrectParts) {\n if (symbol === \"M\") {\n // skip processing the month\n }\n else if (symbol === \"d\") {\n if (peekResult.parsedPeekedValue === 30 &&\n this.value.getMonth() === MONTH_INDEX_FEBRUARY) {\n // the peekValue cannot be constructed\n // as there cannot be more than 29 days in February\n // still the segment should not be switched as autoCorrectParts=\"false\"\n // should allow typing \"30\"\n switchToNext = false;\n }\n }\n }\n }\n }\n return extend(parseResult, { value: this.value, switchToNext: switchToNext });\n }\n }\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format, this.localeId);\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return extend(parseResult, { value: this.value, switchToNext: false });\n }\n }\n if (dayPeriod) {\n parsedDate = this.intl.parseDate(prefix + dayPeriod + suffix, this.format) ||\n this.intl.parseDate(basePrefix + dayPeriod + baseSuffix, this.format);\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return extend(parseResult, { value: this.value, switchToNext: true });\n }\n }\n if (isZeroCurrentChar) {\n this.setExisting(symbol, false);\n }\n if (!this.autoCorrectParts) {\n var datePartValue = void 0;\n var textToParse = isInCaretMode ? datePartText : middle;\n var parsedValue = parseToInt(textToParse);\n if (isNumber(parsedValue) && isParseableToInt(textToParse)) {\n if ((symbol === \"d\" && (parsedValue <= 0 || parsedValue > 31)) ||\n (symbol === \"M\" && (parsedValue <= 0 || parsedValue > 11))) {\n if (isInCaretMode) {\n return extend(parseResult, {\n value: null,\n switchToNext: false\n });\n }\n else {\n // the value overflows the possible value range\n // thus reset the segment value regardless of the \"resetSegmentValue\" flag\n // otherwise the input is ignored and you cannot change the value,\n // e.g. \"03->(press 2)->02\" will not work and the user will be blocked on \"03\"\n textToParse = currentChar;\n parsedValue = parseToInt(textToParse);\n }\n }\n if (!isNumber(parsedValue) || !isParseableToInt(textToParse)) {\n return extend(parseResult, { value: null, switchToNext: false });\n }\n datePartValue = symbol === \"M\" ?\n parsedValue - JS_MONTH_OFFSET :\n parsedValue;\n var isMonth = symbol === \"M\";\n var isDay = symbol === \"d\";\n var newValue = cloneDate(this._value);\n var invalidDateParts = this._partiallyInvalidDate.invalidDateParts || {};\n var year = invalidDateParts.y.value || newValue.getFullYear();\n /* tslint:disable:no-shadowed-variable */\n var month_1 = isMonth ? datePartValue : invalidDateParts.M.value || newValue.getMonth();\n /* tslint:enable:no-shadowed-variable */\n var day = isDay ? datePartValue : invalidDateParts.d.value || invalidDateParts.E.value || newValue.getDate();\n var hour = invalidDateParts.h.value || invalidDateParts.H.value || newValue.getHours();\n var minutes = invalidDateParts.m.value || newValue.getMinutes();\n var seconds = invalidDateParts.s.value || newValue.getSeconds();\n var milliseconds = invalidDateParts.S.value || newValue.getMilliseconds();\n var dateCandidate = createDate(year, month_1, day, hour, minutes, seconds, milliseconds);\n var dateCandidateExists = areDatePartsEqualTo(dateCandidate, year, month_1, day, hour, minutes, seconds, milliseconds);\n var newValueCandidate = isMonth || isDay ?\n this.modifyDateSymbolWithValue(newValue, symbol, isMonth ? month_1 : day) :\n null;\n var invalidDateFound = false;\n if (isMonth && newValueCandidate) {\n if (newValueCandidate.getMonth() === month_1) {\n if (this.getExisting(\"d\")) {\n if (dateCandidateExists) {\n newValue = cloneDate(dateCandidate);\n this.resetInvalidDateSymbol(symbol);\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: month_1,\n date: cloneDate(newValueCandidate),\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n else if (dateCandidateExists) {\n this.resetInvalidDateSymbol(symbol);\n newValue = cloneDate(dateCandidate);\n if (this.getExisting(\"M\") && this.getExisting(\"y\")) {\n // changing from 28/Feb to 29/Feb to 29/March\n this.setExisting(\"d\", true);\n this.resetInvalidDateSymbol(\"d\");\n }\n }\n else {\n this.resetInvalidDateSymbol(symbol);\n newValue = cloneDate(newValueCandidate);\n }\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: month_1,\n date: cloneDate(newValueCandidate),\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n else if (isDay && newValueCandidate) {\n if (newValueCandidate.getDate() === day) {\n if (this.getExisting(\"M\")) {\n if (dateCandidateExists) {\n newValue = cloneDate(dateCandidate);\n this.resetInvalidDateSymbol(symbol);\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: day,\n date: cloneDate(newValueCandidate),\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n else if (dateCandidateExists) {\n newValue = cloneDate(dateCandidate);\n this.resetInvalidDateSymbol(symbol);\n if (this.getExisting(\"d\") && this.getExisting(\"y\")) {\n // changing from 31/Jan to 31/Feb to 28/Feb\n this.setExisting(\"M\", true);\n this.resetInvalidDateSymbol(\"M\");\n }\n }\n else {\n this.resetInvalidDateSymbol(symbol);\n newValue = cloneDate(newValueCandidate);\n }\n }\n else {\n invalidDateFound = true;\n this.setInvalidDatePart(symbol, {\n value: day,\n date: cloneDate(this.value),\n startDate: cloneDate(this.value)\n });\n this.setExisting(symbol, false);\n }\n }\n if (!invalidDateFound) {\n this.setExisting(symbol, true);\n if (isInCaretMode && !isValidDate(parsedDate)) {\n var valueCandidate = this.intl.parseDate(basePrefix + middle + baseSuffix, this.format, this.localeId);\n if (isValidDate(valueCandidate)) {\n this._value = valueCandidate;\n }\n }\n else {\n this._value = newValue;\n }\n if (this.getValue()) {\n this.resetInvalidDate();\n }\n }\n var switchToNext = false;\n if (symbol === \"M\") {\n if (parsedValue >= 2 || textToParse.length >= 2) {\n switchToNext = true;\n }\n else {\n switchToNext = false;\n }\n }\n else {\n if (hasFixedFormat) {\n var peekDateSwitchToNext = this.isPeekDateOverflowingDatePart({\n useBasePrefixAndSuffix: !this.autoCorrectParts,\n middle: middle,\n patternValue: patternValue,\n basePrefix: basePrefix,\n baseSuffix: baseSuffix,\n prefix: prefix,\n suffix: suffix,\n symbol: symbol,\n patternLength: patternLength,\n leadingZero: leadingZero\n }).switchToNext;\n switchToNext = peekDateSwitchToNext;\n }\n else {\n switchToNext = textToParse.length > segmentLength;\n }\n }\n return extend(parseResult, {\n value: null,\n switchToNext: switchToNext,\n hasInvalidDatePart: invalidDateFound\n });\n }\n }\n return extend(parseResult, { value: null, switchToNext: false });\n };\n /**\n * @hidden\n */\n DateObject.prototype.symbolMap = function (symbol) {\n return this.intl.splitDateFormat(this.format, this.localeId).reduce(dateSymbolMap, {})[symbol];\n };\n /**\n * @hidden\n */\n DateObject.prototype.resetLeadingZero = function () {\n var hasLeadingZero = this.leadingZero !== null;\n this.setLeadingZero(null);\n return hasLeadingZero;\n };\n DateObject.prototype.setLeadingZero = function (leadingZero) {\n this.leadingZero = leadingZero;\n };\n /**\n * @hidden\n */\n DateObject.prototype.getLeadingZero = function () {\n return this.leadingZero || {};\n };\n /**\n * @hidden\n */\n DateObject.prototype.normalizeCentury = function (date) {\n if (!isPresent(date)) {\n return date;\n }\n var twoDigitYear = cropTwoDigitYear(date);\n var centuryBase = this.getNormalizedCenturyBase(twoDigitYear);\n var normalizedDate = setYears(date, centuryBase + twoDigitYear);\n return normalizedDate;\n };\n DateObject.prototype.incrementLeadingZero = function (symbol) {\n var leadingZero = this.leadingZero || {};\n leadingZero[symbol] = (leadingZero[symbol] || 0) + 1;\n this.leadingZero = leadingZero;\n };\n /**\n * @hidden\n */\n DateObject.prototype.isAbbrMonth = function (parts, symbol) {\n var pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n };\n /**\n * @hidden\n */\n DateObject.prototype.partPattern = function (parts, symbol) {\n return parts.filter(function (part) { return part.pattern.indexOf(symbol) !== -1; })[0];\n };\n /**\n * @hidden\n */\n DateObject.prototype.peek = function (value, pattern) {\n var peekValue = value.replace(/^0*/, '') + '0';\n return padZero(pattern.length - peekValue.length) + peekValue;\n };\n /**\n * @hidden\n */\n DateObject.prototype.matchMonth = function (typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n if (this.monthNames.length === 0) {\n return '';\n }\n while (this.typedMonthPart.length > 0) {\n for (var i = 0; i < this.monthNames.length; i++) {\n if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n return this.monthNames[i];\n }\n }\n var monthAsNum = parseInt(this.typedMonthPart, 10);\n /* ensure they exact match */\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart) {\n return this.monthNames[monthAsNum - 1];\n }\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n return '';\n };\n /**\n * @hidden\n */\n DateObject.prototype.matchDayPeriod = function (typedChar, symbol) {\n var lowerChart = typedChar.toLowerCase();\n if (symbol === 'a' && this.dayPeriods) {\n if (this.dayPeriods.am.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.am;\n }\n else if (this.dayPeriods.pm.toLowerCase().startsWith(lowerChart)) {\n return this.dayPeriods.pm;\n }\n }\n return '';\n };\n /**\n * @hidden\n */\n DateObject.prototype.allFormattedMonths = function (locale) {\n if (locale === void 0) { locale = \"en\"; }\n var dateFormatParts = this.intl.splitDateFormat(this.format, this.localeId);\n for (var i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === 'month' && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(locale, dateFormatParts[i].names);\n }\n }\n return [];\n };\n /**\n * @hidden\n */\n DateObject.prototype.allDayPeriods = function (locale) {\n if (locale === void 0) { locale = \"en\"; }\n var dateFormatParts = this.intl.splitDateFormat(this.format);\n for (var i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === \"dayperiod\" && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(locale, dateFormatParts[i].names);\n }\n }\n return null;\n };\n /**\n * @hidden\n */\n DateObject.prototype.patternLength = function (pattern) {\n if (pattern[0] === 'y') {\n return 4;\n }\n if (SHORT_PATTERN_LENGTH_REGEXP.test(pattern)) {\n return 2;\n }\n return 0;\n };\n /**\n * @hidden\n */\n DateObject.prototype.dateFormatString = function (date, format) {\n var dateFormatParts = this.intl.splitDateFormat(format, this.localeId);\n var parts = [];\n var partMap = [];\n for (var i = 0; i < dateFormatParts.length; i++) {\n var partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }, this.localeId).length;\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || Constants.formatSeparator);\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n var returnValue = new Mask();\n returnValue.symbols = parts.join('');\n returnValue.partMap = partMap;\n return returnValue;\n };\n /**\n * @hidden\n */\n DateObject.prototype.merge = function (text, mask) {\n // Important: right to left.\n var resultText = '';\n var resultFormat = '';\n var format = mask.symbols;\n var processTextSymbolsEnded = false;\n var ignoreFormatSymbolsCount = 0;\n var formattedDates = this.getFormattedInvalidDates(format);\n for (var formatSymbolIndex = format.length - 1; formatSymbolIndex >= 0; formatSymbolIndex--) {\n var partsForSegment = this.getPartsForSegment(mask, formatSymbolIndex);\n if (this.knownParts.indexOf(format[formatSymbolIndex]) === -1 || this.getExisting(format[formatSymbolIndex])) {\n if (this.autoCorrectParts) {\n resultText = text[formatSymbolIndex] + resultText;\n }\n else {\n if (text.length !== format.length) {\n if (processTextSymbolsEnded) {\n resultText = text[formatSymbolIndex] + resultText;\n }\n else if (ignoreFormatSymbolsCount > 0) {\n resultText = text[formatSymbolIndex] + resultText;\n ignoreFormatSymbolsCount--;\n if (ignoreFormatSymbolsCount <= 0) {\n processTextSymbolsEnded = true;\n }\n }\n else {\n resultText = (text[formatSymbolIndex + text.length - format.length] || \"\") + resultText;\n }\n }\n else {\n resultText = text[formatSymbolIndex] + resultText;\n }\n }\n resultFormat = format[formatSymbolIndex] + resultFormat;\n }\n else {\n var symbol = format[formatSymbolIndex];\n var formatSymbolIndexModifier = 0;\n if (this.autoCorrectParts || (!this.autoCorrectParts && !this.getInvalidDatePartValue(symbol))) {\n while (formatSymbolIndex >= 0 && symbol === format[formatSymbolIndex]) {\n formatSymbolIndex--;\n }\n formatSymbolIndex++;\n }\n if (this.leadingZero && this.leadingZero[symbol]) {\n resultText = '0' + resultText;\n }\n else {\n if (!this.autoCorrectParts && this.getInvalidDatePartValue(symbol)) {\n var datePartText = this.getInvalidDatePartValue(symbol).toString();\n if (symbol === \"M\") {\n datePartText = (parseToInt(this.getInvalidDatePartValue(symbol)) + JS_MONTH_OFFSET).toString();\n if (partsForSegment.length > MONTH_PART_WITH_WORDS_THRESHOLD) {\n resultText = formattedDates[symbol][formatSymbolIndex] + resultText;\n }\n else {\n datePartText = (parseToInt(this.getInvalidDatePartValue(symbol)) + JS_MONTH_OFFSET).toString();\n var formattedDatePart = padZero(partsForSegment.length - datePartText.length) + datePartText;\n resultText = formattedDatePart + resultText;\n formatSymbolIndexModifier = partsForSegment.length - 1;\n ignoreFormatSymbolsCount = datePartText.length - partsForSegment.length;\n }\n }\n else {\n var formattedDatePart = padZero(partsForSegment.length - datePartText.length) + datePartText;\n resultText = formattedDatePart + resultText;\n formatSymbolIndexModifier = partsForSegment.length - 1;\n ignoreFormatSymbolsCount = datePartText.length - partsForSegment.length;\n }\n }\n else {\n resultText = this.dateFieldName(mask.partMap[formatSymbolIndex]) + resultText;\n }\n }\n while (resultFormat.length < resultText.length) {\n resultFormat = format[formatSymbolIndex] + resultFormat;\n }\n if (formatSymbolIndexModifier !== 0) {\n formatSymbolIndex = (formatSymbolIndex - formatSymbolIndexModifier) + (text.length - format.length);\n }\n }\n }\n return { text: resultText, format: resultFormat };\n };\n /**\n * @hidden\n */\n DateObject.prototype.dateFieldName = function (part) {\n var formatPlaceholder = this.formatPlaceholder || 'wide';\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n };\n /**\n * @hidden\n */\n DateObject.prototype.getNormalizedCenturyBase = function (twoDigitYear) {\n return twoDigitYear > this.twoDigitYearMax ?\n PREVIOUS_CENTURY_BASE :\n CURRENT_CENTURY_BASE;\n };\n /**\n * @hidden\n */\n DateObject.prototype.shouldNormalizeCentury = function () {\n return this.intl.splitDateFormat(this.format).some(function (part) { return part.pattern === 'yy'; });\n };\n DateObject.prototype.resetInvalidDate = function () {\n var _this = this;\n this._partiallyInvalidDate.startDate = null;\n Object.keys(this._partiallyInvalidDate.invalidDateParts).forEach(function (key) {\n _this.resetInvalidDatePart(key);\n });\n };\n DateObject.prototype.resetInvalidDateSymbol = function (symbol) {\n var _this = this;\n this.resetInvalidDatePart(symbol);\n var shouldResetInvalidDate = true;\n Object.keys(this._partiallyInvalidDate.invalidDateParts).forEach(function (key) {\n if (_this._partiallyInvalidDate.invalidDateParts[key] &&\n isPresent(_this._partiallyInvalidDate.invalidDateParts[key].value)) {\n shouldResetInvalidDate = false;\n }\n });\n if (shouldResetInvalidDate) {\n this.resetInvalidDate();\n }\n };\n DateObject.prototype.resetInvalidDatePart = function (symbol) {\n if (this._partiallyInvalidDate.invalidDateParts[symbol]) {\n this._partiallyInvalidDate.invalidDateParts[symbol] = {\n value: null,\n date: null,\n startDateOffset: 0\n };\n }\n };\n /**\n * @hidden\n */\n DateObject.prototype.getInvalidDatePart = function (symbol) {\n var invalidDatePart = this._partiallyInvalidDate.invalidDateParts[symbol];\n return invalidDatePart || {};\n };\n /**\n * @hidden\n */\n DateObject.prototype.getInvalidDatePartValue = function (symbol) {\n var invalidDatePart = this._partiallyInvalidDate.invalidDateParts[symbol];\n return (invalidDatePart || {}).value;\n };\n DateObject.prototype.setInvalidDatePart = function (symbol, _a) {\n var _b = _a.value, value = _b === void 0 ? null : _b, _c = _a.date, date = _c === void 0 ? null : _c, _d = _a.startDateOffset, startDateOffset = _d === void 0 ? 0 : _d, _e = _a.startDate, startDate = _e === void 0 ? null : _e;\n if (this._partiallyInvalidDate.invalidDateParts[symbol]) {\n this._partiallyInvalidDate.invalidDateParts[symbol].value = value;\n this._partiallyInvalidDate.invalidDateParts[symbol].date = date;\n this._partiallyInvalidDate.invalidDateParts[symbol].startDateOffset = startDateOffset;\n this._partiallyInvalidDate.startDate = startDate;\n }\n };\n /**\n * @hidden\n */\n DateObject.prototype.hasInvalidDatePart = function () {\n var _this = this;\n var hasInvalidDatePart = false;\n Object.keys(this._partiallyInvalidDate.invalidDateParts).forEach(function (key) {\n if (_this._partiallyInvalidDate.invalidDateParts[key] &&\n isPresent(_this._partiallyInvalidDate.invalidDateParts[key].value)) {\n hasInvalidDatePart = true;\n }\n });\n return hasInvalidDatePart;\n };\n /**\n * @hidden\n */\n DateObject.prototype.modifyDateSymbolWithOffset = function (date, symbol, offset) {\n var newValue = cloneDate(date);\n var timeModified = false;\n switch (symbol) {\n case 'y':\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case 'M':\n newValue = addMonths(this.value, offset);\n break;\n case 'd':\n case 'E':\n newValue.setDate(newValue.getDate() + offset);\n break;\n case 'h':\n case 'H':\n newValue.setHours(newValue.getHours() + offset);\n timeModified = true;\n break;\n case 'm':\n newValue.setMinutes(newValue.getMinutes() + offset);\n timeModified = true;\n break;\n case 's':\n newValue.setSeconds(newValue.getSeconds() + offset);\n timeModified = true;\n break;\n case \"S\":\n newValue.setMilliseconds(newValue.getMilliseconds() + offset);\n break;\n case 'a':\n newValue.setHours(newValue.getHours() + (12 * offset));\n timeModified = true;\n break;\n default: break;\n }\n return {\n date: newValue,\n timeModified: timeModified\n };\n };\n /**\n * @hidden\n */\n DateObject.prototype.modifyDateSymbolWithValue = function (date, symbol, value) {\n var newValue = cloneDate(date);\n switch (symbol) {\n case 'y':\n newValue.setFullYear(value);\n break;\n case 'M':\n newValue = addMonths(date, value - date.getMonth());\n break;\n case 'd':\n case 'E':\n newValue.setDate(value);\n break;\n case 'h':\n case 'H':\n newValue.setHours(value);\n break;\n case 'm':\n newValue.setMinutes(value);\n break;\n case 's':\n newValue.setSeconds(value);\n break;\n case \"S\":\n newValue.setMilliseconds(value);\n break;\n case 'a':\n newValue.setHours(value);\n break;\n default: break;\n }\n return newValue;\n };\n DateObject.prototype.markDatePartsAsExisting = function () {\n this.modifyExisting(true);\n };\n /**\n * @hidden\n */\n DateObject.prototype.getPartsForSegment = function (mask, partIndex) {\n var segmentPart = mask.partMap[partIndex];\n var partsForSegment = [];\n for (var maskPartIndex = partIndex; maskPartIndex < mask.partMap.length; maskPartIndex++) {\n var part = mask.partMap[maskPartIndex];\n if (segmentPart.type === part.type && segmentPart.pattern === part.pattern) {\n partsForSegment.push(part);\n }\n else {\n break;\n }\n }\n for (var maskPartIndex = partIndex - 1; maskPartIndex >= 0; maskPartIndex--) {\n var part = mask.partMap[maskPartIndex];\n if (segmentPart.type === part.type && segmentPart.pattern === part.pattern) {\n partsForSegment.unshift(part);\n }\n else {\n break;\n }\n }\n return partsForSegment;\n };\n /**\n * @hidden\n */\n DateObject.prototype.isPeekDateOverflowingDatePart = function (_a) {\n var useBasePrefixAndSuffix = _a.useBasePrefixAndSuffix, middle = _a.middle, patternValue = _a.patternValue, basePrefix = _a.basePrefix, baseSuffix = _a.baseSuffix, prefix = _a.prefix, suffix = _a.suffix, symbol = _a.symbol, patternLength = _a.patternLength, leadingZero = _a.leadingZero;\n // move to next segment if the part will overflow with next char\n // when start from empty date (01, then 010), padded zeros should be trimmed\n var peekedValue = this.peek(middle, patternValue);\n var peekedDateString = useBasePrefixAndSuffix ?\n \"\" + basePrefix + peekedValue + baseSuffix :\n \"\" + prefix + peekedValue + suffix;\n var peekedDate = this.intl.parseDate(peekedDateString, this.format, this.localeId);\n var leadingZeroOffset = (this.leadingZero || {})[symbol] || 0;\n var patternSatisfied = (leadingZeroOffset + unpadZero(middle).length) >= patternLength;\n var parsedPeekedValue = parseToInt(peekedValue);\n if (symbol === \"M\") {\n }\n else if (symbol === \"d\") {\n }\n var switchToNext = peekedDate === null ||\n (leadingZero[symbol] ?\n patternValue.length <= middle.length :\n patternSatisfied);\n return {\n peekedDate: peekedDate,\n peekedDateString: peekedDateString,\n peekedValue: peekedValue,\n parsedPeekedValue: parsedPeekedValue,\n switchToNext: switchToNext\n };\n };\n return DateObject;\n}());\nexport { DateObject };\n","import { extend, isFunction } from \"./utils\";\nvar defaultOptions = {\n events: {}\n};\nvar Observable = /** @class */ (function () {\n function Observable(options) {\n this.options = extend({}, defaultOptions, options);\n }\n Observable.prototype.destroy = function () {\n };\n /**\n * @hidden\n */\n Observable.prototype.trigger = function (eventName, args) {\n if (args === void 0) { args = {}; }\n var eventData = {\n defaultPrevented: false,\n preventDefault: function () {\n eventData.defaultPrevented = true;\n }\n };\n if (isFunction(this.options.events[eventName])) {\n this.options.events[eventName](extend(eventData, args, {\n sender: this\n }));\n return eventData.defaultPrevented;\n }\n return false;\n };\n return Observable;\n}());\nexport { Observable };\n","export var KeyCode = {\n BACKSPACE: 8,\n DELETE: 46,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n SPACE: 32,\n END: 35,\n HOME: 36,\n PAGE_UP: 33,\n PAGE_DOWN: 34\n};\n","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || createTransform();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","import { Class } from '../common';\n\nvar instance;\n\nvar AnimationFactory = (function (Class) {\n function AnimationFactory() {\n Class.call(this);\n\n this._items = [];\n }\n\n if ( Class ) AnimationFactory.__proto__ = Class;\n AnimationFactory.prototype = Object.create( Class && Class.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n\n var staticAccessors = { current: { configurable: true } };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n };\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n };\n\n Object.defineProperties( AnimationFactory, staticAccessors );\n\n return AnimationFactory;\n}(Class));\n\nexport default AnimationFactory;\n","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n var s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nvar Animation = (function (Class) {\n function Animation(element, options) {\n Class.call(this);\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n if ( Class ) Animation.__proto__ = Class;\n Animation.prototype = Object.create( Class && Class.prototype );\n Animation.prototype.constructor = Animation;\n\n var prototypeAccessors = { options: { configurable: true } };\n\n Animation.create = function create (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n };\n\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if ( delay === void 0 ) delay = 0;\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n return Animation;\n}(Class));\n\nexport default Animation;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nvar GroupNode = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) GroupNode.__proto__ = superclass;\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n}(traversable(Node, \"childNodes\")));\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","var NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport { defined } from '../util';\n\nvar Node = (function (BaseNode) {\n function Node(srcElement) {\n BaseNode.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n\n var clipNode = new NODE_MAP[this.clip.nodeType](this.clip);\n clipNode.renderPoints(ctx, this.clip);\n\n ctx.clip(\"evenodd\");\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT, PATTERN } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (fill.nodeType === PATTERN) {\n this.setPatternFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setPatternFill = function setPatternFill (ctx, pattern) {\n var size = pattern.size();\n var patternCanvas = document.createElement(\"canvas\");\n var patternContext = patternCanvas.getContext(\"2d\");\n\n patternCanvas.width = size.getWidth();\n patternCanvas.height = size.getHeight();\n\n this.childNodes.length = 0;\n this.loadElements(pattern.children);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n child.renderTo(patternContext);\n }\n\n ctx.save();\n ctx.fillStyle = ctx.createPattern(patternCanvas, \"repeat\");\n ctx.fill();\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n ctx.lineJoin = valueOrDefault(stroke.lineJoin, ctx.lineJoin);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(function () {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n if ( superclass ) RootNode.__proto__ = superclass;\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n}(traversable(GroupNode, \"childNodes\")));\n\nexport default RootNode;\n","import { defined } from '../util';\n\nvar SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n};\n\nSurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n};\n\nSurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n};\n\nSurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n};\n\nSurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n};\n\nSurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n};\n\nSurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n};\n\nexport default SurfaceCursor;\n\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","import PathNode from './path-node';\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (text.options.paintOrder === 'stroke') {\n this.stroke(ctx, text, pos, size);\n this.fill(ctx, text, pos, size);\n } else {\n this.fill(ctx, text, pos, size);\n this.stroke(ctx, text, pos, size);\n }\n\n ctx.restore();\n };\n\n TextNode.prototype.stroke = function stroke (ctx, text, pos, size) {\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n };\n\n TextNode.prototype.fill = function fill (ctx, text, pos, size) {\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n };\n\n return TextNode;\n}(PathNode));\n\n\nexport default TextNode;\n","\nexport default function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}\n","var animationFrameProxy = function (callback) {\n var wnd = typeof window !== \"undefined\" ? window : {};\n var animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = function (callback) { return animationFrame.call(wnd, callback); };\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","var Class = function Class () {};\n\nexport default Class;\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n function Color(value) {\n var this$1 = this;\n\n Class.call(this);\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n if ( Class ) Color.__proto__ = Class;\n Color.prototype = Object.create( Class && Class.prototype );\n Color.prototype.constructor = Color;\n\n Color.prototype.toHex = function toHex () {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n };\n\n Color.prototype.resolveColor = function resolveColor (value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n };\n\n Color.prototype.normalizeByte = function normalizeByte (value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n };\n\n Color.prototype.padDigit = function padDigit (value) {\n return (value.length === 1) ? \"0\" + value : value;\n };\n\n Color.prototype.brightness = function brightness (value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n };\n\n Color.prototype.percBrightness = function percBrightness () {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n };\n\n Color.prototype.isDark = function isDark () {\n return this.percBrightness() < DARK_TRESHOLD;\n };\n\n Color.fromBytes = function fromBytes (r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function fromRGB (r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function fromHSV (h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function fromHSL (h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n return Color;\n}(Class));\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n function BaseColor() { Class.call(this); }\n\n if ( Class ) BaseColor.__proto__ = Class;\n BaseColor.prototype = Object.create( Class && Class.prototype );\n BaseColor.prototype.constructor = BaseColor;\n BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n BaseColor.prototype.toHex = function toHex (options) { return this.toBytes().toHex(options); };\n\n BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n BaseColor.prototype.toCss = function toCss (options) { return \"#\" + this.toHex(options); };\n\n BaseColor.prototype.toCssRgba = function toCssRgba () {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n };\n\n BaseColor.prototype.toDisplay = function toDisplay () {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n };\n\n BaseColor.prototype.equals = function equals (c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n };\n\n BaseColor.prototype.diff = function diff (other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n };\n\n BaseColor.prototype.clone = function clone () {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n };\n\n return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n function RGB(r, g, b, a) {\n BaseColor.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n if ( BaseColor ) RGB.__proto__ = BaseColor;\n RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n RGB.prototype.constructor = RGB;\n\n RGB.prototype.toHSV = function toHSV () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n };\n\n RGB.prototype.toHSL = function toHSL () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n };\n\n RGB.prototype.toBytes = function toBytes () {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n };\n\n return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n function Bytes(r, g, b, a) {\n RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n if ( RGB ) Bytes.__proto__ = RGB;\n Bytes.prototype = Object.create( RGB && RGB.prototype );\n Bytes.prototype.constructor = Bytes;\n\n Bytes.prototype.toRGB = function toRGB () {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n };\n\n Bytes.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n Bytes.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n Bytes.prototype.toHex = function toHex (options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n };\n\n Bytes.prototype.toBytes = function toBytes () {\n return this;\n };\n\n return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n if ( pad === void 0 ) pad = \"0\";\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nvar HSV = (function (BaseColor) {\n function HSV(h, s, v, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n if ( BaseColor ) HSV.__proto__ = BaseColor;\n HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSV.prototype.constructor = HSV;\n\n HSV.prototype.toRGB = function toRGB () {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\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\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSV.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n HSV.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n function HSL(h, s, l, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n if ( BaseColor ) HSL.__proto__ = BaseColor;\n HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSL.prototype.constructor = HSL;\n\n HSL.prototype.toRGB = function toRGB () {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSL.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n HSL.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n var m, ret;\n\n if (!value || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n } else if ((m = /^color\\(\\s*srgb\\s*([0-9]*\\.?[0-9]+)\\s+([0-9]*\\.?[0-9]+)\\s+([0-9]*\\.?[0-9]+)\\s*(\\/\\s+([0-9]*\\.?[0-9]+))?\\)/.exec(color))) {\n ret = new RGB(\n parseFloat(m[1]),\n parseFloat(m[2]),\n parseFloat(m[3]),\n parseFloat(m[5] || '1'));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","var ampRegExp = /&/g;\nvar ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n var console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import Class from './class';\n\nvar Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.bind = function bind (eventName, handlers, one) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n var length = eventNames.length;\n\n if (handlers === undefined) {\n for (var field in eventName) {\n this$1.bind(field, eventName[field]);\n }\n return this;\n }\n\n var loop = function ( idx ) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n if (one) {\n var original = handler;\n handler = function () { // eslint-disable-line no-loop-func\n this$1.unbind(eventName$1, handler);\n original.apply(this$1, arguments$1);\n };\n handler.original = original;\n }\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.push(handler);\n }\n };\n\n for (var idx = 0; idx < length; idx++) loop( idx );\n\n return this;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (eventName, handlers) {\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n\n for (var idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n };\n\n Observable.prototype.trigger = function trigger (eventName, e) {\n var this$1 = this;\n if ( e === void 0 ) e = {};\n\n var events = this._events[eventName];\n\n if (events) {\n var length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (var idx = 0; idx < length; idx++) {\n events[idx].call(this$1, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable.prototype.unbind = function unbind (eventName, handler) {\n var events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (var idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n };\n\n return Observable;\n}(Class));\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","function matchUserAgent(userAgent) {\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n var browser = {};\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n var match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nvar browser = null;\n\nvar support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","export default function template() {\n throw new Error(\"Template implementation missing.\");\n}\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n var lastExecTime = 0;\n var timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var elapsed = now() - lastExecTime;\n var args = arguments;\n\n var exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}\n","import { Class } from '../common';\n\nvar BaseNode = (function (Class) {\n function BaseNode(srcElement) {\n Class.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n if ( Class ) BaseNode.__proto__ = Class;\n BaseNode.prototype = Object.create( Class && Class.prototype );\n BaseNode.prototype.constructor = BaseNode;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n}(Class));\n\nexport default BaseNode;","var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\nvar PATTERN = \"Pattern\";\n\nexport { DASH_ARRAYS, SOLID, BUTT, PATTERN };\n","import { Class } from '../common';\n\nvar HasObservers = (function (Class) {\n function HasObservers () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) HasObservers.__proto__ = Class;\n HasObservers.prototype = Object.create( Class && Class.prototype );\n HasObservers.prototype.constructor = HasObservers;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if ( e === void 0 ) e = {};\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n}(Class));\n\nexport default HasObservers;\n\n","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (HasObservers) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if ( prefix === void 0 ) prefix = \"\";\n\n HasObservers.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n }\n\n if ( HasObservers ) OptionsStore.__proto__ = HasObservers;\n OptionsStore.prototype = Object.create( HasObservers && HasObservers.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n}(HasObservers));\n\nexport default OptionsStore;\n","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nvar events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nvar Surface = (function (Observable) {\n function Surface(element, options) {\n Observable.call(this);\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n if ( Observable ) Surface.__proto__ = Observable;\n Surface.prototype = Object.create( Observable && Observable.prototype );\n Surface.prototype.constructor = Surface;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n var node = this$1.eventTarget(e);\n if (node && !this$1._suspendedTracking) {\n this$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n}(Observable));\n\nexport default Surface;\n","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\nvar accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nvar Arc = (function (superclass) {\n function Arc(center, options) {\n if ( center === void 0 ) center = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n}(withAccessors(HasObservers, accessors)));\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (superclass) {\n function Circle(center, radius) {\n if ( center === void 0 ) center = new Point();\n if ( radius === void 0 ) radius = 0;\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n}(withAccessors(HasObservers, [ \"radius\" ])));\n\nexport default Circle;\n","var PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n if ( tolerance === void 0 ) tolerance = PRECISION;\n\n return round(Math.abs(a - b), tolerance) === 0;\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","export default function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nvar Matrix = (function (Class) {\n function Matrix(a, b, c, d, e, f) {\n if ( a === void 0 ) a = 0;\n if ( b === void 0 ) b = 0;\n if ( c === void 0 ) c = 0;\n if ( d === void 0 ) d = 0;\n if ( e === void 0 ) e = 0;\n if ( f === void 0 ) f = 0;\n\n Class.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n if ( Class ) Matrix.__proto__ = Class;\n Matrix.prototype = Object.create( Class && Class.prototype );\n Matrix.prototype.constructor = Matrix;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if ( separator === void 0 ) separator = \",\";\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nvar Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( superclass ) Point.__proto__ = superclass;\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if ( separator === void 0 ) separator = \" \";\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n}(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (HasObservers) {\n function Rect(origin, size, cornerRadius) {\n if ( origin === void 0 ) origin = new Point();\n if ( size === void 0 ) size = new Size();\n if ( cornerRadius === void 0 ) cornerRadius = 0;\n\n HasObservers.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n if ( HasObservers ) Rect.__proto__ = HasObservers;\n Rect.prototype = Object.create( HasObservers && HasObservers.prototype );\n Rect.prototype.constructor = Rect;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if ( y === void 0 ) y = x;\n\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n}(HasObservers));\n\nexport default Rect;\n","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n function ComplexNumber(real, img) {\n if ( real === void 0 ) real = 0;\n if ( img === void 0 ) img = 0;\n\n Class.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n if ( Class ) ComplexNumber.__proto__ = Class;\n ComplexNumber.prototype = Object.create( Class && Class.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nvar points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nvar Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n if ( superclass ) Segment.__proto__ = superclass;\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n}(withPoints(HasObservers, points)));\n\nfunction arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nvar Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n if ( superclass ) Size.__proto__ = superclass;\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n}(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\nexport default Size;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (HasObservers) {\n function Transformation(matrix) {\n if ( matrix === void 0 ) matrix = Matrix.unit();\n\n HasObservers.call(this);\n\n this._matrix = matrix;\n }\n\n if ( HasObservers ) Transformation.__proto__ = HasObservers;\n Transformation.prototype = Object.create( HasObservers && HasObservers.prototype );\n Transformation.prototype.constructor = Transformation;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n if ( origin === void 0 ) origin = null;\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n}(HasObservers));\n\nexport default Transformation;\n","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nvar withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nvar options = [ \"offset\", \"color\", \"opacity\" ];\n\nvar GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n if ( superclass ) GradientStop.__proto__ = superclass;\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n}(withOptions(HasObservers, options)));\n\nexport default GradientStop;\n","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n function StopsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n StopsArray.prototype.constructor = StopsArray;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (HasObservers) {\n function Gradient(options) {\n if ( options === void 0 ) options = {};\n\n HasObservers.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n if ( HasObservers ) Gradient.__proto__ = HasObservers;\n Gradient.prototype = Object.create( HasObservers && HasObservers.prototype );\n Gradient.prototype.constructor = Gradient;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if ( stops === void 0 ) stops = [];\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n}(HasObservers));\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nvar points = [ \"start\", \"end\" ];\n\nvar LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n if ( superclass ) LinearGradient.__proto__ = superclass;\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n\n return LinearGradient;\n}(withPoints(Gradient, points)));\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nvar RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n if ( superclass ) RadialGradient.__proto__ = superclass;\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n}(withPoints(Gradient, [ \"center\" ])));\n\nexport default RadialGradient;\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, Rect, LinearGradient } from \"../drawing\";\nimport { encodeBase64 } from \"../util\";\nimport { setInnerHTML, setStyle } from \"../util/element-set-styles-safe\";\n\nvar browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\nvar KENDO_BULLET_TYPE = 'data-kendo-bullet-type';\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nvar inBrowser = typeof window !== 'undefined';\nvar microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nvar TextRect = (function (Text) {\n function TextRect(str, rect, options) {\n Text.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n if ( Text ) TextRect.__proto__ = Text;\n TextRect.prototype = Object.create( Text && Text.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n}(Text));\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n}\n\n// clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n\n if (el._kendoExportVisual) {\n clone._kendoExportVisual = el._kendoExportVisual;\n }\n\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach(function (canvas, i) {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n setInnerHTML(div, el);\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
\n //

Foo

\n //
\n //\n // 2.
\n //

Foo

\n //
\n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
\").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\nfunction drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n}\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n var done = false;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n\n if (!pending) {\n next();\n }\n\n function next() {\n if (!done && --pending <= 0) {\n callback();\n done = true;\n }\n }\n}\n\nfunction cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"text-decoration-color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n if (name == \"underline\") {\n var offset = getPropertyValue(style, \"text-underline-offset\");\n if (offset != \"auto\") {\n nodeInfo[\"underline-offset\"] = parseFloat(offset);\n }\n }\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n setStyle(element, prev);\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n if (transform == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n setStyle(psel, getCssText(style));\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group) && !maybeRenderBullet(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform(path, transform);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n bullet.innerHTML = ' ';\n bullet.setAttribute(KENDO_BULLET_TYPE, listStyleType);\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n if (element._kendoExportVisual) {\n var rect = element.getBoundingClientRect();\n var size = {\n width: rect.width,\n height: rect.height\n };\n visual = element._kendoExportVisual(size);\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n group.append(wrap);\n\n return true;\n}\n\nfunction maybeRenderBullet(element, group) {\n var bulletType = element.getAttribute(KENDO_BULLET_TYPE);\n\n if (!bulletType) {\n return false;\n }\n\n var box = element.getBoundingClientRect();\n var color = getComputedStyle(element).color;\n\n if (bulletType === 'square') {\n var rectSize = box.height / 5;\n group.append(new Rect(new geo.Rect([\n box.right - rectSize,\n box.top + box.height / 2.1\n ], [rectSize, rectSize])).fill(color).stroke(color));\n } else {\n var radius = box.height / 7;\n var center = [\n box.right - radius,\n box.top + (box.height + radius) / 2\n ];\n var circle = new Circle(new geo.Circle(center, radius));\n if (bulletType === 'circle') {\n circle.stroke(color, 0.5);\n } else {\n circle.fill(color).stroke(null);\n }\n group.append(circle);\n }\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new geo.Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n setStyle(el, getCssText(getComputedStyle(element)));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n setStyle(option, getCssText(getComputedStyle(element.options[i])));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg = doc.documentElement;\n var box = getContentBox(element);\n svg.setAttribute(\"width\", box.width);\n svg.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg);\n }\n\n return xml;\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0 || isNaN(fontSize)) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var underlineOffset = nodeInfo[\"underline-offset\"];\n\n if (underline) {\n forEachRect(decorateUnder);\n }\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (lineThrough || overline) {\n forEachRect(decorateOver);\n }\n\n return; // only function declarations after this line\n\n function forEachRect(callback) {\n range.selectNode(node);\n var clientRects = slice(range.getClientRects());\n\n forEachRect = function (cb) { return clientRects.forEach(cb); };\n forEachRect(callback);\n }\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new geo.Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function drawTextLine(lineWidth, textBox, color, ypos) {\n if (color) {\n var path = new Path({ stroke: {\n width: lineWidth,\n color: color\n }});\n\n ypos -= lineWidth;\n path.moveTo(textBox.left, ypos)\n .lineTo(textBox.right, ypos);\n group.append(path);\n }\n }\n\n function decorateOver(box) {\n var width = fontSize / 12;\n drawTextLine(width, box, lineThrough, box.bottom - box.height / 2.7);\n drawTextLine(width, box, overline, box.top);\n }\n\n function decorateUnder(box) {\n var width = fontSize / 12;\n var underlinePos = box.bottom;\n if (underlineOffset != null) {\n underlinePos += underlineOffset;\n } else {\n underlinePos += width; // for \"auto\" it seems better to add line width\n }\n drawTextLine(width, box, underline, underlinePos);\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nexport { drawDOM, drawText, getFontFaces };\n","import translateToPoint from './translate-to-point';\nimport alignStart from './align-start';\n\nexport default function alignElements(elements, rect, alignment, axis, sizeField) {\n for (var idx = 0; idx < elements.length; idx++) {\n var bbox = elements[idx].clippedBBox();\n if (bbox) {\n var point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n}","\nimport alignElements from './align-elements';\n\nexport default function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n}","import alignElements from './align-elements';\n\nexport default function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n}","import Point from '../geometry/point';\nimport translateToPoint from './translate-to-point';\n\nexport default function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n var origin = new Point();\n var previousBBox = elements[0].bbox;\n\n for (var idx = 1; idx < elements.length; idx++) {\n var element = elements[idx].element;\n var bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n}","export default function createStackElements(elements) {\n var stackElements = [];\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n}","import stackElements from './stack-elements';\nimport createStackElements from './create-stack-elements';\n\nexport default function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n}","import translateToPoint from './translate-to-point';\nimport stackElements from './stack-elements';\n\nfunction getStacks(elements, rect, sizeField) {\n var maxSize = rect.size[sizeField];\n var stacks = [];\n var stack = [];\n var stackSize = 0;\n var element, bbox;\n\n var addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (var idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n var size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n}\n\nexport default function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n var stacks = getStacks(elements, rect, sizeField);\n var origin = rect.origin.clone();\n var result = [];\n\n for (var idx = 0; idx < stacks.length; idx++) {\n var stack = stacks[idx];\n var startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n}","import wrapElements from './wrap-elements';\n\nexport default function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n}","import wrapElements from './wrap-elements';\n\nexport default function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n}","import createTransform from '../geometry/transform';\n\nexport default function fit(element, rect) {\n var bbox = element.clippedBBox();\n if (bbox) {\n var elementSize = bbox.size;\n var rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n var transform = element.transform() || createTransform();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n}","import { Class } from '../common';\nimport { MultiPath } from '../shapes/path';\nimport parsePath from './parse-path';\n\nvar instance;\n\nvar PathParser = (function (Class) {\n function PathParser () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) PathParser.__proto__ = Class;\n PathParser.prototype = Object.create( Class && Class.prototype );\n PathParser.prototype.constructor = PathParser;\n\n var staticAccessors = { current: { configurable: true } };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new PathParser();\n }\n\n return instance;\n };\n\n PathParser.prototype.parse = function parse (str, options) {\n var multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n };\n\n Object.defineProperties( PathParser, staticAccessors );\n\n return PathParser;\n}(Class));\n\nexport default PathParser;\n\n","import RootNode from './root-node';\nimport { Group } from '../shapes';\nimport { transform } from '../geometry';\nimport { SVG_NS } from './constants';\n\nexport default function exportGroup(group) {\n var root = new RootNode({\n skipBaseHref: true\n });\n var bbox = group.clippedBBox();\n var rootGroup = group;\n\n if (bbox) {\n var origin = bbox.getOrigin();\n var exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n var svg = \"\" + (root.render()) + \"\";\n\n root.destroy();\n\n return svg;\n}","import Surface from './surface';\nimport { transform } from '../geometry';\nimport Group from '../shapes/group';\n\nexport default function exportImage(group, options) {\n var defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n var exportRoot = group;\n var bbox = group.clippedBBox();\n\n\n if (bbox) {\n var origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n var size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n var surfaceOptions = Object.assign(defaults, options);\n\n var container = document.createElement(\"div\");\n var style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n var surface = new Surface(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n var promise = surface.image();\n var destroy = function () {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n}","import { createPromise, encodeBase64 } from '../util';\nimport exportGroup from './export-group';\n\nexport default function exportSVG(group, options) {\n var svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n}\n","// XXX: the following will not work with IE9 (requires server proxy).\nexport default function saveAs(options) {\n var dataURI = options.dataURI;\n var fileName = options.fileName;\n var data = dataURI;\n\n if (typeof data == \"string\" && window.Blob) {\n var parts = data.split(\";base64,\");\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n data = new Blob([ array.buffer ], { type: contentType });\n }\n if (navigator.msSaveBlob) {\n navigator.msSaveBlob(data, fileName);\n } else {\n var link = document.createElement(\"a\");\n link.download = fileName;\n data = link.href = URL.createObjectURL(data);\n var e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n link.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(data);\n });\n }\n}\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { createPromise } from \"../util\";\nimport { parseColor as utils_parseColor, saveAs as util_saveAs, support } from \"../common\";\nimport * as PDF from \"./core\";\nimport { Group, Path, MultiPath, Gradient, RadialGradient, Pattern } from '../drawing';\nimport * as geo from \"../geometry\";\n\nvar DEFAULT_IMAGE_DPI = 300;\nvar TEXT_RENDERING_MODE = PDF.TEXT_RENDERING_MODE;\n\nvar DASH_PATTERNS = {\n dash : [ 4 ],\n dashDot : [ 4, 2, 1, 2 ],\n dot : [ 1, 2 ],\n longDash : [ 8, 2 ],\n longDashDot : [ 8, 2, 1, 2 ],\n longDashDotDot : [ 8, 2, 1, 2, 1, 2 ],\n solid : []\n};\n\nvar LINE_CAP = {\n butt : 0,\n round : 1,\n square : 2\n};\n\nvar LINE_JOIN = {\n miter : 0,\n round : 1,\n bevel : 2\n};\n\nfunction render(group, callback) {\n var fonts = [], images = {}, options = group.options;\n\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n\n var multiPage = getOption(\"multiPage\");\n var imgDPI = getOption(\"imgDPI\", DEFAULT_IMAGE_DPI);\n\n PDF.clearImageCache();\n\n var handlers = {\n Image: function(element) {\n var url = element.src();\n var size = element.bbox().size;\n if (imgDPI) {\n var prev = images[url];\n size = {\n width: Math.ceil(size.width * imgDPI / 72),\n height: Math.ceil(size.height * imgDPI / 72)\n };\n\n if (prev) {\n size.width = Math.max(prev.width, size.width);\n size.height = Math.max(prev.height, size.height);\n }\n }\n\n images[url] = size;\n },\n Text: function(element) {\n var style = PDF.parseFontDef(element.options.font);\n var url = PDF.getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n };\n\n group.traverse(function(element) {\n dispatch(handlers, element);\n\n var fill = element.fill && element.fill();\n if (fill instanceof Pattern) {\n fill.traverse(function(child) {\n dispatch(handlers, child);\n });\n }\n });\n\n function doIt() {\n if (--count > 0) {\n return;\n }\n\n var pdf = new (PDF.Document)({\n producer : getOption(\"producer\"),\n title : getOption(\"title\"),\n author : getOption(\"author\"),\n subject : getOption(\"subject\"),\n keywords : getOption(\"keywords\"),\n creator : getOption(\"creator\"),\n date : getOption(\"date\"),\n\n autoPrint : getOption(\"autoPrint\")\n });\n\n function drawPage(group) {\n var options = group.options;\n\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n // var tmp, bbox;\n\n var paperSize = getOption(\"paperSize\", getOption(\"paperSize\", \"auto\"), options), addMargin = false;\n if (paperSize == \"auto\") {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [ size.width, size.height ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new Group();\n tmp.transform(new geo.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n }\n else {\n paperSize = \"A4\";\n }\n }\n\n var page;\n page = pdf.addPage({\n paperSize : paperSize,\n margin : getOption(\"margin\", getOption(\"margin\"), options),\n addMargin : addMargin,\n landscape : getOption(\"landscape\", getOption(\"landscape\", false), options)\n });\n drawElement(group, page, pdf);\n }\n\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n\n callback(pdf.render(), pdf);\n }\n\n var count = 2;\n PDF.loadFonts(fonts, doIt);\n PDF.loadImages(images, doIt, {\n jpegQuality : getOption(\"jpegQuality\", 0.92),\n keepPNG : getOption(\"keepPNG\", false)\n });\n}\n\nfunction toDataURL(group, callback) {\n render(group, function(data){\n callback(\"data:application/pdf;base64,\" + data.base64());\n });\n}\n\nfunction toBlob(group, callback) {\n render(group, function(data){\n callback(new window.Blob([ data.get() ], { type: \"application/pdf\" }));\n });\n}\n\nfunction saveAs(group, filename, proxy, callback) {\n // XXX: Safari has Blob, but does not support the download attribute\n // so we'd end up converting to dataURL and using the proxy anyway.\n if (window.Blob && !support.browser.safari) {\n toBlob(group, function(blob){\n util_saveAs({ dataURI: blob, fileName: filename });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function(dataURL){\n util_saveAs({ dataURI: dataURL, fileName: filename, proxyURL: proxy });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n}\n\nfunction dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n}\n\nfunction drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment(\"BEGIN: \" + element.options._pdfDebug);\n }\n\n var transform = element.transform();\n var opacity = element.opacity();\n\n page.save();\n\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n\n setClipping(element, page, pdf);\n\n dispatch({\n Path : drawPath,\n MultiPath : drawMultiPath,\n Circle : drawCircle,\n Arc : drawArc,\n Text : drawText,\n Image : drawImage,\n Group : drawGroup,\n Rect : drawRect\n }, element, page, pdf);\n\n page.restore();\n\n if (element.options._pdfDebug) {\n page.comment(\"END: \" + element.options._pdfDebug);\n }\n}\n\nfunction setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n\n var color = stroke.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no stroke\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return; // no stroke\n }\n page.setLineWidth(width);\n }\n\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n}\n\nfunction setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n\n if (fill instanceof Gradient || fill instanceof Pattern) {\n return;\n }\n\n var color = fill.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no fill\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n}\n\nfunction setClipping(element, page, pdf) {\n // XXX: only Path supported at the moment.\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n // page.setStrokeColor(Math.random(), Math.random(), Math.random());\n // page.setLineWidth(1);\n // page.stroke();\n }\n}\n\nfunction shouldDraw(thing) {\n return (thing &&\n (thing instanceof Gradient ||\n thing instanceof Pattern ||\n (thing.color && !/^(none|transparent)$/i.test(thing.color) &&\n (thing.width == null || thing.width > 0) &&\n (thing.opacity == null || thing.opacity > 0))));\n}\n\nfunction maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof RadialGradient;\n var start, end;\n if (isRadial) {\n start = { x: fill.center().x , y: fill.center().y , r: 0 };\n end = { x: fill.center().x , y: fill.center().y , r: fill.radius() };\n } else {\n start = { x: fill.start().x , y: fill.start().y };\n end = { x: fill.end().x , y: fill.end().y };\n }\n\n var stops = fill.stops.elements().map(function(stop){\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n\n // Duplicats first and last stop to fix\n // https://github.com/telerik/kendo-ui-core/issues/1782\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n\n var gradient = {\n userSpace : fill.userSpace(),\n type : isRadial ? \"radial\" : \"linear\",\n start : start,\n end : end,\n stops : stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left : tl.x,\n top : tl.y,\n width : size.width,\n height : size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n}\n\nfunction maybePattern(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof Pattern) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n var strokeWidth = element.stroke() ? element.stroke().width : 0;\n\n page.pattern(fill, {\n left : tl.x + strokeWidth / 2,\n top : tl.y + strokeWidth / 2,\n width : size.width - strokeWidth,\n height : size.height - strokeWidth\n }, drawPattern);\n return true;\n }\n}\n\nfunction maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true) && !maybePattern(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false) && !maybePattern(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n // we should not get here; the path should have been\n // optimized away. but let's be prepared.\n page.nop();\n }\n}\n\nfunction maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n // detect if this path looks like a rectangle parallel to the axis\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) { // has curve?\n return false;\n }\n a[i] = segments[i].anchor();\n }\n // it's a rectangle if the y/x/y/x or x/y/x/y coords of\n // consecutive points are the same.\n var isRect = (\n a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x\n ) || (\n a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y\n );\n if (isRect) {\n // this saves a bunch of instructions in PDF:\n // moveTo, lineTo, lineTo, lineTo, close -> rect.\n page.rect(a[0].x, a[0].y,\n a[2].x - a[0].x /*width*/,\n a[2].y - a[0].y /*height*/);\n return true;\n }\n }\n}\n\nfunction _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(\n prevOut.x , prevOut.y,\n controlIn.x , controlIn.y,\n anchor.x , anchor.y\n );\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n}\n\nfunction drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(\n points[i].x, points[i++].y,\n points[i].x, points[i++].y,\n points[i].x, points[i++].y\n );\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawText(element, page) {\n var style = PDF.parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n\n var draw = function (renderMode) {\n page.beginText();\n page.setFont(PDF.getFontURL(style), style.fontSize);\n page.setTextRenderingMode(renderMode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n };\n\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE.fillAndStroke;\n if (element.options.paintOrder === \"stroke\") {\n draw(TEXT_RENDERING_MODE.stroke);\n mode = TEXT_RENDERING_MODE.fill;\n }\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE.stroke;\n }\n\n draw(mode);\n page.endText();\n}\n\nfunction drawPattern(pattern, page, pdf) {\n var children = pattern.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n}\n\nfunction drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n}\n\nfunction drawImage(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n}\n\nfunction drawRect(element, page, pdf) {\n var geometry = element.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n if (rx === 0 && ry === 0) {\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n } else {\n drawPath(Path.fromRect(geometry, element.options), page, pdf);\n }\n}\n\nfunction parseColor(value) {\n var color = utils_parseColor(value, true);\n return color ? color.toRGB() : null;\n}\n\nfunction optimize(root) {\n var clipbox = false;\n var matrix = geo.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return { root: root, bbox: currentBox };\n\n function change(newShape) {\n changed = true;\n return newShape;\n }\n\n function visible(shape) {\n return (shape.visible() && shape.opacity() > 0 &&\n ( shouldDraw(shape.fill()) ||\n shouldDraw(shape.stroke()) ));\n }\n\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n\n var clip = shape.clip();\n if (clip && typeof clip.bbox === 'function') {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? geo.Rect.intersect(clipbox, clip) : clip;\n }\n }\n\n try {\n return f();\n }\n finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n\n var box = shape.rawBBox();\n if (box) {\n box = box.bbox(matrix);\n }\n\n if (clipbox && box) {\n box = geo.Rect.intersect(box, clipbox);\n }\n return box;\n }\n\n function opt(shape) {\n return withClipping(shape, function(){\n if (!(shape instanceof Group || shape instanceof MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? geo.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function(shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function(shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n var el = new Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n}\n\nfunction exportPDF(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n toDataURL(group, promise.resolve);\n\n return promise;\n}\n\n// XXX: the duplication is in order to keep exportPDF return a data\n// URI, which is what previous versions do. Currently only IE9 does\n// not support Blob, IMO we should switch to Blob by default\n// everywhere.\nfunction exportPDFToBlob(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n if (window.Blob && !support.browser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n\n return promise;\n}\n\n\nexport { exportPDF, exportPDFToBlob, saveAs, toDataURL, toBlob, render };\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default measurable;","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default paintable;\n","var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default traversable;\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nvar withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nvar withGeometry = function (TBase, names) {\n if ( names === void 0 ) names = [ \"geometry\" ];\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nvar withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import { Size, Rect as geomRect, Circle as geomCircle } from '../geometry';\r\nimport { Rect as drawRect, Circle as drawCircle, Path } from '../drawing';\r\nimport Group from '../shapes/group';\r\nimport { definitionId } from '../util';\r\nimport { PATTERN } from '../core/constants';\r\n\r\nvar defaultColor = \"#aba4a6\";\r\nvar defaultLine = { width: 2, gap: 18 };\r\nvar defaultDot = { radius: 10, gap: 10 };\r\nvar defaultGrid = { size: 18, gap: 2 };\r\n\r\nexport var Pattern = (function (Group) {\n function Pattern(options) {\r\n Group.call(this);\r\n\r\n var width = options.width;\n var height = options.height;\r\n this._size = Size.create([width, height]);\r\n this.id = definitionId();\r\n }\n\n if ( Group ) Pattern.__proto__ = Group;\n Pattern.prototype = Object.create( Group && Group.prototype );\n Pattern.prototype.constructor = Pattern;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\r\n\r\n prototypeAccessors.nodeType.get = function () {\r\n return PATTERN;\r\n };\n\n Pattern.prototype.size = function size (value) {\r\n if (value) {\r\n this._size = Size.create(value);\r\n return this;\r\n }\r\n\r\n return this._size;\r\n };\n\n Object.defineProperties( Pattern.prototype, prototypeAccessors );\n\n return Pattern;\n}(Group));\r\n\r\nvar drawBackground = function (pattern, color, size) {\r\n if (color) {\r\n pattern.append(\r\n new drawRect(new geomRect([0, 0], size), { fill: { color: color }, stroke: null })\r\n );\r\n }\r\n};\r\n\r\nexport function dotsPattern(options) {\n if ( options === void 0 ) options = {};\n\r\n var gap = options.gap; if ( gap === void 0 ) gap = defaultDot.gap;\n var radius = options.radius; if ( radius === void 0 ) radius = defaultDot.radius;\n var color = options.color; if ( color === void 0 ) color = defaultColor;\n var background = options.background;\r\n var shapeOptions = { fill: { color: color }, stroke: null };\r\n var size = 4 * radius + 2 * gap;\r\n var yC2 = 3 * radius + 1.5 * gap;\r\n var center1 = [size / 2, radius + 1/2 * gap];\r\n var center2 = [0, yC2];\r\n var center3 = [size, yC2];\r\n\r\n var pattern = new Pattern({ width: size, height: size });\r\n\r\n drawBackground(pattern, background, [size, size]);\r\n\r\n pattern.append(\r\n new drawCircle(new geomCircle(center1, radius), shapeOptions),\r\n new drawCircle(new geomCircle(center2, radius), shapeOptions),\r\n new drawCircle(new geomCircle(center3, radius), shapeOptions)\r\n );\r\n\r\n return pattern;\r\n};\r\n\r\nexport function verticalStripesPattern(options) {\n if ( options === void 0 ) options = {};\n\r\n var gap = options.gap; if ( gap === void 0 ) gap = defaultLine.gap;\n var width = options.width; if ( width === void 0 ) width = defaultLine.width;\n var color = options.color; if ( color === void 0 ) color = defaultColor;\n var background = options.background;\r\n var size = width + gap;\r\n var shapeOptions = { fill: null, stroke: { color: color, width: width / 2 } };\r\n var pattern = new Pattern({ width: size, height: size });\r\n\r\n drawBackground(pattern, background, [size, size]);\r\n\r\n var xStart = width / 4;\r\n var xEnd = size - width / 4;\r\n\r\n var startLine = new Path(shapeOptions);\r\n startLine.moveTo(xStart, 0).lineTo(xStart, size);\r\n\r\n var endLine = new Path(shapeOptions);\r\n endLine.moveTo(xEnd, 0).lineTo(xEnd, size);\r\n\r\n pattern.append(startLine, endLine);\r\n\r\n return pattern;\r\n};\r\n\r\nexport function crosshatchPattern(options) {\n if ( options === void 0 ) options = {};\n\r\n var gap = options.gap; if ( gap === void 0 ) gap = defaultLine.gap;\n var width = options.width; if ( width === void 0 ) width = defaultLine.width;\n var color = options.color; if ( color === void 0 ) color = defaultColor;\n var background = options.background;\r\n var size = Math.sqrt(2) * (width + gap);\r\n var shapeOptions = { fill: null, stroke: { color: color, width: width } };\r\n var pattern = new Pattern({ width: size, height: size });\r\n\r\n drawBackground(pattern, background, [size, size]);\r\n\r\n var line1 = new Path(shapeOptions);\r\n line1.moveTo(0, 0).lineTo(size, size);\r\n\r\n var line2 = new Path(shapeOptions);\r\n line2.moveTo(size, 0).lineTo(0, size);\r\n\r\n pattern.append(line1, line2);\r\n\r\n return pattern;\r\n};\r\n\r\nexport function diagonalStripesPattern(options) {\n if ( options === void 0 ) options = {};\n\r\n var gap = options.gap; if ( gap === void 0 ) gap = defaultLine.gap;\n var width = options.width; if ( width === void 0 ) width = defaultLine.width;\n var color = options.color; if ( color === void 0 ) color = defaultColor;\n var background = options.background;\r\n var size = Math.sqrt(2) * (width + gap);\r\n var shapeOptions = { fill: null, stroke: { color: color, width: width, lineCap: 'square' } };\r\n var pattern = new Pattern({ width: size, height: size });\r\n \r\n drawBackground(pattern, background, [size, size]);\r\n\r\n var line1 = new Path(shapeOptions);\r\n line1.moveTo(0, size / 2).lineTo(size / 2, 0);\r\n\r\n var line2 = new Path(shapeOptions);\r\n line2.moveTo(size / 2, size).lineTo(size, size / 2);\r\n\r\n pattern.append(line1, line2);\r\n\r\n return pattern;\r\n};\r\n\r\nexport function gridPattern(options) {\n if ( options === void 0 ) options = {};\n\r\n var gap = options.gap; if ( gap === void 0 ) gap = defaultGrid.gap;\n var squareSize = options.size; if ( squareSize === void 0 ) squareSize = defaultGrid.size;\n var color = options.color; if ( color === void 0 ) color = defaultColor;\n var background = options.background;\r\n var size = squareSize + gap;\r\n var halfGap = gap / 2;\r\n var shapeOptions = { fill: { color: color }, stroke: null };\r\n var pattern = new Pattern({ width: size, height: size });\r\n\r\n drawBackground(pattern, background, [size, size]);\r\n\r\n var rect = new drawRect(new geomRect([halfGap, halfGap], [squareSize, squareSize]), shapeOptions);\r\n pattern.append(rect);\r\n\r\n return pattern;\r\n};\r\n","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nvar HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nvar BASE64 = (function(){\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n\n var chr1 = (enc1 << 2) | (enc2 >>> 4);\n var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n var chr3 = ((enc3 & 3) << 6) | enc4;\n\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function(bytes) {\n var i = 0, n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n\n var enc1 = chr1 >>> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n var enc4 = chr3 & 63;\n\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n}());\n\nfunction BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function(len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function() {};\n\n var get = HAS_TYPED_ARRAYS ? function() {\n return new Uint8Array(data.buffer, 0, length);\n } : function() {\n return data;\n };\n\n var write = HAS_TYPED_ARRAYS ? function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n\n var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function(start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 0xFF;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return (readByte() << 8) | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n function readLong() {\n return (readShort() * 0x10000) + readShort();\n }\n function writeLong(w) {\n writeShort((w >>> 16) & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n function readFixed() {\n return readLong() / 0x10000;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n\n var stream = {\n eof : eof,\n readByte : readByte,\n writeByte : writeByte,\n readShort : readShort,\n writeShort : writeShort,\n readLong : readLong,\n writeLong : writeLong,\n readFixed : readFixed,\n writeFixed : writeFixed,\n\n // signed numbers.\n readShort_ : readShort_,\n writeShort_ : writeShort_,\n readLong_ : readLong_,\n writeLong_ : writeLong_,\n readFixed_ : readFixed_,\n writeFixed_ : writeFixed_,\n\n read : read,\n write : write,\n readString : readString,\n writeString : writeString,\n\n times : times,\n get : get,\n slice : slice,\n\n offset: function(pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n\n skip: function(nbytes) {\n offset += nbytes;\n },\n\n toString: function() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n\n length: function() { return length; },\n\n saveExcursion: function(f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n\n writeBase64: function(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function() {\n return BASE64.encode(get());\n }\n };\n\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\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 } 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 } else {\n output.push(value);\n }\n }\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function(value){\n var output = \"\";\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n var data = window.atob(base64);\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n HAS_TYPED_ARRAYS,\n BASE64,\n BinaryStream,\n ucs2decode,\n ucs2encode,\n base64ToUint8Array\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\nvar Directory = function Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag : data.readString(4),\n checksum : data.readLong(),\n offset : data.readLong(),\n length : data.readLong()\n };\n tables[entry.tag] = entry;\n }\n};\n\nDirectory.prototype.readTable = function readTable (name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n return (this[name] = def.table = new Ctor(this, def));\n};\n\nDirectory.prototype.render = function render (tables) {\n var this$1 = this;\n\n var tableCount = Object.keys(tables).length;\n\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n\n out.writeString(tag);\n out.writeLong(this$1.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n\n tableData.write(table);\n if (tag == \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n};\n\nDirectory.prototype.checksum = function checksum (data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 0xFFFFFFFF;\n};\n\nvar Table = function Table(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n};\n\nTable.prototype.raw = function raw () {\n return this.rawData.slice(this.offset, this.length);\n};\n\nTable.prototype.parse = function parse () {};\n\nvar HeadTable = (function (Table) {\n function HeadTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HeadTable.__proto__ = Table;\n HeadTable.prototype = Object.create( Table && Table.prototype );\n HeadTable.prototype.constructor = HeadTable;\n\n HeadTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n };\n\n HeadTable.prototype.render = function render (indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n };\n\n return HeadTable;\n}(Table));\n\nvar LocaTable = (function (Table) {\n function LocaTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) LocaTable.__proto__ = Table;\n LocaTable.prototype = Object.create( Table && Table.prototype );\n LocaTable.prototype.constructor = LocaTable;\n\n LocaTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function(){\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n };\n\n LocaTable.prototype.offsetOf = function offsetOf (id) {\n return this.offsets[id];\n };\n\n LocaTable.prototype.lengthOf = function lengthOf (id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n\n LocaTable.prototype.render = function render (offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n };\n\n return LocaTable;\n}(Table));\n\nvar HheaTable = (function (Table) {\n function HheaTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HheaTable.__proto__ = Table;\n HheaTable.prototype = Object.create( Table && Table.prototype );\n HheaTable.prototype.constructor = HheaTable;\n\n HheaTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n };\n\n HheaTable.prototype.render = function render (ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n\n out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n };\n\n return HheaTable;\n}(Table));\n\nvar MaxpTable = (function (Table) {\n function MaxpTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) MaxpTable.__proto__ = Table;\n MaxpTable.prototype = Object.create( Table && Table.prototype );\n MaxpTable.prototype.constructor = MaxpTable;\n\n MaxpTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n };\n\n MaxpTable.prototype.render = function render (glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n };\n\n return MaxpTable;\n}(Table));\n\nvar HmtxTable = (function (Table) {\n function HmtxTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HmtxTable.__proto__ = Table;\n HmtxTable.prototype = Object.create( Table && Table.prototype );\n HmtxTable.prototype.constructor = HmtxTable;\n\n HmtxTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n };\n\n HmtxTable.prototype.forGlyph = function forGlyph (id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n };\n\n HmtxTable.prototype.render = function render (glyphIds) {\n var this$1 = this;\n\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this$1.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n };\n\n return HmtxTable;\n}(Table));\n\nvar GlyfTable = (function(){\n var SimpleGlyph = function SimpleGlyph(raw) {\n this.raw = raw;\n };\n\n var prototypeAccessors = { compound: { configurable: true } };\n\n prototypeAccessors.compound.get = function () {\n return false;\n };\n\n SimpleGlyph.prototype.render = function render () {\n return this.raw.get();\n };\n\n Object.defineProperties( SimpleGlyph.prototype, prototypeAccessors );\n\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080;\n //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n var CompoundGlyph = function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) { // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n };\n\n var prototypeAccessors$1 = { compound: { configurable: true } };\n\n prototypeAccessors$1.compound.get = function () {\n return true;\n };\n\n CompoundGlyph.prototype.render = function render (old2new) {\n var this$1 = this;\n\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this$1.glyphIds[i];\n out.offset(this$1.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n };\n\n Object.defineProperties( CompoundGlyph.prototype, prototypeAccessors$1 );\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse () {\n this.cache = {};\n };\n\n anonymous.prototype.glyphFor = function glyphFor (id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return (cache[id] = null);\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n\n var glyph = cache[id] = numberOfContours < 0 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n\n return glyph;\n };\n\n anonymous.prototype.render = function render (glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n };\n\n return anonymous;\n }(Table));\n}());\n\nvar NameTable = (function(){\n var NameEntry = function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n };\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n data.offset(this.offset);\n data.readShort(); // format\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function(){\n return {\n platformID : data.readShort(),\n platformSpecificID : data.readShort(),\n languageID : data.readShort(),\n nameID : data.readShort(),\n length : data.readShort(),\n offset : data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n };\n\n anonymous.prototype.render = function render (psName) {\n var this$1 = this;\n\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n\n out.writeShort(0); // format\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [\n new NameEntry(psName, this$1.postscriptEntry)\n ] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n\n return out.get();\n };\n\n return anonymous;\n }(Table));\n})();\n\nvar PostTable = (function(){\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n var this$1 = this;\n\n data.offset(this.offset);\n\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this$1.names.push(data.readString(data.readByte()));\n }\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n };\n\n anonymous.prototype.glyphFor = function glyphFor (code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };\n\n anonymous.prototype.render = function render (mapping) {\n var this$1 = this;\n\n if (this.format == 0x00030000) {\n return this.raw();\n }\n\n // keep original header, but set format to 2.0\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this$1.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n };\n\n return anonymous;\n }(Table));\n})();\n\nvar CmapTable = (function(){\n var CmapEntry = function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n\n data.saveExcursion(function(){\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n\n data.skip(6); // searchRange, entrySelector, rangeShift\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n\n case 12:\n data.readShort(); // reserved\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n }\n });\n };\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n\n out.writeShort(3); // platformID\n out.writeShort(1); // platformSpecificID\n out.writeLong(12); // offset\n out.writeShort(4); // format\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n out.writeShort(0); // language\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n\n return out.get();\n }\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function(){\n return new CmapEntry(data, offset, self.codeMap);\n });\n };\n\n anonymous.render = function render (ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n out.writeShort(1); // tableCount\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n };\n\n return anonymous;\n }(Table));\n\n})();\n\nvar OS2Table = (function (Table) {\n function OS2Table () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) OS2Table.__proto__ = Table;\n OS2Table.prototype = Object.create( Table && Table.prototype );\n OS2Table.prototype.constructor = OS2Table;\n\n OS2Table.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n };\n\n OS2Table.prototype.render = function render () {\n return this.raw();\n };\n\n return OS2Table;\n}(Table));\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\", n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n}\n\nvar Subfont = function Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n};\n\nSubfont.prototype.use = function use (ch) {\n var self = this;\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function(ret, code){\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n\n // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n};\n\nSubfont.prototype.encodeText = function encodeText (text) {\n return this.use(text);\n};\n\nSubfont.prototype.glyphIds = function glyphIds () {\n return sortedKeys(this.ogid2ngid);\n};\n\nSubfont.prototype.glyphsFor = function glyphsFor (glyphIds, result) {\n var this$1 = this;\n\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this$1.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n};\n\nSubfont.prototype.render = function render () {\n var this$1 = this;\n\n var glyphs = this.glyphsFor(this.glyphIds());\n\n // add missing sub-glyphs\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this$1.ogid2ngid[old_gid] == null) {\n var new_gid = this$1.nextGid++;\n this$1.ogid2ngid[old_gid] = new_gid;\n this$1.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function(id){\n return this.ngid2ogid[id];\n }, this);\n\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n\n this.lastChar = this.next - 1;\n\n var tables = {\n \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\" : glyf.table,\n \"loca\" : loca.table,\n \"hmtx\" : font.hmtx.render(old_gid_ids),\n \"hhea\" : font.hhea.render(old_gid_ids),\n \"maxp\" : font.maxp.render(old_gid_ids),\n \"post\" : font.post.render(old_gid_ids),\n \"name\" : font.name.render(this.psName),\n \"head\" : font.head.render(loca.format),\n \"OS/2\" : font.os2.render()\n };\n\n return this.font.directory.render(tables);\n};\n\nSubfont.prototype.cidToGidMap = function cidToGidMap () {\n var this$1 = this;\n\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this$1.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this$1.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n};\n\nvar TTFFont = function TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == \"ttcf\") {\n var offset;\n var parse = function() {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n data.readLong(); // version\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n};\n\nTTFFont.prototype.parse = function parse () {\n var dir = this.directory = new Directory(this.contents);\n\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n};\n\nTTFFont.prototype.widthOfGlyph = function widthOfGlyph (glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n};\n\nTTFFont.prototype.makeSubset = function makeSubset () {\n return new Subfont(this);\n};\n\nexport { TTFFont };\n","import { deflate as pakoDeflate } from '@progress/pako-esm';\n\nexport var deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n return true;\n}\n\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nimport { encodeUTF16BE, BOM } from \"../util/encode-utf\";\nimport { encodeBase64 } from \"../util\";\n\nvar browser = support.browser;\nvar NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\nvar PATTERN_COUNTER = 0;\n\nvar PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n var arguments$1 = arguments;\n\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments$1[i];\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n }\n else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n }\n else if (isArray(x)) {\n renderArray(x, out);\n }\n else if (isDate(x)) {\n renderDate(x, out);\n }\n else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n }\n // make sure it doesn't end up in exponent notation\n var num = x.toFixed(7);\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n if (num == \"-0\") {\n num = \"0\";\n }\n output.writeString(num);\n }\n else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n }\n else if (typeof x.get == \"function\") {\n output.write(x.get());\n }\n else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function(data) {\n output.write(data);\n };\n out.withIndent = function(f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function() {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n out.offset = function() {\n return output.offset();\n };\n out.toString = function() {\n throw new Error(\"FIX CALLER\");\n };\n out.get = function() {\n return output.get();\n };\n out.stream = function() {\n return output;\n };\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function(){};\n\n value.render = function(out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function(out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n var margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\" : true,\n \"Times-Bold\" : true,\n \"Times-Italic\" : true,\n \"Times-BoldItalic\" : true,\n \"Helvetica\" : true,\n \"Helvetica-Bold\" : true,\n \"Helvetica-Oblique\" : true,\n \"Helvetica-BoldOblique\" : true,\n \"Courier\" : true,\n \"Courier-Bold\" : true,\n \"Courier-Oblique\" : true,\n \"Courier-BoldOblique\" : true,\n \"Symbol\" : true,\n \"ZapfDingbats\" : true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n var m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n req.onload = function() {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function(data){\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont, options) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n xhr.onload = function() {\n blob = xhr.response;\n if (browser.mozilla && blob.type == \"image/svg+xml\") {\n // Firefox won't render SVGs that don't contain width and height attributes.\n var reader = new FileReader();\n reader.onload = function() {\n var doc = new window.DOMParser().parseFromString(this.result, \"image/svg+xml\");\n var svg = doc.documentElement;\n if (svg.getAttribute(\"width\") && svg.getAttribute(\"height\")) {\n // we're good, continue with the existing blob.\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n } else {\n svg.setAttribute(\"width\", size.width);\n svg.setAttribute(\"height\", size.height);\n var xml = new window.XMLSerializer().serializeToString(svg);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n _load(dataURL);\n }\n };\n reader.readAsText(blob);\n } else {\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n }\n };\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n // IE, bless its little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload.call(img);\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = { width: img.width, height: img.height };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n\n // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n\n if (hasAlpha || options.keepPNG) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\", options.jpegQuality);\n data = data.substr(data.indexOf(\";base64,\") + 8);\n\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n var svg = (blob && blob.type === 'image/svg+xml') || (\n /^data:image\\/svg\\+xml;/i.test(this.src.substring(0, 19))\n );\n\n var upscale = size.width >= img.width || size.height >= img.height;\n\n // Use the original image if requested size is bigger than the source,\n // unless it's an SVG that can be upscaled.\n if (!svg && upscale) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n var reader = new FileReader();\n reader.onload = function() {\n try {\n var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function(urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback, options) {\n options = Object.assign({\n jpegQuality : 0.92,\n keepPNG : false\n }, options);\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function(url){\n loadImage(url, images[url], next, options);\n });\n};\n\nvar PDFDocument = function PDFDocument (options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return (options && options[name] != null) ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function(value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n\n self.pages = [];\n\n self.FONTS = {};\n self.PATTERNS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n self.GRAD_COL = {}; // cache for whole color gradient objects\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n var nameTree = {};\n nameTree.JavaScript = new PDFDictionary({ Names: [\n new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))\n ] });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n\n var info = self.attach(new PDFDictionary({\n Producer : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\"), true), // XXX: kendo.version?\n Title : new PDFString(getOption(\"title\", \"\"), true),\n Author : new PDFString(getOption(\"author\", \"\"), true),\n Subject : new PDFString(getOption(\"subject\", \"\"), true),\n Keywords : new PDFString(getOption(\"keywords\", \"\"), true),\n Creator : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\"), true),\n CreationDate : getOption(\"date\", new Date())\n }));\n\n self.addPage = function(options) {\n var paperOptions = getPaperOptions(function(name, defval){\n return (options && options[name] != null) ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents : self.attach(content),\n Parent : pageTree,\n MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n\n // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top);\n // XXX: clip to right/bottom margin. Make this optional?\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function() {\n var i;\n /// file header\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n /// file body\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n\n /// cross-reference table\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n out(NL);\n\n /// trailer\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n\n /// end\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n\n return out.stream().offset(0);\n };\n\n self.loadFonts = loadFonts;\n self.loadImages = loadImages;\n};\n\nPDFDocument.prototype.getFont = function getFont (url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n};\n\nPDFDocument.prototype.getPattern = function getPattern (fill, page, drawPattern) {\n var pattern = this.PATTERNS[fill.id];\n if (!pattern) {\n pattern = this.attach(new PDFPattern(fill, page, drawPattern));\n this.PATTERNS[fill.id] = pattern;\n }\n return pattern;\n};\n\nPDFDocument.prototype.getImage = function getImage (url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n if (img === \"ERROR\") {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n};\n\nPDFDocument.prototype.getOpacityGS = function getOpacityGS (opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n cache[id] = gs;\n }\n return gs;\n};\n\nPDFDocument.prototype.dict = function dict (props) {\n return new PDFDictionary(props);\n};\n\nPDFDocument.prototype.name = function name (str) {\n return _(str);\n};\n\nPDFDocument.prototype.stream = function stream (props, content) {\n return new PDFStream(content, props);\n};\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n if (a.length > 0) {\n out.withIndent(function(){\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n });\n //out.indent();\n }\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\",\n zeropad(date.getUTCFullYear(), 4),\n zeropad(date.getUTCMonth() + 1, 2),\n zeropad(date.getUTCDate(), 2),\n zeropad(date.getUTCHours(), 2),\n zeropad(date.getUTCMinutes(), 2),\n zeropad(date.getUTCSeconds(), 2),\n \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nvar PDFValue = function PDFValue () {};\n\nPDFValue.prototype.beforeRender = function beforeRender () {};\n\nvar PDFString = (function (PDFValue) {\n function PDFString(value, utf16be) {\n PDFValue.call(this);\n this.value = value;\n this.utf16be = Boolean(utf16be);\n }\n\n if ( PDFValue ) PDFString.__proto__ = PDFValue;\n PDFString.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFString.prototype.constructor = PDFString;\n\n PDFString.prototype.render = function render (out) {\n var txt = this.value;\n if (this.utf16be) {\n txt = BOM + encodeUTF16BE(txt);\n txt = txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n out(\"(\", txt, \")\");\n } else {\n // out.writeString truncates charcodes to 8 bits and\n // 0x128 & 0xFF is 40, the code for open paren.\n // therefore we need to do the chopping here to make\n // sure we backslash all cases.\n var data = [ 40 ]; // open PDF string '('\n for (var i = 0; i < txt.length; ++i) {\n var code = txt.charCodeAt(i) & 0xFF;\n if (code == 40 || code == 41 || code == 92) {\n // backslash before (, ) and \\\n data.push(92);\n }\n data.push(code);\n }\n data.push(41); // ')' close PDF string\n out.writeData(data);\n }\n };\n\n PDFString.prototype.toString = function toString () {\n return this.value;\n };\n\n return PDFString;\n}(PDFValue));\n\nvar PDFHexString = (function (PDFString) {\n function PDFHexString(value) {\n PDFString.call(this, value);\n this.value = value;\n }\n\n if ( PDFString ) PDFHexString.__proto__ = PDFString;\n PDFHexString.prototype = Object.create( PDFString && PDFString.prototype );\n PDFHexString.prototype.constructor = PDFHexString;\n\n PDFHexString.prototype.render = function render (out) {\n var this$1 = this;\n\n out(\"<\");\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n };\n\n return PDFHexString;\n}(PDFString));\n\n/// names\nvar PDFName = (function (PDFValue) {\n function PDFName(name) {\n PDFValue.call(this);\n this.name = name;\n }\n\n if ( PDFValue ) PDFName.__proto__ = PDFValue;\n PDFName.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFName.prototype.constructor = PDFName;\n\n PDFName.get = function get (name) {\n return _(name);\n };\n\n PDFName.prototype.render = function render (out) {\n out(\"/\" + this.escape());\n };\n\n PDFName.prototype.escape = function escape () {\n return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n };\n\n PDFName.prototype.toString = function toString () {\n return this.name;\n };\n\n return PDFName;\n}(PDFValue));\n\nfunction _(name) {\n return new PDFName(name);\n}\n\n/// dictionary\n\nvar PDFDictionary = (function (PDFValue) {\n function PDFDictionary(props) {\n PDFValue.call(this);\n this.props = props;\n }\n\n if ( PDFValue ) PDFDictionary.__proto__ = PDFValue;\n PDFDictionary.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFDictionary.prototype.constructor = PDFDictionary;\n\n PDFDictionary.prototype.render = function render (out) {\n var props = this.props, empty = true;\n out(\"<<\");\n out.withIndent(function(){\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out(\">>\");\n };\n\n return PDFDictionary;\n}(PDFValue));\n\n/// streams\n\nvar PDFStream = (function (PDFValue) {\n function PDFStream(data, props, compress) {\n PDFValue.call(this);\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }\n\n if ( PDFValue ) PDFStream.__proto__ = PDFValue;\n PDFStream.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFStream.prototype.constructor = PDFStream;\n\n PDFStream.prototype.render = function render (out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [ props.Filter ];\n }\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n };\n\n return PDFStream;\n}(PDFValue));\n\n/// catalog\n\nvar PDFCatalog = (function (PDFDictionary) {\n function PDFCatalog() {\n PDFDictionary.call(this, {\n Type: _(\"Catalog\")\n });\n }\n\n if ( PDFDictionary ) PDFCatalog.__proto__ = PDFDictionary;\n PDFCatalog.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFCatalog.prototype.constructor = PDFCatalog;\n\n PDFCatalog.prototype.setPages = function setPages (pagesObj) {\n this.props.Pages = pagesObj;\n };\n\n return PDFCatalog;\n}(PDFDictionary));\n\n/// page tree\n\nvar PDFPageTree = (function (PDFDictionary) {\n function PDFPageTree() {\n PDFDictionary.call(this, {\n Type : _(\"Pages\"),\n Kids : [],\n Count : 0\n });\n }\n\n if ( PDFDictionary ) PDFPageTree.__proto__ = PDFDictionary;\n PDFPageTree.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFPageTree.prototype.constructor = PDFPageTree;\n\n PDFPageTree.prototype.addPage = function addPage (pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n };\n\n return PDFPageTree;\n}(PDFDictionary));\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nvar PDFJpegImage = function PDFJpegImage(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : bitsPerComponent,\n Filter : _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n break;\n }\n\n this.asStream = function() {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n};\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nvar PDFRawImage = function PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function(pdf) {\n var mask = new PDFStream(alpha, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceRGB\"),\n SMask : pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n};\n\nvar PDFPattern = (function (PDFDictionary) {\n function PDFPattern(fill, curPage, drawPattern) {\n var ref = fill.size();\n var width = ref.width;\n var height = ref.height;\n var page = new PDFPage(curPage._pdf, {});\n page._content = new PDFStream(makeOutput(), null, true);\n\n drawPattern(fill, page, {});\n\n curPage._xResources = Object.assign(curPage._xResources, page._xResources);\n curPage._fontResources = Object.assign(curPage._fontResources, page._fontResources);\n curPage._gsResources = Object.assign(curPage._gsResources, page._gsResources);\n\n PDFDictionary.call(this, {\n Type: _(\"Pattern\"),\n PatternType: 1,\n PaintType: 1,\n TilingType: 1,\n BBox: [0 , 0, width, height],\n XStep: width,\n YStep: height,\n Matrix: [1, 0, 0, -1, 0, height],\n Resources: {\n ExtGState: new PDFDictionary(page._gsResources),\n XObject: new PDFDictionary(page._xResources),\n Font: new PDFDictionary(page._fontResources)\n }\n });\n this._resourceName = _(\"P\" + (++PATTERN_COUNTER));\n this.data = page._content.data;\n this.compress = true;\n }\n\n if ( PDFDictionary ) PDFPattern.__proto__ = PDFDictionary;\n PDFPattern.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFPattern.prototype.constructor = PDFPattern;\n\n PDFPattern.prototype.render = function render (out) {\n PDFStream.prototype.render.call(this, out);\n };\n\n return PDFPattern;\n}(PDFDictionary));\n\n/// standard fonts\n\nvar PDFStandardFont = (function (PDFDictionary) {\n function PDFStandardFont(name){\n PDFDictionary.call(this, {\n Type : _(\"Font\"),\n Subtype : _(\"Type1\"),\n BaseFont : _(name)\n });\n\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n }\n\n if ( PDFDictionary ) PDFStandardFont.__proto__ = PDFDictionary;\n PDFStandardFont.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFStandardFont.prototype.constructor = PDFStandardFont;\n\n PDFStandardFont.prototype.encodeText = function encodeText (str) {\n return new PDFString(String(str));\n };\n\n return PDFStandardFont;\n}(PDFDictionary));\n\n/// TTF fonts\n\nvar PDFFont = (function (PDFDictionary) {\n function PDFFont(pdf, font, props){\n PDFDictionary.call(this, {});\n\n props = this.props;\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n var head = font.head;\n\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n\n this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n (this.isSerif ? 1 << 1 : 0) |\n (this.isScript ? 1 << 3 : 0) |\n (this.italicAngle !== 0 ? 1 << 6 : 0) |\n (1 << 5));\n }\n\n if ( PDFDictionary ) PDFFont.__proto__ = PDFDictionary;\n PDFFont.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFFont.prototype.constructor = PDFFont;\n\n PDFFont.prototype.encodeText = function encodeText (text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n };\n\n PDFFont.prototype.getTextWidth = function getTextWidth (fontSize, text) {\n var this$1 = this;\n\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this$1._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n };\n\n PDFFont.prototype.beforeRender = function beforeRender () {\n var self = this;\n var sub = self._sub;\n\n // write the TTF data\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type : _(\"FontDescriptor\"),\n FontName : _(self._sub.psName),\n FontBBox : self.bbox,\n Flags : self.flags,\n StemV : self.stemV,\n ItalicAngle : self.italicAngle,\n Ascent : self.ascent,\n Descent : self.descent,\n CapHeight : self.capHeight,\n XHeight : self.xHeight,\n FontFile2 : self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk){\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar);\n\n // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry : new PDFString(\"Adobe\"),\n Ordering : new PDFString(\"Identity\"),\n Supplement : 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n };\n\n PDFFont.prototype._makeCidToGidMap = function _makeCidToGidMap () {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n };\n\n return PDFFont;\n}(PDFDictionary));\n\nvar PDFToUnicodeCmap = (function (PDFValue) {\n function PDFToUnicodeCmap(firstChar, lastChar, map){\n PDFValue.call(this);\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }\n\n if ( PDFValue ) PDFToUnicodeCmap.__proto__ = PDFValue;\n PDFToUnicodeCmap.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFToUnicodeCmap.prototype.constructor = PDFToUnicodeCmap;\n\n PDFToUnicodeCmap.prototype.render = function render (out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function(){\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([ unicode ]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n };\n\n return PDFToUnicodeCmap;\n}(PDFValue));\n\n/// gradients\n\nfunction makeHash(a) {\n return a.map(function(x){\n return isArray(x) ? makeHash(x)\n : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1, 0, 1, 0, 1 ],\n N: 1,\n C0: [ r1 , g1 , b1 ],\n C1: [ r2 , g2 , b2 ]\n }));\n }\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([ a1, a2 ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1 ],\n N: 1,\n C0: [ a1 ],\n C1: [ a2 ]\n }));\n }\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(\n pdf,\n prevColor.r, prevColor.g, prevColor.b,\n curColor.r, curColor.g, curColor.b\n ));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(\n pdf, prevColor.a, curColor.a\n ));\n }\n }\n offsets.pop();\n return {\n hasAlpha : hasAlpha,\n colors : assemble(colors),\n opacities : hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [ 0, 1 ],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n Function: funcs,\n Extend: [ true, true ]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: (box ? [\n box.left, box.top + box.height, box.left + box.width, box.top\n ] : [ 0, 1, 1, 0 ]),\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: { CA: 1, ca: 1 }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [ true, true ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x , gradient.start.y , gradient.start.r,\n gradient.end.x , gradient.end.y , gradient.end.r\n ] : [\n gradient.start.x , gradient.start.y,\n gradient.end.x , gradient.end.y\n ];\n var shading = cacheColorGradient(\n pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n );\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n ) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n}\n\n/// page object\n\nvar PDFPage = (function (PDFDictionary) {\n function PDFPage(pdf, props){\n PDFDictionary.call(this, props);\n\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n this._annotations = [];\n\n this._font = null;\n this._fontSize = null;\n\n this._contextStack = [];\n\n props = this.props;\n props.Type = _(\"Page\");\n props.ProcSet = [\n _(\"PDF\"),\n _(\"Text\"),\n _(\"ImageB\"),\n _(\"ImageC\"),\n _(\"ImageI\")\n ];\n props.Resources = new PDFDictionary({\n Font : new PDFDictionary(this._fontResources),\n ExtGState : new PDFDictionary(this._gsResources),\n XObject : new PDFDictionary(this._xResources),\n Pattern : new PDFDictionary(this._patResources),\n Shading : new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }\n\n if ( PDFDictionary ) PDFPage.__proto__ = PDFDictionary;\n PDFPage.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFPage.prototype.constructor = PDFPage;\n\n PDFPage.prototype._out = function _out () {\n this._content.data.apply(null, arguments);\n };\n\n PDFPage.prototype.transform = function transform (a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n this._out(NL);\n }\n };\n\n PDFPage.prototype.translate = function translate (dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n };\n\n PDFPage.prototype.scale = function scale (sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n };\n\n PDFPage.prototype.rotate = function rotate (angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n };\n\n PDFPage.prototype.beginText = function beginText () {\n this._textMode = true;\n this._out(\"BT\", NL);\n };\n\n PDFPage.prototype.endText = function endText () {\n this._textMode = false;\n this._out(\"ET\", NL);\n };\n\n PDFPage.prototype._requireTextMode = function _requireTextMode () {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n };\n\n PDFPage.prototype._requireFont = function _requireFont () {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n };\n\n PDFPage.prototype.setFont = function setFont (font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n };\n\n PDFPage.prototype.setTextLeading = function setTextLeading (size) {\n this._requireTextMode();\n this._out(size, \" TL\", NL);\n };\n\n PDFPage.prototype.setTextRenderingMode = function setTextRenderingMode (mode) {\n this._requireTextMode();\n this._out(mode, \" Tr\", NL);\n };\n\n PDFPage.prototype.showText = function showText (text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, \" Tz \");\n }\n this._out(this._font.encodeText(text), \" Tj\", NL);\n };\n\n PDFPage.prototype.showTextNL = function showTextNL (text) {\n this._requireFont();\n this._out(this._font.encodeText(text), \" '\", NL);\n };\n\n PDFPage.prototype.addLink = function addLink (uri, box) {\n var ll = this._toPage({ x: box.left, y: box.bottom });\n var ur = this._toPage({ x: box.right, y: box.top });\n this._annotations.push(new PDFDictionary({\n Type : _(\"Annot\"),\n Subtype : _(\"Link\"),\n Rect : [ ll.x, ll.y, ur.x, ur.y ],\n Border : [ 0, 0, 0 ],\n A : new PDFDictionary({\n Type : _(\"Action\"),\n S : _(\"URI\"),\n URI : new PDFString(uri)\n })\n }));\n };\n\n PDFPage.prototype.setStrokeColor = function setStrokeColor (r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n };\n\n PDFPage.prototype.setOpacity = function setOpacity (opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n };\n\n PDFPage.prototype.setStrokeOpacity = function setStrokeOpacity (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n };\n\n PDFPage.prototype.setFillColor = function setFillColor (r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n };\n\n PDFPage.prototype.pattern = function pattern (fill, box, drawPattern) {\n var pattern = this._pdf.getPattern(fill, this, drawPattern);\n this._patResources[pattern._resourceName] = pattern;\n\n this._out(\"/Pattern cs\", NL);\n this._out(pattern._resourceName, \" scn\", NL);\n\n this.rect(box.left, box.top, box.width, box.height);\n this.fill();\n };\n\n PDFPage.prototype.setFillOpacity = function setFillOpacity (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n };\n\n PDFPage.prototype.gradient = function gradient (gradient$1, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient$1.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient$1, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out(\"/\" + oname + \" gs \");\n }\n this._out(\"/\" + sname + \" sh\", NL);\n this.restore();\n };\n\n PDFPage.prototype.setDashPattern = function setDashPattern (dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n };\n\n PDFPage.prototype.setLineWidth = function setLineWidth (width) {\n this._out(width, \" w\", NL);\n };\n\n PDFPage.prototype.setLineCap = function setLineCap (lineCap) {\n this._out(lineCap, \" J\", NL);\n };\n\n PDFPage.prototype.setLineJoin = function setLineJoin (lineJoin) {\n this._out(lineJoin, \" j\", NL);\n };\n\n PDFPage.prototype.setMitterLimit = function setMitterLimit (mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n };\n\n PDFPage.prototype.save = function save () {\n this._contextStack.push(this._context());\n this._out(\"q\", NL);\n };\n\n PDFPage.prototype.restore = function restore () {\n this._out(\"Q\", NL);\n this._context(this._contextStack.pop());\n };\n\n\n // paths\n PDFPage.prototype.moveTo = function moveTo (x, y) {\n this._out(x, \" \", y, \" m\", NL);\n };\n\n PDFPage.prototype.lineTo = function lineTo (x, y) {\n this._out(x, \" \", y, \" l\", NL);\n };\n\n PDFPage.prototype.bezier = function bezier (x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n };\n\n PDFPage.prototype.bezier1 = function bezier1 (x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n };\n\n PDFPage.prototype.bezier2 = function bezier2 (x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n };\n\n PDFPage.prototype.close = function close () {\n this._out(\"h\", NL);\n };\n\n PDFPage.prototype.rect = function rect (x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n };\n\n PDFPage.prototype.ellipse = function ellipse (x, y, rx, ry) {\n function _X(v) { return x + v; }\n function _Y(v) { return y + v; }\n\n // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n var k = 0.5522847498307936;\n\n this.moveTo(_X(0), _Y(ry));\n this.bezier(\n _X(rx * k) , _Y(ry),\n _X(rx) , _Y(ry * k),\n _X(rx) , _Y(0)\n );\n this.bezier(\n _X(rx) , _Y(-ry * k),\n _X(rx * k) , _Y(-ry),\n _X(0) , _Y(-ry)\n );\n this.bezier(\n _X(-rx * k) , _Y(-ry),\n _X(-rx) , _Y(-ry * k),\n _X(-rx) , _Y(0)\n );\n this.bezier(\n _X(-rx) , _Y(ry * k),\n _X(-rx * k) , _Y(ry),\n _X(0) , _Y(ry)\n );\n };\n\n PDFPage.prototype.circle = function circle (x, y, r) {\n this.ellipse(x, y, r, r);\n };\n\n PDFPage.prototype.stroke = function stroke () {\n this._out(\"S\", NL);\n };\n\n PDFPage.prototype.nop = function nop () {\n this._out(\"n\", NL);\n };\n\n PDFPage.prototype.clip = function clip () {\n this._out(\"W n\", NL);\n };\n\n PDFPage.prototype.clipStroke = function clipStroke () {\n this._out(\"W S\", NL);\n };\n\n PDFPage.prototype.closeStroke = function closeStroke () {\n this._out(\"s\", NL);\n };\n\n PDFPage.prototype.fill = function fill () {\n this._out(\"f\", NL);\n };\n\n PDFPage.prototype.fillStroke = function fillStroke () {\n this._out(\"B\", NL);\n };\n\n PDFPage.prototype.drawImage = function drawImage (url) {\n var img = this._pdf.getImage(url);\n if (img) { // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, \" Do\", NL);\n }\n };\n\n PDFPage.prototype.comment = function comment (txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function(line){\n self._out(\"% \", line, NL);\n });\n };\n\n // internal\n PDFPage.prototype._context = function _context (val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n };\n\n PDFPage.prototype._toPage = function _toPage (p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a*p.x + c*p.y + e,\n y: b*p.x + d*p.y + f\n };\n };\n\n return PDFPage;\n}(PDFDictionary));\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return { fontSize: 12, fontFamily: \"sans-serif\" };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic : m[2] && m[2].toLowerCase() == \"italic\",\n variant : m[4],\n bold : m[6] && /bold|700/i.test(m[6]),\n fontSize : fontSize,\n lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n if (style.italic) {\n name += \"|italic\";\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == \"function\") {\n url = url();\n }\n if (!url) {\n url = \"Times-Roman\";\n }\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\" : \"Times-Roman\",\n \"serif|bold\" : \"Times-Bold\",\n \"serif|italic\" : \"Times-Italic\",\n \"serif|bold|italic\" : \"Times-BoldItalic\",\n \"sans-serif\" : \"Helvetica\",\n \"sans-serif|bold\" : \"Helvetica-Bold\",\n \"sans-serif|italic\" : \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\" : \"Helvetica-BoldOblique\",\n \"monospace\" : \"Courier\",\n \"monospace|bold\" : \"Courier-Bold\",\n \"monospace|italic\" : \"Courier-Oblique\",\n \"monospace|bold|italic\" : \"Courier-BoldOblique\",\n \"zapfdingbats\" : \"ZapfDingbats\",\n \"zapfdingbats|bold\" : \"ZapfDingbats\",\n \"zapfdingbats|italic\" : \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function() {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + \"|bold\"] = function() {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n FONT_MAPPINGS[alias + \"|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\" , \"monospace\");\nfontAlias(\"Arial\" , \"sans-serif\");\nfontAlias(\"Helvetica\" , \"sans-serif\");\nfontAlias(\"Verdana\" , \"sans-serif\");\nfontAlias(\"Tahoma\" , \"sans-serif\");\nfontAlias(\"Georgia\" , \"sans-serif\");\nfontAlias(\"Monaco\" , \"monospace\");\nfontAlias(\"Andale Mono\" , \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n\n // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n switch (name) {\n case \"dejavu sans\" : FONT_MAPPINGS[\"sans-serif\"] = url; break;\n case \"dejavu sans|bold\" : FONT_MAPPINGS[\"sans-serif|bold\"] = url; break;\n case \"dejavu sans|italic\" : FONT_MAPPINGS[\"sans-serif|italic\"] = url; break;\n case \"dejavu sans|bold|italic\" : FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url; break;\n case \"dejavu serif\" : FONT_MAPPINGS[\"serif\"] = url; break;\n case \"dejavu serif|bold\" : FONT_MAPPINGS[\"serif|bold\"] = url; break;\n case \"dejavu serif|italic\" : FONT_MAPPINGS[\"serif|italic\"] = url; break;\n case \"dejavu serif|bold|italic\" : FONT_MAPPINGS[\"serif|bold|italic\"] = url; break;\n case \"dejavu mono\" : FONT_MAPPINGS[\"monospace\"] = url; break;\n case \"dejavu mono|bold\" : FONT_MAPPINGS[\"monospace|bold\"] = url; break;\n case \"dejavu mono|italic\" : FONT_MAPPINGS[\"monospace|italic\"] = url; break;\n case \"dejavu mono|bold|italic\" : FONT_MAPPINGS[\"monospace|bold|italic\"] = url; break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nvar TEXT_RENDERING_MODE = {\n fill : 0,\n stroke : 1,\n fillAndStroke : 2,\n invisible : 3,\n fillAndClip : 4,\n strokeAndClip : 5,\n fillStrokeClip : 6,\n clip : 7\n};\n\nexport {\n PDFDocument as Document,\n BinaryStream,\n defineFont,\n parseFontDef,\n getFontURL,\n loadFonts,\n loadImages,\n getPaperOptions,\n clearImageCache,\n TEXT_RENDERING_MODE\n};\n","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nvar QuadNode = (function (QuadRoot) {\n function QuadNode(rect) {\n QuadRoot.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n if ( QuadRoot ) QuadNode.__proto__ = QuadRoot;\n QuadNode.prototype = Object.create( QuadRoot && QuadRoot.prototype );\n QuadNode.prototype.constructor = QuadNode;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n}(QuadRoot));\n\nexport default QuadNode;","import { Class } from '../common';\n\nvar QuadRoot = (function (Class) {\n function QuadRoot() {\n Class.call(this);\n\n this.shapes = [];\n }\n\n if ( Class ) QuadRoot.__proto__ = Class;\n QuadRoot.prototype = Object.create( Class && Class.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n}(Class));\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nvar ROOT_SIZE = 3000;\nvar LEVEL_STEP = 10000;\nvar MAX_LEVEL = 75;\n\nvar ShapesQuadTree = (function (Class) {\n function ShapesQuadTree() {\n Class.call(this);\n\n this.initRoots();\n }\n\n if ( Class ) ShapesQuadTree.__proto__ = Class;\n ShapesQuadTree.prototype = Object.create( Class && Class.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n}(Class));\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Arc = (function (superclass) {\n function Arc(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryArc();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Arc\";\n };\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n };\n\n Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n return Arc;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Arc;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (superclass) {\n function Circle(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryCircle();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Circle;\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\nimport { PATTERN } from '../core/constants';\n\nvar Element = (function (HasObservers) {\n function Element(options) {\n HasObservers.call(this);\n\n this._initOptions(options);\n }\n\n if ( HasObservers ) Element.__proto__ = HasObservers;\n Element.prototype = Object.create( HasObservers && HasObservers.prototype );\n Element.prototype.constructor = Element;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if ( options === void 0 ) options = {};\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.className = function className (value) {\n if (defined(value)) {\n this.options.set(\"className\", value);\n return this;\n }\n\n return this.options.get(\"className\");\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && (fill.nodeType === PATTERN || !isTransparent(fill.color));\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n}(HasObservers));\n\nexport default Element;\n","import HasObservers from '../core/has-observers';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (HasObservers) {\n function ElementsArray(array) {\n if ( array === void 0 ) array = [];\n\n HasObservers.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n if ( HasObservers ) ElementsArray.__proto__ = HasObservers;\n ElementsArray.prototype = Object.create( HasObservers && HasObservers.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n}(HasObservers));\n\nexport default ElementsArray;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nvar Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n if ( superclass ) Group.__proto__ = superclass;\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n}(traversable(Element, \"children\")));\n\nexport default Group;","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nvar Image = (function (superclass) {\n function Image(src, rect, options) {\n if ( rect === void 0 ) rect = new Rect();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n if ( superclass ) Image.__proto__ = superclass;\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n}(withGeometry(Element, [ \"rect\" ])));\n\nexport default Image;","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nvar DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nvar forEach = function (elements, callback) {\n elements.forEach(callback);\n};\n\nvar forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nvar Layout = (function (Group) {\n function Layout(rect, options) {\n Group.call(this, Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n if ( Group ) Layout.__proto__ = Group;\n Layout.prototype = Object.create( Group && Group.prototype );\n Layout.prototype.constructor = Layout;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n\n Layout.prototype.reflow = function reflow () {\n var this$1 = this;\n\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1._newGroup();\n } else {\n addGroup();\n group = this$1._newGroup();\n this$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n\n Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n\n Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n}(Group));\n\nexport default Layout;","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n function GeometryElementsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\nvar X = \"x\";\nvar Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n}\n\nexport function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n}\n\nexport function numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nvar SPACE = ' ';\nvar printPoints = function (precision) { return function () {\n var points = [], len = arguments.length;\n while ( len-- ) points[ len ] = arguments[ len ];\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n; } };\nvar segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\nexport var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n if ( superclass ) Path.__proto__ = superclass;\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n}(paintable(measurable(Element))));\n\nexport var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n if ( superclass ) MultiPath.__proto__ = superclass;\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n\n var prototypeAccessors$1 = { nodeType: { configurable: true } };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n}(paintable(measurable(Element))));\n\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\n\nvar Rect = (function (superclass) {\n function Rect(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryRect();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n if ( superclass ) Rect.__proto__ = superclass;\n Rect.prototype = Object.create( superclass && superclass.prototype );\n Rect.prototype.constructor = Rect;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Rect.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Rect.prototype._containsPoint = function _containsPoint (point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Rect.prototype, prototypeAccessors );\n\n return Rect;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Rect;\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (superclass) {\n function Text(content, position, options) {\n if ( position === void 0 ) position = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n if ( superclass ) Text.__proto__ = superclass;\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n}(paintable(withPoints(Element, [ \"position\" ]))));\n\nexport default Text;\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nvar instance;\nvar support;\n\nvar hasDocument = function () { return typeof document !== \"undefined\"; };\n\nvar supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\nvar supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\nvar SurfaceFactory = (function (Class) {\n function SurfaceFactory() {\n Class.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n if ( Class ) SurfaceFactory.__proto__ = Class;\n SurfaceFactory.prototype = Object.create( Class && Class.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n var staticAccessors = { support: { configurable: true },current: { configurable: true } };\n\n staticAccessors.support.get = function () {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n}(Class));\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nvar Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var staticAccessors = { support: { configurable: true } };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar ClipNode = (function (Node) {\n function ClipNode(srcElement) {\n Node.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n if ( Node ) ClipNode.__proto__ = Node;\n ClipNode.prototype = Object.create( Node && Node.prototype );\n ClipNode.prototype.constructor = ClipNode;\n\n ClipNode.prototype.renderClipRule = function renderClipRule () {\n return renderAttr(\"clip-rule\", \"evenodd\");\n };\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n}(Node));\n\nexport default ClipNode;","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\nvar POINT_DIGITS = 3;\n\nexport { SVG_NS, NONE, POINT_DIGITS };","import Node from './node';\n\nexport var PatternNode = (function (Node) {\n function PatternNode(pattern) {\n Node.call(this, pattern);\n\n this.id = pattern.id;\n this.load(pattern.children);\n }\n\n if ( Node ) PatternNode.__proto__ = Node;\n PatternNode.prototype = Object.create( Node && Node.prototype );\n PatternNode.prototype.constructor = PatternNode;\n\n PatternNode.prototype.template = function template () {\n var width = this.srcElement.size().getWidth();\n var height = this.srcElement.size().getHeight();\n\n return \"\" +\n \"\" + (this.renderChildren()) +\n \"\";\n };\n\n return PatternNode;\n}(Node));\n","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport { PatternNode } from './pattern-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\nimport { PATTERN } from '../core/constants';\n\nvar DefinitionNode = (function (Node) {\n function DefinitionNode() {\n Node.call(this);\n this.definitionMap = {};\n }\n\n if ( Node ) DefinitionNode.__proto__ = Node;\n DefinitionNode.prototype = Object.create( Node && Node.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n } else if (item.nodeType === PATTERN) {\n nodeType = PatternNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n}(Node));\n\nexport default DefinitionNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nvar GradientNode = (function (Node) {\n function GradientNode(srcElement) {\n Node.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n if ( Node ) GradientNode.__proto__ = Node;\n GradientNode.prototype = Object.create( Node && Node.prototype );\n GradientNode.prototype.constructor = GradientNode;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n}(Node));\n\nexport default GradientNode;","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GradientStopNode = (function (Node) {\n function GradientStopNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GradientStopNode.__proto__ = Node;\n GradientStopNode.prototype = Object.create( Node && Node.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n}(Node));\n\nexport default GradientStopNode;","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GroupNode = (function (Node) {\n function GroupNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GroupNode.__proto__ = Node;\n GroupNode.prototype = Object.create( Node && Node.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"transform\") {\n this.transformChange(value);\n }\n\n this.accessibilityOptionsChange(e);\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n}(Node));\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import GradientNode from './gradient-node';\n\nvar LinearGradientNode = (function (GradientNode) {\n function LinearGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) LinearGradientNode.__proto__ = GradientNode;\n LinearGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n}(GradientNode));\n\nexport default LinearGradientNode;","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","var NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support, htmlEncode } from '../common';\nimport { defined } from '../util';\nimport { PATTERN } from '../core/constants';\n\nvar TRANSFORM = \"transform\";\nvar DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\" || value.nodeType === PATTERN));\n}\n\nfunction baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nvar Node = (function (BaseNode) {\n function Node(srcElement, options) {\n BaseNode.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.accessibilityOptionsChange = function accessibilityOptionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n\n if (field === \"role\") {\n if (value) {\n this.attr(\"role\", value);\n } else {\n this.removeAttr(\"role\");\n }\n } else if (field === \"ariaLabel\") {\n if (value) {\n this.attr(\"aria-label\", htmlEncode(value));\n } else {\n this.removeAttr(\"aria-label\");\n }\n } else if (field === \"ariaRoleDescription\") {\n if (value) {\n this.attr(\"aria-roledescription\", htmlEncode(value));\n } else {\n this.removeAttr(\"aria-roledescription\");\n }\n } else if (field === \"ariaChecked\") {\n if (defined(value)) {\n this.attr(\"aria-checked\", value);\n } else {\n this.removeAttr(\"aria-checked\");\n }\n } else if (field === \"className\") {\n this.className(value);\n }\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.toggleAttr = function toggleAttr (name, value) {\n if (value) {\n this.attr(name, value);\n } else {\n this.removeAttr(name);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.className = function className (value) {\n var this$1 = this;\n\n if (this.element) {\n (ref = this.element.classList).remove.apply(ref, this.element.classList);\n value.split(\" \").forEach(function (item) {\n this$1.element.classList.add(item);\n });\n }\n var ref;\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.renderClassName = function renderClassName () {\n return renderAttr(\"class\", this.srcElement.options.className);\n };\n\n Node.prototype.renderRole = function renderRole () {\n return renderAttr(\"role\", this.srcElement.options.role);\n };\n\n Node.prototype.renderAriaLabel = function renderAriaLabel () {\n var value = this.srcElement.options.ariaLabel;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-label\", value);\n };\n\n Node.prototype.renderAriaRoleDescription = function renderAriaRoleDescription () {\n var value = this.srcElement.options.ariaRoleDescription;\n if (value) {\n value = htmlEncode(value);\n }\n return renderAttr(\"aria-roledescription\", value);\n };\n\n Node.prototype.renderAriaChecked = function renderAriaChecked () {\n return renderAttr(\"aria-checked\", this.srcElement.options.ariaChecked);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;\n","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT, PATTERN } from '../core/constants';\nimport { NONE, POINT_DIGITS } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nvar ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n this.accessibilityOptionsChange(e);\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if ( width === void 0 ) width = 1;\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== SOLID) ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && (fill.nodeType === \"Gradient\" || fill.nodeType === PATTERN))) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import GradientNode from './gradient-node';\n\nvar RadialGradientNode = (function (GradientNode) {\n function RadialGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) RadialGradientNode.__proto__ = GradientNode;\n RadialGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n}(GradientNode));\n\nexport default RadialGradientNode;","import PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nvar RootNode = (function (Node) {\n function RootNode(options) {\n Node.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n if ( Node ) RootNode.__proto__ = Node;\n RootNode.prototype = Object.create( Node && Node.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n}(Node));\n\nexport default RootNode;","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nvar RTL = 'rtl';\n\nfunction alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"\" + (this._root.render()) + \"\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nvar ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.renderPaintOrder = function renderPaintOrder () {\n var paintOrder = this.srcElement.options.paintOrder;\n return paintOrder ? renderAttr(\"paint-order\", paintOrder) : \"\";\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n}(PathNode));\n\nexport default TextNode;\n","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","import { replaceStyleAttr, restoreStyleAttr, setInnerHTML } from '../../util/element-set-styles-safe';\nimport { SVG_NS } from '../constants';\n\nvar renderSVG = function(container, svg) {\n setInnerHTML(container, svg);\n};\n\nif (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;\n","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n function LRUCache(size) {\n Class.call(this);\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n if ( Class ) LRUCache.__proto__ = Class;\n LRUCache.prototype = Object.create( Class && Class.prototype );\n LRUCache.prototype.constructor = LRUCache;\n\n LRUCache.prototype.put = function put (key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n };\n\n LRUCache.prototype.get = function get (key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n };\n\n return LRUCache;\n}(Class));\n\nexport default LRUCache;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.setProperty(\"position\", \"absolute\", \"important\");\n defaultMeasureBox.style.setProperty(\"top\", \"-4000px\", \"important\");\n defaultMeasureBox.style.setProperty(\"width\", \"auto\", \"important\");\n defaultMeasureBox.style.setProperty(\"height\", \"auto\", \"important\");\n defaultMeasureBox.style.setProperty(\"padding\", \"0\", \"important\");\n defaultMeasureBox.style.setProperty(\"margin\", \"0\", \"important\");\n defaultMeasureBox.style.setProperty(\"border\", \"0\", \"important\");\n defaultMeasureBox.style.setProperty(\"line-height\", \"normal\", \"important\");\n defaultMeasureBox.style.setProperty(\"visibility\", \"hidden\", \"important\");\n defaultMeasureBox.style.setProperty(\"white-space\", \"pre\", \"important\");\n}\n\nvar TextMetrics = (function (Class) {\n function TextMetrics(options) {\n Class.call(this);\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n if ( Class ) TextMetrics.__proto__ = Class;\n TextMetrics.prototype = Object.create( Class && Class.prototype );\n TextMetrics.prototype.constructor = TextMetrics;\n\n TextMetrics.prototype.measure = function measure (text, style, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n };\n\n TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n var marker = document.createElement(\"div\");\n marker.style.display = \"inline-block\";\n marker.style.verticalAlign = \"baseline\";\n marker.style.width = this.options.baselineMarkerSize + \"px\";\n marker.style.height = this.options.baselineMarkerSize + \"px\";\n marker.style.overflow = \"hidden\";\n\n return marker;\n };\n\n return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}\n","export default function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","export default function createPromise() {\n var resolveFn, rejectFn;\n var promise = new Promise(function (resolve, reject) {\n resolveFn = function (data) {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = function (data) {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = function () { return promise._state; };\n\n return promise;\n}\n","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","var defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","export default function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","import Matrix from '../geometry/matrix';\n\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import { parseInlineStyles } from '@progress/kendo-common';\r\n\r\nexport var setStyle = function (element, styleString) {\r\n var styles = parseInlineStyles(styleString);\r\n Object.keys(styles).forEach(function (key) {\r\n element.style[key] = styles[key];\r\n });\r\n};\r\n\r\nvar styleAttr = 'data-style';\r\nexport var replaceStyleAttr = function (html) { return (html || '').replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\r\nexport var restoreStyleAttr = function (container) {\r\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\r\n var styleString = element.getAttribute(styleAttr);\r\n element.removeAttribute(styleAttr);\r\n setStyle(element, styleString);\r\n });\r\n};\r\n\r\nexport var setInnerHTML = function (container, html) {\r\n container.innerHTML = replaceStyleAttr(html);\r\n restoreStyleAttr(container);\r\n};\r\n","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n}","export default function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import { encodeUTF8 } from './encode-utf';\n\nvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","var fromCharCode = String.fromCharCode;\n\nexport var BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n var lead = ((c - 0x10000) >> 10) + 0xD800;\n var trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","export default function eventElement(e) {\n if ( e === void 0 ) e = {};\n\n return e.touch ? e.touch.initialTouch : e.target;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","var now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n}","export default function unbindEvents(element, events) {\n if ( events === void 0 ) events = {};\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","var current = {\n compile: function(template) {\n return template;\n }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nTemplateService.compile = function compile (template) {\n return current.compile(template);\n};\n\nexport default TemplateService;","var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\nvar UNDEFINED = 'undefined';\n\ngetterCache[UNDEFINED] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(typeof index !== UNDEFINED ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function map(array, func) {\n return array.reduce(function (result, el, i) {\n var val = func(el, i);\n if (val != null) {\n result.push(val);\n }\n return result;\n }, []);\n}","import TemplateService from './services/template-service';\nimport getter from './utils/getter';\nimport map from './utils/map';\n\nfunction defaultGroupHeaderTemplate(data) {\n return ((data.title) + \": \" + (data.value));\n}\n\nfunction createArray(length, callback) {\n var result = [];\n\n for (var idx = 0; idx < length; idx++) {\n result.push(callback(idx));\n }\n\n return result;\n}\n\nfunction defaultItemId(item) {\n return item.id;\n}\n\nvar ExcelExporter = function ExcelExporter(options) {\n options.columns = this._trimColumns(options.columns || []);\n\n this.allColumns = map(this._leafColumns(options.columns || []), this._prepareColumn);\n\n this.columns = this._visibleColumns(this.allColumns);\n\n this.options = options;\n this.data = options.data || [];\n this.aggregates = options.aggregates || {};\n this.groups = [].concat(options.groups || []);\n this.hasGroups = this.groups.length > 0;\n this.hierarchy = options.hierarchy;\n this.hasGroupHeaderColumn = this.columns.some(function (column) { return column.groupHeaderColumnTemplate; });\n this.collapsible = this.options.collapsible;\n};\n\nExcelExporter.prototype.workbook = function workbook () {\n var workbook = {\n sheets: [ {\n columns: this._columns(),\n rows: this.hierarchy ? this._hierarchyRows() : this._rows(),\n freezePane: this._freezePane(),\n filter: this._filter()\n } ]\n };\n\n return workbook;\n};\n\nExcelExporter.prototype._trimColumns = function _trimColumns (columns) {\n var this$1 = this;\n\n return columns.filter(function (column) {\n var result = Boolean(column.field);\n\n if (!result && column.columns) {\n result = this$1._trimColumns(column.columns).length > 0;\n }\n\n return result;\n });\n};\n\nExcelExporter.prototype._leafColumns = function _leafColumns (columns) {\n var this$1 = this;\n\n var result = [];\n\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n } else {\n result = result.concat(this$1._leafColumns(columns[idx].columns));\n }\n }\n\n return result;\n};\n\nExcelExporter.prototype._prepareColumn = function _prepareColumn (column) {\n if (!column.field) {\n return null;\n }\n\n var value = function(dataItem) {\n return getter(column.field, true)(dataItem);\n };\n\n var values = null;\n\n if (column.values) {\n values = {};\n\n column.values.forEach(function(item) {\n values[item.value] = item.text;\n });\n\n value = function(dataItem) {\n return values[getter(column.field, true)(dataItem)];\n };\n }\n\n return Object.assign({}, column, {\n value: value,\n values: values,\n groupHeaderTemplate: column.groupHeaderTemplate ? TemplateService.compile(column.groupHeaderTemplate) : defaultGroupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate ? TemplateService.compile(column.groupHeaderColumnTemplate) : null,\n groupFooterTemplate: column.groupFooterTemplate ? TemplateService.compile(column.groupFooterTemplate) : null,\n footerTemplate: column.footerTemplate ? TemplateService.compile(column.footerTemplate) : null\n });\n};\n\nExcelExporter.prototype._filter = function _filter () {\n if (!this.options.filterable) {\n return null;\n }\n\n var depth = this._depth();\n\n return {\n from: depth,\n to: depth + this.columns.length - 1\n };\n};\n\nExcelExporter.prototype._createPaddingCells = function _createPaddingCells (length) {\n var this$1 = this;\n\n return createArray(length, function () { return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, this$1.options.paddingCellOptions); });\n};\n\nExcelExporter.prototype._dataRow = function _dataRow (dataItem, level, depth) {\n var this$1 = this;\n\n var cells = this._createPaddingCells(level);\n\n // grouped\n if (this.hasGroups && depth && dataItem.items) {\n cells = cells.concat(this._groupHeaderCells(dataItem, level, depth));\n var rows = this._dataRows(dataItem.items, level + 1);\n\n rows.unshift({\n type: \"group-header\",\n cells: cells,\n level: this.collapsible ? level : null\n });\n\n return rows.concat(this._footer(dataItem, level));\n }\n\n var dataCells = [];\n\n for (var cellIdx = 0; cellIdx < this.columns.length; cellIdx++) {\n dataCells[cellIdx] = this$1._cell(dataItem, this$1.columns[cellIdx]);\n }\n\n if (this.hierarchy) {\n dataCells[0].colSpan = depth - level + 1;\n }\n\n return [ {\n type: \"data\",\n cells: cells.concat(dataCells),\n level: this.collapsible ? level : null\n } ];\n};\n\nExcelExporter.prototype._groupHeaderCells = function _groupHeaderCells (dataItem, level, depth) {\n var cells = [];\n\n var column = this.allColumns.filter(function(column) {\n return column.field === dataItem.field;\n })[0] || {};\n\n var title = column && column.title ? column.title : dataItem.field;\n var template = column ? column.groupHeaderTemplate || column.groupHeaderColumnTemplate : null;\n var group = Object.assign({\n title: title,\n field: dataItem.field,\n value: column && column.values ? column.values[dataItem.value] : dataItem.value,\n aggregates: dataItem.aggregates,\n items: dataItem.items\n }, dataItem.aggregates[dataItem.field]);\n\n var value = template ? template(group) : (title + \": \" + (dataItem.value));\n\n cells.push(Object.assign({\n value: value,\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: (this.hasGroupHeaderColumn ? 1 : this.columns.length) + depth - level\n }, column.groupHeaderCellOptions));\n\n if (this.hasGroupHeaderColumn) {\n this.columns.forEach(function(column, index) {\n if (index > 0) {\n cells.push(Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupHeaderColumnTemplate ?\n column.groupHeaderColumnTemplate(Object.assign({ group: group }, group, dataItem.aggregates[column.field])) :\n undefined\n }, column.groupHeaderCellOptions));\n }\n });\n }\n\n return cells;\n};\n\nExcelExporter.prototype._dataRows = function _dataRows (dataItems, level) {\n var this$1 = this;\n\n var depth = this._depth();\n var rows = [];\n\n for (var idx = 0; idx < dataItems.length; idx++) {\n rows.push.apply(rows, this$1._dataRow(dataItems[idx], level, depth));\n }\n\n return rows;\n};\n\nExcelExporter.prototype._hierarchyRows = function _hierarchyRows () {\n var this$1 = this;\n\n var depth = this._depth();\n var data = this.data;\n var itemLevel = this.hierarchy.itemLevel;\n var itemId = this.hierarchy.itemId || defaultItemId;\n var hasFooter = this._hasFooterTemplate();\n var rows = [];\n var parents = [];\n var previousLevel = 0;\n var previousItemId;\n\n if (!hasFooter) {\n this.collapsible = false;\n }\n\n for (var idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var level = itemLevel(item, idx);\n\n if (hasFooter) {\n if (level > previousLevel) {\n parents.push({ id: previousItemId, level: previousLevel });\n } else if (level < previousLevel) {\n rows.push.apply(rows, this$1._hierarchyFooterRows(parents, level, depth));\n }\n\n previousLevel = level;\n previousItemId = itemId(item, idx);\n }\n\n rows.push.apply(rows, this$1._dataRow(item, level + 1, depth));\n }\n\n if (hasFooter) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, 0, depth));\n\n var rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n }\n\n this._prependHeaderRows(rows);\n\n return rows;\n};\n\nExcelExporter.prototype._hierarchyFooterRows = function _hierarchyFooterRows (parents, currentLevel, depth) {\n var this$1 = this;\n\n var rows = [];\n while (parents.length && parents[parents.length - 1].level >= currentLevel) {\n var parent = parents.pop();\n rows.push(this$1._hierarchyFooter(this$1.aggregates[parent.id], parent.level + 1, depth));\n }\n\n return rows;\n};\n\nExcelExporter.prototype._hasFooterTemplate = function _hasFooterTemplate () {\n var columns = this.columns;\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].footerTemplate) {\n return true;\n }\n }\n};\n\nExcelExporter.prototype._hierarchyFooter = function _hierarchyFooter (aggregates, level, depth) {\n var cells = this.columns.map(function(column, index) {\n var colSpan = index ? 1 : depth - level + 1;\n if (column.footerTemplate) {\n var fieldAggregates = (aggregates || {})[column.field];\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan,\n value: column.footerTemplate(Object.assign({ aggregates: aggregates }, fieldAggregates))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan\n }, column.footerCellOptions);\n });\n\n return {\n type: \"footer\",\n cells: this._createPaddingCells(level).concat(cells),\n level: this.collapsible ? level : null\n };\n};\n\nExcelExporter.prototype._footer = function _footer (dataItem, level) {\n var rows = [];\n var footer = this.columns.some(function (column) { return column.groupFooterTemplate; });\n\n var templateData, group;\n if (footer) {\n group = {\n group: { items: dataItem.items,\n field: dataItem.field,\n value: dataItem.value }\n };\n templateData = {};\n Object.keys(dataItem.aggregates).forEach(function (key) {\n templateData[key] = Object.assign({}, dataItem.aggregates[key], group);\n });\n }\n\n var cells = this.columns.map(function (column) {\n if (column.groupFooterTemplate) {\n var data = Object.assign({}, templateData, dataItem.aggregates[column.field], group);\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupFooterTemplate(data)\n }, column.groupFooterCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.groupFooterCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"group-footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells),\n level: this.collapsible ? level : null\n });\n }\n\n return rows;\n};\n\nExcelExporter.prototype._isColumnVisible = function _isColumnVisible (column) {\n return this._visibleColumns([ column ]).length > 0 && (column.field || column.columns);\n};\n\nExcelExporter.prototype._visibleColumns = function _visibleColumns (columns) {\n var this$1 = this;\n\n return columns.filter(function (column) {\n var exportable = column.exportable;\n if (typeof exportable === 'object') {\n exportable = column.exportable.excel;\n }\n\n var visibleInExport = !column.hidden && exportable !== false;\n var visibleInExportOnly = column.hidden && exportable === true;\n var visible = visibleInExport || visibleInExportOnly;\n if (visible && column.columns) {\n visible = this$1._visibleColumns(column.columns).length > 0;\n }\n return visible;\n });\n};\n\nExcelExporter.prototype._headerRow = function _headerRow (row, groups) {\n var this$1 = this;\n\n var headers = row.cells.map(function(cell) {\n return Object.assign(cell, {\n colSpan: cell.colSpan > 1 ? cell.colSpan : 1,\n rowSpan: row.rowSpan > 1 && !cell.colSpan ? row.rowSpan : 1\n });\n });\n\n if (this.hierarchy && headers[0].firstCell) {\n headers[0].colSpan += this._depth();\n }\n\n return {\n type: \"header\",\n cells: createArray(groups.length, function () { return Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\"\n }, this$1.options.headerPaddingCellOptions); }).concat(headers)\n };\n};\n\nExcelExporter.prototype._prependHeaderRows = function _prependHeaderRows (rows) {\n var this$1 = this;\n\n var groups = this.groups;\n\n var headerRows = [ { rowSpan: 1, cells: [], index: 0 } ];\n\n this._prepareHeaderRows(headerRows, this.options.columns);\n\n for (var idx = headerRows.length - 1; idx >= 0; idx--) {\n rows.unshift(this$1._headerRow(headerRows[idx], groups));\n }\n};\n\nExcelExporter.prototype._prepareHeaderRows = function _prepareHeaderRows (rows, columns, parentCell, parentRow) {\n var this$1 = this;\n\n var row = parentRow || rows[rows.length - 1];\n var childRow = rows[row.index + 1];\n var totalColSpan = 0;\n\n for (var idx = 0; idx < columns.length; idx++) {\n var column = columns[idx];\n if (this$1._isColumnVisible(column)) {\n\n var cell = Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\",\n value: column.title || column.field,\n colSpan: 0,\n firstCell: idx === 0 && (!parentCell || parentCell.firstCell)\n }, column.headerCellOptions);\n row.cells.push(cell);\n\n if (column.columns && column.columns.length) {\n if (!childRow) {\n childRow = { rowSpan: 0, cells: [], index: rows.length };\n rows.push(childRow);\n }\n cell.colSpan = this$1._trimColumns(this$1._visibleColumns(column.columns)).length;\n this$1._prepareHeaderRows(rows, column.columns, cell, childRow);\n totalColSpan += cell.colSpan - 1;\n row.rowSpan = rows.length - row.index;\n }\n }\n }\n\n if (parentCell) {\n parentCell.colSpan += totalColSpan;\n }\n};\n\nExcelExporter.prototype._rows = function _rows () {\n var this$1 = this;\n\n var rows = this._dataRows(this.data, 0);\n\n if (this.columns.length) {\n this._prependHeaderRows(rows);\n var footer = false;\n\n var cells = this.columns.map(function (column) {\n if (column.footerTemplate) {\n footer = true;\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.footerTemplate(Object.assign({}, this$1.aggregates, this$1.aggregates[column.field]))\n }, column.footerCellOptions);\n }\n\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.footerCellOptions);\n });\n\n if (footer) {\n rows.push({\n type: \"footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells)\n });\n }\n }\n\n return rows;\n};\n\nExcelExporter.prototype._headerDepth = function _headerDepth (columns) {\n var this$1 = this;\n\n var result = 1;\n var max = 0;\n\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n var temp = this$1._headerDepth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n};\n\nExcelExporter.prototype._freezePane = function _freezePane () {\n var columns = this._visibleColumns(this.options.columns || []);\n\n var colSplit = this._visibleColumns(this._trimColumns(this._leafColumns(columns.filter(function(column) {\n return column.locked;\n })))).length;\n\n return {\n rowSplit: this._headerDepth(columns),\n colSplit: colSplit ? colSplit + this.groups.length : 0\n };\n};\n\nExcelExporter.prototype._cell = function _cell (dataItem, column) {\n return Object.assign({\n value: column.value(dataItem)\n }, column.cellOptions);\n};\n\nExcelExporter.prototype._depth = function _depth () {\n var depth = 0;\n\n if (this.hierarchy) {\n depth = this.hierarchy.depth;\n } else {\n depth = this.groups.length;\n }\n\n return depth;\n};\n\nExcelExporter.prototype._columns = function _columns () {\n var depth = this._depth();\n var columns = createArray(depth, function () { return ({ width: 20 }); });\n\n return columns.concat(this.columns.map(function(column) {\n return {\n width: parseInt(column.width, 10),\n autoWidth: column.width ? false : true\n };\n }));\n};\n\nexport default ExcelExporter;\n","var current = {\n toString: function (value) { return value; }\n};\n\nvar IntlService = function IntlService () {};\n\nIntlService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nIntlService.toString = function toString (value, format) {\n return current.toString(value, format);\n};\n\nexport default IntlService;","// date packing utilities from Kendo Spreadsheet\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\nfunction dateToJulianDays(y, m, d) {\n return ((1461 * (y + 4800 + ((m - 13) / 12 | 0))) / 4 | 0) +\n ((367 * (m - 1 - 12 * ((m - 13) / 12 | 0))) / 12 | 0) -\n ((3 * (((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n d - 32075;\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nvar BASE_DATE = dateToJulianDays(1900, 0, -1);\n\nfunction packDate(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n}\n\nfunction packTime(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\n\nexport default function dateToSerial(date) {\n var time = packTime(date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds());\n var serial = packDate(date.getFullYear(),\n date.getMonth(),\n date.getDate());\n return serial < 0 ? serial - 1 + time : serial + time;\n}\n","import map from './utils/map';\nimport createZip from './utils/create-zip';\nimport IntlService from './services/intl-service';\nimport dateToSerial from './utils/time';\n\nvar MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\nvar DATA_URL_PREFIX = \"data:\" + MIME_TYPE + \";base64,\";\nvar DATA_URL_OPTIONS = { compression: \"DEFLATE\", type: \"base64\" };\nvar BLOB_OPTIONS = { compression: \"DEFLATE\", type: \"blob\" };\nvar ARRAYBUFFER_OPTIONS = { compression: \"DEFLATE\", type: \"arraybuffer\" };\n\n/* eslint-disable key-spacing, no-confusing-arrow, no-constant-condition, indent, no-nested-ternary, consistent-return */\n\nfunction toDataURI(content) {\n return DATA_URL_PREFIX + content;\n}\n\nfunction indexOf(thing, array) {\n return array.indexOf(thing);\n}\n\nvar parseJSON = JSON.parse.bind(JSON);\n\nfunction ESC(val) {\n return String(val)\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/\\'/g, \"'\");\n}\n\nfunction repeat(count, func) {\n var str = \"\";\n for (var i = 0; i < count; ++i) {\n str += func(i);\n }\n return str;\n}\n\nfunction foreach(arr, func) {\n var str = \"\";\n if (arr != null) {\n if (Array.isArray(arr)) {\n for (var i = 0; i < arr.length; ++i) {\n str += func(arr[i], i);\n }\n } else if (typeof arr == \"object\") {\n Object.keys(arr).forEach(function (key, i) {\n str += func(arr[key], key, i);\n });\n }\n }\n return str;\n}\n\nvar XMLHEAD = '\\r';\n\nvar RELS = XMLHEAD + \"\\n \\n \\n \\n \\n \";\n\nvar CORE = function (ref) {\n var creator = ref.creator;\n var lastModifiedBy = ref.lastModifiedBy;\n var created = ref.created;\n var modified = ref.modified;\n\n return (XMLHEAD + \"\\n \\n \" + (ESC(creator)) + \"\\n \" + (ESC(lastModifiedBy)) + \"\\n \" + (ESC(created)) + \"\\n \" + (ESC(modified)) + \"\\n\");\n};\n\nvar APP = function (ref) {\n var sheets = ref.sheets;\n\n return (XMLHEAD + \"\\n\\n Microsoft Excel\\n 0\\n false\\n \\n \\n \\n Worksheets\\n \\n \\n \" + (sheets.length) + \"\\n \\n \\n \\n \\n \" + (foreach(sheets, function (sheet, i) { return sheet.options.title\n ? (\"\" + (ESC(sheet.options.title)) + \"\")\n : (\"Sheet\" + (i + 1) + \"\"); }\n )) + \"\\n \\n false\\n false\\n false\\n 14.0300\\n\");\n};\n\nvar CONTENT_TYPES = function (ref) {\n var sheetCount = ref.sheetCount;\n var commentFiles = ref.commentFiles;\n var drawingFiles = ref.drawingFiles;\n\n return (XMLHEAD + \"\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \" + (repeat(sheetCount, function (idx) { return (\"\"); })) + \"\\n \" + (foreach(commentFiles, function (filename) { return (\"\"); })) + \"\\n \" + (foreach(drawingFiles, function (filename) { return (\"\"); })) + \"\\n \\n \\n\");\n};\n\nvar WORKBOOK = function (ref) {\n var sheets = ref.sheets;\n var filterNames = ref.filterNames;\n var userNames = ref.userNames;\n\n return (XMLHEAD + \"\\n\\n \\n \\n \\n \\n \\n \\n \" + (foreach(sheets, function (ref, i) {\n var options = ref.options;\n\n var name = options.name || options.title || (\"Sheet\" + (i + 1));\n var state = options.state || 'visible';\n return (\"\");\n })) + \"\\n \\n \" + (filterNames.length || userNames.length ? (\"\\n \\n \" + (foreach(filterNames, function (f) { return (\"\\n \"); })) + \"\\n \" + (foreach(userNames, function (f) { return (\"\\n \"); })) + \"\\n \") : '') + \"\\n \\n\");\n};\n\nvar WORKSHEET = function (ref$1) {\n var frozenColumns = ref$1.frozenColumns;\n var frozenRows = ref$1.frozenRows;\n var columns = ref$1.columns;\n var defaults = ref$1.defaults;\n var data = ref$1.data;\n var index = ref$1.index;\n var mergeCells = ref$1.mergeCells;\n var autoFilter = ref$1.autoFilter;\n var filter = ref$1.filter;\n var showGridLines = ref$1.showGridLines;\n var hyperlinks = ref$1.hyperlinks;\n var validations = ref$1.validations;\n var defaultCellStyleId = ref$1.defaultCellStyleId;\n var rtl = ref$1.rtl;\n var legacyDrawing = ref$1.legacyDrawing;\n var drawing = ref$1.drawing;\n var lastRow = ref$1.lastRow;\n var lastCol = ref$1.lastCol;\n var hasDisabledCells = ref$1.hasDisabledCells;\n\n return (XMLHEAD + \"\\n\\n \" + (lastRow && lastCol ? (\"\") : \"\") + \"\\n\\n \\n \\n \" + (frozenRows || frozenColumns ? (\"\\n \") : '') + \"\\n \\n \\n\\n \\n\\n \" + (defaultCellStyleId != null || (columns && columns.length > 0) ? (\"\\n \\n \" + (!columns || !columns.length ? (\"\\n
  • \") : '') + \"\\n \" + (foreach(columns, function (column, ci) {\n var columnIndex = typeof column.index === \"number\" ? column.index + 1 : (ci + 1);\n if (column.width === 0) {\n return (\"\");\n }\n return (\"\");\n })) + \"\\n \") : '') + \"\\n\\n \\n \" + (foreach(data, function (row, ri) {\n var rowIndex = typeof row.index === \"number\" ? row.index + 1 : (ri + 1);\n return (\"\\n \\n \" + (foreach(row.data, function (cell) { return (\"\\n \\n \" + (cell.formula != null ? writeFormula(cell.formula) : '') + \"\\n \" + (cell.value != null ? (\"\" + (ESC(cell.value)) + \"\") : '') + \"\\n \"); })) + \"\\n \\n \");})) + \"\\n \\n\\n \" + (hasDisabledCells ? \"\" : '') + \"\\n\\n \" + (autoFilter ? (\"\")\n : filter ? spreadsheetFilters(filter) : '') + \"\\n\\n \" + (mergeCells.length ? (\"\\n \\n \" + (foreach(mergeCells, function (ref) { return (\"\"); })) + \"\\n \") : '') + \"\\n\\n \" + (validations.length ? (\"\\n \\n \" + (foreach(validations, function (val) { return (\"\\n \\n \" + (val.formula1 ? (\"\" + (ESC(val.formula1)) + \"\") : '') + \"\\n \" + (val.formula2 ? (\"\" + (ESC(val.formula2)) + \"\") : '') + \"\\n \"); })) + \"\\n \") : '') + \"\\n\\n \" + (hyperlinks.length ? (\"\\n \\n \" + (foreach(hyperlinks, function (link) { return (\"\\n \"); })) + \"\\n \") : '') + \"\\n\\n \\n \" + (drawing ? (\"\") : '') + \"\\n \" + (legacyDrawing ? (\"\") : '') + \"\\n\");\n};\n\nvar WORKBOOK_RELS = function (ref) {\n var count = ref.count;\n\n return (XMLHEAD + \"\\n\\n \" + (repeat(count, function (idx) { return (\"\\n \"); })) + \"\\n \\n \\n\");\n};\n\nvar WORKSHEET_RELS = function (ref) {\n var hyperlinks = ref.hyperlinks;\n var comments = ref.comments;\n var sheetIndex = ref.sheetIndex;\n var drawings = ref.drawings;\n\n return (XMLHEAD + \"\\n\\n \" + (foreach(hyperlinks, function (link) { return (\"\\n \"); })) + \"\\n \" + (!comments.length ? '' : (\"\\n \\n \")) + \"\\n \" + (!drawings.length ? '' : (\"\\n \")) + \"\\n\");\n};\n\nvar COMMENTS_XML = function (ref) {\n var comments = ref.comments;\n\n return (XMLHEAD + \"\\n\\n \\n \\n \\n \\n \" + (foreach(comments, function (comment) { return (\"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \" + (ESC(comment.text)) + \"\\n \\n \\n \"); })) + \"\\n \\n\");\n};\n\nvar LEGACY_DRAWING = function (ref) {\n var comments = ref.comments;\n\n return (\"\\n \\n \\n \\n \\n \" + (foreach(comments, function (comment) { return (\"\\n \\n \\n \\n \\n \\n \" + (comment.anchor) + \"\\n False\\n \" + (comment.row) + \"\\n \" + (comment.col) + \"\\n \\n \"); })) + \"\\n\");\n};\n\nvar DRAWINGS_XML = function (drawings) { return (XMLHEAD + \"\\n\\n \" + (foreach(drawings, function (drawing, index) { return (\"\\n \\n \\n \" + (drawing.col) + \"\\n \" + (drawing.colOffset) + \"\\n \" + (drawing.row) + \"\\n \" + (drawing.rowOffset) + \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \"); })) + \"\\n\"); };\n\nvar DRAWINGS_RELS_XML = function (rels) { return (XMLHEAD + \"\\n\\n \" + (foreach(rels, function (rel) { return (\"\\n \"); })) + \"\\n\"); };\n\nvar SHARED_STRINGS = function (ref) {\n var count = ref.count;\n var uniqueCount = ref.uniqueCount;\n var indexes = ref.indexes;\n\n return (XMLHEAD + \"\\n\\n \" + (foreach(Object.keys(indexes), function (index) { return (\"\\n \" + (ESC(index.substring(1))) + \"\"); })) + \"\\n\");\n};\n\nvar STYLES = function (ref) {\n var formats = ref.formats;\n var fonts = ref.fonts;\n var fills = ref.fills;\n var borders = ref.borders;\n var styles = ref.styles;\n\n return (XMLHEAD + \"\\n\\n \\n \" + (foreach(formats, function (format, fi) { return (\"\\n \"); })) + \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \" + (foreach(fonts, function (font) { return (\"\\n \\n \" + (font.bold ? '' : '') + \"\\n \" + (font.italic ? '' : '') + \"\\n \" + (font.underline ? '' : '') + \"\\n \\n \" + (font.color ? (\"\") : '') + \"\\n \" + (font.fontFamily ? (\"\\n \\n \\n \") : \"\\n \\n \\n \\n \") + \"\\n \"); })) + \"\\n \\n \\n \\n \\n \" + (foreach(fills, function (fill) { return (\"\\n \" + (fill.background ? (\"\\n \\n \\n \\n \\n \\n \") : '')); })) + \"\\n \\n \\n \\n \" + (foreach(borders, borderTemplate)) + \"\\n \\n \\n \\n \\n \\n \\n \" + (foreach(styles, function (style) { return (\"\\n \\n \" + (style.textAlign || style.verticalAlign || style.wrap ? (\"\\n \\n \") : '') + \"\\n \" + (style.disabled != null ? (\"\\n \\n \") : '') + \"\\n \\n \"); })) + \"\\n \\n \\n \\n \\n \\n \\n\");\n};\n\nfunction writeFormula(formula) {\n if (typeof formula == \"string\") {\n return (\"\" + (ESC(formula)) + \"\");\n }\n // array formulas\n return (\"\" + (ESC(formula.src)) + \"\");\n}\n\nfunction numChar(colIndex) {\n var letter = Math.floor(colIndex / 26) - 1;\n\n return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n}\n\nfunction ref(rowIndex, colIndex) {\n return numChar(colIndex) + (rowIndex + 1);\n}\n\nfunction $ref(rowIndex, colIndex) {\n return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n}\n\nfunction filterRowIndex(options) {\n var frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n return frozenRows - 1;\n}\n\nfunction toWidth(px) {\n var maximumDigitWidth = 7;\n return (px / maximumDigitWidth) - (Math.floor(128 / maximumDigitWidth) / 256);\n}\n\nfunction toHeight(px) {\n return px * 0.75;\n}\n\nfunction stripFunnyChars(value) {\n return String(value)\n .replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n .replace(/\\r?\\n/g, \"\\r\\n\"); // make sure LF is preceded by CR\n}\n\nvar Worksheet = function Worksheet(options, sharedStrings, styles, borders) {\n this.options = options;\n this._strings = sharedStrings;\n this._styles = styles;\n this._borders = borders;\n this._validations = {};\n this._comments = [];\n this._drawings = options.drawings || [];\n this._hyperlinks = (this.options.hyperlinks || []).map(\n function (link, i) { return Object.assign({}, link, { rId: (\"link\" + i) }); });\n };\n\n Worksheet.prototype.relsToXML = function relsToXML () {\n var hyperlinks = this._hyperlinks;\n var comments = this._comments;\n var drawings = this._drawings;\n\n if (hyperlinks.length || comments.length || drawings.length) {\n return WORKSHEET_RELS({\n hyperlinks : hyperlinks,\n comments : comments,\n sheetIndex : this.options.sheetIndex,\n drawings : drawings\n });\n }\n };\n\n Worksheet.prototype.toXML = function toXML (index) {\n var this$1 = this;\n\n var mergeCells = this.options.mergedCells || [];\n var rows = this.options.rows || [];\n var data = inflate(rows, mergeCells);\n\n this._readCells(data);\n\n var autoFilter = this.options.filter;\n var filter;\n if (autoFilter && (typeof autoFilter.from === \"number\") && (typeof autoFilter.to === \"number\")) {\n // Grid enables auto filter\n autoFilter = {\n from: ref(filterRowIndex(this.options), autoFilter.from),\n to: ref(filterRowIndex(this.options), autoFilter.to)\n };\n } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n // this is probably from the Spreadsheet\n filter = autoFilter;\n autoFilter = null;\n }\n\n var validations = [];\n for (var i in this$1._validations) {\n if (Object.prototype.hasOwnProperty.call(this$1._validations, i)) {\n validations.push(this$1._validations[i]);\n }\n }\n\n var defaultCellStyleId = null;\n var defaultCellStyle = this.options.defaultCellStyle;\n if (this._hasDisabledCells) {\n if (!defaultCellStyle) {\n defaultCellStyle = { disabled: false };\n } else {\n defaultCellStyle = Object.assign({ disabled: false }, defaultCellStyle);\n }\n }\n if (defaultCellStyle) {\n defaultCellStyleId = this._lookupStyle(defaultCellStyle);\n }\n\n var freezePane = this.options.freezePane || {};\n var defaults = this.options.defaults || {};\n var lastRow = this.options.rows ? this._getLastRow() : 1;\n var lastCol = this.options.rows ? this._getLastCol() : 1;\n\n return WORKSHEET({\n frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n frozenRows: this.options.frozenRows || freezePane.rowSplit,\n columns: this.options.columns,\n defaults: defaults,\n data: data,\n index: index,\n mergeCells: mergeCells,\n autoFilter: autoFilter,\n filter: filter,\n showGridLines: this.options.showGridLines,\n hyperlinks: this._hyperlinks,\n validations: validations,\n defaultCellStyleId: defaultCellStyleId,\n rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n legacyDrawing: this._comments.length ? (\"vml\" + (this.options.sheetIndex)) : null,\n drawing: this._drawings.length ? (\"drw\" + (this.options.sheetIndex)) : null,\n lastRow: lastRow,\n lastCol: lastCol,\n hasDisabledCells: this._hasDisabledCells,\n });\n };\n\n Worksheet.prototype.commentsXML = function commentsXML () {\n if (this._comments.length) {\n return COMMENTS_XML({ comments: this._comments });\n }\n };\n\n Worksheet.prototype.drawingsXML = function drawingsXML (images) {\n if (this._drawings.length) {\n var rels = {};\n var main = this._drawings.map(function (drw) {\n var ref = parseRef(drw.topLeftCell);\n var img = rels[drw.image];\n if (!img) {\n img = rels[drw.image] = {\n rId: (\"img\" + (drw.image)),\n target: images[drw.image].target\n };\n }\n return {\n col : ref.col,\n colOffset : pixelsToExcel(drw.offsetX),\n row : ref.row,\n rowOffset : pixelsToExcel(drw.offsetY),\n width : pixelsToExcel(drw.width),\n height : pixelsToExcel(drw.height),\n imageId : img.rId\n };\n });\n return {\n main: DRAWINGS_XML(main),\n rels: DRAWINGS_RELS_XML(rels)\n };\n }\n };\n\n Worksheet.prototype.legacyDrawing = function legacyDrawing () {\n if (this._comments.length) {\n return LEGACY_DRAWING({ comments: this._comments });\n }\n };\n\n Worksheet.prototype._lookupString = function _lookupString (value) {\n var key = \"$\" + value;\n var index = this._strings.indexes[key];\n var result;\n\n if (index !== undefined) {\n result = index;\n } else {\n result = this._strings.indexes[key] = this._strings.uniqueCount;\n this._strings.uniqueCount ++;\n }\n\n this._strings.count ++;\n\n return result;\n };\n\n Worksheet.prototype._lookupStyle = function _lookupStyle (style) {\n var json = JSON.stringify(style);\n\n if (json === \"{}\") {\n return 0;\n }\n\n var index = indexOf(json, this._styles);\n\n if (index < 0) {\n index = this._styles.push(json) - 1;\n }\n\n // There is one default style\n return index + 1;\n };\n\n Worksheet.prototype._lookupBorder = function _lookupBorder (border) {\n var json = JSON.stringify(border);\n if (json === \"{}\") {\n return;\n }\n\n var index = indexOf(json, this._borders);\n if (index < 0) {\n index = this._borders.push(json) - 1;\n }\n\n // There is one default border\n return index + 1;\n };\n\n Worksheet.prototype._readCells = function _readCells (rowData) {\n var this$1 = this;\n\n for (var i = 0; i < rowData.length; i++) {\n var row = rowData[i];\n var cells = row.cells;\n\n row.data = [];\n\n for (var j = 0; j < cells.length; j++) {\n var cellData = this$1._cell(cells[j], row.index, j);\n if (cellData) {\n row.data.push(cellData);\n }\n }\n }\n };\n\n Worksheet.prototype._cell = function _cell (data, rowIndex, cellIndex) {\n var this$1 = this;\n\n if (!data || data === EMPTY_CELL) {\n return null;\n }\n\n var value = data.value;\n\n var border = {};\n\n if (data.borderLeft) {\n border.left = data.borderLeft;\n }\n\n if (data.borderRight) {\n border.right = data.borderRight;\n }\n\n if (data.borderTop) {\n border.top = data.borderTop;\n }\n\n if (data.borderBottom) {\n border.bottom = data.borderBottom;\n }\n\n if (data.dBorders) {\n border.diagonal = data.dBorders;\n }\n\n border = this._lookupBorder(border);\n\n var defStyle = this.options.defaultCellStyle || {};\n var style = { borderId: border };\n\n (function (add) {\n add(\"color\");\n add(\"background\");\n add(\"bold\");\n add(\"italic\");\n add(\"underline\");\n if (!add(\"fontFamily\")) { add(\"fontName\", \"fontFamily\"); }\n add(\"fontSize\");\n add(\"format\");\n if (!add(\"textAlign\")) { add(\"hAlign\", \"textAlign\"); }\n if (!add(\"verticalAlign\")) { add(\"vAlign\", \"verticalAlign\"); }\n add(\"wrap\");\n add(\"indent\");\n if (!add(\"disabled\")) {\n if (add(\"enable\")) {\n style.disabled = !style.enable;\n delete style.enable;\n }\n }\n if (style.disabled) {\n this$1._hasDisabledCells = true;\n }\n })(function (prop, target) {\n var val = data[prop];\n if (val === undefined) {\n val = defStyle[prop];\n }\n if (val !== undefined) {\n style[target || prop] = val;\n return true;\n }\n });\n\n var columns = this.options.columns || [];\n\n var column = columns[cellIndex];\n var type = typeof value;\n\n if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n var displayValue = value;\n\n // XXX: let's not bring kendo.toString in only for this.\n // better wait until the spreadsheet engine is available as a separate\n // component, then we can use a real Excel-like formatter.\n //\n if (type === \"number\") {\n // kendo.toString will not behave exactly like the Excel format\n // Still, it's the best we have available for estimating the character count.\n displayValue = IntlService.toString(value, data.format);\n }\n\n column.width = Math.max(column.width || 0, String(displayValue).length);\n }\n\n if (type === \"string\") {\n value = stripFunnyChars(value);\n value = this._lookupString(value);\n type = \"s\";\n } else if (type === \"number\") {\n type = \"n\";\n } else if (type === \"boolean\") {\n type = \"b\";\n value = Number(value);\n } else if (value && value.getTime) {\n type = null;\n value = dateToSerial(value);\n if (!style.format) {\n style.format = \"mm-dd-yy\";\n }\n } else {\n type = null;\n value = null;\n }\n\n style = this._lookupStyle(style);\n\n var cellName = ref(rowIndex, cellIndex);\n\n if (data.validation) {\n this._addValidation(data.validation, cellName);\n }\n\n if (data.comment) {\n var anchor = [\n cellIndex + 1,// start column\n 15, // start column offset\n rowIndex, // start row\n 10, // start row offset\n cellIndex + 3,// end column\n 15, // end column offset\n rowIndex + 3, // end row\n 4 // end row offset\n ];\n this._comments.push({\n ref : cellName,\n text : data.comment,\n row : rowIndex,\n col : cellIndex,\n anchor : anchor.join(\", \")\n });\n }\n\n return {\n value: value,\n formula: data.formula,\n type: type,\n style: style,\n ref: cellName\n };\n };\n\n Worksheet.prototype._addValidation = function _addValidation (v, ref) {\n var tmp = {\n showErrorMessage : v.type === \"reject\" ? 1 : 0,\n formula1 : v.from,\n formula2 : v.to,\n type : MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n operator : MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n allowBlank : v.allowNulls ? 1 : 0,\n showDropDown : v.showButton ? 0 : 1, // LOL, Excel!\n error : v.messageTemplate,\n errorTitle : v.titleTemplate\n };\n var json = JSON.stringify(tmp);\n if (!this._validations[json]) {\n this._validations[json] = tmp;\n tmp.sqref = [];\n }\n this._validations[json].sqref.push(ref);\n };\n\n Worksheet.prototype._getLastRow = function _getLastRow () {\n return countData(this.options.rows);\n };\n\n Worksheet.prototype._getLastCol = function _getLastCol () {\n var last = 0;\n this.options.rows.forEach(function(row) {\n if (row.cells) {\n last = Math.max(last, countData(row.cells));\n }\n });\n return last;\n };\n\nfunction countData(data) {\n var last = data.length;\n data.forEach(function(el) {\n if (el.index && el.index >= last) {\n last = el.index + 1;\n }\n });\n return last;\n}\n\nvar MAP_EXCEL_OPERATOR = {\n // includes only what differs; key is our operator, value is Excel\n // operator.\n greaterThanOrEqualTo : \"greaterThanOrEqual\",\n lessThanOrEqualTo : \"lessThanOrEqual\"\n};\n\nvar MAP_EXCEL_TYPE = {\n // eslint-disable-next-line id-denylist\n number: \"decimal\"\n};\n\nvar defaultFormats = {\n \"General\": 0,\n \"0\": 1,\n \"0.00\": 2,\n \"#,##0\": 3,\n \"#,##0.00\": 4,\n \"0%\": 9,\n \"0.00%\": 10,\n \"0.00E+00\": 11,\n \"# ?/?\": 12,\n \"# ??/??\": 13,\n \"mm-dd-yy\": 14,\n \"d-mmm-yy\": 15,\n \"d-mmm\": 16,\n \"mmm-yy\": 17,\n \"h:mm AM/PM\": 18,\n \"h:mm:ss AM/PM\": 19,\n \"h:mm\": 20,\n \"h:mm:ss\": 21,\n \"m/d/yy h:mm\": 22,\n \"#,##0 ;(#,##0)\": 37,\n \"#,##0 ;[Red](#,##0)\": 38,\n \"#,##0.00;(#,##0.00)\": 39,\n \"#,##0.00;[Red](#,##0.00)\": 40,\n \"mm:ss\": 45,\n \"[h]:mm:ss\": 46,\n \"mmss.0\": 47,\n \"##0.0E+0\": 48,\n \"@\": 49,\n \"[$-404]e/m/d\": 27,\n \"m/d/yy\": 30,\n \"t0\": 59,\n \"t0.00\": 60,\n \"t#,##0\": 61,\n \"t#,##0.00\": 62,\n \"t0%\": 67,\n \"t0.00%\": 68,\n \"t# ?/?\": 69,\n \"t# ??/??\": 70\n};\n\nfunction maybeRGB(value) {\n function hex(val) {\n var x = parseInt(val, 10).toString(16);\n return x.length < 2 ? \"0\" + x : x;\n }\n\n var m = /^rgba?\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+)\\s*)?\\)/i.exec(value.trim());\n if (m) {\n var opacity = (m[4] ? parseFloat(m[4]) : 1) * 255 | 0;\n return \"#\" + hex(opacity) + hex(m[1]) + hex(m[2]) + hex(m[3]);\n }\n return value;\n}\n\nfunction convertColor(value) {\n var color = maybeRGB(value);\n if (color.length < 6) {\n color = color.replace(/(\\w)/g, function($0, $1) {\n return $1 + $1;\n });\n }\n\n color = color.substring(1).toUpperCase();\n\n if (color.length < 8) {\n color = \"FF\" + color;\n }\n\n return color;\n}\n\nvar Workbook = function Workbook(options) {\n var this$1 = this;\n\n this.options = options || {};\n this._strings = {\n indexes: {},\n count: 0,\n uniqueCount: 0\n };\n this._styles = [];\n this._borders = [];\n this._images = this.options.images;\n this._imgId = 0;\n\n this._sheets = map(this.options.sheets || [], function (options, i) {\n options.defaults = this$1.options;\n options.sheetIndex = i + 1;\n return new Worksheet(options, this$1._strings, this$1._styles, this$1._borders);\n });\n };\n\n Workbook.prototype.imageFilename = function imageFilename (mimeType) {\n var id = ++this._imgId;\n switch (mimeType) {\n case \"image/jpg\":\n case \"image/jpeg\":\n return (\"image\" + id + \".jpg\");\n case \"image/png\":\n return (\"image\" + id + \".png\");\n case \"image/gif\":\n return (\"image\" + id + \".gif\");\n default:\n return (\"image\" + id + \".bin\"); // XXX: anything better to do here?\n }\n };\n\n Workbook.prototype.toZIP = function toZIP () {\n var this$1 = this;\n\n var zip = createZip();\n\n var docProps = zip.folder(\"docProps\");\n\n docProps.file(\"core.xml\", CORE({\n creator: this.options.creator || \"Kendo UI\",\n lastModifiedBy: this.options.creator || \"Kendo UI\",\n created: this.options.date || new Date().toJSON(),\n modified: this.options.date || new Date().toJSON()\n }));\n\n var sheetCount = this._sheets.length;\n\n docProps.file(\"app.xml\", APP({ sheets: this._sheets }));\n\n var rels = zip.folder(\"_rels\");\n rels.file(\".rels\", RELS);\n\n var xl = zip.folder(\"xl\");\n\n var xlRels = xl.folder(\"_rels\");\n xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({ count: sheetCount }));\n\n if (this._images) {\n var media = xl.folder(\"media\");\n Object.keys(this._images).forEach(function (id) {\n var img = this$1._images[id];\n var filename = this$1.imageFilename(img.type);\n media.file(filename, img.data);\n img.target = \"../media/\" + filename;\n });\n }\n\n var sheetIds = {};\n xl.file(\"workbook.xml\", WORKBOOK({\n sheets: this._sheets,\n filterNames: map(this._sheets, function(sheet, index) {\n var options = sheet.options;\n var sheetName = (options.name || options.title || \"Sheet\" + (index + 1));\n sheetIds[sheetName.toLowerCase()] = index;\n var filter = options.filter;\n if (filter) {\n if (filter.ref) {\n // spreadsheet provides `ref`\n var a = filter.ref.split(\":\");\n var from = parseRef(a[0]);\n var to = parseRef(a[1]);\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(from.row, from.col),\n to: $ref(to.row, to.col)\n };\n } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n // grid does this\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(filterRowIndex(options), filter.from),\n to: $ref(filterRowIndex(options), filter.to)\n };\n }\n }\n }),\n userNames: map(this.options.names || [], function(def) {\n return {\n name: def.localName,\n localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n value: def.value,\n hidden: def.hidden\n };\n })\n }));\n\n var worksheets = xl.folder(\"worksheets\");\n var drawings = xl.folder(\"drawings\");\n var drawingsRels = drawings.folder(\"_rels\");\n var sheetRels = worksheets.folder(\"_rels\");\n var commentFiles = [];\n var drawingFiles = [];\n var hasDisabledCells = false;\n\n for (var idx = 0; idx < sheetCount; idx++) {\n var sheet = this$1._sheets[idx];\n var sheetName = \"sheet\" + (idx + 1) + \".xml\";\n var sheetXML = sheet.toXML(idx); // must be called before relsToXML\n var relsXML = sheet.relsToXML();\n var commentsXML = sheet.commentsXML();\n var legacyDrawing = sheet.legacyDrawing();\n var drawingsXML = sheet.drawingsXML(this$1._images);\n\n if (sheet._hasDisabledCells) {\n hasDisabledCells = true;\n }\n\n if (relsXML) {\n sheetRels.file(sheetName + \".rels\", relsXML);\n }\n if (commentsXML) {\n var name = \"comments\" + (sheet.options.sheetIndex) + \".xml\";\n xl.file(name, commentsXML);\n commentFiles.push(name);\n }\n if (legacyDrawing) {\n drawings.file((\"vmlDrawing\" + (sheet.options.sheetIndex) + \".vml\"), legacyDrawing);\n }\n if (drawingsXML) {\n var name$1 = \"drawing\" + (sheet.options.sheetIndex) + \".xml\";\n drawings.file(name$1, drawingsXML.main);\n drawingsRels.file((name$1 + \".rels\"), drawingsXML.rels);\n drawingFiles.push(name$1);\n }\n\n worksheets.file(sheetName, sheetXML);\n }\n\n var borders = map(this._borders, parseJSON);\n\n var styles = map(this._styles, parseJSON);\n\n var hasFont = function(style) {\n return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n };\n\n var convertFontSize = function(value) {\n var fontInPx = Number(value);\n var fontInPt;\n\n if (fontInPx) {\n fontInPt = fontInPx * 3 / 4;\n }\n\n return fontInPt;\n };\n\n var fonts = map(styles, function(style) {\n if (style.fontSize) {\n style.fontSize = convertFontSize(style.fontSize);\n }\n\n if (style.color) {\n style.color = convertColor(style.color);\n }\n\n if (hasFont(style)) {\n return style;\n }\n });\n\n var formats = map(styles, function(style) {\n if (style.format && defaultFormats[style.format] === undefined) {\n return style;\n }\n });\n\n var fills = map(styles, function(style) {\n if (style.background) {\n style.background = convertColor(style.background);\n return style;\n }\n });\n\n xl.file(\"styles.xml\", STYLES({\n fonts: fonts,\n fills: fills,\n formats: formats,\n borders: borders,\n styles: map(styles, function(style) {\n var result = {};\n\n if (hasFont(style)) {\n result.fontId = indexOf(style, fonts) + 1;\n }\n\n if (style.background) {\n result.fillId = indexOf(style, fills) + 2;\n }\n\n result.textAlign = style.textAlign;\n result.indent = style.indent;\n result.verticalAlign = style.verticalAlign;\n result.wrap = style.wrap;\n result.borderId = style.borderId;\n\n if (style.format) {\n if (defaultFormats[style.format] !== undefined) {\n result.numFmtId = defaultFormats[style.format];\n } else {\n result.numFmtId = 165 + indexOf(style, formats);\n }\n }\n\n if (hasDisabledCells) {\n result.disabled = !!style.disabled;\n }\n\n return result;\n })\n }));\n\n xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n\n zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n sheetCount: sheetCount,\n commentFiles: commentFiles,\n drawingFiles: drawingFiles\n }));\n\n return zip;\n };\n\n Workbook.prototype.toDataURL = function toDataURL () {\n var zip = this.toZIP();\n\n return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n };\n\n Workbook.prototype.toBlob = function toBlob () {\n var zip = this.toZIP();\n if (zip.generateAsync) {\n return zip.generateAsync(BLOB_OPTIONS);\n }\n return new Blob([ zip.generate(ARRAYBUFFER_OPTIONS) ], { type: MIME_TYPE });\n };\n\nfunction borderStyle(width) {\n var alias = \"thin\";\n\n if (width === 2) {\n alias = \"medium\";\n } else if (width === 3) {\n alias = \"thick\";\n }\n\n return alias;\n}\n\nfunction borderSideTemplate(name, style) {\n var result = \"\";\n\n if (style) {\n result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n if (style.color) {\n result += \"\";\n }\n result += \"\";\n }\n\n return result;\n}\n\nfunction borderTemplate(border) {\n var diag = border.diagonal ? border.diagonal.type : 0;\n return (\"\\n \" + (borderSideTemplate(\"left\", border.left)) + \"\\n \" + (borderSideTemplate(\"right\", border.right)) + \"\\n \" + (borderSideTemplate(\"top\", border.top)) + \"\\n \" + (borderSideTemplate(\"bottom\", border.bottom)) + \"\\n \" + (borderSideTemplate(\"diagonal\", border.diagonal)) + \"\\n \");\n}\n\nvar EMPTY_CELL = {};\nfunction inflate(rows, mergedCells) {\n var rowData = [];\n var rowsByIndex = [];\n\n indexRows(rows, function(row, index) {\n var data = {\n _source: row,\n index: index,\n height: row.height,\n level: row.level,\n cells: []\n };\n\n rowData.push(data);\n rowsByIndex[index] = data;\n });\n\n var sorted = sortByIndex(rowData).slice(0);\n var ctx = {\n rowData: rowData,\n rowsByIndex: rowsByIndex,\n mergedCells: mergedCells\n };\n\n for (var i = 0; i < sorted.length; i++) {\n fillCells(sorted[i], ctx);\n delete sorted[i]._source;\n }\n\n return sortByIndex(rowData);\n}\n\nfunction indexRows(rows, callback) {\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n if (!row) {\n continue;\n }\n\n var index = row.index;\n if (typeof index !== \"number\") {\n index = i;\n }\n\n callback(row, index);\n }\n}\n\nfunction sortByIndex(items) {\n return items.sort(function(a, b) {\n return a.index - b.index;\n });\n}\n\nfunction pushUnique(array, el) {\n if (array.indexOf(el) < 0) {\n array.push(el);\n }\n}\n\nfunction getSpan(mergedCells, ref) {\n for (var i = 0; i < mergedCells.length; ++i) {\n var range = mergedCells[i];\n var a = range.split(\":\");\n var topLeft = a[0];\n if (topLeft === ref) {\n var bottomRight = a[1];\n topLeft = parseRef(topLeft);\n bottomRight = parseRef(bottomRight);\n return {\n rowSpan: bottomRight.row - topLeft.row + 1,\n colSpan: bottomRight.col - topLeft.col + 1\n };\n }\n }\n}\n\nfunction parseRef(ref) {\n function getcol(str) {\n var upperStr = str.toUpperCase();\n var col = 0;\n for (var i = 0; i < upperStr.length; ++i) {\n col = col * 26 + upperStr.charCodeAt(i) - 64;\n }\n return col - 1;\n }\n\n function getrow(str) {\n return parseInt(str, 10) - 1;\n }\n\n var m = /^([a-z]+)(\\d+)$/i.exec(ref);\n return {\n row: getrow(m[2]),\n col: getcol(m[1])\n };\n}\n\nfunction pixelsToExcel(px) {\n return Math.round(px * 9525);\n}\n\nfunction fillCells(data, ctx) {\n var row = data._source;\n var rowIndex = data.index;\n var cells = row.cells;\n var cellData = data.cells;\n\n if (!cells) {\n return;\n }\n\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i] || EMPTY_CELL;\n\n var rowSpan = cell.rowSpan || 1;\n var colSpan = cell.colSpan || 1;\n\n var cellIndex = insertCell(cellData, cell);\n var topLeftRef = ref(rowIndex, cellIndex);\n\n if (rowSpan === 1 && colSpan === 1) {\n // could still be merged: the spreadsheet does not send\n // rowSpan/colSpan, but mergedCells is already populated.\n // https://github.com/telerik/kendo-ui-core/issues/2401\n var tmp = getSpan(ctx.mergedCells, topLeftRef);\n if (tmp) {\n colSpan = tmp.colSpan;\n rowSpan = tmp.rowSpan;\n }\n }\n\n spanCell(cell, cellData, cellIndex, colSpan);\n\n if (rowSpan > 1 || colSpan > 1) {\n pushUnique(ctx.mergedCells,\n topLeftRef + \":\" + ref(rowIndex + rowSpan - 1,\n cellIndex + colSpan - 1));\n }\n\n if (rowSpan > 1) {\n for (var ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n var nextRow = ctx.rowsByIndex[ri];\n if (!nextRow) {\n nextRow = ctx.rowsByIndex[ri] = { index: ri, cells: [] };\n ctx.rowData.push(nextRow);\n }\n\n spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n }\n }\n }\n}\n\nfunction insertCell(data, cell) {\n var index;\n\n if (typeof cell.index === \"number\") {\n index = cell.index;\n insertCellAt(data, cell, cell.index);\n } else {\n index = appendCell(data, cell);\n }\n\n return index;\n}\n\nfunction insertCellAt(data, cell, index) {\n data[index] = cell;\n}\n\nfunction appendCell(data, cell) {\n var index = data.length;\n\n for (var i = 0; i < data.length + 1; i++) {\n if (!data[i]) {\n data[i] = cell;\n index = i;\n break;\n }\n }\n\n return index;\n}\n\nfunction spanCell(cell, row, startIndex, colSpan) {\n for (var i = 1; i < colSpan; i++) {\n var tmp = {\n borderTop : cell.borderTop,\n borderRight : cell.borderRight,\n borderBottom : cell.borderBottom,\n borderLeft : cell.borderLeft\n };\n insertCellAt(row, tmp, startIndex + i);\n }\n}\n\nvar SPREADSHEET_FILTERS = function (ref$1) {\n var ref = ref$1.ref;\n var columns = ref$1.columns;\n var generators = ref$1.generators;\n\n return (\"\\n\\n \" + (foreach(columns, function (col) { return (\"\\n \\n \" + (generators[col.filter](col)) + \"\\n \\n \"); })) + \"\\n\");\n};\n\nvar SPREADSHEET_CUSTOM_FILTER = function (ref) {\n var logic = ref.logic;\n var criteria = ref.criteria;\n\n return (\"\\n\\n\" + (foreach(criteria, function (f) {\n var op = spreadsheetFilters.customOperator(f);\n var val = spreadsheetFilters.customValue(f);\n return (\"\");\n})) + \"\\n\");\n};\n\nvar SPREADSHEET_DYNAMIC_FILTER = function (ref) {\n var type = ref.type;\n\n return (\"\");\n};\n\nvar SPREADSHEET_TOP_FILTER = function (ref) {\n var type = ref.type;\n var value = ref.value;\n\n return (\"\");\n};\n\nvar SPREADSHEET_VALUE_FILTER = function (ref) {\n var blanks = ref.blanks;\n var values = ref.values;\n\n return (\"\\n \" + (foreach(values, function (value) { return (\"\\n \"); })) + \"\\n \");\n};\n\nfunction spreadsheetFilters(filter) {\n return SPREADSHEET_FILTERS({\n ref: filter.ref,\n columns: filter.columns,\n generators: {\n custom : SPREADSHEET_CUSTOM_FILTER,\n dynamic : SPREADSHEET_DYNAMIC_FILTER,\n top : SPREADSHEET_TOP_FILTER,\n value : SPREADSHEET_VALUE_FILTER\n }\n });\n}\n\nspreadsheetFilters.customOperator = function(f) {\n return {\n eq : \"equal\",\n gt : \"greaterThan\",\n gte : \"greaterThanOrEqual\",\n lt : \"lessThan\",\n lte : \"lessThanOrEqual\",\n ne : \"notEqual\",\n\n // These are not in the spec, but seems to be how Excel does\n // it (see customValue below). For the non-negated versions,\n // the operator attribute is missing completely.\n doesnotstartwith: \"notEqual\",\n doesnotendwith: \"notEqual\",\n doesnotcontain: \"notEqual\",\n doesnotmatch: \"notEqual\"\n }[f.operator.toLowerCase()];\n};\n\nfunction quoteSheet(name) {\n if (/^\\'/.test(name)) { // assume already quoted, the Spreadsheet does it.\n return name;\n }\n if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n return name; // no need to quote it\n }\n return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\n\nspreadsheetFilters.customValue = function(f) {\n function esc(str) {\n return str.replace(/([*?])/g, \"~$1\");\n }\n\n switch (f.operator.toLowerCase()) {\n case \"startswith\":\n case \"doesnotstartwith\":\n return esc(f.value) + \"*\";\n\n case \"endswith\":\n case \"doesnotendwith\":\n return \"*\" + esc(f.value);\n\n case \"contains\":\n case \"doesnotcontain\":\n return \"*\" + esc(f.value) + \"*\";\n\n default:\n return f.value;\n }\n};\n\nspreadsheetFilters.dynamicFilterType = function(type) {\n return {\n quarter1 : \"Q1\",\n quarter2 : \"Q2\",\n quarter3 : \"Q3\",\n quarter4 : \"Q4\",\n january : \"M1\",\n february : \"M2\",\n march : \"M3\",\n april : \"M4\",\n may : \"M5\",\n june : \"M6\",\n july : \"M7\",\n august : \"M8\",\n september : \"M9\",\n october : \"M10\",\n november : \"M11\",\n december : \"M12\"\n }[type.toLowerCase()] || type;\n};\n\nexport {\n Workbook,\n Worksheet\n};\n","import JSZip from '@progress/jszip-esm';\n\nexport default function createZip() {\n return new JSZip();\n}\n","var proxy = function (a, b) { return function (e) { return b(a(e)); }; };\n\nvar bind = function (el, event, callback) { return el.addEventListener && el.addEventListener(event, callback); };\n\nvar unbind = function (el, event, callback) { return el && el.removeEventListener && el.removeEventListener(event, callback); };\n\nvar noop = function () { /* empty */ };\n\nvar preventDefault = function (e) { return e.preventDefault(); };\n\nvar touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press; if ( press === void 0 ) press = noop;\n var drag = ref.drag; if ( drag === void 0 ) drag = noop;\n var release = ref.release; if ( release === void 0 ) release = noop;\n var mouseOnly = ref.mouseOnly; if ( mouseOnly === void 0 ) mouseOnly = false;\n\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if ((which && which > 1) || this$1._ignoreMouse) {\n return;\n }\n\n bind(this$1.document, \"mousemove\", this$1._mousemove);\n bind(this$1.document, \"mouseup\", this$1._mouseup);\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(this$1.document, \"mousemove\", this$1._mousemove);\n unbind(this$1.document, \"mouseup\", this$1._mouseup);\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(this$1.document, \"pointermove\", this$1._pointermove);\n bind(this$1.document, \"pointerup\", this$1._pointerup);\n bind(this$1.document, \"pointercancel\", this$1._pointerup);\n bind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(this$1.document, \"pointermove\", this$1._pointermove);\n unbind(this$1.document, \"pointerup\", this$1._pointerup);\n unbind(this$1.document, \"pointercancel\", this$1._pointerup);\n unbind(this$1.document, \"contextmenu\", preventDefault);\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nvar prototypeAccessors = { document: { configurable: true } };\n\nDraggable.supportPointerEvent = function supportPointerEvent () {\n return (typeof window !== 'undefined') && window.PointerEvent;\n};\n\nprototypeAccessors.document.get = function () {\n return this._element\n ? this._element.ownerDocument\n : document;\n};\n\nDraggable.prototype.cancelDrag = function cancelDrag () {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n};\n\nDraggable.prototype.bindTo = function bindTo (element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent () {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent () {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers () {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.update = function update (ref) {\n var press = ref.press; if ( press === void 0 ) press = noop;\n var drag = ref.drag; if ( drag === void 0 ) drag = noop;\n var release = ref.release; if ( release === void 0 ) release = noop;\n var mouseOnly = ref.mouseOnly; if ( mouseOnly === void 0 ) mouseOnly = false;\n\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n};\n\nDraggable.prototype.destroy = function destroy () {\n this._unbindFromCurrent();\n this._element = null;\n};\n\nObject.defineProperties( Draggable.prototype, prototypeAccessors );\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","import { Component } from \"./component\";\n// @ts-expect-error TS(2556): A spread argument must either have a tuple type or... Remove this comment to see the full error message\nexport const extend = (...args) => Object.assign(...args);\nexport const isObject = (value) => value && typeof (value) === \"object\" && !Array.isArray(value);\nexport const isHtmlElement = (element) => element instanceof HTMLElement;\nexport const isDomElement = (element) => element instanceof Element;\n/* eslint-disable no-undef */\n// @ts-expect-error TS(2304): Cannot find name 'DotNet'.\nexport const isDotNetObject = (value) => value && window && window.DotNet && window.DotNet.DotNetObject && value instanceof DotNet.DotNetObject;\n/* eslint-enable no-undef */\nexport const deepExtend = (target, ...sources) => {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (source[key] instanceof Component) {\n target[key] = source[key];\n }\n else if (isHtmlElement(source[key])) {\n target[key] = source[key];\n }\n else if (key === \"dotNetInstance\" || isDotNetObject(source[key])) {\n // avoid cloning a DotNetObject as it might have circular properties\n // see https://github.com/telerik/blazor/issues/7507\n // the check for the name of our own option - \"dotNetInstance\"\n // is an additional guard against the Blazor API being different in other .NET versions\n target[key] = source[key];\n }\n else if (source[key] && source[key].buffer && source[key].buffer instanceof ArrayBuffer) {\n target[key] = source[key];\n }\n else if (isObject(source[key]) && Object.getPrototypeOf(source[key]) !== Object.prototype) {\n target[key] = source[key];\n }\n else if (isObject(source[key])) {\n if (!target[key] || !isObject(target[key])) {\n extend(target, { [key]: {} });\n }\n deepExtend(target[key], source[key]);\n }\n else {\n extend(target, { [key]: source[key] });\n }\n }\n }\n return deepExtend(target, ...sources);\n};\nexport const isFunction = fn => typeof (fn) === \"function\";\nexport const isString = value => typeof (value) === \"string\";\nexport const toArray = value => Array.from(value);\nexport const isDefined = value => typeof (value) !== \"undefined\";\nexport const isNotNull = value => value !== null;\nexport const hasValue = value => isDefined(value) && isNotNull(value);\nexport const noop = function () { };\nexport const convertToHtml = (htmlString, ownerDocument) => {\n const template = (ownerDocument || document).createElement('template');\n template.innerHTML = htmlString.trim();\n const content = template.content;\n if (content.childNodes.length > 1) {\n return content.childNodes;\n }\n return content.firstChild;\n};\nexport const toPixel = value => parseFloat(value) + \"px\";\nexport const toClassSelector = (className) => (className === null || className === void 0 ? void 0 : className.startsWith(\".\")) ? className : `.${className}`;\nexport const mousewheelDelta = (e) => {\n let delta = 0;\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n }\n else if (e.detail) {\n delta = e.detail / 3;\n }\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n return delta;\n};\nexport const createPromise = () => {\n let resolveFn;\n let rejectFn;\n const promise = new Promise(function (resolve, reject) {\n resolveFn = resolve;\n rejectFn = reject;\n });\n // @ts-expect-error TS(2339): Property 'resolve' does not exist on type 'Promise... Remove this comment to see the full error message\n promise.resolve = resolveFn;\n // @ts-expect-error TS(2339): Property 'reject' does not exist on type 'Promise<... Remove this comment to see the full error message\n promise.reject = rejectFn;\n return promise;\n};\n","import { extend, deepExtend, isFunction } from \"./core\";\nexport class Component {\n constructor(element, options) {\n this.options = {\n events: {}\n };\n this.element = element;\n this.options = options;\n }\n destroy() {\n this.element = null;\n }\n extendOptions(options) {\n this.options = deepExtend(this.options, options);\n }\n setOptions(options) {\n this.options = options;\n }\n trigger(eventName, args = {}) {\n const eventData = {\n defaultPrevented: false,\n preventDefault: () => {\n eventData.defaultPrevented = true;\n }\n };\n if (isFunction(this.options.events[eventName])) {\n this.options.events[eventName](extend(eventData, args, {\n sender: this\n }));\n }\n return eventData.defaultPrevented;\n }\n}\n","import Draggable from '@progress/kendo-draggable';\nimport { Component } from './common/component';\nimport { noop } from './common/core';\nexport const throttle = function (func, wait, options = {}) {\n let timeout, context, args, result;\n let previous = 0;\n const later = function () {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = undefined;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n const throttled = function () {\n const now = new Date().getTime();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n context = undefined; // this\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n }\n else if (!timeout && options.trailing !== false) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n return throttled;\n};\nconst preventDefault = (e) => {\n if (e.preventDefault) {\n e.preventDefault();\n }\n if (e.originalEvent) {\n e.originalEvent.preventDefault();\n }\n};\nconst matchesElementSelector = (element, selector) => {\n if (!element || !selector) {\n return false;\n }\n return element.closest(selector);\n};\nconst FRAMES_PER_SECOND = 1000 / 60;\nconst SCROLL = \"scroll\";\n/**\n * @hidden\n */\nexport class Scroller extends Component {\n constructor(element, options) {\n super(element, options);\n this.options = {\n events: {\n [SCROLL]: noop,\n },\n filter: '',\n // throttle the scroll events to get a more similar experience\n // to the scrolling behavior in Adobe Acrobat Reader\n // as well as allow a way to improve the scrolling performance for large files\n panScrollThrottleDelay: FRAMES_PER_SECOND,\n // the drag directions are actually reversed, e.g.\n // dragging to the right actually moves the document to the left\n scrollDirectionModifier: -1,\n scrollThrottleDelay: FRAMES_PER_SECOND,\n };\n this.onElementScroll = (e) => {\n const element = this.element;\n if (!this.shouldTrackScrollEvents()) {\n return;\n }\n if (this.state.trackNextElementScroll) {\n this.scrollTo(element.scrollLeft, element.scrollTop);\n }\n else {\n // reset the state, so that consecutive scroll events can be handled\n this.state.trackNextElementScroll = true;\n }\n this.trigger(SCROLL, {\n originalEvent: e\n });\n };\n this.onDragStart = (e) => {\n this.state.dragStarted = false;\n if (!this.shouldTrackPanEvents()) {\n return;\n }\n const target = e.target || (e.originalEvent || {}).target;\n if (this.options.filter &&\n !matchesElementSelector(target, this.options.filter)) {\n return;\n }\n preventDefault(e);\n this.setState({\n dragStarted: true,\n location: {\n pageX: e.pageX,\n pageY: e.pageY\n },\n locationDelta: {\n x: 0,\n y: 0\n }\n });\n };\n this.onDrag = (e) => {\n if (!this.shouldTrackPanEvents() || !this.state.dragStarted) {\n return;\n }\n this.calculateEventLocationDelta(e);\n this.setState({\n location: {\n pageX: e.pageX,\n pageY: e.pageY\n }\n });\n const directionModifier = this.options.scrollDirectionModifier;\n const scrollLeft = this.element.scrollLeft +\n directionModifier * this.state.locationDelta.x;\n const scrollTop = this.element.scrollTop +\n directionModifier * this.state.locationDelta.y;\n this.scrollTo(scrollLeft, scrollTop);\n };\n this.onDragEnd = () => {\n if (!this.shouldTrackPanEvents()) {\n return;\n }\n };\n this.extendOptions(options);\n this.resetState();\n this.bindEvents();\n }\n destroy() {\n this.unbindEvents();\n }\n initDraggable() {\n this.destroyDraggable();\n if (this.options.panScrollThrottleDelay > 0) {\n this.throttledOnDrag = throttle(this.onDrag, this.options.panScrollThrottleDelay);\n }\n else {\n this.throttledOnDrag = this.onDrag;\n }\n this.draggable = new Draggable({\n mouseOnly: false,\n press: this.onDragStart,\n drag: this.throttledOnDrag,\n release: this.onDragEnd\n });\n this.draggable.bindTo(this.element);\n }\n destroyDraggable() {\n if (this.draggable && this.draggable.destroy) {\n this.draggable.destroy();\n if (this.throttledOnDrag && this.throttledOnDrag.cancel) {\n this.throttledOnDrag.cancel();\n this.throttledOnDrag = null;\n }\n }\n }\n bindEvents() {\n this.bindDraggableEvents();\n this.bindElementScroll();\n }\n bindDraggableEvents() {\n this.initDraggable();\n }\n bindElementScroll() {\n if (this.options.scrollThrottleDelay > 0) {\n this.throttledOnElementScroll = throttle(this.onElementScroll, this.options.scrollThrottleDelay);\n }\n else {\n this.throttledOnElementScroll = this.onElementScroll;\n }\n this.element.addEventListener(SCROLL, this.throttledOnElementScroll);\n }\n unbindEvents() {\n this.unbindElementScroll();\n this.unbindDraggableEvents();\n }\n unbindDraggableEvents() {\n this.destroyDraggable();\n }\n unbindElementScroll() {\n if (this.throttledOnElementScroll &&\n this.throttledOnElementScroll.cancel) {\n this.throttledOnElementScroll.cancel();\n this.throttledOnElementScroll = null;\n }\n this.element.removeEventListener(SCROLL, this.throttledOnElementScroll);\n }\n setState(newState) {\n this.state = Object.assign({}, this.state || {}, newState);\n }\n resetState() {\n this.setState({\n trackPanEvents: false,\n trackScrollEvents: false,\n trackNextElementScroll: false,\n location: { pageX: 0, pageY: 0 },\n locationDelta: { x: 0, y: 0 }\n });\n }\n enablePanEventsTracking() {\n this.state.trackPanEvents = true;\n this.bindDraggableEvents();\n }\n disablePanEventsTracking() {\n this.unbindDraggableEvents();\n this.state.trackPanEvents = false;\n }\n shouldTrackPanEvents() {\n return this.state.trackPanEvents;\n }\n enableScrollEventsTracking() {\n this.state.trackScrollEvents = true;\n this.unbindElementScroll();\n this.bindElementScroll();\n }\n disableScrollEventsTracking() {\n this.unbindElementScroll();\n this.state.trackScrollEvents = false;\n }\n shouldTrackScrollEvents() {\n return this.state.trackScrollEvents;\n }\n calculateEventLocationDelta(e) {\n this.state.locationDelta = {\n x: e.pageX - this.state.location.pageX,\n y: e.pageY - this.state.location.pageY\n };\n }\n scrollTo(x, y, options = { trackScrollEvent: true }) {\n if (!options.trackScrollEvent) {\n this.state.trackNextElementScroll = false;\n }\n this.element.scrollLeft = x;\n this.element.scrollTop = y;\n }\n}\n","const unwrapElement = (element) => {\n const parentElement = element.parentElement;\n if (!element || !parentElement) {\n return;\n }\n parentElement.replaceWith(...Array.from(parentElement.childNodes));\n};\nconst unwrapElements = (elements) => {\n if (!elements || !elements.length || elements.length <= 0) {\n return;\n }\n for (let i = 0; i < elements.length; i++) {\n unwrapElement(elements[i]);\n }\n};\nconst wrapElement = (element, wrapper) => {\n if (element.parentNode) {\n element.parentNode.insertBefore(wrapper, element);\n wrapper.appendChild(element);\n }\n};\nconst wrapInnerElement = (element, wrapper) => {\n if (!element || !element.parentNode || !wrapper) {\n return;\n }\n element.appendChild(wrapper);\n while (element.firstChild && element.firstChild !== wrapper) {\n wrapper.appendChild(element.firstChild);\n }\n};\nconst addClass = (className, element) => {\n element.classList.add(className);\n};\nconst removeClass = (className, element) => {\n element.classList.remove(className);\n};\nconst toClassSelector = (className) => `.${className}`;\nconst CHAR_INDEX_DATA_ATTR = 'data-char-index';\nconst MATCH_INDEX_DATA_ATTR = 'data-match-index';\n/**\n * @hidden\n */\nexport class SearchService {\n constructor(options) {\n this.options = {\n highlightClass: 'k-search-highlight',\n highlightMarkClass: 'k-search-highlight-mark',\n charClass: 'k-text-char',\n textContainers: []\n };\n this.extendOptions(options);\n this.resetState();\n }\n destroy() {\n this.clearSearch();\n }\n extendOptions(options) {\n this.options = Object.assign({}, this.options, options);\n }\n setState(newState) {\n this.state = Object.assign({}, this.state || {}, newState);\n }\n resetState() {\n this.setState({\n text: '',\n textNodes: [],\n charIndex: 0,\n activeMatchIndex: 0,\n matches: []\n });\n }\n escapeRegExp(text) {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n search({ text, matchCase }) {\n const escapedText = this.escapeRegExp(text);\n const searchRegex = new RegExp(escapedText, matchCase ? 'g' : 'ig');\n let match;\n if (this.shouldTransformText()) {\n this.transformTextForSearch();\n }\n this.state.matches = [];\n this.state.activeMatchIndex = 0;\n this.removeIndicators();\n if (escapedText === '') {\n return [];\n }\n match = searchRegex.exec(this.state.text);\n while (match) {\n this.state.matches.push({\n startOffset: match.index,\n endOffset: match.index + match[0].length\n });\n match = searchRegex.exec(this.state.text);\n }\n this.highlightAllMatches();\n this.addActiveMatchMark();\n return this.state.matches;\n }\n clearSearch() {\n this.removeIndicators();\n this.restoreOriginalText();\n }\n restoreOriginalText() {\n this.forEachTextContainer((textContainer) => {\n const nodes = Array.from(textContainer.querySelectorAll('span:not(.' + this.options.charClass + ')'));\n nodes.forEach((node) => {\n node.innerHTML = node.textContent;\n });\n });\n }\n shouldTransformText() {\n return !this.state.text;\n }\n transformTextForSearch() {\n this.state.textNodes = [];\n this.state.charIndex = 0;\n this.state.text = '';\n this.forEachTextContainer((textContainer) => {\n this.extractTextNodes(textContainer);\n });\n this.transformTextNodesForSearch(this.state.textNodes);\n }\n extractTextNodes(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n this.state.textNodes.push(node);\n }\n else {\n for (let i = 0; i < node.childNodes.length; i++) {\n this.extractTextNodes(node.childNodes[i]);\n }\n }\n }\n transformTextNodesForSearch(textNodes) {\n for (let i = 0; i < textNodes.length; i++) {\n this.transformTextNodeForSearch(textNodes[i]);\n }\n }\n transformTextNodeForSearch(node) {\n const text = node.textContent;\n if (text.length <= 0) {\n return;\n }\n this.state.text = this.state.text + text;\n const span = document.createElement('span');\n wrapElement(node, span);\n const splittedHtml = this.splitTextByChars(text);\n span.innerHTML = splittedHtml;\n unwrapElement(span.childNodes[0]);\n }\n splitTextByChars(text) {\n let splittedTextHtml = '';\n for (let i = 0; i < text.length; i++) {\n splittedTextHtml += `${text[i]}`;\n this.state.charIndex++;\n }\n return splittedTextHtml;\n }\n forEachTextContainer(callback) {\n for (let i = 0; i < this.options.textContainers.length; i++) {\n const textContainer = this.options.textContainers[i];\n callback(textContainer, i);\n }\n }\n highlightAllMatches() {\n this.state.matches.forEach((match, matchIndex) => {\n this.addMatchHighlight(match.startOffset, match.endOffset, matchIndex);\n });\n }\n addMatchHighlight(matchStartOffset, matchEndOffset, matchIndex) {\n for (let i = matchStartOffset; i < matchEndOffset; i++) {\n this.forEachTextContainer((textContainer) => {\n const highlights = Array.from(textContainer.querySelectorAll(toClassSelector(`${this.options.charClass}[${CHAR_INDEX_DATA_ATTR}='${i}']`)));\n highlights.forEach((highlight) => {\n addClass(this.options.highlightClass, highlight);\n highlight.setAttribute(MATCH_INDEX_DATA_ATTR, matchIndex);\n });\n });\n }\n }\n removeMatchHighlights() {\n this.forEachTextContainer((textContainer) => {\n const highlights = Array.from(textContainer.querySelectorAll(toClassSelector(this.options.highlightClass)));\n highlights.forEach((highlight) => {\n removeClass(this.options.highlightClass, highlight);\n highlight.removeAttribute(MATCH_INDEX_DATA_ATTR);\n });\n });\n }\n addActiveMatchMark() {\n if (!this.state.activeMatchIndex && this.state.activeMatchIndex !== 0) {\n this.state.activeMatchIndex = 0;\n }\n else if (this.state.activeMatchIndex > this.state.matches.length) {\n this.state.activeMatchIndex = this.state.matches.length;\n }\n else {\n this.removeActiveMatchMark();\n }\n const mark = document.createElement('span');\n mark.classList.add(this.options.highlightMarkClass);\n this.forEachTextContainer((textContainer) => {\n const matches = Array.from(textContainer.querySelectorAll(toClassSelector(this.options.charClass +\n '[' +\n MATCH_INDEX_DATA_ATTR +\n '=\\'' +\n this.state.activeMatchIndex +\n '\\']')));\n matches.forEach((match) => {\n wrapInnerElement(match, mark.cloneNode(true));\n });\n });\n }\n removeActiveMatchMark() {\n this.forEachTextContainer((textContainer) => {\n const marks = Array.from(textContainer.querySelectorAll(toClassSelector(this.options.highlightMarkClass)));\n const childNodes = marks.flatMap((x) => Array.from(x.childNodes));\n unwrapElements(childNodes);\n });\n }\n removeIndicators() {\n this.removeActiveMatchMark();\n this.removeMatchHighlights();\n }\n markNextMatch() {\n this.markNextMatchIndex();\n this.addActiveMatchMark();\n }\n markPreviousMatch() {\n this.markPreviousMatchIndex();\n this.addActiveMatchMark();\n }\n markNextMatchIndex() {\n this.moveActiveMatchIndex(1);\n }\n markPreviousMatchIndex() {\n this.moveActiveMatchIndex(-1);\n }\n moveActiveMatchIndex(delta) {\n this.state.activeMatchIndex += delta;\n if (this.state.activeMatchIndex < 0) {\n this.state.activeMatchIndex = Math.max(this.state.matches.length - 1, 0);\n }\n else if (this.state.activeMatchIndex >\n this.state.matches.length - 1) {\n this.state.activeMatchIndex = 0;\n }\n }\n getActiveMatchElement() {\n let markedMatch;\n this.forEachTextContainer((textContainer) => {\n const mark = textContainer.querySelector(toClassSelector(this.options.highlightMarkClass));\n if (mark) {\n markedMatch = mark;\n return;\n }\n });\n return markedMatch;\n }\n}\n","export function saveAs(data, fileName, options) {\n if ( options === void 0 ) options = {};\n\n var save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nvar anchor = function () { return document.createElement('a'); };\nvar canDownload = function () { return 'download' in anchor(); };\n\nfunction saveAsBlob(data, fileName) {\n var blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n var parts = data.split(';base64,');\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n var dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n var fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function () { return URL.revokeObjectURL(dataURI); });\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n var form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n var formData = options.proxyData || {};\n formData.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (var name in formData) {\n if (formData.hasOwnProperty(name)) {\n var input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n var input = encodeUTF8(plainText);\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","/**\n * @hidden\n */\nexport var isWindowAvailable = function () {\n return typeof window !== 'undefined';\n};\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nvar agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nvar osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nvar desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nvar mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nvar testRx = function (agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport var detectMobileOS = function (ua) {\n var minorVersion;\n var match = [];\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n var os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport var detectDesktopBrowser = function (ua) {\n var browserInfo = null;\n var match = [];\n for (var agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nvar userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport var browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport var mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport var touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport var msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport var pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport var touchEnabled = mobileOS && (touch || msPointers || pointers);\n","import { fieldList } from './field-list';\nvar getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n var fields = fieldList(field);\n getterCache[field] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ var __webpack_modules__ = ({\n\n/***/ 9306:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar tryToString = __webpack_require__(6823);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n\n/***/ 3506:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPossiblePrototype = __webpack_require__(3925);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n\n/***/ 7080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar has = (__webpack_require__(4402).has);\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 679:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPrototypeOf = __webpack_require__(1625);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n\n/***/ 8551:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n\n/***/ 7811:\n/***/ ((module) => {\n\n\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n\n/***/ }),\n\n/***/ 7394:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar classof = __webpack_require__(2195);\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n\n\n/***/ }),\n\n/***/ 3238:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(7476);\nvar arrayBufferByteLength = __webpack_require__(7394);\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer && ArrayBuffer.prototype;\nvar slice = ArrayBufferPrototype && uncurryThis(ArrayBufferPrototype.slice);\n\nmodule.exports = function (O) {\n if (arrayBufferByteLength(O) !== 0) return false;\n if (!slice) return false;\n try {\n slice(O, 0, 0);\n return false;\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 5169:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isDetached = __webpack_require__(3238);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 5636:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar toIndex = __webpack_require__(7696);\nvar notDetached = __webpack_require__(5169);\nvar arrayBufferByteLength = __webpack_require__(7394);\nvar detachTransferable = __webpack_require__(4483);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n\n\n/***/ }),\n\n/***/ 4644:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar hasOwn = __webpack_require__(9297);\nvar classof = __webpack_require__(6955);\nvar tryToString = __webpack_require__(6823);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIn = __webpack_require__(6840);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar isPrototypeOf = __webpack_require__(1625);\nvar getPrototypeOf = __webpack_require__(2787);\nvar setPrototypeOf = __webpack_require__(2967);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar uid = __webpack_require__(3392);\nvar InternalStateModule = __webpack_require__(1181);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n\n/***/ 5370:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar lengthOfArrayLike = __webpack_require__(6198);\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9617:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIndexedObject = __webpack_require__(5397);\nvar toAbsoluteIndex = __webpack_require__(5610);\nvar lengthOfArrayLike = __webpack_require__(6198);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 4527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar isArray = __webpack_require__(4376);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n\n\n/***/ }),\n\n/***/ 7680:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n\n/***/ 7628:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar lengthOfArrayLike = __webpack_require__(6198);\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n\n\n/***/ }),\n\n/***/ 9928:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar anObject = __webpack_require__(8551);\nvar iteratorClose = __webpack_require__(9539);\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 } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n/***/ }),\n\n/***/ 2195:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n\n/***/ 6955:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\nvar isCallable = __webpack_require__(4901);\nvar classofRaw = __webpack_require__(2195);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 7740:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar ownKeys = __webpack_require__(5031);\nvar getOwnPropertyDescriptorModule = __webpack_require__(7347);\nvar definePropertyModule = __webpack_require__(4913);\n\nmodule.exports = function (target, source, exceptions) {\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 (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n/***/ }),\n\n/***/ 2211:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 2529:\n/***/ ((module) => {\n\n\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n\n\n/***/ }),\n\n/***/ 6699:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\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/***/ 6980:\n/***/ ((module) => {\n\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/***/ 4659:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n\n\n/***/ }),\n\n/***/ 2106:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar makeBuiltIn = __webpack_require__(283);\nvar defineProperty = __webpack_require__(4913);\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n\n\n/***/ }),\n\n/***/ 6840:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar definePropertyModule = __webpack_require__(4913);\nvar makeBuiltIn = __webpack_require__(283);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 6279:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 9433:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 3724:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getBuiltInNodeModule = __webpack_require__(9429);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = getBuiltInNodeModule('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n\n\n/***/ }),\n\n/***/ 4055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 6837:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 5002:\n/***/ ((module) => {\n\n\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n\n\n/***/ }),\n\n/***/ 8727:\n/***/ ((module) => {\n\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/***/ 6193:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar ENVIRONMENT = __webpack_require__(4215);\n\nmodule.exports = ENVIRONMENT === 'NODE';\n\n\n/***/ }),\n\n/***/ 2839:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n\n\n/***/ }),\n\n/***/ 9519:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n/***/ }),\n\n/***/ 4215:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global Bun, Deno -- detection */\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\nvar classof = __webpack_require__(2195);\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n\n\n/***/ }),\n\n/***/ 8574:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n/***/ }),\n\n/***/ 6518:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getOwnPropertyDescriptor = (__webpack_require__(7347).f);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIn = __webpack_require__(6840);\nvar defineGlobalProperty = __webpack_require__(9433);\nvar copyConstructorProperties = __webpack_require__(7740);\nvar isForced = __webpack_require__(2796);\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.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\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 = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 9039:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 8745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n\n/***/ 6080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(7476);\nvar aCallable = __webpack_require__(9306);\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 616:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n/***/ }),\n\n/***/ 9565:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n/***/ }),\n\n/***/ 350:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar hasOwn = __webpack_require__(9297);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n/***/ }),\n\n/***/ 6706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar aCallable = __webpack_require__(9306);\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n\n\n/***/ }),\n\n/***/ 7476:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classofRaw = __webpack_require__(2195);\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n\n\n/***/ }),\n\n/***/ 9504:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 9429:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar IS_NODE = __webpack_require__(6193);\n\nmodule.exports = function (name) {\n if (IS_NODE) {\n try {\n return globalThis.process.getBuiltinModule(name);\n } catch (error) { /* empty */ }\n try {\n // eslint-disable-next-line no-new-func -- safe\n return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n }\n};\n\n\n/***/ }),\n\n/***/ 7751:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 1767:\n/***/ ((module) => {\n\n\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n\n\n/***/ }),\n\n/***/ 8646:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorMethod = __webpack_require__(851);\n\nmodule.exports = function (obj, stringHandling) {\n if (!stringHandling || typeof obj !== 'string') anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n\n\n/***/ }),\n\n/***/ 851:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\nvar getMethod = __webpack_require__(5966);\nvar isNullOrUndefined = __webpack_require__(4117);\nvar Iterators = __webpack_require__(6269);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 81:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar getIteratorMethod = __webpack_require__(851);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n\n/***/ 5966:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar isNullOrUndefined = __webpack_require__(4117);\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n\n\n/***/ }),\n\n/***/ 3789:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar call = __webpack_require__(9565);\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar getIteratorDirect = __webpack_require__(1767);\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n getIterator: function () {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function (it) {\n return call(this.has, this.set, it);\n }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n anObject(obj);\n var numSize = +obj.size;\n // NOTE: If size is undefined, then numSize will be NaN\n // eslint-disable-next-line no-self-compare -- NaN check\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n};\n\n\n/***/ }),\n\n/***/ 4576:\n/***/ (function(module) {\n\n\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 es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 9297:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar toObject = __webpack_require__(8981);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n\n/***/ 421:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 5917:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\nvar createElement = __webpack_require__(4055);\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n\n\n/***/ }),\n\n/***/ 7055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar classof = __webpack_require__(2195);\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n/***/ }),\n\n/***/ 3167:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar setPrototypeOf = __webpack_require__(2967);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 3706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar isCallable = __webpack_require__(4901);\nvar store = __webpack_require__(7629);\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 1181:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_WEAK_MAP = __webpack_require__(8622);\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar hasOwn = __webpack_require__(9297);\nvar shared = __webpack_require__(7629);\nvar sharedKey = __webpack_require__(6119);\nvar hiddenKeys = __webpack_require__(421);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.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 new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(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/***/ 4209:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\nvar Iterators = __webpack_require__(6269);\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/***/ 4376:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(2195);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n\n\n/***/ }),\n\n/***/ 1108:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n\n\n/***/ }),\n\n/***/ 4901:\n/***/ ((module) => {\n\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n\n\n/***/ }),\n\n/***/ 2796:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\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 : isCallable(detection) ? 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/***/ 4117:\n/***/ ((module) => {\n\n\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n\n\n/***/ }),\n\n/***/ 34:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n\n/***/ 3925:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n\n\n/***/ }),\n\n/***/ 6395:\n/***/ ((module) => {\n\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 757:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar isCallable = __webpack_require__(4901);\nvar isPrototypeOf = __webpack_require__(1625);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n/***/ }),\n\n/***/ 507:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n\n\n/***/ }),\n\n/***/ 2652:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar bind = __webpack_require__(6080);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar isArrayIteratorMethod = __webpack_require__(4209);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar isPrototypeOf = __webpack_require__(1625);\nvar getIterator = __webpack_require__(81);\nvar getIteratorMethod = __webpack_require__(851);\nvar iteratorClose = __webpack_require__(9539);\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n/***/ }),\n\n/***/ 9539:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getMethod = __webpack_require__(5966);\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n/***/ }),\n\n/***/ 9462:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar create = __webpack_require__(2360);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIns = __webpack_require__(6279);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar InternalStateModule = __webpack_require__(1181);\nvar getMethod = __webpack_require__(5966);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar createIterResultObject = __webpack_require__(2529);\nvar iteratorClose = __webpack_require__(9539);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n try {\n var result = state.done ? undefined : state.nextHandler();\n return createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, 'normal');\n } catch (error) {\n return iteratorClose(iterator, 'throw', error);\n }\n if (iterator) iteratorClose(iterator, 'normal');\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n\n\n/***/ }),\n\n/***/ 713:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n anObject(this);\n aCallable(mapper);\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n};\n\n\n/***/ }),\n\n/***/ 7657:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar create = __webpack_require__(2360);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltIn = __webpack_require__(6840);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IS_PURE = __webpack_require__(6395);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\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\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 6269:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 6198:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toLength = __webpack_require__(8014);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n/***/ }),\n\n/***/ 283:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar hasOwn = __webpack_require__(9297);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\nvar inspectSource = __webpack_require__(3706);\nvar InternalStateModule = __webpack_require__(1181);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n\n\n/***/ }),\n\n/***/ 741:\n/***/ ((module) => {\n\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n/***/ }),\n\n/***/ 6043:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n\n/***/ 2603:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toString = __webpack_require__(655);\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n\n/***/ 4149:\n/***/ ((module) => {\n\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n // eslint-disable-next-line no-self-compare -- NaN check\n if (it === it) return it;\n throw new $RangeError('NaN is not allowed');\n};\n\n\n/***/ }),\n\n/***/ 2360:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(8551);\nvar definePropertiesModule = __webpack_require__(6801);\nvar enumBugKeys = __webpack_require__(8727);\nvar hiddenKeys = __webpack_require__(421);\nvar html = __webpack_require__(397);\nvar documentCreateElement = __webpack_require__(4055);\nvar sharedKey = __webpack_require__(6119);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 6801:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar definePropertyModule = __webpack_require__(4913);\nvar anObject = __webpack_require__(8551);\nvar toIndexedObject = __webpack_require__(5397);\nvar objectKeys = __webpack_require__(1072);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 4913:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar anObject = __webpack_require__(8551);\nvar toPropertyKey = __webpack_require__(6969);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 7347:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar call = __webpack_require__(9565);\nvar propertyIsEnumerableModule = __webpack_require__(8773);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar toIndexedObject = __webpack_require__(5397);\nvar toPropertyKey = __webpack_require__(6969);\nvar hasOwn = __webpack_require__(9297);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 8480:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 3717:\n/***/ ((__unused_webpack_module, exports) => {\n\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 2787:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar isCallable = __webpack_require__(4901);\nvar toObject = __webpack_require__(8981);\nvar sharedKey = __webpack_require__(6119);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 1625:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n\n/***/ 1828:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\nvar toIndexedObject = __webpack_require__(5397);\nvar indexOf = (__webpack_require__(9617).indexOf);\nvar hiddenKeys = __webpack_require__(421);\n\nvar push = uncurryThis([].push);\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) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 1072:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 8773:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 2967:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar isObject = __webpack_require__(34);\nvar requireObjectCoercible = __webpack_require__(7750);\nvar aPossiblePrototype = __webpack_require__(3506);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 4270:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 5031:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar getOwnPropertyNamesModule = __webpack_require__(8480);\nvar getOwnPropertySymbolsModule = __webpack_require__(3717);\nvar anObject = __webpack_require__(8551);\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 8235:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n '\\\\\"': '\"',\n '\\\\\\\\': '\\\\',\n '\\\\/': '/',\n '\\\\b': '\\b',\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n var unterminated = true;\n var value = '';\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === '\\\\') {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === '\\\\u') {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n return { value: value, end: i };\n};\n\n\n/***/ }),\n\n/***/ 1103:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n/***/ }),\n\n/***/ 7750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isNullOrUndefined = __webpack_require__(4117);\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 9286:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar SetHelpers = __webpack_require__(4402);\nvar iterate = __webpack_require__(8469);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n var result = new Set();\n iterate(set, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 3440:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) remove(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 4402:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n\n\n/***/ }),\n\n/***/ 8750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set();\n\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function (e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n\n return result;\n};\n\n\n/***/ }),\n\n/***/ 4449:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 3838:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar size = __webpack_require__(5170);\nvar iterate = __webpack_require__(8469);\nvar getSetRecord = __webpack_require__(3789);\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n\n\n/***/ }),\n\n/***/ 8527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 8469:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar iterateSimple = __webpack_require__(507);\nvar SetHelpers = __webpack_require__(4402);\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nvar createSetLike = function (size) {\n return {\n size: size,\n has: function () {\n return false;\n },\n keys: function () {\n return {\n next: function () {\n return { done: true };\n }\n };\n }\n };\n};\n\nmodule.exports = function (name) {\n var Set = getBuiltIn('Set');\n try {\n new Set()[name](createSetLike(0));\n try {\n // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it\n // https://github.com/tc39/proposal-set-methods/pull/88\n new Set()[name](createSetLike(-1));\n return false;\n } catch (error2) {\n return true;\n }\n } catch (error) {\n return false;\n }\n};\n\n\n/***/ }),\n\n/***/ 5170:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar SetHelpers = __webpack_require__(4402);\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n return set.size;\n};\n\n\n/***/ }),\n\n/***/ 3650:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 4204:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar add = (__webpack_require__(4402).add);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 6119:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar shared = __webpack_require__(5745);\nvar uid = __webpack_require__(3392);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 7629:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar IS_PURE = __webpack_require__(6395);\nvar globalThis = __webpack_require__(4576);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.39.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n/***/ }),\n\n/***/ 5745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar store = __webpack_require__(7629);\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n\n\n/***/ }),\n\n/***/ 1548:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar fails = __webpack_require__(9039);\nvar V8 = __webpack_require__(9519);\nvar ENVIRONMENT = __webpack_require__(4215);\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n\n\n/***/ }),\n\n/***/ 4495:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(9519);\nvar fails = __webpack_require__(9039);\nvar globalThis = __webpack_require__(4576);\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n/***/ }),\n\n/***/ 5610:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 5854:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toPrimitive = __webpack_require__(2777);\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n\n\n/***/ }),\n\n/***/ 7696:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar toLength = __webpack_require__(8014);\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 5397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(7055);\nvar requireObjectCoercible = __webpack_require__(7750);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 1291:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar trunc = __webpack_require__(741);\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n/***/ }),\n\n/***/ 8014:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 8981:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar requireObjectCoercible = __webpack_require__(7750);\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 9590:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2777:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isObject = __webpack_require__(34);\nvar isSymbol = __webpack_require__(757);\nvar getMethod = __webpack_require__(5966);\nvar ordinaryToPrimitive = __webpack_require__(4270);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n\n/***/ 6969:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toPrimitive = __webpack_require__(2777);\nvar isSymbol = __webpack_require__(757);\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n/***/ }),\n\n/***/ 2140:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 655:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n/***/ }),\n\n/***/ 6823:\n/***/ ((module) => {\n\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n/***/ }),\n\n/***/ 3392:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n\n/***/ 7040:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 8686:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n\n\n/***/ }),\n\n/***/ 2812:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n\n\n/***/ }),\n\n/***/ 8622:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n/***/ }),\n\n/***/ 8227:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar shared = __webpack_require__(5745);\nvar hasOwn = __webpack_require__(9297);\nvar uid = __webpack_require__(3392);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 6573:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar isDetached = __webpack_require__(3238);\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 7936:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n\n\n/***/ }),\n\n/***/ 8100:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n\n\n/***/ }),\n\n/***/ 4114:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar toObject = __webpack_require__(8981);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar setArrayLength = __webpack_require__(4527);\nvar doesNotExceedSafeInteger = __webpack_require__(6837);\nvar fails = __webpack_require__(9039);\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n\n\n/***/ }),\n\n/***/ 8111:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar anInstance = __webpack_require__(679);\nvar anObject = __webpack_require__(8551);\nvar isCallable = __webpack_require__(4901);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar hasOwn = __webpack_require__(9297);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n\n\n/***/ }),\n\n/***/ 9314:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar notANaN = __webpack_require__(4149);\nvar toPositiveInteger = __webpack_require__(9590);\nvar createIteratorProxy = __webpack_require__(9462);\nvar IS_PURE = __webpack_require__(6395);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var next = this.next;\n var result, done;\n while (this.remaining) {\n this.remaining--;\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n }\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (!done) return result.value;\n});\n\n// `Iterator.prototype.drop` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.drop\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n drop: function drop(limit) {\n anObject(this);\n var remaining = toPositiveInteger(notANaN(+limit));\n return new IteratorProxy(getIteratorDirect(this), {\n remaining: remaining\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 1148:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\n\n// `Iterator.prototype.every` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.every\n$({ target: 'Iterator', proto: true, real: true }, {\n every: function every(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return !iterate(record, function (value, stop) {\n if (!predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 2489:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\nvar IS_PURE = __webpack_require__(6395);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n filter: function filter(predicate) {\n anObject(this);\n aCallable(predicate);\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 531:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorFlattenable = __webpack_require__(8646);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorClose = __webpack_require__(9539);\nvar IS_PURE = __webpack_require__(6395);\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n result = anObject(call(this.next, iterator));\n\n if (this.done = !!result.done) return;\n\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n aCallable(mapper);\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper,\n inner: null\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 1701:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar map = __webpack_require__(713);\nvar IS_PURE = __webpack_require__(6395);\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n map: map\n});\n\n\n/***/ }),\n\n/***/ 3579:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true }, {\n some: function some(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 1689:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar apply = __webpack_require__(8745);\nvar slice = __webpack_require__(7680);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\nvar aCallable = __webpack_require__(9306);\nvar perform = __webpack_require__(1103);\n\nvar Promise = globalThis.Promise;\n\nvar ACCEPT_ARGUMENTS = false;\n// Avoiding the use of polyfills of the previous iteration of this proposal\n// that does not accept arguments of the callback\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\n Promise['try'](function (argument) {\n ACCEPT_ARGUMENTS = argument === 8;\n }, 8);\n}).error || !ACCEPT_ARGUMENTS;\n\n// `Promise.try` method\n// https://tc39.es/ecma262/#sec-promise.try\n$({ target: 'Promise', stat: true, forced: FORCED }, {\n 'try': function (callbackfn /* , ...args */) {\n var args = arguments.length > 1 ? slice(arguments, 1) : [];\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(function () {\n return apply(aCallable(callbackfn), undefined, args);\n });\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 4628:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\n\n// `Promise.withResolvers` method\n// https://tc39.es/ecma262/#sec-promise.withResolvers\n$({ target: 'Promise', stat: true }, {\n withResolvers: function withResolvers() {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n return {\n promise: promiseCapability.promise,\n resolve: promiseCapability.resolve,\n reject: promiseCapability.reject\n };\n }\n});\n\n\n/***/ }),\n\n/***/ 7642:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar difference = __webpack_require__(3440);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('difference') }, {\n difference: difference\n});\n\n\n/***/ }),\n\n/***/ 8004:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar fails = __webpack_require__(9039);\nvar intersection = __webpack_require__(8750);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection') || fails(function () {\n // eslint-disable-next-line es/no-array-from, es/no-set -- testing\n return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n intersection: intersection\n});\n\n\n/***/ }),\n\n/***/ 3853:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isDisjointFrom = __webpack_require__(4449);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isDisjointFrom') }, {\n isDisjointFrom: isDisjointFrom\n});\n\n\n/***/ }),\n\n/***/ 5876:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSubsetOf = __webpack_require__(3838);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issubsetof\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSubsetOf') }, {\n isSubsetOf: isSubsetOf\n});\n\n\n/***/ }),\n\n/***/ 2475:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSupersetOf = __webpack_require__(8527);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issupersetof\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('isSupersetOf') }, {\n isSupersetOf: isSupersetOf\n});\n\n\n/***/ }),\n\n/***/ 5024:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar symmetricDifference = __webpack_require__(3650);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n symmetricDifference: symmetricDifference\n});\n\n\n/***/ }),\n\n/***/ 1698:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar union = __webpack_require__(4204);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n union: union\n});\n\n\n/***/ }),\n\n/***/ 7467:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar arrayToReversed = __webpack_require__(7628);\nvar ArrayBufferViewCore = __webpack_require__(4644);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n\n\n/***/ }),\n\n/***/ 4732:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar ArrayBufferViewCore = __webpack_require__(4644);\nvar uncurryThis = __webpack_require__(9504);\nvar aCallable = __webpack_require__(9306);\nvar arrayFromConstructorAndList = __webpack_require__(5370);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n\n\n/***/ }),\n\n/***/ 9577:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar arrayWith = __webpack_require__(9928);\nvar ArrayBufferViewCore = __webpack_require__(4644);\nvar isBigIntArray = __webpack_require__(1108);\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar toBigInt = __webpack_require__(5854);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n\n\n/***/ }),\n\n/***/ 8992:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(8111);\n\n\n/***/ }),\n\n/***/ 4743:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(9314);\n\n\n/***/ }),\n\n/***/ 3215:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(1148);\n\n\n/***/ }),\n\n/***/ 4520:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(2489);\n\n\n/***/ }),\n\n/***/ 670:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(531);\n\n\n/***/ }),\n\n/***/ 1454:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(1701);\n\n\n/***/ }),\n\n/***/ 7550:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(3579);\n\n\n/***/ }),\n\n/***/ 8335:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar isArray = __webpack_require__(4376);\nvar hasOwn = __webpack_require__(9297);\nvar toString = __webpack_require__(655);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar parseJSONString = __webpack_require__(8235);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nvar JSON = globalThis.JSON;\nvar Number = globalThis.Number;\nvar SyntaxError = globalThis.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^[\\d-]$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n source = toString(source);\n var context = new Context(source, 0, '');\n var root = context.parse();\n var value = root.value;\n var endIndex = context.skip(IS_WHITESPACE, root.end);\n if (endIndex < source.length) {\n throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n }\n return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n var val = holder[name];\n var unmodified = node && val === node.value;\n var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n var elementRecordsLen, keys, len, i, P;\n if (isObject(val)) {\n var nodeIsArray = isArray(val);\n var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n if (nodeIsArray) {\n elementRecordsLen = nodes.length;\n len = lengthOfArrayLike(val);\n for (i = 0; i < len; i++) {\n internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n }\n } else {\n keys = enumerableOwnProperties(val);\n len = lengthOfArrayLike(keys);\n for (i = 0; i < len; i++) {\n P = keys[i];\n internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n }\n }\n }\n return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n if (DESCRIPTORS) {\n var descriptor = getOwnPropertyDescriptor(object, key);\n if (descriptor && !descriptor.configurable) return;\n }\n if (value === undefined) delete object[key];\n else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n this.value = value;\n this.end = end;\n this.source = source;\n this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n this.source = source;\n this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n fork: function (nextIndex) {\n return new Context(this.source, nextIndex);\n },\n parse: function () {\n var source = this.source;\n var i = this.skip(IS_WHITESPACE, this.index);\n var fork = this.fork(i);\n var chr = at(source, i);\n if (exec(IS_NUMBER_START, chr)) return fork.number();\n switch (chr) {\n case '{':\n return fork.object();\n case '[':\n return fork.array();\n case '\"':\n return fork.string();\n case 't':\n return fork.keyword(true);\n case 'f':\n return fork.keyword(false);\n case 'n':\n return fork.keyword(null);\n } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n },\n node: function (type, value, start, end, nodes) {\n return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n },\n object: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectKeypair = false;\n var object = {};\n var nodes = {};\n while (i < source.length) {\n i = this.until(['\"', '}'], i);\n if (at(source, i) === '}' && !expectKeypair) {\n i++;\n break;\n }\n // Parsing the key\n var result = this.fork(i).string();\n var key = result.value;\n i = result.end;\n i = this.until([':'], i) + 1;\n // Parsing value\n i = this.skip(IS_WHITESPACE, i);\n result = this.fork(i).parse();\n createProperty(nodes, key, result);\n createProperty(object, key, result.value);\n i = this.until([',', '}'], result.end);\n var chr = at(source, i);\n if (chr === ',') {\n expectKeypair = true;\n i++;\n } else if (chr === '}') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, object, this.index, i, nodes);\n },\n array: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectElement = false;\n var array = [];\n var nodes = [];\n while (i < source.length) {\n i = this.skip(IS_WHITESPACE, i);\n if (at(source, i) === ']' && !expectElement) {\n i++;\n break;\n }\n var result = this.fork(i).parse();\n push(nodes, result);\n push(array, result.value);\n i = this.until([',', ']'], result.end);\n if (at(source, i) === ',') {\n expectElement = true;\n i++;\n } else if (at(source, i) === ']') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, array, this.index, i, nodes);\n },\n string: function () {\n var index = this.index;\n var parsed = parseJSONString(this.source, this.index + 1);\n return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n },\n number: function () {\n var source = this.source;\n var startIndex = this.index;\n var i = startIndex;\n if (at(source, i) === '-') i++;\n if (at(source, i) === '0') i++;\n else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n else throw new SyntaxError('Failed to parse number at: ' + i);\n if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n if (at(source, i) === 'e' || at(source, i) === 'E') {\n i++;\n if (at(source, i) === '+' || at(source, i) === '-') i++;\n var exponentStartIndex = i;\n i = this.skip(IS_DIGIT, i);\n if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n }\n return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n },\n keyword: function (value) {\n var keyword = '' + value;\n var index = this.index;\n var endIndex = index + keyword.length;\n if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n return this.node(PRIMITIVE, value, index, endIndex);\n },\n skip: function (regex, i) {\n var source = this.source;\n for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n return i;\n },\n until: function (array, i) {\n i = this.skip(IS_WHITESPACE, i);\n var chr = at(this.source, i);\n for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n var unsafeInt = '9007199254740993';\n var source;\n nativeParse(unsafeInt, function (key, value, context) {\n source = context.source;\n });\n return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n // Safari 9 bug\n return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n parse: function parse(text, reviver) {\n return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n }\n});\n\n\n/***/ }),\n\n/***/ 5247:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(1689);\n\n\n/***/ }),\n\n/***/ 4979:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar defineProperty = (__webpack_require__(4913).f);\nvar hasOwn = __webpack_require__(9297);\nvar anInstance = __webpack_require__(679);\nvar inheritIfRequired = __webpack_require__(3167);\nvar normalizeStringArgument = __webpack_require__(2603);\nvar DOMExceptionConstants = __webpack_require__(5002);\nvar clearErrorStack = __webpack_require__(8574);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = new Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 4603:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 7566:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 8721:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar uncurryThis = __webpack_require__(9504);\nvar defineBuiltInAccessor = __webpack_require__(2106);\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MissingPDFException: () => (/* reexport */ MissingPDFException),\n OPS: () => (/* reexport */ OPS),\n OutputScale: () => (/* reexport */ OutputScale),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n TextLayer: () => (/* reexport */ TextLayer),\n UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n stopEvent: () => (/* reexport */ stopEvent),\n version: () => (/* reexport */ version)\n});\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js\nvar es_array_push = __webpack_require__(4114);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.detached.js\nvar es_array_buffer_detached = __webpack_require__(6573);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer.js\nvar es_array_buffer_transfer = __webpack_require__(8100);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js\nvar es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-reversed.js\nvar es_typed_array_to_reversed = __webpack_require__(7467);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-sorted.js\nvar es_typed_array_to_sorted = __webpack_require__(4732);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.with.js\nvar es_typed_array_with = __webpack_require__(9577);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.promise.try.js\nvar esnext_promise_try = __webpack_require__(5247);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-exception.stack.js\nvar web_dom_exception_stack = __webpack_require__(4979);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.delete.js\nvar web_url_search_params_delete = __webpack_require__(4603);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.has.js\nvar web_url_search_params_has = __webpack_require__(7566);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.size.js\nvar web_url_search_params_size = __webpack_require__(8721);\n;// ./src/shared/util.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n isWindows: navigator.platform.includes(\"Win\"),\n isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false,\n isWindows: false,\n isFirefox: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n BEZIER_CURVE_TO: 0,\n MOVE_TO: 1,\n LINE_TO: 2,\n QUADRATIC_CURVE_TO: 3,\n RESTORE: 4,\n SAVE: 5,\n SCALE: 6,\n TRANSFORM: 7,\n TRANSLATE: 8\n};\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.with-resolvers.js\nvar es_promise_with_resolvers = __webpack_require__(4628);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.difference.v2.js\nvar es_set_difference_v2 = __webpack_require__(7642);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.intersection.v2.js\nvar es_set_intersection_v2 = __webpack_require__(8004);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js\nvar es_set_is_disjoint_from_v2 = __webpack_require__(3853);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-subset-of.v2.js\nvar es_set_is_subset_of_v2 = __webpack_require__(5876);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-superset-of.v2.js\nvar es_set_is_superset_of_v2 = __webpack_require__(2475);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.symmetric-difference.v2.js\nvar es_set_symmetric_difference_v2 = __webpack_require__(5024);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.union.v2.js\nvar es_set_union_v2 = __webpack_require__(1698);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.iterator.map.js\nvar esnext_iterator_map = __webpack_require__(1454);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.iterator.constructor.js\nvar esnext_iterator_constructor = __webpack_require__(8992);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.iterator.drop.js\nvar esnext_iterator_drop = __webpack_require__(4743);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.iterator.every.js\nvar esnext_iterator_every = __webpack_require__(3215);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.iterator.some.js\nvar esnext_iterator_some = __webpack_require__(7550);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.json.parse.js\nvar esnext_json_parse = __webpack_require__(8335);\n;// ./src/display/display_utils.js\n\n\n\n\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x, 1px))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y, 1px))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this._editorUndoBar?.hide();\n this.#updateModeCapability.resolve();\n return;\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #keepAspectRatio = false;\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n style\n } = this.div;\n style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * width, parentHeight * height);\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n this._uiManager._editorUndoBar?.hide();\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n get isSelected() {\n return this._uiManager.isSelected(this);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.isPrimary && e.pointerType === this.#dragPointerType) {\n cancelDrag(e);\n }\n stopEvent(e);\n }, opts);\n }\n this._onStartDragging();\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n this._onStopDragging();\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\n\n\n\n\n\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\n\n\n\n\n\n\n\n\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, {\n disableFontFace = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n if (!Array.isArray(cmds) || cmds.length === 0) {\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n const commands = [];\n for (let i = 0, ii = cmds.length; i < ii;) {\n switch (cmds[i++]) {\n case FontRenderOps.BEZIER_CURVE_TO:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.MOVE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.moveTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.LINE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.lineTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.QUADRATIC_CURVE_TO:\n {\n const [a, b, c, d] = cmds.slice(i, i + 4);\n commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n i += 4;\n }\n break;\n case FontRenderOps.RESTORE:\n commands.push(ctx => ctx.restore());\n break;\n case FontRenderOps.SAVE:\n commands.push(ctx => ctx.save());\n break;\n case FontRenderOps.SCALE:\n assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n break;\n case FontRenderOps.TRANSFORM:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.TRANSLATE:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.translate(a, b));\n i += 2;\n }\n break;\n }\n }\n commands.push(ctx => ctx.closePath());\n return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n commands[0](ctx);\n commands[1](ctx);\n ctx.scale(size, -size);\n for (let i = 2, ii = commands.length; i < ii; i++) {\n commands[i](ctx);\n }\n };\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\n\n\n\n\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.iterator.filter.js\nvar esnext_iterator_filter = __webpack_require__(4520);\n;// ./src/display/filter_factory.js\n\n\n\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = url.split(\"#\", 1)[0];\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\n\n\n\n\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\n\n\n\n\n\nif (isNodeJS) {\n let canvas;\n try {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n try {\n canvas = require(\"@napi-rs/canvas\");\n } catch (ex) {\n warn(`Cannot load \"@napi-rs/canvas\" package: \"${ex}\".`);\n }\n } catch {}\n if (!globalThis.DOMMatrix) {\n if (canvas?.DOMMatrix) {\n globalThis.DOMMatrix = canvas.DOMMatrix;\n } else {\n warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n }\n }\n if (!globalThis.ImageData) {\n if (canvas?.ImageData) {\n globalThis.ImageData = canvas.ImageData;\n } else {\n warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n }\n }\n if (!globalThis.Path2D) {\n if (canvas?.Path2D) {\n globalThis.Path2D = canvas.Path2D;\n } else {\n warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n }\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\n\n\n\n\n\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.patternStroke = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n const backdropRGB = Util.makeHexColor(...backdrop);\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdropRGB;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdropRGB;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill || patternStroke) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n ctx.setTransform(...patternFillTransform);\n }\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n ctx.setTransform(...patternStrokeTransform);\n }\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n this.current.patternStroke = true;\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n this.current.patternStroke = false;\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(r, g, b) {\n this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.ctx.beginPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/shared/message_handler.js\n\n\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\n\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n try {\n return new URL(url).origin;\n } catch {}\n return null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\n\n\n\n\n\n\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\n\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trim().split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n this.#ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/xfa_text.js\n\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/api.js\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\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || DefaultCanvasFactory;\n const FilterFactory = src.FilterFactory || DefaultFilterFactory;\n const enableHWA = src.enableHWA === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n if (src.canvasFactory) {\n deprecated(\"`canvasFactory`-instance option, please use `CanvasFactory` instead.\");\n }\n if (src.filterFactory) {\n deprecated(\"`filterFactory`-instance option, please use `FilterFactory` instead.\");\n }\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n })\n };\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"4.9.155\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n disableFontFace,\n fontExtraProperties,\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n let NetworkStream;\n if (isNodeJS) {\n if (isValidFetchUrl(url)) {\n if (typeof fetch === \"undefined\" || typeof Response === \"undefined\" || !(\"body\" in Response.prototype)) {\n throw new Error(\"getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.\");\n }\n NetworkStream = PDFFetchStream;\n } else {\n NetworkStream = PDFNodeStream;\n }\n } else {\n NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n }\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\nclass PDFWorker {\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts;\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this.#resolve();\n }\n _initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this._setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this._webWorker?.terminate();\n this._webWorker = null;\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n this._messageHandler?.destroy();\n this._messageHandler = null;\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n const {\n disableFontFace,\n fontExtraProperties,\n pdfBug\n } = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, {\n disableFontFace,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.cMapReaderFactory) {\n throw new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.standardFontDataFactory) {\n throw new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"4.9.155\";\nconst build = \"a4eb8407c\";\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.iterator.flat-map.js\nvar esnext_iterator_flat_map = __webpack_require__(670);\n;// ./src/shared/scripting_utils.js\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/xfa_layer.js\n\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n const {\n width,\n height\n } = getRectDims(rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", ``, ``];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(``);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n }\n } = this;\n if (!vertices) {\n return this.container;\n }\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\n\n\n\n\n\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\n\n\n\n\n\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const bbox = this.#bbox;\n bbox[0] = minX - this.#innerMargin;\n bbox[1] = minY - this.#innerMargin;\n bbox[2] = maxX - minX + 2 * this.#innerMargin;\n bbox[3] = maxY - minY + 2 * this.#innerMargin;\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightOutliner {\n #box;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n #type;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.#opacity = opa;\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: col,\n \"fill-opacity\": opa\n }\n });\n this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n const savedOpacity = this.#opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded() {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this.div.focus();\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.#opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\n\n\n\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n this.updateProperty(name, value);\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentDraw = null;\n static _currentDrawingOptions = null;\n static _currentParent = null;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n this._currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(x, y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox(x, y)\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded() {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, {\n target,\n offsetX: x,\n offsetY: y\n }) {\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n window.addEventListener(\"pointerup\", e => {\n ac.abort();\n parent.toggleDrawing(true);\n this._endDraw(e);\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (this._currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, this._currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n this._currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n this._currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(this._currentDrawingOptions.toSVGProperties(), this._currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove({\n offsetX,\n offsetY\n }) {\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._currentDraw.add(offsetX, offsetY));\n }\n static _endDraw({\n offsetX,\n offsetY\n }) {\n const parent = this._currentParent;\n parent.drawLayer.updateProperties(this._currentDrawId, this._currentDraw.end(offsetX, offsetY));\n if (this.supportMultipleDrawings) {\n const draw = this._currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!this._currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: this._currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: this._currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup();\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup();\n return null;\n }\n static _cleanup() {\n this._currentDrawId = -1;\n this._currentDraw = null;\n this._currentDrawingOptions = null;\n this._currentParent = null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\n\n\n\n\n\n\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new InkDrawOutline();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n const [x, y] = line.subarray(i, i + 2);\n bbox[0] = Math.min(bbox[0], x);\n bbox[1] = Math.min(bbox[1], y);\n bbox[2] = Math.max(bbox[2], x);\n bbox[3] = Math.max(bbox[3], y);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = Math.min(1, Math.max(0, bbox[0] - marginX));\n bbox[1] = Math.min(1, Math.max(0, bbox[1] - marginY));\n bbox[2] = Math.min(1, Math.max(0, bbox[2] + marginX));\n bbox[3] = Math.min(1, Math.max(0, bbox[3] + marginY));\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n #viewParameters;\n constructor(viewerParameters) {\n super();\n this.#viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this.#viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this.#viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.INK,\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n },\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points\n });\n return null;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.div.setAttribute(\"role\", \"figure\");\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width && !this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * outputScale.sx);\n const scaledHeight = Math.ceil(height * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n getImageForAltText() {\n return this.#canvas;\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n if (!this._uiManager._signal) {\n return;\n }\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n const canvas = container.querySelector(\"canvas\");\n const imageData = uiManager.imageManager.getFromCanvas(container.id, canvas);\n canvas.remove();\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: imageData.id,\n bitmap: imageData.bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n editor.annotationElementId = data.id || null;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n }\n serialized.id = this.annotationElementId;\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #drawingAC = null;\n #textLayer = null;\n #textSelectionAC = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n this.div.addEventListener(\"pointerup\", this.pointerup.bind(this), {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus();\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = this.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = this.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.9.155\";\nconst pdfjsBuild = \"a4eb8407c\";\n{\n globalThis.pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__stopEvent = __webpack_exports__.stopEvent;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__stopEvent as stopEvent, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","import { createElement, scrollToPage } from './utils';\nclass Annotation {\n constructor(container, viewport, annotation, pdfDoc, zoom, rootElement) {\n this.container = container;\n this.viewport = viewport;\n this.zoom = zoom;\n this.annotation = annotation;\n this.pdfDoc = pdfDoc;\n this.rootElement = rootElement;\n }\n destroy() {\n }\n}\nexport class LinkAnnotation extends Annotation {\n constructor(container, viewport, annotation, pdfDoc, zoom, rootElement) {\n super(container, viewport, annotation, pdfDoc, zoom, rootElement);\n this.onLinkClick = (e) => {\n const destination = e.target.getAttribute('href');\n if (destination && destination.indexOf('#') === 0) {\n this.navigateToDestination(destination);\n e.preventDefault();\n }\n };\n this.linkElement = null;\n this.renderAnnotation();\n this.bindEvents();\n }\n destroy() {\n this.unbindEvents();\n }\n bindEvents() {\n this.linkElement.addEventListener('click', this.onLinkClick);\n }\n unbindEvents() {\n this.linkElement.removeEventListener('click', this.onLinkClick);\n }\n navigateToDestination(destination) {\n const dest = destination.split('#')[1];\n this.pdfDoc.getDestination(dest).then(r => {\n this.pdfDoc.getPageIndex(r[0]).then(i => this.goToPage(i));\n });\n }\n goToPage(pageNumber) {\n scrollToPage(this.rootElement, pageNumber);\n }\n renderAnnotation() {\n const annotation = this.annotation, viewport = this.viewport, rect = annotation.rect, boundingRect = [\n [rect[0], rect[1]],\n [rect[2], rect[3]]\n ], rawHeight = viewport.rawDims.pageHeight;\n const left = Math.min(boundingRect[0][0], boundingRect[1][0]) * this.zoom, top = (rawHeight - Math.max(boundingRect[0][1], boundingRect[1][1])) * this.zoom, width = (boundingRect[1][0] - boundingRect[0][0]) * this.zoom, height = (boundingRect[1][1] - boundingRect[0][1]) * this.zoom;\n const url = annotation.url || (annotation.dest && `#${encodeURI(annotation.dest)}`);\n const annotationElement = createElement('span', '', {\n position: 'absolute',\n left: left + 'pt',\n top: top + 'pt'\n });\n const linkElement = this.linkElement = createElement('a', '', {\n width: width + 'pt',\n height: height + 'pt',\n display: 'inline-block',\n pointerEvents: 'auto'\n });\n linkElement.setAttribute('href', url);\n annotationElement.append(linkElement);\n this.container.append(annotationElement);\n }\n}\n","import { saveAs } from '@progress/kendo-file-saver';\nimport { detectDesktopBrowser, detectMobileOS } from '@progress/kendo-common';\nimport { getDocument, TextLayer } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { LinkAnnotation } from './annotations';\nconst MAX_CANVAS_WIDTH_HEIGHT_CHROME = 65535;\nconst MAX_CANVAS_AREA_CHROME_SAFARI = 268435456;\nconst MAX_CANVAS_WIDTH_HEIGHT_FIREFOX = 32767;\nconst MAX_CANVAS_AREA_FIREFOX = 124992400;\nconst MAX_CANVAS_WIDTH_SAFARI = 4194303;\nconst MAX_CANVAS_HEIGHT_SAFARI = 8388607;\nconst isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) || (navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /Macintosh/i.test(navigator.userAgent));\nconst isSafari = (userAgent) => {\n return detectDesktopBrowser(userAgent).safari ||\n (detectMobileOS(userAgent) && detectMobileOS(userAgent).browser === 'mobilesafari');\n};\nconst isFirefox = (userAgent) => {\n const desktopBrowser = detectDesktopBrowser(userAgent);\n const mobileOS = detectMobileOS(userAgent);\n return (desktopBrowser && desktopBrowser.mozilla) || (mobileOS && mobileOS.browser === 'firefox');\n};\n/**\n * @hidden\n */\nexport const DEFAULT_ZOOM_LEVEL = 1.25;\nexport const scale = () => (isIOS() ? devicePixelRatio : devicePixelRatio * 3);\nexport const parsePdfFromBase64String = (base64String) => {\n return atob(base64String.replace(/^(data:application\\/pdf;base64,)/gi, ''));\n};\nconst getDocumentParameters = (options) => {\n let params = {\n verbosity: 0,\n isEvalSupported: false\n };\n if (typeof options.data === 'string') {\n params.data = parsePdfFromBase64String(options.data);\n }\n else if (typeof options.url === 'string') {\n params.url = options.url;\n }\n else if (options.arrayBuffer instanceof ArrayBuffer) {\n params = options.arrayBuffer;\n }\n else if (options.typedArray) {\n params = options.typedArray;\n }\n return params;\n};\n/**\n * @hidden\n */\nexport const removeChildren = (dom) => {\n while (dom.firstChild) {\n dom.removeChild(dom.firstChild);\n }\n};\nconst appendPage = (dom, page, index) => {\n if (index === 0) {\n removeChildren(dom);\n }\n dom.appendChild(page);\n};\n/**\n * @hidden\n */\nexport const download = (options, fileName = 'Document', saveOptions = {}, onDownload) => {\n if (options.pdf) {\n options.pdf\n .getData()\n .then((data) => new Blob([data], { type: 'application/pdf' }))\n .then((blob) => {\n if (!onDownload(blob, fileName, saveOptions)) {\n saveAs(blob, fileName, saveOptions);\n }\n })\n .catch((reason) => {\n options.error.call(undefined, reason);\n });\n }\n};\n/**\n * @hidden\n */\nexport const loadPDF = (options) => {\n const params = getDocumentParameters(options);\n const { dom, zoom, done, error, rootElement } = options;\n const loadOnDemandPageSize = options.loadOnDemandPageSize || 2;\n getDocument(params)\n .promise.then((pdfDoc) => {\n const pages = [];\n for (let i = 1; i <= pdfDoc.numPages; i++) {\n pages.push(pdfDoc.getPage(i));\n }\n return { pages, pdfDoc };\n }).then(({ pages, pdfDoc }) => {\n Promise.all(pages)\n .then((all) => all.map((page, i) => {\n const emptyPage = createEmptyPage(page, zoom, pdfDoc, rootElement);\n appendPage(dom, emptyPage.pageElement, i);\n if (options.loadOnDemand) {\n // If LOD is enabled, render the first two(default) or X pages initially.\n if (i < loadOnDemandPageSize) {\n renderPage(page, emptyPage, error);\n }\n }\n else {\n renderPage(page, emptyPage, error);\n }\n page._pageInfo.emptyPage = emptyPage;\n return page;\n })).then((pdfPages) => {\n // required by new PDFJS version\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(`.hiddenCanvasElement {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n display: none;\n }`);\n options.dom.ownerDocument.adoptedStyleSheets = [sheet];\n done({ pdfPages, pdfDoc, zoom });\n })\n .catch((reason) => {\n options.error(reason);\n });\n })\n .catch((reason) => {\n options.error(reason);\n });\n};\n/**\n * @hidden\n */\nexport const reloadDocument = (params) => {\n const { pdfDoc, zoom, dom, done, error, loadOnDemand, rootElement } = params;\n const pages = [];\n let currentPageIndex = 0;\n // Save the index of the current page in view before we reload the document.\n if (loadOnDemand && rootElement) {\n currentPageIndex = currentPage(rootElement);\n }\n for (let i = 1; i <= pdfDoc.numPages; i++) {\n pages.push(pdfDoc.getPage(i));\n }\n Promise.all(pages)\n .then((all) => all.map((page, i) => {\n // Set 'rendered' back to false so that the pages can be re-rendered when scrolling.\n page._pageInfo.rendered = false;\n const emptyPage = createEmptyPage(page, zoom, pdfDoc, rootElement);\n appendPage(dom, emptyPage.pageElement, i);\n // If on demand is not enabled, proceed as usual.\n if (!loadOnDemand) {\n renderPage(page, emptyPage, error);\n }\n page._pageInfo.emptyPage = emptyPage;\n return page;\n }))\n .then((pdfPages) => {\n /* If on demand is enabled, render the page that was previously in view.\n Then scroll to that page. */\n if (loadOnDemand) {\n const page = pdfPages[currentPageIndex];\n renderPage(page, page._pageInfo.emptyPage, error);\n scrollToPage(rootElement, currentPageIndex);\n }\n done(pdfPages);\n })\n .catch(error);\n};\n/**\n * @hidden\n */\nexport const print = (pages, done, error) => {\n const dom = document.createElement('div');\n const allDone = pages.map(() => false);\n const scaleNum = scale();\n pages.forEach((page, index) => {\n const viewport = renderCanvas(page, (el) => {\n dom.appendChild(el);\n allDone[index] = true;\n if (allDone.every(Boolean)) {\n openPrintDialog(dom, Math.floor(viewport.width / scaleNum), Math.floor(viewport.height / scaleNum), done, error);\n }\n }, error);\n });\n};\nconst openPrintDialog = (dom, width, height, done, onError) => {\n const printDialog = window.open('', '', 'innerWidth=' +\n width +\n ',innerHeight=' +\n height +\n 'location=no,titlebar=no,toolbar=no');\n if (!printDialog || !printDialog.document) {\n onError();\n return;\n }\n if (printDialog) {\n printDialog.document.body.style.margin = '0';\n printDialog.document.body.appendChild(dom);\n printDialog.focus();\n setTimeout(() => {\n printDialog.print();\n done();\n });\n const onAfterPrint = () => {\n printDialog.removeEventListener('afterprint', onAfterPrint);\n printDialog.close();\n };\n printDialog.addEventListener('afterprint', onAfterPrint);\n }\n};\nconst createEmptyPage = (page, zoom, pdfDoc, rootElement) => {\n const { canvasContext, viewport, pageElement, styles } = createCanvas(page, zoom, 'k-page');\n return {\n canvasContext,\n viewport,\n pageElement,\n styles,\n zoom,\n pdfDoc,\n rootElement\n };\n};\nconst renderCanvas = (page, done, error) => {\n const { canvasContext, viewport, scaleNum, canvas, pageElement } = createCanvas(page);\n page.render({ canvasContext, viewport })\n .promise.then(() => {\n const printContent = new Image(Math.floor((viewport.width / scaleNum)), Math.floor((viewport.height / scaleNum)));\n printContent.src = canvas.toDataURL();\n const onload = () => {\n printContent.removeEventListener('load', onload);\n done(pageElement);\n };\n printContent.addEventListener('load', onload);\n })\n .catch(error);\n return viewport;\n};\nexport const createElement = function (name, className, styles) {\n const element = document.createElement(name);\n if (className) {\n element.className = className;\n }\n Object.keys(styles).forEach((key) => (element.style[key] = styles[key]));\n return element;\n};\nexport const transforms = {\n '0': '',\n '90': 'rotate(90deg) translateY(-100%)',\n '180': 'rotate(180deg) translate(-100%, -100%)',\n '270': 'rotate(270deg) translateX(-100%)'\n};\nexport const renderPage = (page, emptyPage, error) => {\n const { canvasContext, viewport, pageElement, styles, zoom, pdfDoc, rootElement } = emptyPage;\n page._pageInfo.renderInProgress = true;\n page.render({ canvasContext, viewport })\n .promise.then(() => {\n page.getTextContent().then((textContent) => {\n const textLayer = createElement('div', 'k-text-layer', styles);\n new TextLayer({\n textContentSource: textContent,\n container: textLayer,\n viewport: viewport\n }).render().then(() => {\n textLayer.style.width = textLayer.style.width.replace(/px/g, 'pt');\n textLayer.style.height = textLayer.style.height.replace(/px/g, 'pt');\n const rotation = textLayer.getAttribute('data-main-rotation') || '0';\n if (transforms[rotation]) {\n textLayer.style.transform = transforms[rotation];\n textLayer.style.transformOrigin = 'top left';\n }\n textLayer.querySelectorAll('span').forEach((el) => {\n if (el.style.fontSize) {\n el.style.fontSize = el.style.fontSize.replace(/px/g, 'pt');\n }\n });\n pageElement.prepend(textLayer); // Use prepend to ensure the element is always inserted before the annotation layer.\n }).catch(error);\n });\n page.getAnnotations({ intent: 'display' }).then((annotations) => {\n const annotationLayer = createElement('div', 'k-annotations-layer', {\n position: 'absolute',\n top: '0',\n left: '0',\n overflow: 'hidden',\n height: styles.height,\n width: styles.width,\n pointerEvents: 'none'\n });\n pageElement.appendChild(annotationLayer);\n for (const annotation of annotations) {\n switch (annotation.subtype) {\n case 'Link':\n new LinkAnnotation(annotationLayer, viewport, annotation, pdfDoc, zoom, rootElement);\n break;\n default:\n null;\n }\n }\n });\n })\n .then(() => {\n page._pageInfo.rendered = true;\n page._pageInfo.renderInProgress = false;\n })\n .catch(error);\n return pageElement;\n};\nconst searchMatchScrollLeftOffset = 0;\nconst searchMatchScrollTopOffset = -64;\nconst scrollToSearchMatch = (matchElement, ref) => {\n if (!matchElement) {\n return;\n }\n const closestCharElement = matchElement.closest('.k-text-char');\n const closestTextElement = closestCharElement\n ? closestCharElement.closest('span[role=\"presentation\"]')\n : null;\n if (!closestTextElement) {\n return;\n }\n const closestPageElement = closestTextElement.closest('.k-page');\n if (!closestPageElement) {\n return;\n }\n const scrollLeft = closestPageElement.offsetLeft +\n -1 * ref.scroller.element.offsetLeft +\n closestTextElement.offsetLeft +\n searchMatchScrollLeftOffset;\n const scrollTop = closestPageElement.offsetTop +\n -1 * ref.scroller.element.offsetTop +\n closestTextElement.offsetTop +\n searchMatchScrollTopOffset;\n ref.scroller.scrollTo(scrollLeft, scrollTop, { trackScrollEvent: false });\n};\n/**\n * @hidden\n */\nexport const goToNextSearchMatch = (ref) => {\n ref.search.markNextMatch();\n const matchElement = ref.search.getActiveMatchElement();\n scrollToSearchMatch(matchElement, ref);\n};\n/**\n * @hidden\n */\nexport const goToPreviousSearchMatch = (ref) => {\n ref.search.markPreviousMatch();\n const matchElement = ref.search.getActiveMatchElement();\n scrollToSearchMatch(matchElement, ref);\n};\n/**\n * @hidden\n */\nexport const calculateZoomLevel = (zoomLevel, zoomLevelType, currentZoom, dom) => {\n const documentContainer = dom.closest('.k-pdf-viewer-canvas');\n const page = dom.querySelector('.k-page');\n const pageSize = { width: page.offsetWidth, height: page.offsetHeight };\n let calculatedZoomLevel = zoomLevel;\n if (zoomLevelType === 'ActualWidth') {\n calculatedZoomLevel = 1;\n }\n else if (zoomLevelType === 'FitToWidth') {\n calculatedZoomLevel =\n documentContainer.offsetWidth / (pageSize.width / currentZoom);\n }\n else if (zoomLevelType === 'FitToPage') {\n calculatedZoomLevel =\n documentContainer.offsetHeight / (pageSize.height / currentZoom);\n }\n return calculatedZoomLevel;\n};\n/**\n * Scrolls the PDFViewer document to the passed page number.\n *\n * @param rootElement The root HTML element of the PDFViewer component.\n * @param pageNumber The page number.\n */\nexport const scrollToPage = (rootElement, pageNumber) => {\n const pages = rootElement.querySelectorAll('.k-page');\n const page = pages[0];\n if (page instanceof HTMLDivElement) {\n const top = (page.offsetHeight + page.offsetTop) *\n Math.max(0, Math.min(pageNumber, pages.length - 1));\n const scrollElement = page.closest('.k-pdf-viewer-canvas');\n if (scrollElement) {\n scrollElement.scrollTo({ top, behavior: 'auto' });\n }\n }\n};\n/**\n * A function which gives you the page number of the document according to the scroll position.\n *\n * @param rootElement The root HTML element of the PDFViewer component.\n * @returns The page number.\n */\nexport const currentPage = (rootElement) => {\n const scrollElement = rootElement.querySelector('.k-pdf-viewer-canvas');\n const page = rootElement.querySelector('.k-page');\n return scrollElement && page\n ? Math.floor(Math.round(scrollElement.scrollTop) /\n (page.offsetHeight + page.offsetTop) +\n 0.01)\n : 0;\n};\n/**\n * @hidden\n *\n * related to https://github.com/telerik/kendo-pdfviewer-common/issues/6\n * the bigger the canvas size, the worse the performance;\n * if initial size after scaling is greater than browser limits,\n * we are limiting it to the limits, then halving it for performance.\n */\nexport const adjustCanvasSize = (targetWidth, targetHeight) => {\n const { maxWidth, maxHeight, maxArea } = isFirefox(navigator.userAgent) ?\n { maxWidth: MAX_CANVAS_WIDTH_HEIGHT_FIREFOX, maxHeight: MAX_CANVAS_WIDTH_HEIGHT_FIREFOX, maxArea: MAX_CANVAS_AREA_FIREFOX } :\n isSafari(navigator.userAgent) ?\n { maxWidth: MAX_CANVAS_WIDTH_SAFARI, maxHeight: MAX_CANVAS_HEIGHT_SAFARI, maxArea: MAX_CANVAS_AREA_CHROME_SAFARI } :\n {\n maxWidth: MAX_CANVAS_WIDTH_HEIGHT_CHROME,\n maxHeight: MAX_CANVAS_WIDTH_HEIGHT_CHROME,\n maxArea: MAX_CANVAS_AREA_CHROME_SAFARI\n };\n let adjustedWidth = targetWidth;\n let adjustedHeight = targetHeight;\n const ratio = targetWidth / targetHeight;\n if (targetWidth > maxWidth) {\n adjustedWidth = maxWidth;\n const deltaWidth = targetWidth - maxWidth;\n const deltaHeight = deltaWidth / ratio;\n adjustedHeight = targetHeight - deltaHeight;\n }\n if (adjustedHeight > maxHeight) {\n const deltaHeight = adjustedHeight - maxHeight;\n const deltaWidth = deltaHeight * ratio;\n adjustedHeight = maxHeight;\n adjustedWidth -= deltaWidth;\n }\n const adjustedArea = adjustedWidth * adjustedHeight;\n if (adjustedArea > maxArea) {\n const areaRatio = Math.sqrt(maxArea / adjustedArea);\n adjustedWidth *= areaRatio;\n adjustedHeight *= areaRatio;\n }\n const adjustRatio = adjustedWidth / targetWidth;\n return {\n adjustedWidth: adjustedWidth !== targetWidth ? Math.floor(adjustedWidth / 2) : targetWidth,\n adjustedHeight: adjustedHeight !== targetHeight ? Math.floor(adjustedHeight / 2) : targetHeight,\n adjustRatio: adjustRatio !== 1 ? adjustRatio / 2 : 1\n };\n};\nconst createCanvas = (page, zoom = 1, cssClass = '') => {\n const scaleNum = scale();\n const viewport = page.getViewport({ scale: scaleNum });\n const { adjustedWidth, adjustedHeight, adjustRatio } = adjustCanvasSize(viewport.width, viewport.height);\n const styles = {\n width: Math.floor(viewport.width / scaleNum) * zoom + 'pt',\n height: Math.floor(viewport.height / scaleNum) * zoom + 'pt'\n };\n const pageElement = createElement('div', cssClass, styles);\n const canvas = createElement('canvas', '', {\n width: '100%',\n height: '100%'\n });\n canvas.height = adjustedHeight;\n canvas.width = adjustedWidth;\n const canvasContext = canvas.getContext('2d');\n pageElement.appendChild(canvas);\n const adjustedScale = adjustRatio * scaleNum;\n viewport.width = adjustedWidth;\n viewport.height = adjustedHeight;\n viewport.scale = adjustedScale;\n return {\n canvasContext,\n viewport,\n scaleNum,\n canvas,\n pageElement,\n styles\n };\n};\n","export const clamp = (value, min, max) => Math.min(max, Math.max(min, value));\n","export const addClass = (className, element) => {\n element.classList.add(className);\n};\nexport const removeClass = (className, element) => {\n element.classList.remove(className);\n};\nexport const hasClass = (className, element) => {\n if (element instanceof HTMLElement) {\n return element.classList.contains(className);\n }\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// /* globals process */\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/processprocessversionselectron-readonly\n// https://www.electronjs.org/docs/api/processprocesstype-readonly\n// const isNodeJS =\n// (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n// typeof process === \"object\" &&\n// process + \"\" === \"[object process]\" &&\n// !process.versions.nw &&\n// !(process.versions.electron && process.type && process.type !== \"browser\");\n// const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n// const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n// const MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - SAVE is used, on the worker-thread, when saving modified annotations.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - IS_EDITING is used when editing is active in the viewer.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\n// const RenderingIntentFlag = {\n// ANY: 0x01,\n// DISPLAY: 0x02,\n// PRINT: 0x04,\n// SAVE: 0x08,\n// ANNOTATIONS_FORMS: 0x10,\n// ANNOTATIONS_STORAGE: 0x20,\n// ANNOTATIONS_DISABLE: 0x40,\n// IS_EDITING: 0x80,\n// OPLIST: 0x100\n// };\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35\n};\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\n// const PermissionFlag = {\n// PRINT: 0x04,\n// MODIFY_CONTENTS: 0x08,\n// COPY: 0x10,\n// MODIFY_ANNOTATIONS: 0x20,\n// FILL_INTERACTIVE_FORMS: 0x100,\n// COPY_FOR_ACCESSIBILITY: 0x200,\n// ASSEMBLE: 0x400,\n// PRINT_HIGH_QUALITY: 0x800\n// };\n// const TextRenderingMode = {\n// FILL: 0,\n// STROKE: 1,\n// FILL_STROKE: 2,\n// INVISIBLE: 3,\n// FILL_ADD_TO_PATH: 4,\n// STROKE_ADD_TO_PATH: 5,\n// FILL_STROKE_ADD_TO_PATH: 6,\n// ADD_TO_PATH: 7,\n// FILL_STROKE_MASK: 3,\n// ADD_TO_PATH_FLAG: 4\n// };\n// const ImageKind = {\n// GRAYSCALE_1BPP: 1,\n// RGB_24BPP: 2,\n// RGBA_32BPP: 3\n// };\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\n// const DocumentActionEventType = {\n// WC: \"WillClose\",\n// WS: \"WillSave\",\n// DS: \"DidSave\",\n// WP: \"WillPrint\",\n// DP: \"DidPrint\"\n// };\n// const PageActionEventType = {\n// O: \"PageOpen\",\n// C: \"PageClose\"\n// };\n// const VerbosityLevel = {\n// ERRORS: 0,\n// WARNINGS: 1,\n// INFOS: 5\n// };\n// const CMapCompressionType = {\n// NONE: 0,\n// BINARY: 1\n// };\n// // All the possible operations for an operator list.\n// const OPS = {\n// // Intentionally start from 1 so it is easy to spot bad operators that will be\n// // 0's.\n// // PLEASE NOTE: We purposely keep any removed operators commented out, since\n// // re-numbering the list would risk breaking third-party users.\n// dependency: 1,\n// setLineWidth: 2,\n// setLineCap: 3,\n// setLineJoin: 4,\n// setMiterLimit: 5,\n// setDash: 6,\n// setRenderingIntent: 7,\n// setFlatness: 8,\n// setGState: 9,\n// save: 10,\n// restore: 11,\n// transform: 12,\n// moveTo: 13,\n// lineTo: 14,\n// curveTo: 15,\n// curveTo2: 16,\n// curveTo3: 17,\n// closePath: 18,\n// rectangle: 19,\n// stroke: 20,\n// closeStroke: 21,\n// fill: 22,\n// eoFill: 23,\n// fillStroke: 24,\n// eoFillStroke: 25,\n// closeFillStroke: 26,\n// closeEOFillStroke: 27,\n// endPath: 28,\n// clip: 29,\n// eoClip: 30,\n// beginText: 31,\n// endText: 32,\n// setCharSpacing: 33,\n// setWordSpacing: 34,\n// setHScale: 35,\n// setLeading: 36,\n// setFont: 37,\n// setTextRenderingMode: 38,\n// setTextRise: 39,\n// moveText: 40,\n// setLeadingMoveText: 41,\n// setTextMatrix: 42,\n// nextLine: 43,\n// showText: 44,\n// showSpacedText: 45,\n// nextLineShowText: 46,\n// nextLineSetSpacingShowText: 47,\n// setCharWidth: 48,\n// setCharWidthAndBounds: 49,\n// setStrokeColorSpace: 50,\n// setFillColorSpace: 51,\n// setStrokeColor: 52,\n// setStrokeColorN: 53,\n// setFillColor: 54,\n// setFillColorN: 55,\n// setStrokeGray: 56,\n// setFillGray: 57,\n// setStrokeRGBColor: 58,\n// setFillRGBColor: 59,\n// setStrokeCMYKColor: 60,\n// setFillCMYKColor: 61,\n// shadingFill: 62,\n// beginInlineImage: 63,\n// beginImageData: 64,\n// endInlineImage: 65,\n// paintXObject: 66,\n// markPoint: 67,\n// markPointProps: 68,\n// beginMarkedContent: 69,\n// beginMarkedContentProps: 70,\n// endMarkedContent: 71,\n// beginCompat: 72,\n// endCompat: 73,\n// paintFormXObjectBegin: 74,\n// paintFormXObjectEnd: 75,\n// beginGroup: 76,\n// endGroup: 77,\n// // beginAnnotations: 78,\n// // endAnnotations: 79,\n// beginAnnotation: 80,\n// endAnnotation: 81,\n// // paintJpegXObject: 82,\n// paintImageMaskXObject: 83,\n// paintImageMaskXObjectGroup: 84,\n// paintImageXObject: 85,\n// paintInlineImageXObject: 86,\n// paintInlineImageXObjectGroup: 87,\n// paintImageXObjectRepeat: 88,\n// paintImageMaskXObjectRepeat: 89,\n// paintSolidColorImageMask: 90,\n// constructPath: 91,\n// setStrokeTransparent: 92,\n// setFillTransparent: 93\n// };\n// const PasswordResponses = {\n// NEED_PASSWORD: 1,\n// INCORRECT_PASSWORD: 2\n// };\n// let verbosity = VerbosityLevel.WARNINGS;\n// function setVerbosityLevel(level) {\n// if (Number.isInteger(level)) {\n// verbosity = level;\n// }\n// }\n// function getVerbosityLevel() {\n// return verbosity;\n// }\n// // A notice for devs. These are good for things that are helpful to devs, such\n// // as warning that Workers were disabled, which is important to devs but not\n// // end users.\n// function info(msg) {\n// if (verbosity >= VerbosityLevel.INFOS) {\n// console.log(`Info: ${msg}`);\n// }\n// }\n// // Non-fatal warnings.\n// function warn(msg) {\n// if (verbosity >= VerbosityLevel.WARNINGS) {\n// console.log(`Warning: ${msg}`);\n// }\n// }\n// function unreachable(msg) {\n// throw new Error(msg);\n// }\n// function assert(cond, msg) {\n// if (!cond) {\n// unreachable(msg);\n// }\n// }\n// // Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\n// function _isValidProtocol(url) {\n// if (!url || (url && !url.protocol)) {\n// return false;\n// }\n// switch (url.protocol) {\n// case \"http:\":\n// case \"https:\":\n// case \"ftp:\":\n// case \"mailto:\":\n// case \"tel:\":\n// return true;\n// default:\n// return false;\n// }\n// }\n// /**\n// * Attempts to create a valid absolute URL.\n// *\n// * @param {URL|string} url - An absolute, or relative, URL.\n// * @param {URL|string} [baseUrl] - An absolute URL.\n// * @param {Object} [options]\n// * @returns Either a valid {URL}, or `null` otherwise.\n// */\n// function createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n// if (!url) {\n// return null;\n// }\n// try {\n// if (options && typeof url === \"string\") {\n// // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n// if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n// const dots = url.match(/\\./g);\n// // Avoid accidentally matching a *relative* URL pointing to a file named\n// // e.g. \"www.pdf\" or similar.\n// if (dots && dots.length >= 2) {\n// url = `http://${url}`;\n// }\n// }\n// // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n// // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n// if (options.tryConvertEncoding) {\n// try {\n// url = stringToUTF8String(url);\n// } catch (e) { }\n// }\n// }\n// const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n// if (_isValidProtocol(absoluteUrl)) {\n// return absoluteUrl;\n// }\n// } catch (e) {\n// /* `new URL()` will throw on incorrect data. */\n// }\n// return null;\n// }\nfunction shadow(obj, prop, value, nonSerializable = false) {\n // if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // assert(\n // prop in obj,\n // `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n // );\n // }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\n// /**\n// * @type {any}\n// */\n// const BaseException = (function BaseExceptionClosure() {\n// // eslint-disable-next-line no-shadow\n// function BaseException(message, name) {\n// if (this.constructor === BaseException) {\n// unreachable(\"Cannot initialize BaseException.\");\n// }\n// this.message = message;\n// this.name = name;\n// }\n// BaseException.prototype = new Error();\n// BaseException.constructor = BaseException;\n// return BaseException;\n// })();\n// class PasswordException extends BaseException {\n// constructor(msg, code) {\n// super(msg, \"PasswordException\");\n// this.code = code;\n// }\n// }\n// class UnknownErrorException extends BaseException {\n// constructor(msg, details) {\n// super(msg, \"UnknownErrorException\");\n// this.details = details;\n// }\n// }\n// class InvalidPDFException extends BaseException {\n// constructor(msg) {\n// super(msg, \"InvalidPDFException\");\n// }\n// }\n// class MissingPDFException extends BaseException {\n// constructor(msg) {\n// super(msg, \"MissingPDFException\");\n// }\n// }\n// class UnexpectedResponseException extends BaseException {\n// constructor(msg, status) {\n// super(msg, \"UnexpectedResponseException\");\n// this.status = status;\n// }\n// }\n// /**\n// * Error caused during parsing PDF data.\n// */\n// class FormatError extends BaseException {\n// constructor(msg) {\n// super(msg, \"FormatError\");\n// }\n// }\n// /**\n// * Error used to indicate task cancellation.\n// */\n// class AbortException extends BaseException {\n// constructor(msg) {\n// super(msg, \"AbortException\");\n// }\n// }\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || (bytes && bytes.length === undefined)) {\n // unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n// function stringToBytes(str) {\n// if (typeof str !== \"string\") {\n// unreachable(\"Invalid argument for stringToBytes\");\n// }\n// const length = str.length;\n// const bytes = new Uint8Array(length);\n// for (let i = 0; i < length; ++i) {\n// bytes[i] = str.charCodeAt(i) & 0xff;\n// }\n// return bytes;\n// }\n// function string32(value) {\n// if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n// assert(\n// typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n// `string32: Unexpected input \"${value}\".`\n// );\n// }\n// return String.fromCharCode(\n// (value >> 24) & 0xff,\n// (value >> 16) & 0xff,\n// (value >> 8) & 0xff,\n// value & 0xff\n// );\n// }\n// function objectSize(obj) {\n// return Object.keys(obj).length;\n// }\n// // Ensure that the returned Object has a `null` prototype; hence why\n// // `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n// // Checks the endianness of the platform.\n// function isLittleEndian() {\n// const buffer8 = new Uint8Array(4);\n// buffer8[0] = 1;\n// const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n// return view32[0] === 1;\n// }\n// // Checks if it's possible to eval JS expressions.\n// function isEvalSupported() {\n// try {\n// new Function(\"\"); // eslint-disable-line no-new, no-new-func\n// return true;\n// } catch (e) {\n// return false;\n// }\n// }\nclass FeatureTest {\n // static get isLittleEndian() {\n // return shadow(this, \"isLittleEndian\", isLittleEndian());\n // }\n // static get isEvalSupported() {\n // return shadow(this, \"isEvalSupported\", isEvalSupported());\n // }\n // static get isOffscreenCanvasSupported() {\n // return shadow(\n // this,\n // \"isOffscreenCanvasSupported\",\n // typeof OffscreenCanvas !== \"undefined\"\n // );\n // }\n // static get platform() {\n // if (\n // (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n // (typeof navigator !== \"undefined\" &&\n // navigator && typeof navigator.platform === \"string\")\n // ) {\n // return shadow(this, \"platform\", {\n // isMac: navigator.platform.includes(\"Mac\"),\n // });\n // }\n // return shadow(this, \"platform\", { isMac: false });\n // }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis && globalThis.CSS && globalThis.CSS.supports &&\n globalThis.CSS.supports(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n // // Apply a scaling matrix to some min/max values.\n // // If a scaling factor is negative then min and max must be\n // // swapped.\n // static scaleMinMax(transform, minMax) {\n // let temp;\n // if (transform[0]) {\n // if (transform[0] < 0) {\n // temp = minMax[0];\n // minMax[0] = minMax[2];\n // minMax[2] = temp;\n // }\n // minMax[0] *= transform[0];\n // minMax[2] *= transform[0];\n // if (transform[3] < 0) {\n // temp = minMax[1];\n // minMax[1] = minMax[3];\n // minMax[3] = temp;\n // }\n // minMax[1] *= transform[3];\n // minMax[3] *= transform[3];\n // } else {\n // temp = minMax[0];\n // minMax[0] = minMax[1];\n // minMax[1] = temp;\n // temp = minMax[2];\n // minMax[2] = minMax[3];\n // minMax[3] = temp;\n // if (transform[1] < 0) {\n // temp = minMax[1];\n // minMax[1] = minMax[3];\n // minMax[3] = temp;\n // }\n // minMax[1] *= transform[1];\n // minMax[3] *= transform[1];\n // if (transform[2] < 0) {\n // temp = minMax[0];\n // minMax[0] = minMax[2];\n // minMax[2] = temp;\n // }\n // minMax[0] *= transform[2];\n // minMax[2] *= transform[2];\n // }\n // minMax[0] += transform[4];\n // minMax[1] += transform[5];\n // minMax[2] += transform[4];\n // minMax[3] += transform[5];\n // }\n // // Concatenates two transformation matrices together and returns the result.\n // static transform(m1, m2) {\n // return [\n // m1[0] * m2[0] + m1[2] * m2[1],\n // m1[1] * m2[0] + m1[3] * m2[1],\n // m1[0] * m2[2] + m1[2] * m2[3],\n // m1[1] * m2[2] + m1[3] * m2[3],\n // m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n // m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n // ];\n // }\n // // For 2d affine transforms\n // static applyTransform(p, m) {\n // const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n // const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n // return [xt, yt];\n // }\n // static applyInverseTransform(p, m) {\n // const d = m[0] * m[3] - m[1] * m[2];\n // const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n // const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n // return [xt, yt];\n // }\n // // Applies the transform to the rectangle and finds the minimum axially\n // // aligned bounding box.\n // static getAxialAlignedBoundingBox(r, m) {\n // const p1 = this.applyTransform(r, m);\n // const p2 = this.applyTransform(r.slice(2, 4), m);\n // const p3 = this.applyTransform([r[0], r[3]], m);\n // const p4 = this.applyTransform([r[2], r[1]], m);\n // return [\n // Math.min(p1[0], p2[0], p3[0], p4[0]),\n // Math.min(p1[1], p2[1], p3[1], p4[1]),\n // Math.max(p1[0], p2[0], p3[0], p4[0]),\n // Math.max(p1[1], p2[1], p3[1], p4[1]),\n // ];\n // }\n // static inverseTransform(m) {\n // const d = m[0] * m[3] - m[1] * m[2];\n // return [\n // m[3] / d,\n // -m[1] / d,\n // -m[2] / d,\n // m[0] / d,\n // (m[2] * m[5] - m[4] * m[3]) / d,\n // (m[4] * m[1] - m[5] * m[0]) / d,\n // ];\n // }\n // // This calculation uses Singular Value Decomposition.\n // // The SVD can be represented with formula A = USV. We are interested in the\n // // matrix S here because it represents the scale values.\n // static singularValueDecompose2dScale(m) {\n // const transpose = [m[0], m[2], m[1], m[3]];\n // // Multiply matrix m with its transpose.\n // const a = m[0] * transpose[0] + m[1] * transpose[2];\n // const b = m[0] * transpose[1] + m[1] * transpose[3];\n // const c = m[2] * transpose[0] + m[3] * transpose[2];\n // const d = m[2] * transpose[1] + m[3] * transpose[3];\n // // Solve the second degree polynomial to get roots.\n // const first = (a + d) / 2;\n // const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n // const sx = first + second || 1;\n // const sy = first - second || 1;\n // // Scale values are the square roots of the eigenvalues.\n // return [Math.sqrt(sx), Math.sqrt(sy)];\n // }\n // // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // // For coordinate systems whose origin lies in the bottom-left, this\n // // means normalization to (BL,TR) ordering. For systems with origin in the\n // // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n}\n// const PDFStringTranslateTable = [\n// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n// 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n// 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n// 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n// 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n// 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n// ];\n// function stringToPDFString(str) {\n// // See section 7.9.2.2 Text String Type.\n// // The string can contain some language codes bracketed with 0x0b,\n// // so we must remove them.\n// if (str[0] >= \"\\xEF\") {\n// let encoding;\n// if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n// encoding = \"utf-16be\";\n// if (str.length % 2 === 1) {\n// str = str.slice(0, -1);\n// }\n// } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n// encoding = \"utf-16le\";\n// if (str.length % 2 === 1) {\n// str = str.slice(0, -1);\n// }\n// } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n// encoding = \"utf-8\";\n// }\n// if (encoding) {\n// try {\n// const decoder = new TextDecoder(encoding, { fatal: true });\n// const buffer = stringToBytes(str);\n// const decoded = decoder.decode(buffer);\n// if (!decoded.includes(\"\\x1b\")) {\n// return decoded;\n// }\n// return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n// } catch (ex) {\n// warn(`stringToPDFString: \"${ex}\".`);\n// }\n// }\n// }\n// // ISO Latin 1\n// const strBuf = [];\n// for (let i = 0, ii = str.length; i < ii; i++) {\n// const charCode = str.charCodeAt(i);\n// if (charCode === 0x1b) {\n// // eslint-disable-next-line no-empty\n// while (++i < ii && str.charCodeAt(i) !== 0x1b) { }\n// continue;\n// }\n// const code = PDFStringTranslateTable[charCode];\n// strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n// }\n// return strBuf.join(\"\");\n// }\n// function stringToUTF8String(str) {\n// return decodeURIComponent(escape(str));\n// }\n// function utf8StringToString(str) {\n// return unescape(encodeURIComponent(str));\n// }\n// function isArrayEqual(arr1, arr2) {\n// if (arr1.length !== arr2.length) {\n// return false;\n// }\n// for (let i = 0, ii = arr1.length; i < ii; i++) {\n// if (arr1[i] !== arr2[i]) {\n// return false;\n// }\n// }\n// return true;\n// }\n// function getModificationDate(date = new Date()) {\n// const buffer = [\n// date.getUTCFullYear().toString(),\n// (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n// date.getUTCDate().toString().padStart(2, \"0\"),\n// date.getUTCHours().toString().padStart(2, \"0\"),\n// date.getUTCMinutes().toString().padStart(2, \"0\"),\n// date.getUTCSeconds().toString().padStart(2, \"0\"),\n// ];\n// return buffer.join(\"\");\n// }\n// let NormalizeRegex = null;\n// let NormalizationMap = null;\n// function normalizeUnicode(str) {\n// if (!NormalizeRegex) {\n// // In order to generate the following regex:\n// // - create a PDF containing all the chars in the range 0000-FFFF with\n// // a NFKC which is different of the char.\n// // - copy and paste all those chars and get the ones where NFKC is\n// // required.\n// // It appears that most the chars here contain some ligatures.\n// NormalizeRegex =\n// /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n// NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n// }\n// return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\n// p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2)\n// );\n// }\nfunction getUuid() {\n if (\n // (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (typeof crypto !== \"undefined\" && crypto && typeof crypto.randomUUID === \"function\")) {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" &&\n crypto && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n }\n else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n// const FontRenderOps = {\n// BEZIER_CURVE_TO: 0,\n// MOVE_TO: 1,\n// LINE_TO: 2,\n// QUADRATIC_CURVE_TO: 3,\n// RESTORE: 4,\n// SAVE: 5,\n// SCALE: 6,\n// TRANSFORM: 7,\n// TRANSLATE: 8,\n// };\nexport { \n// AbortException,\nAnnotationActionEventType, AnnotationBorderStyleType, AnnotationEditorParamsType, AnnotationEditorPrefix, AnnotationEditorType, AnnotationFieldFlag, AnnotationFlag, AnnotationMode, AnnotationPrefix, AnnotationReplyType, AnnotationType, \n// assert,\n// BaseException,\nBASELINE_FACTOR, bytesToString, \n// CMapCompressionType,\n// createValidAbsoluteUrl,\n// DocumentActionEventType,\nFeatureTest, \n// FONT_IDENTITY_MATRIX,\n// FontRenderOps,\n// FormatError,\n// getModificationDate,\ngetUuid, \n// getVerbosityLevel,\n// IDENTITY_MATRIX,\n// ImageKind,\n// info,\n// InvalidPDFException,\n// isArrayEqual,\n// isNodeJS,\nLINE_DESCENT_FACTOR, LINE_FACTOR, \n// MAX_IMAGE_SIZE_TO_CACHE,\n// MissingPDFException,\n// normalizeUnicode,\nobjectFromMap, \n// objectSize,\n// OPS,\n// PageActionEventType,\n// PasswordException,\n// PasswordResponses,\n// PermissionFlag,\n// RenderingIntentFlag,\n// setVerbosityLevel,\nshadow, \n// string32,\n// stringToBytes,\n// stringToPDFString,\n// stringToUTF8String,\n// TextRenderingMode,\n// UnexpectedResponseException,\n// UnknownErrorException,\n// unreachable,\n// utf8StringToString,\nUtil\n// VerbosityLevel,\n// warn,\n };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _IdManager_id;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { AnnotationEditorPrefix } from \"../shared/utils\";\nexport class IdManager {\n constructor(idPrefix = AnnotationEditorPrefix) {\n _IdManager_id.set(this, 0);\n this.idPrefix = AnnotationEditorPrefix;\n // if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n Object.defineProperty(this, \"reset\", {\n value: () => (__classPrivateFieldSet(this, _IdManager_id, 0, \"f\"))\n });\n // }\n this.idPrefix = idPrefix;\n }\n get id() {\n var _a, _b;\n return `${this.idPrefix}${__classPrivateFieldSet(this, _IdManager_id, (_b = __classPrivateFieldGet(this, _IdManager_id, \"f\"), _a = _b++, _b), \"f\"), _a}`;\n }\n}\n_IdManager_id = new WeakMap();\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _CommandManager_commands, _CommandManager_locked, _CommandManager_maxSize, _CommandManager_position;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n/*\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nexport class CommandManager {\n constructor(maxSize = 128) {\n _CommandManager_commands.set(this, []);\n _CommandManager_locked.set(this, false);\n _CommandManager_maxSize.set(this, void 0);\n _CommandManager_position.set(this, -1);\n __classPrivateFieldSet(this, _CommandManager_maxSize, maxSize, \"f\");\n }\n /**\n * @typedef {Object} addOptions\n * @property {function} cmd\n * @property {function} undo\n * @property {function} [post]\n * @property {boolean} mustExec\n * @property {number} type\n * @property {boolean} overwriteIfSameType\n * @property {boolean} keepUndo\n */\n /*\n * Add a new couple of commands to be used in case of redo/undo.\n * @param {addOptions} options\n */\n add({ cmd, undo, post, mustExec, type = NaN, overwriteIfSameType = false, keepUndo = false, }) {\n if (mustExec) {\n cmd();\n }\n if (__classPrivateFieldGet(this, _CommandManager_locked, \"f\")) {\n return;\n }\n const save = { cmd, undo, post, type };\n if (__classPrivateFieldGet(this, _CommandManager_position, \"f\") === -1) {\n if (__classPrivateFieldGet(this, _CommandManager_commands, \"f\").length > 0) {\n // All the commands have been undone and then a new one is added\n // hence we clear the queue.\n __classPrivateFieldGet(this, _CommandManager_commands, \"f\").length = 0;\n }\n __classPrivateFieldSet(this, _CommandManager_position, 0, \"f\");\n __classPrivateFieldGet(this, _CommandManager_commands, \"f\").push(save);\n return;\n }\n if (overwriteIfSameType && __classPrivateFieldGet(this, _CommandManager_commands, \"f\")[__classPrivateFieldGet(this, _CommandManager_position, \"f\")].type === type) {\n // For example when we change a color we don't want to\n // be able to undo all the steps, hence we only want to\n // keep the last undoable action in this sequence of actions.\n if (keepUndo) {\n save.undo = __classPrivateFieldGet(this, _CommandManager_commands, \"f\")[__classPrivateFieldGet(this, _CommandManager_position, \"f\")].undo;\n }\n __classPrivateFieldGet(this, _CommandManager_commands, \"f\")[__classPrivateFieldGet(this, _CommandManager_position, \"f\")] = save;\n return;\n }\n const next = __classPrivateFieldGet(this, _CommandManager_position, \"f\") + 1;\n if (next === __classPrivateFieldGet(this, _CommandManager_maxSize, \"f\")) {\n __classPrivateFieldGet(this, _CommandManager_commands, \"f\").splice(0, 1);\n }\n else {\n __classPrivateFieldSet(this, _CommandManager_position, next, \"f\");\n if (next < __classPrivateFieldGet(this, _CommandManager_commands, \"f\").length) {\n __classPrivateFieldGet(this, _CommandManager_commands, \"f\").splice(next);\n }\n }\n __classPrivateFieldGet(this, _CommandManager_commands, \"f\").push(save);\n }\n /**\n * Undo the last command.\n */\n undo() {\n if (__classPrivateFieldGet(this, _CommandManager_position, \"f\") === -1) {\n // Nothing to undo.\n return;\n }\n // Avoid to insert something during the undo execution.\n __classPrivateFieldSet(this, _CommandManager_locked, true, \"f\");\n const { undo, post } = __classPrivateFieldGet(this, _CommandManager_commands, \"f\")[__classPrivateFieldGet(this, _CommandManager_position, \"f\")];\n undo();\n post === null || post === void 0 ? void 0 : post();\n __classPrivateFieldSet(this, _CommandManager_locked, false, \"f\");\n __classPrivateFieldSet(this, _CommandManager_position, __classPrivateFieldGet(this, _CommandManager_position, \"f\") - 1, \"f\");\n }\n /**\n * Redo the last command.\n */\n redo() {\n if (__classPrivateFieldGet(this, _CommandManager_position, \"f\") < __classPrivateFieldGet(this, _CommandManager_commands, \"f\").length - 1) {\n __classPrivateFieldSet(this, _CommandManager_position, __classPrivateFieldGet(this, _CommandManager_position, \"f\") + 1, \"f\");\n // Avoid to insert something during the redo execution.\n __classPrivateFieldSet(this, _CommandManager_locked, true, \"f\");\n const { cmd, post } = __classPrivateFieldGet(this, _CommandManager_commands, \"f\")[__classPrivateFieldGet(this, _CommandManager_position, \"f\")];\n cmd();\n post === null || post === void 0 ? void 0 : post();\n __classPrivateFieldSet(this, _CommandManager_locked, false, \"f\");\n }\n }\n /**\n * Check if there is something to undo.\n * @returns {boolean}\n */\n hasSomethingToUndo() {\n return __classPrivateFieldGet(this, _CommandManager_position, \"f\") !== -1;\n }\n /**\n * Check if there is something to redo.\n * @returns {boolean}\n */\n hasSomethingToRedo() {\n return __classPrivateFieldGet(this, _CommandManager_position, \"f\") < __classPrivateFieldGet(this, _CommandManager_commands, \"f\").length - 1;\n }\n destroy() {\n __classPrivateFieldSet(this, _CommandManager_commands, null, \"f\");\n }\n}\n_CommandManager_commands = new WeakMap(), _CommandManager_locked = new WeakMap(), _CommandManager_maxSize = new WeakMap(), _CommandManager_position = new WeakMap();\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _AnnotationEditorUIManager_instances, _AnnotationEditorUIManager_abortController, _AnnotationEditorUIManager_activeEditor, _AnnotationEditorUIManager_allEditors, _AnnotationEditorUIManager_allLayers, _AnnotationEditorUIManager_annotationStorage, _AnnotationEditorUIManager_changedExistingAnnotations, _AnnotationEditorUIManager_commandManager, _AnnotationEditorUIManager_currentPageIndex, _AnnotationEditorUIManager_deletedAnnotationsElementIds, _AnnotationEditorUIManager_draggingEditors, _AnnotationEditorUIManager_editorTypes, _AnnotationEditorUIManager_editorsToRescale, _AnnotationEditorUIManager_enableHighlightFloatingButton, _AnnotationEditorUIManager_focusMainContainerTimeoutId, _AnnotationEditorUIManager_focusManagerAC, _AnnotationEditorUIManager_highlightColors, _AnnotationEditorUIManager_highlightWhenShiftUp, _AnnotationEditorUIManager_highlightToolbar, _AnnotationEditorUIManager_idManager, _AnnotationEditorUIManager_isEnabled, _AnnotationEditorUIManager_isWaiting, _AnnotationEditorUIManager_lastActiveElement, _AnnotationEditorUIManager_mode, _AnnotationEditorUIManager_selectedEditors, _AnnotationEditorUIManager_selectedTextNode, _AnnotationEditorUIManager_showAllStates, _AnnotationEditorUIManager_previousStates, _AnnotationEditorUIManager_translation, _AnnotationEditorUIManager_translationTimeoutId, _AnnotationEditorUIManager_container, _AnnotationEditorUIManager_viewer, _AnnotationEditorUIManager_getAnchorElementForSelection, _AnnotationEditorUIManager_getLayerForTextLayer, _AnnotationEditorUIManager_displayHighlightToolbar, _AnnotationEditorUIManager_selectionChange, _AnnotationEditorUIManager_onSelectEnd, _AnnotationEditorUIManager_addSelectionListener, _AnnotationEditorUIManager_addFocusManager, _AnnotationEditorUIManager_removeFocusManager, _AnnotationEditorUIManager_addKeyboardManager, _AnnotationEditorUIManager_removeKeyboardManager, _AnnotationEditorUIManager_addCopyPasteListeners, _AnnotationEditorUIManager_removeCopyPasteListeners, _AnnotationEditorUIManager_addDragAndDropListeners, _AnnotationEditorUIManager_dispatchUpdateStates, _AnnotationEditorUIManager_dispatchUpdateUI, _AnnotationEditorUIManager_enableAll, _AnnotationEditorUIManager_disableAll, _AnnotationEditorUIManager_addEditorToLayer, _AnnotationEditorUIManager_lastSelectedEditor_get, _AnnotationEditorUIManager_isEmpty, _AnnotationEditorUIManager_selectEditors;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n// import { PixelsPerInch, shadow } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { AnnotationEditorParamsType, AnnotationEditorType, PixelsPerInch, shadow } from \"pdfjs-dist/legacy/build/pdf.mjs\";\n// import { CommandManager } from \"./helpers/command-manager\";\nimport { IdManager } from \"./helpers/id-manager\";\n// import { AnnotationEditorType } from \"../shared/utils\";\nimport { CommandManager } from \"./helpers/command-manager\";\n// import { ImageManager } from \"./helpers/image-manager\";\nexport class AnnotationEditorUIManager {\n // static get _keyboardManager() {\n // const proto = AnnotationEditorUIManager.prototype;\n // /**\n // * If the focused element is an input, we don't want to handle the arrow.\n // * For example, sliders can be controlled with the arrow keys.\n // */\n // const arrowChecker = self =>\n // self.#container.contains(document.activeElement) &&\n // document.activeElement.tagName !== \"BUTTON\" &&\n // self.hasSomethingToControl();\n // const textInputChecker = (_self, { target: el }) => {\n // if (el instanceof HTMLInputElement) {\n // const { type } = el;\n // return type !== \"text\" && type !== \"number\";\n // }\n // return true;\n // };\n // const small = this.TRANSLATE_SMALL;\n // const big = this.TRANSLATE_BIG;\n // return shadow(\n // this,\n // \"_keyboardManager\",\n // new KeyboardManager([\n // [\n // [\"ctrl+a\", \"mac+meta+a\"],\n // proto.selectAll,\n // { checker: textInputChecker },\n // ],\n // [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, { checker: textInputChecker }],\n // [\n // // On mac, depending of the OS version, the event.key is either \"z\" or\n // // \"Z\" when the user presses \"meta+shift+z\".\n // [\n // \"ctrl+y\",\n // \"ctrl+shift+z\",\n // \"mac+meta+shift+z\",\n // \"ctrl+shift+Z\",\n // \"mac+meta+shift+Z\",\n // ],\n // proto.redo,\n // { checker: textInputChecker },\n // ],\n // [\n // [\n // \"Backspace\",\n // \"alt+Backspace\",\n // \"ctrl+Backspace\",\n // \"shift+Backspace\",\n // \"mac+Backspace\",\n // \"mac+alt+Backspace\",\n // \"mac+ctrl+Backspace\",\n // \"Delete\",\n // \"ctrl+Delete\",\n // \"shift+Delete\",\n // \"mac+Delete\",\n // ],\n // proto.delete,\n // { checker: textInputChecker },\n // ],\n // [\n // [\"Enter\", \"mac+Enter\"],\n // proto.addNewEditorFromKeyboard,\n // {\n // // Those shortcuts can be used in the toolbar for some other actions\n // // like zooming, hence we need to check if the container has the\n // // focus.\n // checker: (self, { target: el }) =>\n // !(el instanceof HTMLButtonElement) &&\n // self.#container.contains(el) &&\n // !self.isEnterHandled,\n // },\n // ],\n // [\n // [\" \", \"mac+ \"],\n // proto.addNewEditorFromKeyboard,\n // {\n // // Those shortcuts can be used in the toolbar for some other actions\n // // like zooming, hence we need to check if the container has the\n // // focus.\n // checker: (self, { target: el }) =>\n // !(el instanceof HTMLButtonElement) &&\n // self.#container.contains(document.activeElement),\n // },\n // ],\n // [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n // [\n // [\"ArrowLeft\", \"mac+ArrowLeft\"],\n // proto.translateSelectedEditors,\n // { args: [-small, 0], checker: arrowChecker },\n // ],\n // [\n // [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n // proto.translateSelectedEditors,\n // { args: [-big, 0], checker: arrowChecker },\n // ],\n // [\n // [\"ArrowRight\", \"mac+ArrowRight\"],\n // proto.translateSelectedEditors,\n // { args: [small, 0], checker: arrowChecker },\n // ],\n // [\n // [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n // proto.translateSelectedEditors,\n // { args: [big, 0], checker: arrowChecker },\n // ],\n // [\n // [\"ArrowUp\", \"mac+ArrowUp\"],\n // proto.translateSelectedEditors,\n // { args: [0, -small], checker: arrowChecker },\n // ],\n // [\n // [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n // proto.translateSelectedEditors,\n // { args: [0, -big], checker: arrowChecker },\n // ],\n // [\n // [\"ArrowDown\", \"mac+ArrowDown\"],\n // proto.translateSelectedEditors,\n // { args: [0, small], checker: arrowChecker },\n // ],\n // [\n // [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n // proto.translateSelectedEditors,\n // { args: [0, big], checker: arrowChecker },\n // ],\n // ])\n // );\n // }\n constructor({ container = null, viewer, pdfViewer, \n // altTextManager,\n eventBus, pdfDocument, \n // pageColors,\n highlightColors = \"\",\n // enableHighlightFloatingButton,\n // enableUpdatedAddImage,\n // enableNewAltTextWhenAddingImage,\n // mlManager\n }) {\n _AnnotationEditorUIManager_instances.add(this);\n // todo: props\n // todo: extract to pdf viewer\n this.pdfViewer = null;\n this.annotationEditorMode = AnnotationEditorType.NONE;\n this.viewParameters = {};\n this.isShiftKeyDown = false;\n this._eventBus = null;\n // todo: props\n _AnnotationEditorUIManager_abortController.set(this, new AbortController());\n _AnnotationEditorUIManager_activeEditor.set(this, null);\n _AnnotationEditorUIManager_allEditors.set(this, new Map());\n _AnnotationEditorUIManager_allLayers.set(this, new Map());\n // #altTextManager = null;\n _AnnotationEditorUIManager_annotationStorage.set(this, null);\n _AnnotationEditorUIManager_changedExistingAnnotations.set(this, null);\n _AnnotationEditorUIManager_commandManager.set(this, new CommandManager());\n // #copyPasteAC = null;\n _AnnotationEditorUIManager_currentPageIndex.set(this, 0);\n _AnnotationEditorUIManager_deletedAnnotationsElementIds.set(this, new Set());\n _AnnotationEditorUIManager_draggingEditors.set(this, null);\n _AnnotationEditorUIManager_editorTypes.set(this, null);\n _AnnotationEditorUIManager_editorsToRescale.set(this, new Set());\n // todo: change default value\n // #enableHighlightFloatingButton = false;\n _AnnotationEditorUIManager_enableHighlightFloatingButton.set(this, true);\n // #enableUpdatedAddImage = false;\n // #enableNewAltTextWhenAddingImage = false;\n // #filterFactory = null;\n _AnnotationEditorUIManager_focusMainContainerTimeoutId.set(this, null);\n _AnnotationEditorUIManager_focusManagerAC.set(this, null);\n // todo: this is defined in \"highlightEditorColors\" in pdf.js as\n // value: \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\",\n _AnnotationEditorUIManager_highlightColors.set(this, \"\");\n _AnnotationEditorUIManager_highlightWhenShiftUp.set(this, false);\n _AnnotationEditorUIManager_highlightToolbar.set(this, null);\n _AnnotationEditorUIManager_idManager.set(this, new IdManager());\n _AnnotationEditorUIManager_isEnabled.set(this, false);\n _AnnotationEditorUIManager_isWaiting.set(this, false);\n // #keyboardManagerAC = null;\n _AnnotationEditorUIManager_lastActiveElement.set(this, null);\n // #mainHighlightColorPicker = null;\n // #mlManager = null;\n _AnnotationEditorUIManager_mode.set(this, AnnotationEditorType.NONE);\n _AnnotationEditorUIManager_selectedEditors.set(this, new Set());\n _AnnotationEditorUIManager_selectedTextNode.set(this, null);\n // #pageColors = null;\n _AnnotationEditorUIManager_showAllStates.set(this, null);\n _AnnotationEditorUIManager_previousStates.set(this, {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false,\n });\n _AnnotationEditorUIManager_translation.set(this, [0, 0]);\n _AnnotationEditorUIManager_translationTimeoutId.set(this, null);\n _AnnotationEditorUIManager_container.set(this, null);\n _AnnotationEditorUIManager_viewer.set(this, null);\n // // const signal = (this._signal = this.#abortController.signal);\n const signal = this._signal = __classPrivateFieldGet(this, _AnnotationEditorUIManager_abortController, \"f\").signal;\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_container, container, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_viewer, viewer, \"f\");\n this.pdfViewer = pdfViewer;\n // this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n this._eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal,\n });\n this._eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal,\n });\n this._eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal,\n });\n this._eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal,\n });\n this._eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal,\n });\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addSelectionListener).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addDragAndDropListeners).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addKeyboardManager).call(this);\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_annotationStorage, pdfDocument.annotationStorage, \"f\");\n // this.#filterFactory = pdfDocument.filterFactory;\n // this.#pageColors = pageColors;\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_highlightColors, highlightColors || \"\", \"f\");\n // this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n // this.#enableUpdatedAddImage = enableUpdatedAddImage;\n // this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n // this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0,\n };\n // this.isShiftKeyDown = false;\n // if ( typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // window.uiManager = this;\n // Object.defineProperty(this, \"reset\", {\n // value: () => {\n // this.selectAll();\n // this.delete();\n // this.#idManager.reset();\n // },\n // });\n // }\n }\n destroy() {\n var _a;\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_abortController, \"f\")) === null || _a === void 0 ? void 0 : _a.abort();\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_abortController, null, \"f\");\n this._signal = null;\n for (const layer of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").values()) {\n layer.destroy();\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").clear();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").clear();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorsToRescale, \"f\").clear();\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_activeEditor, null, \"f\");\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").clear();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").destroy();\n // this.#altTextManager?.destroy();\n // this.#highlightToolbar?.hide();\n // this.#highlightToolbar = null;\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_focusMainContainerTimeoutId, \"f\")) {\n clearTimeout(__classPrivateFieldGet(this, _AnnotationEditorUIManager_focusMainContainerTimeoutId, \"f\"));\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_focusMainContainerTimeoutId, null, \"f\");\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_translationTimeoutId, \"f\")) {\n clearTimeout(__classPrivateFieldGet(this, _AnnotationEditorUIManager_translationTimeoutId, \"f\"));\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_translationTimeoutId, null, \"f\");\n }\n }\n // todo: new\n getTextLayerForAnchor(anchorElement) {\n if (!anchorElement) {\n return null;\n }\n return anchorElement.closest(\".textLayer\") || anchorElement.closest(\".k-text-layer\");\n }\n combinedSignal(abortSignal) {\n // eslint-disable-next-line\n if (AbortSignal && AbortSignal[\"any\"]) {\n return AbortSignal.any([this._signal, abortSignal.signal]);\n }\n else {\n // add this for the unit tests\n // AbortSignal.any is an API since March 2024\n // however, this API is not currently available in\n // the node/jest-related bits version that we are using\n return this._signal || abortSignal.signal;\n }\n }\n // get mlManager() {\n // return this.#mlManager;\n // }\n // get useNewAltTextFlow() {\n // return this.#enableUpdatedAddImage;\n // }\n // get useNewAltTextWhenAddingImage() {\n // return this.#enableNewAltTextWhenAddingImage;\n // }\n // get hcmFilter() {\n // return shadow(\n // this,\n // \"hcmFilter\",\n // this.#pageColors\n // ? this.#filterFactory.addHCMFilter(\n // this.#pageColors.foreground,\n // this.#pageColors.background\n // )\n // : \"none\"\n // );\n // }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(__classPrivateFieldGet(this, _AnnotationEditorUIManager_container, \"f\")).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", __classPrivateFieldGet(this, _AnnotationEditorUIManager_highlightColors, \"f\")\n ? new Map(\n // Array.from(\n // this.#highlightColors\n // .split(\",\")\n // .map(pair => pair.split(\"=\").map(x => x.trim()))\n // )\n )\n : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors\n ? new Map(Array.from(this.highlightColors, e => e.reverse()))\n : null);\n }\n // setMainHighlightColorPicker(colorPicker) {\n // this.#mainHighlightColorPicker = colorPicker;\n // }\n // editAltText(editor, firstTime = false) {\n // this.#altTextManager?.editAltText(this, editor, firstTime);\n // }\n switchToMode(mode, callback) {\n // Switching to a mode can be asynchronous.\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal,\n mode\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode,\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value,\n });\n }\n // onSetPreference({ name, value }) {\n onSetPreference({ name }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n // this.#enableNewAltTextWhenAddingImage = value;\n break;\n default: break;\n }\n }\n onPageChanging({ pageNumber }) {\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_currentPageIndex, pageNumber - 1, \"f\");\n }\n focusMainContainer() {\n var _a;\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_container, \"f\")) === null || _a === void 0 ? void 0 : _a.focus();\n }\n findParent(x, y) {\n for (const layer of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").values()) {\n const { x: layerX, y: layerY, width, height, } = layer.div.getBoundingClientRect();\n if (x >= layerX &&\n x <= layerX + width &&\n y >= layerY &&\n y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n var _a;\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_viewer, \"f\")) === null || _a === void 0 ? void 0 : _a.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorsToRescale, \"f\").add(editor);\n }\n removeShouldRescale(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorsToRescale, \"f\").delete(editor);\n }\n onScaleChanging({ scale }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorsToRescale, \"f\")) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({ pagesRotation }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const { anchorNode, anchorOffset, focusNode, focusOffset } = selection;\n const text = selection.toString();\n const anchorElement = __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_getAnchorElementForSelection).call(this, selection);\n // const textLayer = anchorElement.closest(\".textLayer\");\n const textLayer = this.getTextLayerForAnchor(anchorElement);\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_getLayerForTextLayer).call(this, textLayer);\n const isNoneMode = __classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") === AnnotationEditorType.NONE;\n const callback = () => {\n layer === null || layer === void 0 ? void 0 : layer.createAndAddNewEditor({ x: 0, y: 0 }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text,\n });\n if (isNoneMode) {\n // this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n this.showAllEditors(\"highlight\", true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n showEditorToolBar(anchor) {\n if (!anchor) {\n return;\n }\n // todo: disable showing a toolbar for other annotations\n const annotationEditorMode = this.getMode();\n if (annotationEditorMode === AnnotationEditorType.HIGHLIGHT) {\n const editor = anchor.closest(\".highlightEditor\");\n if (!editor) {\n return;\n }\n }\n if (annotationEditorMode === AnnotationEditorType.FREETEXT) {\n const editor = anchor.closest(\".freeTextEditor\");\n if (!editor) {\n return;\n }\n }\n if (annotationEditorMode !== AnnotationEditorType.HIGHLIGHT &&\n annotationEditorMode !== AnnotationEditorType.FREETEXT) {\n return;\n }\n this._eventBus.dispatch(\"kendoAnnotationEditorToolBarShow\", {\n source: this,\n anchor: anchor\n });\n }\n hideEditorToolBar() {\n this._eventBus.dispatch(\"kendoAnnotationEditorToolBarHide\", {\n source: this,\n });\n }\n /**\n * Add an editor in the annotation storage.\n * @param {AnnotationEditor} editor\n */\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() &&\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_annotationStorage, \"f\") &&\n !__classPrivateFieldGet(this, _AnnotationEditorUIManager_annotationStorage, \"f\").has(editor.id)) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_annotationStorage, \"f\").setValue(editor.id, editor);\n }\n }\n blur() {\n this.isShiftKeyDown = false;\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_highlightWhenShiftUp, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_highlightWhenShiftUp, false, \"f\");\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_onSelectEnd).call(this, \"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n // When several editors are selected and the window loses focus, we want to\n // keep the last active element in order to be able to focus it again when\n // the window gets the focus back but we don't want to trigger any focus\n // callbacks else only one editor will be selected.\n const { activeElement } = document;\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n if (editor.div.contains(activeElement)) {\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_lastActiveElement, [editor, activeElement], \"f\");\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!__classPrivateFieldGet(this, _AnnotationEditorUIManager_lastActiveElement, \"f\")) {\n return;\n }\n const [lastEditor, lastActiveElement] = __classPrivateFieldGet(this, _AnnotationEditorUIManager_lastActiveElement, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_lastActiveElement, null, \"f\");\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, { once: true, signal: this._signal });\n lastActiveElement.focus();\n }\n addEditListeners() {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addKeyboardManager).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addCopyPasteListeners).call(this);\n }\n removeEditListeners() {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_removeKeyboardManager).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_removeCopyPasteListeners).call(this);\n }\n dragOver(event) {\n for (const { type } of event.dataTransfer.items) {\n for (const editorType of __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorTypes, \"f\")) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n /**\n * Drop callback.\n * @param {DragEvent} event\n */\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorTypes, \"f\")) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n /**\n * Copy callback.\n * @param {ClipboardEvent} event\n */\n copy(event) {\n var _a;\n event.preventDefault();\n // An editor is being edited so just commit it.\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\")) === null || _a === void 0 ? void 0 : _a.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n const serialized = editor.serialize(/* isForCopying = */ true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n /**\n * Cut callback.\n * @param {ClipboardEvent} event\n */\n cut(event) {\n this.copy(event);\n this.delete();\n }\n /**\n * Paste callback.\n * @param {ClipboardEvent} event\n */\n paste(event) {\n event.preventDefault();\n const { clipboardData } = event;\n for (const item of clipboardData.items) {\n for (const editorType of __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorTypes, \"f\")) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n }\n catch (ex) {\n // warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addEditorToLayer).call(this, editor);\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_selectEditors).call(this, newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({ cmd, undo, mustExec: true });\n }\n catch (ex) {\n // warn(`paste: \"${ex.message}\".`);\n }\n }\n // /**\n // * Keydown callback.\n // * @param {KeyboardEvent} event\n // */\n // keydown(event) {\n // if (!this.isShiftKeyDown && event.key === \"Shift\") {\n // this.isShiftKeyDown = true;\n // }\n // if (\n // this.#mode !== AnnotationEditorType.NONE &&\n // !this.isEditorHandlingKeyboard\n // ) {\n // AnnotationEditorUIManager._keyboardManager.exec(this, event);\n // }\n // }\n // /**\n // * Keyup callback.\n // * @param {KeyboardEvent} event\n // */\n // keyup(event) {\n // if (this.isShiftKeyDown && event.key === \"Shift\") {\n // this.isShiftKeyDown = false;\n // if (this.#highlightWhenShiftUp) {\n // this.#highlightWhenShiftUp = false;\n // this.#onSelectEnd(\"main_toolbar\");\n // }\n // }\n // }\n /**\n * Execute an action for a given name.\n * For example, the user can click on the \"Undo\" entry in the context menu\n * and it'll trigger the undo action.\n */\n onEditingAction({ name }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n default: break;\n }\n }\n /**\n * Set the editing state.\n * It can be useful to temporarily disable it when the user is editing a\n * FreeText annotation.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n // setEditingState() {\n if (isEditing) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addFocusManager).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addCopyPasteListeners).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n isEditing: __classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") !== AnnotationEditorType.NONE,\n isEmpty: __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_isEmpty).call(this),\n hasSomethingToUndo: __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").hasSomethingToUndo(),\n hasSomethingToRedo: __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").hasSomethingToRedo(),\n hasSelectedEditor: false,\n });\n }\n else {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_removeFocusManager).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_removeCopyPasteListeners).call(this);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n isEditing: false,\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_editorTypes, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_editorTypes, types, \"f\");\n for (const editorType of __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorTypes, \"f\")) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateUI).call(this, editorType.defaultPropertiesToUpdate);\n }\n }\n /**\n * Get an id.\n * @returns {string}\n */\n getId() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_idManager, \"f\").id;\n }\n get currentLayer() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").get(__classPrivateFieldGet(this, _AnnotationEditorUIManager_currentPageIndex, \"f\"));\n }\n getLayer(pageIndex) {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").get(pageIndex);\n }\n get currentPageIndex() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_currentPageIndex, \"f\");\n }\n /**\n * Add a new layer for a page which will contains the editors.\n * @param {AnnotationEditorLayer} layer\n */\n addLayer(layer) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").set(layer.pageIndex, layer);\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_isEnabled, \"f\")) {\n layer.enable();\n }\n else {\n layer.disable();\n }\n }\n /**\n * Remove a layer.\n * @param {AnnotationEditorLayer} layer\n */\n removeLayer(layer) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").delete(layer.pageIndex);\n }\n /**\n * Change the editor mode (None, FreeText, Ink, ...)\n * @param {number} mode\n * @param {string|null} editId\n * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\n * keyboard action.\n */\n updateMode(mode, editId = null, isFromKeyboard = false) {\n // todo: set isFromKeyboard intentionally to allow editor creation\n // updateMode(mode, editId = null, isFromKeyboard = true) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") === mode) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_mode, mode, \"f\");\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_disableAll).call(this);\n return;\n }\n this.setEditingState(true);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_enableAll).call(this);\n this.unselectAll();\n for (const layer of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").values()) {\n layer.updateMode(mode);\n }\n if (!editId && isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n return;\n }\n if (!editId) {\n return;\n }\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n * @returns {undefined}\n */\n updateToolbar(mode) {\n if (mode === __classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\")) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n });\n }\n /**\n * Update a parameter in the current editor or globally.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {\n if (!__classPrivateFieldGet(this, _AnnotationEditorUIManager_editorTypes, \"f\")) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n // this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n // this._eventBus.dispatch(\"reporttelemetry\", {\n // source: this,\n // details: {\n // type: \"editing\",\n // data: {\n // type: \"highlight\",\n // action: \"toggle_visibility\",\n // },\n // },\n // });\n (__classPrivateFieldSet(this, _AnnotationEditorUIManager_showAllStates, __classPrivateFieldGet(this, _AnnotationEditorUIManager_showAllStates, \"f\") || new Map(), \"f\")).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n default: break;\n }\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n editor.updateParams(type, value);\n }\n for (const editorType of __classPrivateFieldGet(this, _AnnotationEditorUIManager_editorTypes, \"f\")) {\n editorType.updateDefaultParams(type, value);\n }\n }\n // showAllEditors(type, visible, updateButton = false) {\n showAllEditors(type, visible) {\n var _a, _b;\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = (_b = (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_showAllStates, \"f\")) === null || _a === void 0 ? void 0 : _a.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL)) !== null && _b !== void 0 ? _b : true;\n if (state !== visible) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateUI).call(this, [\n [AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible],\n ]);\n }\n }\n enableWaiting(mustWait = false) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_isWaiting, \"f\") === mustWait) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_isWaiting, mustWait, \"f\");\n for (const layer of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").values()) {\n if (mustWait) {\n layer.disableClick();\n }\n else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n /**\n * Get all the editors belonging to a given page.\n * @param {number} pageIndex\n * @returns {Array}\n */\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n /**\n * Get an editor with the given id.\n * @param {string} id\n * @returns {AnnotationEditor}\n */\n getEditor(id) {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").get(id);\n }\n /**\n * Add a new editor.\n * @param {AnnotationEditor} editor\n */\n addEditor(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").set(editor.id, editor);\n }\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n removeEditor(editor) {\n var _a;\n if (editor.div.contains(document.activeElement)) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_focusMainContainerTimeoutId, \"f\")) {\n clearTimeout(__classPrivateFieldGet(this, _AnnotationEditorUIManager_focusMainContainerTimeoutId, \"f\"));\n }\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_focusMainContainerTimeoutId, setTimeout(() => {\n // When the div is removed from DOM the focus can move on the\n // document.body, so we need to move it back to the main container.\n this.focusMainContainer();\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_focusMainContainerTimeoutId, null, \"f\");\n }, 0), \"f\");\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId ||\n !__classPrivateFieldGet(this, _AnnotationEditorUIManager_deletedAnnotationsElementIds, \"f\").has(editor.annotationElementId)) {\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_annotationStorage, \"f\")) === null || _a === void 0 ? void 0 : _a.remove(editor.id);\n }\n }\n /**\n * The annotation element with the given id has been deleted.\n * @param {AnnotationEditor} editor\n */\n addDeletedAnnotationElement(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_deletedAnnotationsElementIds, \"f\").add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n /**\n * Check if the annotation element with the given id has been deleted.\n * @param {string} annotationElementId\n * @returns {boolean}\n */\n isDeletedAnnotationElement(annotationElementId) {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_deletedAnnotationsElementIds, \"f\").has(annotationElementId);\n }\n /**\n * The annotation element with the given id have been restored.\n * @param {AnnotationEditor} editor\n */\n removeDeletedAnnotationElement(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_deletedAnnotationsElementIds, \"f\").delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n /**\n * Set the given editor as the active one.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\") === editor) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_activeEditor, editor, \"f\");\n if (editor) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateUI).call(this, editor.propertiesToUpdate);\n }\n }\n /**\n * Update the UI of the active editor.\n * @param {AnnotationEditor} editor\n */\n updateUI(editor) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"a\", _AnnotationEditorUIManager_lastSelectedEditor_get) === editor) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateUI).call(this, editor.propertiesToUpdate);\n }\n }\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").has(editor)) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").delete(editor);\n editor.unselect();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedEditor: this.hasSelection,\n });\n return;\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").add(editor);\n editor.select();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateUI).call(this, editor.propertiesToUpdate);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedEditor: true,\n });\n }\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n for (const selectedEditor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n if (selectedEditor !== editor) {\n selectedEditor.unselect();\n }\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").clear();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").add(editor);\n editor.select();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateUI).call(this, editor.propertiesToUpdate);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedEditor: true,\n });\n }\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").has(editor);\n }\n get firstSelectedEditor() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").values().next().value;\n }\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n editor.unselect();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").delete(editor);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedEditor: this.hasSelection,\n });\n }\n get hasSelection() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").size !== 0;\n }\n get isEnterHandled() {\n return (__classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").size === 1 &&\n this.firstSelectedEditor.isEnterHandled);\n }\n /**\n * Undo the last command.\n */\n undo() {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").undo();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSomethingToUndo: __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_isEmpty).call(this),\n });\n }\n /**\n * Redo the last undoed command.\n */\n redo() {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").redo();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSomethingToUndo: true,\n hasSomethingToRedo: __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").hasSomethingToRedo(),\n isEmpty: __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_isEmpty).call(this),\n });\n }\n /**\n * Add a command to execute (cmd) and another one to undo it.\n * @param {Object} params\n */\n addCommands(params) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_commandManager, \"f\").add(params);\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_isEmpty).call(this),\n });\n }\n /**\n * Delete the current editor or all.\n */\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...__classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_addEditorToLayer).call(this, editor);\n }\n };\n this.addCommands({ cmd, undo, mustExec: true });\n }\n commitOrRemove() {\n var _a;\n // An editor is being edited so just commit it.\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\")) === null || _a === void 0 ? void 0 : _a.commitOrRemove();\n }\n hasSomethingToControl() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\") || this.hasSelection;\n }\n /**\n * Select all the editors.\n */\n selectAll() {\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n editor.commit();\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_selectEditors).call(this, __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").values());\n }\n /**\n * Unselect all the selected editors.\n */\n unselectAll() {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\")) {\n // An editor is being edited so just commit it.\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\").commitOrRemove();\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") !== AnnotationEditorType.NONE) {\n // If the mode is NONE, we want to really unselect the editor, hence we\n // mustn't return here.\n return;\n }\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n editor.unselect();\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").clear();\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedEditor: false,\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_translation, \"f\")[0] += x;\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_translation, \"f\")[1] += y;\n const [totalX, totalY] = __classPrivateFieldGet(this, _AnnotationEditorUIManager_translation, \"f\");\n const editors = [...__classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")];\n // We don't want to have an undo/redo for each translation so we wait a bit\n // before adding the command to the command manager.\n const TIME_TO_WAIT = 1000;\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_translationTimeoutId, \"f\")) {\n clearTimeout(__classPrivateFieldGet(this, _AnnotationEditorUIManager_translationTimeoutId, \"f\"));\n }\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_translationTimeoutId, setTimeout(() => {\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_translationTimeoutId, null, \"f\");\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_translation, \"f\")[0] = __classPrivateFieldGet(this, _AnnotationEditorUIManager_translation, \"f\")[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false,\n });\n }, TIME_TO_WAIT), \"f\");\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n /**\n * Set up the drag session for moving the selected editors.\n */\n setUpDragSession() {\n // // Note: don't use any references to the editor's parent which can be null\n // // if the editor belongs to a destroyed page.\n if (!this.hasSelection) {\n return;\n }\n // Avoid to have spurious text selection in the text layer when dragging.\n this.disableUserSelect(true);\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_draggingEditors, new Map(), \"f\");\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_draggingEditors, \"f\").set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1,\n });\n }\n }\n /**\n * Ends the drag session.\n * @returns {boolean} true if at least one editor has been moved.\n */\n endDragSession() {\n if (!__classPrivateFieldGet(this, _AnnotationEditorUIManager_draggingEditors, \"f\")) {\n return false;\n }\n this.disableUserSelect(false);\n const map = __classPrivateFieldGet(this, _AnnotationEditorUIManager_draggingEditors, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_draggingEditors, null, \"f\");\n let mustBeAddedInUndoStack = false;\n for (const [{ x, y, pageIndex }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack || (mustBeAddedInUndoStack = x !== value.savedX ||\n y !== value.savedY ||\n pageIndex !== value.savedPageIndex);\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").has(editor.id)) {\n // The editor can be undone/redone on a page which is not visible (and\n // which potentially has no annotation editor layer), hence we need to\n // use the pageIndex instead of the parent.\n const parent = __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n }\n else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, { newX, newY, newPageIndex }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true,\n });\n return true;\n }\n /**\n * Drag the set of selected editors.\n * @param {number} tx\n * @param {number} ty\n */\n dragSelectedEditors(tx, ty) {\n if (!__classPrivateFieldGet(this, _AnnotationEditorUIManager_draggingEditors, \"f\")) {\n return;\n }\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_draggingEditors, \"f\").keys()) {\n editor.drag(tx, ty);\n }\n }\n /**\n * Rebuild the editor (usually on undo/redo actions) on a potentially\n * non-rendered page.\n * @param {AnnotationEditor} editor\n */\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n }\n else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n }\n else {\n editor.parent.addOrRebuild(editor);\n }\n }\n // get isEditorHandlingKeyboard() {\n // return (\n // this.getActive()?.shouldGetKeyboardEvents() ||\n // (this.#selectedEditors.size === 1 &&\n // this.firstSelectedEditor.shouldGetKeyboardEvents())\n // );\n // }\n /**\n * Is the current editor the one passed as argument?\n * @param {AnnotationEditor} editor\n * @returns\n */\n isActive(editor) {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\") === editor;\n }\n /**\n * Get the current active editor.\n * @returns {AnnotationEditor|null}\n */\n getActive() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\");\n }\n getActiveEditor() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_activeEditor, \"f\");\n }\n /**\n * Get the current editor mode.\n * @returns {number}\n */\n getMode() {\n return __classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\");\n }\n // get imageManager() {\n // return shadow(this, \"imageManager\", new ImageManager());\n // }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const { x: layerX, y: layerY, width: parentWidth, height: parentHeight, } = textLayer.getBoundingClientRect();\n // We must rotate the boxes because we want to have them in the non-rotated\n // page coordinates.\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth,\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight,\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth,\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight,\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const { x, y, width, height } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({ annotationElementId, id }) {\n (__classPrivateFieldSet(this, _AnnotationEditorUIManager_changedExistingAnnotations, __classPrivateFieldGet(this, _AnnotationEditorUIManager_changedExistingAnnotations, \"f\") || new Map(), \"f\")).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({ annotationElementId }) {\n var _a;\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_changedExistingAnnotations, \"f\")) === null || _a === void 0 ? void 0 : _a.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n var _a;\n const editorId = (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_changedExistingAnnotations, \"f\")) === null || _a === void 0 ? void 0 : _a.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = __classPrivateFieldGet(this, _AnnotationEditorUIManager_annotationStorage, \"f\").getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n_AnnotationEditorUIManager_abortController = new WeakMap(), _AnnotationEditorUIManager_activeEditor = new WeakMap(), _AnnotationEditorUIManager_allEditors = new WeakMap(), _AnnotationEditorUIManager_allLayers = new WeakMap(), _AnnotationEditorUIManager_annotationStorage = new WeakMap(), _AnnotationEditorUIManager_changedExistingAnnotations = new WeakMap(), _AnnotationEditorUIManager_commandManager = new WeakMap(), _AnnotationEditorUIManager_currentPageIndex = new WeakMap(), _AnnotationEditorUIManager_deletedAnnotationsElementIds = new WeakMap(), _AnnotationEditorUIManager_draggingEditors = new WeakMap(), _AnnotationEditorUIManager_editorTypes = new WeakMap(), _AnnotationEditorUIManager_editorsToRescale = new WeakMap(), _AnnotationEditorUIManager_enableHighlightFloatingButton = new WeakMap(), _AnnotationEditorUIManager_focusMainContainerTimeoutId = new WeakMap(), _AnnotationEditorUIManager_focusManagerAC = new WeakMap(), _AnnotationEditorUIManager_highlightColors = new WeakMap(), _AnnotationEditorUIManager_highlightWhenShiftUp = new WeakMap(), _AnnotationEditorUIManager_highlightToolbar = new WeakMap(), _AnnotationEditorUIManager_idManager = new WeakMap(), _AnnotationEditorUIManager_isEnabled = new WeakMap(), _AnnotationEditorUIManager_isWaiting = new WeakMap(), _AnnotationEditorUIManager_lastActiveElement = new WeakMap(), _AnnotationEditorUIManager_mode = new WeakMap(), _AnnotationEditorUIManager_selectedEditors = new WeakMap(), _AnnotationEditorUIManager_selectedTextNode = new WeakMap(), _AnnotationEditorUIManager_showAllStates = new WeakMap(), _AnnotationEditorUIManager_previousStates = new WeakMap(), _AnnotationEditorUIManager_translation = new WeakMap(), _AnnotationEditorUIManager_translationTimeoutId = new WeakMap(), _AnnotationEditorUIManager_container = new WeakMap(), _AnnotationEditorUIManager_viewer = new WeakMap(), _AnnotationEditorUIManager_instances = new WeakSet(), _AnnotationEditorUIManager_getAnchorElementForSelection = function _AnnotationEditorUIManager_getAnchorElementForSelection({ anchorNode }) {\n return anchorNode.nodeType === Node.TEXT_NODE\n ? anchorNode.parentElement\n : anchorNode;\n}, _AnnotationEditorUIManager_getLayerForTextLayer = function _AnnotationEditorUIManager_getLayerForTextLayer(textLayer) {\n const { currentLayer } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n}, _AnnotationEditorUIManager_displayHighlightToolbar = function _AnnotationEditorUIManager_displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_getAnchorElementForSelection).call(this, selection);\n const textLayer = this.getTextLayerForAnchor(anchorElement);\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.showEditorToolBar(anchorElement);\n // this._eventBus.dispatch(\"showannotationeditorui\", {\n // source: this,\n // details: Object.assign(this.#previousStates, details),\n // });\n // this.#highlightToolbar ||= new HighlightToolbar(this);\n // this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n}, _AnnotationEditorUIManager_selectionChange = function _AnnotationEditorUIManager_selectionChange() {\n var _a, _b;\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedTextNode, \"f\")) {\n // this.#highlightToolbar?.hide();\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_selectedTextNode, null, \"f\");\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedText: false,\n });\n }\n return;\n }\n const { anchorNode } = selection;\n if (anchorNode === __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedTextNode, \"f\")) {\n return;\n }\n const anchorElement = __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_getAnchorElementForSelection).call(this, selection);\n // const textLayer = anchorElement.closest(\".textLayer\");\n const textLayer = this.getTextLayerForAnchor(anchorElement);\n if (!textLayer) {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedTextNode, \"f\")) {\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_highlightToolbar, \"f\")) === null || _a === void 0 ? void 0 : _a.hide();\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_selectedTextNode, null, \"f\");\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedText: false,\n });\n }\n return;\n }\n (_b = __classPrivateFieldGet(this, _AnnotationEditorUIManager_highlightToolbar, \"f\")) === null || _b === void 0 ? void 0 : _b.hide();\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_selectedTextNode, anchorNode, \"f\");\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, {\n hasSelectedText: true,\n });\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") !== AnnotationEditorType.HIGHLIGHT && __classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") !== AnnotationEditorType.NONE) {\n return;\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") === AnnotationEditorType.HIGHLIGHT) {\n // this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n this.showAllEditors(\"highlight\", true);\n }\n // this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = __classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") === AnnotationEditorType.HIGHLIGHT\n ? __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_getLayerForTextLayer).call(this, textLayer)\n : null;\n activeLayer === null || activeLayer === void 0 ? void 0 : activeLayer.toggleDrawing();\n const abortController = new AbortController();\n const signal = this.combinedSignal(abortController);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n // Do nothing on right click.\n return;\n }\n abortController.abort();\n activeLayer === null || activeLayer === void 0 ? void 0 : activeLayer.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_onSelectEnd).call(this, \"main_toolbar\");\n }\n };\n window.removeEventListener(\"pointerup\", pointerup);\n window.addEventListener(\"pointerup\", pointerup, { signal });\n window.removeEventListener(\"blur\", pointerup);\n window.addEventListener(\"blur\", pointerup, { signal });\n }\n}, _AnnotationEditorUIManager_onSelectEnd = function _AnnotationEditorUIManager_onSelectEnd(methodOfCreation = \"\") {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n }\n else if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_enableHighlightFloatingButton, \"f\")) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_displayHighlightToolbar).call(this);\n }\n}, _AnnotationEditorUIManager_addSelectionListener = function _AnnotationEditorUIManager_addSelectionListener() {\n document.addEventListener(\"selectionchange\", __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_selectionChange).bind(this), { signal: this._signal });\n}, _AnnotationEditorUIManager_addFocusManager = function _AnnotationEditorUIManager_addFocusManager() {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_focusManagerAC, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_focusManagerAC, new AbortController(), \"f\");\n const signal = this.combinedSignal(__classPrivateFieldGet(this, _AnnotationEditorUIManager_focusManagerAC, \"f\"));\n window.addEventListener(\"focus\", this.focus.bind(this), { signal });\n window.addEventListener(\"blur\", this.blur.bind(this), { signal });\n}, _AnnotationEditorUIManager_removeFocusManager = function _AnnotationEditorUIManager_removeFocusManager() {\n var _a;\n (_a = __classPrivateFieldGet(this, _AnnotationEditorUIManager_focusManagerAC, \"f\")) === null || _a === void 0 ? void 0 : _a.abort();\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_focusManagerAC, null, \"f\");\n}, _AnnotationEditorUIManager_addKeyboardManager = function _AnnotationEditorUIManager_addKeyboardManager() {\n // if (this.#keyboardManagerAC) {\n // return;\n // }\n // this.#keyboardManagerAC = new AbortController();\n // const signal = this.combinedSignal(this.#keyboardManagerAC);\n // // The keyboard events are caught at the container level in order to be able\n // // to execute some callbacks even if the current page doesn't have focus.\n // window.addEventListener(\"keydown\", this.keydown.bind(this), { signal });\n // window.addEventListener(\"keyup\", this.keyup.bind(this), { signal });\n}, _AnnotationEditorUIManager_removeKeyboardManager = function _AnnotationEditorUIManager_removeKeyboardManager() {\n // this.#keyboardManagerAC?.abort();\n // this.#keyboardManagerAC = null;\n}, _AnnotationEditorUIManager_addCopyPasteListeners = function _AnnotationEditorUIManager_addCopyPasteListeners() {\n // if (this.#copyPasteAC) {\n // return;\n // }\n // this.#copyPasteAC = new AbortController();\n // const signal = this.combinedSignal(this.#copyPasteAC);\n // document.addEventListener(\"copy\", this.copy.bind(this), { signal });\n // document.addEventListener(\"cut\", this.cut.bind(this), { signal });\n // document.addEventListener(\"paste\", this.paste.bind(this), { signal });\n}, _AnnotationEditorUIManager_removeCopyPasteListeners = function _AnnotationEditorUIManager_removeCopyPasteListeners() {\n // this.#copyPasteAC?.abort();\n // this.#copyPasteAC = null;\n}, _AnnotationEditorUIManager_addDragAndDropListeners = function _AnnotationEditorUIManager_addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), { signal });\n document.addEventListener(\"drop\", this.drop.bind(this), { signal });\n}, _AnnotationEditorUIManager_dispatchUpdateStates = function _AnnotationEditorUIManager_dispatchUpdateStates(details) {\n if (!details) {\n return;\n }\n const hasChanged = Object.entries(details).some(([key, value]) => __classPrivateFieldGet(this, _AnnotationEditorUIManager_previousStates, \"f\")[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(__classPrivateFieldGet(this, _AnnotationEditorUIManager_previousStates, \"f\"), details),\n });\n // We could listen on our own event but it sounds like a bit weird and\n // it's a way to simpler to handle that stuff here instead of having to\n // add something in every place where an editor can be unselected.\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_mode, \"f\") === AnnotationEditorType.HIGHLIGHT &&\n details.hasSelectedEditor === false) {\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateUI).call(this, [\n [AnnotationEditorParamsType.HIGHLIGHT_FREE, true],\n ]);\n }\n }\n}, _AnnotationEditorUIManager_dispatchUpdateUI = function _AnnotationEditorUIManager_dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details,\n });\n}, _AnnotationEditorUIManager_enableAll = function _AnnotationEditorUIManager_enableAll() {\n if (!__classPrivateFieldGet(this, _AnnotationEditorUIManager_isEnabled, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_isEnabled, true, \"f\");\n for (const layer of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").values()) {\n layer.enable();\n }\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").values()) {\n editor.enable();\n }\n }\n}, _AnnotationEditorUIManager_disableAll = function _AnnotationEditorUIManager_disableAll() {\n this.unselectAll();\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_isEnabled, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationEditorUIManager_isEnabled, false, \"f\");\n for (const layer of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").values()) {\n layer.disable();\n }\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").values()) {\n editor.disable();\n }\n }\n}, _AnnotationEditorUIManager_addEditorToLayer = function _AnnotationEditorUIManager_addEditorToLayer(editor) {\n const layer = __classPrivateFieldGet(this, _AnnotationEditorUIManager_allLayers, \"f\").get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n }\n else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n}, _AnnotationEditorUIManager_lastSelectedEditor_get = function _AnnotationEditorUIManager_lastSelectedEditor_get() {\n let ed = null;\n for (ed of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n // Iterate to get the last element.\n }\n return ed;\n}, _AnnotationEditorUIManager_isEmpty = function _AnnotationEditorUIManager_isEmpty() {\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").size === 0) {\n return true;\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").size === 1) {\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_allEditors, \"f\").values()) {\n return editor.isEmpty();\n }\n }\n return false;\n}, _AnnotationEditorUIManager_selectEditors = function _AnnotationEditorUIManager_selectEditors(editors) {\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\")) {\n editor.unselect();\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_selectedEditors, \"f\").add(editor);\n editor.select();\n }\n __classPrivateFieldGet(this, _AnnotationEditorUIManager_instances, \"m\", _AnnotationEditorUIManager_dispatchUpdateStates).call(this, { hasSelectedEditor: this.hasSelection });\n};\nAnnotationEditorUIManager.TRANSLATE_SMALL = 1; // page units.\nAnnotationEditorUIManager.TRANSLATE_BIG = 10; // page units.\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// const WaitOnType = {\n// EVENT: \"event\",\n// TIMEOUT: \"timeout\",\n// };\nvar _EventBus_listeners;\nimport { __classPrivateFieldGet } from \"tslib\";\n// /**\n// * @typedef {Object} WaitOnEventOrTimeoutParameters\n// * @property {Object} target - The event target, can for example be:\n// * `window`, `document`, a DOM element, or an {EventBus} instance.\n// * @property {string} name - The name of the event.\n// * @property {number} delay - The delay, in milliseconds, after which the\n// * timeout occurs (if the event wasn't already dispatched).\n// */\n// /**\n// * Allows waiting for an event or a timeout, whichever occurs first.\n// * Can be used to ensure that an action always occurs, even when an event\n// * arrives late or not at all.\n// *\n// * @param {WaitOnEventOrTimeoutParameters}\n// * @returns {Promise} A promise that is resolved with a {WaitOnType} value.\n// */\n// async function waitOnEventOrTimeout({ target, name, delay = 0 }) {\n// if (\n// typeof target !== \"object\" ||\n// !(name && typeof name === \"string\") ||\n// !(Number.isInteger(delay) && delay >= 0)\n// ) {\n// throw new Error(\"waitOnEventOrTimeout - invalid parameters.\");\n// }\n// const { promise, resolve } = Promise.withResolvers();\n// const ac = new AbortController();\n// function handler(type) {\n// ac.abort(); // Remove event listener.\n// clearTimeout(timeout);\n// resolve(type);\n// }\n// const evtMethod = target instanceof EventBus ? \"_on\" : \"addEventListener\";\n// target[evtMethod](name, handler.bind(null, WaitOnType.EVENT), {\n// signal: ac.signal,\n// });\n// const timeout = setTimeout(handler.bind(null, WaitOnType.TIMEOUT), delay);\n// return promise;\n// }\n/**\n * Simple event bus for an application. Listeners are attached using the `on`\n * and `off` methods. To raise an event, the `dispatch` method shall be used.\n */\nclass EventBus {\n constructor() {\n _EventBus_listeners.set(this, Object.create(null));\n }\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n on(eventName, listener, options = null) {\n this._on(eventName, listener, {\n external: true,\n once: options === null || options === void 0 ? void 0 : options.once,\n signal: options === null || options === void 0 ? void 0 : options.signal,\n });\n }\n /**\n * @param {string} eventName\n * @param {function} listener\n * @param {Object} [options]\n */\n off(eventName, listener) {\n this._off(eventName, listener);\n }\n /**\n * @param {string} eventName\n * @param {Object} data\n */\n dispatch(eventName, data) {\n const eventListeners = __classPrivateFieldGet(this, _EventBus_listeners, \"f\")[eventName];\n if (!eventListeners || eventListeners.length === 0) {\n return;\n }\n let externalListeners;\n // Making copy of the listeners array in case if it will be modified\n // during dispatch.\n for (const { listener, external, once } of eventListeners.slice(0)) {\n if (once) {\n this._off(eventName, listener);\n }\n if (external) {\n (externalListeners || (externalListeners = [])).push(listener);\n continue;\n }\n listener(data);\n }\n // Dispatch any \"external\" listeners *after* the internal ones, to give the\n // viewer components time to handle events and update their state first.\n if (externalListeners) {\n for (const listener of externalListeners) {\n listener(data);\n }\n externalListeners = null;\n }\n }\n /**\n * @ignore\n */\n _on(eventName, listener, options = null) {\n var _a;\n let rmAbort = null;\n if ((options === null || options === void 0 ? void 0 : options.signal) instanceof AbortSignal) {\n const { signal } = options;\n if (signal.aborted) {\n // console.error(\"Cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this._off(eventName, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n const eventListeners = ((_a = __classPrivateFieldGet(this, _EventBus_listeners, \"f\"))[eventName] || (_a[eventName] = []));\n eventListeners.push({\n listener,\n external: (options === null || options === void 0 ? void 0 : options.external) === true,\n once: (options === null || options === void 0 ? void 0 : options.once) === true,\n rmAbort,\n });\n }\n /**\n * @ignore\n */\n _off(eventName, listener) {\n var _a;\n const eventListeners = __classPrivateFieldGet(this, _EventBus_listeners, \"f\")[eventName];\n if (!eventListeners) {\n return;\n }\n for (let i = 0, ii = eventListeners.length; i < ii; i++) {\n const evt = eventListeners[i];\n if (evt.listener === listener) {\n (_a = evt.rmAbort) === null || _a === void 0 ? void 0 : _a.call(evt); // Ensure that the `AbortSignal` listener is removed.\n eventListeners.splice(i, 1);\n return;\n }\n }\n }\n}\n_EventBus_listeners = new WeakMap();\n// /**\n// * NOTE: Only used in the Firefox build-in pdf viewer.\n// */\n// class FirefoxEventBus extends EventBus {\n// #externalServices;\n// #globalEventNames;\n// #isInAutomation;\n// constructor(globalEventNames, externalServices, isInAutomation) {\n// super();\n// this.#globalEventNames = globalEventNames;\n// this.#externalServices = externalServices;\n// this.#isInAutomation = isInAutomation;\n// }\n// dispatch(eventName, data) {\n// if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"MOZCENTRAL\")) {\n// throw new Error(\"Not implemented: FirefoxEventBus.dispatch\");\n// }\n// super.dispatch(eventName, data);\n// if (this.#isInAutomation) {\n// const detail = Object.create(null);\n// if (data) {\n// for (const key in data) {\n// const value = data[key];\n// if (key === \"source\") {\n// if (value === window || value === document) {\n// return; // No need to re-dispatch (already) global events.\n// }\n// continue; // Ignore the `source` property.\n// }\n// detail[key] = value;\n// }\n// }\n// const event = new CustomEvent(eventName, {\n// bubbles: true,\n// cancelable: true,\n// detail,\n// });\n// document.dispatchEvent(event);\n// }\n// if (this.#globalEventNames?.has(eventName)) {\n// this.#externalServices.dispatchGlobalEvent({\n// eventName,\n// detail: data,\n// });\n// }\n// }\n// }\nexport { EventBus,\n// FirefoxEventBus,\n// waitOnEventOrTimeout,\n// WaitOnType\n };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// const DEFAULT_SCALE_VALUE = \"auto\";\nconst DEFAULT_SCALE = 1.0;\n// const DEFAULT_SCALE_DELTA = 1.1;\n// const MIN_SCALE = 0.1;\n// const MAX_SCALE = 10.0;\n// const UNKNOWN_SCALE = 0;\n// const MAX_AUTO_SCALE = 1.25;\n// const SCROLLBAR_PADDING = 40;\n// const VERTICAL_PADDING = 5;\nconst RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3,\n};\nconst PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3,\n};\n// const SidebarView = {\n// UNKNOWN: -1,\n// NONE: 0,\n// THUMBS: 1, // Default value.\n// OUTLINE: 2,\n// ATTACHMENTS: 3,\n// LAYERS: 4,\n// };\nconst TextLayerMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_PERMISSIONS: 2,\n};\nconst ScrollMode = {\n UNKNOWN: -1,\n VERTICAL: 0, // Default value.\n HORIZONTAL: 1,\n WRAPPED: 2,\n PAGE: 3,\n};\n// const SpreadMode = {\n// UNKNOWN: -1,\n// NONE: 0, // Default value.\n// ODD: 1,\n// EVEN: 2,\n// };\n// const CursorTool = {\n// SELECT: 0, // The default value.\n// HAND: 1,\n// ZOOM: 2,\n// };\n// // Used by `PDFViewerApplication`, and by the API unit-tests.\n// const AutoPrintRegExp = /\\bprint\\s*\\(/;\n// /**\n// * Scale factors for the canvas, necessary with HiDPI displays.\n// */\n// class OutputScale {\n// constructor() {\n// const pixelRatio = window.devicePixelRatio || 1;\n// /**\n// * @type {number} Horizontal scale.\n// */\n// this.sx = pixelRatio;\n// /**\n// * @type {number} Vertical scale.\n// */\n// this.sy = pixelRatio;\n// }\n// /**\n// * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\n// */\n// get scaled() {\n// return this.sx !== 1 || this.sy !== 1;\n// }\n// }\n/**\n * Scrolls specified element into view of its parent.\n * @param {HTMLElement} element - The element to be visible.\n * @param {Object} [spot] - An object with optional top and left properties,\n * specifying the offset from the top left edge.\n * @param {number} [spot.left]\n * @param {number} [spot.top]\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\n * ignore elements that either: Contains marked content identifiers,\n * or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\n */\nfunction scrollIntoView(element, spot, scrollMatches = false) {\n // Assuming offsetParent is available (it's not available when viewer is in\n // hidden iframe or object). We have to scroll: if the offsetParent is not set\n // producing the error. See also animationStarted.\n let parent = element.offsetParent;\n if (!parent) {\n console.error(\"offsetParent is not set -- cannot scroll\");\n return;\n }\n let offsetY = element.offsetTop + element.clientTop;\n let offsetX = element.offsetLeft + element.clientLeft;\n while ((parent.clientHeight === parent.scrollHeight &&\n parent.clientWidth === parent.scrollWidth) ||\n (scrollMatches &&\n (parent.classList.contains(\"markedContent\") || parent.classList.contains(\"k-marked-content\") ||\n getComputedStyle(parent).overflow === \"hidden\"))) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n parent = parent.offsetParent;\n if (!parent) {\n return; // no need to scroll\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\n// /**\n// * Helper function to start monitoring the scroll event and converting them into\n// * PDF.js friendly one: with scroll debounce and scroll direction.\n// */\n// function watchScroll(viewAreaElement, callback, abortSignal = undefined) {\n// const debounceScroll = function (evt) {\n// if (rAF) {\n// return;\n// }\n// // schedule an invocation of scroll for next animation frame.\n// rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n// rAF = null;\n// const currentX = viewAreaElement.scrollLeft;\n// const lastX = state.lastX;\n// if (currentX !== lastX) {\n// state.right = currentX > lastX;\n// }\n// state.lastX = currentX;\n// const currentY = viewAreaElement.scrollTop;\n// const lastY = state.lastY;\n// if (currentY !== lastY) {\n// state.down = currentY > lastY;\n// }\n// state.lastY = currentY;\n// callback(state);\n// });\n// };\n// const state = {\n// right: true,\n// down: true,\n// lastX: viewAreaElement.scrollLeft,\n// lastY: viewAreaElement.scrollTop,\n// _eventHandler: debounceScroll,\n// };\n// let rAF = null;\n// viewAreaElement.addEventListener(\"scroll\", debounceScroll, {\n// useCapture: true,\n// signal: abortSignal,\n// });\n// abortSignal?.addEventListener(\n// \"abort\",\n// () => window.cancelAnimationFrame(rAF),\n// { once: true }\n// );\n// return state;\n// }\n/**\n * Helper function to parse query string (e.g. ?param1=value¶m2=...).\n * @param {string} query\n * @returns {Map}\n */\nfunction parseQueryString(query) {\n const params = new Map();\n const urlSearchParams = new URLSearchParams(query);\n for (const [key, value] of urlSearchParams) {\n // for (const [key, value] of new URLSearchParams(query)) {\n params.set(key.toLowerCase(), value);\n }\n return params;\n}\n// const InvisibleCharsRegExp = /[\\x00-\\x1F]/g;\n// /**\n// * @param {string} str\n// * @param {boolean} [replaceInvisible]\n// */\n// function removeNullCharacters(str, replaceInvisible = false) {\n// if (!InvisibleCharsRegExp.test(str)) {\n// return str;\n// }\n// if (replaceInvisible) {\n// return str.replaceAll(InvisibleCharsRegExp, m => (m === \"\\x00\" ? \"\" : \" \"));\n// }\n// return str.replaceAll(\"\\x00\", \"\");\n// }\n/**\n * Use binary search to find the index of the first item in a given array which\n * passes a given condition. The items are expected to be sorted in the sense\n * that if the condition is true for one item in the array, then it is also true\n * for all following items.\n *\n * @returns {number} Index of the first array element to pass the test,\n * or |items.length| if no such element exists.\n */\nfunction binarySearchFirstItem(items, condition, start = 0) {\n let minIndex = start;\n let maxIndex = items.length - 1;\n if (maxIndex < 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n while (minIndex < maxIndex) {\n const currentIndex = (minIndex + maxIndex) >> 1;\n const currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n }\n else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n}\n// /**\n// * Approximates float number as a fraction using Farey sequence (max order\n// * of 8).\n// * @param {number} x - Positive float number.\n// * @returns {Array} Estimated fraction: the first array item is a numerator,\n// * the second one is a denominator.\n// * They are both natural numbers.\n// */\n// function approximateFraction(x) {\n// // Fast paths for int numbers or their inversions.\n// if (Math.floor(x) === x) {\n// return [x, 1];\n// }\n// const xinv = 1 / x;\n// const limit = 8;\n// if (xinv > limit) {\n// return [1, limit];\n// } else if (Math.floor(xinv) === xinv) {\n// return [1, xinv];\n// }\n// const x_ = x > 1 ? xinv : x;\n// // a/b and c/d are neighbours in Farey sequence.\n// let a = 0,\n// b = 1,\n// c = 1,\n// d = 1;\n// // Limiting search to order 8.\n// while (true) {\n// // Generating next term in sequence (order of q).\n// const p = a + c,\n// q = b + d;\n// if (q > limit) {\n// break;\n// }\n// if (x_ <= p / q) {\n// c = p;\n// d = q;\n// } else {\n// a = p;\n// b = q;\n// }\n// }\n// let result;\n// // Select closest of the neighbours to x.\n// if (x_ - a / b < c / d - x_) {\n// result = x_ === x ? [a, b] : [b, a];\n// } else {\n// result = x_ === x ? [c, d] : [d, c];\n// }\n// return result;\n// }\n// /**\n// * @param {number} x - A positive number to round to a multiple of `div`.\n// * @param {number} div - A natural number.\n// */\n// function floorToDivide(x, div) {\n// return x - (x % div);\n// }\n// /**\n// * @typedef {Object} GetPageSizeInchesParameters\n// * @property {number[]} view\n// * @property {number} userUnit\n// * @property {number} rotate\n// */\n// /**\n// * @typedef {Object} PageSize\n// * @property {number} width - In inches.\n// * @property {number} height - In inches.\n// */\n// /**\n// * Gets the size of the specified page, converted from PDF units to inches.\n// * @param {GetPageSizeInchesParameters} params\n// * @returns {PageSize}\n// */\n// function getPageSizeInches({ view, userUnit, rotate }) {\n// const [x1, y1, x2, y2] = view;\n// // We need to take the page rotation into account as well.\n// const changeOrientation = rotate % 180 !== 0;\n// const width = ((x2 - x1) / 72) * userUnit;\n// const height = ((y2 - y1) / 72) * userUnit;\n// return {\n// width: changeOrientation ? height : width,\n// height: changeOrientation ? width : height,\n// };\n// }\n// /**\n// * Helper function for getVisibleElements.\n// *\n// * @param {number} index - initial guess at the first visible element\n// * @param {Array} views - array of pages, into which `index` is an index\n// * @param {number} top - the top of the scroll pane\n// * @returns {number} less than or equal to `index` that is definitely at or\n// * before the first visible element in `views`, but not by too much. (Usually,\n// * this will be the first element in the first partially visible row in\n// * `views`, although sometimes it goes back one row further.)\n// */\n// function backtrackBeforeAllVisibleElements(index, views, top) {\n// // binarySearchFirstItem's assumption is that the input is ordered, with only\n// // one index where the conditions flips from false to true: [false ...,\n// // true...]. With vertical scrolling and spreads, it is possible to have\n// // [false ..., true, false, true ...]. With wrapped scrolling we can have a\n// // similar sequence, with many more mixed true and false in the middle.\n// //\n// // So there is no guarantee that the binary search yields the index of the\n// // first visible element. It could have been any of the other visible elements\n// // that were preceded by a hidden element.\n// // Of course, if either this element or the previous (hidden) element is also\n// // the first element, there's nothing to worry about.\n// if (index < 2) {\n// return index;\n// }\n// // That aside, the possible cases are represented below.\n// //\n// // **** = fully hidden\n// // A*B* = mix of partially visible and/or hidden pages\n// // CDEF = fully visible\n// //\n// // (1) Binary search could have returned A, in which case we can stop.\n// // (2) Binary search could also have returned B, in which case we need to\n// // check the whole row.\n// // (3) Binary search could also have returned C, in which case we need to\n// // check the whole previous row.\n// //\n// // There's one other possibility:\n// //\n// // **** = fully hidden\n// // ABCD = mix of fully and/or partially visible pages\n// //\n// // (4) Binary search could only have returned A.\n// // Initially assume that we need to find the beginning of the current row\n// // (case 1, 2, or 4), which means finding a page that is above the current\n// // page's top. If the found page is partially visible, we're definitely not in\n// // case 3, and this assumption is correct.\n// let elt = views[index].div;\n// let pageTop = elt.offsetTop + elt.clientTop;\n// if (pageTop >= top) {\n// // The found page is fully visible, so we're actually either in case 3 or 4,\n// // and unfortunately we can't tell the difference between them without\n// // scanning the entire previous row, so we just conservatively assume that\n// // we do need to backtrack to that row. In both cases, the previous page is\n// // in the previous row, so use its top instead.\n// elt = views[index - 1].div;\n// pageTop = elt.offsetTop + elt.clientTop;\n// }\n// // Now we backtrack to the first page that still has its bottom below\n// // `pageTop`, which is the top of a page in the first visible row (unless\n// // we're in case 4, in which case it's the row before that).\n// // `index` is found by binary search, so the page at `index - 1` is\n// // invisible and we can start looking for potentially visible pages from\n// // `index - 2`. (However, if this loop terminates on its first iteration,\n// // which is the case when pages are stacked vertically, `index` should remain\n// // unchanged, so we use a distinct loop variable.)\n// for (let i = index - 2; i >= 0; --i) {\n// elt = views[i].div;\n// if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n// // We have reached the previous row, so stop now.\n// // This loop is expected to terminate relatively quickly because the\n// // number of pages per row is expected to be small.\n// break;\n// }\n// index = i;\n// }\n// return index;\n// }\n// /**\n// * @typedef {Object} GetVisibleElementsParameters\n// * @property {HTMLElement} scrollEl - A container that can possibly scroll.\n// * @property {Array} views - Objects with a `div` property that contains an\n// * HTMLElement, which should all be descendants of `scrollEl` satisfying the\n// * relevant layout assumptions.\n// * @property {boolean} sortByVisibility - If `true`, the returned elements are\n// * sorted in descending order of the percent of their padding box that is\n// * visible. The default value is `false`.\n// * @property {boolean} horizontal - If `true`, the elements are assumed to be\n// * laid out horizontally instead of vertically. The default value is `false`.\n// * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\n// * be in right-to-left mode. The default value is `false`.\n// */\n// /**\n// * Generic helper to find out what elements are visible within a scroll pane.\n// *\n// * Well, pretty generic. There are some assumptions placed on the elements\n// * referenced by `views`:\n// * - If `horizontal`, no left of any earlier element is to the right of the\n// * left of any later element.\n// * - Otherwise, `views` can be split into contiguous rows where, within a row,\n// * no top of any element is below the bottom of any other element, and\n// * between rows, no bottom of any element in an earlier row is below the\n// * top of any element in a later row.\n// *\n// * (Here, top, left, etc. all refer to the padding edge of the element in\n// * question. For pages, that ends up being equivalent to the bounding box of the\n// * rendering canvas. Earlier and later refer to index in `views`, not page\n// * layout.)\n// *\n// * @param {GetVisibleElementsParameters} params\n// * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\n// */\n// function getVisibleElements({\n// scrollEl,\n// views,\n// sortByVisibility = false,\n// horizontal = false,\n// rtl = false,\n// }) {\n// const top = scrollEl.scrollTop,\n// bottom = top + scrollEl.clientHeight;\n// const left = scrollEl.scrollLeft,\n// right = left + scrollEl.clientWidth;\n// // Throughout this \"generic\" function, comments will assume we're working with\n// // PDF document pages, which is the most important and complex case. In this\n// // case, the visible elements we're actually interested is the page canvas,\n// // which is contained in a wrapper which adds no padding/border/margin, which\n// // is itself contained in `view.div` which adds no padding (but does add a\n// // border). So, as specified in this function's doc comment, this function\n// // does all of its work on the padding edge of the provided views, starting at\n// // offsetLeft/Top (which includes margin) and adding clientLeft/Top (which is\n// // the border). Adding clientWidth/Height gets us the bottom-right corner of\n// // the padding edge.\n// function isElementBottomAfterViewTop(view) {\n// const element = view.div;\n// const elementBottom =\n// element.offsetTop + element.clientTop + element.clientHeight;\n// return elementBottom > top;\n// }\n// function isElementNextAfterViewHorizontally(view) {\n// const element = view.div;\n// const elementLeft = element.offsetLeft + element.clientLeft;\n// const elementRight = elementLeft + element.clientWidth;\n// return rtl ? elementLeft < right : elementRight > left;\n// }\n// const visible = [],\n// ids = new Set(),\n// numViews = views.length;\n// let firstVisibleElementInd = binarySearchFirstItem(\n// views,\n// horizontal\n// ? isElementNextAfterViewHorizontally\n// : isElementBottomAfterViewTop\n// );\n// // Please note the return value of the `binarySearchFirstItem` function when\n// // no valid element is found (hence the `firstVisibleElementInd` check below).\n// if (\n// firstVisibleElementInd > 0 &&\n// firstVisibleElementInd < numViews &&\n// !horizontal\n// ) {\n// // In wrapped scrolling (or vertical scrolling with spreads), with some page\n// // sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\n// // condition: there can be pages with bottoms above the view top between\n// // pages with bottoms below. This function detects and corrects that error;\n// // see it for more comments.\n// firstVisibleElementInd = backtrackBeforeAllVisibleElements(\n// firstVisibleElementInd,\n// views,\n// top\n// );\n// }\n// // lastEdge acts as a cutoff for us to stop looping, because we know all\n// // subsequent pages will be hidden.\n// //\n// // When using wrapped scrolling or vertical scrolling with spreads, we can't\n// // simply stop the first time we reach a page below the bottom of the view;\n// // the tops of subsequent pages on the same row could still be visible. In\n// // horizontal scrolling, we don't have that issue, so we can stop as soon as\n// // we pass `right`, without needing the code below that handles the -1 case.\n// let lastEdge = horizontal ? right : -1;\n// for (let i = firstVisibleElementInd; i < numViews; i++) {\n// const view = views[i],\n// element = view.div;\n// const currentWidth = element.offsetLeft + element.clientLeft;\n// const currentHeight = element.offsetTop + element.clientTop;\n// const viewWidth = element.clientWidth,\n// viewHeight = element.clientHeight;\n// const viewRight = currentWidth + viewWidth;\n// const viewBottom = currentHeight + viewHeight;\n// if (lastEdge === -1) {\n// // As commented above, this is only needed in non-horizontal cases.\n// // Setting lastEdge to the bottom of the first page that is partially\n// // visible ensures that the next page fully below lastEdge is on the\n// // next row, which has to be fully hidden along with all subsequent rows.\n// if (viewBottom >= bottom) {\n// lastEdge = viewBottom;\n// }\n// } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n// break;\n// }\n// if (\n// viewBottom <= top ||\n// currentHeight >= bottom ||\n// viewRight <= left ||\n// currentWidth >= right\n// ) {\n// continue;\n// }\n// const hiddenHeight =\n// Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n// const hiddenWidth =\n// Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n// const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,\n// fractionWidth = (viewWidth - hiddenWidth) / viewWidth;\n// const percent = (fractionHeight * fractionWidth * 100) | 0;\n// visible.push({\n// id: view.id,\n// x: currentWidth,\n// y: currentHeight,\n// view,\n// percent,\n// widthPercent: (fractionWidth * 100) | 0,\n// });\n// ids.add(view.id);\n// }\n// const first = visible[0],\n// last = visible.at(-1);\n// if (sortByVisibility) {\n// visible.sort(function (a, b) {\n// const pc = a.percent - b.percent;\n// if (Math.abs(pc) > 0.001) {\n// return -pc;\n// }\n// return a.id - b.id; // ensure stability\n// });\n// }\n// return { first, last, views: visible, ids };\n// }\n// function normalizeWheelEventDirection(evt) {\n// let delta = Math.hypot(evt.deltaX, evt.deltaY);\n// const angle = Math.atan2(evt.deltaY, evt.deltaX);\n// if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n// // All that is left-up oriented has to change the sign.\n// delta = -delta;\n// }\n// return delta;\n// }\n// function normalizeWheelEventDelta(evt) {\n// const deltaMode = evt.deltaMode; // Avoid being affected by bug 1392460.\n// let delta = normalizeWheelEventDirection(evt);\n// const MOUSE_PIXELS_PER_LINE = 30;\n// const MOUSE_LINES_PER_PAGE = 30;\n// // Converts delta to per-page units\n// if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n// delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n// } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) {\n// delta /= MOUSE_LINES_PER_PAGE;\n// }\n// return delta;\n// }\n// function isValidRotation(angle) {\n// return Number.isInteger(angle) && angle % 90 === 0;\n// }\n// function isValidScrollMode(mode) {\n// return (\n// Number.isInteger(mode) &&\n// Object.values(ScrollMode).includes(mode) &&\n// mode !== ScrollMode.UNKNOWN\n// );\n// }\n// function isValidSpreadMode(mode) {\n// return (\n// Number.isInteger(mode) &&\n// Object.values(SpreadMode).includes(mode) &&\n// mode !== SpreadMode.UNKNOWN\n// );\n// }\n// function isPortraitOrientation(size) {\n// return size.width <= size.height;\n// }\n// /**\n// * Promise that is resolved when DOM window becomes visible.\n// */\n// const animationStarted = new Promise(function (resolve) {\n// if (\n// typeof PDFJSDev !== \"undefined\" &&\n// PDFJSDev.test(\"LIB\") &&\n// typeof window === \"undefined\"\n// ) {\n// // Prevent \"ReferenceError: window is not defined\" errors when running the\n// // unit-tests in Node.js environments.\n// setTimeout(resolve, 20);\n// return;\n// }\n// window.requestAnimationFrame(resolve);\n// });\n// const docStyle =\n// typeof PDFJSDev !== \"undefined\" &&\n// PDFJSDev.test(\"LIB\") &&\n// typeof document === \"undefined\"\n// ? null\n// : document.documentElement.style;\n// function clamp(v, min, max) {\n// return Math.min(Math.max(v, min), max);\n// }\n// class ProgressBar {\n// #classList = null;\n// #disableAutoFetchTimeout = null;\n// #percent = 0;\n// #style = null;\n// #visible = true;\n// constructor(bar) {\n// this.#classList = bar.classList;\n// this.#style = bar.style;\n// }\n// get percent() {\n// return this.#percent;\n// }\n// set percent(val) {\n// this.#percent = clamp(val, 0, 100);\n// if (isNaN(val)) {\n// this.#classList.add(\"indeterminate\");\n// return;\n// }\n// this.#classList.remove(\"indeterminate\");\n// this.#style.setProperty(\"--progressBar-percent\", `${this.#percent}%`);\n// }\n// setWidth(viewer) {\n// if (!viewer) {\n// return;\n// }\n// const container = viewer.parentNode;\n// const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n// if (scrollbarWidth > 0) {\n// this.#style.setProperty(\n// \"--progressBar-end-offset\",\n// `${scrollbarWidth}px`\n// );\n// }\n// }\n// setDisableAutoFetch(delay = /* ms = */ 5000) {\n// if (this.#percent === 100 || isNaN(this.#percent)) {\n// return;\n// }\n// if (this.#disableAutoFetchTimeout) {\n// clearTimeout(this.#disableAutoFetchTimeout);\n// }\n// this.show();\n// this.#disableAutoFetchTimeout = setTimeout(() => {\n// this.#disableAutoFetchTimeout = null;\n// this.hide();\n// }, delay);\n// }\n// hide() {\n// if (!this.#visible) {\n// return;\n// }\n// this.#visible = false;\n// this.#classList.add(\"hidden\");\n// this.#classList.add(\"k-hidden\");\n// }\n// show() {\n// if (this.#visible) {\n// return;\n// }\n// this.#visible = true;\n// this.#classList.remove(\"hidden\");\n// this.#classList.remove(\"k-hidden\");\n// }\n// }\n// /**\n// * Get the active or focused element in current DOM.\n// *\n// * Recursively search for the truly active or focused element in case there are\n// * shadow DOMs.\n// *\n// * @returns {Element} the truly active or focused element.\n// */\n// function getActiveOrFocusedElement() {\n// let curRoot = document;\n// let curActiveOrFocused =\n// curRoot.activeElement || curRoot.querySelector(\":focus\");\n// while (curActiveOrFocused?.shadowRoot) {\n// curRoot = curActiveOrFocused.shadowRoot;\n// curActiveOrFocused =\n// curRoot.activeElement || curRoot.querySelector(\":focus\");\n// }\n// return curActiveOrFocused;\n// }\n// /**\n// * Converts API PageLayout values to the format used by `BaseViewer`.\n// * @param {string} layout - The API PageLayout value.\n// * @returns {Object}\n// */\n// function apiPageLayoutToViewerModes(layout) {\n// let scrollMode = ScrollMode.VERTICAL,\n// spreadMode = SpreadMode.NONE;\n// switch (layout) {\n// case \"SinglePage\":\n// scrollMode = ScrollMode.PAGE;\n// break;\n// case \"OneColumn\":\n// break;\n// case \"TwoPageLeft\":\n// scrollMode = ScrollMode.PAGE;\n// /* falls through */\n// case \"TwoColumnLeft\":\n// spreadMode = SpreadMode.ODD;\n// break;\n// case \"TwoPageRight\":\n// scrollMode = ScrollMode.PAGE;\n// /* falls through */\n// case \"TwoColumnRight\":\n// spreadMode = SpreadMode.EVEN;\n// break;\n// }\n// return { scrollMode, spreadMode };\n// }\n// /**\n// * Converts API PageMode values to the format used by `PDFSidebar`.\n// * NOTE: There's also a \"FullScreen\" parameter which is not possible to support,\n// * since the Fullscreen API used in browsers requires that entering\n// * fullscreen mode only occurs as a result of a user-initiated event.\n// * @param {string} mode - The API PageMode value.\n// * @returns {number} A value from {SidebarView}.\n// */\n// function apiPageModeToSidebarView(mode) {\n// switch (mode) {\n// case \"UseNone\":\n// return SidebarView.NONE;\n// case \"UseThumbs\":\n// return SidebarView.THUMBS;\n// case \"UseOutlines\":\n// return SidebarView.OUTLINE;\n// case \"UseAttachments\":\n// return SidebarView.ATTACHMENTS;\n// case \"UseOC\":\n// return SidebarView.LAYERS;\n// }\n// return SidebarView.NONE; // Default value.\n// }\n// function toggleCheckedBtn(button, toggle, view = null) {\n// button.classList.toggle(\"toggled\", toggle);\n// button.classList.toggle(\"k-toggled\", toggle);\n// button.setAttribute(\"aria-checked\", toggle);\n// view?.classList.toggle(\"hidden\", !toggle);\n// view?.classList.toggle(\"k-hidden\", !toggle);\n// }\n// function toggleExpandedBtn(button, toggle, view = null) {\n// button.classList.toggle(\"toggled\", toggle);\n// button.classList.toggle(\"k-toggled\", toggle);\n// button.setAttribute(\"aria-expanded\", toggle);\n// view?.classList.toggle(\"hidden\", !toggle);\n// view?.classList.toggle(\"k-hidden\", !toggle);\n// }\nexport { \n// animationStarted,\n// apiPageLayoutToViewerModes,\n// apiPageModeToSidebarView,\n// approximateFraction,\n// AutoPrintRegExp,\n// backtrackBeforeAllVisibleElements, // only exported for testing\nbinarySearchFirstItem, \n// CursorTool,\nDEFAULT_SCALE, \n// DEFAULT_SCALE_DELTA,\n// DEFAULT_SCALE_VALUE,\n// docStyle,\n// floorToDivide,\n// getActiveOrFocusedElement,\n// getPageSizeInches,\n// getVisibleElements,\n// isPortraitOrientation,\n// isValidRotation,\n// isValidScrollMode,\n// isValidSpreadMode,\n// MAX_AUTO_SCALE,\n// MAX_SCALE,\n// MIN_SCALE,\n// normalizeWheelEventDelta,\n// normalizeWheelEventDirection,\n// OutputScale,\nparseQueryString, PresentationModeState, \n// ProgressBar,\n// removeNullCharacters,\nRenderingStates, \n// SCROLLBAR_PADDING,\nscrollIntoView, ScrollMode, \n// SidebarView,\n// SpreadMode,\nTextLayerMode,\n// toggleCheckedBtn,\n// toggleExpandedBtn,\n// UNKNOWN_SCALE,\n// VERTICAL_PADDING,\n// watchScroll,\n };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _TextAccessibilityManager_instances, _a, _TextAccessibilityManager_enabled, _TextAccessibilityManager_textChildren, _TextAccessibilityManager_textNodes, _TextAccessibilityManager_waitingElements, _TextAccessibilityManager_compareElementPositions, _TextAccessibilityManager_addIdToAriaOwns;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { binarySearchFirstItem } from \"../shared/ui_utils\";\n/**\n * This class aims to provide some methods:\n * - to reorder elements in the DOM with respect to the visual order;\n * - to create a link, using aria-owns, between spans in the textLayer and\n * annotations in the annotationLayer. The goal is to help to know\n * where the annotations are in the text flow.\n */\nclass TextAccessibilityManager {\n constructor() {\n _TextAccessibilityManager_instances.add(this);\n _TextAccessibilityManager_enabled.set(this, false);\n _TextAccessibilityManager_textChildren.set(this, null);\n _TextAccessibilityManager_textNodes.set(this, new Map());\n _TextAccessibilityManager_waitingElements.set(this, new Map());\n }\n setTextMapping(textDivs) {\n __classPrivateFieldSet(this, _TextAccessibilityManager_textChildren, textDivs, \"f\");\n }\n /**\n * Function called when the text layer has finished rendering.\n */\n enable() {\n if (__classPrivateFieldGet(this, _TextAccessibilityManager_enabled, \"f\")) {\n // throw new Error(\"TextAccessibilityManager is already enabled.\");\n }\n if (!__classPrivateFieldGet(this, _TextAccessibilityManager_textChildren, \"f\")) {\n throw new Error(\"Text divs and strings have not been set.\");\n }\n __classPrivateFieldSet(this, _TextAccessibilityManager_enabled, true, \"f\");\n __classPrivateFieldSet(this, _TextAccessibilityManager_textChildren, __classPrivateFieldGet(this, _TextAccessibilityManager_textChildren, \"f\").slice(), \"f\");\n __classPrivateFieldGet(this, _TextAccessibilityManager_textChildren, \"f\").sort(__classPrivateFieldGet(_a, _a, \"m\", _TextAccessibilityManager_compareElementPositions));\n if (__classPrivateFieldGet(this, _TextAccessibilityManager_textNodes, \"f\").size > 0) {\n // Some links have been made before this manager has been disabled, hence\n // we restore them.\n const textChildren = __classPrivateFieldGet(this, _TextAccessibilityManager_textChildren, \"f\");\n for (const [id, nodeIndex] of __classPrivateFieldGet(this, _TextAccessibilityManager_textNodes, \"f\")) {\n const element = document.getElementById(id);\n if (!element) {\n // If the page was *fully* reset the element no longer exists, and it\n // will be re-inserted later (i.e. when the annotationLayer renders).\n __classPrivateFieldGet(this, _TextAccessibilityManager_textNodes, \"f\").delete(id);\n continue;\n }\n __classPrivateFieldGet(this, _TextAccessibilityManager_instances, \"m\", _TextAccessibilityManager_addIdToAriaOwns).call(this, id, textChildren[nodeIndex]);\n }\n }\n for (const [element, isRemovable] of __classPrivateFieldGet(this, _TextAccessibilityManager_waitingElements, \"f\")) {\n this.addPointerInTextLayer(element, isRemovable);\n }\n __classPrivateFieldGet(this, _TextAccessibilityManager_waitingElements, \"f\").clear();\n }\n disable() {\n if (!__classPrivateFieldGet(this, _TextAccessibilityManager_enabled, \"f\")) {\n return;\n }\n // Don't clear this.#textNodes which is used to rebuild the aria-owns\n // in case it's re-enabled at some point.\n __classPrivateFieldGet(this, _TextAccessibilityManager_waitingElements, \"f\").clear();\n __classPrivateFieldSet(this, _TextAccessibilityManager_textChildren, null, \"f\");\n __classPrivateFieldSet(this, _TextAccessibilityManager_enabled, false, \"f\");\n }\n /**\n * Remove an aria-owns id from a node in the text layer.\n * @param {HTMLElement} element\n */\n removePointerInTextLayer(element) {\n if (!__classPrivateFieldGet(this, _TextAccessibilityManager_enabled, \"f\")) {\n __classPrivateFieldGet(this, _TextAccessibilityManager_waitingElements, \"f\").delete(element);\n return;\n }\n const children = __classPrivateFieldGet(this, _TextAccessibilityManager_textChildren, \"f\");\n if (!children || children.length === 0) {\n return;\n }\n const { id } = element;\n const nodeIndex = __classPrivateFieldGet(this, _TextAccessibilityManager_textNodes, \"f\").get(id);\n if (nodeIndex === undefined) {\n return;\n }\n const node = children[nodeIndex];\n __classPrivateFieldGet(this, _TextAccessibilityManager_textNodes, \"f\").delete(id);\n let owns = node.getAttribute(\"aria-owns\");\n if (owns === null || owns === void 0 ? void 0 : owns.includes(id)) {\n owns = owns\n .split(\" \")\n .filter(x => x !== id)\n .join(\" \");\n if (owns) {\n node.setAttribute(\"aria-owns\", owns);\n }\n else {\n node.removeAttribute(\"aria-owns\");\n node.setAttribute(\"role\", \"presentation\");\n }\n }\n }\n /**\n * Find the text node which is the nearest and add an aria-owns attribute\n * in order to correctly position this editor in the text flow.\n * @param {HTMLElement} element\n * @param {boolean} isRemovable\n * @returns {string|null} The id in the struct tree if any.\n */\n addPointerInTextLayer(element, isRemovable) {\n // todo: mocked highlight editor is null here\n if (!element) {\n console.warn(\"no element\");\n return;\n }\n const { id } = element;\n if (!id) {\n return null;\n }\n if (!__classPrivateFieldGet(this, _TextAccessibilityManager_enabled, \"f\")) {\n // The text layer needs to be there, so we postpone the association.\n __classPrivateFieldGet(this, _TextAccessibilityManager_waitingElements, \"f\").set(element, isRemovable);\n return null;\n }\n if (isRemovable) {\n this.removePointerInTextLayer(element);\n }\n const children = __classPrivateFieldGet(this, _TextAccessibilityManager_textChildren, \"f\");\n if (!children || children.length === 0) {\n return null;\n }\n const index = binarySearchFirstItem(children, node => __classPrivateFieldGet(_a, _a, \"m\", _TextAccessibilityManager_compareElementPositions).call(_a, element, node) < 0);\n const nodeIndex = Math.max(0, index - 1);\n const child = children[nodeIndex];\n __classPrivateFieldGet(this, _TextAccessibilityManager_instances, \"m\", _TextAccessibilityManager_addIdToAriaOwns).call(this, id, child);\n __classPrivateFieldGet(this, _TextAccessibilityManager_textNodes, \"f\").set(id, nodeIndex);\n const parent = child.parentNode;\n // return parent?.classList.contains(\"markedContent\") ? parent.id : null;\n return (parent === null || parent === void 0 ? void 0 : parent.classList.contains(\"markedContent\")) ||\n (parent === null || parent === void 0 ? void 0 : parent.classList.contains(\"k-marked-content\")) ? parent.id : null;\n }\n /**\n * Move a div in the DOM in order to respect the visual order.\n * @param {HTMLDivElement} element\n * @returns {string|null} The id in the struct tree if any.\n */\n moveElementInDOM(container, element, contentElement, isRemovable) {\n const id = this.addPointerInTextLayer(contentElement, isRemovable);\n if (!container.hasChildNodes()) {\n container.append(element);\n return id;\n }\n // todo: use children to skip text nodes\n // const children = Array.from(container.childNodes).filter(\n const children = Array.from(container.children).filter(node => node !== element);\n if (children.length === 0) {\n return id;\n }\n const elementToCompare = contentElement || element;\n const index = binarySearchFirstItem(children, node => __classPrivateFieldGet(_a, _a, \"m\", _TextAccessibilityManager_compareElementPositions).call(_a, elementToCompare, node) < 0);\n if (index === 0) {\n children[0].before(element);\n }\n else {\n children[index - 1].after(element);\n }\n return id;\n }\n}\n_a = TextAccessibilityManager, _TextAccessibilityManager_enabled = new WeakMap(), _TextAccessibilityManager_textChildren = new WeakMap(), _TextAccessibilityManager_textNodes = new WeakMap(), _TextAccessibilityManager_waitingElements = new WeakMap(), _TextAccessibilityManager_instances = new WeakSet(), _TextAccessibilityManager_compareElementPositions = function _TextAccessibilityManager_compareElementPositions(e1, e2) {\n const rect1 = e1.getBoundingClientRect();\n const rect2 = e2.getBoundingClientRect();\n if (rect1.width === 0 && rect1.height === 0) {\n return +1;\n }\n if (rect2.width === 0 && rect2.height === 0) {\n return -1;\n }\n const top1 = rect1.y;\n const bot1 = rect1.y + rect1.height;\n const mid1 = rect1.y + rect1.height / 2;\n const top2 = rect2.y;\n const bot2 = rect2.y + rect2.height;\n const mid2 = rect2.y + rect2.height / 2;\n if (mid1 <= top2 && mid2 >= bot1) {\n return -1;\n }\n if (mid2 <= top1 && mid1 >= bot2) {\n return +1;\n }\n const centerX1 = rect1.x + rect1.width / 2;\n const centerX2 = rect2.x + rect2.width / 2;\n return centerX1 - centerX2;\n}, _TextAccessibilityManager_addIdToAriaOwns = function _TextAccessibilityManager_addIdToAriaOwns(id, node) {\n const owns = node.getAttribute(\"aria-owns\");\n if (!(owns === null || owns === void 0 ? void 0 : owns.includes(id))) {\n node.setAttribute(\"aria-owns\", owns ? `${owns} ${id}` : id);\n }\n node.removeAttribute(\"role\");\n};\nexport { TextAccessibilityManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _TextLayerBuilder_instances, _a, _TextLayerBuilder_onAppend, _TextLayerBuilder_textLayer, _TextLayerBuilder_textLayers, _TextLayerBuilder_selectionChangeAbortController, _TextLayerBuilder_bindMouse, _TextLayerBuilder_removeGlobalSelectionListener, _TextLayerBuilder_enableGlobalSelectionListener;\nimport { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { TextLayer } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { addClass } from \"../common/dom\";\n/**\n * The text layer builder provides text selection functionality for the PDF.\n * It does this by creating overlay divs over the PDF's text. These divs\n * contain text that matches the PDF text they are overlaying.\n */\nclass TextLayerBuilder {\n constructor({ pdfPage, \n // highlighter = null,\n accessibilityManager, \n // enablePermissions = false,\n // todo: fix styles\n styles, onAppend = null, }) {\n _TextLayerBuilder_instances.add(this);\n // todo: props\n this.pdfPage = null;\n // highlighter = null;\n this.div = null;\n this.accessibilityManager = null;\n // todo: props\n // #enablePermissions = false;\n _TextLayerBuilder_onAppend.set(this, null);\n // #renderingDone = false;\n _TextLayerBuilder_textLayer.set(this, null);\n this.pdfPage = pdfPage;\n // this.highlighter = highlighter;\n this.accessibilityManager = accessibilityManager;\n // this.#enablePermissions = enablePermissions === true;\n __classPrivateFieldSet(this, _TextLayerBuilder_onAppend, onAppend, \"f\");\n this.div = document.createElement(\"div\");\n this.div.tabIndex = 0;\n // this.div.className = \"textLayer\";\n // todo: fix classes\n this.div.classList.add(\"k-text-layer\");\n // todo: fix styles\n Object.keys(styles).forEach((key) => (this.div.style[key] = styles[key]));\n }\n /**\n * Renders the text layer.\n * @param {PageViewport} viewport\n * @param {Object} [textContentParams]\n */\n render(viewport_1) {\n return __awaiter(this, arguments, void 0, function* (viewport, textContentParams = null) {\n var _a, _b, _c;\n // if (this.#renderingDone && this.#textLayer) {\n if (__classPrivateFieldGet(this, _TextLayerBuilder_textLayer, \"f\")) {\n __classPrivateFieldGet(this, _TextLayerBuilder_textLayer, \"f\").update({\n viewport,\n onBefore: this.hide.bind(this),\n });\n this.show();\n return;\n }\n this.cancel();\n __classPrivateFieldSet(this, _TextLayerBuilder_textLayer, new TextLayer({\n textContentSource: this.pdfPage.streamTextContent(textContentParams || {\n // includeMarkedContent: true,\n // setting this to false requires removing \"await\"\n // in page.ts when calling this.#renderTextLayer()\n includeMarkedContent: false,\n disableNormalization: true,\n }),\n container: this.div,\n viewport,\n }), \"f\");\n // const { textDivs, textContentItemsStr } = this.#textLayer;\n const { textDivs } = __classPrivateFieldGet(this, _TextLayerBuilder_textLayer, \"f\");\n // this.highlighter?.setTextMapping(textDivs, textContentItemsStr);\n (_a = this.accessibilityManager) === null || _a === void 0 ? void 0 : _a.setTextMapping(textDivs);\n yield __classPrivateFieldGet(this, _TextLayerBuilder_textLayer, \"f\").render();\n // this.#renderingDone = true;\n // todo: manually add \"k-marked-content\" class\n // as pdf.js text layer cannot render it\n const markedContentElements = Array.from(this.div.querySelectorAll(\".markedContent\") || []) || [];\n markedContentElements.forEach(x => addClass(\"k-marked-content\", x));\n if (markedContentElements && markedContentElements.length > 0) {\n const endOfContent = document.createElement(\"div\");\n endOfContent.className = \"endOfContent\";\n this.div.append(endOfContent);\n __classPrivateFieldGet(this, _TextLayerBuilder_instances, \"m\", _TextLayerBuilder_bindMouse).call(this, endOfContent);\n }\n // Ensure that the textLayer is appended to the DOM *before* handling\n // e.g. a pending search operation.\n (_b = __classPrivateFieldGet(this, _TextLayerBuilder_onAppend, \"f\")) === null || _b === void 0 ? void 0 : _b.call(this, this.div);\n // this.highlighter?.enable();\n (_c = this.accessibilityManager) === null || _c === void 0 ? void 0 : _c.enable();\n });\n }\n hide() {\n // if (!this.div.hidden && this.#renderingDone) {\n if (!this.div.hidden) {\n // We turn off the highlighter in order to avoid to scroll into view an\n // element of the text layer which could be hidden.\n // this.highlighter?.disable();\n this.div.hidden = true;\n }\n }\n show() {\n // if (this.div.hidden && this.#renderingDone) {\n if (this.div.hidden) {\n this.div.hidden = false;\n // this.highlighter?.enable();\n }\n }\n /**\n * Cancel rendering of the text layer.\n */\n cancel() {\n var _b, _c;\n (_b = __classPrivateFieldGet(this, _TextLayerBuilder_textLayer, \"f\")) === null || _b === void 0 ? void 0 : _b.cancel();\n __classPrivateFieldSet(this, _TextLayerBuilder_textLayer, null, \"f\");\n // this.highlighter?.disable();\n (_c = this.accessibilityManager) === null || _c === void 0 ? void 0 : _c.disable();\n __classPrivateFieldGet(_a, _a, \"m\", _TextLayerBuilder_removeGlobalSelectionListener).call(_a, this.div);\n }\n}\n_a = TextLayerBuilder, _TextLayerBuilder_onAppend = new WeakMap(), _TextLayerBuilder_textLayer = new WeakMap(), _TextLayerBuilder_instances = new WeakSet(), _TextLayerBuilder_bindMouse = function _TextLayerBuilder_bindMouse(end) {\n const { div } = this;\n // div.addEventListener(\"mousedown\", () => {\n // div.classList.add(\"selecting\");\n // });\n // div.addEventListener(\"copy\", event => {\n // if (!this.#enablePermissions) {\n // const selection = document.getSelection();\n // event.clipboardData.setData(\n // \"text/plain\",\n // removeNullCharacters(normalizeUnicode(selection.toString()))\n // );\n // }\n // event.preventDefault();\n // event.stopPropagation();\n // });\n __classPrivateFieldGet(_a, _a, \"f\", _TextLayerBuilder_textLayers).set(div, end);\n __classPrivateFieldGet(_a, _a, \"m\", _TextLayerBuilder_enableGlobalSelectionListener).call(_a);\n}, _TextLayerBuilder_removeGlobalSelectionListener = function _TextLayerBuilder_removeGlobalSelectionListener(textLayerDiv) {\n var _b;\n __classPrivateFieldGet(this, _a, \"f\", _TextLayerBuilder_textLayers).delete(textLayerDiv);\n if (__classPrivateFieldGet(this, _a, \"f\", _TextLayerBuilder_textLayers).size === 0) {\n (_b = __classPrivateFieldGet(this, _a, \"f\", _TextLayerBuilder_selectionChangeAbortController)) === null || _b === void 0 ? void 0 : _b.abort();\n __classPrivateFieldSet(this, _a, null, \"f\", _TextLayerBuilder_selectionChangeAbortController);\n }\n}, _TextLayerBuilder_enableGlobalSelectionListener = function _TextLayerBuilder_enableGlobalSelectionListener() {\n // if (this.#selectionChangeAbortController) {\n // // document-level event listeners already installed\n // return;\n // }\n // this.#selectionChangeAbortController = new AbortController();\n // const { signal } = this.#selectionChangeAbortController;\n // const reset = (end, textLayer) => {\n // if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n // textLayer.append(end);\n // end.style.width = \"\";\n // end.style.height = \"\";\n // }\n // textLayer.classList.remove(\"selecting\");\n // };\n // let isPointerDown = false;\n // document.addEventListener(\n // \"pointerdown\",\n // () => {\n // isPointerDown = true;\n // },\n // { signal }\n // );\n // document.addEventListener(\n // \"pointerup\",\n // () => {\n // isPointerDown = false;\n // this.#textLayers.forEach(reset);\n // },\n // { signal }\n // );\n // window.addEventListener(\n // \"blur\",\n // () => {\n // isPointerDown = false;\n // this.#textLayers.forEach(reset);\n // },\n // { signal }\n // );\n // document.addEventListener(\n // \"keyup\",\n // () => {\n // if (!isPointerDown) {\n // this.#textLayers.forEach(reset);\n // }\n // },\n // { signal }\n // );\n // if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n // // eslint-disable-next-line no-var\n // var isFirefox, prevRange;\n // }\n // document.addEventListener(\n // \"selectionchange\",\n // () => {\n // const selection = document.getSelection();\n // if (selection.rangeCount === 0) {\n // this.#textLayers.forEach(reset);\n // return;\n // }\n // // Even though the spec says that .rangeCount should be 0 or 1, Firefox\n // // creates multiple ranges when selecting across multiple pages.\n // // Make sure to collect all the .textLayer elements where the selection\n // // is happening.\n // const activeTextLayers = new Set();\n // for (let i = 0; i < selection.rangeCount; i++) {\n // const range = selection.getRangeAt(i);\n // for (const textLayerDiv of this.#textLayers.keys()) {\n // if (\n // !activeTextLayers.has(textLayerDiv) &&\n // range.intersectsNode(textLayerDiv)\n // ) {\n // activeTextLayers.add(textLayerDiv);\n // }\n // }\n // }\n // for (const [textLayerDiv, endDiv] of this.#textLayers) {\n // if (activeTextLayers.has(textLayerDiv)) {\n // textLayerDiv.classList.add(\"selecting\");\n // } else {\n // reset(endDiv, textLayerDiv);\n // }\n // }\n // if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // return;\n // }\n // if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n // isFirefox ??=\n // getComputedStyle(\n // this.#textLayers.values().next().value\n // ).getPropertyValue(\"-moz-user-select\") === \"none\";\n // if (isFirefox) {\n // return;\n // }\n // }\n // // In non-Firefox browsers, when hovering over an empty space (thus,\n // // on .endOfContent), the selection will expand to cover all the\n // // text between the current selection and .endOfContent. By moving\n // // .endOfContent to right after (or before, depending on which side\n // // of the selection the user is moving), we limit the selection jump\n // // to at most cover the enteirety of the where the selection\n // // is being modified.\n // const range = selection.getRangeAt(0);\n // const modifyStart =\n // prevRange &&\n // (range.compareBoundaryPoints(Range.END_TO_END, prevRange) === 0 ||\n // range.compareBoundaryPoints(Range.START_TO_END, prevRange) === 0);\n // let anchor = modifyStart ? range.startContainer : range.endContainer;\n // if (anchor.nodeType === Node.TEXT_NODE) {\n // anchor = anchor.parentNode;\n // }\n // const parentTextLayer = anchor.parentElement.closest(\".textLayer\");\n // const endDiv = this.#textLayers.get(parentTextLayer);\n // if (endDiv) {\n // endDiv.style.width = parentTextLayer.style.width;\n // endDiv.style.height = parentTextLayer.style.height;\n // anchor.parentElement.insertBefore(\n // endDiv,\n // modifyStart ? anchor : anchor.nextSibling\n // );\n // }\n // prevRange = range.cloneRange();\n // },\n // { signal }\n // );\n};\n_TextLayerBuilder_textLayers = { value: new Map() };\n_TextLayerBuilder_selectionChangeAbortController = { value: null };\nexport { TextLayerBuilder };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _AnnotationElement_instances, _AnnotationElement_updates, _AnnotationElement_hasBorder, _AnnotationElement_popupElement, _AnnotationElement_setRectEdited, _LinkAnnotationElement_instances, _LinkAnnotationElement_setInternalLink, _LinkAnnotationElement_bindAttachment, _LinkAnnotationElement_bindSetOCGState, _PopupElement_instances, _PopupElement_boundKeyDown, _PopupElement_boundHide, _PopupElement_boundShow, _PopupElement_boundToggle, _PopupElement_color, _PopupElement_container, _PopupElement_contentsObj, _PopupElement_dateObj, _PopupElement_elements, _PopupElement_parent, _PopupElement_parentRect, _PopupElement_pinned, _PopupElement_popup, _PopupElement_position, _PopupElement_rect, _PopupElement_richText, _PopupElement_titleObj, _PopupElement_updates, _PopupElement_wasVisible, _PopupElement_html_get, _PopupElement_fontSize_get, _PopupElement_fontColor_get, _PopupElement_makePopupContent, _PopupElement_keyDown, _PopupElement_setPosition, _PopupElement_toggle, _PopupElement_show, _PopupElement_hide, _AnnotationLayer_instances, _AnnotationLayer_accessibilityManager, _AnnotationLayer_annotationCanvasMap, _AnnotationLayer_editableAnnotations, _AnnotationLayer_appendElement, _AnnotationLayer_setAnnotationCanvasMap;\nimport { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { AnnotationEditorType, DOMSVGFactory, FeatureTest, PDFDateString, setLayerDimensions, shadow, Util, XfaLayer } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { AnnotationBorderStyleType, AnnotationPrefix, AnnotationType, LINE_FACTOR } from \"./shared/utils\";\nimport { ColorConverters } from \"./shared/scripting_utils\";\n// import { AnnotationStorage } from \"pdfjs-dist/types/src/display/annotation_storage\";\n// import { AnnotationStorage } from \"pdfjs-dist/types/src/display/annotation_storage\";\n// const DEFAULT_TAB_INDEX = 1000;\n// it is unclear why the value 1000 is chosen by pdf.js\n// kendo a11y tests fail if this is not 0\nconst DEFAULT_TAB_INDEX = 0;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n // case AnnotationType.TEXT:\n // return new TextAnnotationElement(parameters);\n // case AnnotationType.WIDGET:\n // const fieldType = parameters.data.fieldType;\n // switch (fieldType) {\n // case \"Tx\":\n // return new TextWidgetAnnotationElement(parameters);\n // case \"Btn\":\n // if (parameters.data.radioButton) {\n // return new RadioButtonWidgetAnnotationElement(parameters);\n // } else if (parameters.data.checkBox) {\n // return new CheckboxWidgetAnnotationElement(parameters);\n // }\n // return new PushButtonWidgetAnnotationElement(parameters);\n // case \"Ch\":\n // return new ChoiceWidgetAnnotationElement(parameters);\n // case \"Sig\":\n // return new SignatureWidgetAnnotationElement(parameters);\n // default: break;\n // }\n // return new WidgetAnnotationElement(parameters);\n // case AnnotationType.POPUP:\n // return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n // case AnnotationType.LINE:\n // return new LineAnnotationElement(parameters);\n // case AnnotationType.SQUARE:\n // return new SquareAnnotationElement(parameters);\n // case AnnotationType.CIRCLE:\n // return new CircleAnnotationElement(parameters);\n // case AnnotationType.POLYLINE:\n // return new PolylineAnnotationElement(parameters);\n // case AnnotationType.CARET:\n // return new CaretAnnotationElement(parameters);\n // case AnnotationType.INK:\n // return new InkAnnotationElement(parameters);\n // case AnnotationType.POLYGON:\n // return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n // case AnnotationType.UNDERLINE:\n // return new UnderlineAnnotationElement(parameters);\n // case AnnotationType.SQUIGGLY:\n // return new SquigglyAnnotationElement(parameters);\n // case AnnotationType.STRIKEOUT:\n // return new StrikeOutAnnotationElement(parameters);\n // case AnnotationType.STAMP:\n // return new StampAnnotationElement(parameters);\n // case AnnotationType.FILEATTACHMENT:\n // return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n constructor(parameters, { isRenderable = false, ignoreBorder = false, createQuadrilaterals = false, } = {}) {\n _AnnotationElement_instances.add(this);\n // todo: props\n this.isRenderable = null;\n this.data = null;\n this.layer = null;\n this.linkService = null;\n this.downloadManager = null;\n this.imageResourcesPath = null;\n this.renderForms = null;\n this.svgFactory = null;\n this.annotationStorage = null;\n this.enableScripting = null;\n this.hasJSActions = null;\n this._fieldObjects = null;\n this.parent = null;\n this.container = null;\n this.popup = null;\n this.annotationEditorType = null;\n // todo: props\n _AnnotationElement_updates.set(this, null);\n _AnnotationElement_hasBorder.set(this, false);\n _AnnotationElement_popupElement.set(this, null);\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({ titleObj, contentsObj, richText }) {\n return !!((titleObj === null || titleObj === void 0 ? void 0 : titleObj.str) || (contentsObj === null || contentsObj === void 0 ? void 0 : contentsObj.str) || (richText === null || richText === void 0 ? void 0 : richText.str));\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n var _a;\n if (!this.container) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationElement_updates, __classPrivateFieldGet(this, _AnnotationElement_updates, \"f\") || {\n rect: this.data.rect.slice(0),\n }, \"f\");\n const { rect } = params;\n if (rect) {\n __classPrivateFieldGet(this, _AnnotationElement_instances, \"m\", _AnnotationElement_setRectEdited).call(this, rect);\n }\n (_a = __classPrivateFieldGet(this, _AnnotationElement_popupElement, \"f\")) === null || _a === void 0 ? void 0 : _a.popup.updateEdited(params);\n }\n resetEdited() {\n var _a;\n if (!__classPrivateFieldGet(this, _AnnotationElement_updates, \"f\")) {\n return;\n }\n __classPrivateFieldGet(this, _AnnotationElement_instances, \"m\", _AnnotationElement_setRectEdited).call(this, __classPrivateFieldGet(this, _AnnotationElement_updates, \"f\").rect);\n (_a = __classPrivateFieldGet(this, _AnnotationElement_popupElement, \"f\")) === null || _a === void 0 ? void 0 : _a.popup.resetEdited();\n __classPrivateFieldSet(this, _AnnotationElement_updates, null, \"f\");\n }\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLElement} A section element.\n */\n _createContainer(ignoreBorder) {\n const { data, parent: { page, viewport }, } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const { style } = container;\n // The accessibility manager will move the annotation in the DOM in\n // order to match the visual ordering.\n // But if an annotation is above an other one, then we must draw it\n // after the other one whatever the order is in the DOM, hence the\n // use of the z-index.\n style.zIndex = (this.parent.zIndex++).toString();\n if (data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n // container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const { rotation: rotationValue } = data;\n if (!data.hasOwnCanvas && rotationValue !== 0) {\n this.setRotation(rotationValue, container);\n }\n return container;\n }\n const { width, height } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n // warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n // warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n __classPrivateFieldSet(this, _AnnotationElement_hasBorder, true, \"f\");\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n }\n else {\n // Transparent (invisible) border, so do not draw it at all.\n style.borderWidth = (0).toString();\n }\n }\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n const { rotation } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${(100 * width) / pageWidth}%`;\n style.height = `${(100 * height) / pageHeight}%`;\n }\n else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n const { width, height } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = (100 * width) / pageWidth;\n elementHeight = (100 * height) / pageHeight;\n }\n else {\n elementWidth = (100 * height) / pageWidth;\n elementHeight = (100 * width) / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] =\n ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const { display } = event.detail;\n // See scripting/constants.js for the values of `Display`.\n // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print,\n });\n },\n hidden: event => {\n const { hidden } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle,\n });\n },\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action === null || action === void 0 ? void 0 : action(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail,\n },\n target: element,\n };\n action(eventProxy);\n // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @memberof AnnotationElement\n */\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const { quadPoints } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX &&\n rectTrY === trY &&\n rectBlX === blX &&\n rectBlY === blY) {\n // The quadpoints cover the whole annotation rectangle, so no need to\n // create a quadrilateral.\n return;\n }\n }\n const { style } = this.container;\n let svgBuffer;\n if (__classPrivateFieldGet(this, _AnnotationElement_hasBorder, \"f\")) {\n const { borderColor, borderWidth } = style;\n style.borderWidth = 0;\n svgBuffer = [\n \"url('data:image/svg+xml;utf8,\",\n ``,\n ``,\n ];\n // this.container.classList.add(\"hasBorder\");\n }\n // todo: debug\n // if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // this.container.classList.add(\"hasClipPath\");\n // }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const { svgFactory } = this;\n const svg = svgFactory.createElement(\"svg\");\n // svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer === null || svgBuffer === void 0 ? void 0 : svgBuffer.push(``);\n }\n if (__classPrivateFieldGet(this, _AnnotationElement_hasBorder, \"f\")) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @memberof AnnotationElement\n */\n _createPopup() {\n // const { container, data } = this;\n // container.setAttribute(\"aria-haspopup\", \"dialog\");\n // const popup = (this.#popupElement = new PopupAnnotationElement({\n // data: {\n // color: data.color,\n // titleObj: data.titleObj,\n // modificationDate: data.modificationDate,\n // contentsObj: data.contentsObj,\n // richText: data.richText,\n // parentRect: data.rect,\n // borderStyle: 0,\n // id: `popup_${data.id}`,\n // rotation: data.rotation,\n // },\n // parent: this.parent,\n // elements: [this],\n // }));\n // this.parent.div.append(popup.render());\n }\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n // unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n // warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { exportValue } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n show() {\n var _a;\n if (this.container) {\n this.container.hidden = false;\n }\n (_a = this.popup) === null || _a === void 0 ? void 0 : _a.maybeShow();\n }\n hide() {\n var _a;\n if (this.container) {\n this.container.hidden = true;\n }\n (_a = this.popup) === null || _a === void 0 ? void 0 : _a.forceHide();\n }\n /**\n * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n *\n * @public\n * @memberof AnnotationElement\n * @returns {Array|HTMLElement} An array of elements or an\n * element.\n */\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n // for (const element of triggers) {\n // element.classList.add(\"highlightArea\");\n // }\n }\n else {\n // triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const { annotationEditorType: mode, data: { id: editId }, } = this;\n this.container.addEventListener(\"dblclick\", () => {\n var _a, _b;\n (_b = (_a = this.linkService) === null || _a === void 0 ? void 0 : _a.eventBus) === null || _b === void 0 ? void 0 : _b.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n });\n });\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n }\n else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\n_AnnotationElement_updates = new WeakMap(), _AnnotationElement_hasBorder = new WeakMap(), _AnnotationElement_popupElement = new WeakMap(), _AnnotationElement_instances = new WeakSet(), _AnnotationElement_setRectEdited = function _AnnotationElement_setRectEdited(rect) {\n const { container: { style }, data: { rect: currentRect, rotation }, parent: { viewport: { rawDims: { pageWidth, pageHeight, pageX, pageY }, }, }, } = this;\n currentRect === null || currentRect === void 0 ? void 0 : currentRect.splice(0, 4, ...rect);\n const { width, height } = getRectDims(rect);\n style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n style.top = `${(100 * (pageHeight - rect[3] + pageY)) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${(100 * width) / pageWidth}%`;\n style.height = `${(100 * height) / pageHeight}%`;\n }\n else {\n this.setRotation(rotation);\n }\n};\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!(options === null || options === void 0 ? void 0 : options.ignoreBorder),\n createQuadrilaterals: true,\n });\n _LinkAnnotationElement_instances.add(this);\n this.isTooltipOnly = false;\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n }\n else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n }\n else if (data.attachment) {\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_bindAttachment).call(this, link, data.attachment, data.attachmentDest);\n isBound = true;\n }\n else if (data.setOCGState) {\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_bindSetOCGState).call(this, link, data.setOCGState);\n isBound = true;\n }\n else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n }\n else {\n if (data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n }\n else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n // todo: do not render the class as the rendering is yet to be determined\n // this.container.classList.add(\"linkAnnotation\");\n // this.container.classList.add(\"k-link-annotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_setInternalLink).call(this);\n }\n }\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_setInternalLink).call(this);\n }\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n var _a;\n (_a = this.linkService.eventBus) === null || _a === void 0 ? void 0 : _a.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_setInternalLink).call(this);\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_setInternalLink).call(this);\n if (!this._fieldObjects) {\n // warn(\n // `_bindResetFormAction - \"resetForm\" action not supported, ` +\n // \"ensure that the `fieldObjects` parameter is provided.\"\n // );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n var _a;\n otherClickAction === null || otherClickAction === void 0 ? void 0 : otherClickAction();\n const { fields: resetFormFields, refs: resetFormRefs, include, } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n }\n else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n }\n else if (!GetElementsByNameSet.has(domElement)) {\n // warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n // Update the values in the sandbox.\n (_a = this.linkService.eventBus) === null || _a === void 0 ? void 0 : _a.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n return false;\n };\n }\n}\n_LinkAnnotationElement_instances = new WeakSet(), _LinkAnnotationElement_setInternalLink = function _LinkAnnotationElement_setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n}, _LinkAnnotationElement_bindAttachment = function _LinkAnnotationElement_bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n var _a;\n (_a = this.downloadManager) === null || _a === void 0 ? void 0 : _a.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_setInternalLink).call(this);\n}, _LinkAnnotationElement_bindSetOCGState = function _LinkAnnotationElement_bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n __classPrivateFieldGet(this, _LinkAnnotationElement_instances, \"m\", _LinkAnnotationElement_setInternalLink).call(this);\n};\n// class TextAnnotationElement extends AnnotationElement {\n// constructor(parameters) {\n// super(parameters, { isRenderable: true });\n// }\n// render() {\n// this.container.classList.add(\"textAnnotation\");\n// const image = document.createElement(\"img\");\n// image.src =\n// this.imageResourcesPath +\n// \"annotation-\" +\n// this.data.name.toLowerCase() +\n// \".svg\";\n// image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n// image.setAttribute(\n// \"data-l10n-args\",\n// JSON.stringify({ type: this.data.name })\n// );\n// if (!this.data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// this.container.append(image);\n// return this.container;\n// }\n// }\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n return this.container;\n }\n showElementAndHideCanvas(element) {\n var _a;\n if (this.data.hasOwnCanvas) {\n if (((_a = element.previousSibling) === null || _a === void 0 ? void 0 : _a.nodeName) === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n var _a;\n (_a = this.linkService.eventBus) === null || _a === void 0 ? void 0 : _a.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n }\n else {\n // Non-mouse events\n element.addEventListener(baseName, event => {\n var _a;\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n }\n else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n (_a = this.linkService.eventBus) === null || _a === void 0 ? void 0 : _a.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n },\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n var _a, _b, _c;\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || ((_a = this.data.actions) === null || _a === void 0 ? void 0 : _a[eventName])) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData || (elementData = { focused: false });\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !((_b = this.data.actions) === null || _b === void 0 ? void 0 : _b.Blur)) {\n // Ensure that elementData will have the correct value.\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n }\n else if (eventName === \"Blur\" && !((_c = this.data.actions) === null || _c === void 0 ? void 0 : _c.Focus)) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontColor } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n const style = element.style;\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n // We don't use the font, as specified in the PDF document, for the \n // element. Hence using the original `fontSize` could look bad, which is why\n // it's instead based on the field height.\n // If the height is \"big\" then it could lead to a too big font size\n // so in this case use the one we've in the pdf (hence the min).\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n }\n else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n }\n else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\n// class TextWidgetAnnotationElement extends WidgetAnnotationElement {\n// constructor(parameters) {\n// const isRenderable =\n// parameters.renderForms ||\n// parameters.data.hasOwnCanvas ||\n// (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n// super(parameters, { isRenderable });\n// }\n// setPropertyOnSiblings(base, key, value, keyInStorage) {\n// const storage = this.annotationStorage;\n// for (const element of this._getElementsByName(\n// base.name,\n// /* skipId = */ base.id\n// )) {\n// if (element.domElement) {\n// element.domElement[key] = value;\n// }\n// storage.setValue(element.id, { [keyInStorage]: value });\n// }\n// }\n// render() {\n// const storage = this.annotationStorage;\n// const id = this.data.id;\n// this.container.classList.add(\"textWidgetAnnotation\");\n// let element = null;\n// if (this.renderForms) {\n// // NOTE: We cannot set the values using `element.value` below, since it\n// // prevents the AnnotationLayer rasterizer in `test/driver.js`\n// // from parsing the elements correctly for the reference tests.\n// const storedData = storage.getValue(id, {\n// value: this.data.fieldValue,\n// });\n// let textContent = storedData.value || \"\";\n// const maxLen = storage.getValue(id, {\n// charLimit: this.data.maxLen,\n// }).charLimit;\n// if (maxLen && textContent.length > maxLen) {\n// textContent = textContent.slice(0, maxLen);\n// }\n// let fieldFormattedValues =\n// storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n// if (fieldFormattedValues && this.data.comb) {\n// fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n// }\n// const elementData = {\n// userValue: textContent,\n// formattedValue: fieldFormattedValues,\n// lastCommittedValue: null,\n// commitKey: 1,\n// focused: false,\n// };\n// if (this.data.multiLine) {\n// element = document.createElement(\"textarea\");\n// element.textContent = fieldFormattedValues ?? textContent;\n// if (this.data.doNotScroll) {\n// element.style.overflowY = \"hidden\";\n// }\n// } else {\n// element = document.createElement(\"input\");\n// element.type = \"text\";\n// element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n// if (this.data.doNotScroll) {\n// element.style.overflowX = \"hidden\";\n// }\n// }\n// if (this.data.hasOwnCanvas) {\n// element.hidden = true;\n// }\n// GetElementsByNameSet.add(element);\n// element.setAttribute(\"data-element-id\", id);\n// element.disabled = this.data.readOnly;\n// element.name = this.data.fieldName;\n// element.tabIndex = DEFAULT_TAB_INDEX;\n// this._setRequired(element, this.data.required);\n// if (maxLen) {\n// element.maxLength = maxLen;\n// }\n// element.addEventListener(\"input\", event => {\n// storage.setValue(id, { value: event.target.value });\n// this.setPropertyOnSiblings(\n// element,\n// \"value\",\n// event.target.value,\n// \"value\"\n// );\n// elementData.formattedValue = null;\n// });\n// element.addEventListener(\"resetform\", () => {\n// const defaultValue = this.data.defaultFieldValue ?? \"\";\n// element.value = elementData.userValue = defaultValue;\n// elementData.formattedValue = null;\n// });\n// let blurListener = event => {\n// const { formattedValue } = elementData;\n// if (formattedValue !== null && formattedValue !== undefined) {\n// event.target.value = formattedValue;\n// }\n// // Reset the cursor position to the start of the field (issue 12359).\n// event.target.scrollLeft = 0;\n// };\n// if (this.enableScripting && this.hasJSActions) {\n// element.addEventListener(\"focus\", event => {\n// if (elementData.focused) {\n// return;\n// }\n// const { target } = event;\n// if (elementData.userValue) {\n// target.value = elementData.userValue;\n// }\n// elementData.lastCommittedValue = target.value;\n// elementData.commitKey = 1;\n// if (!this.data.actions?.Focus) {\n// elementData.focused = true;\n// }\n// });\n// element.addEventListener(\"updatefromsandbox\", jsEvent => {\n// this.showElementAndHideCanvas(jsEvent.target);\n// const actions = {\n// value(event) {\n// elementData.userValue = event.detail.value ?? \"\";\n// storage.setValue(id, { value: elementData.userValue.toString() });\n// event.target.value = elementData.userValue;\n// },\n// formattedValue(event) {\n// const { formattedValue } = event.detail;\n// elementData.formattedValue = formattedValue;\n// if (\n// formattedValue !== null &&\n// formattedValue !== undefined &&\n// event.target !== document.activeElement\n// ) {\n// // Input hasn't the focus so display formatted string\n// event.target.value = formattedValue;\n// }\n// storage.setValue(id, {\n// formattedValue,\n// });\n// },\n// selRange(event) {\n// event.target.setSelectionRange(...event.detail.selRange);\n// },\n// charLimit: event => {\n// const { charLimit } = event.detail;\n// const { target } = event;\n// if (charLimit === 0) {\n// target.removeAttribute(\"maxLength\");\n// return;\n// }\n// target.setAttribute(\"maxLength\", charLimit);\n// let value = elementData.userValue;\n// if (!value || value.length <= charLimit) {\n// return;\n// }\n// value = value.slice(0, charLimit);\n// target.value = elementData.userValue = value;\n// storage.setValue(id, { value });\n// this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n// source: this,\n// detail: {\n// id,\n// name: \"Keystroke\",\n// value,\n// willCommit: true,\n// commitKey: 1,\n// selStart: target.selectionStart,\n// selEnd: target.selectionEnd,\n// },\n// });\n// },\n// };\n// this._dispatchEventFromSandbox(actions, jsEvent);\n// });\n// // Even if the field hasn't any actions\n// // leaving it can still trigger some actions with Calculate\n// element.addEventListener(\"keydown\", event => {\n// elementData.commitKey = 1;\n// // If the key is one of Escape, Enter then the data are committed.\n// // If we've a Tab then data will be committed on blur.\n// let commitKey = -1;\n// if (event.key === \"Escape\") {\n// commitKey = 0;\n// } else if (event.key === \"Enter\" && !this.data.multiLine) {\n// // When we've a multiline field, \"Enter\" key is a key as the other\n// // hence we don't commit the data (Acrobat behaves the same way)\n// // (see issue #15627).\n// commitKey = 2;\n// } else if (event.key === \"Tab\") {\n// elementData.commitKey = 3;\n// }\n// if (commitKey === -1) {\n// return;\n// }\n// const { value } = event.target;\n// if (elementData.lastCommittedValue === value) {\n// return;\n// }\n// elementData.lastCommittedValue = value;\n// // Save the entered value\n// elementData.userValue = value;\n// this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n// source: this,\n// detail: {\n// id,\n// name: \"Keystroke\",\n// value,\n// willCommit: true,\n// commitKey,\n// selStart: event.target.selectionStart,\n// selEnd: event.target.selectionEnd,\n// },\n// });\n// });\n// const _blurListener = blurListener;\n// blurListener = null;\n// element.addEventListener(\"blur\", event => {\n// if (!elementData.focused || !event.relatedTarget) {\n// return;\n// }\n// if (!this.data.actions?.Blur) {\n// elementData.focused = false;\n// }\n// const { value } = event.target;\n// elementData.userValue = value;\n// if (elementData.lastCommittedValue !== value) {\n// this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n// source: this,\n// detail: {\n// id,\n// name: \"Keystroke\",\n// value,\n// willCommit: true,\n// commitKey: elementData.commitKey,\n// selStart: event.target.selectionStart,\n// selEnd: event.target.selectionEnd,\n// },\n// });\n// }\n// _blurListener(event);\n// });\n// if (this.data.actions?.Keystroke) {\n// element.addEventListener(\"beforeinput\", event => {\n// elementData.lastCommittedValue = null;\n// const { data, target } = event;\n// const { value, selectionStart, selectionEnd } = target;\n// let selStart = selectionStart,\n// selEnd = selectionEnd;\n// switch (event.inputType) {\n// // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n// case \"deleteWordBackward\": {\n// const match = value\n// .substring(0, selectionStart)\n// .match(/\\w*[^\\w]*$/);\n// if (match) {\n// selStart -= match[0].length;\n// }\n// break;\n// }\n// case \"deleteWordForward\": {\n// const match = value\n// .substring(selectionStart)\n// .match(/^[^\\w]*\\w*/);\n// if (match) {\n// selEnd += match[0].length;\n// }\n// break;\n// }\n// case \"deleteContentBackward\":\n// if (selectionStart === selectionEnd) {\n// selStart -= 1;\n// }\n// break;\n// case \"deleteContentForward\":\n// if (selectionStart === selectionEnd) {\n// selEnd += 1;\n// }\n// break;\n// default: break;\n// }\n// // We handle the event ourselves.\n// event.preventDefault();\n// this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n// source: this,\n// detail: {\n// id,\n// name: \"Keystroke\",\n// value,\n// change: data || \"\",\n// willCommit: false,\n// selStart,\n// selEnd,\n// },\n// });\n// });\n// }\n// this._setEventListeners(\n// element,\n// elementData,\n// [\n// [\"focus\", \"Focus\"],\n// [\"blur\", \"Blur\"],\n// [\"mousedown\", \"Mouse Down\"],\n// [\"mouseenter\", \"Mouse Enter\"],\n// [\"mouseleave\", \"Mouse Exit\"],\n// [\"mouseup\", \"Mouse Up\"],\n// ],\n// event => event.target.value\n// );\n// }\n// if (blurListener) {\n// element.addEventListener(\"blur\", blurListener);\n// }\n// if (this.data.comb) {\n// const fieldWidth = this.data.rect[2] - this.data.rect[0];\n// const combWidth = fieldWidth / maxLen;\n// element.classList.add(\"comb\");\n// element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n// }\n// } else {\n// element = document.createElement(\"div\");\n// element.textContent = this.data.fieldValue;\n// element.style.verticalAlign = \"middle\";\n// element.style.display = \"table-cell\";\n// if (this.data.hasOwnCanvas) {\n// element.hidden = true;\n// }\n// }\n// this._setTextStyle(element);\n// this._setBackgroundColor(element);\n// this._setDefaultPropertiesFromJS(element);\n// this.container.append(element);\n// return this.container;\n// }\n// }\n// class SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n// constructor(parameters) {\n// super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n// }\n// }\n// class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n// constructor(parameters) {\n// super(parameters, { isRenderable: parameters.renderForms });\n// }\n// render() {\n// const storage = this.annotationStorage;\n// const data = this.data;\n// const id = data.id;\n// let value = storage.getValue(id, {\n// value: data.exportValue === data.fieldValue,\n// }).value;\n// if (typeof value === \"string\") {\n// // The value has been changed through js and set in annotationStorage.\n// value = value !== \"Off\";\n// storage.setValue(id, { value });\n// }\n// this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n// const element = document.createElement(\"input\");\n// GetElementsByNameSet.add(element);\n// element.setAttribute(\"data-element-id\", id);\n// element.disabled = data.readOnly;\n// this._setRequired(element, this.data.required);\n// element.type = \"checkbox\";\n// element.name = data.fieldName;\n// if (value) {\n// element.setAttribute(\"checked\", (true).toString());\n// }\n// element.setAttribute(\"exportValue\", data.exportValue);\n// element.tabIndex = DEFAULT_TAB_INDEX;\n// element.addEventListener(\"change\", event => {\n// const { name, checked } = event.target as any;\n// for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n// const curChecked = checked && checkbox.exportValue === data.exportValue;\n// if (checkbox.domElement) {\n// checkbox.domElement.checked = curChecked;\n// }\n// storage.setValue(checkbox.id, { value: curChecked });\n// }\n// storage.setValue(id, { value: checked });\n// });\n// element.addEventListener(\"resetform\", event => {\n// const defaultValue = data.defaultFieldValue || \"Off\";\n// // @ts-expect-error(TS)\n// event.target.checked = defaultValue === data.exportValue;\n// });\n// if (this.enableScripting && this.hasJSActions) {\n// element.addEventListener(\"updatefromsandbox\", jsEvent => {\n// const actions = {\n// value(event) {\n// event.target.checked = event.detail.value !== \"Off\";\n// storage.setValue(id, { value: event.target.checked });\n// },\n// };\n// this._dispatchEventFromSandbox(actions, jsEvent);\n// });\n// this._setEventListeners(\n// element,\n// null,\n// [\n// [\"change\", \"Validate\"],\n// [\"change\", \"Action\"],\n// [\"focus\", \"Focus\"],\n// [\"blur\", \"Blur\"],\n// [\"mousedown\", \"Mouse Down\"],\n// [\"mouseenter\", \"Mouse Enter\"],\n// [\"mouseleave\", \"Mouse Exit\"],\n// [\"mouseup\", \"Mouse Up\"],\n// ],\n// event => event.target.checked\n// );\n// }\n// this._setBackgroundColor(element);\n// this._setDefaultPropertiesFromJS(element);\n// this.container.append(element);\n// return this.container;\n// }\n// }\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n if (value) {\n // It's possible that multiple radio buttons are checked.\n // So if this one is checked we just reset the other ones.\n // (see bug 1864136). Then when the other ones will be rendered they will\n // unchecked (because of their value in the storage).\n // Consequently, the first checked radio button will be the only checked\n // one.\n for (const radio of this._getElementsByName(data.fieldName, \n /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", (true).toString());\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n // @ts-expect-error(TS)\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\n// class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n// constructor(parameters) {\n// super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n// }\n// render() {\n// // The rendering and functionality of a push button widget annotation is\n// // equal to that of a link annotation, but may have more functionality, such\n// // as performing actions on form fields (resetting, submitting, et cetera).\n// const container = super.render();\n// container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n// const linkElement = container.lastChild;\n// if (this.enableScripting && this.hasJSActions && linkElement) {\n// this._setDefaultPropertiesFromJS(linkElement);\n// linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n// this._dispatchEventFromSandbox({}, jsEvent);\n// });\n// }\n// return container;\n// }\n// }\n// class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n// constructor(parameters) {\n// super(parameters, { isRenderable: parameters.renderForms });\n// }\n// render() {\n// this.container.classList.add(\"choiceWidgetAnnotation\");\n// const storage = this.annotationStorage;\n// const id = this.data.id;\n// const storedData = storage.getValue(id, {\n// value: this.data.fieldValue,\n// });\n// const selectElement = document.createElement(\"select\");\n// GetElementsByNameSet.add(selectElement);\n// selectElement.setAttribute(\"data-element-id\", id);\n// selectElement.disabled = this.data.readOnly;\n// this._setRequired(selectElement, this.data.required);\n// selectElement.name = this.data.fieldName;\n// selectElement.tabIndex = DEFAULT_TAB_INDEX;\n// let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n// if (!this.data.combo) {\n// // List boxes have a size and (optionally) multiple selection.\n// selectElement.size = this.data.options.length;\n// if (this.data.multiSelect) {\n// selectElement.multiple = true;\n// }\n// }\n// selectElement.addEventListener(\"resetform\", () => {\n// const defaultValue = this.data.defaultFieldValue;\n// for (const option of (selectElement as any).options) {\n// option.selected = option.value === defaultValue;\n// }\n// });\n// // Insert the options into the choice field.\n// for (const option of this.data.options) {\n// const optionElement = document.createElement(\"option\");\n// optionElement.textContent = option.displayValue;\n// optionElement.value = option.exportValue;\n// if (storedData.value.includes(option.exportValue)) {\n// optionElement.setAttribute(\"selected\", (true).toString());\n// addAnEmptyEntry = false;\n// }\n// selectElement.append(optionElement);\n// }\n// let removeEmptyEntry = null;\n// if (addAnEmptyEntry) {\n// const noneOptionElement = document.createElement(\"option\");\n// noneOptionElement.value = \" \";\n// noneOptionElement.setAttribute(\"hidden\", (true).toString());\n// noneOptionElement.setAttribute(\"selected\", (true).toString());\n// selectElement.prepend(noneOptionElement);\n// removeEmptyEntry = () => {\n// noneOptionElement.remove();\n// selectElement.removeEventListener(\"input\", removeEmptyEntry);\n// removeEmptyEntry = null;\n// };\n// selectElement.addEventListener(\"input\", removeEmptyEntry);\n// }\n// const getValue = isExport => {\n// const name = isExport ? \"value\" : \"textContent\";\n// const { options, multiple } = selectElement;\n// if (!multiple) {\n// return options.selectedIndex === -1\n// ? null\n// : options[options.selectedIndex][name];\n// }\n// return Array.prototype.filter\n// .call(options, option => option.selected)\n// .map(option => option[name]);\n// };\n// let selectedValues = getValue(/* isExport */ false);\n// const getItems = event => {\n// const options = event.target.options;\n// return Array.prototype.map.call(options, option => ({\n// displayValue: option.textContent,\n// exportValue: option.value,\n// }));\n// };\n// if (this.enableScripting && this.hasJSActions) {\n// selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n// const actions = {\n// value(event) {\n// removeEmptyEntry?.();\n// const value = event.detail.value;\n// const values = new Set(Array.isArray(value) ? value : [value]);\n// for (const option of (selectElement as any).options) {\n// option.selected = values.has(option.value);\n// }\n// storage.setValue(id, {\n// value: getValue(/* isExport */ true),\n// });\n// selectedValues = getValue(/* isExport */ false);\n// },\n// multipleSelection() {\n// selectElement.multiple = true;\n// },\n// remove(event) {\n// const options = selectElement.options;\n// const index = event.detail.remove;\n// options[index].selected = false;\n// selectElement.remove(index);\n// if (options.length > 0) {\n// const i = Array.prototype.findIndex.call(\n// options,\n// option => option.selected\n// );\n// if (i === -1) {\n// options[0].selected = true;\n// }\n// }\n// storage.setValue(id, {\n// value: getValue(/* isExport */ true),\n// items: getItems(event),\n// });\n// selectedValues = getValue(/* isExport */ false);\n// },\n// clear() {\n// while (selectElement.length !== 0) {\n// selectElement.remove(0);\n// }\n// storage.setValue(id, { value: null, items: [] });\n// selectedValues = getValue(/* isExport */ false);\n// },\n// insert(event) {\n// const { index, displayValue, exportValue } = event.detail.insert;\n// const selectChild = selectElement.children[index];\n// const optionElement = document.createElement(\"option\");\n// optionElement.textContent = displayValue;\n// optionElement.value = exportValue;\n// if (selectChild) {\n// selectChild.before(optionElement);\n// } else {\n// selectElement.append(optionElement);\n// }\n// storage.setValue(id, {\n// value: getValue(/* isExport */ true),\n// items: getItems(event),\n// });\n// selectedValues = getValue(/* isExport */ false);\n// },\n// items(event) {\n// const { items } = event.detail;\n// while (selectElement.length !== 0) {\n// selectElement.remove(0);\n// }\n// for (const item of items) {\n// const { displayValue, exportValue } = item;\n// const optionElement = document.createElement(\"option\");\n// optionElement.textContent = displayValue;\n// optionElement.value = exportValue;\n// selectElement.append(optionElement);\n// }\n// if (selectElement.options.length > 0) {\n// selectElement.options[0].selected = true;\n// }\n// storage.setValue(id, {\n// value: getValue(/* isExport */ true),\n// items: getItems(event),\n// });\n// selectedValues = getValue(/* isExport */ false);\n// },\n// indices(event) {\n// const indices = new Set(event.detail.indices);\n// for (const option of event.target.options) {\n// option.selected = indices.has(option.index);\n// }\n// storage.setValue(id, {\n// value: getValue(/* isExport */ true),\n// });\n// selectedValues = getValue(/* isExport */ false);\n// },\n// editable(event) {\n// event.target.disabled = !event.detail.editable;\n// },\n// };\n// this._dispatchEventFromSandbox(actions, jsEvent);\n// });\n// selectElement.addEventListener(\"input\", event => {\n// const exportValue = getValue(/* isExport */ true);\n// const change = getValue(/* isExport */ false);\n// storage.setValue(id, { value: exportValue });\n// event.preventDefault();\n// this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n// source: this,\n// detail: {\n// id,\n// name: \"Keystroke\",\n// value: selectedValues,\n// change,\n// changeEx: exportValue,\n// willCommit: false,\n// commitKey: 1,\n// keyDown: false,\n// },\n// });\n// });\n// this._setEventListeners(\n// selectElement,\n// null,\n// [\n// [\"focus\", \"Focus\"],\n// [\"blur\", \"Blur\"],\n// [\"mousedown\", \"Mouse Down\"],\n// [\"mouseenter\", \"Mouse Enter\"],\n// [\"mouseleave\", \"Mouse Exit\"],\n// [\"mouseup\", \"Mouse Up\"],\n// [\"input\", \"Action\"],\n// [\"input\", \"Validate\"],\n// ],\n// event => event.target.value\n// );\n// } else {\n// selectElement.addEventListener(\"input\", function () {\n// storage.setValue(id, { value: getValue(/* isExport */ true) });\n// });\n// }\n// if (this.data.combo) {\n// this._setTextStyle(selectElement);\n// } else {\n// // Just use the default font size...\n// // it's a bit hard to guess what is a good size.\n// }\n// this._setBackgroundColor(selectElement);\n// this._setDefaultPropertiesFromJS(selectElement);\n// this.container.append(selectElement);\n// return this.container;\n// }\n// }\nclass PopupAnnotationElement extends AnnotationElement {\n // todo: props\n constructor(parameters) {\n const { data, elements } = parameters;\n super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\n // todo: props\n this.elements = [];\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = (this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n }));\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n constructor({ container, color, elements, titleObj, modificationDate, contentsObj, richText, parent, rect, parentRect, open, }) {\n var _a;\n _PopupElement_instances.add(this);\n // todo: props\n this.trigger = null;\n // todo: props\n _PopupElement_boundKeyDown.set(this, __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_keyDown).bind(this));\n _PopupElement_boundHide.set(this, __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_hide).bind(this));\n _PopupElement_boundShow.set(this, __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_show).bind(this));\n _PopupElement_boundToggle.set(this, __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_toggle).bind(this));\n _PopupElement_color.set(this, null);\n _PopupElement_container.set(this, null);\n _PopupElement_contentsObj.set(this, null);\n _PopupElement_dateObj.set(this, null);\n _PopupElement_elements.set(this, null);\n _PopupElement_parent.set(this, null);\n _PopupElement_parentRect.set(this, null);\n _PopupElement_pinned.set(this, false);\n _PopupElement_popup.set(this, null);\n _PopupElement_position.set(this, null);\n _PopupElement_rect.set(this, null);\n _PopupElement_richText.set(this, null);\n _PopupElement_titleObj.set(this, null);\n _PopupElement_updates.set(this, null);\n _PopupElement_wasVisible.set(this, false);\n __classPrivateFieldSet(this, _PopupElement_container, container, \"f\");\n __classPrivateFieldSet(this, _PopupElement_titleObj, titleObj, \"f\");\n __classPrivateFieldSet(this, _PopupElement_contentsObj, contentsObj, \"f\");\n __classPrivateFieldSet(this, _PopupElement_richText, richText, \"f\");\n __classPrivateFieldSet(this, _PopupElement_parent, parent, \"f\");\n __classPrivateFieldSet(this, _PopupElement_color, color, \"f\");\n __classPrivateFieldSet(this, _PopupElement_rect, rect, \"f\");\n __classPrivateFieldSet(this, _PopupElement_parentRect, parentRect, \"f\");\n __classPrivateFieldSet(this, _PopupElement_elements, elements, \"f\");\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n __classPrivateFieldSet(this, _PopupElement_dateObj, PDFDateString.toDateObject(modificationDate), \"f\");\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", __classPrivateFieldGet(this, _PopupElement_boundToggle, \"f\"));\n element.addEventListener(\"mouseenter\", __classPrivateFieldGet(this, _PopupElement_boundShow, \"f\"));\n element.addEventListener(\"mouseleave\", __classPrivateFieldGet(this, _PopupElement_boundHide, \"f\"));\n element.classList.add(\"popupTriggerArea\");\n }\n // Attach the event listener to toggle the popup with the keyboard.\n for (const element of elements) {\n (_a = element.container) === null || _a === void 0 ? void 0 : _a.addEventListener(\"keydown\", __classPrivateFieldGet(this, _PopupElement_boundKeyDown, \"f\"));\n }\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").hidden = true;\n if (open) {\n __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_toggle).call(this);\n }\n // if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // Since the popup is lazily created, we need to ensure that it'll be\n // created and displayed during reference tests.\n __classPrivateFieldGet(this, _PopupElement_parent, \"f\").popupShow.push(() => __awaiter(this, void 0, void 0, function* () {\n if (__classPrivateFieldGet(this, _PopupElement_container, \"f\").hidden) {\n __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_show).call(this);\n }\n }));\n // }\n }\n render() {\n if (__classPrivateFieldGet(this, _PopupElement_popup, \"f\")) {\n return;\n }\n const popup = (__classPrivateFieldSet(this, _PopupElement_popup, document.createElement(\"div\"), \"f\"));\n popup.className = \"popup\";\n if (__classPrivateFieldGet(this, _PopupElement_color, \"f\")) {\n const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n // @ts-expect-error TS(2556):\n ...__classPrivateFieldGet(this, _PopupElement_color, \"f\")));\n if (\n // (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n else {\n // color-mix isn't supported in some browsers hence this version.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n // TODO: Use color-mix when it's supported everywhere.\n // Enlighten the color.\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(\n // @ts-expect-error TS(2556):\n ...__classPrivateFieldGet(this, _PopupElement_color, \"f\").map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({ dir: title.dir, str: title.textContent } = __classPrivateFieldGet(this, _PopupElement_titleObj, \"f\"));\n popup.append(header);\n if (__classPrivateFieldGet(this, _PopupElement_dateObj, \"f\")) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n date: __classPrivateFieldGet(this, _PopupElement_dateObj, \"f\").toLocaleDateString(),\n time: __classPrivateFieldGet(this, _PopupElement_dateObj, \"f\").toLocaleTimeString(),\n }));\n header.append(modificationDate);\n }\n const html = __classPrivateFieldGet(this, _PopupElement_instances, \"a\", _PopupElement_html_get);\n if (html) {\n // @ts-expect-error TS(2556):\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup,\n });\n // @ts-expect-error TS(2556):\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n }\n else {\n const contents = this._formatContents(__classPrivateFieldGet(this, _PopupElement_contentsObj, \"f\"));\n popup.append(contents);\n }\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").append(popup);\n }\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n updateEdited({ rect, popupContent }) {\n var _a;\n __classPrivateFieldSet(this, _PopupElement_updates, __classPrivateFieldGet(this, _PopupElement_updates, \"f\") || {\n contentsObj: __classPrivateFieldGet(this, _PopupElement_contentsObj, \"f\"),\n richText: __classPrivateFieldGet(this, _PopupElement_richText, \"f\"),\n }, \"f\");\n if (rect) {\n __classPrivateFieldSet(this, _PopupElement_position, null, \"f\");\n }\n if (popupContent) {\n __classPrivateFieldSet(this, _PopupElement_richText, __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_makePopupContent).call(this, popupContent), \"f\");\n __classPrivateFieldSet(this, _PopupElement_contentsObj, null, \"f\");\n }\n (_a = __classPrivateFieldGet(this, _PopupElement_popup, \"f\")) === null || _a === void 0 ? void 0 : _a.remove();\n __classPrivateFieldSet(this, _PopupElement_popup, null, \"f\");\n }\n resetEdited() {\n var _a;\n var _b, _c;\n if (!__classPrivateFieldGet(this, _PopupElement_updates, \"f\")) {\n return;\n }\n (_b = this, _c = this, { contentsObj: ({ set value(_a) { __classPrivateFieldSet(_b, _PopupElement_contentsObj, _a, \"f\"); } }).value, richText: ({ set value(_a) { __classPrivateFieldSet(_c, _PopupElement_richText, _a, \"f\"); } }).value } =\n __classPrivateFieldGet(this, _PopupElement_updates, \"f\"));\n __classPrivateFieldSet(this, _PopupElement_updates, null, \"f\");\n (_a = __classPrivateFieldGet(this, _PopupElement_popup, \"f\")) === null || _a === void 0 ? void 0 : _a.remove();\n __classPrivateFieldSet(this, _PopupElement_popup, null, \"f\");\n __classPrivateFieldSet(this, _PopupElement_position, null, \"f\");\n }\n forceHide() {\n __classPrivateFieldSet(this, _PopupElement_wasVisible, this.isVisible, \"f\");\n if (!__classPrivateFieldGet(this, _PopupElement_wasVisible, \"f\")) {\n return;\n }\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").hidden = true;\n }\n maybeShow() {\n if (!__classPrivateFieldGet(this, _PopupElement_wasVisible, \"f\")) {\n return;\n }\n if (!__classPrivateFieldGet(this, _PopupElement_popup, \"f\")) {\n __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_show).call(this);\n }\n __classPrivateFieldSet(this, _PopupElement_wasVisible, false, \"f\");\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").hidden = false;\n }\n get isVisible() {\n return __classPrivateFieldGet(this, _PopupElement_container, \"f\").hidden === false;\n }\n}\n_PopupElement_boundKeyDown = new WeakMap(), _PopupElement_boundHide = new WeakMap(), _PopupElement_boundShow = new WeakMap(), _PopupElement_boundToggle = new WeakMap(), _PopupElement_color = new WeakMap(), _PopupElement_container = new WeakMap(), _PopupElement_contentsObj = new WeakMap(), _PopupElement_dateObj = new WeakMap(), _PopupElement_elements = new WeakMap(), _PopupElement_parent = new WeakMap(), _PopupElement_parentRect = new WeakMap(), _PopupElement_pinned = new WeakMap(), _PopupElement_popup = new WeakMap(), _PopupElement_position = new WeakMap(), _PopupElement_rect = new WeakMap(), _PopupElement_richText = new WeakMap(), _PopupElement_titleObj = new WeakMap(), _PopupElement_updates = new WeakMap(), _PopupElement_wasVisible = new WeakMap(), _PopupElement_instances = new WeakSet(), _PopupElement_html_get = function _PopupElement_html_get() {\n const richText = __classPrivateFieldGet(this, _PopupElement_richText, \"f\");\n const contentsObj = __classPrivateFieldGet(this, _PopupElement_contentsObj, \"f\");\n if ((richText === null || richText === void 0 ? void 0 : richText.str) &&\n (!(contentsObj === null || contentsObj === void 0 ? void 0 : contentsObj.str) || contentsObj.str === richText.str)) {\n return __classPrivateFieldGet(this, _PopupElement_richText, \"f\").html || null;\n }\n return null;\n}, _PopupElement_fontSize_get = function _PopupElement_fontSize_get() {\n var _a, _b, _c;\n return ((_c = (_b = (_a = __classPrivateFieldGet(this, _PopupElement_instances, \"a\", _PopupElement_html_get)) === null || _a === void 0 ? void 0 : _a.attributes) === null || _b === void 0 ? void 0 : _b.style) === null || _c === void 0 ? void 0 : _c.fontSize) || 0;\n}, _PopupElement_fontColor_get = function _PopupElement_fontColor_get() {\n var _a, _b, _c;\n return ((_c = (_b = (_a = __classPrivateFieldGet(this, _PopupElement_instances, \"a\", _PopupElement_html_get)) === null || _a === void 0 ? void 0 : _a.attributes) === null || _b === void 0 ? void 0 : _b.style) === null || _c === void 0 ? void 0 : _c.color) || null;\n}, _PopupElement_makePopupContent = function _PopupElement_makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\",\n },\n children: [\n {\n name: \"p\",\n children: popupLines,\n },\n ],\n },\n };\n const lineAttributes = {\n style: {\n color: __classPrivateFieldGet(this, _PopupElement_instances, \"a\", _PopupElement_fontColor_get),\n fontSize: __classPrivateFieldGet(this, _PopupElement_instances, \"a\", _PopupElement_fontSize_get)\n ? `calc(${__classPrivateFieldGet(this, _PopupElement_instances, \"a\", _PopupElement_fontSize_get)}px * var(--scale-factor))`\n : \"\",\n },\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes,\n });\n }\n return popupContent;\n}, _PopupElement_keyDown = function _PopupElement_keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || (event.key === \"Escape\" && __classPrivateFieldGet(this, _PopupElement_pinned, \"f\"))) {\n __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_toggle).call(this);\n }\n}, _PopupElement_setPosition = function _PopupElement_setPosition() {\n if (__classPrivateFieldGet(this, _PopupElement_position, \"f\") !== null) {\n return;\n }\n const { page: { view }, viewport: { rawDims: { pageWidth, pageHeight, pageX, pageY }, }, } = __classPrivateFieldGet(this, _PopupElement_parent, \"f\");\n let useParentRect = !!__classPrivateFieldGet(this, _PopupElement_parentRect, \"f\");\n let rect = useParentRect ? __classPrivateFieldGet(this, _PopupElement_parentRect, \"f\") : __classPrivateFieldGet(this, _PopupElement_rect, \"f\");\n for (const element of __classPrivateFieldGet(this, _PopupElement_elements, \"f\")) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([\n rect[0],\n view[3] - rect[1] + view[1],\n rect[2],\n view[3] - rect[3] + view[1],\n ]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect\n ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n __classPrivateFieldSet(this, _PopupElement_position, [\n (100 * (popupLeft - pageX)) / pageWidth,\n (100 * (popupTop - pageY)) / pageHeight,\n ], \"f\");\n const { style } = __classPrivateFieldGet(this, _PopupElement_container, \"f\");\n style.left = `${__classPrivateFieldGet(this, _PopupElement_position, \"f\")[0]}%`;\n style.top = `${__classPrivateFieldGet(this, _PopupElement_position, \"f\")[1]}%`;\n}, _PopupElement_toggle = function _PopupElement_toggle() {\n __classPrivateFieldSet(this, _PopupElement_pinned, !__classPrivateFieldGet(this, _PopupElement_pinned, \"f\"), \"f\");\n if (__classPrivateFieldGet(this, _PopupElement_pinned, \"f\")) {\n __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_show).call(this);\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").addEventListener(\"click\", __classPrivateFieldGet(this, _PopupElement_boundToggle, \"f\"));\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").addEventListener(\"keydown\", __classPrivateFieldGet(this, _PopupElement_boundKeyDown, \"f\"));\n }\n else {\n __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_hide).call(this);\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").removeEventListener(\"click\", __classPrivateFieldGet(this, _PopupElement_boundToggle, \"f\"));\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").removeEventListener(\"keydown\", __classPrivateFieldGet(this, _PopupElement_boundKeyDown, \"f\"));\n }\n}, _PopupElement_show = function _PopupElement_show() {\n if (!__classPrivateFieldGet(this, _PopupElement_popup, \"f\")) {\n this.render();\n }\n if (!this.isVisible) {\n __classPrivateFieldGet(this, _PopupElement_instances, \"m\", _PopupElement_setPosition).call(this);\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").hidden = false;\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").style.zIndex = (parseInt(__classPrivateFieldGet(this, _PopupElement_container, \"f\").style.zIndex, 10) + 1000).toString();\n }\n else if (__classPrivateFieldGet(this, _PopupElement_pinned, \"f\")) {\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").classList.add(\"focused\");\n }\n}, _PopupElement_hide = function _PopupElement_hide() {\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").classList.remove(\"focused\");\n if (__classPrivateFieldGet(this, _PopupElement_pinned, \"f\") || !this.isVisible) {\n return;\n }\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").hidden = true;\n __classPrivateFieldGet(this, _PopupElement_container, \"f\").style.zIndex = (parseInt(__classPrivateFieldGet(this, _PopupElement_container, \"f\").style.zIndex, 10) - 1000).toString();\n};\nclass FreeTextAnnotationElement extends AnnotationElement {\n // todo: props\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n // todo: props\n this.textContent = null;\n this.textPosition = null;\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n // this.container.classList.add(\"freeTextAnnotation\");\n // this.container.classList.add(\"freeTextAnnotation\");\n this.container.classList.add(\"k-free-text-annotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n // content.classList.add(\"annotationTextContent\");\n content.classList.add(\"k-annotation-text-content\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n // if (!this.data.popupRef && this.hasPopupData) {\n // this._createPopup();\n // }\n this._editOnDoubleClick();\n return this.container;\n }\n}\n// class LineAnnotationElement extends AnnotationElement {\n// #line = null;\n// constructor(parameters) {\n// super(parameters, { isRenderable: true, ignoreBorder: true });\n// }\n// render() {\n// this.container.classList.add(\"lineAnnotation\");\n// // Create an invisible line with the same starting and ending coordinates\n// // that acts as the trigger for the popup. Only the line itself should\n// // trigger the popup, not the entire container.\n// const data = this.data;\n// const { width, height } = getRectDims(data.rect);\n// const svg = this.svgFactory.create(\n// width,\n// height,\n// /* skipDimensions = */ true\n// );\n// // PDF coordinates are calculated from a bottom left origin, so transform\n// // the line coordinates to a top left origin for the SVG element.\n// const line = (this.#line = this.svgFactory.createElement(\"svg:line\"));\n// line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n// line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n// line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n// line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n// // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n// // won't be possible to open/close the popup (note e.g. issue 11122).\n// line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n// line.setAttribute(\"stroke\", \"transparent\");\n// line.setAttribute(\"fill\", \"transparent\");\n// svg.append(line);\n// this.container.append(svg);\n// // Create the popup ourselves so that we can bind it to the line instead\n// // of to the entire container (which is the default).\n// if (!data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// return this.container;\n// }\n// getElementsToTriggerPopup() {\n// return this.#line;\n// }\n// addHighlightArea() {\n// this.container.classList.add(\"highlightArea\");\n// }\n// }\n// class SquareAnnotationElement extends AnnotationElement {\n// #square = null;\n// constructor(parameters) {\n// super(parameters, { isRenderable: true, ignoreBorder: true });\n// }\n// render() {\n// this.container.classList.add(\"squareAnnotation\");\n// // Create an invisible square with the same rectangle that acts as the\n// // trigger for the popup. Only the square itself should trigger the\n// // popup, not the entire container.\n// const data = this.data;\n// const { width, height } = getRectDims(data.rect);\n// const svg = this.svgFactory.create(\n// width,\n// height,\n// /* skipDimensions = */ true\n// );\n// // The browser draws half of the borders inside the square and half of\n// // the borders outside the square by default. This behavior cannot be\n// // changed programmatically, so correct for that here.\n// const borderWidth = data.borderStyle.width;\n// const square = (this.#square = this.svgFactory.createElement(\"svg:rect\"));\n// square.setAttribute(\"x\", borderWidth / 2);\n// square.setAttribute(\"y\", borderWidth / 2);\n// square.setAttribute(\"width\", width - borderWidth);\n// square.setAttribute(\"height\", height - borderWidth);\n// // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n// // won't be possible to open/close the popup (note e.g. issue 11122).\n// square.setAttribute(\"stroke-width\", borderWidth || 1);\n// square.setAttribute(\"stroke\", \"transparent\");\n// square.setAttribute(\"fill\", \"transparent\");\n// svg.append(square);\n// this.container.append(svg);\n// // Create the popup ourselves so that we can bind it to the square instead\n// // of to the entire container (which is the default).\n// if (!data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// return this.container;\n// }\n// getElementsToTriggerPopup() {\n// return this.#square;\n// }\n// addHighlightArea() {\n// this.container.classList.add(\"highlightArea\");\n// }\n// }\n// class CircleAnnotationElement extends AnnotationElement {\n// #circle = null;\n// constructor(parameters) {\n// super(parameters, { isRenderable: true, ignoreBorder: true });\n// }\n// render() {\n// this.container.classList.add(\"circleAnnotation\");\n// // Create an invisible circle with the same ellipse that acts as the\n// // trigger for the popup. Only the circle itself should trigger the\n// // popup, not the entire container.\n// const data = this.data;\n// const { width, height } = getRectDims(data.rect);\n// const svg = this.svgFactory.create(\n// width,\n// height,\n// /* skipDimensions = */ true\n// );\n// // The browser draws half of the borders inside the circle and half of\n// // the borders outside the circle by default. This behavior cannot be\n// // changed programmatically, so correct for that here.\n// const borderWidth = data.borderStyle.width;\n// const circle = (this.#circle =\n// this.svgFactory.createElement(\"svg:ellipse\"));\n// circle.setAttribute(\"cx\", width / 2);\n// circle.setAttribute(\"cy\", height / 2);\n// circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n// circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n// // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n// // won't be possible to open/close the popup (note e.g. issue 11122).\n// circle.setAttribute(\"stroke-width\", borderWidth || 1);\n// circle.setAttribute(\"stroke\", \"transparent\");\n// circle.setAttribute(\"fill\", \"transparent\");\n// svg.append(circle);\n// this.container.append(svg);\n// // Create the popup ourselves so that we can bind it to the circle instead\n// // of to the entire container (which is the default).\n// if (!data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// return this.container;\n// }\n// getElementsToTriggerPopup() {\n// return this.#circle;\n// }\n// addHighlightArea() {\n// this.container.classList.add(\"highlightArea\");\n// }\n// }\n// class PolylineAnnotationElement extends AnnotationElement {\n// // todo: props\n// containerClassName: any = null;\n// svgElementName: any = null;\n// // todo: props\n// #polyline = null;\n// constructor(parameters) {\n// super(parameters, { isRenderable: true, ignoreBorder: true });\n// this.containerClassName = \"polylineAnnotation\";\n// this.svgElementName = \"svg:polyline\";\n// }\n// render() {\n// this.container.classList.add(this.containerClassName);\n// // Create an invisible polyline with the same points that acts as the\n// // trigger for the popup. Only the polyline itself should trigger the\n// // popup, not the entire container.\n// const {\n// data: { rect, vertices, borderStyle, popupRef },\n// } = this;\n// if (!vertices) {\n// return this.container;\n// }\n// const { width, height } = getRectDims(rect);\n// const svg = this.svgFactory.create(\n// width,\n// height,\n// /* skipDimensions = */ true\n// );\n// // Convert the vertices array to a single points string that the SVG\n// // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n// // calculated from a bottom left origin, so transform the polyline\n// // coordinates to a top left origin for the SVG element.\n// const pointsArray = [];\n// for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n// const x = vertices[i] - rect[0];\n// const y = rect[3] - vertices[i + 1];\n// pointsArray.push(`${x},${y}`);\n// }\n// const points = pointsArray.join(\" \");\n// const polyline = (this.#polyline = this.svgFactory.createElement(\n// this.svgElementName\n// ));\n// polyline.setAttribute(\"points\", points);\n// // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n// // won't be possible to open/close the popup (note e.g. issue 11122).\n// polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n// polyline.setAttribute(\"stroke\", \"transparent\");\n// polyline.setAttribute(\"fill\", \"transparent\");\n// svg.append(polyline);\n// this.container.append(svg);\n// // Create the popup ourselves so that we can bind it to the polyline\n// // instead of to the entire container (which is the default).\n// if (!popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// return this.container;\n// }\n// getElementsToTriggerPopup() {\n// return this.#polyline;\n// }\n// addHighlightArea() {\n// this.container.classList.add(\"highlightArea\");\n// }\n// }\n// class PolygonAnnotationElement extends PolylineAnnotationElement {\n// constructor(parameters) {\n// // Polygons are specific forms of polylines, so reuse their logic.\n// super(parameters);\n// this.containerClassName = \"polygonAnnotation\";\n// this.svgElementName = \"svg:polygon\";\n// }\n// }\n// class CaretAnnotationElement extends AnnotationElement {\n// constructor(parameters) {\n// super(parameters, { isRenderable: true, ignoreBorder: true });\n// }\n// render() {\n// this.container.classList.add(\"caretAnnotation\");\n// if (!this.data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// return this.container;\n// }\n// }\n// class InkAnnotationElement extends AnnotationElement {\n// // todo: props\n// containerClassName: any = null;\n// svgElementName: any = null;\n// // todo: props\n// #polylines = [];\n// constructor(parameters) {\n// super(parameters, { isRenderable: true, ignoreBorder: true });\n// this.containerClassName = \"inkAnnotation\";\n// // Use the polyline SVG element since it allows us to use coordinates\n// // directly and to draw both straight lines and curves.\n// this.svgElementName = \"svg:polyline\";\n// this.annotationEditorType = AnnotationEditorType.INK;\n// }\n// render() {\n// this.container.classList.add(this.containerClassName);\n// // Create an invisible polyline with the same points that acts as the\n// // trigger for the popup.\n// const {\n// data: { rect, inkLists, borderStyle, popupRef },\n// } = this;\n// const { width, height } = getRectDims(rect);\n// const svg = this.svgFactory.create(\n// width,\n// height,\n// /* skipDimensions = */ true\n// );\n// for (const inkList of inkLists) {\n// // Convert the ink list to a single points string that the SVG\n// // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n// // calculated from a bottom left origin, so transform the polyline\n// // coordinates to a top left origin for the SVG element.\n// const pointsArray = [];\n// for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n// const x = inkList[i] - rect[0];\n// const y = rect[3] - inkList[i + 1];\n// pointsArray.push(`${x},${y}`);\n// }\n// const points = pointsArray.join(\" \");\n// const polyline = this.svgFactory.createElement(this.svgElementName);\n// this.#polylines.push(polyline);\n// polyline.setAttribute(\"points\", points);\n// // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n// // won't be possible to open/close the popup (note e.g. issue 11122).\n// polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n// polyline.setAttribute(\"stroke\", \"transparent\");\n// polyline.setAttribute(\"fill\", \"transparent\");\n// // Create the popup ourselves so that we can bind it to the polyline\n// // instead of to the entire container (which is the default).\n// if (!popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// svg.append(polyline);\n// }\n// this.container.append(svg);\n// return this.container;\n// }\n// getElementsToTriggerPopup() {\n// return this.#polylines;\n// }\n// addHighlightArea() {\n// this.container.classList.add(\"highlightArea\");\n// }\n// }\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n render() {\n // if (!this.data.popupRef && this.hasPopupData) {\n // this._createPopup();\n // }\n // this.container.classList.add(\"highlightAnnotation\");\n this.container.classList.add(\"k-highlight-annotation\");\n return this.container;\n }\n}\n// class UnderlineAnnotationElement extends AnnotationElement {\n// constructor(parameters) {\n// super(parameters, {\n// isRenderable: true,\n// ignoreBorder: true,\n// createQuadrilaterals: true,\n// });\n// }\n// render() {\n// if (!this.data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// this.container.classList.add(\"underlineAnnotation\");\n// return this.container;\n// }\n// }\n// class SquigglyAnnotationElement extends AnnotationElement {\n// constructor(parameters) {\n// super(parameters, {\n// isRenderable: true,\n// ignoreBorder: true,\n// createQuadrilaterals: true,\n// });\n// }\n// render() {\n// if (!this.data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// this.container.classList.add(\"squigglyAnnotation\");\n// return this.container;\n// }\n// }\n// class StrikeOutAnnotationElement extends AnnotationElement {\n// constructor(parameters) {\n// super(parameters, {\n// isRenderable: true,\n// ignoreBorder: true,\n// createQuadrilaterals: true,\n// });\n// }\n// render() {\n// if (!this.data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// this.container.classList.add(\"strikeoutAnnotation\");\n// return this.container;\n// }\n// }\n// class StampAnnotationElement extends AnnotationElement {\n// constructor(parameters) {\n// super(parameters, { isRenderable: true, ignoreBorder: true });\n// }\n// render() {\n// this.container.classList.add(\"stampAnnotation\");\n// if (!this.data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// }\n// return this.container;\n// }\n// }\n// class FileAttachmentAnnotationElement extends AnnotationElement {\n// // todo: props\n// filename: any = null;\n// content: any = null;\n// // todo: props\n// #trigger = null;\n// constructor(parameters) {\n// super(parameters, { isRenderable: true });\n// const { file } = this.data;\n// this.filename = file.filename;\n// this.content = file.content;\n// this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n// source: this,\n// ...file,\n// });\n// }\n// render() {\n// this.container.classList.add(\"fileAttachmentAnnotation\");\n// const { container, data } = this;\n// let trigger;\n// if (data.hasAppearance || data.fillAlpha === 0) {\n// trigger = document.createElement(\"div\");\n// } else {\n// // Unfortunately it seems that it's not clearly specified exactly what\n// // names are actually valid, since Table 184 contains:\n// // Conforming readers shall provide predefined icon appearances for at\n// // least the following standard names: GraphPushPin, PaperclipTag.\n// // Additional names may be supported as well. Default value: PushPin.\n// trigger = document.createElement(\"img\");\n// trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ?\n// \"paperclip\" : \"pushpin\"}.svg`;\n// if (data.fillAlpha && data.fillAlpha < 1) {\n// trigger.style = `filter: opacity(${Math.round(\n// data.fillAlpha * 100\n// )}%);`;\n// // todo: debug\n// // if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n// // this.container.classList.add(\"hasFillAlpha\");\n// // }\n// }\n// }\n// trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n// this.#trigger = trigger;\n// const { isMac } = FeatureTest.platform;\n// container.addEventListener(\"keydown\", evt => {\n// if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n// this.#download();\n// }\n// });\n// if (!data.popupRef && this.hasPopupData) {\n// this._createPopup();\n// } else {\n// trigger.classList.add(\"popupTriggerArea\");\n// }\n// container.append(trigger);\n// return container;\n// }\n// getElementsToTriggerPopup() {\n// return this.#trigger;\n// }\n// addHighlightArea() {\n// this.container.classList.add(\"highlightArea\");\n// }\n// /**\n// * Download the file attachment associated with this annotation.\n// */\n// #download() {\n// this.downloadManager?.openOrDownloadData(this.content, this.filename);\n// }\n// }\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n constructor({ div, accessibilityManager, annotationCanvasMap, annotationEditorUIManager, page, viewport }) {\n _AnnotationLayer_instances.add(this);\n this.div = null;\n this.page = null;\n this.viewport = null;\n this.zIndex = null;\n this._annotationEditorUIManager = null;\n _AnnotationLayer_accessibilityManager.set(this, null);\n _AnnotationLayer_annotationCanvasMap.set(this, null);\n _AnnotationLayer_editableAnnotations.set(this, new Map());\n this.div = div;\n __classPrivateFieldSet(this, _AnnotationLayer_accessibilityManager, accessibilityManager, \"f\");\n __classPrivateFieldSet(this, _AnnotationLayer_annotationCanvasMap, annotationCanvasMap, \"f\");\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n // if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // // For testing purposes.\n // Object.defineProperty(this, \"showPopups\", {\n // value: async () => {\n // for (const show of this.popupShow) {\n // await show();\n // }\n // },\n // });\n // this.popupShow = [];\n // }\n }\n // todo: ported from AnnotationLayerBuilder\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n // todo: ported from AnnotationLayerBuilder\n hasEditableAnnotations() {\n return __classPrivateFieldGet(this, _AnnotationLayer_editableAnnotations, \"f\").size > 0;\n }\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n // async render(params) {\n render(params) {\n var _a;\n const { annotations } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null,\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue; // Ignore empty annotations.\n }\n }\n else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n // Ignore popup annotations without a corresponding annotation.\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n }\n else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n __classPrivateFieldGet(this, _AnnotationLayer_instances, \"m\", _AnnotationLayer_appendElement).call(this, rendered, data.id);\n if (element._isEditable) {\n __classPrivateFieldGet(this, _AnnotationLayer_editableAnnotations, \"f\").set(element.data.id, element);\n (_a = this._annotationEditorUIManager) === null || _a === void 0 ? void 0 : _a.renderAnnotationElement(element);\n }\n }\n __classPrivateFieldGet(this, _AnnotationLayer_instances, \"m\", _AnnotationLayer_setAnnotationCanvasMap).call(this);\n }\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @param {AnnotationLayerParameters} viewport\n * @memberof AnnotationLayer\n */\n update({ viewport }) {\n const layer = this.div;\n this.viewport = viewport;\n // setLayerDimensions(layer, { rotation: viewport.rotation });\n setLayerDimensions(layer, viewport);\n __classPrivateFieldGet(this, _AnnotationLayer_instances, \"m\", _AnnotationLayer_setAnnotationCanvasMap).call(this);\n layer.hidden = false;\n }\n getEditableAnnotations() {\n return Array.from(__classPrivateFieldGet(this, _AnnotationLayer_editableAnnotations, \"f\").values());\n }\n getEditableAnnotation(id) {\n return __classPrivateFieldGet(this, _AnnotationLayer_editableAnnotations, \"f\").get(id);\n }\n}\n_AnnotationLayer_accessibilityManager = new WeakMap(), _AnnotationLayer_annotationCanvasMap = new WeakMap(), _AnnotationLayer_editableAnnotations = new WeakMap(), _AnnotationLayer_instances = new WeakSet(), _AnnotationLayer_appendElement = function _AnnotationLayer_appendElement(element, id) {\n var _a;\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n this.div.append(element);\n (_a = __classPrivateFieldGet(this, _AnnotationLayer_accessibilityManager, \"f\")) === null || _a === void 0 ? void 0 : _a.moveElementInDOM(this.div, element, contentElement, \n /* isRemovable = */ false);\n}, _AnnotationLayer_setAnnotationCanvasMap = function _AnnotationLayer_setAnnotationCanvasMap() {\n if (!__classPrivateFieldGet(this, _AnnotationLayer_annotationCanvasMap, \"f\")) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of __classPrivateFieldGet(this, _AnnotationLayer_annotationCanvasMap, \"f\")) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent k-annotation-content\";\n const { firstChild } = element;\n if (!firstChild) {\n element.append(canvas);\n }\n else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n }\n else if (!firstChild.classList.contains(\"annotationContent\") ||\n !firstChild.classList.contains(\"k-annotation-content \")) {\n firstChild.before(canvas);\n }\n else {\n firstChild.after(canvas);\n }\n }\n __classPrivateFieldGet(this, _AnnotationLayer_annotationCanvasMap, \"f\").clear();\n};\nexport { AnnotationLayer, FreeTextAnnotationElement\n// InkAnnotationElement,\n// StampAnnotationElement,\n };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\n// PDF specifications section 10.3\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [\n scaleAndClamp(1 - Math.min(1, c + k)),\n scaleAndClamp(1 - Math.min(1, m + k)),\n scaleAndClamp(1 - Math.min(1, y + k)),\n ];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nexport { ColorConverters };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _AnnotationLayerBuilder_instances, _AnnotationLayerBuilder_onAppend, _AnnotationLayerBuilder_eventAbortController, _AnnotationLayerBuilder_updatePresentationModeState;\nimport { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/annotation_storage\").AnnotationStorage} AnnotationStorage */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/editor/tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\nimport { convertToHtml } from \"../common/core\";\nimport { AnnotationLayer } from \"./annotation-layer\";\nimport { PresentationModeState } from \"./shared/ui_utils\";\n// import { PresentationModeState } from \"./shared/ui_utils\";\n/**\n * @typedef {Object} AnnotationLayerBuilderOptions\n * @property {PDFPageProxy} pdfPage\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {boolean} [enableScripting]\n * @property {Promise} [hasJSActionsPromise]\n * @property {Promise> | null>}\n * [fieldObjectsPromise]\n * @property {Map} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {AnnotationEditorUIManager} [annotationEditorUIManager]\n * @property {function} [onAppend]\n */\nclass AnnotationLayerBuilder {\n /**\n * @param {AnnotationLayerBuilderOptions} options\n */\n constructor({ pdfPage, eventBus, linkService = null, \n // downloadManager,\n annotationStorage = null, \n // imageResourcesPath = \"\",\n // renderForms = true,\n // enableScripting = false,\n // hasJSActionsPromise = null,\n // fieldObjectsPromise = null,\n annotationCanvasMap = null, accessibilityManager = null, annotationEditorUIManager = null, onAppend = null, }) {\n _AnnotationLayerBuilder_instances.add(this);\n // todo: props ported from pdf.js\n this.annotationLayer = null;\n this.pdfPage = null;\n this.linkService = null;\n this.annotationStorage = null;\n this._annotationCanvasMap = null;\n this._annotationEditorUIManager = null;\n this.div = null;\n this._cancelled = null;\n this._eventBus = null;\n this._accessibilityManager = null;\n // todo: props ported from pdf.js\n _AnnotationLayerBuilder_onAppend.set(this, null);\n _AnnotationLayerBuilder_eventAbortController.set(this, null);\n this.pdfPage = pdfPage;\n this.linkService = linkService;\n // this.downloadManager = downloadManager;\n // this.imageResourcesPath = imageResourcesPath;\n // this.renderForms = renderForms;\n this.annotationStorage = annotationStorage;\n // this.enableScripting = enableScripting;\n // this._hasJSActionsPromise = hasJSActionsPromise || Promise.resolve(false);\n // this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null);\n this._annotationCanvasMap = annotationCanvasMap;\n this._accessibilityManager = accessibilityManager;\n this._annotationEditorUIManager = annotationEditorUIManager;\n __classPrivateFieldSet(this, _AnnotationLayerBuilder_onAppend, onAppend, \"f\");\n this.annotationLayer = null;\n this.div = null;\n this._cancelled = false;\n this._eventBus = (linkService === null || linkService === void 0 ? void 0 : linkService.eventBus) || eventBus;\n }\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n * @returns {Promise} A promise that is resolved when rendering of the\n * annotations is complete.\n */\n render(viewport_1) {\n return __awaiter(this, arguments, void 0, function* (viewport, intent = \"display\") {\n var _a, _b, _c;\n if (this.div) {\n if (this._cancelled || !this.annotationLayer) {\n return;\n }\n // If an annotationLayer already exists, refresh its children's\n // transformation matrices.\n this.annotationLayer.update({\n viewport: viewport.clone({ dontFlip: true }),\n });\n return;\n }\n // const [annotations, hasJSActions, fieldObjects] = await Promise.all([\n const [annotations] = yield Promise.all([\n this.pdfPage.getAnnotations({ intent }),\n // this._hasJSActionsPromise,\n // this._fieldObjectsPromise,\n ]);\n if (this._cancelled) {\n return;\n }\n // Create an annotation layer div and render the annotations\n // if there is at least one annotation.\n // const div = (this.div = document.createElement(\"div\"));\n // div.className = \"annotationLayer\";\n // this.#onAppend?.(div);\n if (annotations.length === 0) {\n this.hide();\n return;\n }\n const page = this.pdfPage;\n const pageView = (_a = page._pageInfo) === null || _a === void 0 ? void 0 : _a.view;\n const pageWidthAnnotationLayer = (pageView[2] || 0) + \"px\";\n const pageHeightAnnotationLayer = (pageView[3] || 0) + \"px\";\n const div = convertToHtml(`\n
    \n
    \n `);\n this.div = div;\n (_b = __classPrivateFieldGet(this, _AnnotationLayerBuilder_onAppend, \"f\")) === null || _b === void 0 ? void 0 : _b.call(this, div);\n this.annotationLayer = new AnnotationLayer({\n div,\n // accessibilityManager: this._accessibilityManager,\n accessibilityManager: null,\n annotationCanvasMap: this._annotationCanvasMap,\n annotationEditorUIManager: this._annotationEditorUIManager,\n page: this.pdfPage,\n viewport: viewport.clone({ dontFlip: true }),\n });\n yield this.annotationLayer.render({\n annotations,\n // imageResourcesPath: this.imageResourcesPath,\n // renderForms: this.renderForms,\n linkService: this.linkService,\n // downloadManager: this.downloadManager,\n // annotationStorage: this.annotationStorage,\n // enableScripting: this.enableScripting,\n // hasJSActions,\n // fieldObjects,\n });\n // Ensure that interactive form elements in the annotationLayer are\n // disabled while PresentationMode is active (see issue 12232).\n if (this.linkService.isInPresentationMode) {\n __classPrivateFieldGet(this, _AnnotationLayerBuilder_instances, \"m\", _AnnotationLayerBuilder_updatePresentationModeState).call(this, PresentationModeState.FULLSCREEN);\n }\n if (!__classPrivateFieldGet(this, _AnnotationLayerBuilder_eventAbortController, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationLayerBuilder_eventAbortController, new AbortController(), \"f\");\n (_c = this._eventBus) === null || _c === void 0 ? void 0 : _c._on(\"presentationmodechanged\", evt => {\n __classPrivateFieldGet(this, _AnnotationLayerBuilder_instances, \"m\", _AnnotationLayerBuilder_updatePresentationModeState).call(this, evt.state);\n }, { signal: __classPrivateFieldGet(this, _AnnotationLayerBuilder_eventAbortController, \"f\").signal });\n }\n });\n }\n cancel() {\n var _a;\n this._cancelled = true;\n (_a = __classPrivateFieldGet(this, _AnnotationLayerBuilder_eventAbortController, \"f\")) === null || _a === void 0 ? void 0 : _a.abort();\n __classPrivateFieldSet(this, _AnnotationLayerBuilder_eventAbortController, null, \"f\");\n }\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n hasEditableAnnotations() {\n var _a;\n return !!((_a = this.annotationLayer) === null || _a === void 0 ? void 0 : _a.hasEditableAnnotations());\n }\n}\n_AnnotationLayerBuilder_onAppend = new WeakMap(), _AnnotationLayerBuilder_eventAbortController = new WeakMap(), _AnnotationLayerBuilder_instances = new WeakSet(), _AnnotationLayerBuilder_updatePresentationModeState = function _AnnotationLayerBuilder_updatePresentationModeState(state) {\n if (!this.div) {\n return;\n }\n let disableFormElements = false;\n switch (state) {\n case PresentationModeState.FULLSCREEN:\n disableFormElements = true;\n break;\n case PresentationModeState.NORMAL:\n break;\n default:\n return;\n }\n for (const section of this.div.childNodes) {\n if (section.hasAttribute(\"data-internal-link\")) {\n continue;\n }\n section.inert = disableFormElements;\n }\n};\nexport { AnnotationLayerBuilder };\n","/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _DrawLayer_instances, _a, _DrawLayer_parent, _DrawLayer_id, _DrawLayer_mapping, _DrawLayer_toUpdate, _DrawLayer_setBox, _DrawLayer_createSVG, _DrawLayer_createClipPath;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n// import { DOMSVGFactory } from \"./display_utils.js\";\n// import { shadow } from \"../shared/util.js\";\nimport { DOMSVGFactory, shadow } from \"pdfjs-dist/legacy/build/pdf.mjs\";\n/**\n * Manage the SVGs drawn on top of the page canvas.\n * It's important to have them directly on top of the canvas because we want to\n * be able to use mix-blend-mode for some of them.\n */\nclass DrawLayer {\n constructor({ pageIndex }) {\n _DrawLayer_instances.add(this);\n // todo: props\n this.pageIndex = 0;\n // todo: props\n _DrawLayer_parent.set(this, null);\n _DrawLayer_id.set(this, 0);\n _DrawLayer_mapping.set(this, new Map());\n _DrawLayer_toUpdate.set(this, new Map());\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!__classPrivateFieldGet(this, _DrawLayer_parent, \"f\")) {\n __classPrivateFieldSet(this, _DrawLayer_parent, parent, \"f\");\n return;\n }\n if (__classPrivateFieldGet(this, _DrawLayer_parent, \"f\") !== parent) {\n if (__classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").size > 0) {\n for (const root of __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").values()) {\n root.remove();\n parent.append(root);\n }\n }\n __classPrivateFieldSet(this, _DrawLayer_parent, parent, \"f\");\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n highlight(outlines, color, opacity, isPathUpdatable = false) {\n var _b, _c;\n const id = (__classPrivateFieldSet(this, _DrawLayer_id, (_c = __classPrivateFieldGet(this, _DrawLayer_id, \"f\"), _b = _c++, _c), \"f\"), _b);\n const root = __classPrivateFieldGet(this, _DrawLayer_instances, \"m\", _DrawLayer_createSVG).call(this, outlines.box);\n // root.classList.add(\"highlight\");\n root.classList.add(\"k-highlight\");\n if (outlines.free) {\n // root.classList.add(\"free\");\n }\n const defs = _a._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = _a._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n if (isPathUpdatable) {\n __classPrivateFieldGet(this, _DrawLayer_toUpdate, \"f\").set(id, path);\n }\n // Create the clipping path for the editor div.\n const clipPathId = __classPrivateFieldGet(this, _DrawLayer_instances, \"m\", _DrawLayer_createClipPath).call(this, defs, pathId);\n const use = _a._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").set(id, root);\n return { id, clipPathId: `url(#${clipPathId})` };\n }\n highlightOutline(outlines) {\n var _b, _c;\n // We cannot draw the outline directly in the SVG for highlights because\n // it composes with its parent with mix-blend-mode: multiply.\n // But the outline has a different mix-blend-mode, so we need to draw it in\n // its own SVG.\n const id = (__classPrivateFieldSet(this, _DrawLayer_id, (_c = __classPrivateFieldGet(this, _DrawLayer_id, \"f\"), _b = _c++, _c), \"f\"), _b);\n const root = __classPrivateFieldGet(this, _DrawLayer_instances, \"m\", _DrawLayer_createSVG).call(this, outlines.box);\n // root.classList.add(\"highlightOutline\");\n root.classList.add(\"k-highlight-outline\");\n const defs = _a._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = _a._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (outlines.free) {\n // root.classList.add(\"free\");\n const mask = _a._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = _a._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = _a._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n // use.classList.add(\"mask\");\n }\n const use1 = _a._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n // use1.classList.add(\"mainOutline\");\n // use2.classList.add(\"secondaryOutline\");\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").set(id, root);\n return id;\n }\n finalizeLine(id, line) {\n const path = __classPrivateFieldGet(this, _DrawLayer_toUpdate, \"f\").get(id);\n __classPrivateFieldGet(this, _DrawLayer_toUpdate, \"f\").delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updateLine(id, line) {\n const root = __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n removeFreeHighlight(id) {\n this.remove(id);\n __classPrivateFieldGet(this, _DrawLayer_toUpdate, \"f\").delete(id);\n }\n updatePath(id, line) {\n __classPrivateFieldGet(this, _DrawLayer_toUpdate, \"f\").get(id).setAttribute(\"d\", line.toSVGPath());\n }\n updateBox(id, box) {\n __classPrivateFieldGet(_a, _a, \"m\", _DrawLayer_setBox).call(_a, __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id), box);\n }\n show(id, visible) {\n // this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id).classList.toggle(\"k-hidden\", !visible);\n }\n rotate(id, angle) {\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id).setAttribute(\"data-main-rotation\", angle);\n }\n changeColor(id, color) {\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id).setAttribute(\"fill\", color);\n }\n changeOpacity(id, opacity) {\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id).setAttribute(\"fill-opacity\", opacity);\n }\n addClass(id, className) {\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id).classList.add(className);\n }\n removeClass(id, className) {\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id).classList.remove(className);\n }\n remove(id) {\n if (__classPrivateFieldGet(this, _DrawLayer_parent, \"f\") === null) {\n return;\n }\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").get(id).remove();\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").delete(id);\n }\n destroy() {\n __classPrivateFieldSet(this, _DrawLayer_parent, null, \"f\");\n for (const root of __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").values()) {\n root.remove();\n }\n __classPrivateFieldGet(this, _DrawLayer_mapping, \"f\").clear();\n }\n}\n_a = DrawLayer, _DrawLayer_parent = new WeakMap(), _DrawLayer_id = new WeakMap(), _DrawLayer_mapping = new WeakMap(), _DrawLayer_toUpdate = new WeakMap(), _DrawLayer_instances = new WeakSet(), _DrawLayer_setBox = function _DrawLayer_setBox(element, { x = 0, y = 0, width = 1, height = 1 } = {}) {\n const { style } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n // style.width = `${100 * width}%`;\n // style.height = `${100 * height}%`;\n // todo: reduce the dimensions, so that the annotation editor toolbar\n // does not overlap the outline\n style.width = `${100 * width - 0.2}%`;\n style.height = `${100 * height - 0.2}%`;\n}, _DrawLayer_createSVG = function _DrawLayer_createSVG(box) {\n const svg = _a._svgFactory.create(1, 1, /* skipDimensions = */ true);\n __classPrivateFieldGet(this, _DrawLayer_parent, \"f\").append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n __classPrivateFieldGet(_a, _a, \"m\", _DrawLayer_setBox).call(_a, svg, box);\n return svg;\n}, _DrawLayer_createClipPath = function _DrawLayer_createClipPath(defs, pathId) {\n const clipPath = _a._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = _a._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n // clipPathUse.classList.add(\"clip\");\n return clipPathId;\n};\nexport { DrawLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _DrawLayerBuilder_drawLayer;\nimport { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { DrawLayer } from \"./draw-layer\";\n/**\n * @typedef {Object} DrawLayerBuilderOptions\n * @property {number} pageIndex\n */\nclass DrawLayerBuilder {\n /**\n * @param {DrawLayerBuilderOptions} options\n */\n constructor(options) {\n // todo: props\n this.pageIndex = null;\n this._cancelled = null;\n // todo: props\n _DrawLayerBuilder_drawLayer.set(this, null);\n this.pageIndex = options.pageIndex;\n }\n /**\n * @param {string} intent (default value is 'display')\n */\n render() {\n return __awaiter(this, arguments, void 0, function* (intent = \"display\") {\n // if (intent !== \"display\" || this.#drawLayer || this._cancelled) {\n if (intent !== \"display\" || __classPrivateFieldGet(this, _DrawLayerBuilder_drawLayer, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _DrawLayerBuilder_drawLayer, new DrawLayer({\n pageIndex: this.pageIndex,\n }), \"f\");\n });\n }\n cancel() {\n // this._cancelled = true;\n if (!__classPrivateFieldGet(this, _DrawLayerBuilder_drawLayer, \"f\")) {\n return;\n }\n __classPrivateFieldGet(this, _DrawLayerBuilder_drawLayer, \"f\").destroy();\n __classPrivateFieldSet(this, _DrawLayerBuilder_drawLayer, null, \"f\");\n }\n setParent(parent) {\n var _a;\n (_a = __classPrivateFieldGet(this, _DrawLayerBuilder_drawLayer, \"f\")) === null || _a === void 0 ? void 0 : _a.setParent(parent);\n }\n getDrawLayer() {\n return __classPrivateFieldGet(this, _DrawLayerBuilder_drawLayer, \"f\");\n }\n}\n_DrawLayerBuilder_drawLayer = new WeakMap();\nexport { DrawLayerBuilder };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _AnnotationEditor_instances, _a, _AnnotationEditor_x, _AnnotationEditor_y, _AnnotationEditor_disabled, _AnnotationEditor_keepAspectRatio, _AnnotationEditor_focusAC, _AnnotationEditor_hasBeenClicked, _AnnotationEditor_initialPosition, _AnnotationEditor_isEditing, _AnnotationEditor_isInEditMode, _AnnotationEditor_moveInDOMTimeout, _AnnotationEditor_prevDragX, _AnnotationEditor_prevDragY, _AnnotationEditor_isDraggable, _AnnotationEditor_zIndex, _AnnotationEditor_translate, _AnnotationEditor_rotatePoint, _AnnotationEditor_selectOnPointerEvent, _AnnotationEditor_setUpDragSession, _AnnotationEditor_addFocusListeners, _AnnotationEditor_stopResizing;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n// import { AnnotationEditorType, shadow } from \"../../shared/utils\";\n// import { AnnotationEditorType } from \"../../shared/utils\";\n// import { FeatureTest } from \"../../shared/utils\";\nimport { IdManager } from \"../helpers/id-manager\";\nimport { ColorManager } from \"../helpers/color-manager\";\nimport { bindEvents } from \"../helpers/tools\";\nimport { shadow, FeatureTest } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { AnnotationEditorType } from \"../shared/utils\";\nexport class AnnotationEditor {\n constructor(parameters) {\n // if (this.constructor === AnnotationEditor) {\n // unreachable(\"Cannot initialize AnnotationEditor.\");\n // }\n _AnnotationEditor_instances.add(this);\n // todo: properties\n this.parent = null;\n this.id = null;\n this.width = null;\n this.height = null;\n this.pageIndex = 0;\n this.name = \"\";\n this.div = null;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n // _initialOptions = {};\n this._structTreeParentId = null;\n this.rotation = 0;\n this.pageRotation = 0;\n this.pageDimensions = [];\n this.pageTranslation = [];\n // x = 0;\n // y = 0;\n _AnnotationEditor_x.set(this, 0);\n _AnnotationEditor_y.set(this, 0);\n this.isAttachedToDOM = false;\n this.deleted = false;\n // todo: end\n // #accessibilityData = null;\n // #allResizerDivs = null;\n // #altText = null;\n _AnnotationEditor_disabled.set(this, false);\n _AnnotationEditor_keepAspectRatio.set(this, false);\n // #resizersDiv = null;\n // #savedDimensions = null;\n _AnnotationEditor_focusAC.set(this, null);\n // #focusedResizerName = \"\";\n _AnnotationEditor_hasBeenClicked.set(this, false);\n _AnnotationEditor_initialPosition.set(this, null);\n _AnnotationEditor_isEditing.set(this, false);\n _AnnotationEditor_isInEditMode.set(this, false);\n // #isResizerEnabledForKeyboard = false;\n _AnnotationEditor_moveInDOMTimeout.set(this, null);\n _AnnotationEditor_prevDragX.set(this, 0);\n _AnnotationEditor_prevDragY.set(this, 0);\n // #telemetryTimeouts = null;\n this._editToolbar = null;\n this._initialOptions = Object.create(null);\n this._isVisible = true;\n this._uiManager = null;\n this._focusEventsAllowed = true;\n this._l10nPromise = null;\n _AnnotationEditor_isDraggable.set(this, false);\n _AnnotationEditor_zIndex.set(this, _a._zIndex++);\n this.parent = parameters.parent;\n this.id = parameters.id || _a.idManager.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const { rotation, rawDims: { pageWidth, pageHeight, pageX, pageY } } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation =\n (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get x() {\n return __classPrivateFieldGet(this, _AnnotationEditor_x, \"f\");\n }\n set x(value) {\n __classPrivateFieldSet(this, _AnnotationEditor_x, value, \"f\");\n }\n get y() {\n return __classPrivateFieldGet(this, _AnnotationEditor_y, \"f\");\n }\n set y(value) {\n __classPrivateFieldSet(this, _AnnotationEditor_y, value, \"f\");\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager,\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager, options) {\n if (!l10n || !_uiManager || !options) {\n return;\n }\n // static initialize() {\n // AnnotationEditor._l10nPromise ||= new Map(\n // [\n // \"pdfjs-editor-alt-text-button-label\",\n // \"pdfjs-editor-alt-text-edit-button-label\",\n // \"pdfjs-editor-alt-text-decorative-tooltip\",\n // \"pdfjs-editor-new-alt-text-added-button-label\",\n // \"pdfjs-editor-new-alt-text-missing-button-label\",\n // \"pdfjs-editor-new-alt-text-to-review-button-label\",\n // \"pdfjs-editor-resizer-label-topLeft\",\n // \"pdfjs-editor-resizer-label-topMiddle\",\n // \"pdfjs-editor-resizer-label-topRight\",\n // \"pdfjs-editor-resizer-label-middleRight\",\n // \"pdfjs-editor-resizer-label-bottomRight\",\n // \"pdfjs-editor-resizer-label-bottomMiddle\",\n // \"pdfjs-editor-resizer-label-bottomLeft\",\n // \"pdfjs-editor-resizer-label-middleLeft\",\n // ].map(str => [\n // str,\n // l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`)),\n // ])\n // );\n // // The string isn't in the above list because the string has a parameter\n // // (i.e. the guessed text) and we must pass it to the l10n function to get\n // // the correct translation.\n // AnnotationEditor._l10nPromise.set(\n // \"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\",\n // l10n.get.bind(\n // l10n,\n // \"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\"\n // )\n // );\n // if (options?.strings) {\n // for (const str of options.strings) {\n // AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n // }\n // }\n // if (AnnotationEditor._borderLineWidth !== -1) {\n // return;\n // }\n // const style = getComputedStyle(document.documentElement);\n // AnnotationEditor._borderLineWidth =\n // parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n /**\n * Update the default parameters for this type of editor.\n * @param {number} _type\n * @param {*} _value\n */\n static updateDefaultParams(_type, _value) {\n if (!_type || !_value) {\n return;\n }\n }\n /**\n * Get the default properties to set in the UI for this type of editor.\n * @returns {Array}\n */\n static get defaultPropertiesToUpdate() {\n return [];\n }\n /**\n * Check if this kind of editor is able to handle the given mime type for\n * pasting.\n * @param {string} mime\n * @returns {boolean}\n */\n static isHandlingMimeForPasting(mime) {\n if (!mime) {\n return;\n }\n return false;\n }\n /**\n * Extract the data from the clipboard item and delegate the creation of the\n * editor to the parent.\n * @param {DataTransferItem} item\n * @param {AnnotationEditorLayer} parent\n */\n static paste(item, parent) {\n if (!item || !parent) {\n return;\n }\n // unreachable(\"Not implemented\");\n }\n /**\n * Get the properties to update in the UI for this editor.\n * @returns {Array}\n */\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return __classPrivateFieldGet(this, _AnnotationEditor_isDraggable, \"f\");\n }\n set _isDraggable(value) {\n var _b;\n __classPrivateFieldSet(this, _AnnotationEditor_isDraggable, value, \"f\");\n // this.div?.classList.toggle(\"draggable\", value);\n (_b = this.div) === null || _b === void 0 ? void 0 : _b.classList.toggle(\"k-draggable\", value);\n }\n /**\n * @returns {boolean} true if the editor handles the Enter key itself.\n */\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= (this.height * pageHeight) / (pageWidth * 2);\n this.y += (this.width * pageWidth) / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += (this.height * pageHeight) / (pageWidth * 2);\n this.y -= (this.width * pageWidth) / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n /**\n * This editor will be behind the others.\n */\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n /**\n * This editor will be in the foreground.\n */\n setInForeground() {\n this.div.style.zIndex = __classPrivateFieldGet(this, _AnnotationEditor_zIndex, \"f\");\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n }\n else {\n // The editor is being removed from the DOM, so we need to stop resizing.\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_stopResizing).call(this);\n }\n this.parent = parent;\n }\n /**\n * onfocus callback.\n */\n focusin(event) {\n if (!event) {\n return;\n }\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!__classPrivateFieldGet(this, _AnnotationEditor_hasBeenClicked, \"f\")) {\n this.parent.setSelected(this);\n }\n else {\n __classPrivateFieldSet(this, _AnnotationEditor_hasBeenClicked, false, \"f\");\n }\n }\n /**\n * onblur callback.\n * @param {FocusEvent} event\n */\n focusout(event) {\n var _b;\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n // In case of focusout, the relatedTarget is the element which\n // is grabbing the focus.\n // So if the related target is an element under the div for this\n // editor, then the editor isn't unactive.\n const target = event.relatedTarget;\n if (target === null || target === void 0 ? void 0 : target.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!((_b = this.parent) === null || _b === void 0 ? void 0 : _b.isMultipleSelection)) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n }\n else {\n this.commit();\n }\n }\n /**\n * Commit the data contained in this editor.\n */\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n /**\n * Set the editor position within its parent.\n * @param {number} x\n * @param {number} y\n * @param {number} tx - x-translation in screen coordinates.\n * @param {number} ty - y-translation in screen coordinates.\n */\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n /**\n * Translate the editor position within its parent.\n * @param {number} x - x-translation in screen coordinates.\n * @param {number} y - y-translation in screen coordinates.\n */\n translate(x, y) {\n // We don't change the initial position because the move here hasn't been\n // done by the user.\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_translate).call(this, this.parentDimensions, x, y);\n }\n /**\n * Translate the editor position within its page and adjust the scroll\n * in order to have the editor in the view.\n * @param {number} x - x-translation in page coordinates.\n * @param {number} y - y-translation in page coordinates.\n */\n translateInPage(x, y) {\n __classPrivateFieldSet(this, _AnnotationEditor_initialPosition, __classPrivateFieldGet(this, _AnnotationEditor_initialPosition, \"f\") || [this.x, this.y], \"f\");\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_translate).call(this, this.pageDimensions, x, y);\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n drag(tx, ty) {\n __classPrivateFieldSet(this, _AnnotationEditor_initialPosition, __classPrivateFieldGet(this, _AnnotationEditor_initialPosition, \"f\") || [this.x, this.y], \"f\");\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n // It's possible to not have a parent: for example, when the user is\n // dragging all the selected editors but this one on a page which has been\n // destroyed.\n // It's why we need to check for it. In such a situation, it isn't really\n // a problem to not find a new parent: it's something which is related to\n // what the user is seeing, hence it depends on how pages are layed out.\n // The element will be outside of its parent so change the parent.\n const { x: xValue, y: yValue } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, xValue, yValue)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n // The editor can be moved wherever the user wants, so we don't need to fix\n // the position: it'll be done when the user will release the mouse button.\n let { x, y } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n get _hasBeenMoved() {\n return (!!__classPrivateFieldGet(this, _AnnotationEditor_initialPosition, \"f\") &&\n (__classPrivateFieldGet(this, _AnnotationEditor_initialPosition, \"f\")[0] !== this.x ||\n __classPrivateFieldGet(this, _AnnotationEditor_initialPosition, \"f\")[1] !== this.y));\n }\n /**\n * Get the translation to take into account the editor border.\n * The CSS engine positions the element by taking the border into account so\n * we must apply the opposite translation to have the editor in the right\n * position.\n * @returns {Array}\n */\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const { _borderLineWidth } = _a;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n /**\n * @returns {boolean} true if position must be fixed (i.e. make the x and y\n * living in the page).\n */\n get _mustFixPosition() {\n return true;\n }\n /**\n * Fix the position of the editor in order to keep it inside its parent page.\n * @param {number} [rotation] - the rotation of the page.\n */\n fixAndSetPosition(rotation = this.rotation) {\n if (rotation === undefined) {\n return;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n let { x, y, width, height } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n default: break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const { style } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n /**\n * Convert a screen translation into a page one.\n * @param {number} x\n * @param {number} y\n */\n screenToPageTranslation(x, y) {\n return __classPrivateFieldGet(_a, _a, \"m\", _AnnotationEditor_rotatePoint).call(_a, x, y, this.parentRotation);\n }\n /**\n * Convert a page translation into a screen one.\n * @param {number} x\n * @param {number} y\n */\n pageTranslationToScreen(x, y) {\n return __classPrivateFieldGet(_a, _a, \"m\", _AnnotationEditor_rotatePoint).call(_a, x, y, 360 - this.parentRotation);\n }\n // #getRotationMatrix(rotation) {\n // switch (rotation) {\n // case 90: {\n // const [pageWidth, pageHeight] = this.pageDimensions;\n // return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n // }\n // case 180:\n // return [-1, 0, 0, -1];\n // case 270: {\n // const [pageWidth, pageHeight] = this.pageDimensions;\n // return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n // }\n // default:\n // return [1, 0, 0, 1];\n // }\n // }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const { parentScale, pageDimensions: [pageWidth, pageHeight] } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return FeatureTest.isCSSRoundSupported\n ? [Math.round(scaledWidth), Math.round(scaledHeight)]\n : [scaledWidth, scaledHeight];\n }\n /**\n * Set the dimensions of this editor.\n * @param {number} width\n * @param {number} height\n */\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${((100 * width) / parentWidth).toFixed(2)}%`;\n if (!__classPrivateFieldGet(this, _AnnotationEditor_keepAspectRatio, \"f\")) {\n this.div.style.height = `${((100 * height) / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n // const { style } = this.div;\n // const { height, width } = style;\n // const widthPercent = width.endsWith(\"%\");\n // const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n // if (widthPercent && heightPercent) {\n // return;\n // }\n // const [parentWidth, parentHeight] = this.parentDimensions;\n // if (!widthPercent) {\n // style.width = `${((100 * parseFloat(width)) / parentWidth).toFixed(2)}%`;\n // }\n // if (!this.#keepAspectRatio && !heightPercent) {\n // style.height = `${((100 * parseFloat(height)) / parentHeight).toFixed(\n // 2\n // )}%`;\n // }\n }\n /**\n * Get the translation used to position this editor when it's created.\n * @returns {Array}\n */\n getInitialTranslation() {\n return [0, 0];\n }\n // #createResizers() {\n // if (this.#resizersDiv) {\n // return;\n // }\n // this.#resizersDiv = document.createElement(\"div\");\n // this.#resizersDiv.classList.add(\"resizers\");\n // // When the resizers are used with the keyboard, they're focusable, hence\n // // we want to have them in this order (top left, top middle, top right, ...)\n // // in the DOM to have the focus order correct.\n // const classes = this._willKeepAspectRatio\n // ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"]\n // : [\n // \"topLeft\",\n // \"topMiddle\",\n // \"topRight\",\n // \"middleRight\",\n // \"bottomRight\",\n // \"bottomMiddle\",\n // \"bottomLeft\",\n // \"middleLeft\",\n // ];\n // const signal = this._uiManager._signal;\n // for (const name of classes) {\n // const div = document.createElement(\"div\");\n // this.#resizersDiv.append(div);\n // div.classList.add(\"resizer\", name);\n // div.setAttribute(\"data-resizer-name\", name);\n // div.addEventListener(\n // \"pointerdown\",\n // this.#resizerPointerdown.bind(this, name),\n // { signal }\n // );\n // div.addEventListener(\"contextmenu\", noContextMenu, { signal });\n // div.tabIndex = -1;\n // }\n // this.div.prepend(this.#resizersDiv);\n // }\n // #resizerPointerdown(name, event) {\n // event.preventDefault();\n // const { isMac } = FeatureTest.platform;\n // if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // return;\n // }\n // this.#altText?.toggle(false);\n // const savedDraggable = this._isDraggable;\n // this._isDraggable = false;\n // const ac = new AbortController();\n // const signal = this._uiManager.combinedSignal(ac);\n // this.parent.togglePointerEvents(false);\n // window.addEventListener(\n // \"pointermove\",\n // this.#resizerPointermove.bind(this, name),\n // { passive: true, capture: true, signal }\n // );\n // window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n // const savedX = this.x;\n // const savedY = this.y;\n // const savedWidth = this.width;\n // const savedHeight = this.height;\n // const savedParentCursor = this.parent.div.style.cursor;\n // const savedCursor = this.div.style.cursor;\n // this.div.style.cursor = this.parent.div.style.cursor =\n // window.getComputedStyle(event.target).cursor;\n // const pointerUpCallback = () => {\n // ac.abort();\n // this.parent.togglePointerEvents(true);\n // this.#altText?.toggle(true);\n // this._isDraggable = savedDraggable;\n // this.parent.div.style.cursor = savedParentCursor;\n // this.div.style.cursor = savedCursor;\n // this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n // };\n // window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n // // If the user switches to another window (with alt+tab), then we end the\n // // resize session.\n // window.addEventListener(\"blur\", pointerUpCallback, { signal });\n // }\n // #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n // const newX = this.x;\n // const newY = this.y;\n // const newWidth = this.width;\n // const newHeight = this.height;\n // if (\n // newX === savedX &&\n // newY === savedY &&\n // newWidth === savedWidth &&\n // newHeight === savedHeight\n // ) {\n // return;\n // }\n // this.addCommands({\n // cmd: () => {\n // this.width = newWidth;\n // this.height = newHeight;\n // this.x = newX;\n // this.y = newY;\n // const [parentWidth, parentHeight] = this.parentDimensions;\n // this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n // this.fixAndSetPosition();\n // },\n // undo: () => {\n // this.width = savedWidth;\n // this.height = savedHeight;\n // this.x = savedX;\n // this.y = savedY;\n // const [parentWidth, parentHeight] = this.parentDimensions;\n // this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n // this.fixAndSetPosition();\n // },\n // mustExec: true,\n // });\n // }\n // #resizerPointermove(name, event) {\n // const [parentWidth, parentHeight] = this.parentDimensions;\n // const savedX = this.x;\n // const savedY = this.y;\n // const savedWidth = this.width;\n // const savedHeight = this.height;\n // const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n // const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n // // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n // // Without rounding, the positions of the corners other than the top left\n // // one can be slightly wrong.\n // const round = x => Math.round(x * 10000) / 10000;\n // const rotationMatrix = this.#getRotationMatrix(this.rotation);\n // const transf = (x, y) => [\n // rotationMatrix[0] * x + rotationMatrix[2] * y,\n // rotationMatrix[1] * x + rotationMatrix[3] * y,\n // ];\n // const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n // const invTransf = (x, y) => [\n // invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n // invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n // ];\n // let getPoint;\n // let getOpposite;\n // let isDiagonal = false;\n // let isHorizontal = false;\n // switch (name) {\n // case \"topLeft\":\n // isDiagonal = true;\n // getPoint = (w, h) => [0, 0];\n // getOpposite = (w, h) => [w, h];\n // break;\n // case \"topMiddle\":\n // getPoint = (w, h) => [w / 2, 0];\n // getOpposite = (w, h) => [w / 2, h];\n // break;\n // case \"topRight\":\n // isDiagonal = true;\n // getPoint = (w, h) => [w, 0];\n // getOpposite = (w, h) => [0, h];\n // break;\n // case \"middleRight\":\n // isHorizontal = true;\n // getPoint = (w, h) => [w, h / 2];\n // getOpposite = (w, h) => [0, h / 2];\n // break;\n // case \"bottomRight\":\n // isDiagonal = true;\n // getPoint = (w, h) => [w, h];\n // getOpposite = (w, h) => [0, 0];\n // break;\n // case \"bottomMiddle\":\n // getPoint = (w, h) => [w / 2, h];\n // getOpposite = (w, h) => [w / 2, 0];\n // break;\n // case \"bottomLeft\":\n // isDiagonal = true;\n // getPoint = (w, h) => [0, h];\n // getOpposite = (w, h) => [w, 0];\n // break;\n // case \"middleLeft\":\n // isHorizontal = true;\n // getPoint = (w, h) => [0, h / 2];\n // getOpposite = (w, h) => [w, h / 2];\n // break;\n // }\n // const point = getPoint(savedWidth, savedHeight);\n // const oppositePoint = getOpposite(savedWidth, savedHeight);\n // let transfOppositePoint = transf(...oppositePoint);\n // const oppositeX = round(savedX + transfOppositePoint[0]);\n // const oppositeY = round(savedY + transfOppositePoint[1]);\n // let ratioX = 1;\n // let ratioY = 1;\n // let [deltaX, deltaY] = this.screenToPageTranslation(\n // event.movementX,\n // event.movementY\n // );\n // [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n // if (isDiagonal) {\n // const oldDiag = Math.hypot(savedWidth, savedHeight);\n // ratioX = ratioY = Math.max(\n // Math.min(\n // Math.hypot(\n // oppositePoint[0] - point[0] - deltaX,\n // oppositePoint[1] - point[1] - deltaY\n // ) / oldDiag,\n // // Avoid the editor to be larger than the page.\n // 1 / savedWidth,\n // 1 / savedHeight\n // ),\n // // Avoid the editor to be smaller than the minimum size.\n // minWidth / savedWidth,\n // minHeight / savedHeight\n // );\n // } else if (isHorizontal) {\n // ratioX =\n // Math.max(\n // minWidth,\n // Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))\n // ) / savedWidth;\n // } else {\n // ratioY =\n // Math.max(\n // minHeight,\n // Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))\n // ) / savedHeight;\n // }\n // const newWidth = round(savedWidth * ratioX);\n // const newHeight = round(savedHeight * ratioY);\n // transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n // const newX = oppositeX - transfOppositePoint[0];\n // const newY = oppositeY - transfOppositePoint[1];\n // this.width = newWidth;\n // this.height = newHeight;\n // this.x = newX;\n // this.y = newY;\n // this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n // this.fixAndSetPosition();\n // }\n // /**\n // * Called when the alt text dialog is closed.\n // */\n // altTextFinish() {\n // this.#altText?.finish();\n // }\n // /**\n // * Add a toolbar for this editor.\n // * @returns {Promise}\n // */\n // async addEditToolbar() {\n addEditToolbar() {\n var _b;\n (_b = this._uiManager) === null || _b === void 0 ? void 0 : _b.showEditorToolBar(this.div);\n // if (this._editToolbar || this.#isInEditMode) {\n // return this._editToolbar;\n // }\n // this._editToolbar = new EditorToolbar(this);\n // this.div.append(this._editToolbar.render());\n // if (this.#altText) {\n // this._editToolbar.addAltTextButton(await this.#altText.render());\n // }\n // return this._editToolbar;\n }\n removeEditToolbar() {\n this._uiManager.hideEditorToolBar();\n // if (!this._editToolbar) {\n // return;\n // }\n // this._editToolbar.remove();\n // this._editToolbar = null;\n // // We destroy the alt text but we don't null it because we want to be able\n // // to restore it in case the user undoes the deletion.\n // this.#altText?.destroy();\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n // async addAltTextButton() {\n // if (this.#altText) {\n // return;\n // }\n // AltText.initialize(AnnotationEditor._l10nPromise);\n // this.#altText = new AltText(this);\n // if (this.#accessibilityData) {\n // this.#altText.data = this.#accessibilityData;\n // this.#accessibilityData = null;\n // }\n // await this.addEditToolbar();\n // }\n // get altTextData() {\n // return this.#altText?.data;\n // }\n // /**\n // * Set the alt text data.\n // */\n // set altTextData(data) {\n // if (!this.#altText) {\n // return;\n // }\n // this.#altText.data = data;\n // }\n // get guessedAltText() {\n // return this.#altText?.guessedText;\n // }\n // async setGuessedAltText(text) {\n // await this.#altText?.setGuessedText(text);\n // }\n // serializeAltText(isForCopying) {\n // return this.#altText?.serialize(isForCopying);\n // }\n // hasAltText() {\n // return !!this.#altText && !this.#altText.isEmpty();\n // }\n // hasAltTextData() {\n // return this.#altText?.hasData() ?? false;\n // }\n /**\n * Render this editor in a div.\n * @returns {HTMLDivElement | null}\n */\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = __classPrivateFieldGet(this, _AnnotationEditor_disabled, \"f\") ? -1 : 0;\n if (!this._isVisible) {\n // this.div.classList.add(\"hidden\");\n this.div.classList.add(\"k-hidden\");\n }\n this.setInForeground();\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_addFocusListeners).call(this);\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${((100 * parentWidth) /\n parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n /**\n * Onpointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n var _b;\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Avoid to focus this editor because of a non-left click.\n event.preventDefault();\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditor_hasBeenClicked, true, \"f\");\n if (this._isDraggable) {\n (_b = this._uiManager) === null || _b === void 0 ? void 0 : _b.hideEditorToolBar();\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_setUpDragSession).call(this, event);\n return;\n }\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_selectOnPointerEvent).call(this, event);\n }\n moveInDOM() {\n // Moving the editor in the DOM can be expensive, so we wait a bit before.\n // It's important to not block the UI (for example when changing the font\n // size in a FreeText).\n if (__classPrivateFieldGet(this, _AnnotationEditor_moveInDOMTimeout, \"f\")) {\n clearTimeout(__classPrivateFieldGet(this, _AnnotationEditor_moveInDOMTimeout, \"f\"));\n }\n __classPrivateFieldSet(this, _AnnotationEditor_moveInDOMTimeout, setTimeout(() => {\n var _b;\n __classPrivateFieldSet(this, _AnnotationEditor_moveInDOMTimeout, null, \"f\");\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.moveEditorInDOM(this);\n }, 0), \"f\");\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n /*\n * Convert the current rect into a page one.\n * @param {number} tx - x-translation in screen coordinates.\n * @param {number} ty - y-translation in screen coordinates.\n * @param {number} [rotation] - the rotation of the page.\n */\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [\n x + shiftX + pageX,\n pageHeight - y - shiftY - height + pageY,\n x + shiftX + width + pageX,\n pageHeight - y - shiftY + pageY\n ];\n case 90:\n return [\n x + shiftY + pageX,\n pageHeight - y + shiftX + pageY,\n x + shiftY + height + pageX,\n pageHeight - y + shiftX + width + pageY\n ];\n case 180:\n return [\n x - shiftX - width + pageX,\n pageHeight - y + shiftY + pageY,\n x - shiftX + pageX,\n pageHeight - y + shiftY + height + pageY\n ];\n case 270:\n return [\n x - shiftY - height + pageX,\n pageHeight - y - shiftX - width + pageY,\n x - shiftY + pageX,\n pageHeight - y - shiftX + pageY\n ];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n // throw new Error(\"Invalid rotation\");\n break;\n }\n }\n // /**\n // * Executed once this editor has been rendered.\n // */\n onceAdded() { }\n // /**\n // * Check if the editor contains something.\n // * @returns {boolean}\n // */\n isEmpty() {\n return false;\n }\n /**\n * Enable edit mode.\n */\n enableEditMode() {\n __classPrivateFieldSet(this, _AnnotationEditor_isInEditMode, true, \"f\");\n }\n /**\n * Disable edit mode.\n */\n disableEditMode() {\n __classPrivateFieldSet(this, _AnnotationEditor_isInEditMode, false, \"f\");\n }\n /**\n * Check if the editor is edited.\n * @returns {boolean}\n */\n isInEditMode() {\n return __classPrivateFieldGet(this, _AnnotationEditor_isInEditMode, \"f\");\n }\n // /**\n // * If it returns true, then this editor handles the keyboard\n // * events itself.\n // * @returns {boolean}\n // */\n // shouldGetKeyboardEvents() {\n // return this.#isResizerEnabledForKeyboard;\n // }\n /**\n * Check if this editor needs to be rebuilt or not.\n * @returns {boolean}\n */\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n /**\n * Rebuild the editor in case it has been removed on undo.\n *\n * To implement in subclasses.\n */\n rebuild() {\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_addFocusListeners).call(this);\n }\n /**\n * Rotate the editor.\n * @param {number} angle\n */\n rotate(angle) {\n if (angle === undefined || angle === null) {\n return;\n }\n }\n /**\n * Serialize the editor.\n * The result of the serialization will be used to construct a\n * new annotation to add to the pdf document.\n *\n * To implement in subclasses.\n * @param {boolean} [isForCopying]\n * @param {Object | null} [context]\n * @returns {Object | null}\n */\n // @ts-expect-error (TS)\n // eslint-disable-next-line\n serialize(isForCopying = false, context = null) {\n // serialize() {\n }\n /**\n * Deserialize the editor.\n * The result of the deserialization is a new editor.\n *\n * @param {Object} data\n * @param {AnnotationEditorLayer} parent\n * @param {AnnotationEditorUIManager} uiManager\n * @returns {AnnotationEditor | null}\n */\n static deserialize(data, parent, uiManager) {\n // @ts-expect-error TS(2556):\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n });\n editor.rotation = data.rotation;\n // editor.#accessibilityData = data.accessibilityData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n /**\n * Check if an existing annotation associated with this editor has been\n * modified.\n * @returns {boolean}\n */\n get hasBeenModified() {\n return (!!this.annotationElementId && (this.deleted || this.serialize() !== null));\n }\n /**\n * Remove this editor.\n * It's used on ctrl+backspace action.\n */\n remove() {\n var _b;\n (_b = __classPrivateFieldGet(this, _AnnotationEditor_focusAC, \"f\")) === null || _b === void 0 ? void 0 : _b.abort();\n __classPrivateFieldSet(this, _AnnotationEditor_focusAC, null, \"f\");\n if (!this.isEmpty()) {\n // The editor is removed but it can be back at some point thanks to\n // undo/redo so we must commit it before.\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n }\n else {\n this._uiManager.removeEditor(this);\n }\n if (__classPrivateFieldGet(this, _AnnotationEditor_moveInDOMTimeout, \"f\")) {\n clearTimeout(__classPrivateFieldGet(this, _AnnotationEditor_moveInDOMTimeout, \"f\"));\n __classPrivateFieldSet(this, _AnnotationEditor_moveInDOMTimeout, null, \"f\");\n }\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_stopResizing).call(this);\n this.removeEditToolbar();\n // if (this.#telemetryTimeouts) {\n // for (const timeout of this.#telemetryTimeouts.values()) {\n // clearTimeout(timeout);\n // }\n // this.#telemetryTimeouts = null;\n // }\n this.parent = null;\n }\n /**\n * @returns {boolean} true if this editor can be resized.\n */\n get isResizable() {\n return false;\n }\n /**\n * Add the resizers to this editor.\n */\n makeResizable() {\n // if (this.isResizable) {\n // this.#createResizers();\n // this.#resizersDiv.classList.remove(\"hidden\");\n // this.#resizersDiv.classList.remove(\"k-hidden\");\n // bindEvents(this, this.div, [\"keydown\"]);\n // }\n }\n get toolbarPosition() {\n return null;\n }\n _stopResizingWithKeyboard() {\n // this.#stopResizing();\n // this.div.focus();\n }\n /**\n * Select this editor.\n */\n select() {\n var _b;\n // this.makeResizable();\n // this.div?.classList.add(\"selectedEditor\");\n (_b = this.div) === null || _b === void 0 ? void 0 : _b.classList.add(\"k-selected\");\n // todo: manually show annotation toolbar\n this.addEditToolbar();\n // if (!this._editToolbar) {\n // this.addEditToolbar().then(() => {\n // if (this.div?.classList.contains(\"k-selected selectedEditor\")) {\n // // The editor can have been unselected while we were waiting for the\n // // edit toolbar to be created, hence we want to be sure that this\n // // editor is still selected.\n // this._editToolbar?.show();\n // }\n // });\n // return;\n // }\n // this._editToolbar?.show();\n // this.#altText?.toggleAltTextBadge(false);\n }\n /**\n * Unselect this editor.\n */\n unselect() {\n var _b, _c;\n // this.#resizersDiv?.classList.add(\"hidden\");\n // this.div?.classList.remove(\"selectedEditor\");\n (_b = this.div) === null || _b === void 0 ? void 0 : _b.classList.remove(\"k-selected\");\n if ((_c = this.div) === null || _c === void 0 ? void 0 : _c.contains(document.activeElement)) {\n // Don't use this.div.blur() because we don't know where the focus will\n // go.\n this._uiManager.currentLayer.div.focus({\n preventScroll: true,\n });\n }\n // this._editToolbar?.hide();\n // this.#altText?.toggleAltTextBadge(true);\n }\n /**\n * Update some parameters which have been changed through the UI.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {\n if (type === undefined || !value) {\n return;\n }\n }\n /**\n * When the user disables the editing mode some editors can change some of\n * their properties.\n */\n disableEditing() { }\n /**\n * When the user enables the editing mode some editors can change some of\n * their properties.\n */\n enableEditing() { }\n /**\n * The editor is about to be edited.\n */\n enterInEditMode() { }\n /**\n * @returns {HTMLElement | null} the element requiring an alt text.\n */\n getImageForAltText() {\n return null;\n }\n /**\n * Get the div which really contains the displayed content.\n * @returns {HTMLDivElement | undefined}\n */\n get contentDiv() {\n return this.div;\n }\n /**\n * If true then the editor is currently edited.\n * @type {boolean}\n */\n get isEditing() {\n return __classPrivateFieldGet(this, _AnnotationEditor_isEditing, \"f\");\n }\n /**\n * When set to true, it means that this editor is currently edited.\n * @param {boolean} value\n */\n set isEditing(value) {\n __classPrivateFieldSet(this, _AnnotationEditor_isEditing, value, \"f\");\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n }\n else {\n this.parent.setActiveEditor(null);\n }\n }\n /**\n * Set the aspect ratio to use when resizing.\n * @param {number} width\n * @param {number} height\n */\n setAspectRatio(width, height) {\n __classPrivateFieldSet(this, _AnnotationEditor_keepAspectRatio, true, \"f\");\n const aspectRatio = width / height;\n const { style } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n /**\n * Get the data to report to the telemetry when the editor is added.\n * @returns {Object}\n */\n get telemetryInitialData() {\n return { action: \"added\" };\n }\n /**\n * The telemetry data to use when saving/printing.\n * @returns {Object|null}\n */\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry() {\n }\n // _reportTelemetry(data, mustWait = false) {\n // if (mustWait) {\n // this.#telemetryTimeouts ||= new Map();\n // const { action } = data;\n // let timeout = this.#telemetryTimeouts.get(action);\n // if (timeout) {\n // clearTimeout(timeout);\n // }\n // timeout = setTimeout(() => {\n // this._reportTelemetry(data);\n // this.#telemetryTimeouts.delete(action);\n // if (this.#telemetryTimeouts.size === 0) {\n // this.#telemetryTimeouts = null;\n // }\n // }, AnnotationEditor._telemetryTimeout);\n // this.#telemetryTimeouts.set(action, timeout);\n // return;\n // }\n // data.type ||= this.editorType;\n // this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n // source: this,\n // details: {\n // type: \"editing\",\n // data,\n // },\n // });\n // }\n /**\n * Show or hide this editor.\n * @param {boolean|undefined} visible\n */\n show(visible = this._isVisible) {\n // this.div.classList.toggle(\"hidden\", !visible);\n this.div.classList.toggle(\"k-hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n __classPrivateFieldSet(this, _AnnotationEditor_disabled, false, \"f\");\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n __classPrivateFieldSet(this, _AnnotationEditor_disabled, true, \"f\");\n }\n /**\n * Render an annotation in the annotation layer.\n * @param {Object} annotation\n * @returns {HTMLElement}\n */\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\") ||\n annotation.container.querySelector(\".k-annotation-content \");\n if (!content) {\n content = document.createElement(\"div\");\n // content.classList.add(\"annotationContent\", this.editorType);\n content.classList.add(\"k-annotation-content \", this.editorType);\n annotation.container.prepend(content);\n }\n else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n // content.classList.add(\"annotationContent\", this.editorType);\n content.classList.add(\"k-annotation-content \", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const { firstChild } = annotation.container;\n if (firstChild.nodeName === \"DIV\" &&\n (firstChild.classList.contains(\"annotationContent\") ||\n firstChild.classList.contains(\"k-annotation-content \"))) {\n firstChild.remove();\n }\n }\n}\n_a = AnnotationEditor, _AnnotationEditor_x = new WeakMap(), _AnnotationEditor_y = new WeakMap(), _AnnotationEditor_disabled = new WeakMap(), _AnnotationEditor_keepAspectRatio = new WeakMap(), _AnnotationEditor_focusAC = new WeakMap(), _AnnotationEditor_hasBeenClicked = new WeakMap(), _AnnotationEditor_initialPosition = new WeakMap(), _AnnotationEditor_isEditing = new WeakMap(), _AnnotationEditor_isInEditMode = new WeakMap(), _AnnotationEditor_moveInDOMTimeout = new WeakMap(), _AnnotationEditor_prevDragX = new WeakMap(), _AnnotationEditor_prevDragY = new WeakMap(), _AnnotationEditor_isDraggable = new WeakMap(), _AnnotationEditor_zIndex = new WeakMap(), _AnnotationEditor_instances = new WeakSet(), _AnnotationEditor_translate = function _AnnotationEditor_translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n}, _AnnotationEditor_rotatePoint = function _AnnotationEditor_rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n}, _AnnotationEditor_selectOnPointerEvent = function _AnnotationEditor_selectOnPointerEvent(event) {\n const { isMac } = FeatureTest.platform;\n const highlightEditor = event.target.closest(\".k-highlight-editor\");\n const freeTextEditor = event.target.closest(\".k-free-text-editor\");\n const annotationEditorMode = this._uiManager.getMode();\n // todo: manually prevent selecting a highlight annotation in freetext mode\n if ((annotationEditorMode === AnnotationEditorType.HIGHLIGHT && !highlightEditor) ||\n (annotationEditorMode === AnnotationEditorType.FREETEXT && !freeTextEditor)) {\n return;\n }\n if ((event.ctrlKey && !isMac) ||\n event.shiftKey ||\n (event.metaKey && isMac)) {\n this.parent.toggleSelected(this);\n }\n else {\n this.parent.setSelected(this);\n }\n}, _AnnotationEditor_setUpDragSession = function _AnnotationEditor_setUpDragSession(event) {\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n if (isSelected) {\n // this.div.classList.add(\"moving\");\n __classPrivateFieldSet(this, _AnnotationEditor_prevDragX, event.clientX, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditor_prevDragY, event.clientY, \"f\");\n const pointerMoveCallback = e => {\n const { clientX: x, clientY: y } = e;\n const [tx, ty] = this.screenToPageTranslation(x - __classPrivateFieldGet(this, _AnnotationEditor_prevDragX, \"f\"), y - __classPrivateFieldGet(this, _AnnotationEditor_prevDragY, \"f\"));\n __classPrivateFieldSet(this, _AnnotationEditor_prevDragX, x, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditor_prevDragY, y, \"f\");\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, {\n passive: true,\n capture: true,\n signal,\n });\n }\n const pointerUpCallback = () => {\n ac.abort();\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n }\n __classPrivateFieldSet(this, _AnnotationEditor_hasBeenClicked, false, \"f\");\n if (!this._uiManager.endDragSession()) {\n __classPrivateFieldGet(this, _AnnotationEditor_instances, \"m\", _AnnotationEditor_selectOnPointerEvent).call(this, event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n // If the user is using alt+tab during the dragging session, the pointerup\n // event could be not fired, but a blur event is fired so we can use it in\n // order to interrupt the dragging session.\n window.addEventListener(\"blur\", pointerUpCallback, { signal });\n}, _AnnotationEditor_addFocusListeners = function _AnnotationEditor_addFocusListeners() {\n if (__classPrivateFieldGet(this, _AnnotationEditor_focusAC, \"f\") || !this.div) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditor_focusAC, new AbortController(), \"f\");\n const signal = this._uiManager.combinedSignal(__classPrivateFieldGet(this, _AnnotationEditor_focusAC, \"f\"));\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), { signal });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), { signal });\n}, _AnnotationEditor_stopResizing = function _AnnotationEditor_stopResizing() {\n // this.#isResizerEnabledForKeyboard = false;\n // this.#setResizerTabIndex(-1);\n // if (this.#savedDimensions) {\n // const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\n // this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n // this.#savedDimensions = null;\n // }\n};\nAnnotationEditor.idManager = new IdManager(\"annotation_editor_id_\");\nAnnotationEditor._borderLineWidth = -1;\nAnnotationEditor._colorManager = new ColorManager();\nAnnotationEditor._zIndex = 1;\n// Time to wait (in ms) before sending the telemetry data.\n// We wait a bit to avoid sending too many requests when changing something\n// like the thickness of a line.\nAnnotationEditor._telemetryTimeout = 1000;\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n };\n }\n}\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _FreeTextEditor_instances, _a, _FreeTextEditor_color, _FreeTextEditor_content, _FreeTextEditor_editorDivId, _FreeTextEditor_editModeAC, _FreeTextEditor_fontSize, _FreeTextEditor_initialData, _FreeTextEditor_updateFontSize, _FreeTextEditor_updateColor, _FreeTextEditor_extractText, _FreeTextEditor_setEditorDimensions, _FreeTextEditor_getNodeContent, _FreeTextEditor_setContent, _FreeTextEditor_serializeContent, _FreeTextEditor_deserializeContent, _FreeTextEditor_hasElementChanged;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\nimport { AnnotationEditorParamsType, AnnotationEditorType, Util, } from \"pdfjs-dist/legacy/build/pdf.mjs\";\n// import {\n// AnnotationEditorUIManager,\n// bindEvents,\n// KeyboardManager,\n// } from \"./tools.js\";\nimport { AnnotationEditor } from \"./annotation-editor\";\nimport { bindEvents } from \"../helpers/tools\";\nimport { FreeTextAnnotationElement } from \"../annotation-layer\";\n// import { FreeTextAnnotationElement } from \"../annotation-layer\";\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n constructor(params) {\n super(Object.assign(Object.assign({}, params), { name: \"k-free-text-editor freeTextEditor\" }));\n _FreeTextEditor_instances.add(this);\n // todo: props\n this.editorDiv = null;\n this.overlayDiv = null;\n // todo: props\n _FreeTextEditor_color.set(this, void 0);\n _FreeTextEditor_content.set(this, \"\");\n _FreeTextEditor_editorDivId.set(this, `${this.id}-editor`);\n _FreeTextEditor_editModeAC.set(this, null);\n _FreeTextEditor_fontSize.set(this, void 0);\n _FreeTextEditor_initialData.set(this, null);\n __classPrivateFieldSet(this, _FreeTextEditor_color, params.color ||\n _a._defaultColor ||\n AnnotationEditor._defaultLineColor, \"f\");\n __classPrivateFieldSet(this, _FreeTextEditor_fontSize, params.fontSize || _a._defaultFontSize, \"f\");\n }\n /** @inheritdoc */\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager, {\n strings: [\"pdfjs-free-text-default-content\"],\n });\n const style = getComputedStyle(document.documentElement);\n // if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // const lineHeight = parseFloat(\n // style.getPropertyValue(\"--freetext-line-height\")\n // );\n // assert(\n // lineHeight === LINE_FACTOR,\n // \"Update the CSS variable to agree with the constant.\"\n // );\n // }\n // todo: read the variable\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\")) || 2;\n }\n /** @inheritdoc */\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n _a._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n _a._defaultColor = value;\n break;\n default: break;\n }\n }\n /** @inheritdoc */\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_updateFontSize).call(this, value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_updateColor).call(this, value);\n break;\n default: break;\n }\n }\n /** @inheritdoc */\n static get defaultPropertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.FREETEXT_SIZE,\n _a._defaultFontSize,\n ],\n [\n AnnotationEditorParamsType.FREETEXT_COLOR,\n _a._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n ];\n }\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.FREETEXT_SIZE, __classPrivateFieldGet(this, _FreeTextEditor_fontSize, \"f\")],\n [AnnotationEditorParamsType.FREETEXT_COLOR, __classPrivateFieldGet(this, _FreeTextEditor_color, \"f\")],\n ];\n }\n /**\n * Helper to translate the editor with the keyboard when it's empty.\n * @param {number} x in page units.\n * @param {number} y in page units.\n */\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n }\n getInitialTranslation() {\n // The start of the base line is where the user clicked.\n const scale = this.parentScale;\n return [\n -_a._internalPadding * scale,\n -(_a._internalPadding + __classPrivateFieldGet(this, _FreeTextEditor_fontSize, \"f\")) * scale,\n ];\n }\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n // if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // assert(\n // !this.#editModeAC,\n // \"No `this.#editModeAC` AbortController should exist.\"\n // );\n // }\n __classPrivateFieldSet(this, _FreeTextEditor_editModeAC, new AbortController(), \"f\");\n const signal = this._uiManager.combinedSignal(__classPrivateFieldGet(this, _FreeTextEditor_editModeAC, \"f\"));\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), { signal });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal,\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal,\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal,\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal,\n });\n }\n disableEditMode() {\n var _b;\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n // this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", __classPrivateFieldGet(this, _FreeTextEditor_editorDivId, \"f\"));\n this._isDraggable = true;\n (_b = __classPrivateFieldGet(this, _FreeTextEditor_editModeAC, \"f\")) === null || _b === void 0 ? void 0 : _b.abort();\n __classPrivateFieldSet(this, _FreeTextEditor_editModeAC, null, \"f\");\n // On Chrome, the focus is given to when contentEditable is set to\n // false, hence we focus the div.\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n // In case the blur callback hasn't been called.\n this.isEditing = false;\n // this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n var _b;\n if (!this._focusEventsAllowed) {\n return;\n }\n if (((_b = this._uiManager) === null || _b === void 0 ? void 0 : _b.getMode()) !== AnnotationEditorType.FREETEXT) {\n // prevent focusing the freetext editor while in highlight mode\n // in pdf.js this situation does free highlight annotation isntead\n // which is not currently implemented\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n /** @inheritdoc */\n onceAdded() {\n var _b;\n if (this.width) {\n // The editor was created in using ctrl+c.\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if ((_b = this._initialOptions) === null || _b === void 0 ? void 0 : _b.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n /** @inheritdoc */\n isEmpty() {\n var _b, _c;\n return !this.editorDiv || ((_c = (_b = this.editorDiv) === null || _b === void 0 ? void 0 : _b.innerText) === null || _c === void 0 ? void 0 : _c.trim()) === \"\";\n }\n /** @inheritdoc */\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n // this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n /**\n * Commit the content we have in this editor.\n * @returns {undefined}\n */\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = __classPrivateFieldGet(this, _FreeTextEditor_content, \"f\");\n const newText = (__classPrivateFieldSet(this, _FreeTextEditor_content, __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_extractText).call(this).trimEnd(), \"f\"));\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n __classPrivateFieldSet(this, _FreeTextEditor_content, text, \"f\");\n if (!text) {\n this.remove();\n return;\n }\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_setContent).call(this);\n this._uiManager.rebuild(this);\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_setEditorDimensions).call(this);\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false,\n });\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_setEditorDimensions).call(this);\n }\n /** @inheritdoc */\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n /** @inheritdoc */\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n /**\n * ondblclick callback.\n * @param {MouseEvent} event\n */\n dblclick(event) {\n if (!event) {\n return;\n }\n this.enterInEditMode();\n }\n /**\n * onkeydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n // Avoid to add an unwanted new line.\n event.preventDefault();\n }\n }\n editorDivKeydown() {\n // FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus() {\n this.isEditing = true;\n }\n editorDivBlur() {\n this.isEditing = false;\n }\n editorDivInput() {\n // this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n /** @inheritdoc */\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n /** @inheritdoc */\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n /** @inheritdoc */\n render() {\n var _b;\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"k-internal internal\";\n // todo: move to CSS\n // this.editorDiv.style.position = \"absolute\";\n // this.div.style.position = \"absolute\";\n this.editorDiv.setAttribute(\"id\", __classPrivateFieldGet(this, _FreeTextEditor_editorDivId, \"f\"));\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n this.enableEditing();\n // AnnotationEditor._l10nPromise\n // .get(\"pdfjs-free-text-default-content\")\n // .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n // todo: fix localization\n (_b = this.editorDiv) === null || _b === void 0 ? void 0 : _b.setAttribute(\"default-content\", this._uiManager.pdfViewer.options.messages.freeTextEditorPlaceholder);\n this.editorDiv.contentEditable = true;\n const { style } = this.editorDiv;\n style.fontSize = `calc(${__classPrivateFieldGet(this, _FreeTextEditor_fontSize, \"f\")}px * var(--scale-factor))`;\n style.color = __classPrivateFieldGet(this, _FreeTextEditor_color, \"f\");\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n // this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n // This stuff is hard to test: if something is changed here, please\n // test with the following PDF file:\n // - freetexts.pdf\n // - rotated_freetexts.pdf\n // Only small variations between the original annotation and its editor\n // are allowed.\n // position is the position of the first glyph in the annotation\n // and it's relative to its container.\n const { position } = __classPrivateFieldGet(this, _FreeTextEditor_initialData, \"f\");\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX =\n baseX +\n (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY =\n baseY +\n (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n default: break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n }\n else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_setContent).call(this);\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n }\n else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n // if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n // }\n return this.div;\n }\n editorDivPaste(event) {\n // @ts-expect-error TS(2551):\n const clipboardData = event.clipboardData || window.clipboardData;\n const { types } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = __classPrivateFieldGet(_a, _a, \"m\", _FreeTextEditor_deserializeContent).call(_a, clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n // Collect the text before and after the caret.\n const { startContainer, startOffset } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(\n // @ts-expect-error TS(2556):\n startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(__classPrivateFieldGet(_a, _a, \"m\", _FreeTextEditor_getNodeContent).call(_a, child));\n }\n }\n bufferBefore.push(startContainer.nodeValue\n .slice(0, startOffset)\n // @ts-expect-error TS(2556):\n .replaceAll(EOL_PATTERN, \"\"));\n }\n else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(__classPrivateFieldGet(_a, _a, \"m\", _FreeTextEditor_getNodeContent).call(_a, child));\n }\n }\n __classPrivateFieldSet(this, _FreeTextEditor_content, `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`, \"f\");\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_setContent).call(this);\n // Set the caret at the right position.\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const { firstChild } of this.editorDiv.childNodes) {\n // Each child is either a div with a text node or a br element.\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n /** @inheritdoc */\n get contentDiv() {\n return this.editorDiv;\n }\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const { data: { defaultAppearanceData: { fontSize, fontColor }, rect, rotation, id, }, textContent, textPosition, parent: { page: { pageNumber }, }, } = data;\n // textContent is supposed to be an array of strings containing each line\n // of text. However, it can be null or empty.\n if (!textContent || textContent.length === 0) {\n // Empty annotation.\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n };\n }\n const editor = super.deserialize(data, parent, uiManager);\n __classPrivateFieldSet(editor, _FreeTextEditor_fontSize, data.fontSize, \"f\");\n // @ts-expect-error TS(2556):\n __classPrivateFieldSet(editor, _FreeTextEditor_color, Util.makeHexColor(...data.color), \"f\");\n __classPrivateFieldSet(editor, _FreeTextEditor_content, __classPrivateFieldGet(_a, _a, \"m\", _FreeTextEditor_deserializeContent).call(_a, data.value), \"f\");\n editor.annotationElementId = data.id || null;\n __classPrivateFieldSet(editor, _FreeTextEditor_initialData, initialData, \"f\");\n return editor;\n }\n /** @inheritdoc */\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true,\n };\n }\n const padding = _a._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM\n ? getComputedStyle(this.editorDiv).color\n : __classPrivateFieldGet(this, _FreeTextEditor_color, \"f\"));\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: __classPrivateFieldGet(this, _FreeTextEditor_fontSize, \"f\"),\n value: __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_serializeContent).call(this),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n };\n if (isForCopying) {\n // Don't add the id when copying because the pasted editor mustn't be\n // linked to an existing annotation.\n return serialized;\n }\n if (this.annotationElementId && !__classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_hasElementChanged).call(this, serialized)) {\n return null;\n }\n // @ts-expect-error TS(2556):\n serialized.id = this.annotationElementId;\n return serialized;\n }\n /** @inheritdoc */\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const { style } = content;\n style.fontSize = `calc(${__classPrivateFieldGet(this, _FreeTextEditor_fontSize, \"f\")}px * var(--scale-factor))`;\n style.color = __classPrivateFieldGet(this, _FreeTextEditor_color, \"f\");\n content.replaceChildren();\n for (const line of __classPrivateFieldGet(this, _FreeTextEditor_content, \"f\").split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = _a._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: __classPrivateFieldGet(this, _FreeTextEditor_content, \"f\"),\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n // todo: this is necessary\n // saveDocument() has checks that test \"editor instanceof AnnotationEditor\", but they fail\n // because AnnotationEditor from \"pdfjs-dist/legacy/build/pdf.mjs\" is not exported\n // thus replace instances of editors with their serialized version\n toJSON() {\n const data = this.serialize();\n return data;\n }\n}\n_a = FreeTextEditor, _FreeTextEditor_color = new WeakMap(), _FreeTextEditor_content = new WeakMap(), _FreeTextEditor_editorDivId = new WeakMap(), _FreeTextEditor_editModeAC = new WeakMap(), _FreeTextEditor_fontSize = new WeakMap(), _FreeTextEditor_initialData = new WeakMap(), _FreeTextEditor_instances = new WeakSet(), _FreeTextEditor_updateFontSize = function _FreeTextEditor_updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - __classPrivateFieldGet(this, _FreeTextEditor_fontSize, \"f\")) * this.parentScale);\n __classPrivateFieldSet(this, _FreeTextEditor_fontSize, size, \"f\");\n __classPrivateFieldGet(this, _FreeTextEditor_instances, \"m\", _FreeTextEditor_setEditorDimensions).call(this);\n };\n const savedFontsize = __classPrivateFieldGet(this, _FreeTextEditor_fontSize, \"f\");\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n}, _FreeTextEditor_updateColor = function _FreeTextEditor_updateColor(color) {\n const setColor = col => {\n __classPrivateFieldSet(this, _FreeTextEditor_color, this.editorDiv.style.color = col, \"f\");\n };\n const savedColor = __classPrivateFieldGet(this, _FreeTextEditor_color, \"f\");\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n}, _FreeTextEditor_extractText = function _FreeTextEditor_extractText() {\n // We don't use innerText because there are some bugs with line breaks.\n const buffer = [];\n this.editorDiv.normalize();\n for (const child of this.editorDiv.childNodes) {\n buffer.push(__classPrivateFieldGet(_a, _a, \"m\", _FreeTextEditor_getNodeContent).call(_a, child));\n }\n return buffer.join(\"\\n\");\n}, _FreeTextEditor_setEditorDimensions = function _FreeTextEditor_setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n }\n else {\n // This editor isn't on screen but we need to get its dimensions, so\n // we just insert it in the DOM, get its bounding box and then remove it.\n const { currentLayer, div } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\") || div.classList.contains(\"k-hidden\");\n div.classList.remove(\"hidden\");\n div.classList.remove(\"k-hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n // div.classList.toggle(\"hidden\", savedVisibility);\n div.classList.toggle(\"k-hidden\", savedVisibility);\n }\n // The dimensions are relative to the rotation of the page, hence we need to\n // take that into account (see issue #16636).\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n }\n else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n}, _FreeTextEditor_getNodeContent = function _FreeTextEditor_getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n}, _FreeTextEditor_setContent = function _FreeTextEditor_setContent() {\n this.editorDiv.replaceChildren();\n if (!__classPrivateFieldGet(this, _FreeTextEditor_content, \"f\")) {\n return;\n }\n for (const line of __classPrivateFieldGet(this, _FreeTextEditor_content, \"f\").split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n}, _FreeTextEditor_serializeContent = function _FreeTextEditor_serializeContent() {\n // @ts-expect-error TS(2556):\n return __classPrivateFieldGet(this, _FreeTextEditor_content, \"f\").replaceAll(\"\\xa0\", \" \");\n}, _FreeTextEditor_deserializeContent = function _FreeTextEditor_deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n}, _FreeTextEditor_hasElementChanged = function _FreeTextEditor_hasElementChanged(serialized) {\n const { value, fontSize, color, pageIndex } = __classPrivateFieldGet(this, _FreeTextEditor_initialData, \"f\");\n return (this._hasBeenMoved ||\n serialized.value !== value ||\n serialized.fontSize !== fontSize ||\n serialized.color.some((c, i) => c !== color[i]) ||\n serialized.pageIndex !== pageIndex);\n};\nFreeTextEditor._freeTextDefaultContent = \"\";\nFreeTextEditor._internalPadding = 0;\n// static _defaultColor = null;\nFreeTextEditor._defaultColor = \"#000000\";\nFreeTextEditor._defaultFontSize = 10;\n// static get _keyboardManager() {\n// const proto = FreeTextEditor.prototype;\n// const arrowChecker = self => self.isEmpty();\n// const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n// const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n// return shadow(\n// this,\n// \"_keyboardManager\",\n// new KeyboardManager([\n// [\n// // Commit the text in case the user use ctrl+s to save the document.\n// // The event must bubble in order to be caught by the viewer.\n// // See bug 1831574.\n// [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n// proto.commitOrRemove,\n// { bubbles: true },\n// ],\n// [\n// [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n// proto.commitOrRemove,\n// ],\n// [\n// [\"ArrowLeft\", \"mac+ArrowLeft\"],\n// proto._translateEmpty,\n// { args: [-small, 0], checker: arrowChecker },\n// ],\n// [\n// [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n// proto._translateEmpty,\n// { args: [-big, 0], checker: arrowChecker },\n// ],\n// [\n// [\"ArrowRight\", \"mac+ArrowRight\"],\n// proto._translateEmpty,\n// { args: [small, 0], checker: arrowChecker },\n// ],\n// [\n// [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n// proto._translateEmpty,\n// { args: [big, 0], checker: arrowChecker },\n// ],\n// [\n// [\"ArrowUp\", \"mac+ArrowUp\"],\n// proto._translateEmpty,\n// { args: [0, -small], checker: arrowChecker },\n// ],\n// [\n// [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n// proto._translateEmpty,\n// { args: [0, -big], checker: arrowChecker },\n// ],\n// [\n// [\"ArrowDown\", \"mac+ArrowDown\"],\n// proto._translateEmpty,\n// { args: [0, small], checker: arrowChecker },\n// ],\n// [\n// [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n// proto._translateEmpty,\n// { args: [0, big], checker: arrowChecker },\n// ],\n// ])\n// );\n// }\nFreeTextEditor._type = \"freetext\";\nFreeTextEditor._editorType = AnnotationEditorType.FREETEXT;\nexport { FreeTextEditor };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// import {\n// BaseCanvasFactory,\n// BaseCMapReaderFactory,\n// BaseFilterFactory,\n// BaseStandardFontDataFactory,\n// BaseSVGFactory,\n// } from \"./base_factory.js\";\n// import {\n// BaseException,\n// FeatureTest,\n// shadow,\n// stringToBytes,\n// Util,\n// warn,\n// } from \"../shared/util.js\";\n// const SVG_NS = \"http://www.w3.org/2000/svg\";\n// class PixelsPerInch {\n// static CSS = 96.0;\n// static PDF = 72.0;\n// static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n// }\n// /**\n// * FilterFactory aims to create some SVG filters we can use when drawing an\n// * image (or whatever) on a canvas.\n// * Filters aren't applied with ctx.putImageData because it just overwrites the\n// * underlying pixels.\n// * With these filters, it's possible for example to apply some transfer maps on\n// * an image without the need to apply them on the pixel arrays: the renderer\n// * does the magic for us.\n// */\n// class DOMFilterFactory extends BaseFilterFactory {\n// #baseUrl;\n// #_cache;\n// #_defs;\n// #docId;\n// #document;\n// #_hcmCache;\n// #id = 0;\n// constructor({ docId, ownerDocument = globalThis.document } = {}) {\n// super();\n// this.#docId = docId;\n// this.#document = ownerDocument;\n// }\n// get #cache() {\n// return (this.#_cache ||= new Map());\n// }\n// get #hcmCache() {\n// return (this.#_hcmCache ||= new Map());\n// }\n// get #defs() {\n// if (!this.#_defs) {\n// const div = this.#document.createElement(\"div\");\n// const { style } = div;\n// style.visibility = \"hidden\";\n// style.contain = \"strict\";\n// style.width = style.height = 0;\n// style.position = \"absolute\";\n// style.top = style.left = 0;\n// style.zIndex = -1;\n// const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n// svg.setAttribute(\"width\", 0);\n// svg.setAttribute(\"height\", 0);\n// this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n// div.append(svg);\n// svg.append(this.#_defs);\n// this.#document.body.append(div);\n// }\n// return this.#_defs;\n// }\n// #createTables(maps) {\n// if (maps.length === 1) {\n// const mapR = maps[0];\n// const buffer = new Array(256);\n// for (let i = 0; i < 256; i++) {\n// buffer[i] = mapR[i] / 255;\n// }\n// const table = buffer.join(\",\");\n// return [table, table, table];\n// }\n// const [mapR, mapG, mapB] = maps;\n// const bufferR = new Array(256);\n// const bufferG = new Array(256);\n// const bufferB = new Array(256);\n// for (let i = 0; i < 256; i++) {\n// bufferR[i] = mapR[i] / 255;\n// bufferG[i] = mapG[i] / 255;\n// bufferB[i] = mapB[i] / 255;\n// }\n// return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n// }\n// #createUrl(id) {\n// if (this.#baseUrl === undefined) {\n// // Unless a ``-element is present a relative URL should work.\n// this.#baseUrl = \"\";\n// const url = this.#document.URL;\n// if (url !== this.#document.baseURI) {\n// if (isDataScheme(url)) {\n// warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n// } else {\n// this.#baseUrl = url.split(\"#\", 1)[0];\n// }\n// }\n// }\n// return `url(${this.#baseUrl}#${id})`;\n// }\n// addFilter(maps) {\n// if (!maps) {\n// return \"none\";\n// }\n// // When a page is zoomed the page is re-drawn but the maps are likely\n// // the same.\n// let value = this.#cache.get(maps);\n// if (value) {\n// return value;\n// }\n// const [tableR, tableG, tableB] = this.#createTables(maps);\n// const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n// value = this.#cache.get(key);\n// if (value) {\n// this.#cache.set(maps, value);\n// return value;\n// }\n// // We create a SVG filter: feComponentTransferElement\n// // https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n// const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n// const url = this.#createUrl(id);\n// this.#cache.set(maps, url);\n// this.#cache.set(key, url);\n// const filter = this.#createFilter(id);\n// this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n// return url;\n// }\n// addHCMFilter(fgColor, bgColor) {\n// const key = `${fgColor}-${bgColor}`;\n// const filterName = \"base\";\n// let info = this.#hcmCache.get(filterName);\n// if (info?.key === key) {\n// return info.url;\n// }\n// if (info) {\n// info.filter?.remove();\n// info.key = key;\n// info.url = \"none\";\n// info.filter = null;\n// } else {\n// info = {\n// key,\n// url: \"none\",\n// filter: null,\n// };\n// this.#hcmCache.set(filterName, info);\n// }\n// if (!fgColor || !bgColor) {\n// return info.url;\n// }\n// const fgRGB = this.#getRGB(fgColor);\n// fgColor = Util.makeHexColor(...fgRGB);\n// const bgRGB = this.#getRGB(bgColor);\n// bgColor = Util.makeHexColor(...bgRGB);\n// this.#defs.style.color = \"\";\n// if (\n// (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n// fgColor === bgColor\n// ) {\n// return info.url;\n// }\n// // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n// //\n// // Relative luminance:\n// // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n// //\n// // We compute the rounded luminance of the default background color.\n// // Then for every color in the pdf, if its rounded luminance is the\n// // same as the background one then it's replaced by the new\n// // background color else by the foreground one.\n// const map = new Array(256);\n// for (let i = 0; i <= 255; i++) {\n// const x = i / 255;\n// map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n// }\n// const table = map.join(\",\");\n// const id = `g_${this.#docId}_hcm_filter`;\n// const filter = (info.filter = this.#createFilter(id));\n// this.#addTransferMapConversion(table, table, table, filter);\n// this.#addGrayConversion(filter);\n// const getSteps = (c, n) => {\n// const start = fgRGB[c] / 255;\n// const end = bgRGB[c] / 255;\n// const arr = new Array(n + 1);\n// for (let i = 0; i <= n; i++) {\n// arr[i] = start + (i / n) * (end - start);\n// }\n// return arr.join(\",\");\n// };\n// this.#addTransferMapConversion(\n// getSteps(0, 5),\n// getSteps(1, 5),\n// getSteps(2, 5),\n// filter\n// );\n// info.url = this.#createUrl(id);\n// return info.url;\n// }\n// addAlphaFilter(map) {\n// // When a page is zoomed the page is re-drawn but the maps are likely\n// // the same.\n// let value = this.#cache.get(map);\n// if (value) {\n// return value;\n// }\n// const [tableA] = this.#createTables([map]);\n// const key = `alpha_${tableA}`;\n// value = this.#cache.get(key);\n// if (value) {\n// this.#cache.set(map, value);\n// return value;\n// }\n// const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n// const url = this.#createUrl(id);\n// this.#cache.set(map, url);\n// this.#cache.set(key, url);\n// const filter = this.#createFilter(id);\n// this.#addTransferMapAlphaConversion(tableA, filter);\n// return url;\n// }\n// addLuminosityFilter(map) {\n// // When a page is zoomed the page is re-drawn but the maps are likely\n// // the same.\n// let value = this.#cache.get(map || \"luminosity\");\n// if (value) {\n// return value;\n// }\n// let tableA, key;\n// if (map) {\n// [tableA] = this.#createTables([map]);\n// key = `luminosity_${tableA}`;\n// } else {\n// key = \"luminosity\";\n// }\n// value = this.#cache.get(key);\n// if (value) {\n// this.#cache.set(map, value);\n// return value;\n// }\n// const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n// const url = this.#createUrl(id);\n// this.#cache.set(map, url);\n// this.#cache.set(key, url);\n// const filter = this.#createFilter(id);\n// this.#addLuminosityConversion(filter);\n// if (map) {\n// this.#addTransferMapAlphaConversion(tableA, filter);\n// }\n// return url;\n// }\n// addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n// const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n// let info = this.#hcmCache.get(filterName);\n// if (info?.key === key) {\n// return info.url;\n// }\n// if (info) {\n// info.filter?.remove();\n// info.key = key;\n// info.url = \"none\";\n// info.filter = null;\n// } else {\n// info = {\n// key,\n// url: \"none\",\n// filter: null,\n// };\n// this.#hcmCache.set(filterName, info);\n// }\n// if (!fgColor || !bgColor) {\n// return info.url;\n// }\n// const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n// let fgGray = Math.round(\n// 0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n// );\n// let bgGray = Math.round(\n// 0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n// );\n// let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n// this.#getRGB.bind(this)\n// );\n// if (bgGray < fgGray) {\n// [fgGray, bgGray, newFgRGB, newBgRGB] = [\n// bgGray,\n// fgGray,\n// newBgRGB,\n// newFgRGB,\n// ];\n// }\n// this.#defs.style.color = \"\";\n// // Now we can create the filters to highlight some canvas parts.\n// // The colors in the pdf will almost be Canvas and CanvasText, hence we\n// // want to filter them to finally get Highlight and HighlightText.\n// // Since we're in HCM the background color and the foreground color should\n// // be really different when converted to grayscale (if they're not then it\n// // means that we've a poor contrast). Once the canvas colors are converted\n// // to grayscale we can easily map them on their new colors.\n// // The grayscale step is important because if we've something like:\n// // fgColor = #FF....\n// // bgColor = #FF....\n// // then we are enable to map the red component on the new red components\n// // which can be different.\n// const getSteps = (fg, bg, n) => {\n// const arr = new Array(256);\n// const step = (bgGray - fgGray) / n;\n// const newStart = fg / 255;\n// const newStep = (bg - fg) / (255 * n);\n// let prev = 0;\n// for (let i = 0; i <= n; i++) {\n// const k = Math.round(fgGray + i * step);\n// const value = newStart + i * newStep;\n// for (let j = prev; j <= k; j++) {\n// arr[j] = value;\n// }\n// prev = k + 1;\n// }\n// for (let i = prev; i < 256; i++) {\n// arr[i] = arr[prev - 1];\n// }\n// return arr.join(\",\");\n// };\n// const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n// const filter = (info.filter = this.#createFilter(id));\n// this.#addGrayConversion(filter);\n// this.#addTransferMapConversion(\n// getSteps(newFgRGB[0], newBgRGB[0], 5),\n// getSteps(newFgRGB[1], newBgRGB[1], 5),\n// getSteps(newFgRGB[2], newBgRGB[2], 5),\n// filter\n// );\n// info.url = this.#createUrl(id);\n// return info.url;\n// }\n// destroy(keepHCM = false) {\n// if (keepHCM && this.#hcmCache.size !== 0) {\n// return;\n// }\n// if (this.#_defs) {\n// this.#_defs.parentNode.parentNode.remove();\n// this.#_defs = null;\n// }\n// if (this.#_cache) {\n// this.#_cache.clear();\n// this.#_cache = null;\n// }\n// this.#id = 0;\n// }\n// #addLuminosityConversion(filter) {\n// const feColorMatrix = this.#document.createElementNS(\n// SVG_NS,\n// \"feColorMatrix\"\n// );\n// feColorMatrix.setAttribute(\"type\", \"matrix\");\n// feColorMatrix.setAttribute(\n// \"values\",\n// \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\"\n// );\n// filter.append(feColorMatrix);\n// }\n// #addGrayConversion(filter) {\n// const feColorMatrix = this.#document.createElementNS(\n// SVG_NS,\n// \"feColorMatrix\"\n// );\n// feColorMatrix.setAttribute(\"type\", \"matrix\");\n// feColorMatrix.setAttribute(\n// \"values\",\n// \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\"\n// );\n// filter.append(feColorMatrix);\n// }\n// #createFilter(id) {\n// const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n// filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n// filter.setAttribute(\"id\", id);\n// this.#defs.append(filter);\n// return filter;\n// }\n// #appendFeFunc(feComponentTransfer, func, table) {\n// const feFunc = this.#document.createElementNS(SVG_NS, func);\n// feFunc.setAttribute(\"type\", \"discrete\");\n// feFunc.setAttribute(\"tableValues\", table);\n// feComponentTransfer.append(feFunc);\n// }\n// #addTransferMapConversion(rTable, gTable, bTable, filter) {\n// const feComponentTransfer = this.#document.createElementNS(\n// SVG_NS,\n// \"feComponentTransfer\"\n// );\n// filter.append(feComponentTransfer);\n// this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n// this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n// this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n// }\n// #addTransferMapAlphaConversion(aTable, filter) {\n// const feComponentTransfer = this.#document.createElementNS(\n// SVG_NS,\n// \"feComponentTransfer\"\n// );\n// filter.append(feComponentTransfer);\n// this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n// }\n// #getRGB(color) {\n// this.#defs.style.color = color;\n// return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n// }\n// }\n// class DOMCanvasFactory extends BaseCanvasFactory {\n// constructor({ ownerDocument = globalThis.document, enableHWA = false } = {}) {\n// super({ enableHWA });\n// this._document = ownerDocument;\n// }\n// /**\n// * @ignore\n// */\n// _createCanvas(width, height) {\n// const canvas = this._document.createElement(\"canvas\");\n// canvas.width = width;\n// canvas.height = height;\n// return canvas;\n// }\n// }\n// async function fetchData(url, type = \"text\") {\n// if (\n// (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n// isValidFetchUrl(url, document.baseURI)\n// ) {\n// const response = await fetch(url);\n// if (!response.ok) {\n// throw new Error(response.statusText);\n// }\n// switch (type) {\n// case \"arraybuffer\":\n// return response.arrayBuffer();\n// case \"blob\":\n// return response.blob();\n// case \"json\":\n// return response.json();\n// }\n// return response.text();\n// }\n// // The Fetch API is not supported.\n// return new Promise((resolve, reject) => {\n// const request = new XMLHttpRequest();\n// request.open(\"GET\", url, /* async = */ true);\n// request.responseType = type;\n// request.onreadystatechange = () => {\n// if (request.readyState !== XMLHttpRequest.DONE) {\n// return;\n// }\n// if (request.status === 200 || request.status === 0) {\n// switch (type) {\n// case \"arraybuffer\":\n// case \"blob\":\n// case \"json\":\n// resolve(request.response);\n// return;\n// }\n// resolve(request.responseText);\n// return;\n// }\n// reject(new Error(request.statusText));\n// };\n// request.send(null);\n// });\n// }\n// class DOMCMapReaderFactory extends BaseCMapReaderFactory {\n// /**\n// * @ignore\n// */\n// _fetchData(url, compressionType) {\n// return fetchData(\n// url,\n// /* type = */ this.isCompressed ? \"arraybuffer\" : \"text\"\n// ).then(data => ({\n// cMapData:\n// data instanceof ArrayBuffer\n// ? new Uint8Array(data)\n// : stringToBytes(data),\n// compressionType,\n// }));\n// }\n// }\n// class DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n// /**\n// * @ignore\n// */\n// _fetchData(url) {\n// return fetchData(url, /* type = */ \"arraybuffer\").then(\n// data => new Uint8Array(data)\n// );\n// }\n// }\n// class DOMSVGFactory extends BaseSVGFactory {\n// /**\n// * @ignore\n// */\n// _createSVG(type) {\n// return document.createElementNS(SVG_NS, type);\n// }\n// }\n// /**\n// * @typedef {Object} PageViewportParameters\n// * @property {Array} viewBox - The xMin, yMin, xMax and\n// * yMax coordinates.\n// * @property {number} scale - The scale of the viewport.\n// * @property {number} rotation - The rotation, in degrees, of the viewport.\n// * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n// * default value is `0`.\n// * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n// * default value is `0`.\n// * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n// * The default value is `false`.\n// */\n// /**\n// * @typedef {Object} PageViewportCloneParameters\n// * @property {number} [scale] - The scale, overriding the one in the cloned\n// * viewport. The default value is `this.scale`.\n// * @property {number} [rotation] - The rotation, in degrees, overriding the one\n// * in the cloned viewport. The default value is `this.rotation`.\n// * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n// * The default value is `this.offsetX`.\n// * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n// * The default value is `this.offsetY`.\n// * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n// * The default value is `false`.\n// */\n// /**\n// * PDF page viewport created based on scale, rotation and offset.\n// */\n// class PageViewport {\n// /**\n// * @param {PageViewportParameters}\n// */\n// constructor({\n// viewBox,\n// scale,\n// rotation,\n// offsetX = 0,\n// offsetY = 0,\n// dontFlip = false,\n// }) {\n// this.viewBox = viewBox;\n// this.scale = scale;\n// this.rotation = rotation;\n// this.offsetX = offsetX;\n// this.offsetY = offsetY;\n// // creating transform to convert pdf coordinate system to the normal\n// // canvas like coordinates taking in account scale and rotation\n// const centerX = (viewBox[2] + viewBox[0]) / 2;\n// const centerY = (viewBox[3] + viewBox[1]) / 2;\n// let rotateA, rotateB, rotateC, rotateD;\n// // Normalize the rotation, by clamping it to the [0, 360) range.\n// rotation %= 360;\n// if (rotation < 0) {\n// rotation += 360;\n// }\n// switch (rotation) {\n// case 180:\n// rotateA = -1;\n// rotateB = 0;\n// rotateC = 0;\n// rotateD = 1;\n// break;\n// case 90:\n// rotateA = 0;\n// rotateB = 1;\n// rotateC = 1;\n// rotateD = 0;\n// break;\n// case 270:\n// rotateA = 0;\n// rotateB = -1;\n// rotateC = -1;\n// rotateD = 0;\n// break;\n// case 0:\n// rotateA = 1;\n// rotateB = 0;\n// rotateC = 0;\n// rotateD = -1;\n// break;\n// default:\n// throw new Error(\n// \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n// );\n// }\n// if (dontFlip) {\n// rotateC = -rotateC;\n// rotateD = -rotateD;\n// }\n// let offsetCanvasX, offsetCanvasY;\n// let width, height;\n// if (rotateA === 0) {\n// offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n// offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n// width = (viewBox[3] - viewBox[1]) * scale;\n// height = (viewBox[2] - viewBox[0]) * scale;\n// } else {\n// offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n// offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n// width = (viewBox[2] - viewBox[0]) * scale;\n// height = (viewBox[3] - viewBox[1]) * scale;\n// }\n// // creating transform for the following operations:\n// // translate(-centerX, -centerY), rotate and flip vertically,\n// // scale, and translate(offsetCanvasX, offsetCanvasY)\n// this.transform = [\n// rotateA * scale,\n// rotateB * scale,\n// rotateC * scale,\n// rotateD * scale,\n// offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n// offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n// ];\n// this.width = width;\n// this.height = height;\n// }\n// /**\n// * The original, un-scaled, viewport dimensions.\n// * @type {Object}\n// */\n// get rawDims() {\n// const { viewBox } = this;\n// return shadow(this, \"rawDims\", {\n// pageWidth: viewBox[2] - viewBox[0],\n// pageHeight: viewBox[3] - viewBox[1],\n// pageX: viewBox[0],\n// pageY: viewBox[1],\n// });\n// }\n// /**\n// * Clones viewport, with optional additional properties.\n// * @param {PageViewportCloneParameters} [params]\n// * @returns {PageViewport} Cloned viewport.\n// */\n// clone({\n// scale = this.scale,\n// rotation = this.rotation,\n// offsetX = this.offsetX,\n// offsetY = this.offsetY,\n// dontFlip = false,\n// } = {}) {\n// return new PageViewport({\n// viewBox: this.viewBox.slice(),\n// scale,\n// rotation,\n// offsetX,\n// offsetY,\n// dontFlip,\n// });\n// }\n// /**\n// * Converts PDF point to the viewport coordinates. For examples, useful for\n// * converting PDF location into canvas pixel coordinates.\n// * @param {number} x - The x-coordinate.\n// * @param {number} y - The y-coordinate.\n// * @returns {Array} Array containing `x`- and `y`-coordinates of the\n// * point in the viewport coordinate space.\n// * @see {@link convertToPdfPoint}\n// * @see {@link convertToViewportRectangle}\n// */\n// convertToViewportPoint(x, y) {\n// return Util.applyTransform([x, y], this.transform);\n// }\n// /**\n// * Converts PDF rectangle to the viewport coordinates.\n// * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n// * @returns {Array} Array containing corresponding coordinates of the\n// * rectangle in the viewport coordinate space.\n// * @see {@link convertToViewportPoint}\n// */\n// convertToViewportRectangle(rect) {\n// const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n// const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n// return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n// }\n// /**\n// * Converts viewport coordinates to the PDF location. For examples, useful\n// * for converting canvas pixel location into PDF one.\n// * @param {number} x - The x-coordinate.\n// * @param {number} y - The y-coordinate.\n// * @returns {Array} Array containing `x`- and `y`-coordinates of the\n// * point in the PDF coordinate space.\n// * @see {@link convertToViewportPoint}\n// */\n// convertToPdfPoint(x, y) {\n// return Util.applyInverseTransform([x, y], this.transform);\n// }\n// }\n// class RenderingCancelledException extends BaseException {\n// constructor(msg, extraDelay = 0) {\n// super(msg, \"RenderingCancelledException\");\n// this.extraDelay = extraDelay;\n// }\n// }\n// function isDataScheme(url) {\n// const ii = url.length;\n// let i = 0;\n// while (i < ii && url[i].trim() === \"\") {\n// i++;\n// }\n// return url.substring(i, i + 5).toLowerCase() === \"data:\";\n// }\n// function isPdfFile(filename) {\n// return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n// }\n// /**\n// * Gets the filename from a given URL.\n// * @param {string} url\n// * @returns {string}\n// */\n// function getFilenameFromUrl(url) {\n// [url] = url.split(/[#?]/, 1);\n// return url.substring(url.lastIndexOf(\"/\") + 1);\n// }\n// /**\n// * Returns the filename or guessed filename from the url (see issue 3455).\n// * @param {string} url - The original PDF location.\n// * @param {string} defaultFilename - The value returned if the filename is\n// * unknown, or the protocol is unsupported.\n// * @returns {string} Guessed PDF filename.\n// */\n// function getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n// if (typeof url !== \"string\") {\n// return defaultFilename;\n// }\n// if (isDataScheme(url)) {\n// warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n// return defaultFilename;\n// }\n// const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n// // SCHEME HOST 1.PATH 2.QUERY 3.REF\n// // Pattern to get last matching NAME.pdf\n// const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n// const splitURI = reURI.exec(url);\n// let suggestedFilename =\n// reFilename.exec(splitURI[1]) ||\n// reFilename.exec(splitURI[2]) ||\n// reFilename.exec(splitURI[3]);\n// if (suggestedFilename) {\n// suggestedFilename = suggestedFilename[0];\n// if (suggestedFilename.includes(\"%\")) {\n// // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n// try {\n// suggestedFilename = reFilename.exec(\n// decodeURIComponent(suggestedFilename)\n// )[0];\n// } catch {\n// // Possible (extremely rare) errors:\n// // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n// // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n// }\n// }\n// }\n// return suggestedFilename || defaultFilename;\n// }\n// class StatTimer {\n// started = Object.create(null);\n// times = [];\n// time(name) {\n// if (name in this.started) {\n// warn(`Timer is already running for ${name}`);\n// }\n// this.started[name] = Date.now();\n// }\n// timeEnd(name) {\n// if (!(name in this.started)) {\n// warn(`Timer has not been started for ${name}`);\n// }\n// this.times.push({\n// name,\n// start: this.started[name],\n// end: Date.now(),\n// });\n// // Remove timer from started so it can be called again.\n// delete this.started[name];\n// }\n// toString() {\n// // Find the longest name for padding purposes.\n// const outBuf = [];\n// let longest = 0;\n// for (const { name } of this.times) {\n// longest = Math.max(name.length, longest);\n// }\n// for (const { name, start, end } of this.times) {\n// outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n// }\n// return outBuf.join(\"\");\n// }\n// }\n// function isValidFetchUrl(url, baseUrl) {\n// if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n// throw new Error(\"Not implemented: isValidFetchUrl\");\n// }\n// try {\n// const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n// // The Fetch API only supports the http/https protocols, and not file/ftp.\n// return protocol === \"http:\" || protocol === \"https:\";\n// } catch {\n// return false; // `new URL()` will throw on incorrect data.\n// }\n// }\n/**\n * Event handler to suppress context menu.\n */\nexport function noContextMenu(e) {\n e.preventDefault();\n}\n// // Deprecated API function -- display regardless of the `verbosity` setting.\n// function deprecated(details) {\n// console.log(\"Deprecated API usage: \" + details);\n// }\n// let pdfDateStringRegex;\n// class PDFDateString {\n// /**\n// * Convert a PDF date string to a JavaScript `Date` object.\n// *\n// * The PDF date string format is described in section 7.9.4 of the official\n// * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n// * edition) Adobe describes the same format including a trailing apostrophe.\n// * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n// * them. We ignore all apostrophes as they are not necessary for date parsing.\n// *\n// * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n// * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n// * parts of the date string).\n// *\n// * @param {string} input\n// * @returns {Date|null}\n// */\n// static toDateObject(input) {\n// if (!input || typeof input !== \"string\") {\n// return null;\n// }\n// // Lazily initialize the regular expression.\n// pdfDateStringRegex ||= new RegExp(\n// \"^D:\" + // Prefix (required)\n// \"(\\\\d{4})\" + // Year (required)\n// \"(\\\\d{2})?\" + // Month (optional)\n// \"(\\\\d{2})?\" + // Day (optional)\n// \"(\\\\d{2})?\" + // Hour (optional)\n// \"(\\\\d{2})?\" + // Minute (optional)\n// \"(\\\\d{2})?\" + // Second (optional)\n// \"([Z|+|-])?\" + // Universal time relation (optional)\n// \"(\\\\d{2})?\" + // Offset hour (optional)\n// \"'?\" + // Splitting apostrophe (optional)\n// \"(\\\\d{2})?\" + // Offset minute (optional)\n// \"'?\" // Trailing apostrophe (optional)\n// );\n// // Optional fields that don't satisfy the requirements from the regular\n// // expression (such as incorrect digit counts or numbers that are out of\n// // range) will fall back the defaults from the specification.\n// const matches = pdfDateStringRegex.exec(input);\n// if (!matches) {\n// return null;\n// }\n// // JavaScript's `Date` object expects the month to be between 0 and 11\n// // instead of 1 and 12, so we have to correct for that.\n// const year = parseInt(matches[1], 10);\n// let month = parseInt(matches[2], 10);\n// month = month >= 1 && month <= 12 ? month - 1 : 0;\n// let day = parseInt(matches[3], 10);\n// day = day >= 1 && day <= 31 ? day : 1;\n// let hour = parseInt(matches[4], 10);\n// hour = hour >= 0 && hour <= 23 ? hour : 0;\n// let minute = parseInt(matches[5], 10);\n// minute = minute >= 0 && minute <= 59 ? minute : 0;\n// let second = parseInt(matches[6], 10);\n// second = second >= 0 && second <= 59 ? second : 0;\n// const universalTimeRelation = matches[7] || \"Z\";\n// let offsetHour = parseInt(matches[8], 10);\n// offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n// let offsetMinute = parseInt(matches[9], 10) || 0;\n// offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n// // Universal time relation 'Z' means that the local time is equal to the\n// // universal time, whereas the relations '+'/'-' indicate that the local\n// // time is later respectively earlier than the universal time. Every date\n// // is normalized to universal time.\n// if (universalTimeRelation === \"-\") {\n// hour += offsetHour;\n// minute += offsetMinute;\n// } else if (universalTimeRelation === \"+\") {\n// hour -= offsetHour;\n// minute -= offsetMinute;\n// }\n// return new Date(Date.UTC(year, month, day, hour, minute, second));\n// }\n// }\n// /**\n// * NOTE: This is (mostly) intended to support printing of XFA forms.\n// */\n// function getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n// const { width, height } = xfaPage.attributes.style;\n// const viewBox = [0, 0, parseInt(width), parseInt(height)];\n// return new PageViewport({\n// viewBox,\n// scale,\n// rotation,\n// });\n// }\nexport function getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [\n (colorRGB & 0xff0000) >> 16,\n (colorRGB & 0x00ff00) >> 8,\n colorRGB & 0x0000ff\n ];\n }\n if (color.startsWith(\"rgb(\")) {\n // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n return color\n .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x, 10));\n }\n if (color.startsWith(\"rgba(\")) {\n return color\n .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x, 10))\n .slice(0, 3);\n }\n // warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nexport function getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\n// function getCurrentTransform(ctx) {\n// const { a, b, c, d, e, f } = ctx.getTransform();\n// return [a, b, c, d, e, f];\n// }\n// function getCurrentTransformInverse(ctx) {\n// const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n// return [a, b, c, d, e, f];\n// }\n// /**\n// * @param {HTMLDivElement} div\n// * @param {PageViewport} viewport\n// * @param {boolean} mustFlip\n// * @param {boolean} mustRotate\n// */\n// function setLayerDimensions(\n// div,\n// viewport,\n// mustFlip = false,\n// mustRotate = true\n// ) {\n// if (viewport instanceof PageViewport) {\n// const { pageWidth, pageHeight } = viewport.rawDims;\n// const { style } = div;\n// const useRound = FeatureTest.isCSSRoundSupported;\n// const w = `var(--scale-factor) * ${pageWidth}px`,\n// h = `var(--scale-factor) * ${pageHeight}px`;\n// const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n// heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n// if (!mustFlip || viewport.rotation % 180 === 0) {\n// style.width = widthStr;\n// style.height = heightStr;\n// } else {\n// style.width = heightStr;\n// style.height = widthStr;\n// }\n// }\n// if (mustRotate) {\n// div.setAttribute(\"data-main-rotation\", viewport.rotation);\n// }\n// }\n// export {\n// // deprecated,\n// // DOMCanvasFactory,\n// // DOMCMapReaderFactory,\n// // DOMFilterFactory,\n// // DOMStandardFontDataFactory,\n// // DOMSVGFactory,\n// // fetchData,\n// // getColorValues,\n// // getCurrentTransform,\n// // getCurrentTransformInverse,\n// // getFilenameFromUrl,\n// // getPdfFilenameFromUrl,\n// // getRGB,\n// // getXfaPageViewport,\n// // isDataScheme,\n// // isPdfFile,\n// // isValidFetchUrl,\n// // noContextMenu,\n// // PageViewport,\n// // PDFDateString,\n// // PixelsPerInch,\n// // RenderingCancelledException,\n// setLayerDimensions,\n// // StatTimer,\n// };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { shadow, Util } from \"../shared/utils\";\n// import {} from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { getColorValues, getRGB } from \"../shared/display_utils\";\nexport class ColorManager {\n get _colors() {\n if (\n // typeof PDFJSDev !== \"undefined\" &&\n // PDFJSDev.test(\"LIB\") &&\n typeof document === \"undefined\") {\n return shadow(this, \"_colors\", ColorManager._colorsMapping);\n }\n const colors = new Map([\n [\"CanvasText\", null],\n [\"Canvas\", null]\n ]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n /*\n * In High Contrast Mode, the color on the screen is not always the\n * real color used in the pdf.\n * For example in some cases white can appear to be black but when saving\n * we want to have white.\n * @param {string} color\n * @returns {Array}\n */\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n /*\n * An input element must have its color value as a hex string\n * and not as color name.\n * So this function converts a name into an hex string.\n * @param {string} name\n * @returns {string}\n */\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n // @ts-expect-error TS(2556):\n return Util.makeHexColor(...rgb);\n }\n}\nColorManager._colorsMapping = new Map([\n [\"CanvasText\", [0, 0, 0]],\n [\"Canvas\", [255, 255, 255]]\n]);\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\n","/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _Outliner_instances, _Outliner_box, _Outliner_verticalEdges, _Outliner_intervals, _Outliner_getOutlines, _Outliner_binarySearch, _Outliner_insert, _Outliner_remove, _Outliner_breakEdge, _HighlightOutline_box, _HighlightOutline_outlines, _FreeOutliner_instances, _a, _FreeOutliner_box, _FreeOutliner_bottom, _FreeOutliner_innerMargin, _FreeOutliner_isLTR, _FreeOutliner_top, _FreeOutliner_last, _FreeOutliner_lastX, _FreeOutliner_lastY, _FreeOutliner_min, _FreeOutliner_min_dist, _FreeOutliner_scaleFactor, _FreeOutliner_thickness, _FreeOutliner_points, _FreeOutliner_MIN_DIST, _FreeOutliner_MIN_DIFF, _FreeOutliner_MIN, _FreeOutliner_getLastCoords, _FreeHighlightOutline_instances, _FreeHighlightOutline_box, _FreeHighlightOutline_bbox, _FreeHighlightOutline_innerMargin, _FreeHighlightOutline_isLTR, _FreeHighlightOutline_points, _FreeHighlightOutline_scaleFactor, _FreeHighlightOutline_outline, _FreeHighlightOutline_rescale, _FreeHighlightOutline_rescaleAndSwap, _FreeHighlightOutline_computeMinMax;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { Util } from \"pdfjs-dist/legacy/build/pdf.mjs\";\n// import { Util } from \"../../shared/utils\";\nexport class Outliner {\n /*\n * Construct an outliner.\n * @param {Array} boxes - An array of axis-aligned rectangles.\n * @param {number} borderWidth - The width of the border of the boxes, it\n * allows to make the boxes bigger (or smaller).\n * @param {number} innerMargin - The margin between the boxes and the\n * outlines. It's important to not have a null innerMargin when we want to\n * draw the outline else the stroked outline could be clipped because of its\n * width.\n * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\n * the last point of the boxes.\n */\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n _Outliner_instances.add(this);\n _Outliner_box.set(this, void 0);\n _Outliner_verticalEdges.set(this, []);\n _Outliner_intervals.set(this, []);\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n // We round the coordinates to slightly reduce the number of edges in the\n // final outlines.\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = Math.pow(10, -NUMBER_OF_DIGITS);\n // The coordinates of the boxes are in the page coordinate system.\n for (const { x, y, width, height } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n __classPrivateFieldGet(this, _Outliner_verticalEdges, \"f\").push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = __classPrivateFieldGet(this, _Outliner_verticalEdges, \"f\").at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n // Convert the coordinates of the edges into box coordinates.\n for (const edge of __classPrivateFieldGet(this, _Outliner_verticalEdges, \"f\")) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n __classPrivateFieldSet(this, _Outliner_box, {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint\n }, \"f\");\n }\n getOutlines() {\n // We begin to sort lexicographically the vertical edges by their abscissa,\n // and then by their ordinate.\n __classPrivateFieldGet(this, _Outliner_verticalEdges, \"f\").sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n // We're now using a sweep line algorithm to find the outlines.\n // We start with the leftmost vertical edge, and we're going to iterate\n // over all the vertical edges from left to right.\n // Each time we encounter a left edge, we're going to insert the interval\n // [y1, y2] in the set of intervals.\n // This set of intervals is used to break the vertical edges into chunks:\n // we only take the part of the vertical edge that isn't in the union of\n // the intervals.\n const outlineVerticalEdges = [];\n for (const edge of __classPrivateFieldGet(this, _Outliner_verticalEdges, \"f\")) {\n if (edge[3]) {\n // Left edge.\n outlineVerticalEdges.push(...__classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_breakEdge).call(this, edge));\n __classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_insert).call(this, edge);\n }\n else {\n // Right edge.\n __classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_remove).call(this, edge);\n outlineVerticalEdges.push(...__classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_breakEdge).call(this, edge));\n }\n }\n return __classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_getOutlines).call(this, outlineVerticalEdges);\n }\n}\n_Outliner_box = new WeakMap(), _Outliner_verticalEdges = new WeakMap(), _Outliner_intervals = new WeakMap(), _Outliner_instances = new WeakSet(), _Outliner_getOutlines = function _Outliner_getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n // We sort lexicographically the vertices of each edge by their ordinate and\n // by their abscissa.\n // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\n // So for every vertical edge, we're going to add the two vertical edges\n // which are connected to it through a horizontal edge.\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n }\n else if (allEdges.has(edge2)) {\n e = edge2;\n }\n else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, __classPrivateFieldGet(this, _Outliner_box, \"f\"));\n}, _Outliner_binarySearch = function _Outliner_binarySearch(y) {\n const array = __classPrivateFieldGet(this, _Outliner_intervals, \"f\");\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = (start + end) >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n }\n else {\n end = middle - 1;\n }\n }\n return end + 1;\n}, _Outliner_insert = function _Outliner_insert([, y1, y2]) {\n const index = __classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_binarySearch).call(this, y1);\n __classPrivateFieldGet(this, _Outliner_intervals, \"f\").splice(index, 0, [y1, y2]);\n}, _Outliner_remove = function _Outliner_remove([, y1, y2]) {\n const index = __classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_binarySearch).call(this, y1);\n for (let i = index; i < __classPrivateFieldGet(this, _Outliner_intervals, \"f\").length; i++) {\n const [start, end] = __classPrivateFieldGet(this, _Outliner_intervals, \"f\")[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n __classPrivateFieldGet(this, _Outliner_intervals, \"f\").splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = __classPrivateFieldGet(this, _Outliner_intervals, \"f\")[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n __classPrivateFieldGet(this, _Outliner_intervals, \"f\").splice(i, 1);\n return;\n }\n }\n}, _Outliner_breakEdge = function _Outliner_breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = __classPrivateFieldGet(this, _Outliner_instances, \"m\", _Outliner_binarySearch).call(this, y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = __classPrivateFieldGet(this, _Outliner_intervals, \"f\")[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n // There is no intersection between the interval and the edge, hence\n // we keep it as is.\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n }\n else {\n if (jj === 1) {\n return [];\n }\n // The edge is included in the interval, hence we remove it.\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n};\nclass Outline {\n /**\n * @returns {string} The SVG path of the outline.\n */\n toSVGPath() {\n throw new Error(\"Abstract method `toSVGPath` must be implemented.\");\n }\n /**\n * @type {Object|null} The bounding box of the outline.\n */\n get box() {\n throw new Error(\"Abstract getter `box` must be implemented.\");\n }\n // serialize() {\n // serialize(_bbox, _rotation) {\n serialize([blX, blY, trX, trY]) {\n // throw new Error(\"Abstract method `serialize` must be implemented.\");\n if (!blX || !blY || !trX || !trY) {\n return;\n }\n }\n get free() {\n return this instanceof FreeHighlightOutline;\n // return false;\n }\n}\nclass HighlightOutline extends Outline {\n constructor(outlines, box) {\n super();\n _HighlightOutline_box.set(this, void 0);\n _HighlightOutline_outlines.set(this, void 0);\n __classPrivateFieldSet(this, _HighlightOutline_outlines, outlines, \"f\");\n __classPrivateFieldSet(this, _HighlightOutline_box, box, \"f\");\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of __classPrivateFieldGet(this, _HighlightOutline_outlines, \"f\")) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n }\n else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n /*\n * Serialize the outlines into the PDF page coordinate system.\n * @param {Array} _bbox - the bounding box of the annotation.\n * @param {number} _rotation - the rotation of the annotation.\n * @returns {Array>}\n */\n // serialize([blX, blY, trX, trY], _rotation) {\n serialize([blX, blY, trX, trY]) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of __classPrivateFieldGet(this, _HighlightOutline_outlines, \"f\")) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return __classPrivateFieldGet(this, _HighlightOutline_box, \"f\");\n }\n}\n_HighlightOutline_box = new WeakMap(), _HighlightOutline_outlines = new WeakMap();\nclass FreeOutliner {\n constructor({ x, y }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n _FreeOutliner_instances.add(this);\n _FreeOutliner_box.set(this, void 0);\n _FreeOutliner_bottom.set(this, []);\n _FreeOutliner_innerMargin.set(this, void 0);\n _FreeOutliner_isLTR.set(this, void 0);\n _FreeOutliner_top.set(this, []);\n // The first 6 elements are the last 3 points of the top part of the outline.\n // The next 6 elements are the last 3 points of the line.\n // The next 6 elements are the last 3 points of the bottom part of the\n // outline.\n // We track the last 3 points in order to be able to:\n // - compute the normal of the line,\n // - compute the control points of the quadratic Bézier curve.\n _FreeOutliner_last.set(this, new Float64Array(18));\n _FreeOutliner_lastX.set(this, void 0);\n _FreeOutliner_lastY.set(this, void 0);\n _FreeOutliner_min.set(this, void 0);\n _FreeOutliner_min_dist.set(this, void 0);\n _FreeOutliner_scaleFactor.set(this, void 0);\n _FreeOutliner_thickness.set(this, void 0);\n _FreeOutliner_points.set(this, []);\n __classPrivateFieldSet(this, _FreeOutliner_box, box, \"f\");\n __classPrivateFieldSet(this, _FreeOutliner_thickness, thickness * scaleFactor, \"f\");\n __classPrivateFieldSet(this, _FreeOutliner_isLTR, isLTR, \"f\");\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set([NaN, NaN, NaN, NaN, x, y], 6);\n __classPrivateFieldSet(this, _FreeOutliner_innerMargin, innerMargin, \"f\");\n __classPrivateFieldSet(this, _FreeOutliner_min_dist, __classPrivateFieldGet(_a, _a, \"f\", _FreeOutliner_MIN_DIST) * scaleFactor, \"f\");\n __classPrivateFieldSet(this, _FreeOutliner_min, __classPrivateFieldGet(_a, _a, \"f\", _FreeOutliner_MIN) * scaleFactor, \"f\");\n __classPrivateFieldSet(this, _FreeOutliner_scaleFactor, scaleFactor, \"f\");\n __classPrivateFieldGet(this, _FreeOutliner_points, \"f\").push(x, y);\n }\n get free() {\n return true;\n }\n isEmpty() {\n // When we add a second point then this.#last.slice(6) will be something\n // like [NaN, NaN, firstX, firstY, secondX, secondY,...] so having a NaN\n // at index 8 means that we've only one point.\n return isNaN(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[8]);\n }\n add({ x, y }) {\n var _b;\n __classPrivateFieldSet(this, _FreeOutliner_lastX, x, \"f\");\n __classPrivateFieldSet(this, _FreeOutliner_lastY, y, \"f\");\n const [layerX, layerY, layerWidth, layerHeight] = __classPrivateFieldGet(this, _FreeOutliner_box, \"f\");\n let [x1, y1, x2, y2] = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < __classPrivateFieldGet(this, _FreeOutliner_min, \"f\")) {\n // The idea is to avoid garbage points around the last point.\n // When the points are too close, it just leads to bad normal vectors and\n // control points.\n return false;\n }\n const diffD = d - __classPrivateFieldGet(this, _FreeOutliner_min_dist, \"f\");\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n // We update the last 3 points of the line.\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n // We keep track of the points in order to be able to compute the focus\n // outline.\n (_b = __classPrivateFieldGet(this, _FreeOutliner_points, \"f\")) === null || _b === void 0 ? void 0 : _b.push(x, y);\n // Create the normal unit vector.\n // |(shiftX, shiftY)| = |K| * |(diffX, diffY)| = |K| * d = diffD.\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * __classPrivateFieldGet(this, _FreeOutliner_thickness, \"f\");\n const thY = nY * __classPrivateFieldGet(this, _FreeOutliner_thickness, \"f\");\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(2, 8), 0);\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set([x2 + thX, y2 + thY], 4);\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(14, 18), 12);\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set([x2 - thX, y2 - thY], 16);\n if (isNaN(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[6])) {\n if (__classPrivateFieldGet(this, _FreeOutliner_top, \"f\").length === 0) {\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set([x1 + thX, y1 + thY], 2);\n __classPrivateFieldGet(this, _FreeOutliner_top, \"f\").push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set([x1 - thX, y1 - thY], 14);\n __classPrivateFieldGet(this, _FreeOutliner_bottom, \"f\").push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n // In order to avoid some possible artifacts, we're going to use the a\n // straight line instead of a quadratic Bézier curve.\n [x1, y1, x2, y2] = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(2, 6);\n __classPrivateFieldGet(this, _FreeOutliner_top, \"f\").push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(14, 18);\n __classPrivateFieldGet(this, _FreeOutliner_bottom, \"f\").push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n // Control points and the final point for the quadratic Bézier curve.\n [x0, y0, x1, y1, x2, y2] = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(0, 6);\n __classPrivateFieldGet(this, _FreeOutliner_top, \"f\").push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(12, 18);\n __classPrivateFieldGet(this, _FreeOutliner_bottom, \"f\").push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n // We've only one point.\n return \"\";\n }\n const top = __classPrivateFieldGet(this, _FreeOutliner_top, \"f\");\n const bottom = __classPrivateFieldGet(this, _FreeOutliner_bottom, \"f\");\n const lastTop = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(4, 6);\n const lastBottom = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(16, 18);\n const [x, y, width, height] = __classPrivateFieldGet(this, _FreeOutliner_box, \"f\");\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = __classPrivateFieldGet(this, _FreeOutliner_instances, \"m\", _FreeOutliner_getLastCoords).call(this);\n if (isNaN(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[6]) && !this.isEmpty()) {\n // We've only two points.\n return `M${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[2] - x) / width} ${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[3] - y) / height} L${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[4] - x) / width} ${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[16] - x) / width} ${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[17] - y) / height} L${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[14] - x) / width} ${(__classPrivateFieldGet(this, _FreeOutliner_last, \"f\")[15] - y) / height} Z`;\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n }\n else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n return buffer.join(\" \");\n }\n getOutlines() {\n var _b, _c;\n const top = __classPrivateFieldGet(this, _FreeOutliner_top, \"f\");\n const bottom = __classPrivateFieldGet(this, _FreeOutliner_bottom, \"f\");\n const last = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\");\n const lastTop = last.subarray(4, 6);\n const lastBottom = last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = __classPrivateFieldGet(this, _FreeOutliner_box, \"f\");\n const points = new Float64Array(((_c = (_b = __classPrivateFieldGet(this, _FreeOutliner_points, \"f\")) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (__classPrivateFieldGet(this, _FreeOutliner_points, \"f\")[i] - layerX) / layerWidth;\n points[i + 1] = (__classPrivateFieldGet(this, _FreeOutliner_points, \"f\")[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (__classPrivateFieldGet(this, _FreeOutliner_lastX, \"f\") - layerX) / layerWidth;\n points[points.length - 1] = (__classPrivateFieldGet(this, _FreeOutliner_lastY, \"f\") - layerY) / layerHeight;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = __classPrivateFieldGet(this, _FreeOutliner_instances, \"m\", _FreeOutliner_getLastCoords).call(this);\n if (isNaN(last[6]) && !this.isEmpty()) {\n // We've only two points.\n const outlineObj = new Float64Array(36);\n outlineObj.set([\n NaN,\n NaN,\n NaN,\n NaN,\n (last[2] - layerX) / layerWidth,\n (last[3] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n (last[4] - layerX) / layerWidth,\n (last[5] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n lastTopX,\n lastTopY,\n NaN,\n NaN,\n NaN,\n NaN,\n lastBottomX,\n lastBottomY,\n NaN,\n NaN,\n NaN,\n NaN,\n (last[16] - layerX) / layerWidth,\n (last[17] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n (last[14] - layerX) / layerWidth,\n (last[15] - layerY) / layerHeight,\n ], 0);\n return new FreeHighlightOutline(outlineObj, points, __classPrivateFieldGet(this, _FreeOutliner_box, \"f\"), __classPrivateFieldGet(this, _FreeOutliner_scaleFactor, \"f\"), __classPrivateFieldGet(this, _FreeOutliner_innerMargin, \"f\"), __classPrivateFieldGet(this, _FreeOutliner_isLTR, \"f\"));\n }\n const outline = new Float64Array(__classPrivateFieldGet(this, _FreeOutliner_top, \"f\").length + 24 + __classPrivateFieldGet(this, _FreeOutliner_bottom, \"f\").length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n outline.set([\n NaN,\n NaN,\n NaN,\n NaN,\n (lastTop[0] - layerX) / layerWidth,\n (lastTop[1] - layerY) / layerHeight,\n NaN,\n NaN,\n NaN,\n NaN,\n lastTopX,\n lastTopY,\n NaN,\n NaN,\n NaN,\n NaN,\n lastBottomX,\n lastBottomY,\n NaN,\n NaN,\n NaN,\n NaN,\n (lastBottom[0] - layerX) / layerWidth,\n (lastBottom[1] - layerY) / layerHeight,\n ], N);\n N += 24;\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\n return new FreeHighlightOutline(outline, points, __classPrivateFieldGet(this, _FreeOutliner_box, \"f\"), __classPrivateFieldGet(this, _FreeOutliner_scaleFactor, \"f\"), __classPrivateFieldGet(this, _FreeOutliner_innerMargin, \"f\"), __classPrivateFieldGet(this, _FreeOutliner_isLTR, \"f\"));\n }\n}\n_a = FreeOutliner, _FreeOutliner_box = new WeakMap(), _FreeOutliner_bottom = new WeakMap(), _FreeOutliner_innerMargin = new WeakMap(), _FreeOutliner_isLTR = new WeakMap(), _FreeOutliner_top = new WeakMap(), _FreeOutliner_last = new WeakMap(), _FreeOutliner_lastX = new WeakMap(), _FreeOutliner_lastY = new WeakMap(), _FreeOutliner_min = new WeakMap(), _FreeOutliner_min_dist = new WeakMap(), _FreeOutliner_scaleFactor = new WeakMap(), _FreeOutliner_thickness = new WeakMap(), _FreeOutliner_points = new WeakMap(), _FreeOutliner_instances = new WeakSet(), _FreeOutliner_getLastCoords = function _FreeOutliner_getLastCoords() {\n const lastTop = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(4, 6);\n const lastBottom = __classPrivateFieldGet(this, _FreeOutliner_last, \"f\").subarray(16, 18);\n const [x, y, width, height] = __classPrivateFieldGet(this, _FreeOutliner_box, \"f\");\n return [\n (__classPrivateFieldGet(this, _FreeOutliner_lastX, \"f\") + (lastTop[0] - lastBottom[0]) / 2 - x) / width,\n (__classPrivateFieldGet(this, _FreeOutliner_lastY, \"f\") + (lastTop[1] - lastBottom[1]) / 2 - y) / height,\n (__classPrivateFieldGet(this, _FreeOutliner_lastX, \"f\") + (lastBottom[0] - lastTop[0]) / 2 - x) / width,\n (__classPrivateFieldGet(this, _FreeOutliner_lastY, \"f\") + (lastBottom[1] - lastTop[1]) / 2 - y) / height,\n ];\n};\n_FreeOutliner_MIN_DIST = { value: 8 };\n_FreeOutliner_MIN_DIFF = { value: 2 };\n_FreeOutliner_MIN = { value: __classPrivateFieldGet(_a, _a, \"f\", _FreeOutliner_MIN_DIST) + __classPrivateFieldGet(_a, _a, \"f\", _FreeOutliner_MIN_DIFF) };\nclass FreeHighlightOutline extends Outline {\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n _FreeHighlightOutline_instances.add(this);\n _FreeHighlightOutline_box.set(this, void 0);\n _FreeHighlightOutline_bbox.set(this, null);\n _FreeHighlightOutline_innerMargin.set(this, void 0);\n _FreeHighlightOutline_isLTR.set(this, void 0);\n _FreeHighlightOutline_points.set(this, void 0);\n _FreeHighlightOutline_scaleFactor.set(this, void 0);\n _FreeHighlightOutline_outline.set(this, void 0);\n __classPrivateFieldSet(this, _FreeHighlightOutline_outline, outline, \"f\");\n __classPrivateFieldSet(this, _FreeHighlightOutline_points, points, \"f\");\n __classPrivateFieldSet(this, _FreeHighlightOutline_box, box, \"f\");\n __classPrivateFieldSet(this, _FreeHighlightOutline_scaleFactor, scaleFactor, \"f\");\n __classPrivateFieldSet(this, _FreeHighlightOutline_innerMargin, innerMargin, \"f\");\n __classPrivateFieldSet(this, _FreeHighlightOutline_isLTR, isLTR, \"f\");\n __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_computeMinMax).call(this, isLTR);\n const { x, y, width, height } = __classPrivateFieldGet(this, _FreeHighlightOutline_bbox, \"f\");\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[4]} ${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[5]}`];\n for (let i = 6, ii = __classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\").length; i < ii; i += 6) {\n if (isNaN(__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i])) {\n buffer.push(`L${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i + 4]} ${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i + 5]}`);\n continue;\n }\n buffer.push(`C${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i]} ${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i + 1]} ${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i + 2]} ${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i + 3]} ${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i + 4]} ${__classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\")[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n // @ts-expect-error(TS:2556)\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescale).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\"), blX, trY, width, -height);\n points = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescale).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\"), blX, trY, width, -height);\n break;\n case 90:\n outline = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescaleAndSwap).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\"), blX, blY, width, height);\n points = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescaleAndSwap).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\"), blX, blY, width, height);\n break;\n case 180:\n outline = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescale).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\"), trX, blY, -width, height);\n points = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescale).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\"), trX, blY, -width, height);\n break;\n case 270:\n outline = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescaleAndSwap).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\"), trX, trY, -width, -height);\n points = __classPrivateFieldGet(this, _FreeHighlightOutline_instances, \"m\", _FreeHighlightOutline_rescaleAndSwap).call(this, __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\"), trX, trY, -width, -height);\n break;\n default: break;\n }\n return { outline: Array.from(outline), points: [Array.from(points)] };\n }\n get box() {\n return __classPrivateFieldGet(this, _FreeHighlightOutline_bbox, \"f\");\n }\n getNewOutline(thickness, innerMargin) {\n // Build the outline of the highlight to use as the focus outline.\n const { x, y, width, height } = __classPrivateFieldGet(this, _FreeHighlightOutline_bbox, \"f\");\n const [layerX, layerY, layerWidth, layerHeight] = __classPrivateFieldGet(this, _FreeHighlightOutline_box, \"f\");\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = new FreeOutliner({\n x: __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\")[0] * sx + tx,\n y: __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\")[1] * sy + ty,\n }, __classPrivateFieldGet(this, _FreeHighlightOutline_box, \"f\"), __classPrivateFieldGet(this, _FreeHighlightOutline_scaleFactor, \"f\"), thickness, __classPrivateFieldGet(this, _FreeHighlightOutline_isLTR, \"f\"), innerMargin !== null && innerMargin !== void 0 ? innerMargin : __classPrivateFieldGet(this, _FreeHighlightOutline_innerMargin, \"f\"));\n for (let i = 2; i < __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\").length; i += 2) {\n outliner.add({\n x: __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\")[i] * sx + tx,\n y: __classPrivateFieldGet(this, _FreeHighlightOutline_points, \"f\")[i + 1] * sy + ty,\n });\n }\n return outliner.getOutlines();\n }\n}\n_FreeHighlightOutline_box = new WeakMap(), _FreeHighlightOutline_bbox = new WeakMap(), _FreeHighlightOutline_innerMargin = new WeakMap(), _FreeHighlightOutline_isLTR = new WeakMap(), _FreeHighlightOutline_points = new WeakMap(), _FreeHighlightOutline_scaleFactor = new WeakMap(), _FreeHighlightOutline_outline = new WeakMap(), _FreeHighlightOutline_instances = new WeakSet(), _FreeHighlightOutline_rescale = function _FreeHighlightOutline_rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n}, _FreeHighlightOutline_rescaleAndSwap = function _FreeHighlightOutline_rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n}, _FreeHighlightOutline_computeMinMax = function _FreeHighlightOutline_computeMinMax(isLTR) {\n const outline = __classPrivateFieldGet(this, _FreeHighlightOutline_outline, \"f\");\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n }\n else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n }\n else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, \n // @ts-expect-error(TS:2556)\n ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n }\n else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const x = minX - __classPrivateFieldGet(this, _FreeHighlightOutline_innerMargin, \"f\"), y = minY - __classPrivateFieldGet(this, _FreeHighlightOutline_innerMargin, \"f\"), width = maxX - minX + 2 * __classPrivateFieldGet(this, _FreeHighlightOutline_innerMargin, \"f\"), height = maxY - minY + 2 * __classPrivateFieldGet(this, _FreeHighlightOutline_innerMargin, \"f\");\n __classPrivateFieldSet(this, _FreeHighlightOutline_bbox, { x, y, width, height, lastPoint: [lastPointX, lastPointY] }, \"f\");\n};\n// export { FreeOutliner, Outliner };\nexport { FreeOutliner };\n// export { Outliner };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _HighlightEditor_instances, _a, _HighlightEditor_anchorNode, _HighlightEditor_anchorOffset, _HighlightEditor_boxes, _HighlightEditor_clipPathId, _HighlightEditor_focusOutlines, _HighlightEditor_focusNode, _HighlightEditor_focusOffset, _HighlightEditor_highlightDiv, _HighlightEditor_highlightOutlines, _HighlightEditor_id, _HighlightEditor_isFreeHighlight, _HighlightEditor_lastPoint, _HighlightEditor_opacity, _HighlightEditor_outlineId, _HighlightEditor_text, _HighlightEditor_thickness, _HighlightEditor_methodOfCreation, _HighlightEditor_createOutlines, _HighlightEditor_createFreeOutlines, _HighlightEditor_updateColor, _HighlightEditor_updateThickness, _HighlightEditor_cleanDrawLayer, _HighlightEditor_addToDrawLayer, _HighlightEditor_rotateBbox, _HighlightEditor_keydown, _HighlightEditor_setCaret, _HighlightEditor_getRotation, _HighlightEditor_serializeBoxes, _HighlightEditor_serializeOutlines, _HighlightEditor_highlightMove, _HighlightEditor_endHighlight;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { AnnotationEditorParamsType, AnnotationEditorType, \n// DrawLayer,\n// shadow,\nUtil, noContextMenu } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { bindEvents } from \"../helpers/tools\";\n// import { bindEvents, KeyboardManager } from \"./tools.js\";\n// import { FreeOutliner, Outliner } from \"./outliner.js\";\nimport { AnnotationEditor } from \"./annotation-editor\";\nimport { FreeOutliner, Outliner } from \"./outliner\";\n// import { ColorPicker } from \"./color_picker.js\";\n// import { noContextMenu } from \"../../shared/display_utils\";\n/**\n * Basic draw editor in order to generate an Highlight annotation.\n */\nclass HighlightEditor extends AnnotationEditor {\n // static get _keyboardManager() {\n // const proto = HighlightEditor.prototype;\n // return shadow(\n // this,\n // \"_keyboardManager\",\n // new KeyboardManager([\n // [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, { args: [0] }],\n // [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, { args: [1] }],\n // [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, { args: [2] }],\n // [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, { args: [3] }],\n // ])\n // );\n // }\n constructor(params) {\n super(Object.assign(Object.assign({}, params), { name: \"k-highlight-editor highlightEditor\" }));\n _HighlightEditor_instances.add(this);\n // todo: props\n this.color = \"\";\n // parent = null;\n // width = null;\n // height = null;\n // x = null;\n // y = null;\n // todo: props\n _HighlightEditor_anchorNode.set(this, null);\n _HighlightEditor_anchorOffset.set(this, 0);\n _HighlightEditor_boxes.set(this, void 0);\n _HighlightEditor_clipPathId.set(this, null);\n // #colorPicker = null;\n _HighlightEditor_focusOutlines.set(this, null);\n _HighlightEditor_focusNode.set(this, null);\n _HighlightEditor_focusOffset.set(this, 0);\n _HighlightEditor_highlightDiv.set(this, null);\n _HighlightEditor_highlightOutlines.set(this, null);\n _HighlightEditor_id.set(this, null);\n _HighlightEditor_isFreeHighlight.set(this, false);\n _HighlightEditor_lastPoint.set(this, null);\n _HighlightEditor_opacity.set(this, void 0);\n _HighlightEditor_outlineId.set(this, null);\n _HighlightEditor_text.set(this, \"\");\n _HighlightEditor_thickness.set(this, void 0);\n _HighlightEditor_methodOfCreation.set(this, \"\");\n this.color = params.color || _a._defaultColor;\n __classPrivateFieldSet(this, _HighlightEditor_thickness, params.thickness || _a._defaultThickness, \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_opacity, params.opacity || _a._defaultOpacity, \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_boxes, params.boxes || null, \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_methodOfCreation, params.methodOfCreation || \"\", \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_text, params.text || \"\", \"f\");\n this._isDraggable = false;\n if (params.highlightId > -1) {\n __classPrivateFieldSet(this, _HighlightEditor_isFreeHighlight, true, \"f\");\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_createFreeOutlines).call(this, params);\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_addToDrawLayer).call(this);\n }\n else {\n __classPrivateFieldSet(this, _HighlightEditor_anchorNode, params.anchorNode, \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_anchorOffset, params.anchorOffset, \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_focusNode, params.focusNode, \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_focusOffset, params.focusOffset, \"f\");\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_createOutlines).call(this);\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_addToDrawLayer).call(this);\n this.rotate(this.rotation);\n }\n }\n /** @inheritdoc */\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: __classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\") ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: __classPrivateFieldGet(this, _HighlightEditor_thickness, \"f\"),\n methodOfCreation: __classPrivateFieldGet(this, _HighlightEditor_methodOfCreation, \"f\"),\n };\n }\n /** @inheritdoc */\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n };\n }\n static computeTelemetryFinalData(data) {\n // We want to know how many colors have been used.\n return { numberOfColors: data.get(\"color\").size };\n }\n /** @inheritdoc */\n static initialize(l10n, uiManager) {\n var _b, _c, _d, _e;\n AnnotationEditor.initialize(l10n, uiManager, {});\n _a._defaultColor || (_a._defaultColor = \n // uiManager.highlightColors?.values().next().value || \"#fff066\";\n // uiManager.highlightColors?.values().next().value || \"#ffff00\";\n ((_e = (_d = (_c = (_b = uiManager.viewer) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c.annotations) === null || _d === void 0 ? void 0 : _d.highlight) === null || _e === void 0 ? void 0 : _e.color) || \"#ffff00\");\n }\n /** @inheritdoc */\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n _a._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n _a._defaultThickness = value;\n break;\n default: break;\n }\n }\n /** @inheritdoc */\n // translateInPage(x, y) { }\n translateInPage() { }\n /** @inheritdoc */\n get toolbarPosition() {\n return __classPrivateFieldGet(this, _HighlightEditor_lastPoint, \"f\");\n }\n /** @inheritdoc */\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_updateColor).call(this, value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_updateThickness).call(this, value);\n break;\n default: break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR,\n _a._defaultColor,\n ],\n [\n AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n _a._defaultThickness,\n ],\n ];\n }\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n this.color || _a._defaultColor,\n ],\n [\n AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n __classPrivateFieldGet(this, _HighlightEditor_thickness, \"f\") || _a._defaultThickness,\n ],\n [AnnotationEditorParamsType.HIGHLIGHT_FREE, __classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\")],\n ];\n }\n /** @inheritdoc */\n // async addEditToolbar() {\n // // const toolbar = await super.addEditToolbar();\n // // if (!toolbar) {\n // // return null;\n // // }\n // // if (this._uiManager.highlightColors) {\n // // // this.#colorPicker = new ColorPicker({ editor: this });\n // // // toolbar.addColorPicker(this.#colorPicker);\n // // }\n // // return toolbar;\n // }\n /** @inheritdoc */\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n // this.div.classList.toggle(\"k-disabled\", true);\n }\n /** @inheritdoc */\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n // this.div.classList.toggle(\"k-disabled\", false);\n }\n /** @inheritdoc */\n fixAndSetPosition() {\n return super.fixAndSetPosition(__classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_getRotation).call(this));\n }\n /** @inheritdoc */\n getBaseTranslation() {\n // The editor itself doesn't have any CSS border (we're drawing one\n // ourselves in using SVG).\n return [0, 0];\n }\n /** @inheritdoc */\n getRect(tx, ty) {\n return super.getRect(tx, ty, __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_getRotation).call(this));\n }\n /** @inheritdoc */\n onceAdded() {\n this.parent.addUndoableEditor(this);\n this.div.focus();\n }\n /** @inheritdoc */\n remove() {\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_cleanDrawLayer).call(this);\n // this._reportTelemetry({\n // action: \"deleted\",\n // });\n super.remove();\n }\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_addToDrawLayer).call(this);\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilding it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n setParent(parent) {\n var _b, _c;\n let mustBeSelected = false;\n if (this.parent && !parent) {\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_cleanDrawLayer).call(this);\n }\n else if (parent) {\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_addToDrawLayer).call(this, parent);\n // If mustBeSelected is true it means that this editor was selected\n // when its parent has been destroyed, hence we must select it again.\n mustBeSelected =\n !this.parent &&\n (((_b = this.div) === null || _b === void 0 ? void 0 : _b.classList.contains(\"selectedEditor\")) ||\n ((_c = this.div) === null || _c === void 0 ? void 0 : _c.classList.contains(\"k-selected\")));\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n // We select it after the parent has been set.\n this.select();\n }\n }\n /** @inheritdoc */\n rotate(angle) {\n // We need to rotate the svgs because of the coordinates system.\n const { drawLayer } = this.parent;\n let box;\n if (__classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\")) {\n angle = (angle - this.rotation + 360) % 360;\n box = __classPrivateFieldGet(_a, _a, \"m\", _HighlightEditor_rotateBbox).call(_a, __classPrivateFieldGet(this, _HighlightEditor_highlightOutlines, \"f\").box, angle);\n }\n else {\n // An highlight annotation is always drawn horizontally.\n box = __classPrivateFieldGet(_a, _a, \"m\", _HighlightEditor_rotateBbox).call(_a, this, angle);\n }\n drawLayer.rotate(__classPrivateFieldGet(this, _HighlightEditor_id, \"f\"), angle);\n drawLayer.rotate(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), angle);\n drawLayer.updateBox(__classPrivateFieldGet(this, _HighlightEditor_id, \"f\"), box);\n drawLayer.updateBox(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), __classPrivateFieldGet(_a, _a, \"m\", _HighlightEditor_rotateBbox).call(_a, __classPrivateFieldGet(this, _HighlightEditor_focusOutlines, \"f\").box, angle));\n }\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (__classPrivateFieldGet(this, _HighlightEditor_text, \"f\")) {\n div.setAttribute(\"aria-label\", __classPrivateFieldGet(this, _HighlightEditor_text, \"f\"));\n div.setAttribute(\"role\", \"mark\");\n }\n if (__classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\")) {\n div.classList.add(\"free\");\n }\n else {\n this.div.addEventListener(\"keydown\", __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_keydown).bind(this), {\n signal: this._uiManager._signal,\n });\n }\n const highlightDiv = (__classPrivateFieldSet(this, _HighlightEditor_highlightDiv, document.createElement(\"div\"), \"f\"));\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"k-internal internal\";\n highlightDiv.style.clipPath = __classPrivateFieldGet(this, _HighlightEditor_clipPathId, \"f\");\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, __classPrivateFieldGet(this, _HighlightEditor_highlightDiv, \"f\"), [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n this.parent.drawLayer.addClass(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), \"hovered\");\n }\n pointerleave() {\n this.parent.drawLayer.removeClass(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), \"hovered\");\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0 /* left */:\n case 2 /* up */:\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_setCaret).call(this, /* start = */ true);\n break;\n case 1 /* right */:\n case 3 /* down */:\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_setCaret).call(this, /* start = */ false);\n break;\n default: break;\n }\n }\n /** @inheritdoc */\n select() {\n var _b, _c, _d;\n super.select();\n if (!__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\")) {\n return;\n }\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.drawLayer.removeClass(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), \"hovered\");\n (_c = this.parent) === null || _c === void 0 ? void 0 : _c.drawLayer.addClass(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), \"selected\");\n (_d = this.parent) === null || _d === void 0 ? void 0 : _d.drawLayer.addClass(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), \"k-selected\");\n }\n /** @inheritdoc */\n unselect() {\n var _b, _c;\n super.unselect();\n if (!__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\")) {\n return;\n }\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.drawLayer.removeClass(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), \"selected\");\n (_c = this.parent) === null || _c === void 0 ? void 0 : _c.drawLayer.removeClass(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), \"k-selected\");\n if (!__classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\")) {\n __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_setCaret).call(this, /* start = */ false);\n }\n }\n /** @inheritdoc */\n get _mustFixPosition() {\n return !__classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\");\n }\n /** @inheritdoc */\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(__classPrivateFieldGet(this, _HighlightEditor_id, \"f\"), visible);\n this.parent.drawLayer.show(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), visible);\n }\n }\n static startHighlighting(parent, isLTR, { target: textLayer, x, y }) {\n const { x: layerX, y: layerY, width: parentWidth, height: parentHeight, } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerDown = e => {\n // Avoid to have undesired clicks during the drawing.\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n ac.abort();\n __classPrivateFieldGet(this, _a, \"m\", _HighlightEditor_endHighlight).call(this, parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, { signal });\n window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n window.addEventListener(\"pointerdown\", pointerDown, {\n capture: true,\n passive: false,\n signal,\n });\n window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n textLayer.addEventListener(\"pointermove\", __classPrivateFieldGet(this, _a, \"m\", _HighlightEditor_highlightMove).bind(this, parent), { signal });\n this._freeHighlight = new FreeOutliner({ x, y }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, \n /* innerMargin = */ 0.001);\n ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } =\n parent.drawLayer.highlight(this._freeHighlight, this._defaultColor, this._defaultOpacity, \n /* isPathUpdatable = */ true));\n }\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n const { rect: [blX, blY, trX, trY], color, quadPoints, } = data;\n // @ts-expect-error TS()\n editor.color = Util.makeHexColor(...color);\n __classPrivateFieldSet(editor, _HighlightEditor_opacity, data.opacity, \"f\");\n const [pageWidth, pageHeight] = editor.pageDimensions;\n editor.width = (trX - blX) / pageWidth;\n editor.height = (trY - blY) / pageHeight;\n const boxes = (__classPrivateFieldSet(editor, _HighlightEditor_boxes, [], \"f\"));\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[4] - trX) / pageWidth,\n y: (trY - (1 - quadPoints[i + 5])) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 5] - quadPoints[i + 1]) / pageHeight,\n });\n }\n __classPrivateFieldGet(editor, _HighlightEditor_instances, \"m\", _HighlightEditor_createOutlines).call(editor);\n return editor;\n }\n /** @inheritdoc */\n serialize(isForCopying = false) {\n // It doesn't make sense to copy/paste a highlight annotation.\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n return {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: __classPrivateFieldGet(this, _HighlightEditor_opacity, \"f\"),\n thickness: __classPrivateFieldGet(this, _HighlightEditor_thickness, \"f\"),\n quadPoints: __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_serializeBoxes).call(this),\n outlines: __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_serializeOutlines).call(this, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_getRotation).call(this),\n structTreeParentId: this._structTreeParentId,\n };\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n // todo: this is necessary\n // saveDocument() has checks that test \"editor instanceof AnnotationEditor\", but they fail\n // because AnnotationEditor from \"pdfjs-dist/legacy/build/pdf.mjs\" is not exported\n // thus replace instances of editors with their serialized version\n toJSON() {\n const data = this.serialize();\n return data;\n }\n}\n_a = HighlightEditor, _HighlightEditor_anchorNode = new WeakMap(), _HighlightEditor_anchorOffset = new WeakMap(), _HighlightEditor_boxes = new WeakMap(), _HighlightEditor_clipPathId = new WeakMap(), _HighlightEditor_focusOutlines = new WeakMap(), _HighlightEditor_focusNode = new WeakMap(), _HighlightEditor_focusOffset = new WeakMap(), _HighlightEditor_highlightDiv = new WeakMap(), _HighlightEditor_highlightOutlines = new WeakMap(), _HighlightEditor_id = new WeakMap(), _HighlightEditor_isFreeHighlight = new WeakMap(), _HighlightEditor_lastPoint = new WeakMap(), _HighlightEditor_opacity = new WeakMap(), _HighlightEditor_outlineId = new WeakMap(), _HighlightEditor_text = new WeakMap(), _HighlightEditor_thickness = new WeakMap(), _HighlightEditor_methodOfCreation = new WeakMap(), _HighlightEditor_instances = new WeakSet(), _HighlightEditor_createOutlines = function _HighlightEditor_createOutlines() {\n const outliner = new Outliner(__classPrivateFieldGet(this, _HighlightEditor_boxes, \"f\"), /* borderWidth = */ 0.001);\n __classPrivateFieldSet(this, _HighlightEditor_highlightOutlines, outliner.getOutlines(), \"f\");\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n } = __classPrivateFieldGet(this, _HighlightEditor_highlightOutlines, \"f\").box);\n const outlinerForOutline = new Outliner(__classPrivateFieldGet(this, _HighlightEditor_boxes, \"f\"), \n /* borderWidth = */ 0.0025, \n /* innerMargin = */ 0.001, this._uiManager.direction === \"ltr\");\n __classPrivateFieldSet(this, _HighlightEditor_focusOutlines, outlinerForOutline.getOutlines(), \"f\");\n // The last point is in the pages coordinate system.\n const { lastPoint } = __classPrivateFieldGet(this, _HighlightEditor_focusOutlines, \"f\").box;\n __classPrivateFieldSet(this, _HighlightEditor_lastPoint, [\n (lastPoint[0] - this.x) / this.width,\n (lastPoint[1] - this.y) / this.height,\n ], \"f\");\n}, _HighlightEditor_createFreeOutlines = function _HighlightEditor_createFreeOutlines({ highlightOutlines, highlightId, clipPathId }) {\n __classPrivateFieldSet(this, _HighlightEditor_highlightOutlines, highlightOutlines, \"f\");\n const extraThickness = 1.5;\n __classPrivateFieldSet(this, _HighlightEditor_focusOutlines, highlightOutlines.getNewOutline(\n /* Slightly bigger than the highlight in order to have a little\n space between the highlight and the outline. */\n __classPrivateFieldGet(this, _HighlightEditor_thickness, \"f\") / 2 + extraThickness, \n /* innerMargin = */ 0.0025), \"f\");\n if (highlightId >= 0) {\n __classPrivateFieldSet(this, _HighlightEditor_id, highlightId, \"f\");\n __classPrivateFieldSet(this, _HighlightEditor_clipPathId, clipPathId, \"f\");\n // We need to redraw the highlight because we change the coordinates to be\n // in the box coordinate system.\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n __classPrivateFieldSet(this, _HighlightEditor_outlineId, this.parent.drawLayer.highlightOutline(__classPrivateFieldGet(this, _HighlightEditor_focusOutlines, \"f\")), \"f\");\n }\n else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(__classPrivateFieldGet(this, _HighlightEditor_id, \"f\"), highlightOutlines);\n this.parent.drawLayer.updateBox(__classPrivateFieldGet(this, _HighlightEditor_id, \"f\"), __classPrivateFieldGet(_a, _a, \"m\", _HighlightEditor_rotateBbox).call(_a, __classPrivateFieldGet(this, _HighlightEditor_highlightOutlines, \"f\").box, (angle - this.rotation + 360) % 360));\n this.parent.drawLayer.updateLine(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), __classPrivateFieldGet(this, _HighlightEditor_focusOutlines, \"f\"));\n this.parent.drawLayer.updateBox(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"), __classPrivateFieldGet(_a, _a, \"m\", _HighlightEditor_rotateBbox).call(_a, __classPrivateFieldGet(this, _HighlightEditor_focusOutlines, \"f\").box, angle));\n }\n const { x, y, width, height } = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90: {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = (width * pageHeight) / pageWidth;\n this.height = (height * pageWidth) / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270: {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = (width * pageHeight) / pageWidth;\n this.height = (height * pageWidth) / pageHeight;\n break;\n }\n default: break;\n }\n const { lastPoint } = __classPrivateFieldGet(this, _HighlightEditor_focusOutlines, \"f\").box;\n __classPrivateFieldSet(this, _HighlightEditor_lastPoint, [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height], \"f\");\n}, _HighlightEditor_updateColor = function _HighlightEditor_updateColor(color) {\n if (!color) {\n return;\n }\n const setColor = col => {\n var _b;\n this.color = col;\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.drawLayer.changeColor(__classPrivateFieldGet(this, _HighlightEditor_id, \"f\"), col);\n // this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n // this._reportTelemetry(\n // {\n // action: \"color_changed\",\n // color: this._uiManager.highlightColorNames.get(color),\n // },\n // /* mustWait = */ true\n // );\n}, _HighlightEditor_updateThickness = function _HighlightEditor_updateThickness(thickness) {\n if (!thickness) {\n return;\n }\n // const savedThickness = this.#thickness;\n // const setThickness = th => {\n // this.#thickness = th;\n // this.#changeThickness(th);\n // };\n // this.addCommands({\n // cmd: setThickness.bind(this, thickness),\n // undo: setThickness.bind(this, savedThickness),\n // post: this._uiManager.updateUI.bind(this._uiManager, this),\n // mustExec: true,\n // type: AnnotationEditorParamsType.INK_THICKNESS,\n // overwriteIfSameType: true,\n // keepUndo: true,\n // });\n // this._reportTelemetry(\n // { action: \"thickness_changed\", thickness },\n // /* mustWait = */ true\n // );\n}, _HighlightEditor_cleanDrawLayer = function _HighlightEditor_cleanDrawLayer() {\n if (__classPrivateFieldGet(this, _HighlightEditor_id, \"f\") === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(__classPrivateFieldGet(this, _HighlightEditor_id, \"f\"));\n __classPrivateFieldSet(this, _HighlightEditor_id, null, \"f\");\n this.parent.drawLayer.remove(__classPrivateFieldGet(this, _HighlightEditor_outlineId, \"f\"));\n __classPrivateFieldSet(this, _HighlightEditor_outlineId, null, \"f\");\n}, _HighlightEditor_addToDrawLayer = function _HighlightEditor_addToDrawLayer(parent = this.parent) {\n var _b, _c;\n if (__classPrivateFieldGet(this, _HighlightEditor_id, \"f\") !== null) {\n return;\n }\n (_b = this, _c = this, { id: ({ set value(_a) { __classPrivateFieldSet(_b, _HighlightEditor_id, _a, \"f\"); } }).value, clipPathId: ({ set value(_a) { __classPrivateFieldSet(_c, _HighlightEditor_clipPathId, _a, \"f\"); } }).value } =\n parent.drawLayer.highlight(__classPrivateFieldGet(this, _HighlightEditor_highlightOutlines, \"f\"), this.color, __classPrivateFieldGet(this, _HighlightEditor_opacity, \"f\")));\n __classPrivateFieldSet(this, _HighlightEditor_outlineId, parent.drawLayer.highlightOutline(__classPrivateFieldGet(this, _HighlightEditor_focusOutlines, \"f\")), \"f\");\n // // todo: manually set styles, so that SVG elements are properly displayed\n // if (parent.drawLayer.parent) {\n // Array.from(parent.drawLayer.parent.querySelectorAll(\".highlight\")).forEach(x => {\n // const element = x as any;\n // element.style[\"--blend-mode\"] = \"multiply\";\n // element.style.position = \"absolute\";\n // element.style[\"mix-blend-mode\"] = \"var(--blend-mode)\";\n // element.style.transform = \"none\";\n // });\n // }\n if (__classPrivateFieldGet(this, _HighlightEditor_highlightDiv, \"f\")) {\n __classPrivateFieldGet(this, _HighlightEditor_highlightDiv, \"f\").style.clipPath = __classPrivateFieldGet(this, _HighlightEditor_clipPathId, \"f\");\n }\n}, _HighlightEditor_rotateBbox = function _HighlightEditor_rotateBbox({ x, y, width, height }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width,\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height,\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width,\n };\n default: break;\n }\n return {\n x,\n y,\n width,\n height,\n };\n}, _HighlightEditor_keydown = function _HighlightEditor_keydown(event) {\n if (!event) {\n return;\n }\n // HighlightEditor._keyboardManager.exec(this, event);\n}, _HighlightEditor_setCaret = function _HighlightEditor_setCaret(start) {\n if (!__classPrivateFieldGet(this, _HighlightEditor_anchorNode, \"f\")) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(__classPrivateFieldGet(this, _HighlightEditor_anchorNode, \"f\"), __classPrivateFieldGet(this, _HighlightEditor_anchorOffset, \"f\"));\n }\n else {\n selection.setPosition(__classPrivateFieldGet(this, _HighlightEditor_focusNode, \"f\"), __classPrivateFieldGet(this, _HighlightEditor_focusOffset, \"f\"));\n }\n}, _HighlightEditor_getRotation = function _HighlightEditor_getRotation() {\n // Highlight annotations are always drawn horizontally but if\n // a free highlight annotation can be rotated.\n return __classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\") ? this.rotation : 0;\n}, _HighlightEditor_serializeBoxes = function _HighlightEditor_serializeBoxes() {\n if (__classPrivateFieldGet(this, _HighlightEditor_isFreeHighlight, \"f\")) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = __classPrivateFieldGet(this, _HighlightEditor_boxes, \"f\");\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const { x, y, width, height } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y - height) * pageHeight + pageY;\n // The specifications say that the rectangle should start from the bottom\n // left corner and go counter-clockwise.\n // But when opening the file in Adobe Acrobat it appears that this isn't\n // correct hence the 4th and 6th numbers are just swapped.\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n i += 8;\n }\n return quadPoints;\n}, _HighlightEditor_serializeOutlines = function _HighlightEditor_serializeOutlines(rect) {\n return __classPrivateFieldGet(this, _HighlightEditor_highlightOutlines, \"f\").serialize(rect, __classPrivateFieldGet(this, _HighlightEditor_instances, \"m\", _HighlightEditor_getRotation).call(this));\n}, _HighlightEditor_highlightMove = function _HighlightEditor_highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n // Redraw only if the point has been added.\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n }\n}, _HighlightEditor_endHighlight = function _HighlightEditor_endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\",\n });\n }\n else {\n parent.drawLayer.removeFreeHighlight(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n};\nHighlightEditor._defaultColor = null;\nHighlightEditor._defaultOpacity = 1;\nHighlightEditor._defaultThickness = 12;\nHighlightEditor._type = \"highlight\";\nHighlightEditor._editorType = AnnotationEditorType.HIGHLIGHT;\nHighlightEditor._freeHighlightId = -1;\nHighlightEditor._freeHighlight = null;\nHighlightEditor._freeHighlightClipId = \"\";\nexport { HighlightEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _AnnotationEditorLayer_instances, _a, _AnnotationEditorLayer_accessibilityManager, _AnnotationEditorLayer_allowClick, _AnnotationEditorLayer_annotationLayer, _AnnotationEditorLayer_clickAC, _AnnotationEditorLayer_editorFocusTimeoutId, _AnnotationEditorLayer_editors, _AnnotationEditorLayer_hadPointerDown, _AnnotationEditorLayer_isCleaningUp, _AnnotationEditorLayer_isDisabling, _AnnotationEditorLayer_textLayer, _AnnotationEditorLayer_textSelectionAC, _AnnotationEditorLayer_uiManager, _AnnotationEditorLayer_editorTypes, _AnnotationEditorLayer_textLayerPointerDown, _AnnotationEditorLayer_currentEditorType_get, _AnnotationEditorLayer_createNewEditor, _AnnotationEditorLayer_getCenterPoint, _AnnotationEditorLayer_cleanup;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n/** @typedef {import(\"../draw_layer.js\").DrawLayer} DrawLayer */\nimport { FreeTextEditor } from \"./editors/free-text-editor\";\nimport { AnnotationEditorType, FeatureTest, setLayerDimensions } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { AnnotationEditor } from \"./editors/annotation-editor\";\nimport { HighlightEditor } from \"./editors/highlight-editor\";\nclass AnnotationEditorLayer {\n /**\n * @param {AnnotationEditorLayerOptions} options\n */\n constructor({ uiManager, pageIndex, div, accessibilityManager, annotationLayer, drawLayer, textLayer, viewport\n // l10n\n }) {\n _AnnotationEditorLayer_instances.add(this);\n // todo: props\n this.drawLayer = null;\n this.pageIndex = 0;\n this.div = null;\n this.viewport = null;\n // todo: props\n _AnnotationEditorLayer_accessibilityManager.set(this, void 0);\n _AnnotationEditorLayer_allowClick.set(this, false);\n _AnnotationEditorLayer_annotationLayer.set(this, null);\n _AnnotationEditorLayer_clickAC.set(this, null);\n _AnnotationEditorLayer_editorFocusTimeoutId.set(this, null);\n _AnnotationEditorLayer_editors.set(this, new Map());\n _AnnotationEditorLayer_hadPointerDown.set(this, false);\n _AnnotationEditorLayer_isCleaningUp.set(this, false);\n _AnnotationEditorLayer_isDisabling.set(this, false);\n _AnnotationEditorLayer_textLayer.set(this, null);\n _AnnotationEditorLayer_textSelectionAC.set(this, null);\n _AnnotationEditorLayer_uiManager.set(this, null);\n const editorTypes = [...__classPrivateFieldGet(_a, _a, \"f\", _AnnotationEditorLayer_editorTypes).values()];\n if (!_a._initialized) {\n _a._initialized = true;\n for (const editorType of editorTypes) {\n // editorType.initialize(l10n, uiManager);\n editorType.initialize({}, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n __classPrivateFieldSet(this, _AnnotationEditorLayer_uiManager, uiManager, \"f\");\n this.pageIndex = pageIndex;\n this.div = div;\n __classPrivateFieldSet(this, _AnnotationEditorLayer_accessibilityManager, accessibilityManager, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorLayer_annotationLayer, annotationLayer, \"f\");\n this.viewport = viewport;\n __classPrivateFieldSet(this, _AnnotationEditorLayer_textLayer, textLayer, \"f\");\n this.drawLayer = drawLayer;\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").addLayer(this);\n if (!__classPrivateFieldGet(this, _AnnotationEditorLayer_annotationLayer, \"f\") || !__classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\")) {\n return;\n }\n }\n // todo: ported from AnnotationEditorLayerBuilder\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n show() {\n if (!this.div || this.isInvisible) {\n return;\n }\n this.div.hidden = false;\n }\n // todo: ported from AnnotationEditorLayerBuilder\n get isEmpty() {\n return __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").size === 0;\n }\n get isInvisible() {\n return (this.isEmpty && __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getMode() === AnnotationEditorType.NONE);\n }\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n */\n // updateToolbar(mode) {\n updateToolbar() {\n // this.#uiManager.updateToolbar(mode);\n }\n /**\n * The mode has changed: it must be updated.\n * @param {number} mode\n */\n updateMode(mode = __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getMode()) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_cleanup).call(this);\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n // We always want to have an ink editor ready to draw in.\n this.addInkEditorIfNeeded(false);\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const { classList } = this.div;\n for (const editorType of __classPrivateFieldGet(_a, _a, \"f\", _AnnotationEditorLayer_editorTypes).values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n var _b;\n return textLayer === ((_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\")) === null || _b === void 0 ? void 0 : _b.div);\n // return textLayer === this.#textLayer || textLayer === this.#textLayer?.div;\n }\n addInkEditorIfNeeded(isCommitting) {\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getMode() !== AnnotationEditorType.INK) {\n // We don't want to add an ink editor if we're not in ink mode!\n return;\n }\n if (!isCommitting) {\n // We're removing an editor but an empty one can already exist so in this\n // case we don't need to create a new one.\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const newEditor = this.createAndAddNewEditor({ offsetX: 0, offsetY: 0 }, \n /* isCentered = */ false);\n newEditor.setInBackground();\n }\n /**\n * Set the editing state.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").setEditingState(isEditing);\n }\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").addCommands(params);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n // this.div.classList.toggle(\"k-drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n // this.div.classList.toggle(\"disabled\", !enabled);\n this.div.classList.toggle(\"k-annotation-editor-layer-disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n var _b;\n // this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n (_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_annotationLayer, \"f\")) === null || _b === void 0 ? void 0 : _b.div.classList.toggle(\"k-annotation-editor-layer-disabled\", !enabled);\n }\n /**\n * Enable pointer events on the main div in order to enable\n * editor creation.\n */\n enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!__classPrivateFieldGet(this, _AnnotationEditorLayer_annotationLayer, \"f\")) {\n return;\n }\n const editables = __classPrivateFieldGet(this, _AnnotationEditorLayer_annotationLayer, \"f\").getEditableAnnotations();\n for (const editable of editables) {\n // The element must be hidden whatever its state is.\n editable.hide();\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n /**\n * Disable editor creation.\n */\n disable() {\n var _b;\n __classPrivateFieldSet(this, _AnnotationEditorLayer_isDisabling, true, \"f\");\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n }\n else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n (_b = this.getEditableAnnotation(editor.annotationElementId)) === null || _b === void 0 ? void 0 : _b.show();\n editor.remove();\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_annotationLayer, \"f\")) {\n // Show the annotations that were hidden in enable().\n const editables = __classPrivateFieldGet(this, _AnnotationEditorLayer_annotationLayer, \"f\").getEditableAnnotations();\n for (const editable of editables) {\n const { id } = editable.data;\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").addChangedExistingAnnotation(editor);\n editor.renderAnnotationElement(editable);\n editor.show(false);\n }\n editable.show();\n }\n }\n __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_cleanup).call(this);\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const { classList } = this.div;\n for (const editorType of __classPrivateFieldGet(_a, _a, \"f\", _AnnotationEditorLayer_editorTypes).values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n __classPrivateFieldSet(this, _AnnotationEditorLayer_isDisabling, false, \"f\");\n }\n getEditableAnnotation(id) {\n var _b;\n return ((_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_annotationLayer, \"f\")) === null || _b === void 0 ? void 0 : _b.getEditableAnnotation(id)) || null;\n }\n /**\n * Set the current editor.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n const currentActive = __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getActive();\n if (currentActive === editor) {\n return;\n }\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").setActiveEditor(editor);\n }\n enableTextSelection() {\n var _b;\n this.div.tabIndex = -1;\n if (((_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\")) === null || _b === void 0 ? void 0 : _b.div) && !__classPrivateFieldGet(this, _AnnotationEditorLayer_textSelectionAC, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationEditorLayer_textSelectionAC, new AbortController(), \"f\");\n const signal = __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").combinedSignal(__classPrivateFieldGet(this, _AnnotationEditorLayer_textSelectionAC, \"f\"));\n __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\").div.addEventListener(\"pointerdown\", __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_textLayerPointerDown).bind(this), { signal });\n // this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n var _b;\n this.div.tabIndex = 0;\n if (((_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\")) === null || _b === void 0 ? void 0 : _b.div) && __classPrivateFieldGet(this, _AnnotationEditorLayer_textSelectionAC, \"f\")) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_textSelectionAC, \"f\").abort();\n __classPrivateFieldSet(this, _AnnotationEditorLayer_textSelectionAC, null, \"f\");\n __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\").div.classList.remove(\"highlighting\");\n }\n }\n enableClick() {\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_clickAC, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorLayer_clickAC, new AbortController(), \"f\");\n const signal = __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").combinedSignal(__classPrivateFieldGet(this, _AnnotationEditorLayer_clickAC, \"f\"));\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal,\n });\n this.div.addEventListener(\"pointerup\", this.pointerup.bind(this), {\n signal,\n });\n }\n disableClick() {\n var _b;\n (_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_clickAC, \"f\")) === null || _b === void 0 ? void 0 : _b.abort();\n __classPrivateFieldSet(this, _AnnotationEditorLayer_clickAC, null, \"f\");\n }\n attach(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").set(editor.id, editor);\n const { annotationElementId } = editor;\n if (annotationElementId &&\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").isDeletedAnnotationElement(annotationElementId)) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n var _b;\n __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").delete(editor.id);\n (_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_accessibilityManager, \"f\")) === null || _b === void 0 ? void 0 : _b.removePointerInTextLayer(editor.contentDiv);\n if (!__classPrivateFieldGet(this, _AnnotationEditorLayer_isDisabling, \"f\") && editor.annotationElementId) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").addDeletedAnnotationElement(editor);\n }\n }\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n remove(editor) {\n this.detach(editor);\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!__classPrivateFieldGet(this, _AnnotationEditorLayer_isCleaningUp, \"f\")) {\n this.addInkEditorIfNeeded(/* isCommitting = */ false);\n }\n }\n /**\n * An editor can have a different parent, for example after having\n * being dragged and droped from a page to another.\n * @param {AnnotationEditor} editor\n */\n changeParent(editor) {\n var _b;\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n (_b = editor.parent) === null || _b === void 0 ? void 0 : _b.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n /**\n * Add a new editor in the current view.\n * @param {AnnotationEditor} editor\n */\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n // The editor will be correctly moved into the DOM (see fixAndSetPosition).\n editor.fixAndSetPosition();\n editor.onceAdded();\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").addToAnnotationStorage(editor);\n // editor._reportTelemetry(editor.telemetryInitialData);\n // todo: this differs from pdf.js\n // this.setActiveEditor(editor);\n }\n moveEditorInDOM(editor) {\n var _b;\n if (!editor.isAttachedToDOM) {\n return;\n }\n const { activeElement } = document;\n if (editor.div.contains(activeElement) && !__classPrivateFieldGet(this, _AnnotationEditorLayer_editorFocusTimeoutId, \"f\")) {\n // When the div is moved in the DOM the focus can move somewhere else,\n // so we want to be sure that the focus will stay on the editor but we\n // don't want to call any focus callbacks, hence we disable them and only\n // re-enable them when the editor has the focus.\n editor._focusEventsAllowed = false;\n __classPrivateFieldSet(this, _AnnotationEditorLayer_editorFocusTimeoutId, setTimeout(() => {\n __classPrivateFieldSet(this, _AnnotationEditorLayer_editorFocusTimeoutId, null, \"f\");\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, { once: true, signal: __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\")._signal });\n activeElement.focus();\n }\n else {\n editor._focusEventsAllowed = true;\n }\n }, 0), \"f\");\n }\n editor._structTreeParentId = (_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_accessibilityManager, \"f\")) === null || _b === void 0 ? void 0 : _b.moveElementInDOM(this.div, editor.div, editor.contentDiv, \n /* isRemovable = */ true);\n }\n /**\n * Add or rebuild depending if it has been removed or not.\n * @param {AnnotationEditor} editor\n */\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent || (editor.parent = this);\n editor.rebuild();\n editor.show();\n }\n else {\n this.add(editor);\n }\n }\n /**\n * Add a new editor and make this addition undoable.\n * @param {AnnotationEditor} editor\n */\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({ cmd, undo, mustExec: false });\n }\n /**\n * Get an id for an editor.\n * @returns {string}\n */\n getNextId() {\n return __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getId();\n }\n combinedSignal(abortController) {\n return __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").combinedSignal(abortController);\n }\n canCreateNewEmptyEditor() {\n var _b;\n return (_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"a\", _AnnotationEditorLayer_currentEditorType_get)) === null || _b === void 0 ? void 0 : _b.canCreateNewEmptyEditor();\n }\n /**\n * Paste some content into a new editor.\n * @param {number} mode\n * @param {Object} params\n */\n pasteEditor(mode, params) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").updateToolbar(mode);\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").updateMode(mode);\n const { offsetX, offsetY } = __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_getCenterPoint).call(this);\n const id = this.getNextId();\n const editor = __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_createNewEditor).call(this, Object.assign({ parent: this, id, x: offsetX, y: offsetY, uiManager: __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\"), isCentered: true }, params));\n if (editor) {\n this.add(editor);\n }\n }\n /**\n * Create a new editor\n * @param {Object} data\n * @returns {AnnotationEditor | null}\n */\n deserialize(data) {\n var _b, _c;\n return (((_c = __classPrivateFieldGet(_a, _a, \"f\", _AnnotationEditorLayer_editorTypes)\n .get((_b = data.annotationType) !== null && _b !== void 0 ? _b : data.annotationEditorType)) === null || _c === void 0 ? void 0 : _c.deserialize(data, this, __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\"))) || null);\n }\n /**\n * Create and add a new editor.\n * @param {PointerEvent} event\n * @param {boolean} isCentered\n * @param [Object] data\n * @returns {AnnotationEditor}\n */\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_createNewEditor).call(this, Object.assign({ parent: this, id, x: event.offsetX, y: event.offsetY, uiManager: __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\"), isCentered }, data));\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n /**\n * Create and add a new editor.\n */\n addNewEditor() {\n this.createAndAddNewEditor(__classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_getCenterPoint).call(this), /* isCentered = */ true);\n }\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").setSelected(editor);\n }\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").toggleSelected(editor);\n }\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").isSelected(editor);\n }\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").unselect(editor);\n }\n /**\n * Pointerup callback.\n * @param {PointerEvent} event\n */\n pointerup(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Don't create an editor on right click.\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!__classPrivateFieldGet(this, _AnnotationEditorLayer_hadPointerDown, \"f\")) {\n // It can happen when the user starts a drag inside a text editor\n // and then releases the mouse button outside of it. In such a case\n // we don't want to create a new editor, hence we check that a pointerdown\n // occurred on this div previously.\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorLayer_hadPointerDown, false, \"f\");\n if (!__classPrivateFieldGet(this, _AnnotationEditorLayer_allowClick, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationEditorLayer_allowClick, true, \"f\");\n return;\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getMode() === AnnotationEditorType.STAMP) {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, /* isCentered = */ false);\n }\n /**\n * Pointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_hadPointerDown, \"f\")) {\n // It's possible to have a second pointerdown event before a pointerup one\n // when the user puts a finger on a touchscreen and then add a second one\n // to start a pinch-to-zoom gesture.\n // That said, in case it's possible to have two pointerdown events with\n // a mouse, we don't want to create a new editor in such a case either.\n __classPrivateFieldSet(this, _AnnotationEditorLayer_hadPointerDown, false, \"f\");\n return;\n }\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Do nothing on right click.\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n __classPrivateFieldSet(this, _AnnotationEditorLayer_hadPointerDown, true, \"f\");\n const editor = __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getActive();\n __classPrivateFieldSet(this, _AnnotationEditorLayer_allowClick, !editor || editor.isEmpty(), \"f\");\n }\n /**\n *\n * @param {AnnotationEditor} editor\n * @param {number} x\n * @param {number} y\n * @returns\n */\n findNewParent(editor, x, y) {\n const layer = __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n /**\n * Destroy the main editor.\n */\n destroy() {\n var _b, _c;\n if (((_b = __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getActive()) === null || _b === void 0 ? void 0 : _b.parent) === this) {\n // We need to commit the current editor before destroying the layer.\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").commitOrRemove();\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").setActiveEditor(null);\n }\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_editorFocusTimeoutId, \"f\")) {\n clearTimeout(__classPrivateFieldGet(this, _AnnotationEditorLayer_editorFocusTimeoutId, \"f\"));\n __classPrivateFieldSet(this, _AnnotationEditorLayer_editorFocusTimeoutId, null, \"f\");\n }\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").values()) {\n (_c = __classPrivateFieldGet(this, _AnnotationEditorLayer_accessibilityManager, \"f\")) === null || _c === void 0 ? void 0 : _c.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").clear();\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").removeLayer(this);\n }\n /**\n * Render the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n render({ viewport }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n // We're maybe rendering a layer which was invisible when we started to edit\n // so we must set the different callbacks for it.\n this.updateMode();\n }\n // /**\n // * Update the main editor.\n // * @param {RenderEditorLayerOptions} parameters\n // */\n update({ viewport }) {\n // Editors have their dimensions/positions in percent so to avoid any\n // issues (see #15582), we must commit the current one before changing\n // the viewport.\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").commitOrRemove();\n __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"m\", _AnnotationEditorLayer_cleanup).call(this);\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n // setLayerDimensions(this.div, { rotation });\n // todo: fix parameters\n // setLayerDimensions(this.div, { rotation } as PageViewport);\n setLayerDimensions(this.div, viewport);\n if (oldRotation !== rotation) {\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(/* isCommitting = */ false);\n }\n /**\n * Get page dimensions.\n * @returns {Object} dimensions.\n */\n get pageDimensions() {\n const { pageWidth, pageHeight } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").viewParameters.realScale;\n }\n}\n_a = AnnotationEditorLayer, _AnnotationEditorLayer_accessibilityManager = new WeakMap(), _AnnotationEditorLayer_allowClick = new WeakMap(), _AnnotationEditorLayer_annotationLayer = new WeakMap(), _AnnotationEditorLayer_clickAC = new WeakMap(), _AnnotationEditorLayer_editorFocusTimeoutId = new WeakMap(), _AnnotationEditorLayer_editors = new WeakMap(), _AnnotationEditorLayer_hadPointerDown = new WeakMap(), _AnnotationEditorLayer_isCleaningUp = new WeakMap(), _AnnotationEditorLayer_isDisabling = new WeakMap(), _AnnotationEditorLayer_textLayer = new WeakMap(), _AnnotationEditorLayer_textSelectionAC = new WeakMap(), _AnnotationEditorLayer_uiManager = new WeakMap(), _AnnotationEditorLayer_instances = new WeakSet(), _AnnotationEditorLayer_textLayerPointerDown = function _AnnotationEditorLayer_textLayerPointerDown(event) {\n // Unselect all the editors in order to let the user select some text\n // without being annoyed by an editor toolbar.\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").unselectAll();\n const { target } = event;\n if (target === __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\").div ||\n (target.classList.contains(\"endOfContent\") && __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\").div.contains(target))) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Do nothing on right click.\n return;\n }\n __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").showAllEditors(\"highlight\", true);\n // if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n if (__classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getMode() === AnnotationEditorType.NONE) {\n // todo: do not continue with free highlight\n return;\n }\n // this.#textLayer.div.classList.add(\"free\");\n // todo: intentionally prevent free highlight\n // this.toggleDrawing();\n // HighlightEditor.startHighlighting(\n // this,\n // this.#uiManager.direction === \"ltr\",\n // event\n // );\n __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\").div.addEventListener(\"pointerup\", () => {\n __classPrivateFieldGet(this, _AnnotationEditorLayer_textLayer, \"f\").div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, { once: true, signal: __classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\")._signal });\n event.preventDefault();\n }\n}, _AnnotationEditorLayer_currentEditorType_get = function _AnnotationEditorLayer_currentEditorType_get() {\n return __classPrivateFieldGet(_a, _a, \"f\", _AnnotationEditorLayer_editorTypes).get(__classPrivateFieldGet(this, _AnnotationEditorLayer_uiManager, \"f\").getMode());\n}, _AnnotationEditorLayer_createNewEditor = function _AnnotationEditorLayer_createNewEditor(params) {\n const editorType = __classPrivateFieldGet(this, _AnnotationEditorLayer_instances, \"a\", _AnnotationEditorLayer_currentEditorType_get);\n // return editorType ? new editorType.prototype.constructor(params) : null;\n return editorType ? new editorType(params) : null;\n}, _AnnotationEditorLayer_getCenterPoint = function _AnnotationEditorLayer_getCenterPoint() {\n const { x, y, width, height } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0\n ? [centerX, centerY]\n : [centerY, centerX];\n return { offsetX, offsetY };\n}, _AnnotationEditorLayer_cleanup = function _AnnotationEditorLayer_cleanup() {\n // When we're cleaning up, some editors are removed but we don't want\n // to add a new one which will induce an addition in this.#editors, hence\n // an infinite loop.\n __classPrivateFieldSet(this, _AnnotationEditorLayer_isCleaningUp, true, \"f\");\n for (const editor of __classPrivateFieldGet(this, _AnnotationEditorLayer_editors, \"f\").values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n __classPrivateFieldSet(this, _AnnotationEditorLayer_isCleaningUp, false, \"f\");\n};\nAnnotationEditorLayer._initialized = false;\n_AnnotationEditorLayer_editorTypes = { value: new Map(\n // [FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [\n [FreeTextEditor, HighlightEditor].map(type => [\n type._editorType,\n type\n ])) };\nexport { AnnotationEditorLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _AnnotationEditorLayerBuilder_annotationLayer, _AnnotationEditorLayerBuilder_drawLayer, _AnnotationEditorLayerBuilder_onAppend, _AnnotationEditorLayerBuilder_textLayer, _AnnotationEditorLayerBuilder_uiManager;\nimport { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n/** @typedef {import(\"../src/display/api\").PDFPageProxy} PDFPageProxy */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/editor/tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"./interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/annotation_layer.js\").AnnotationLayer} AnnotationLayer */\nimport { AnnotationEditorLayer } from \"./annotation-editor-layer\";\n// import { GenericL10n } from \"web-null_l10n\";\n/**\n * @typedef {Object} AnnotationEditorLayerBuilderOptions\n * @property {AnnotationEditorUIManager} [uiManager]\n * @property {PDFPageProxy} pdfPage\n * @property {IL10n} [l10n]\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {AnnotationLayer} [annotationLayer]\n * @property {TextLayer} [textLayer]\n * @property {DrawLayer} [drawLayer]\n * @property {function} [onAppend]\n */\nclass AnnotationEditorLayerBuilder {\n /**\n * @param {AnnotationEditorLayerBuilderOptions} options\n */\n constructor(options) {\n // todo: props\n this.pdfPage = null;\n this.annotationEditorLayer = null;\n this._cancelled = null;\n this.div = null;\n this.accessibilityManager = null;\n // todo: props\n _AnnotationEditorLayerBuilder_annotationLayer.set(this, null);\n _AnnotationEditorLayerBuilder_drawLayer.set(this, null);\n _AnnotationEditorLayerBuilder_onAppend.set(this, null);\n _AnnotationEditorLayerBuilder_textLayer.set(this, null);\n _AnnotationEditorLayerBuilder_uiManager.set(this, null);\n this.pdfPage = options.pdfPage;\n this.accessibilityManager = options.accessibilityManager;\n // this.l10n = options.l10n;\n // if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // this.l10n ||= new GenericL10n();\n // }\n this.annotationEditorLayer = null;\n this.div = null;\n this._cancelled = false;\n __classPrivateFieldSet(this, _AnnotationEditorLayerBuilder_uiManager, options.uiManager, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorLayerBuilder_annotationLayer, options.annotationLayer || null, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorLayerBuilder_textLayer, options.textLayer || null, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorLayerBuilder_drawLayer, options.drawLayer || null, \"f\");\n __classPrivateFieldSet(this, _AnnotationEditorLayerBuilder_onAppend, options.onAppend || null, \"f\");\n }\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n */\n render(viewport_1) {\n return __awaiter(this, arguments, void 0, function* (viewport, intent = \"display\") {\n var _a;\n if (intent !== \"display\") {\n return;\n }\n if (this._cancelled) {\n return;\n }\n const clonedViewport = viewport.clone({ dontFlip: true });\n if (this.div) {\n this.annotationEditorLayer.update({ viewport: clonedViewport });\n this.show();\n return;\n }\n // Create an AnnotationEditor layer div\n const div = (this.div = document.createElement(\"div\"));\n div.className = \"k-annotation-editor-layer annotationEditorLayer\";\n div.hidden = true;\n div.dir = __classPrivateFieldGet(this, _AnnotationEditorLayerBuilder_uiManager, \"f\").direction;\n (_a = __classPrivateFieldGet(this, _AnnotationEditorLayerBuilder_onAppend, \"f\")) === null || _a === void 0 ? void 0 : _a.call(this, div);\n this.annotationEditorLayer = new AnnotationEditorLayer({\n uiManager: __classPrivateFieldGet(this, _AnnotationEditorLayerBuilder_uiManager, \"f\"),\n div,\n accessibilityManager: this.accessibilityManager,\n pageIndex: this.pdfPage.pageNumber - 1,\n // l10n: this.l10n,\n viewport: clonedViewport,\n annotationLayer: __classPrivateFieldGet(this, _AnnotationEditorLayerBuilder_annotationLayer, \"f\"),\n textLayer: __classPrivateFieldGet(this, _AnnotationEditorLayerBuilder_textLayer, \"f\"),\n drawLayer: __classPrivateFieldGet(this, _AnnotationEditorLayerBuilder_drawLayer, \"f\"),\n });\n const parameters = {\n viewport: clonedViewport,\n div,\n annotations: null,\n intent,\n };\n this.annotationEditorLayer.render(parameters);\n this.show();\n });\n }\n cancel() {\n this._cancelled = true;\n if (!this.div) {\n return;\n }\n this.annotationEditorLayer.destroy();\n }\n hide() {\n if (!this.div) {\n return;\n }\n this.div.hidden = true;\n }\n show() {\n if (!this.div || this.annotationEditorLayer.isInvisible) {\n return;\n }\n this.div.hidden = false;\n }\n}\n_AnnotationEditorLayerBuilder_annotationLayer = new WeakMap(), _AnnotationEditorLayerBuilder_drawLayer = new WeakMap(), _AnnotationEditorLayerBuilder_onAppend = new WeakMap(), _AnnotationEditorLayerBuilder_textLayer = new WeakMap(), _AnnotationEditorLayerBuilder_uiManager = new WeakMap();\nexport { AnnotationEditorLayerBuilder };\n","var _Page_instances, _Page_annotationMode, _Page_isEditing, _Page_layerProperties, _Page_previousRotation, _Page_renderingState, _Page_textLayerMode, _Page_viewportMap, _Page_layers, _Page_addLayer, _Page_setDimensions, _Page_dispatchLayerRendered, _Page_renderAnnotationLayer, _Page_renderAnnotationEditorLayer, _Page_renderDrawLayer, _Page_renderTextLayer, _Page_finishRenderTask;\nimport { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { AbortException, AnnotationMode, PixelsPerInch, setLayerDimensions,\n// shadow,\n// Util\n } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { TextAccessibilityManager } from \"../annotations/helpers/text-accessibility-manager\";\nimport { Component } from \"../common/component\";\nimport { deepExtend, createPromise, } from \"../common/core\";\nimport { TextLayerBuilder } from \"../text/text-layer-builder\";\nimport { DEFAULT_SCALE, RenderingStates, TextLayerMode } from \"../annotations/shared/ui_utils\";\nimport { AnnotationLayerBuilder } from \"../annotations/annotation-layer-builder\";\nimport { DrawLayerBuilder } from \"../annotations/draw-layer-builder\";\nimport { AnnotationEditorLayerBuilder } from \"../annotations/annotation-editor-layer-builder\";\nconst DEFAULT_ZOOM_LEVEL = 1.25;\nconst DEFAULT_LAYER_PROPERTIES = {\n annotationEditorUIManager: null,\n annotationStorage: null,\n downloadManager: null,\n enableScripting: false,\n fieldObjectsPromise: null,\n findController: null,\n hasJSActionsPromise: null,\n get linkService() {\n // return new SimpleLinkService();\n return null;\n },\n};\nconst LAYERS_ORDER = new Map([\n [\"canvasWrapper\", 0],\n [\"textLayer\", 1],\n [\"annotationLayer\", 2],\n [\"annotationEditorLayer\", 3],\n [\"xfaLayer\", 3],\n]);\nexport class Page extends Component {\n constructor(element, options) {\n super(element, options);\n _Page_instances.add(this);\n // todo: props\n this.eventBus = null;\n this.zoomLayer = null;\n this.div = null;\n this.viewport = null;\n this.id = 1;\n this._accessibilityManager = null;\n this._annotationCanvasMap = new Map();\n this.renderTask = null;\n this.pdfPageRotate = null;\n this.rotation = null;\n this.scale = null;\n this.pdfViewer = null;\n // todo: props\n // todo: props ported from pdf.js\n this.xfaLayer = null;\n _Page_annotationMode.set(this, AnnotationMode.ENABLE_FORMS);\n // #enableHWA = false;\n // #hasRestrictedScaling = false;\n // // @ts-expect-error(TS)\n _Page_isEditing.set(this, false);\n _Page_layerProperties.set(this, null);\n // #loadingId = null;\n _Page_previousRotation.set(this, null);\n // #renderError = null;\n _Page_renderingState.set(this, RenderingStates.INITIAL);\n _Page_textLayerMode.set(this, TextLayerMode.ENABLE);\n // #useThumbnailCanvas = {\n // directDrawing: true,\n // initialOptionalContent: true,\n // regularAnnotations: true,\n // };\n _Page_viewportMap.set(this, new WeakMap());\n _Page_layers.set(this, [null, null, null, null]);\n // textLayer: HTMLDivElement;\n this.textLayer = null;\n this.textLayerBuilder = null;\n this.textAccessibilityManager = null;\n this.annotationLayer = null;\n this.drawLayer = null;\n this.annotationEditorLayer = null;\n this.options = {};\n this.state = {};\n this.pdfPage = null;\n this.extendOptions(options);\n // todo: ported from pdf.js\n this.div = element;\n this.viewport = this.options.viewport;\n this.id = this.options.id || this.options.number || 1;\n __classPrivateFieldSet(this, _Page_layerProperties, options.layerProperties || DEFAULT_LAYER_PROPERTIES, \"f\");\n this.eventBus = options.eventBus;\n this.initScale();\n // todo: ported from pdf.js\n this.pdfViewer = options.pdfViewer;\n this.pdfPage = options.pdfPage;\n this.resetState();\n }\n destroy() {\n this.destroyTextLayer();\n }\n get isEditing() {\n return __classPrivateFieldGet(this, _Page_isEditing, \"f\");\n }\n get rawWidth() {\n var _a, _b;\n return (_b = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.rawDims) === null || _b === void 0 ? void 0 : _b.pageWidth;\n }\n get rawHeight() {\n var _a, _b;\n return (_b = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.rawDims) === null || _b === void 0 ? void 0 : _b.pageWidth;\n }\n setState(newState) {\n this.state = deepExtend(this.state || {}, newState);\n }\n resetState() {\n this.setState({});\n }\n initScale() {\n this.scale = this.options.zoomLevel || this.options.scale || DEFAULT_SCALE;\n }\n createPromise() {\n return createPromise();\n }\n getViewport(options = { scale: 1 }) {\n const viewport = this.pdfPage ? this.pdfPage.getViewport(options) : { width: 0, height: 0 };\n return viewport;\n }\n destroyTextLayer() {\n this.removeTextLayer();\n }\n removeTextLayer() {\n var _a, _b;\n if (this.textLayer && ((_a = this.textLayer.div) === null || _a === void 0 ? void 0 : _a.parentNode)) {\n (_b = this.textLayer.div) === null || _b === void 0 ? void 0 : _b.parentNode.removeChild(this.textLayer.div);\n }\n }\n getPrintContentAsync() {\n const canvas = this.canvasForPrint;\n const printContentLoadPromise = this.createPromise();\n const printContent = new Image();\n const viewportRawDimensions = this.viewport.rawDims;\n const pageWidth = viewportRawDimensions.pageWidth;\n const pageHeight = viewportRawDimensions.pageHeight;\n // const pageWidth = this.viewport.width;\n // const pageHeight = this.viewport.height;\n printContent.src = canvas.toDataURL();\n printContent.width = pageWidth;\n printContent.height = pageHeight;\n printContent.onload = () => {\n // @ts-expect-error TS(2339):\n printContentLoadPromise.resolve(printContent);\n };\n return printContentLoadPromise;\n }\n loadForPrintAsync({ zoomLevel = DEFAULT_ZOOM_LEVEL, force = false }) {\n const that = this;\n const pageLoadPromise = this.createPromise();\n const pageZoomLevel = this.pdfViewer.state.zoomLevel;\n if (this.pdfPage && pageZoomLevel === zoomLevel && !force) {\n // @ts-expect-error TS(2339): Property 'resolve' does not exist on type 'Promise... Remove this comment to see the full error message\n return pageLoadPromise.resolve(that);\n }\n else if (this.pdfPage && pageZoomLevel && (pageZoomLevel !== zoomLevel || force)) {\n this.renderForPrintAsync()\n .then(() => {\n this.setState({\n isPrintingInProgress: false\n });\n // @ts-expect-error TS(2339): Property 'resolve' does not exist on type 'Promise... Remove this comment to see the full error message\n pageLoadPromise.resolve(that);\n });\n return pageLoadPromise;\n }\n const pageIndex = Math.max(0, this.pdfPage._pageIndex);\n const pagePromise = this.pdfViewer.state.pdfDocument.getPage(pageIndex + 1);\n pagePromise.then(() => {\n this.renderForPrintAsync()\n .then(() => {\n this.setState({\n isPrintingInProgress: false\n });\n // @ts-expect-error TS(2339): Property 'resolve' does not exist on type 'Promise... Remove this comment to see the full error message\n pageLoadPromise.resolve(that);\n });\n });\n return pageLoadPromise;\n }\n renderForPrintAsync() {\n var _a, _b;\n const { canvasContext, canvas,\n // canvasWrapper,\n // viewport,\n // pageElement,\n // _styles\n } = this.pdfViewer.createPageElements({\n pdfPage: this.pdfPage,\n zoom: this.pdfViewer.options.zoomLevel || 1,\n });\n this.canvasForPrint = canvas;\n // canvasWrapper.appendChild(canvas);\n // pageElement.appendChild(canvasWrapper);\n this.setState({\n isPrintingInProgress: true\n });\n const printUnits = this.pdfViewer.options.printResolution / PixelsPerInch.PDF;\n const optionalContentConfigPromise = this.pdfViewer.state.pdfDocument.getOptionalContentConfig({\n intent: \"print\",\n });\n const renderContext = {\n canvasContext: canvasContext,\n transform: [printUnits, 0, 0, printUnits, 0, 0],\n // viewport: this.pdfPage.getViewport({ scale: 1, rotation: size.rotation }),\n viewport: this.pdfPage.getViewport({ scale: 1, rotation: this.viewport.rotation }),\n intent: \"print\",\n annotationMode: AnnotationMode.ENABLE_STORAGE,\n optionalContentConfigPromise,\n printAnnotationStorage: (_b = (_a = this.pdfViewer) === null || _a === void 0 ? void 0 : _a.annotationStorage) === null || _b === void 0 ? void 0 : _b.print\n };\n const renderTask = this.pdfPage.render(renderContext);\n const resultPromise = renderTask.promise;\n return resultPromise;\n }\n isBlank() {\n return this.element && this.element.getAttribute(\"data-blank\");\n }\n setBlank(isBlank) {\n if (!this.element) {\n return;\n }\n if (isBlank) {\n this.element.setAttribute(\"data-blank\", true.toString());\n }\n else {\n this.element.removeAttribute(\"data-blank\");\n }\n }\n get renderingState() {\n return __classPrivateFieldGet(this, _Page_renderingState, \"f\");\n }\n setPdfPage(pdfPage) {\n // if (\n // (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n // this._isStandalone &&\n // (this.pageColors?.foreground === \"CanvasText\" ||\n // this.pageColors?.background === \"Canvas\")\n // ) {\n // this._container?.style.setProperty(\n // \"--hcm-highlight-filter\",\n // pdfPage.filterFactory.addHighlightHCMFilter(\n // \"highlight\",\n // \"CanvasText\",\n // \"Canvas\",\n // \"HighlightText\",\n // \"Highlight\"\n // )\n // );\n // this._container?.style.setProperty(\n // \"--hcm-highlight-selected-filter\",\n // pdfPage.filterFactory.addHighlightHCMFilter(\n // \"highlight_selected\",\n // \"CanvasText\",\n // \"Canvas\",\n // \"HighlightText\",\n // \"Highlight\"\n // )\n // );\n // }\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport({\n scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: totalRotation,\n });\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_setDimensions).call(this);\n this.reset();\n }\n hasEditableAnnotations() {\n var _a;\n return !!((_a = this.annotationLayer) === null || _a === void 0 ? void 0 : _a.hasEditableAnnotations());\n }\n // /**\n // * The structure tree is currently only supported when the text layer is\n // * enabled and a canvas is used for rendering.\n // *\n // * The structure tree must be generated after the text layer for the\n // * aria-owns to work.\n // */\n // async #renderStructTreeLayer() {\n // if (!this.textLayer) {\n // return;\n // }\n // this.structTreeLayer ||= new StructTreeLayerBuilder();\n // const tree = await (!this.structTreeLayer.renderingDone\n // ? this.pdfPage.getStructTree()\n // : null);\n // const treeDom = this.structTreeLayer?.render(tree);\n // if (treeDom) {\n // // Pause translation when inserting the structTree in the DOM.\n // this.l10n.pause();\n // this.canvas?.append(treeDom);\n // this.l10n.resume();\n // }\n // this.structTreeLayer?.show();\n // }\n // async #buildXfaTextContentItems(textDivs) {\n // const text = await this.pdfPage.getTextContent();\n // const items = [];\n // for (const item of text.items) {\n // items.push(item.str);\n // }\n // this._textHighlighter.setTextMapping(textDivs, items);\n // this._textHighlighter.enable();\n // }\n _resetZoomLayer(removeFromDOM = false) {\n if (!this.zoomLayer) {\n return;\n }\n const zoomLayerCanvas = this.zoomLayer.firstChild;\n __classPrivateFieldGet(this, _Page_viewportMap, \"f\").delete(zoomLayerCanvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n zoomLayerCanvas.width = 0;\n zoomLayerCanvas.height = 0;\n if (removeFromDOM) {\n // Note: `ChildNode.remove` doesn't throw if the parent node is undefined.\n this.zoomLayer.remove();\n }\n this.zoomLayer = null;\n }\n reset({ keepZoomLayer = false, keepAnnotationLayer = false, keepAnnotationEditorLayer = false, keepXfaLayer = false, keepTextLayer = false, } = {}) {\n // this.cancelRendering({\n // keepAnnotationLayer,\n // keepAnnotationEditorLayer,\n // keepXfaLayer,\n // keepTextLayer,\n // });\n // this.renderingState = RenderingStates.INITIAL;\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const div = this.div;\n if (!div) {\n return;\n }\n const childNodes = div.childNodes, zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null, annotationLayerNode = (keepAnnotationLayer && ((_a = this.annotationLayer) === null || _a === void 0 ? void 0 : _a.div)) || null, annotationEditorLayerNode = (keepAnnotationEditorLayer && ((_b = this.annotationEditorLayer) === null || _b === void 0 ? void 0 : _b.div)) || null, xfaLayerNode = (keepXfaLayer && ((_c = this.xfaLayer) === null || _c === void 0 ? void 0 : _c.div)) || null, textLayerNode = (keepTextLayer && ((_d = this.textLayer) === null || _d === void 0 ? void 0 : _d.div)) || null;\n for (let i = childNodes.length - 1; i >= 0; i--) {\n const node = childNodes[i];\n switch (node) {\n case zoomLayerNode:\n case annotationLayerNode:\n case annotationEditorLayerNode:\n case xfaLayerNode:\n case textLayerNode:\n continue;\n default: break;\n }\n node.remove();\n const layerIndex = __classPrivateFieldGet(this, _Page_layers, \"f\").indexOf(node);\n if (layerIndex >= 0) {\n __classPrivateFieldGet(this, _Page_layers, \"f\")[layerIndex] = null;\n }\n }\n div.removeAttribute(\"data-loaded\");\n if (annotationLayerNode) {\n // Hide the annotation layer until all elements are resized\n // so they are not displayed on the already resized page.\n (_e = this.annotationLayer) === null || _e === void 0 ? void 0 : _e.hide();\n }\n if (annotationEditorLayerNode) {\n (_f = this.annotationEditorLayer) === null || _f === void 0 ? void 0 : _f.hide();\n }\n if (xfaLayerNode) {\n // Hide the XFA layer until all elements are resized\n // so they are not displayed on the already resized page.\n (_g = this.xfaLayer) === null || _g === void 0 ? void 0 : _g.hide();\n }\n if (textLayerNode) {\n (_h = this.textLayer) === null || _h === void 0 ? void 0 : _h.hide();\n }\n // this.structTreeLayer?.hide();\n if (!zoomLayerNode) {\n if (this.canvas) {\n __classPrivateFieldGet(this, _Page_viewportMap, \"f\").delete(this.canvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n this._resetZoomLayer();\n }\n }\n toggleEditingMode(isEditing) {\n if (!this.hasEditableAnnotations()) {\n return;\n }\n __classPrivateFieldSet(this, _Page_isEditing, isEditing, \"f\");\n this.reset({\n keepZoomLayer: true,\n keepAnnotationLayer: true,\n keepAnnotationEditorLayer: true,\n keepXfaLayer: true,\n keepTextLayer: true,\n });\n }\n draw() {\n return __awaiter(this, void 0, void 0, function* () {\n // if (this.renderingState !== RenderingStates.INITIAL) {\n // console.error(\"Must be in new state before drawing\");\n // this.reset(); // Ensure that we reset all state to prevent issues.\n // }\n // const { div, l10n, pageColors, pdfPage: pdfPage, viewport } = this;\n // if (!pdfPage) {\n // this.renderingState = RenderingStates.FINISHED;\n // throw new Error(\"pdfPage is not loaded\");\n // }\n // this.renderingState = RenderingStates.RUNNING;\n const { canvasContext, canvas, canvasWrapper, viewport, pageElement, styles } = this.pdfViewer.createPageElements({\n pdfPage: this.pdfPage,\n zoom: this.pdfViewer.options.zoomLevel || 1,\n });\n if (this.isBlank()) {\n this.element.replaceWith(pageElement);\n this.element = this.div = pageElement;\n this.canvas = canvas;\n }\n else {\n this.element = this.div = this.element || this.div || pageElement;\n this.canvas = this.canvas || canvas;\n }\n this.options.styles = styles;\n // Wrap the canvas so that if it has a CSS transform for high DPI the\n // overflow will be hidden in Firefox.\n // const canvasWrapper = document.createElement(\"div\");\n // canvasWrapper.classList.add(\"canvasWrapper\");\n canvasWrapper.appendChild(canvas);\n this.element.appendChild(canvasWrapper);\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_addLayer).call(this, canvasWrapper, \"canvasWrapper\");\n const { div, \n // l10n,\n // pageColors,\n pdfPage,\n // viewport\n } = this;\n if (!this.textLayer && __classPrivateFieldGet(this, _Page_textLayerMode, \"f\") !== TextLayerMode.DISABLE && !pdfPage.isPureXfa) {\n this._accessibilityManager || (this._accessibilityManager = new TextAccessibilityManager());\n this.textLayer = new TextLayerBuilder({\n // todo: not part of pdf.js\n styles: this.options.styles,\n pdfPage,\n // highlighter: this._textHighlighter,\n accessibilityManager: this._accessibilityManager,\n // enablePermissions: this.#textLayerMode === TextLayerMode.ENABLE_PERMISSIONS,\n onAppend: textLayerDiv => {\n // Pause translation when inserting the textLayer in the DOM.\n // this.l10n.pause();\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_addLayer).call(this, textLayerDiv, \"textLayer\");\n // this.l10n.resume();\n },\n });\n }\n if (!this.annotationLayer && __classPrivateFieldGet(this, _Page_annotationMode, \"f\") !== AnnotationMode.DISABLE) {\n const { annotationStorage, annotationEditorUIManager, \n // downloadManager,\n // enableScripting,\n // fieldObjectsPromise,\n // hasJSActionsPromise,\n linkService, } = __classPrivateFieldGet(this, _Page_layerProperties, \"f\");\n this._annotationCanvasMap || (this._annotationCanvasMap = new Map());\n this.annotationLayer = new AnnotationLayerBuilder({\n pdfPage,\n eventBus: this.eventBus || this.pdfViewer.eventBus,\n annotationStorage,\n // imageResourcesPath: this.imageResourcesPath,\n // renderForms: this.#annotationMode === AnnotationMode.ENABLE_FORMS,\n linkService,\n // downloadManager,\n // enableScripting,\n // hasJSActionsPromise,\n // fieldObjectsPromise,\n annotationCanvasMap: this._annotationCanvasMap,\n accessibilityManager: this._accessibilityManager,\n annotationEditorUIManager,\n onAppend: annotationLayerDiv => {\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_addLayer).call(this, annotationLayerDiv, \"annotationLayer\");\n },\n });\n }\n // const renderContinueCallback = cont => {\n // showCanvas?.(false);\n // if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) {\n // this.renderingState = RenderingStates.PAUSED;\n // this.resume = () => {\n // this.renderingState = RenderingStates.RUNNING;\n // cont();\n // };\n // return;\n // }\n // cont();\n // };\n // const { width, height } = viewport;\n // const canvas = document.createElement(\"canvas\");\n // canvas.setAttribute(\"role\", \"presentation\");\n // // Keep the canvas hidden until the first draw callback, or until drawing\n // // is complete when `!this.renderingQueue`, to prevent black flickering.\n // canvas.hidden = true;\n // const hasHCM = !!(pageColors?.background && pageColors?.foreground);\n // let showCanvas = isLastShow => {\n // // In HCM, a final filter is applied on the canvas which means that\n // // before it's applied we've normal colors. Consequently, to avoid to have\n // // a final flash we just display it once all the drawing is done.\n // if (!hasHCM || isLastShow) {\n // canvas.hidden = false;\n // showCanvas = null; // Only invoke the function once.\n // }\n // };\n // canvasWrapper.append(canvas);\n // this.canvas = canvas;\n // const ctx = canvas.getContext(\"2d\", {\n // alpha: false,\n // willReadFrequently: !this.#enableHWA,\n // });\n // const ctx = canvas.getContext(\"2d\");\n // const outputScale = (this.outputScale = new OutputScale());\n // if (\n // (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n // this.maxCanvasPixels === 0\n // ) {\n // const invScale = 1 / this.scale;\n // // Use a scale that makes the canvas have the originally intended size\n // // of the page.\n // outputScale.sx *= invScale;\n // outputScale.sy *= invScale;\n // this.#hasRestrictedScaling = true;\n // } else if (this.maxCanvasPixels > 0) {\n // const pixelsInViewport = width * height;\n // const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);\n // if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n // outputScale.sx = maxScale;\n // outputScale.sy = maxScale;\n // this.#hasRestrictedScaling = true;\n // } else {\n // this.#hasRestrictedScaling = false;\n // }\n // }\n // const sfx = approximateFraction(outputScale.sx);\n // const sfy = approximateFraction(outputScale.sy);\n // canvas.width = floorToDivide(width * outputScale.sx, sfx[0]);\n // canvas.height = floorToDivide(height * outputScale.sy, sfy[0]);\n // const { style } = canvas;\n // style.width = floorToDivide(width, sfx[1]) + \"px\";\n // style.height = floorToDivide(height, sfy[1]) + \"px\";\n // Add the viewport so it's known what it was originally drawn with.\n __classPrivateFieldGet(this, _Page_viewportMap, \"f\").set(canvas, viewport);\n // // Rendering area\n // const transform = outputScale.scaled\n // ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\n // : null;\n const renderContext = {\n canvasContext: canvasContext,\n // transform,\n viewport,\n annotationMode: __classPrivateFieldGet(this, _Page_annotationMode, \"f\"),\n // optionalContentConfigPromise: this._optionalContentConfigPromise,\n annotationCanvasMap: this._annotationCanvasMap,\n // pageColors,\n isEditing: __classPrivateFieldGet(this, _Page_isEditing, \"f\"),\n };\n // pdfPage.render(renderContext)\n const renderTask = (this.renderTask = pdfPage.render(renderContext));\n // renderTask.onContinue = renderContinueCallback;\n const resultPromise = renderTask.promise.then(() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n // showCanvas?.(true);\n yield __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_finishRenderTask).call(this, renderTask);\n // todo: awaiting this breaks text nodes positioning after zoom\n // if \"includeMarkedContent\": true is set in TextLayerBuilder\n yield __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_renderTextLayer).call(this);\n // this.#renderTextLayer();\n if (this.annotationLayer) {\n yield __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_renderAnnotationLayer).call(this);\n }\n const { annotationEditorUIManager } = __classPrivateFieldGet(this, _Page_layerProperties, \"f\");\n if (!annotationEditorUIManager) {\n return;\n }\n this.drawLayer || (this.drawLayer = new DrawLayerBuilder({\n pageIndex: this.id,\n }));\n yield __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_renderDrawLayer).call(this);\n this.drawLayer.setParent(canvasWrapper);\n if (!this.annotationEditorLayer) {\n this.annotationEditorLayer = new AnnotationEditorLayerBuilder({\n uiManager: annotationEditorUIManager,\n pdfPage,\n // l10n,\n accessibilityManager: this._accessibilityManager,\n annotationLayer: (_a = this.annotationLayer) === null || _a === void 0 ? void 0 : _a.annotationLayer,\n textLayer: this.textLayer,\n drawLayer: this.drawLayer.getDrawLayer(),\n onAppend: annotationEditorLayerDiv => {\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_addLayer).call(this, annotationEditorLayerDiv, \"annotationEditorLayer\");\n },\n });\n }\n // todo: this is not awaited in pdf.js\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_renderAnnotationEditorLayer).call(this);\n // await this.#renderAnnotationEditorLayer();\n }), error => {\n // When zooming with a `drawingDelay` set, avoid temporarily showing\n // a black canvas if rendering was cancelled before the `onContinue`-\n // callback had been invoked at least once.\n // if (!(error instanceof RenderingCancelledException)) {\n // showCanvas?.(true);\n // }\n // return this.#finishRenderTask(renderTask, error);\n if (!error) {\n return;\n }\n });\n if (pdfPage.isPureXfa) {\n // if (!this.xfaLayer) {\n // const { annotationStorage, linkService } = this.#layerProperties;\n // this.xfaLayer = new XfaLayerBuilder({\n // pdfPage,\n // annotationStorage,\n // linkService,\n // });\n // }\n // this.#renderXfaLayer();\n }\n div.setAttribute(\"data-loaded\", true);\n this.eventBus.dispatch(\"pagerender\", {\n source: this,\n pageNumber: this.id,\n });\n return resultPromise;\n });\n }\n}\n_Page_annotationMode = new WeakMap(), _Page_isEditing = new WeakMap(), _Page_layerProperties = new WeakMap(), _Page_previousRotation = new WeakMap(), _Page_renderingState = new WeakMap(), _Page_textLayerMode = new WeakMap(), _Page_viewportMap = new WeakMap(), _Page_layers = new WeakMap(), _Page_instances = new WeakSet(), _Page_addLayer = function _Page_addLayer(div, name) {\n const pos = LAYERS_ORDER.get(name);\n const oldDiv = __classPrivateFieldGet(this, _Page_layers, \"f\")[pos];\n __classPrivateFieldGet(this, _Page_layers, \"f\")[pos] = div;\n if (oldDiv) {\n oldDiv.replaceWith(div);\n return;\n }\n for (let i = pos - 1; i >= 0; i--) {\n const layer = __classPrivateFieldGet(this, _Page_layers, \"f\")[i];\n if (layer) {\n layer.after(div);\n return;\n }\n }\n this.div.prepend(div);\n}, _Page_setDimensions = function _Page_setDimensions() {\n const { viewport } = this;\n if (this.pdfPage) {\n if (__classPrivateFieldGet(this, _Page_previousRotation, \"f\") === viewport.rotation) {\n return;\n }\n __classPrivateFieldSet(this, _Page_previousRotation, viewport.rotation, \"f\");\n }\n if (!this.div || !viewport) {\n return;\n }\n setLayerDimensions(this.div, viewport, \n /* mustFlip = */ true, \n /* mustRotate = */ false);\n}, _Page_dispatchLayerRendered = function _Page_dispatchLayerRendered(name, error) {\n this.eventBus.dispatch(name, {\n source: this,\n pageNumber: this.id,\n error,\n });\n}, _Page_renderAnnotationLayer = function _Page_renderAnnotationLayer() {\n return __awaiter(this, void 0, void 0, function* () {\n let error = null;\n try {\n yield this.annotationLayer.render(this.viewport, \"display\");\n }\n catch (ex) {\n console.error(`#renderAnnotationLayer: \"${ex}\".`);\n error = ex;\n }\n finally {\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_dispatchLayerRendered).call(this, \"annotationlayerrendered\", error);\n }\n });\n}, _Page_renderAnnotationEditorLayer = function _Page_renderAnnotationEditorLayer() {\n return __awaiter(this, void 0, void 0, function* () {\n let error = null;\n try {\n // await this.annotationEditorLayer.render(this.viewport, \"display\");\n yield this.annotationEditorLayer.render(this.viewport);\n }\n catch (ex) {\n // console.error(`#renderAnnotationEditorLayer: \"${ex}\".`);\n error = ex;\n }\n finally {\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_dispatchLayerRendered).call(this, \"annotationeditorlayerrendered\", error);\n }\n });\n}, _Page_renderDrawLayer = function _Page_renderDrawLayer() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.drawLayer.render(\"display\");\n }\n catch (ex) {\n // console.error(`#renderDrawLayer: \"${ex}\".`);\n }\n });\n}, _Page_renderTextLayer = function _Page_renderTextLayer() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.textLayer) {\n return;\n }\n let error = null;\n try {\n yield this.textLayer.render(this.viewport);\n }\n catch (ex) {\n if (ex instanceof AbortException) {\n return;\n }\n // console.error(`#renderTextLayer: \"${ex}\".`);\n error = ex;\n }\n __classPrivateFieldGet(this, _Page_instances, \"m\", _Page_dispatchLayerRendered).call(this, \"textlayerrendered\", error);\n // this.#renderStructTreeLayer();\n });\n}, _Page_finishRenderTask = function _Page_finishRenderTask(renderTask) {\n return __awaiter(this, void 0, void 0, function* () {\n // The renderTask may have been replaced by a new one, so only remove\n // the reference to the renderTask if it matches the one that is\n // triggering this callback.\n if (renderTask === this.renderTask) {\n this.renderTask = null;\n }\n // if (error instanceof RenderingCancelledException) {\n // this.#renderError = null;\n // return;\n // }\n // this.#renderError = error;\n // this.renderingState = RenderingStates.FINISHED;\n this._resetZoomLayer(/* removeFromDOM = */ true);\n // // Ensure that the thumbnails won't become partially (or fully) blank,\n // // for documents that contain interactive form elements.\n // this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots;\n this.eventBus.dispatch(\"pagerendered\", {\n source: this,\n pageNumber: this.id,\n cssTransform: false,\n timestamp: performance.now(),\n // error: this.#renderError,\n error: \"page render error\",\n });\n // if (error) {\n // throw error;\n // }\n });\n};\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n // todo: props\n constructor(seed) {\n // todo: props\n this.h1 = null;\n this.h2 = null;\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n }\n else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n }\n else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n }\n else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0, k2 = 0;\n let h1 = this.h1, h2 = this.h2;\n const C1 = 0xcc9e2d51, C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW, C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n }\n else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n }\n else {\n h2 ^= k1;\n }\n break;\n default: break;\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1, h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n return ((h1 >>> 0).toString(16).padStart(8, \"0\") +\n (h2 >>> 0).toString(16).padStart(8, \"0\"));\n }\n}\nexport { MurmurHash3_64 };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _AnnotationStorage_instances, _AnnotationStorage_modified, _AnnotationStorage_modifiedIds, _AnnotationStorage_storage, _AnnotationStorage_setModified, _PrintAnnotationStorage_serializable;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { objectFromMap } from \"../shared/utils\";\nimport { AnnotationEditor } from \"../../annotations/editors/annotation-editor\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3\";\nimport { shadow } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined,\n});\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n constructor() {\n _AnnotationStorage_instances.add(this);\n // todo: props\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n // todo: props\n _AnnotationStorage_modified.set(this, false);\n _AnnotationStorage_modifiedIds.set(this, null);\n _AnnotationStorage_storage.set(this, new Map());\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n /**\n * Get the value for a given key if it exists, or return the default value.\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n /**\n * Get the value for a given key.\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").get(key);\n }\n /**\n * Remove a value from the storage.\n * @param {string} key\n */\n remove(key) {\n __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").delete(key);\n if (__classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n /**\n * Set the value for a given key\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n }\n else {\n modified = true;\n __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").set(key, value);\n }\n if (modified) {\n __classPrivateFieldGet(this, _AnnotationStorage_instances, \"m\", _AnnotationStorage_setModified).call(this);\n }\n if (value instanceof AnnotationEditor &&\n typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n /**\n * Check if the storage contains the given key.\n * @param {string} key\n * @returns {boolean}\n */\n has(key) {\n return __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").has(key);\n }\n /**\n * @returns {Object | null}\n */\n getAll() {\n return __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").size > 0 ? objectFromMap(__classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\")) : null;\n }\n /**\n * @param {Object} obj\n */\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").size;\n }\n resetModified() {\n if (__classPrivateFieldGet(this, _AnnotationStorage_modified, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationStorage_modified, false, \"f\");\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n /**\n * @returns {PrintAnnotationStorage}\n */\n get print() {\n return new PrintAnnotationStorage(this);\n }\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n if (__classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(), hash = new MurmurHash3_64(null), transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\")) {\n const serialized = val instanceof AnnotationEditor\n ? val.serialize(/* isForCopying = */ false, context)\n : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap || (hasBitmap = !!serialized.bitmap);\n }\n }\n if (hasBitmap) {\n // We must transfer the bitmap data separately, since it can be changed\n // during serialization with SVG images.\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0\n ? { map, hash: hash.hexdigest(), transfer }\n : SerializableEmpty;\n }\n get editorStats() {\n var _a;\n let stats = null;\n const typeToEditor = new Map();\n for (const value of __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const { type } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats || (stats = Object.create(null));\n const map = (stats[type] || (stats[type] = new Map()));\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = (_a = counters.get(val)) !== null && _a !== void 0 ? _a : 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n __classPrivateFieldSet(this, _AnnotationStorage_modifiedIds, null, \"f\");\n }\n /**\n * @returns {{ids: Set, hash: string}}\n */\n get modifiedIds() {\n if (__classPrivateFieldGet(this, _AnnotationStorage_modifiedIds, \"f\")) {\n return __classPrivateFieldGet(this, _AnnotationStorage_modifiedIds, \"f\");\n }\n const ids = [];\n for (const value of __classPrivateFieldGet(this, _AnnotationStorage_storage, \"f\").values()) {\n if (!(value instanceof AnnotationEditor) ||\n !value.annotationElementId ||\n !(value.serialize())) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return (__classPrivateFieldSet(this, _AnnotationStorage_modifiedIds, {\n ids: new Set(ids),\n hash: ids.join(\",\"),\n }, \"f\"));\n }\n}\n_AnnotationStorage_modified = new WeakMap(), _AnnotationStorage_modifiedIds = new WeakMap(), _AnnotationStorage_storage = new WeakMap(), _AnnotationStorage_instances = new WeakSet(), _AnnotationStorage_setModified = function _AnnotationStorage_setModified() {\n if (!__classPrivateFieldGet(this, _AnnotationStorage_modified, \"f\")) {\n __classPrivateFieldSet(this, _AnnotationStorage_modified, true, \"f\");\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n};\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n constructor(parent) {\n super();\n _PrintAnnotationStorage_serializable.set(this, void 0);\n const { map, hash, transfer } = parent.serializable;\n // Create a *copy* of the data, since Objects are passed by reference in JS.\n const clone = structuredClone(map, transfer ? { transfer } : null);\n __classPrivateFieldSet(this, _PrintAnnotationStorage_serializable, { map: clone, hash, transfer }, \"f\");\n }\n /**\n * @returns {PrintAnnotationStorage}\n */\n // eslint-disable-next-line getter-return\n get print() {\n // unreachable(\"Should not call PrintAnnotationStorage.print\");\n return null;\n }\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return __classPrivateFieldGet(this, _PrintAnnotationStorage_serializable, \"f\");\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\",\n });\n }\n}\n_PrintAnnotationStorage_serializable = new WeakMap();\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar _a, _PDFLinkService_isValidExplicitDest;\nimport { __awaiter, __classPrivateFieldGet } from \"tslib\";\nimport { parseQueryString } from \"../annotations/shared/ui_utils\";\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n/**\n * @typedef {Object} PDFLinkServiceOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\n * for external links. Must use one of the values from {LinkTarget}.\n * Defaults to using no target.\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\n * external links. Defaults to stripping the referrer.\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\n * thus preserving the current zoom level in the viewer, when navigating\n * to internal destinations. The default value is `false`.\n */\n/**\n * Performs navigation functions inside PDF, such as opening specified page,\n * or destination.\n * @implements {IPDFLinkService}\n */\nclass PDFLinkService {\n /**\n * @param {PDFLinkServiceOptions} options\n */\n constructor({ eventBus = null, externalLinkTarget = null, externalLinkRel = null, ignoreDestinationZoom = false, } = {}) {\n // todo: props\n this.eventBus = null;\n this.externalLinkTarget = null;\n this.externalLinkRel = null;\n this._ignoreDestinationZoom = null;\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n // todo: props\n this.externalLinkEnabled = true;\n this.eventBus = eventBus;\n this.externalLinkTarget = externalLinkTarget;\n this.externalLinkRel = externalLinkRel;\n this._ignoreDestinationZoom = ignoreDestinationZoom;\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n }\n setDocument(pdfDocument, baseUrl = null) {\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n }\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n /**\n * @type {number}\n */\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n /**\n * @type {number}\n */\n get page() {\n return this.pdfDocument ? this.pdfViewer.currentPageNumber : 1;\n }\n /**\n * @param {number} value\n */\n set page(value) {\n if (this.pdfDocument) {\n this.pdfViewer.currentPageNumber = value;\n }\n }\n /**\n * @type {number}\n */\n get rotation() {\n return this.pdfDocument ? this.pdfViewer.pagesRotation : 0;\n }\n /**\n * @param {number} value\n */\n set rotation(value) {\n if (this.pdfDocument) {\n this.pdfViewer.pagesRotation = value;\n }\n }\n /**\n * @type {boolean}\n */\n get isInPresentationMode() {\n return this.pdfDocument ? this.pdfViewer.isInPresentationMode : false;\n }\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n goToDestination(dest) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.pdfDocument) {\n return;\n }\n let namedDest, explicitDest, pageNumber;\n if (typeof dest === \"string\") {\n namedDest = dest;\n explicitDest = yield this.pdfDocument.getDestination(dest);\n }\n else {\n namedDest = null;\n explicitDest = yield dest;\n }\n if (!Array.isArray(explicitDest)) {\n // console.error(\n // `goToDestination: \"${explicitDest}\" is not a valid destination array, for dest=\"${dest}\".`\n // );\n return;\n }\n // Dest array looks like that: \n const [destRef] = explicitDest;\n if (destRef && typeof destRef === \"object\") {\n pageNumber = this.pdfDocument.cachedPageNumber(destRef);\n if (!pageNumber) {\n // Fetch the page reference if it's not yet available. This could\n // only occur during loading, before all pages have been resolved.\n try {\n pageNumber = (yield this.pdfDocument.getPageIndex(destRef)) + 1;\n }\n catch (_b) {\n console.error(`goToDestination: \"${destRef}\" is not a valid page reference, for dest=\"${dest}\".`);\n return;\n }\n }\n }\n else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {\n console.error(`goToDestination: \"${pageNumber}\" is not a valid page number, for dest=\"${dest}\".`);\n return;\n }\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new destination into\n // view, to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\n }\n this.pdfViewer.scrollPageIntoView({\n pageNumber,\n destArray: explicitDest,\n ignoreDestinationZoom: this._ignoreDestinationZoom,\n });\n });\n }\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {\n if (!this.pdfDocument) {\n return;\n }\n const pageNumber = (typeof val === \"string\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\n val | 0;\n if (!(Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount)) {\n console.error(`PDFLinkService.goToPage: \"${val}\" is not a valid page.`);\n return;\n }\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new page into view,\n // to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.pushPage(pageNumber);\n }\n this.pdfViewer.scrollPageIntoView({ pageNumber });\n }\n /**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n if (!url || typeof url !== \"string\") {\n throw new Error('A valid \"url\" parameter must provided.');\n }\n const target = newWindow ? LinkTarget.BLANK : this.externalLinkTarget, rel = this.externalLinkRel;\n if (this.externalLinkEnabled) {\n link.href = link.title = url;\n }\n else {\n link.href = \"\";\n link.title = `Disabled: ${url}`;\n link.onclick = () => false;\n }\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n default: break;\n }\n link.target = targetStr;\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n }\n /**\n * @param {string|Array} dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n if (typeof dest === \"string\") {\n if (dest.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(dest));\n }\n }\n else if (Array.isArray(dest)) {\n const str = JSON.stringify(dest);\n if (str.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(str));\n }\n }\n return this.getAnchorUrl(\"\");\n }\n /**\n * Prefix the full url on anchor links to make sure that links are resolved\n * relative to the current URL instead of the one defined in .\n * @param {string} anchor - The anchor hash, including the #.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(anchor) {\n return this.baseUrl ? this.baseUrl + anchor : anchor;\n }\n /**\n * @param {string} hash\n */\n setHash(hash) {\n if (!this.pdfDocument) {\n return;\n }\n let pageNumber, dest;\n if (hash.includes(\"=\")) {\n const params = parseQueryString(hash);\n if (params.has(\"search\")) {\n const query = params.get(\"search\").replaceAll('\"', \"\"), phrase = params.get(\"phrase\") === \"true\";\n this.eventBus.dispatch(\"findfromurlhash\", {\n source: this,\n query: phrase ? query : query.match(/\\S+/g),\n });\n }\n // borrowing syntax from \"Parameters for Opening PDF Files\"\n if (params.has(\"page\")) {\n pageNumber = params.get(\"page\") | 0 || 1;\n }\n if (params.has(\"zoom\")) {\n // Build the destination array.\n const zoomArgs = params.get(\"zoom\").split(\",\"); // scale,left,top\n const zoomArg = zoomArgs[0];\n const zoomArgNumber = parseFloat(zoomArg);\n if (!zoomArg.includes(\"Fit\")) {\n // If the zoomArg is a number, it has to get divided by 100. If it's\n // a string, it should stay as it is.\n dest = [\n null,\n { name: \"XYZ\" },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\n zoomArgNumber ? zoomArgNumber / 100 : zoomArg,\n ];\n }\n else if (zoomArg === \"Fit\" || zoomArg === \"FitB\") {\n dest = [null, { name: zoomArg }];\n }\n else if (zoomArg === \"FitH\" ||\n zoomArg === \"FitBH\" ||\n zoomArg === \"FitV\" ||\n zoomArg === \"FitBV\") {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n ];\n }\n else if (zoomArg === \"FitR\") {\n if (zoomArgs.length !== 5) {\n console.error('PDFLinkService.setHash: Not enough parameters for \"FitR\".');\n }\n else {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs[1] | 0,\n zoomArgs[2] | 0,\n zoomArgs[3] | 0,\n zoomArgs[4] | 0,\n ];\n }\n }\n else {\n console.error(`PDFLinkService.setHash: \"${zoomArg}\" is not a valid zoom value.`);\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n }\n else if (pageNumber) {\n this.page = pageNumber; // simple page\n }\n if (params.has(\"pagemode\")) {\n this.eventBus.dispatch(\"pagemode\", {\n source: this,\n mode: params.get(\"pagemode\"),\n });\n }\n // Ensure that this parameter is *always* handled last, in order to\n // guarantee that it won't be overridden (e.g. by the \"page\" parameter).\n if (params.has(\"nameddest\")) {\n this.goToDestination(params.get(\"nameddest\"));\n }\n // if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n return;\n // }\n // // Support opening of PDF attachments in the Firefox PDF Viewer,\n // // which uses a couple of non-standard hash parameters; refer to\n // // `DownloadManager.openOrDownloadData` in the firefoxcom.js file.\n // if (!params.has(\"filename\") || !params.has(\"filedest\")) {\n // return;\n // }\n // hash = params.get(\"filedest\");\n }\n // Named (or explicit) destination.\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n if (!Array.isArray(dest)) {\n // Avoid incorrectly rejecting a valid named destination, such as\n // e.g. \"4.3\" or \"true\", because `JSON.parse` converted its type.\n dest = dest.toString();\n }\n }\n catch (e) {\n if (!e) {\n return;\n }\n }\n if (typeof dest === \"string\" || __classPrivateFieldGet(_a, _a, \"m\", _PDFLinkService_isValidExplicitDest).call(_a, dest)) {\n this.goToDestination(dest);\n return;\n }\n // console.error(\n // `PDFLinkService.setHash: \"${unescape(hash)}\" is not a valid destination.`\n // );\n }\n /**\n * @param {string} action\n */\n executeNamedAction(action) {\n var _b, _c;\n if (!this.pdfDocument) {\n return;\n }\n // See PDF reference, table 8.45 - Named action\n switch (action) {\n case \"GoBack\":\n (_b = this.pdfHistory) === null || _b === void 0 ? void 0 : _b.back();\n break;\n case \"GoForward\":\n (_c = this.pdfHistory) === null || _c === void 0 ? void 0 : _c.forward();\n break;\n case \"NextPage\":\n this.pdfViewer.nextPage();\n break;\n case \"PrevPage\":\n this.pdfViewer.previousPage();\n break;\n case \"LastPage\":\n this.page = this.pagesCount;\n break;\n case \"FirstPage\":\n this.page = 1;\n break;\n default:\n break; // No action according to spec\n }\n this.eventBus.dispatch(\"namedaction\", {\n source: this,\n action,\n });\n }\n /**\n * @param {Object} action\n */\n executeSetOCGState(action) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.pdfDocument) {\n return;\n }\n const pdfDocument = this.pdfDocument, optionalContentConfig = yield this.pdfViewer.optionalContentConfigPromise;\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the optional content resolved.\n }\n optionalContentConfig.setOCGState(action);\n this.pdfViewer.optionalContentConfigPromise = Promise.resolve(optionalContentConfig);\n });\n }\n}\n_a = PDFLinkService, _PDFLinkService_isValidExplicitDest = function _PDFLinkService_isValidExplicitDest(dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!(typeof page === \"object\" &&\n Number.isInteger(page === null || page === void 0 ? void 0 : page.num) &&\n Number.isInteger(page === null || page === void 0 ? void 0 : page.gen)) &&\n !Number.isInteger(page)) {\n return false;\n }\n if (!(typeof zoom === \"object\" && typeof (zoom === null || zoom === void 0 ? void 0 : zoom.name) === \"string\")) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (!(typeof arg === \"number\" || (allowNull && arg === null))) {\n return false;\n }\n }\n return true;\n};\n// /**\n// * @implements {IPDFLinkService}\n// */\n// class SimpleLinkService extends PDFLinkService {\n// setDocument(pdfDocument, baseUrl = null) { }\n// }\nexport { LinkTarget, PDFLinkService,\n// SimpleLinkService\n };\n","export var PdfViewerInteractionMode;\n(function (PdfViewerInteractionMode) {\n PdfViewerInteractionMode[PdfViewerInteractionMode[\"TextSelection\"] = 0] = \"TextSelection\";\n PdfViewerInteractionMode[PdfViewerInteractionMode[\"Pan\"] = 1] = \"Pan\";\n})(PdfViewerInteractionMode || (PdfViewerInteractionMode = {}));\n;\n","var _PdfViewer_instances, _PdfViewer_annotationEditorMode, _PdfViewer_switchAnnotationEditorModeTimeoutId, _PdfViewer_eventAbortController, _PdfViewer_onPageRenderedCallback, _PdfViewer_switchToEditAnnotationMode, _PdfViewer_scrollIntoView;\nimport { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\nimport { deepExtend, Component, isString, toArray, noop, hasValue, toClassSelector, addClass, removeClass, mousewheelDelta, convertToHtml, clamp, createPromise } from \"../common/main\";\nimport { currentPage, parsePdfFromBase64String, scale as getScale, adjustCanvasSize, createElement } from \"../utils\";\nimport { SearchService } from \"../search\";\nimport { Scroller } from \"../scroller\";\nimport { throttle } from \"../scroller\";\nimport { saveAs } from \"@progress/kendo-file-saver\";\nimport { getDocument, AnnotationEditorParamsType, AnnotationEditorType, PixelsPerInch, shadow, } from \"pdfjs-dist/legacy/build/pdf.mjs\";\nimport { AnnotationEditorUIManager } from \"../annotations/annotation-editor-ui-manager\";\nimport { EventBus } from '../annotations/shared/event_utils';\nimport { Page } from \"./page\";\nimport { AnnotationMode } from \"../annotations/shared/utils\";\nimport { scrollIntoView, TextLayerMode, ScrollMode } from \"../annotations/shared/ui_utils\";\nimport { AnnotationStorage } from \"../annotations/helpers/annotation-storage\";\nimport { LinkTarget, PDFLinkService } from \"../links/link-service\";\nimport { PdfViewerInteractionMode } from \"../enums/PdfViewerInteractionMode\";\nconst PDF_JS = \"pdfjs\";\nconst ERROR = \"error\";\nconst ZOOM_START = \"zoomStart\";\nconst ZOOM_END = \"zoomEnd\";\nconst PAGES_LOAD = \"pagesLoad\";\nconst PRINT_END = \"printEnd\";\nconst SCROLL = \"scroll\";\nconst DOWNLOAD = \"download\";\nconst ANNOTATION_EDITOR_TOOLBAR_SHOW = \"annotationEditorToolBarShow\";\nconst ANNOTATION_EDITOR_TOOLBAR_HIDE = \"annotationEditorToolBarHide\";\nconst DEFAULT_ZOOM_LEVEL = 1.25;\nconst FRAMES_PER_SECOND = 1000 / 60;\nexport class PdfViewer extends Component {\n constructor(element, options) {\n super(element, options);\n _PdfViewer_instances.add(this);\n this.options = {\n pdfServiceType: PDF_JS,\n // this is a flag used mainly in tests as CSSStyleSheet.replaceSync\n // fails with jsdom\n // a better solution is not to load a stylesheet in setHiddenCanvasStyles\n // but rather create a class like \"k-hidden-canvas-element\"\n // and override the rendering from pdf.js\n pdfjsSetHiddenCanvasStyles: true,\n fileData: [],\n page: 1,\n fileDescriptor: null,\n downloadFileName: \"Document\",\n minZoom: 0.5,\n maxZoom: 4,\n zoomRate: 0.25,\n zoomLevel: DEFAULT_ZOOM_LEVEL,\n zoomBeforePrint: false,\n zoomLevelForPrint: 3,\n searchMatchScrollLeftOffset: 0,\n // add some default offset, so that the found match\n // does not appear on the top edge of the page when navigated to\n searchMatchScrollTopOffset: -64,\n // what percentage of the page should be scrolled,\n // so that the page is considered to be changed to the next one\n pageChangeScrollThreshold: 0.85,\n // values higher than 200ms can result in browser zoom\n pageWheelThrottleDelay: 200,\n // ported from pdf.js\n printResolution: 150,\n loadOnDemand: false,\n loadOnDemandPageSize: 2,\n messages: {\n freeTextEditorPlaceholder: \"Start typing\",\n errorMessages: {\n parseError: \"PDF file fails to process.\",\n notFound: \"File is not found.\",\n popupBlocked: \"Popup is blocked.\"\n }\n },\n annotations: {\n highlight: {\n color: \"#ffff00\"\n }\n },\n elementSelectors: {\n pageSelector: \"k-page:not(.k-blank-page)\",\n pagesContainerClass: \"k-pdf-viewer-pages\",\n pageCanvasWrapper: \"k-canvas-wrapper\",\n documentContainerClass: \"k-pdf-viewer-canvas\",\n textLayerClass: \"k-text-layer\",\n searchHighlightClass: \"k-search-highlight\",\n searchHighlightMarkClass: \"k-search-highlight-mark\",\n charClass: \"k-text-char\",\n textElementSelector: \"span[role='presentation']\",\n renderedPageSelector: \"k-page[data-page-number]\",\n enabledTextSelectionClass: \"k-enable-text-select\",\n enabledPanningClass: \"k-enable-panning\"\n },\n events: {\n [PAGES_LOAD]: noop,\n [PRINT_END]: noop,\n [ZOOM_START]: noop,\n [ZOOM_END]: noop,\n [ERROR]: noop,\n [SCROLL]: noop,\n [ANNOTATION_EDITOR_TOOLBAR_SHOW]: noop,\n [ANNOTATION_EDITOR_TOOLBAR_HIDE]: noop\n }\n };\n // todo: props\n // isPageEditing = null;\n this.interactionMode = PdfViewerInteractionMode.TextSelection;\n this.printContainer = null;\n // todo: props ported from pdf.js\n this._scrollMode = ScrollMode.PAGE;\n this.isInPresentationMode = false;\n this._currentPageNumber = 1;\n this.linkService = null;\n this.annotationStorage = null;\n this._annotationStorageModified = false;\n this._hasAnnotationEditors = false;\n _PdfViewer_annotationEditorMode.set(this, AnnotationEditorType.NONE);\n this.annotationEditorUIManager = null;\n _PdfViewer_switchAnnotationEditorModeTimeoutId.set(this, null);\n // #buffer = null;\n // #altTextManager = null;\n // #annotationEditorHighlightColors = null;\n // #annotationEditorMode = AnnotationEditorType.NONE;\n // #annotationEditorUIManager = null;\n // #annotationMode = AnnotationMode.ENABLE_FORMS;\n // #containerTopLeft = null;\n // #enableHWA = false;\n // #enableHighlightFloatingButton = false;\n // #enablePermissions = false;\n // #enableUpdatedAddImage = false;\n // #enableNewAltTextWhenAddingImage = false;\n _PdfViewer_eventAbortController.set(this, null);\n // #mlManager = null;\n _PdfViewer_onPageRenderedCallback.set(this, null);\n // #switchAnnotationEditorModeTimeoutId = null;\n // #getAllTextInProgress = false;\n // #hiddenCopyElement = null;\n // #interruptCopyCondition = false;\n // #previousContainerHeight = 0;\n // #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));\n // #scrollModePageState = null;\n // #scaleTimeoutId = null;\n // #textLayerMode = TextLayerMode.ENABLE;\n // todo: props\n this.state = {};\n this.pdfDocument = null;\n this.pages = [];\n this.triggerError = (e) => {\n this.trigger(ERROR, {\n error: e\n });\n };\n this.triggerPrintEnd = (e) => {\n this.trigger(PRINT_END, e);\n };\n this.onPagesLoad = (args) => {\n this.state.pdfDocument = args.pdfDoc;\n this.state.pdfPages = args.pdfPages;\n this.clearSearch();\n this.initSearchService();\n this.enableDocumentScrollEventsTracking();\n this.triggerPagesLoad(args);\n };\n this.onDocumentScrollerScroll = (e) => {\n const currentPageIndex = this.getCurrentPageIndex();\n const pages = this.pages;\n const page = pages[currentPageIndex];\n const nextPage = pages[currentPageIndex + 1];\n const previousPage = pages[currentPageIndex - 1];\n if (page && page.isBlank()) {\n this.drawPageAsync({ pageIndex: currentPageIndex });\n }\n if (nextPage && nextPage.isBlank()) {\n this.drawPageAsync({ pageIndex: currentPageIndex + 1 });\n }\n if (previousPage && previousPage.isBlank()) {\n this.drawPageAsync({ pageIndex: currentPageIndex - 1 });\n }\n this.tryTriggerScroll(e);\n };\n // this is mainly used by blazor to track the page number\n // as this can only be obtained by JS\n this.tryTriggerScroll = (e) => {\n let isPageChanged = false;\n const pageNumber = currentPage(this.element) + 1;\n if (pageNumber !== this.state.activePageNumber && (pageNumber >= 1 && pageNumber <= this.state.pdfDocument.numPagesh)) {\n isPageChanged = true;\n this.state.activePageNumber = pageNumber;\n }\n if (this.shouldPreventScroll) {\n this.shouldPreventScroll = false;\n }\n else {\n this.trigger(SCROLL, {\n scrollLeft: e.scrollLeft,\n scrollTop: e.scrollTop,\n pageNumber: this.state.activePageNumber,\n isPageChanged: isPageChanged\n });\n }\n };\n this.printDocumentAsync = () => {\n this.initPrintContainer();\n const pagePrintPromises = this.getPagesPrintContentAsync(this.printContainer);\n const printPromise = createPromise();\n Promise.all(pagePrintPromises)\n .then(() => {\n // print the document during next render task\n setTimeout(() => {\n this.openPrintDialog();\n // @ts-expect-error TS()\n printPromise.resolve();\n }, FRAMES_PER_SECOND);\n });\n return printPromise;\n };\n this.onDocumentWheel = (e) => {\n if (!e.ctrlKey && !e.metaKey) {\n return;\n }\n e.preventDefault();\n const wheelDelta = mousewheelDelta(e);\n const zoomModifier = wheelDelta < 0 ? 1 : -1;\n const zoomLevel = this.state.zoomLevel + (zoomModifier * this.options.zoomRate);\n this.triggerZoomStart({\n zoomLevel: zoomLevel\n });\n this.zoom({\n zoomLevel: zoomLevel\n });\n this.triggerZoomEnd({\n zoomLevel: zoomLevel\n });\n };\n this.extendOptions(options);\n this.throwIfInvalidOptions();\n this.wrapper = this.element;\n this.initEventBus();\n __classPrivateFieldSet(this, _PdfViewer_eventAbortController, new AbortController(), \"f\");\n this.resetState();\n this.bindEvents();\n this.initLinkService();\n this.initDocumentContainer();\n this.loadFile(this.options.fileDescriptor || {\n data: this.options.fileData,\n page: this.options.page\n });\n }\n destroy() {\n this.destroyEventBus();\n this.unbindEvents();\n this.destroySearchService();\n this.destroyAnnotationEditorUIManager();\n this.destroyDocumentScroller();\n }\n throwIfInvalidOptions() {\n if (this.options.minZoom > this.options.maxZoom) {\n throw new Error(\"The min zoom should be greater than max zoom\");\n }\n }\n set annotationEditorParams({ type, value }) {\n if (!this.annotationEditorUIManager) {\n return;\n }\n this.annotationEditorUIManager.updateParams(type, value);\n }\n get annotationEditorMode() {\n return this.annotationEditorUIManager\n ? __classPrivateFieldGet(this, _PdfViewer_annotationEditorMode, \"f\")\n : AnnotationEditorType.DISABLE;\n }\n set annotationEditorMode({ mode, editId = null, isFromKeyboard = false }) {\n // todo: set isFromKeyboard intentionally to allow editor creation\n // set annotationEditorMode({ mode, editId = null, isFromKeyboard = true }) {\n if (!this.annotationEditorUIManager) {\n // throw new Error(`The AnnotationEditor is not enabled.`);\n }\n if (__classPrivateFieldGet(this, _PdfViewer_annotationEditorMode, \"f\") === mode) {\n return; // The AnnotationEditor mode didn't change.\n }\n if (!this.isValidAnnotationEditorMode(mode)) {\n // throw new Error(`Invalid AnnotationEditor mode: ${mode}`);\n return;\n }\n if (!this.pdfDocument) {\n return;\n }\n if (mode === AnnotationEditorType.STAMP) {\n // this.#mlManager?.loadModel(\"altText\");\n }\n const { eventBus } = this;\n const updater = () => {\n this.cleanupSwitchAnnotationEditorMode();\n __classPrivateFieldSet(this, _PdfViewer_annotationEditorMode, mode, \"f\");\n this.annotationEditorUIManager.updateMode(mode, editId, isFromKeyboard);\n eventBus.dispatch(\"annotationeditormodechanged\", {\n source: this,\n mode,\n });\n };\n // // todo: fix\n // const isEditingPage = (this.pages || []).some(x => x.isEditing);\n if (mode === AnnotationEditorType.NONE || __classPrivateFieldGet(this, _PdfViewer_annotationEditorMode, \"f\") === AnnotationEditorType.NONE) {\n const isEditing = mode !== AnnotationEditorType.NONE;\n if (!isEditing) {\n this.pdfDocument.annotationStorage.resetModifiedIds();\n }\n for (const pageView of this.pages) {\n pageView.toggleEditingMode(isEditing);\n }\n // We must call #switchToEditAnnotationMode unconditionally to ensure that\n // page is rendered if it's useful or not.\n const idsToRefresh = __classPrivateFieldGet(this, _PdfViewer_instances, \"m\", _PdfViewer_switchToEditAnnotationMode).call(this);\n if (isEditing && idsToRefresh) {\n // We're editing so we must switch to editing mode when the rendering is\n // done.\n this.cleanupSwitchAnnotationEditorMode();\n __classPrivateFieldSet(this, _PdfViewer_onPageRenderedCallback, ({ pageNumber }) => {\n idsToRefresh.delete(pageNumber);\n if (idsToRefresh.size === 0) {\n __classPrivateFieldSet(this, _PdfViewer_switchAnnotationEditorModeTimeoutId, setTimeout(updater, 0), \"f\");\n }\n }, \"f\");\n const { signal } = __classPrivateFieldGet(this, _PdfViewer_eventAbortController, \"f\");\n eventBus._on(\"pagerendered\", __classPrivateFieldGet(this, _PdfViewer_onPageRenderedCallback, \"f\"), { signal });\n }\n }\n updater();\n }\n extendOptions(options) {\n this.options = deepExtend(this.options, options);\n }\n setOptions(options) {\n this.options = options;\n }\n bindEvents() {\n this.bindPagesWheel();\n }\n bindPagesWheel() {\n const documentContainer = this.getDocumentContainer();\n if (!documentContainer) {\n return;\n }\n if (this.options.pageWheelThrottleDelay > 0) {\n // @ts-expect-error TS(2339): Property 'throttledPagesWheel' does not exist on t... Remove this comment to see the full error message\n this.throttledPagesWheel = throttle(this.onDocumentWheel, this.options.pageWheelThrottleDelay);\n }\n else {\n // @ts-expect-error TS(2339): Property 'throttledPagesWheel' does not exist on t... Remove this comment to see the full error message\n this.throttledPagesWheel = this.onDocumentWheel;\n }\n // @ts-expect-error TS(2339): Property 'throttledPagesWheel' does not exist on t... Remove this comment to see the full error message\n documentContainer.addEventListener(\"wheel\", this.throttledPagesWheel);\n }\n unbindEvents() {\n this.unbindPagesWheel();\n }\n unbindPagesWheel() {\n const documentContainer = this.getDocumentContainer();\n if (!documentContainer) {\n return;\n }\n // @ts-expect-error TS(2339): Property 'throttledPagesWheel' does not exist on t... Remove this comment to see the full error message\n if (this.throttledPagesWheel && this.throttledPagesWheel.cancel) {\n // @ts-expect-error TS(2339): Property 'throttledPagesWheel' does not exist on t... Remove this comment to see the full error message\n this.throttledPagesWheel.cancel();\n }\n // @ts-expect-error TS(2339): Property 'throttledPagesWheel' does not exist on t... Remove this comment to see the full error message\n documentContainer.removeEventListener(\"wheel\", this.throttledPagesWheel);\n }\n setState(newState) {\n this.state = deepExtend(this.state || {}, newState);\n }\n resetState() {\n this.setState({\n activePageNumber: 1,\n visiblePagesCount: 1,\n pagePromises: [],\n downloadFilePromise: null,\n pdfDocument: null,\n zoomLevel: this.options.zoomLevel,\n zoomLevelType: this.options.zoomLevelType,\n zoomLevelBeforePrint: null\n });\n }\n initEventBus() {\n this.eventBus = new EventBus();\n }\n destroyEventBus() {\n }\n initLinkService() {\n var _a;\n this.linkService = new PDFLinkService({\n eventBus: this.eventBus,\n externalLinkTarget: LinkTarget.BLANK,\n externalLinkRel: \"noopener noreferrer nofollow\",\n ignoreDestinationZoom: false,\n });\n (_a = this.linkService) === null || _a === void 0 ? void 0 : _a.setViewer(this);\n }\n initAnnotationEditorUIManager() {\n this.annotationEditorUIManager = new AnnotationEditorUIManager({\n container: this.getDocumentContainer(),\n // todo: pdf.js expects a dom element and not a component\n viewer: this.element,\n pdfViewer: this,\n pdfDocument: this.state.pdfDocument,\n eventBus: this.eventBus\n });\n this.setAnnotationEditorUIManagerScale();\n }\n setAnnotationEditorUIManagerScale() {\n var _a;\n // this is required when loading a new document\n // so that annotation editors have correct positions during dragging\n (_a = this.annotationEditorUIManager) === null || _a === void 0 ? void 0 : _a.onScaleChanging({\n scale: this.options.zoomLevel\n });\n }\n destroyAnnotationEditorUIManager() {\n var _a;\n (_a = this.annotationEditorUIManager) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n bindEventBusAnnotationsEvents() {\n const eventBus = this.eventBus = this.eventBus || new EventBus();\n eventBus._on(\"switchannotationeditorparams\", (evt) => {\n this.annotationEditorParams = evt;\n }\n // { signal }\n );\n eventBus._on(\"switchannotationeditormode\", evt => {\n // todo: inline the call to this.annotationEditorMode = evt;\n // this.annotationEditorMode = evt;\n this.annotationEditorUIManager.updateParams(evt.type, evt.value);\n const { mode, editId, isFromKeyboard } = evt;\n this.annotationEditorUIManager.annotationEditorMode = evt;\n this.annotationEditorUIManager.updateMode(mode, editId, isFromKeyboard);\n eventBus.dispatch(\"annotationeditormodechanged\", {\n source: this,\n mode,\n });\n }\n // { signal }\n );\n eventBus._on(\"kendoAnnotationEditorToolBarShow\", (evt) => {\n var _a;\n if (!evt) {\n return;\n }\n const annotationEditorMode = this.annotationEditorUIManager.getMode();\n if (annotationEditorMode === AnnotationEditorType.HIGHLIGHT ||\n annotationEditorMode === AnnotationEditorType.FREETEXT) {\n if (annotationEditorMode === AnnotationEditorType.HIGHLIGHT) {\n this.addHighlightAnnotation();\n }\n this.triggerAnnotationEditorToolBarShow(Object.assign(Object.assign({}, evt), { annotationEditorMode: annotationEditorMode === AnnotationEditorType.HIGHLIGHT ? \"highlight\" : \"freeText\", anchor: evt.anchor || ((_a = this.annotationEditorUIManager.firstSelectedEditor) === null || _a === void 0 ? void 0 : _a.div) }));\n }\n }\n // { signal }\n );\n eventBus._on(\"kendoAnnotationEditorToolBarHide\", (evt) => {\n if (!evt) {\n return;\n }\n const annotationEditorMode = this.annotationEditorUIManager.getMode();\n if (annotationEditorMode === AnnotationEditorType.HIGHLIGHT ||\n annotationEditorMode === AnnotationEditorType.FREETEXT) {\n this.triggerAnnotationEditorToolBarHide(Object.assign(Object.assign({}, evt), { annotationEditorMode: annotationEditorMode === AnnotationEditorType.HIGHLIGHT ? \"highlight\" : \"freeText\" }));\n }\n }\n // { signal }\n );\n eventBus._on(\"showannotationeditorui\", (evt) => {\n switch (evt.mode) {\n case AnnotationEditorType.HIGHLIGHT:\n // editorHighlightButton.click();\n eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode: AnnotationEditorType.HIGHLIGHT,\n // {},...eventDetails,\n // evt.detail is the number of clicks.\n // isFromKeyboard: evt.detail === 0,\n isFromKeyboard: false\n });\n break;\n default: break;\n }\n }\n // { signal }\n );\n }\n unbindEventBusAnnotationsEvents() {\n // this.eventBus.off();\n }\n loadFile(args) {\n const fileData = args.data;\n const loadFileOptions = {\n data: null,\n url: \"\",\n arrayBuffer: null,\n typedArray: null\n };\n if (fileData && (fileData.buffer instanceof ArrayBuffer || fileData instanceof ArrayBuffer)) {\n loadFileOptions.arrayBuffer = fileData.buffer || fileData;\n }\n else if (isString(fileData) && fileData !== \"\") {\n loadFileOptions.data = fileData;\n loadFileOptions.url = null;\n }\n else if (isString(args.url) && args.url !== \"\") {\n loadFileOptions.data = null;\n loadFileOptions.url = args.url;\n }\n else if (args.typedArray) {\n loadFileOptions.typedArray = args.typedArray;\n }\n if (args.data || args.url || args.arrayBuffer || args.typedArray) {\n const readOptions = Object.assign({ dom: this.getPagesContainer(), zoom: this.options.zoomLevel }, loadFileOptions);\n this.disableDocumentScrollEventsTracking();\n this.clearDocument();\n this.loadDocument(readOptions);\n this.setScaleFactor(this.options.zoomLevel);\n }\n }\n loadDocument(options) {\n const params = this.getDocumentParameters(options);\n const { zoom } = options;\n this.clearDocumentState();\n getDocument(params)\n .promise.then((pdfDoc) => {\n var _a;\n (_a = this.linkService) === null || _a === void 0 ? void 0 : _a.setDocument(pdfDoc);\n this.initDocumentAnnotationStorage(pdfDoc);\n this.initAnnotationEditorUIManager();\n this.bindEventBusAnnotationsEvents();\n const pagesPromises = [];\n for (let i = 1; i <= pdfDoc.numPages; i++) {\n pagesPromises.push(pdfDoc.getPage(i));\n }\n return { pagesPromises: pagesPromises, pdfDoc };\n })\n .then(({ pagesPromises: pagesPromises, pdfDoc }) => {\n this.state.pagesPromises = pagesPromises;\n this.destroyPageComponents();\n return this.drawPagesFromPromisesAsync(pagesPromises)\n .then((pdfPages) => {\n this.setHiddenCanvasStyles();\n this.onPagesLoad({ pdfPages, pdfDoc, zoom });\n })\n .catch((e) => {\n this.triggerError(e);\n });\n })\n .catch((e) => {\n this.triggerError(e);\n });\n }\n initDocumentAnnotationStorage(pdfDocument) {\n this.state.pdfDocument = pdfDocument;\n this.pdfDocument = pdfDocument;\n this.annotationStorage = new AnnotationStorage();\n // todo: intentionally override the default value\n // as it relies on checks like \"instanceof \"\n // but the classes from pdf.js are not exported\n // and thus they are migrated, see https://github.com/mozilla/pdf.js/issues/18656\n // Object.defineProperty(Object.getPrototypeOf(this.pdfDocument), 'annotationStorage', {\n // get: () => {\n // if (this.state.isPrintingInProgress) {\n // return this.annotationStorage?.print;\n // } else {\n // return this.annotationStorage;\n // }\n // },\n // set: (value) => {\n // this.annotationStorage = value;\n // },\n // // this is required\n // configurable: true\n // });\n Object.defineProperty(Object.getPrototypeOf(this.pdfDocument._transport), 'annotationStorage', {\n get: () => {\n var _a;\n if (this.state.isPrintingInProgress) {\n return (_a = this.annotationStorage) === null || _a === void 0 ? void 0 : _a.print;\n }\n else {\n return this.annotationStorage;\n }\n },\n set: (value) => {\n this.annotationStorage = value;\n },\n // this is required\n configurable: true\n });\n this._initializeAnnotationStorageCallbacks(pdfDocument);\n }\n _initializeAnnotationStorageCallbacks(pdfDocument) {\n if (pdfDocument !== this.pdfDocument) {\n return;\n }\n const { annotationStorage } = pdfDocument;\n annotationStorage.onSetModified = () => {\n // window.addEventListener(\"beforeunload\", beforeUnload);\n // if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n this._annotationStorageModified = true;\n // }\n };\n annotationStorage.onResetModified = () => {\n // window.removeEventListener(\"beforeunload\", beforeUnload);\n // if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n delete this._annotationStorageModified;\n // }\n };\n annotationStorage.onAnnotationEditor = typeStr => {\n this._hasAnnotationEditors = !!typeStr;\n // this.setTitle();\n };\n }\n drawPagesFromPromisesAsync(pagesPromises) {\n return Promise.all(pagesPromises)\n .then((pdfPages) => __awaiter(this, void 0, void 0, function* () {\n const pages = yield Promise.all(this.drawPagesAsync(pdfPages));\n this.appendPages(pages);\n return pdfPages;\n }));\n }\n drawPagesAsync(pdfPages) {\n pdfPages = pdfPages || this.state.pdfPages;\n const hasPages = (this.pages || []).length > 0;\n if (!hasPages) {\n this.initPageComponents(pdfPages);\n }\n else {\n for (let i = 0; i < this.pages.length; i++) {\n const pageViewport = this.pages[i].getViewport({\n scale: this.state.zoomLevel\n });\n // todo: adjust page viewport manually\n // otherwise, loading a document with links to the document\n // will not scroll to the specific page on click\n // pdf.js handles this in a more complex way\n // that will require porting more code\n this.pages[i].viewport = pageViewport;\n }\n }\n const pageRenderPromises = [];\n pdfPages.map((pdfPage, pageIndex) => __awaiter(this, void 0, void 0, function* () {\n const page = this.pages[pageIndex];\n if (this.options.loadOnDemand &&\n pageIndex >= this.options.loadOnDemandPageSize &&\n !page.element) {\n const blankPageElements = this.createBlankPageElements({ pdfPage, zoom: this.state.zoomLevel });\n if (page && !page.element) {\n page.element = blankPageElements.pageElement;\n page.setBlank(true);\n }\n const pageRenderPromise = createPromise();\n pageRenderPromises.push(pageRenderPromise);\n pageRenderPromise.then((renderedPage) => {\n return renderedPage;\n });\n pageRenderPromise.resolve(page.element);\n }\n else if (this.options.loadOnDemand && page.isBlank()) {\n // keep blank pages on reload\n const pageRenderPromise = createPromise();\n pageRenderPromises.push(pageRenderPromise);\n pageRenderPromise.then((renderedPage) => {\n return renderedPage;\n });\n pageRenderPromise.resolve(page.element);\n }\n else {\n const pageRenderPromise = this.drawPageAsync({ pageIndex });\n pageRenderPromises.push(pageRenderPromise);\n pageRenderPromise.then((renderedPage) => {\n return renderedPage;\n });\n }\n }));\n return pageRenderPromises;\n }\n createBlankPageElements({ pdfPage, zoom }) {\n const pageElements = this.createPageElements({ pdfPage, zoom });\n pageElements.canvasWrapper.appendChild(pageElements.canvas);\n pageElements.pageElement.appendChild(pageElements.canvasWrapper);\n return pageElements;\n }\n getDocumentParameters(options) {\n let params = {\n verbosity: 0,\n isEvalSupported: true\n };\n if (typeof options.data === 'string' && options.data !== \"\") {\n params.data = parsePdfFromBase64String(options.data);\n }\n else if (typeof options.url === 'string' && options.url !== \"\") {\n params.url = options.url;\n }\n else if (options.arrayBuffer instanceof ArrayBuffer) {\n params = options.arrayBuffer;\n }\n else if (options.typedArray) {\n params = options.typedArray;\n }\n return params;\n }\n appendPages(pages) {\n pages.forEach(page => this.appendPage(page));\n }\n appendPage(page, pageIndex = null) {\n const pagesContainer = this.getPagesContainer();\n if (hasValue(pageIndex)) {\n pagesContainer === null || pagesContainer === void 0 ? void 0 : pagesContainer.insertBefore(page, pagesContainer.children[pageIndex]);\n }\n else {\n pagesContainer === null || pagesContainer === void 0 ? void 0 : pagesContainer.appendChild(page);\n }\n }\n drawPageAsync({ pageIndex = 0 }) {\n var _a;\n const index = clamp(pageIndex, 0, Math.max(0, this.state.pdfDocument.numPages - 1));\n return (_a = this.pages[index]) === null || _a === void 0 ? void 0 : _a.draw().then(() => {\n return this.pages[index].element;\n });\n }\n createPageElements({ pdfPage = null, zoom = 1, }) {\n if (zoom <= 0) {\n return;\n }\n const viewportScale = getScale();\n const scaleNum = zoom || viewportScale;\n const viewport = pdfPage === null || pdfPage === void 0 ? void 0 : pdfPage.getViewport({ scale: viewportScale });\n const { adjustedWidth, adjustedHeight, adjustRatio } = adjustCanvasSize(viewport.width, viewport.height);\n // const styles = {\n // width: Math.floor(viewport.width / scaleNum) * zoom + 'pt',\n // height: Math.floor(viewport.height / scaleNum) * zoom + 'pt'\n // };\n // use PageView.setLayerDimensions\n const { pageWidth, pageHeight } = viewport.rawDims;\n const styles = {\n // \"round\" is supported in all browsers since May 2024\n // https://developer.mozilla.org/en-US/docs/Web/CSS/round#browser_compatibility\n width: `round(var(--scale-factor) * ${pageWidth}px, 1px)`,\n height: `round(var(--scale-factor) * ${pageHeight}px, 1px)`\n };\n const pageElement = createElement(\"div\", \"k-page\", styles);\n const canvas = createElement(\"canvas\", '', {\n width: \"100%\",\n height: \"100%\"\n });\n canvas.height = adjustedHeight;\n canvas.width = adjustedWidth;\n const canvasContext = canvas.getContext(\"2d\");\n const canvasWrapper = convertToHtml(`\n
    \n `);\n // canvasWrapper.appendChild(canvas);\n // pageElement.appendChild(canvasWrapper);\n const adjustedScale = adjustRatio * scaleNum;\n viewport.width = adjustedWidth;\n viewport.height = adjustedHeight;\n viewport.scale = adjustedScale;\n return {\n canvasContext,\n canvasWrapper,\n canvas,\n viewport,\n scaleNum,\n pageElement,\n styles,\n };\n }\n triggerPagesLoad(e) {\n this.trigger(PAGES_LOAD, e);\n }\n triggerZoomStart(e) {\n this.trigger(ZOOM_START, e);\n }\n triggerZoomEnd(e) {\n this.trigger(ZOOM_END, e);\n }\n triggerDownload(e) {\n return this.trigger(DOWNLOAD, e);\n }\n triggerAnnotationEditorToolBarShow(e) {\n this.trigger(ANNOTATION_EDITOR_TOOLBAR_SHOW, e);\n }\n triggerAnnotationEditorToolBarHide(e) {\n this.trigger(ANNOTATION_EDITOR_TOOLBAR_HIDE, e);\n }\n clearDocument() {\n var _a;\n this.clearPagesElements();\n this.clearDocumentState();\n (_a = this.linkService) === null || _a === void 0 ? void 0 : _a.setDocument(null);\n }\n clearDocumentState() {\n this.state.pdfDocument = null;\n this.state.pdfPages = [];\n this.pages.forEach(x => x.destroy());\n this.pages = [];\n }\n initPageComponents(pdfPages) {\n // const scale = this.currentScale;\n // const currentScale = scale();\n const currentScale = this.options.zoomLevel;\n const viewport = pdfPages[0].getViewport({\n scale: currentScale * PixelsPerInch.PDF_TO_CSS_UNITS,\n });\n for (let pageNum = 1; pageNum <= pdfPages.length; pageNum++) {\n const pageIndex = pageNum - 1;\n const pageView = new Page(null, {\n pdfViewer: this,\n container: this.element,\n eventBus: this.eventBus,\n id: pageNum,\n scale: currentScale,\n viewport: viewport,\n defaultViewport: viewport,\n // optionalContentConfigPromise,\n // renderingQueue: this.renderingQueue,\n textLayerMode: TextLayerMode.ENABLE,\n annotationMode: AnnotationMode.ENABLE,\n // imageResourcesPath: this.imageResourcesPath,\n // maxCanvasPixels: this.maxCanvasPixels,\n // pageColors,\n // l10n: this.l10n,\n layerProperties: this._layerProperties,\n // enableHWA: this.#enableHWA,\n });\n this.pages.push(pageView);\n this.pages[pageIndex].setPdfPage(pdfPages[pageIndex]);\n }\n }\n destroyPageComponents() {\n this.pages.forEach(x => x.destroy());\n this.pages = [];\n }\n clearPagesElements() {\n const documentContainer = this.getDocumentContainer();\n const pagesContainer = this.getPagesContainer();\n if (!documentContainer || !pagesContainer || !this.hasDocument()) {\n return;\n }\n const pages = this.getPagesElements();\n pages.forEach(page => {\n // @ts-expect-error TS(2345): Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message\n pagesContainer.removeChild(page);\n });\n }\n initDocumentContainer() {\n if (this.documentContainer) {\n return;\n }\n this.documentContainer = this.getDocumentContainer();\n this.initDocumentScroller(this.documentContainer);\n }\n initDocumentScroller(element) {\n if (this.documentScroller || !element) {\n return;\n }\n this.documentScroller = this.createDocumentScroller(element, {\n filter: toClassSelector(this.options.elementSelectors.pageSelector),\n events: {\n [SCROLL]: this.onDocumentScrollerScroll\n }\n });\n }\n createDocumentScroller(element, options) {\n return new Scroller(element, options);\n }\n destroyDocumentScroller() {\n if (!this.documentScroller) {\n return;\n }\n this.documentScroller.destroy();\n this.documentScroller = null;\n }\n enableDocumentScrollEventsTracking() {\n var _a;\n (_a = this.documentScroller) === null || _a === void 0 ? void 0 : _a.enableScrollEventsTracking();\n }\n disableDocumentScrollEventsTracking() {\n var _a;\n (_a = this.documentScroller) === null || _a === void 0 ? void 0 : _a.disableScrollEventsTracking();\n }\n getCurrentPageIndex() {\n return currentPage(this.element) || 0;\n }\n downloadFile({ fileName, saveOptions = {} }) {\n this.downloadDocument({\n options: {\n pdf: this.state.pdfDocument\n },\n fileName: fileName || this.options.downloadFileName,\n saveOptions: saveOptions\n });\n }\n downloadDocument({ options, fileName = \"Document\", saveOptions = {}, }) {\n if (options.pdf) {\n let exportMethod = options.pdf.getData.bind(options.pdf);\n let serializedAnnotationStorage = {};\n let originalAnnotationStorage = {};\n if (options.pdf.annotationStorage.size > 0) {\n exportMethod = options.pdf.saveDocument.bind(options.pdf);\n // saveDocument() has checks that test \"editor instanceof AnnotationEditor\", but they fail\n // because AnnotationEditor from \"pdfjs-dist/legacy/build/pdf.mjs\" is not exported\n // thus replace instances of editors with their serialized version\n // and then revert\n serializedAnnotationStorage = {};\n originalAnnotationStorage = options.pdf.annotationStorage.getAll();\n Object.keys(originalAnnotationStorage).forEach((key) => {\n serializedAnnotationStorage[key] = originalAnnotationStorage[key].toJSON();\n });\n Object.keys(originalAnnotationStorage).forEach((key) => {\n options.pdf.annotationStorage.remove(key);\n });\n Object.keys(serializedAnnotationStorage).forEach((key) => {\n options.pdf.annotationStorage.setValue(key, serializedAnnotationStorage[key]);\n });\n }\n exportMethod()\n .then((data) => {\n return new Blob([data], { type: 'application/pdf' });\n })\n .then((blob) => {\n if (!this.triggerDownload({ blob, fileName, saveOptions })) {\n this.saveFile(blob, fileName, saveOptions);\n }\n })\n .catch((e) => {\n this.triggerError(e);\n })\n .finally(() => {\n var _a;\n if (((_a = options.pdf) === null || _a === void 0 ? void 0 : _a.annotationStorage.size) <= 0) {\n return;\n }\n const currentAnnotationStorage = options.pdf.annotationStorage.getAll();\n Object.keys(currentAnnotationStorage).forEach((key) => {\n options.pdf.annotationStorage.remove(key);\n });\n Object.keys(originalAnnotationStorage).forEach((key) => {\n options.pdf.annotationStorage.setValue(key, originalAnnotationStorage[key]);\n });\n });\n }\n }\n ;\n saveFile(blob, fileName, saveOptions) {\n try {\n saveAs(blob, fileName, saveOptions);\n }\n catch (_a) {\n return false;\n }\n return true;\n }\n hasDocument() {\n return hasValue(this.state.pdfDocument);\n }\n zoom(args) {\n args.zoomLevel = this.calculateZoomLevel({\n zoomLevel: args.zoomLevel,\n zoomLevelType: args.zoomLevelType,\n currentZoom: this.options.zoomLevel,\n });\n this.options.zoomLevel = args.zoomLevel;\n this.state.zoomLevel = args.zoomLevel;\n this.eventBus.dispatch(\"scalechanging\", {\n source: this,\n scale: this.options.zoomLevel,\n });\n this.reloadFile(this.state.pdfDocument);\n }\n calculateZoomLevel({ zoomLevel, zoomLevelType, currentZoom }) {\n const documentContainer = this.getDocumentContainer();\n const page = documentContainer.querySelector(toClassSelector(this.options.elementSelectors.pageSelector));\n const pageSize = { width: page.offsetWidth, height: page.offsetHeight };\n let calculatedZoomLevel = clamp(zoomLevel || DEFAULT_ZOOM_LEVEL, this.options.minZoom, this.options.maxZoom);\n if (zoomLevelType === \"ActualWidth\" || zoomLevelType === \"actualWidth\") {\n calculatedZoomLevel = 1;\n }\n else if (zoomLevelType === \"FitToWidth\" || zoomLevelType === \"fitToWidth\") {\n calculatedZoomLevel = documentContainer.offsetWidth / (pageSize.width / currentZoom);\n }\n else if (zoomLevelType === \"FitToPage\" || zoomLevelType === \"fitToPage\") {\n calculatedZoomLevel = documentContainer.offsetHeight / (pageSize.height / currentZoom);\n }\n return calculatedZoomLevel;\n }\n reloadFile(pdfDoc) {\n const pagesPromises = [];\n for (let i = 1; i <= pdfDoc.numPages; i++) {\n pagesPromises.push(pdfDoc.getPage(i));\n }\n this.disableDocumentScrollEventsTracking();\n this.drawPagesFromPromisesAsync(pagesPromises)\n .then((pdfPages) => {\n this.setHiddenCanvasStyles();\n this.onPagesLoad({ pdfPages, pdfDoc });\n })\n .catch((e) => {\n this.triggerError(e);\n });\n this.setScaleFactor(this.state.zoomLevel);\n }\n setHiddenCanvasStyles() {\n if (!this.options.pdfjsSetHiddenCanvasStyles) {\n return;\n }\n // required after pdf.js 4.x version\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(`.hiddenCanvasElement {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n display: none;\n }`);\n this.getPagesContainer().ownerDocument.adoptedStyleSheets = [sheet];\n }\n printFile() {\n if (!this.hasDocument()) {\n return;\n }\n this.setState({\n isPrintingInProgress: true\n });\n if (this.options.zoomBeforePrint) {\n // such option existed in the Kendo jQuery version internally\n this.cacheZoomLevelBeforePrint();\n this.loadDocumentForPrintAsync({\n zoomLevel: this.options.zoomLevelBeforePrint,\n force: true\n })\n .then(() => {\n this.printDocumentAsync()\n .then(() => {\n this.trigger(PRINT_END);\n });\n })\n .catch(this.triggerError)\n .finally(() => {\n this.setState({\n isPrintingInProgress: false\n });\n this.restoreZoomLevelBeforePrint();\n });\n }\n else {\n this.loadDocumentForPrintAsync({\n zoomLevel: this.state.zoomLevel,\n force: true\n })\n .then(() => {\n this.printDocumentAsync()\n .then(() => {\n this.trigger(PRINT_END);\n });\n })\n .catch(this.triggerError)\n .finally(() => {\n this.setState({\n isPrintingInProgress: false\n });\n });\n }\n }\n loadDocumentForPrintAsync({ zoomLevel = DEFAULT_ZOOM_LEVEL, force = false }) {\n const pages = this.pages;\n const pageLoadPromises = [];\n const loadPromise = createPromise();\n for (let i = 0; i < pages.length; i++) {\n const pageLoadPromise = pages[i].loadForPrintAsync({\n zoomLevel: zoomLevel,\n force: force\n });\n pageLoadPromises.push(pageLoadPromise);\n }\n Promise.all(pageLoadPromises)\n .then(() => {\n // @ts-expect-error TS()\n loadPromise.resolve();\n });\n return loadPromise;\n }\n getPagesPrintContentAsync(printContainer) {\n const pages = this.pages;\n const pagePrintPromises = [];\n for (let i = 0; i < pages.length; i++) {\n const pagePrintPromise = pages[i].getPrintContentAsync();\n pagePrintPromise.then((pagePrintContent) => {\n const pageWrapper = convertToHtml(`
    `);\n pageWrapper.appendChild(pagePrintContent);\n printContainer.appendChild(pageWrapper);\n });\n pagePrintPromises.push(pagePrintPromise);\n }\n return pagePrintPromises;\n }\n initPrintContainer() {\n this.printContainer = convertToHtml(`
    `);\n }\n openPrintDialog() {\n const pages = this.pages;\n const width = pages[0].rawWidth;\n const height = pages[0].rawHeight;\n const printDialog = window.open('', '', 'innerWidth=' + width + ',innerHeight=' + height + 'location=no,titlebar=no,toolbar=no');\n if (!printDialog || !printDialog.document) {\n this.triggerError({\n message: this.options.messages.errorMessages.popupBlocked\n });\n return;\n }\n printDialog.document.body.style.margin = '0';\n printDialog.document.body.appendChild(this.printContainer);\n const afterPrintHandler = () => {\n printDialog.removeEventListener(\"afterprint\", afterPrintHandler);\n printDialog.close();\n };\n printDialog.addEventListener(\"afterprint\", afterPrintHandler);\n printDialog.focus();\n printDialog.print();\n // setTimeout(() => {\n // printDialog.print();\n // done();\n // });\n }\n cacheZoomLevelBeforePrint() {\n this.setState({\n zoomLevelBeforePrint: this.state.zoomLevel\n });\n }\n restoreZoomLevelBeforePrint() {\n if (this.state.zoomLevelBeforePrint === this.state.zoomLevel) {\n return;\n }\n this.zoom({\n zoomLevel: this.state.zoomLevelBeforePrint,\n zoomLevelType: this.state.zoomLevelType,\n currentZoom: this.state.zoomLevel\n });\n }\n searchText(options = { text: \"\", matchCase: false }) {\n var _a;\n this.initSearchService();\n const matches = (_a = this.searchService) === null || _a === void 0 ? void 0 : _a.search(options);\n return matches;\n }\n clearSearch() {\n this.destroySearchService();\n }\n initSearchService() {\n const textLayers = Array.from(this.wrapper.querySelectorAll(toClassSelector(this.options.elementSelectors.textLayerClass)) || []);\n if (this.searchService) {\n // refresh text nodes as text layers have changed\n if (textLayers.every((x, i) => x === this.searchService.options.textContainers[i])) {\n return;\n }\n else {\n this.destroySearchService();\n }\n }\n this.searchService = new SearchService({\n textContainers: textLayers,\n highlightClass: this.options.elementSelectors.searchHighlightClass,\n highlightMarkClass: this.options.elementSelectors.searchHighlightMarkClass,\n charClass: this.options.elementSelectors.charClass\n });\n }\n destroySearchService() {\n if (!this.searchService) {\n return;\n }\n this.searchService.destroy();\n this.searchService = null;\n }\n goToNextSearchMatch() {\n if (!this.searchService) {\n return;\n }\n this.searchService.markNextMatch();\n const matchElement = this.searchService.getActiveMatchElement();\n this.scrollToSearchMatch(matchElement);\n }\n goToPreviousSearchMatch() {\n if (!this.searchService) {\n return;\n }\n this.searchService.markPreviousMatch();\n const matchElement = this.searchService.getActiveMatchElement();\n this.scrollToSearchMatch(matchElement);\n }\n getPagesContainer() {\n return this.element.querySelector(toClassSelector(this.options.elementSelectors.pagesContainerClass));\n }\n getDocumentContainer() {\n return this.wrapper.querySelector(toClassSelector(this.options.elementSelectors.documentContainerClass));\n }\n getPagesElements() {\n const documentContainer = this.getDocumentContainer();\n if (!documentContainer) {\n return [];\n }\n return toArray(documentContainer.querySelectorAll(toClassSelector(this.options.elementSelectors.pageSelector)));\n }\n scrollToSearchMatch(matchElement) {\n if (!matchElement) {\n return;\n }\n const closestCharElement = matchElement.closest('.k-text-char');\n const closestTextElement = closestCharElement\n ? closestCharElement.closest('span[role=\"presentation\"]')\n : null;\n if (!closestTextElement) {\n return;\n }\n const closestPageElement = closestTextElement.closest('.k-page');\n if (!closestPageElement) {\n return;\n }\n const scrollLeft = closestPageElement.offsetLeft +\n -1 * this.documentScroller.element.offsetLeft +\n closestTextElement.offsetLeft +\n this.options.searchMatchScrollLeftOffset;\n const scrollTop = closestPageElement.offsetTop +\n -1 * this.documentScroller.element.offsetTop +\n closestTextElement.offsetTop +\n this.options.searchMatchScrollTopOffset;\n this.documentScroller.scrollTo(scrollLeft, scrollTop, { trackScrollEvent: false });\n }\n resetInteractionMode() {\n this.setInteractionMode({\n mode: PdfViewerInteractionMode.TextSelection\n });\n }\n setInteractionMode(args) {\n this.interactionMode = args.mode;\n if (this.interactionMode === PdfViewerInteractionMode.TextSelection) {\n this.disableScrollerEventsTracking();\n addClass(this.options.elementSelectors.enabledTextSelectionClass, this.documentScroller.element);\n removeClass(this.options.elementSelectors.enabledPanningClass, this.documentScroller.element);\n }\n else if (this.interactionMode === PdfViewerInteractionMode.Pan) {\n this.enableScrollerEventsTracking();\n removeClass(this.options.elementSelectors.enabledTextSelectionClass, this.documentScroller.element);\n addClass(this.options.elementSelectors.enabledPanningClass, this.documentScroller.element);\n }\n }\n enableScrollerEventsTracking() {\n if (!this.documentScroller) {\n return;\n }\n this.documentScroller.enablePanEventsTracking();\n }\n disableScrollerEventsTracking() {\n if (!this.documentScroller) {\n return;\n }\n this.documentScroller.disablePanEventsTracking();\n }\n setScaleFactor(scaleFactor) {\n this.element.style.setProperty('--scale-factor', String(scaleFactor * PixelsPerInch.PDF_TO_CSS_UNITS));\n }\n activatePageNumber(pageNumber) {\n const page = this.getPageByNumber(pageNumber);\n if (!page) {\n return;\n }\n const pageIndex = pageNumber - 1;\n if (this.state.activePageNumber === pageNumber) {\n return;\n }\n this.state.activePageNumber = pageNumber;\n if (page.isBlank()) {\n this.drawPageAsync({ pageIndex: pageIndex })\n .then(() => {\n this.scrollToPage({\n pageNumber\n });\n });\n }\n else {\n this.scrollToPage({\n pageNumber\n });\n }\n }\n scrollToPage({ pageNumber }) {\n const { left, top } = this.getPageNumberScrollOffset(pageNumber);\n this.scrollDocument({\n left: left,\n top: top\n });\n }\n scrollDocument({ left, top }) {\n var _a;\n (_a = this.documentScroller) === null || _a === void 0 ? void 0 : _a.scrollTo(left, top, {\n // as we are manually scrolling to the page\n // we want to ignore the scroller's element scroll event\n // to avoid double handling of the scrolling\n trackScrollEvent: false\n });\n }\n getPageNumberScrollOffset(pageNumber) {\n const page = this.getPageByNumber(pageNumber);\n if (!page) {\n return {\n left: 0,\n top: 0\n };\n }\n // pages might have different sizes\n // although pdf.js does not fully support this\n const previousPages = this.pages.slice(0, Math.max(0, pageNumber - 1));\n const previousPagesScrollOffset = previousPages\n .map(x => {\n const pageScrollOffset = this.getPageScrollOffset(x);\n return pageScrollOffset;\n })\n .reduce((sum, pageScrollOffset) => sum + pageScrollOffset, 0);\n return {\n left: 0,\n top: previousPagesScrollOffset\n };\n }\n getPageScrollOffset(page) {\n var _a;\n const pageHeight = ((_a = page === null || page === void 0 ? void 0 : page.element) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height) || 0;\n const computedStyles = getComputedStyle(page.element);\n const pageMarginTop = parseFloat(computedStyles.marginTop) || 0;\n return pageHeight + pageMarginTop;\n }\n getPageByNumber(pageNumber) {\n const page = this.pages && this.pages[pageNumber - 1];\n return page;\n }\n addHighlightAnnotation() {\n var _a;\n (_a = this.annotationEditorUIManager) === null || _a === void 0 ? void 0 : _a.highlightSelection();\n }\n setHighlightColor(color) {\n this.executeAnnotationCommand({\n commandType: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n commandValue: color\n });\n }\n deleteAnnotation() {\n var _a;\n (_a = this.annotationEditorUIManager) === null || _a === void 0 ? void 0 : _a.delete();\n }\n resetAnnotationEditorMode() {\n this.setAnnotationEditorMode({\n mode: AnnotationEditorType.NONE,\n editId: null,\n isFromKeyboard: false\n });\n }\n setAnnotationEditorMode(modeDescriptor) {\n this.annotationEditorMode = modeDescriptor;\n }\n setFreeTextColor(color) {\n this.executeAnnotationCommand({\n commandType: AnnotationEditorParamsType.FREETEXT_COLOR,\n commandValue: color\n });\n }\n setFreeTextFontSize(fontSize) {\n this.executeAnnotationCommand({\n commandType: AnnotationEditorParamsType.FREETEXT_SIZE,\n commandValue: parseFloat(fontSize)\n });\n }\n executeAnnotationCommand({ commandType, commandValue }) {\n this.eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: commandType,\n value: commandValue\n });\n }\n // todo: ported from pdf.js\n isValidAnnotationEditorMode(mode) {\n return Object.values(AnnotationEditorType).includes(mode) && mode !== AnnotationEditorType.DISABLE;\n }\n cleanupSwitchAnnotationEditorMode() {\n if (__classPrivateFieldGet(this, _PdfViewer_onPageRenderedCallback, \"f\")) {\n this.eventBus._off(\"pagerendered\", __classPrivateFieldGet(this, _PdfViewer_onPageRenderedCallback, \"f\"));\n __classPrivateFieldSet(this, _PdfViewer_onPageRenderedCallback, null, \"f\");\n }\n if (__classPrivateFieldGet(this, _PdfViewer_switchAnnotationEditorModeTimeoutId, \"f\") !== null) {\n clearTimeout(__classPrivateFieldGet(this, _PdfViewer_switchAnnotationEditorModeTimeoutId, \"f\"));\n __classPrivateFieldSet(this, _PdfViewer_switchAnnotationEditorModeTimeoutId, null, \"f\");\n }\n }\n _getVisiblePages() {\n // const views =\n // this._scrollMode === ScrollMode.PAGE\n // ? this.#scrollModePageState.pages\n // : this._pages,\n // horizontal = this._scrollMode === ScrollMode.HORIZONTAL,\n // rtl = horizontal && this._isContainerRtl;\n // return getVisibleElements({\n // scrollEl: this.container,\n // views,\n // sortByVisibility: true,\n // horizontal,\n // rtl,\n // });\n return this.pages;\n }\n get _layerProperties() {\n const self = this;\n return shadow(this, \"_layerProperties\", {\n get annotationEditorUIManager() {\n return self.annotationEditorUIManager;\n },\n get annotationStorage() {\n var _a;\n return (_a = self.pdfDocument) === null || _a === void 0 ? void 0 : _a.annotationStorage;\n },\n // get downloadManager() {\n // return self.downloadManager;\n // },\n // get enableScripting() {\n // return !!self._scriptingManager;\n // },\n // get fieldObjectsPromise() {\n // return self.pdfDocument?.getFieldObjects();\n // },\n // get findController() {\n // return self.findController;\n // },\n // get hasJSActionsPromise() {\n // return self.pdfDocument?.hasJSActions();\n // },\n get linkService() {\n return self.linkService;\n },\n });\n }\n /**\n * Scrolls page into view.\n * @param {ScrollPageIntoViewParameters} params\n */\n scrollPageIntoView({ pageNumber, destArray = null, allowNegativeOffset = false, ignoreDestinationZoom = false, }) {\n if (!this.pdfDocument) {\n return;\n }\n const pageView = Number.isInteger(pageNumber) && this.pages[pageNumber - 1];\n if (!pageView) {\n // console.error(\n // `scrollPageIntoView: \"${pageNumber}\" is not a valid pageNumber parameter.`\n // );\n return;\n }\n if (this.isInPresentationMode || !destArray) {\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n return;\n }\n let x = 0, y = 0;\n const width = 0, height = 0;\n // widthScale,\n // heightScale;\n const changeOrientation = pageView.rotation % 180 !== 0;\n // const pageWidth =\n // (changeOrientation ? pageView.height : pageView.width) /\n // pageView.scale /\n // PixelsPerInch.PDF_TO_CSS_UNITS;\n const pageHeight = (changeOrientation ? pageView.rawWidth : pageView.rawHeight) /\n pageView.scale /\n PixelsPerInch.PDF_TO_CSS_UNITS;\n // let scale: any = 0;\n switch (destArray[1].name) {\n case \"XYZ\":\n x = destArray[2];\n y = destArray[3];\n // scale = destArray[4];\n // If x and/or y coordinates are not supplied, default to\n // _top_ left of the page (not the obvious bottom left,\n // since aligning the bottom of the intended page with the\n // top of the window is rarely helpful).\n x = x !== null ? x : 0;\n y = y !== null ? y : pageHeight;\n break;\n // case \"Fit\":\n // case \"FitB\":\n // scale = \"page-fit\";\n // break;\n // case \"FitH\":\n // case \"FitBH\":\n // y = destArray[2];\n // scale = \"page-width\";\n // // According to the PDF spec, section 12.3.2.2, a `null` value in the\n // // parameter should maintain the position relative to the new page.\n // if (y === null && this._location) {\n // x = this._location.left;\n // y = this._location.top;\n // } else if (typeof y !== \"number\" || y < 0) {\n // // The \"top\" value isn't optional, according to the spec, however some\n // // bad PDF generators will pretend that it is (fixes bug 1663390).\n // y = pageHeight;\n // }\n // break;\n // case \"FitV\":\n // case \"FitBV\":\n // x = destArray[2];\n // width = pageWidth;\n // height = pageHeight;\n // scale = \"page-height\";\n // break;\n // case \"FitR\":\n // x = destArray[2];\n // y = destArray[3];\n // width = destArray[4] - x;\n // height = destArray[5] - y;\n // let hPadding = SCROLLBAR_PADDING,\n // vPadding = VERTICAL_PADDING;\n // if (\n // (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n // this.removePageBorders\n // ) {\n // hPadding = vPadding = 0;\n // }\n // widthScale =\n // (this.container.clientWidth - hPadding) /\n // width /\n // PixelsPerInch.PDF_TO_CSS_UNITS;\n // heightScale =\n // (this.container.clientHeight - vPadding) /\n // height /\n // PixelsPerInch.PDF_TO_CSS_UNITS;\n // scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n // break;\n default:\n // console.error(\n // `scrollPageIntoView: \"${destArray[1].name}\" is not a valid destination type.`\n // );\n return;\n }\n if (!ignoreDestinationZoom) {\n // if (scale && scale !== this.options.zoomLevel) {\n // }\n // if (scale && scale !== this._currentScale) {\n // this.currentScaleValue = scale;\n // } else if (this._currentScale === UNKNOWN_SCALE) {\n // this.currentScaleValue = DEFAULT_SCALE_VALUE;\n // }\n }\n // if (scale === \"page-fit\" && !destArray[4]) {\n // this.#scrollIntoView(pageView);\n // return;\n // }\n const boundingRect = [\n pageView.viewport.convertToViewportPoint(x, y),\n pageView.viewport.convertToViewportPoint(x + width, y + height),\n ];\n let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n if (!allowNegativeOffset) {\n // Some bad PDF generators will create destinations with e.g. top values\n // that exceeds the page height. Ensure that offsets are not negative,\n // to prevent a previous page from becoming visible (fixes bug 874482).\n left = Math.max(left, 0);\n top = Math.max(top, 0);\n }\n // left *= scale || this.state.zoomLevel;\n // top *= scale || this.state.zoomLevel;\n __classPrivateFieldGet(this, _PdfViewer_instances, \"m\", _PdfViewer_scrollIntoView).call(this, pageView, /* pageSpot = */ { left, top });\n }\n /**\n * @returns {boolean} Whether the pageNumber is valid (within bounds).\n * @private\n */\n _setCurrentPageNumber(val, resetCurrentPageView = false) {\n if (this._currentPageNumber === val) {\n if (resetCurrentPageView) {\n // this.#resetCurrentPageView();\n }\n return true;\n }\n // if (!(0 < val && val <= this.pagesCount)) {\n if (!(0 < val && val <= this.state.pdfDocument.numPages)) {\n return false;\n }\n const previous = this._currentPageNumber;\n this._currentPageNumber = val;\n this.eventBus.dispatch(\"pagechanging\", {\n source: this,\n pageNumber: val,\n // pageLabel: this._pageLabels?.[val - 1] ?? null,\n previous,\n });\n // if (resetCurrentPageView) {\n // this.#resetCurrentPageView();\n // }\n return true;\n }\n}\n_PdfViewer_annotationEditorMode = new WeakMap(), _PdfViewer_switchAnnotationEditorModeTimeoutId = new WeakMap(), _PdfViewer_eventAbortController = new WeakMap(), _PdfViewer_onPageRenderedCallback = new WeakMap(), _PdfViewer_instances = new WeakSet(), _PdfViewer_switchToEditAnnotationMode = function _PdfViewer_switchToEditAnnotationMode() {\n // const visible = this._getVisiblePages();\n // const visible = this._getVisiblePages();\n const pagesToRefresh = [];\n // const { ids, views } = visible;\n // for (const page of views) {\n const ids = new Set();\n this.pages.forEach(x => {\n ids.add(x.id);\n });\n for (const page of this.pages) {\n // const { view } = page;\n const view = page;\n if (!view.hasEditableAnnotations()) {\n ids.delete(view.id);\n continue;\n }\n pagesToRefresh.push(page);\n }\n if (pagesToRefresh.length === 0) {\n return null;\n }\n // this.renderingQueue.renderHighestPriority({\n // first: pagesToRefresh[0],\n // last: pagesToRefresh.at(-1),\n // views: pagesToRefresh,\n // ids,\n // });\n // todo: render pages instead of using renderingQueue\n // as this will require porting more code\n this.drawPagesAsync(this.state.pdfPages);\n return ids;\n}, _PdfViewer_scrollIntoView = function _PdfViewer_scrollIntoView(pageView, pageSpot = null) {\n const { div, id } = pageView;\n // Ensure that `this._currentPageNumber` is correct, when `#scrollIntoView`\n // is called directly (and not from `#resetCurrentPageView`).\n if (this._currentPageNumber !== id) {\n this._setCurrentPageNumber(id);\n }\n // if (this._scrollMode === ScrollMode.PAGE) {\n // this.#ensurePageViewVisible();\n // // Ensure that rendering always occurs, to avoid showing a blank page,\n // // even if the current position doesn't change when the page is scrolled.\n // this.update();\n // }\n if (!pageSpot && !this.isInPresentationMode) {\n const left = div.offsetLeft + div.clientLeft, right = left + div.clientWidth;\n // const { scrollLeft, clientWidth } = this.container;\n const { scrollLeft, clientWidth } = this.element;\n if (this._scrollMode === ScrollMode.HORIZONTAL ||\n left < scrollLeft ||\n right > scrollLeft + clientWidth) {\n pageSpot = { left: 0, top: 0 };\n }\n }\n scrollIntoView(div, pageSpot);\n // // Ensure that the correct *initial* document position is set, when any\n // // OpenParameters are used, for documents with non-default Scroll/Spread\n // // modes (fixes issue 15695). This is necessary since the scroll-handler\n // // invokes the `update`-method asynchronously, and `this._location` could\n // // thus be wrong when the initial zooming occurs in the default viewer.\n // if (!this._currentScaleValue && this._location) {\n // this._location = null;\n // }\n};\n","var filterFunctionFormats = {\n contains: \", InStr({0}.CurrentMember.MEMBER_CAPTION,\\\"{1}\\\") > 0\",\n doesnotcontain: \", InStr({0}.CurrentMember.MEMBER_CAPTION,\\\"{1}\\\")\",\n endswith: \", Right({0}.CurrentMember.MEMBER_CAPTION,Len(\\\"{1}\\\"))=\\\"{1}\\\"\",\n eq: \", {0}.CurrentMember.MEMBER_CAPTION = \\\"{1}\\\"\",\n neq: \", {0}.CurrentMember.MEMBER_CAPTION = \\\"{1}\\\"\",\n startswith: \", Left({0}.CurrentMember.MEMBER_CAPTION,Len(\\\"{1}\\\"))=\\\"{1}\\\"\"\n};\nvar operators = {\n doesnotcontain: 'doesnotcontain',\n in: 'in',\n neq: \"neq\"\n};\n/**\n * @hidden\n */\nexport function serializeFilters(filters, cube) {\n var command = \"\";\n var current = \"\";\n for (var idx = filters.length - 1; idx >= 0; idx--) {\n current = \"SELECT (\";\n current += serializeExpression(filters[idx]);\n current += \") ON 0\";\n if (idx === filters.length - 1) {\n current += \" FROM [\" + cube + \"]\";\n command = current;\n }\n else {\n command = current + \" FROM ( \" + command + \" )\";\n }\n }\n return command;\n}\nfunction serializeExpression(expression) {\n var command = '';\n var value = String(expression.value);\n var field = expression.field;\n var operator = expression.operator;\n if (operator === operators.in) {\n command += \"{\";\n command += value;\n command += \"}\";\n }\n else {\n command += operator === operators.neq || operator === operators.doesnotcontain ? '-' : '';\n command += \"Filter(\";\n command += field + \".MEMBERS\";\n command += formatString(filterFunctionFormats[operator], field, value);\n command += \")\";\n }\n return command;\n}\nfunction formatString(str) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n values.forEach(function (value, index) {\n str = str.replace(new RegExp(\"\\\\{\" + index + \"\\\\}\", 'g'), value);\n });\n return str;\n}\n","/**\n * @hidden\n */\nexport function serializeMembers(members, measures, sort) {\n var command = \"\";\n members = members || [];\n var parsed = parseDescriptors(members);\n var expanded = parsed.expanded;\n var rootNames = getRootNames(parsed.root);\n var crossJoinCommands = [];\n var length = expanded.length;\n var idx = 0;\n var memberName;\n var names = [];\n if (rootNames.length > 1 || measures.length > 1) {\n crossJoinCommands.push(crossJoinCommand(rootNames, measures));\n for (; idx < length; idx++) {\n memberName = expandMemberDescriptor(expanded[idx].name, sort);\n names = mapNames(memberName, rootNames);\n crossJoinCommands.push(crossJoinCommand(names, measures));\n }\n command += crossJoinCommands.join(\",\");\n }\n else {\n for (; idx < length; idx++) {\n memberName = expandMemberDescriptor(expanded[idx].name, sort);\n names.push(memberName[0]);\n }\n command += rootNames.concat(names).join(\",\");\n }\n return command;\n}\n/**\n * @hidden\n */\nexport function measureNames(measures) {\n var length = measures.length;\n var result = [];\n var measure;\n for (var idx = 0; idx < length; idx++) {\n measure = measures[idx];\n result.push(measure.name !== undefined ? measure.name : measure);\n }\n return result;\n}\nfunction getRootNames(members) {\n var root = [];\n members.forEach(function (member) {\n var name = member.name[0];\n var hierarchyName = baseHierarchyPath(name);\n if (!root.some(function (n) { return n.indexOf(hierarchyName) === 0; })) {\n root.push(name);\n }\n });\n return root;\n}\nfunction parseDescriptors(members) {\n var expanded = [];\n var child = [];\n var root = [];\n var idx = 0;\n var found;\n for (; idx < members.length; idx++) {\n var member = members[idx];\n var name_1 = member.name;\n found = false;\n if (name_1.length > 1) {\n child.push(member);\n }\n else {\n var hierarchyName = baseHierarchyPath(name_1[0]);\n for (var j = 0, l = root.length; j < l; j++) {\n if (root[j].name[0].indexOf(hierarchyName) === 0) {\n found = true;\n break;\n }\n }\n if (!found) {\n root.push(member);\n }\n if (member.expand) {\n expanded.push(member);\n }\n }\n }\n expanded = expanded.concat(child);\n return {\n expanded: expanded,\n root: root\n };\n}\nfunction mapNames(names, rootNames) {\n var rootLength = rootNames.length;\n rootNames = rootNames.slice(0);\n for (var idx = 0; idx < names.length; idx++) {\n var name_2 = names[idx];\n for (var j = 0; j < rootLength; j++) {\n var rootName = baseHierarchyPath(rootNames[j]);\n if (name_2.indexOf(rootName) !== -1) {\n rootNames[j] = name_2;\n break;\n }\n }\n }\n return rootNames;\n}\nfunction crossJoinCommand(members, measures) {\n var tmp = members.slice(0);\n if (measures.length > 1) {\n tmp.push(\"{\" + measureNames(measures).join(\",\") + \"}\");\n }\n return crossJoin(tmp);\n}\nfunction expandMemberDescriptor(names, sort) {\n var idx = names.length - 1;\n var name = names[idx];\n var sortDescriptor = sortDescriptorForMember(sort, name);\n if (sortDescriptor && sortDescriptor.dir) {\n name = \"ORDER(\" + name + \".Children,\" + sortDescriptor.field + \".CurrentMember.MEMBER_CAPTION,\" + sortDescriptor.dir + \")\";\n }\n else {\n name += \".Children\";\n }\n names[idx] = name;\n return names;\n}\nfunction sortDescriptorForMember(sort, member) {\n for (var idx = 0, length_1 = sort.length; idx < length_1; idx++) {\n if (member.indexOf(sort[idx].field) === 0) {\n return sort[idx];\n }\n }\n return null;\n}\nfunction baseHierarchyPath(memberName) {\n var parts = memberName.split(\".\");\n if (parts.length > 2) {\n return parts[0] + \".\" + parts[1];\n }\n return memberName;\n}\nfunction crossJoin(names) {\n var result = \"CROSSJOIN({\";\n var name;\n if (names.length > 2) {\n name = names.pop();\n result += crossJoin(names);\n }\n else {\n result += names.shift();\n name = names.pop();\n }\n result += \"},{\";\n result += name;\n result += \"})\";\n return result;\n}\n","import { serializeFilters } from './serializers/filters';\nimport { measureNames, serializeMembers } from './serializers/members';\n/**\n * @hidden\n */\nexport function createRequestBody(options) {\n var command = '
    ';\n var _a = options.columnAxes, columnAxes = _a === void 0 ? [] : _a, _b = options.rowAxes, rowAxes = _b === void 0 ? [] : _b;\n var _c = options.measureAxes, measureAxes = _c === void 0 ? [] : _c, _d = options.sort, sort = _d === void 0 ? [] : _d, _e = options.filter, filter = _e === void 0 ? [] : _e;\n var measuresRowAxis = options.measuresAxis === \"rows\";\n command += \"SELECT NON EMPTY {\";\n if (!columnAxes.length && rowAxes.length && (!measureAxes.length || (measureAxes.length && measuresRowAxis))) {\n columnAxes = rowAxes;\n rowAxes = [];\n measuresRowAxis = false;\n }\n if (!columnAxes.length && !rowAxes.length) {\n measuresRowAxis = false;\n }\n if (columnAxes.length) {\n command += serializeMembers(columnAxes, !measuresRowAxis ? measureAxes : [], sort);\n }\n else if (measureAxes.length && !measuresRowAxis) {\n command += measureNames(measureAxes).join(\",\");\n }\n command += \"} DIMENSION PROPERTIES CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON COLUMNS\";\n if (rowAxes.length || (measuresRowAxis && measureAxes.length > 1)) {\n command += \", NON EMPTY {\";\n if (rowAxes.length) {\n command += serializeMembers(rowAxes, measuresRowAxis ? measureAxes : [], sort);\n }\n else {\n command += measureNames(measureAxes).join(\",\");\n }\n command += \"} DIMENSION PROPERTIES CHILDREN_CARDINALITY, PARENT_UNIQUE_NAME ON ROWS\";\n }\n if (filter.length) {\n command += \" FROM \";\n command += \"(\";\n command += serializeFilters(filter, options.connection.cube);\n command += \")\";\n }\n else {\n command += \" FROM [\" + options.connection.cube + \"]\";\n }\n if (measureAxes.length === 1 && columnAxes.length) {\n command += \" WHERE (\" + measureNames(measureAxes).join(\",\") + \")\";\n }\n command += '' + options.connection.catalog + 'Multidimensional';\n return command.replace(/&/g, \"&\");\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/* global Reflect, Promise */\r\n\r\nvar 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\r\nexport function __extends(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\nexport var __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\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(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\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __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};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @hidden\n */\nexport function parseResponse(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var axes = Array.from(xmlDoc.querySelectorAll(\"Axis\"));\n var cells = Array.from(xmlDoc.querySelectorAll(\"CellData > Cell\"))\n .map(function (cell) { return ({\n fmtValue: getPropertyValue(cell, \"FmtValue\"),\n ordinal: parseInt(cell.getAttribute(\"CellOrdinal\"), 10),\n value: getPropertyValue(cell, \"Value\")\n }); });\n var columns = { tuples: [] };\n var rows = { tuples: [] };\n var data = [];\n axes.forEach(function (axis) {\n if (axis.getAttribute('name') !== \"SlicerAxis\") {\n var tuples = columns.tuples.length === 0 ? columns.tuples : rows.tuples;\n Array.prototype.push.apply(tuples, translateAxis(axis));\n }\n });\n var indexedData = new Array(rows.tuples.length * columns.tuples.length).fill(null);\n cells.forEach(function (c) { indexedData[c.ordinal] = c; });\n var counter = 0;\n rows.tuples.forEach(function (rowTuple) {\n columns.tuples.forEach(function (colTuple) {\n data.push({\n columnTuple: colTuple,\n data: indexedData[counter],\n rowTuple: rowTuple\n });\n counter++;\n });\n });\n return { columns: columns, data: data, rows: rows };\n}\n/**\n * @hidden\n */\nexport function getPropertyValue(member, name) {\n var node = member.querySelector(name);\n return node ? node.textContent : \"\";\n}\nfunction translateAxis(axis) {\n var tuples = Array.from(axis.querySelectorAll(\"Tuple\"));\n return tuples.map(function (tuple) {\n var memberElements = Array.from(tuple.querySelectorAll(\"Member\"));\n var members = memberElements.map(function (member) {\n var lNum = parseInt(getPropertyValue(member, \"LNum\") || \"0\", 10);\n var hasChildren = parseInt(getPropertyValue(member, \"CHILDREN_CARDINALITY\") || \"0\", 10) > 0;\n return {\n caption: getPropertyValue(member, \"Caption\"),\n children: [],\n hasChildren: hasChildren,\n hierarchy: member.getAttribute('Hierarchy'),\n levelName: getPropertyValue(member, \"LName\"),\n levelNum: lNum,\n name: getPropertyValue(member, \"UName\"),\n parentName: getPropertyValue(member, \"PARENT_UNIQUE_NAME\")\n };\n });\n return { members: members };\n });\n}\n","/**\n * @hidden\n */\nexport var discoverCommands = {\n schemaCatalogs: \"DBSCHEMA_CATALOGS\",\n schemaCubes: \"MDSCHEMA_CUBES\",\n schemaDimensions: \"MDSCHEMA_DIMENSIONS\",\n schemaHierarchies: \"MDSCHEMA_HIERARCHIES\",\n schemaKPIs: \"MDSCHEMA_KPIS\",\n schemaLevels: \"MDSCHEMA_LEVELS\",\n schemaMeasures: \"MDSCHEMA_MEASURES\",\n schemaMembers: \"MDSCHEMA_MEMBERS\"\n};\n/**\n * @hidden\n */\nexport function createDiscoverBody(options) {\n var properties = {};\n var command = '
    ';\n command += \"\" + (discoverCommands[options.command] || options.command) + \"\";\n command += \"\" + serializeOptions(\"RestrictionList\", options.restrictions, true) + \"\";\n if (options.connection && options.connection.catalog) {\n properties.Catalog = options.connection.catalog;\n }\n command += \"\" + serializeOptions(\"PropertyList\", properties, false) + \"\";\n command += '';\n return command;\n}\nfunction serializeOptions(parentTagName, options, capitalize) {\n var result = \"\";\n if (options) {\n result += \"<\" + parentTagName + \">\";\n var value = void 0;\n for (var key in options) {\n if (options[key]) {\n value = options[key];\n if (capitalize) {\n key = key.replace(/([A-Z]+(?=$|[A-Z][a-z])|[A-Z]?[a-z]+)/g, \"$1_\").toUpperCase().replace(/_$/, \"\");\n }\n result += \"<\" + key + \">\" + value + \"\";\n }\n }\n result += \"\";\n }\n else {\n result += \"<\" + parentTagName + \"/>\";\n }\n return result;\n}\n","var _this = this;\nimport * as tslib_1 from \"tslib\";\nimport { createRequestBody } from \"./requestBuilder\";\nimport { parseResponse } from \"../responses/responseParser\";\nimport { createDiscoverBody } from './discover';\nimport { parseMeasures, parseMembers, parseLevels, parseKPIs, parseHierarchies, parseDimensions, parseCubes, parseCatalogs } from '../responses/discoverParser';\nvar discoverParser = {\n schemaCatalogs: parseCatalogs,\n schemaCubes: parseCubes,\n schemaDimensions: parseDimensions,\n schemaHierarchies: parseHierarchies,\n schemaKPIs: parseKPIs,\n schemaLevels: parseLevels,\n schemaMeasures: parseMeasures,\n schemaMembers: parseMembers\n};\n/**\n * Fetches the data.\n *\n * @param options RequestOptions\n * @returns Promise\n *\n * @example\n * const options: RequestOptions = { ... };\n *\n * fetchData(options).then(createDataState).then((dataState: DataState) => {\n * // Update the UI\n * });\n */\n/**\n * @hidden\n */\nexport var fetchData = function (fetchOptions, options) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var init, response, stringResponse;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n init = tslib_1.__assign({ body: createRequestBody(options), headers: { 'Content-Type': 'text/xml' }, method: 'POST' }, fetchOptions.init);\n return [4 /*yield*/, fetch(fetchOptions.url, init)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.text()];\n case 2:\n stringResponse = _a.sent();\n return [2 /*return*/, parseResponse(stringResponse)];\n }\n });\n}); };\n/**\n * @hidden\n */\nexport var fetchDiscover = function (fetchOptions, options) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var init, response, stringResponse;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n init = tslib_1.__assign({ body: createDiscoverBody(options), headers: { 'Content-Type': 'text/xml' }, method: 'POST' }, fetchOptions.init);\n return [4 /*yield*/, fetch(fetchOptions.url, init)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.text()];\n case 2:\n stringResponse = _a.sent();\n return [2 /*return*/, discoverParser[options.command](stringResponse)];\n }\n });\n}); };\n","import { getPropertyValue } from './responseParser';\n/**\n * @hidden\n */\nexport function parseCubes(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n name: getPropertyValue(row, \"CUBE_NAME\"),\n caption: getPropertyValue(row, \"CUBE_CAPTION\"),\n description: getPropertyValue(row, \"DESCRIPTION\"),\n type: getPropertyValue(row, \"CUBE_TYPE\")\n }); });\n return rows;\n}\n/**\n * @hidden\n */\nexport function parseCatalogs(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n name: getPropertyValue(row, \"CATALOG_NAME\"),\n description: getPropertyValue(row, \"DESCRIPTION\")\n }); });\n return rows;\n}\n/**\n * @hidden\n */\nexport function parseMeasures(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n name: getPropertyValue(row, \"MEASURE_NAME\"),\n caption: getPropertyValue(row, \"MEASURE_CAPTION\"),\n uniqueName: getPropertyValue(row, \"MEASURE_UNIQUE_NAME\"),\n description: getPropertyValue(row, \"DESCRIPTION\"),\n aggregator: getPropertyValue(row, \"MEASURE_AGGREGATOR\"),\n groupName: getPropertyValue(row, \"MEASUREGROUP_NAME\"),\n displayFolder: getPropertyValue(row, \"MEASURE_DISPLAY_FOLDER\"),\n defaultFormat: getPropertyValue(row, \"DEFAULT_FORMAT_STRING\")\n }); });\n return rows;\n}\n/**\n * @hidden\n */\nexport function parseKPIs(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n name: getPropertyValue(row, \"KPI_NAME\"),\n uniqueName: getPropertyValue(row, \"KPI_NAME\"),\n caption: getPropertyValue(row, \"KPI_CAPTION\"),\n value: getPropertyValue(row, \"KPI_VALUE\"),\n goal: getPropertyValue(row, \"KPI_GOAL\"),\n status: getPropertyValue(row, \"KPI_STATUS\"),\n trend: getPropertyValue(row, \"KPI_TREND\"),\n statusGraphic: getPropertyValue(row, \"KPI_STATUS_GRAPHIC\"),\n trendGraphic: getPropertyValue(row, \"KPI_TREND_GRAPHIC\"),\n description: getPropertyValue(row, \"KPI_DESCRIPTION\"),\n groupName: getPropertyValue(row, \"MEASUREGROUP_NAME\"),\n type: \"kpi\"\n }); });\n return rows;\n}\n/**\n * @hidden\n */\nexport function parseDimensions(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n caption: getPropertyValue(row, \"DIMENSION_CAPTION\"),\n defaultHierarchy: getPropertyValue(row, \"DEFAULT_HIERARCHY\"),\n description: getPropertyValue(row, \"DESCRIPTION\"),\n name: getPropertyValue(row, \"DIMENSION_NAME\"),\n type: parseInt(getPropertyValue(row, \"DIMENSION_TYPE\"), 10),\n uniqueName: getPropertyValue(row, \"DIMENSION_UNIQUE_NAME\")\n }); });\n return rows;\n}\n/**\n * @hidden\n */\nexport function parseHierarchies(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n name: getPropertyValue(row, \"HIERARCHY_NAME\"),\n caption: getPropertyValue(row, \"HIERARCHY_CAPTION\"),\n description: getPropertyValue(row, \"DESCRIPTION\"),\n uniqueName: getPropertyValue(row, \"HIERARCHY_UNIQUE_NAME\"),\n dimensionUniqueName: getPropertyValue(row, \"DIMENSION_UNIQUE_NAME\"),\n displayFolder: getPropertyValue(row, \"HIERARCHY_DISPLAY_FOLDER\"),\n origin: getPropertyValue(row, \"HIERARCHY_ORIGIN\"),\n defaultMember: getPropertyValue(row, \"DEFAULT_MEMBER\")\n }); });\n return rows;\n}\n/**\n * @hidden\n */\nexport function parseLevels(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n name: getPropertyValue(row, \"LEVEL_NAME\"),\n caption: getPropertyValue(row, \"LEVEL_CAPTION\"),\n description: getPropertyValue(row, \"DESCRIPTION\"),\n uniqueName: getPropertyValue(row, \"LEVEL_UNIQUE_NAME\"),\n dimensionUniqueName: getPropertyValue(row, \"DIMENSION_UNIQUE_NAME\"),\n displayFolder: getPropertyValue(row, \"LEVEL_DISPLAY_FOLDER\"),\n orderingProperty: getPropertyValue(row, \"LEVEL_ORDERING_PROPERTY\"),\n origin: getPropertyValue(row, \"LEVEL_ORIGIN\"),\n hierarchyUniqueName: getPropertyValue(row, \"HIERARCHY_UNIQUE_NAME\")\n }); });\n return rows;\n}\n/**\n * @hidden\n */\nexport function parseMembers(response) {\n var xmlDoc = new DOMParser().parseFromString(response, \"text/xml\");\n var rows = Array.from(xmlDoc.querySelectorAll(\"DiscoverResponse > return > root > row\"))\n .map(function (row) { return ({\n name: getPropertyValue(row, \"MEMBER_NAME\"),\n caption: getPropertyValue(row, \"MEMBER_CAPTION\"),\n uniqueName: getPropertyValue(row, \"MEMBER_UNIQUE_NAME\"),\n dimensionUniqueName: getPropertyValue(row, \"DIMENSION_UNIQUE_NAME\"),\n hierarchyUniqueName: getPropertyValue(row, \"HIERARCHY_UNIQUE_NAME\"),\n levelUniqueName: getPropertyValue(row, \"LEVEL_UNIQUE_NAME\"),\n childrenCardinality: getPropertyValue(row, \"CHILDREN_CARDINALITY\")\n }); });\n return rows;\n}\n","import * as tslib_1 from \"tslib\";\nvar isMeasure = function (member) { return member.hierarchy === '[Measures]'; };\n// A typical tree depth count won't work for the Pivot,\n// as each branch can have lower number of nodes than the total number of levels\n/**\n * @hidden\n */\nexport var getMaxNesting = function (node, set) {\n if (set === void 0) { set = new Set(); }\n (node.children || []).forEach(function (child) {\n set.add(child.levelName);\n getMaxNesting(child, set);\n });\n return set.size;\n};\n/**\n * @hidden\n */\nexport var getMaxExpansion = function (node) {\n var expanded = 0;\n (node.children || []).forEach(function (child) {\n expanded += (getMaxExpansion(child) || 1);\n });\n return expanded;\n};\n/**\n * @hidden\n */\nexport var generateNormalizedPath = function (node, parent) {\n return (parent && (parent.hierarchy === node.hierarchy)\n ? (parent.normalizedPath || []).slice(0, -1).concat([node.name || null]) : ((parent && parent.normalizedPath) ? parent.normalizedPath : []).concat([node.name])).filter(Boolean);\n};\n/**\n * @hidden\n */\nexport var generatePath = function (node, parent) {\n return (parent && (parent.hierarchy === node.hierarchy)\n ? (parent.path || []).slice(0, -1).concat([((node.levelNum === 0 ? node.hierarchy : node.name) || null)]) : ((parent && parent.path) ? parent.path : []).concat([node.levelNum === 0 ? node.hierarchy : node.name])).filter(Boolean);\n};\n/**\n * @hidden\n */\nexport var toMatrix = function (node, rowIndex, colIndex, maxDepth, maxBreadth, matrix, leafs, parent) {\n if (rowIndex === void 0) { rowIndex = -1; }\n if (colIndex === void 0) { colIndex = 0; }\n if (maxDepth === void 0) { maxDepth = undefined; }\n if (maxBreadth === void 0) { maxBreadth = undefined; }\n if (matrix === void 0) { matrix = undefined; }\n if (leafs === void 0) { leafs = undefined; }\n if (parent === void 0) { parent = undefined; }\n var branchDepth = getMaxNesting(node);\n var branchBreadth = getMaxExpansion(node);\n var depth = maxDepth || branchDepth;\n var breadth = maxBreadth || branchBreadth;\n var matrixResult = matrix ? matrix.slice() : [];\n var leafsResult = leafs ? leafs.slice() : new Array(breadth);\n var index = matrixResult.findIndex(function (l) { return l && l.name === node.levelName && l.level === node.levelNum; });\n var level = matrixResult[index];\n var row = {\n name: node.levelName,\n level: node.levelNum,\n index: rowIndex,\n cells: new Array(breadth).fill(null)\n };\n var inject = rowIndex !== -1 && colIndex !== -1;\n var cell = {\n caption: node.caption,\n name: node.name,\n levelName: node.levelName,\n levelNum: node.levelNum,\n hasChildren: node.hasChildren,\n parentName: node.parentName,\n hierarchy: node.hierarchy,\n total: (node.total !== undefined ? node.total : false) || (parent && parent.children.length <= 1 && parent.total),\n parent: parent,\n rowIndex: rowIndex,\n colIndex: colIndex,\n depth: 1,\n breadth: 1,\n path: node.path || [],\n normalizedPath: node.normalizedPath || [],\n children: node.children.filter(function (c) { return c.hierarchy === node.hierarchy; })\n };\n if (inject) {\n if (level) {\n level.cells[colIndex] = cell;\n if (level.index >= rowIndex) {\n rowIndex = level.index;\n }\n }\n else {\n if (matrixResult[rowIndex] && matrixResult[rowIndex].cells.length) {\n for (var idx = rowIndex; idx < matrixResult.length; idx++) {\n var shiftedRow = matrixResult[idx];\n shiftedRow.index++;\n }\n matrixResult.splice(rowIndex, 0, row);\n matrixResult[rowIndex].cells[colIndex] = cell;\n }\n else {\n matrixResult[rowIndex] = row;\n matrixResult[rowIndex].cells[colIndex] = cell;\n }\n }\n }\n var collOffset = 0;\n if (node.children && node.children.length) {\n node.children.forEach(function (child) {\n var _a = toMatrix(child, rowIndex + 1, colIndex + collOffset, depth, breadth, matrixResult, leafsResult, cell), newMatrix = _a[0], newLeafs = _a[1], childBreadth = _a[3];\n collOffset += (childBreadth || 1);\n matrixResult = newMatrix.slice();\n leafsResult = newLeafs.slice();\n });\n }\n else if (node.normalizedPath) {\n leafsResult[colIndex] = { total: cell.total, path: node.normalizedPath };\n }\n cell.depth = branchDepth;\n cell.breadth = branchBreadth;\n return [\n matrixResult,\n leafsResult,\n branchDepth,\n branchBreadth\n ];\n};\nvar withTotal = function (root, parent, index) {\n if (parent === void 0) { parent = null; }\n if (index === void 0) { index = 0; }\n var hierarchy;\n var alt = tslib_1.__assign({}, root, { total: true, hasChildren: false, children: [] });\n for (var childIndex = 0; childIndex < root.children.length; childIndex++) {\n var child = withTotal(root.children[childIndex], root, childIndex);\n hierarchy = hierarchy || child.hierarchy;\n if (child.hierarchy !== hierarchy\n && parent\n && !parent.children.some(function (c) { return c.total && c.name === alt.name; })\n && !root.total) {\n alt.children.push(child);\n root.children.splice(childIndex, 1);\n childIndex--;\n }\n }\n if (root.children.filter(function (c) { return !c.total; }).length >= 1\n && parent\n && !parent.children.some(function (c) { return c.total && c.name === alt.name; })\n && !root.total) {\n var childHierarchy = root.children[0].hierarchy;\n if (root.hierarchy === childHierarchy) {\n parent.children.splice(index + 1, 0, alt);\n }\n }\n return root;\n};\n/**\n * @hidden\n */\nexport var toTree = function (tuples) {\n var root = { children: [] };\n var map = {};\n if (tuples.every(function (t) { return t.members.length === 1 && isMeasure(t.members[0]); })) {\n // toTree(columnsTuples) - The case where there are only measure(s) and no columns.\n return {\n children: tuples.map(function (t) {\n var member = t.members[0];\n return tslib_1.__assign({}, member, { normalizedPath: [member.name], parentName: member.name, path: [member.hierarchy] });\n })\n };\n }\n for (var tupleIndex = 0; tupleIndex < tuples.length; tupleIndex++) {\n var tuple = copy(tuples[tupleIndex]);\n var key = \"\";\n var _loop_1 = function (memberIndex) {\n var member = tuple.members[memberIndex];\n var parent_1;\n if (root.children && root.children.length === 0) {\n parent_1 = root;\n }\n else if (map[key] && !map[key + member.name] && member.levelNum === 0) {\n parent_1 = map[key];\n }\n else if (map[key + member.parentName] && member.levelNum > 0 && !map[key + member.parentName + member.name]) {\n parent_1 = map[key + member.parentName];\n }\n else if (!map[key + member.parentName] && member.levelNum > 0 && !map[key + member.parentName + member.name]) {\n var parentKey = Object.keys(map).find(function (e) { return member.parentName === map[e].name; });\n if (parentKey) {\n parent_1 = map[parentKey];\n }\n }\n if (parent_1) {\n member.path = generatePath(member, parent_1);\n member.normalizedPath = generateNormalizedPath(member, parent_1);\n var intruderIndex = parent_1.children.findIndex(function (c) { return c.hierarchy !== parent_1.hierarchy; });\n if (intruderIndex !== -1) {\n parent_1.children.splice(intruderIndex, 0, member);\n }\n else {\n parent_1.children.push(member);\n }\n }\n member.parentName += member.name;\n key += member.parentName;\n if (!map[key]) {\n map[key] = member;\n }\n };\n for (var memberIndex = 0; memberIndex < tuple.members.length; memberIndex++) {\n _loop_1(memberIndex);\n }\n }\n return copy(withTotal(root));\n};\n/**\n * @hidden\n */\nexport var toData = function (data, columns, rows, breadth, depth) {\n var result = Array.from(new Array(depth), function () { return ({ cells: Array.from(new Array(breadth), function () { return null; }) }); });\n var hash = function (names) { return names.join('|'); };\n var membersNames = function (tuple) { return tuple.members.map(function (m) { return m.name; }); };\n var columnsIndexes = new Map();\n var rowsIndexes = new Map();\n columns.forEach(function (colMembers, idx) { columnsIndexes.set(hash(colMembers.path), idx); });\n rows.forEach(function (rowMembers, idx) { rowsIndexes.set(hash(rowMembers.path), idx); });\n data.forEach(function (item) {\n var colIndex = columnsIndexes.get(hash(membersNames(item.columnTuple)));\n var rowIndex = rowsIndexes.get(hash(membersNames(item.rowTuple)));\n if (colIndex !== undefined && rowIndex !== undefined) {\n if (!result[rowIndex].cells[colIndex]) {\n result[rowIndex].row = rows[rowIndex].path;\n result[rowIndex].cells[colIndex] = item;\n }\n }\n });\n return result;\n};\nvar rotateMatrix = function (matrix, leafs, depth, breadth) {\n var result = new Array(breadth);\n for (var colIndex = 0; colIndex < breadth; colIndex++) {\n for (var rowIndex = 0; rowIndex < depth; rowIndex++) {\n if (matrix[rowIndex] && matrix[rowIndex].cells[colIndex]) {\n var cell = matrix[rowIndex].cells[colIndex];\n if (!result[colIndex]) {\n result[colIndex] = {\n cells: new Array(depth).fill(null)\n };\n }\n result[colIndex].cells[rowIndex] = tslib_1.__assign({}, cell, { rowSpan: cell.colSpan, colSpan: cell.rowSpan });\n }\n }\n }\n return [result, leafs, breadth, depth];\n};\n/**\n * @hidden\n */\nexport var toColumns = function (root) {\n var _a = toMatrix(root), matrix = _a[0], leafs = _a[1], depth = _a[2], breadth = _a[3];\n for (var colIndex = 0; colIndex < breadth; colIndex++) {\n var cell = null;\n for (var rowIndex = 0; rowIndex < depth; rowIndex++) {\n if (matrix[rowIndex]) {\n var next = matrix[rowIndex].cells[colIndex];\n if (!next && cell) {\n cell.rowSpan = (cell.rowSpan || 1) + 1;\n }\n if (cell) {\n cell.colSpan = cell.breadth || 1;\n }\n if (next) {\n cell = next;\n }\n }\n }\n }\n return [matrix, leafs, depth, breadth];\n};\n/**\n * @hidden\n */\nexport var toRows = function (root) {\n var _a = toMatrix(root), matrix = _a[0], leafs = _a[1], depth = _a[2], breadth = _a[3];\n for (var colIndex = 0; colIndex < breadth; colIndex++) {\n var cell = null;\n for (var rowIndex = 0; rowIndex < depth; rowIndex++) {\n if (matrix[rowIndex]) {\n var next = matrix[rowIndex].cells[colIndex];\n if (!next && cell) {\n cell.rowSpan = (cell.rowSpan || 1) + 1;\n }\n if (cell) {\n cell.colSpan = cell.breadth;\n }\n if (next) {\n cell = next;\n }\n }\n }\n }\n return rotateMatrix(matrix, leafs, depth, breadth);\n};\n/**\n * @hidden\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n/**\n * @hidden\n */\nexport function clone(obj) {\n var result = {};\n cloneObject(obj, result);\n return result;\n}\n/**\n * @hidden\n */\nexport function cloneObject(obj, result) {\n for (var field in obj) {\n if (obj.hasOwnProperty(field)) {\n var value = obj[field];\n result[field] = cloneValue(value, result[field]);\n }\n }\n}\n/**\n * @hidden\n */\nexport function cloneValue(value, nextValue) {\n if (Array.isArray(value)) {\n return cloneArray(value);\n }\n else if (value instanceof Date) {\n return cloneDate(value);\n }\n else if (value && typeof value === 'object') {\n var newNextValue = nextValue || {};\n cloneObject(value, newNextValue);\n return newNextValue;\n }\n else {\n return value;\n }\n}\n/**\n * @hidden\n */\nexport function copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n/**\n * @hidden\n */\nexport function cloneArray(array) {\n return array.map(function (value) { return cloneValue(value, undefined); });\n}\nvar kpiMeasure = function (name, measure, type) {\n return {\n hierarchyUniqueName: name,\n uniqueName: measure,\n caption: measure,\n measure: measure,\n name: measure,\n type: type,\n kpi: true\n };\n};\n/**\n * @hidden\n */\nexport function buildKPIMeasures(node) {\n var name = node.name;\n return [\n kpiMeasure(name, node.value, \"value\"),\n kpiMeasure(name, node.goal, \"goal\"),\n kpiMeasure(name, node.status, \"status\"),\n kpiMeasure(name, node.trend, \"trend\")\n ];\n}\n/**\n * @hidden\n */\nexport var addKPI = function (data) {\n var found;\n var idx = 0;\n for (; idx < data.length; idx++) {\n if (data[idx].type === 2) {\n found = true;\n break;\n }\n }\n if (found) {\n data.splice(idx + 1, 0, {\n caption: \"KPIs\",\n defaultHierarchy: \"[KPIs]\",\n name: \"KPIs\",\n uniqueName: \"[KPIs]\"\n });\n }\n};\n/**\n * @hidden\n */\nexport var compareAxisWithField = function (a, b) { return String(a.name) === String([(b.defaultHierarchy\n ? b.defaultHierarchy\n : b.uniqueName)]); };\n/**\n * @hidden\n */\nexport var compareAxes = function (a, b) { return String(a.name) === String(b.name); };\n/**\n * @hidden\n */\nexport var filterField = function (axes, out) {\n var _loop_2 = function (i) {\n var axis = axes[i];\n var index = axis.name.findIndex(function (name) { return compareAxisWithField({ name: [name] }, out) || String(name).startsWith(out.uniqueName); });\n if (index !== -1) {\n if (index === axis.name.length - 1 || axis.name.length === 1) {\n axes.splice(i, 1);\n }\n else {\n axis.name.splice(index, 1);\n var duplicatedAxisIndex = axes.findIndex(function (ax) { return ax !== axis && String(ax.name) === String(axis.name); });\n if (duplicatedAxisIndex !== -1) {\n axes[duplicatedAxisIndex] = tslib_1.__assign({}, axes[duplicatedAxisIndex], axis, ((axes[duplicatedAxisIndex].expand || axis.expand) ? { expand: true } : {}));\n axes.splice(i, 1);\n }\n }\n }\n };\n for (var i = axes.length - 1; i >= 0; i--) {\n _loop_2(i);\n }\n};\n/**\n * @hidden\n */\nexport var insertAxis = function (axes, toInsert, state) {\n var index = -1;\n if (state.dropTarget && state.dropDirection) {\n var offset = state.dropDirection\n ? (state.dropDirection === 'before'\n ? 0\n : 1)\n : 0;\n index = axes.findIndex(function (c) { return compareAxes(c, state.dropTarget); }) + offset;\n }\n if (index !== -1) {\n axes.forEach(function (axis) {\n var _a;\n if (axis.expand && axis.name.length > 1 && axis.name.length > index) {\n (_a = axis.name).splice.apply(_a, [index, 0].concat(toInsert.name));\n }\n });\n axes.splice(index, 0, toInsert);\n }\n else {\n axes.push(toInsert);\n }\n};\n/**\n * @hidden\n */\nexport var reverseColumnsByMeasures = function (columns) {\n var firstColumn = columns.length && columns[0];\n var lastMember = firstColumn && firstColumn.members[firstColumn.members.length - 1];\n if (lastMember && isMeasure(lastMember)) {\n var columnsArr = [];\n var measuresCount = new Set(columns.map(function (col) { return col.members[col.members.length - 1].caption; })).size;\n for (var i = 0; i < columns.length; i += measuresCount) {\n columnsArr.push(columns.slice(i, i + measuresCount));\n }\n var result_1 = [];\n columnsArr.forEach(function (arr) {\n result_1.push.apply(result_1, arr.reverse());\n });\n return result_1;\n }\n return columns;\n};\n","import { reverseColumnsByMeasures } from \"../utils\";\n/**\n * Creates the state object. See `fetchData`.\n *\n * @param response - ResponseData\n * @returns DataState\n */\n/**\n * @hidden\n */\nexport var createDataState = function (response) {\n var state = {\n columns: reverseColumnsByMeasures(response.columns.tuples),\n data: response.data,\n rows: response.rows.tuples\n };\n return state;\n};\n","/**\n * Creates a collection of AxisDescriptor base on the expandTree.\n * @param expandTree - { [key: string]: boolean }\n * @returns AxisDescriptor[]\n *\n * @example\n * See `setRowExpand` or `setColumnExpand` functions.\n */\n/**\n * @hidden\n */\nexport function createAxisDescriptors(expandTree) {\n var descriptors = [];\n for (var _i = 0, _a = Object.keys(expandTree); _i < _a.length; _i++) {\n var key = _a[_i];\n descriptors.push({ name: JSON.parse(key), expand: expandTree[key] });\n }\n return descriptors;\n}\n","/**\n * Sets sort descriptors to request options.\n *\n * @param options - RequestOptions\n * @param sort - SortDescriptor[]\n *\n * @example\n * const options: RequestOptions = { ... };\n * const sort: SortDescriptor[] = [{ ... }, { ... }];\n * setSort(options, sort);\n * // skip the sort parameter to clear current filter - setSort(options);\n *\n * fetchData(options).then(createDataState).then((dataState: DataState) => {\n * // Update the UI\n * });\n */\n/**\n * @hidden\n */\nexport var setSort = function (options, sort) {\n if (sort === void 0) { sort = []; }\n options.sort = sort;\n};\n","import * as tslib_1 from \"tslib\";\n/**\n * @hidden\n */\nexport var HEADERS_ACTION;\n(function (HEADERS_ACTION) {\n HEADERS_ACTION[\"toggle\"] = \"HEADERS_ACTION_TOGGLE\";\n HEADERS_ACTION[\"expand\"] = \"HEADERS_ACTION_EXPAND\";\n HEADERS_ACTION[\"collapse\"] = \"HEADERS_ACTION_COLLAPSE\";\n})(HEADERS_ACTION || (HEADERS_ACTION = {}));\nvar findPath = function (node, matchFn, matched) {\n var result = new Set();\n node.children.forEach(function (child) {\n var match = matchFn(child);\n if (matched) {\n result.add(String(child.path));\n }\n findPath(child, matchFn, (matched || match)).map(function (h) {\n result.add(h);\n });\n });\n return Array.from(result.values());\n};\n/**\n * @hidden\n */\nexport var headersReducer = function (state, action) {\n switch (action.type) {\n case HEADERS_ACTION.toggle: {\n var existing = state.find((function (s) { return String(s.name) === String(action.payload); }));\n return headersReducer(state, tslib_1.__assign({}, action, { type: existing && (existing.expand)\n ? HEADERS_ACTION.collapse\n : HEADERS_ACTION.expand }));\n }\n case HEADERS_ACTION.expand: {\n var existing_1 = state.find((function (s) { return String(s.name) === String(action.payload); }));\n if (existing_1 && existing_1.expand === true) {\n return state;\n }\n else if (existing_1 && (existing_1.expand === false || existing_1.expand === undefined)) {\n return state.map(function (s) { return s === existing_1 ? (tslib_1.__assign({}, existing_1, { expand: true })) : s; });\n }\n else {\n var nextState = state.slice();\n nextState.push({ name: action.payload, expand: true });\n return nextState;\n }\n }\n case HEADERS_ACTION.collapse: {\n var filtered_1 = findPath(action.tree, function (node) { return !node.total && String(node.path) === String(action.payload); });\n var newState = state.slice()\n .filter(function (h) { return !filtered_1.some(function (f) { return f === String(h.name); }); })\n .map(function (h) { return (tslib_1.__assign({}, h, { expand: Boolean(h.expand) })); })\n .map(function (h) { return (String(h.name) === String(action.payload))\n ? action.payload.length > 1 ? undefined : { name: action.payload, expand: false }\n : h; })\n .filter(Boolean);\n return newState;\n }\n default: {\n return state;\n }\n }\n};\n","/**\n * Sets filter descriptors to request options.\n *\n * @param options - RequestOptions\n * @param filter - FilterDescriptor[]\n *\n * @example\n * const options: RequestOptions = { ... };\n * const filter: FilterDescriptor[] = [{ ... }, { ... }];\n * setFilter(options, filter);\n * // skip the filter parameter to clear current filter - setFilter(options);\n *\n * fetchData(options).then(createDataState).then((dataState: DataState) => {\n * // Update the UI\n * });\n */\n/**\n * @hidden\n */\nexport var setFilter = function (options, filter) {\n if (filter === void 0) { filter = []; }\n options.filter = filter;\n};\n","import * as tslib_1 from \"tslib\";\nimport { compareAxisWithField, compareAxes, buildKPIMeasures, filterField, insertAxis } from '../utils';\n/**\n * @hidden\n */\nexport var PIVOT_CONFIGURATOR_ACTION;\n(function (PIVOT_CONFIGURATOR_ACTION) {\n // Selection\n PIVOT_CONFIGURATOR_ACTION[\"toggleSelection\"] = \"PIVOT_CONFIGURATOR_ACTION_TOGGLE_SELECTION\";\n PIVOT_CONFIGURATOR_ACTION[\"addColumnAxis\"] = \"PIVOT_CONFIGURATOR_ACTION_ADD_COLUMN_AXIS\";\n PIVOT_CONFIGURATOR_ACTION[\"addColumnAxes\"] = \"PIVOT_CONFIGURATOR_ACTION_ADD_COLUMN_AXES\";\n PIVOT_CONFIGURATOR_ACTION[\"removeColumnAxis\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE_COLUMN_AXIS\";\n PIVOT_CONFIGURATOR_ACTION[\"removeColumnAxes\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE_COLUMN_AXES\";\n PIVOT_CONFIGURATOR_ACTION[\"addRowAxis\"] = \"PIVOT_CONFIGURATOR_ACTION_ADD_ROW_AXIS\";\n PIVOT_CONFIGURATOR_ACTION[\"addRowAxes\"] = \"PIVOT_CONFIGURATOR_ACTION_ADD_ROW_AXES\";\n PIVOT_CONFIGURATOR_ACTION[\"removeRowAxis\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE_ROW_AXIS\";\n PIVOT_CONFIGURATOR_ACTION[\"removeRowAxes\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE_ROW_AXES\";\n PIVOT_CONFIGURATOR_ACTION[\"addMeasureAxis\"] = \"PIVOT_CONFIGURATOR_ACTION_ADD_MEASURE_AXIS\";\n PIVOT_CONFIGURATOR_ACTION[\"addMeasureAxes\"] = \"PIVOT_CONFIGURATOR_ACTION_ADD_MEASURE_AXES\";\n PIVOT_CONFIGURATOR_ACTION[\"removeMeasureAxis\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE_MEASURE_AXIS\";\n PIVOT_CONFIGURATOR_ACTION[\"removeMeasureAxes\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE_MEASURE_AXES\";\n // Removal\n PIVOT_CONFIGURATOR_ACTION[\"remove\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE\";\n // Sort\n PIVOT_CONFIGURATOR_ACTION[\"setSort\"] = \"PIVOT_CONFIGURATOR_ACTION_SET_SORT\";\n // Filter\n PIVOT_CONFIGURATOR_ACTION[\"setFilter\"] = \"PIVOT_CONFIGURATOR_ACTION_SET_FILTER\";\n PIVOT_CONFIGURATOR_ACTION[\"addFilter\"] = \"PIVOT_CONFIGURATOR_ACTION_ADD_FILTER\";\n PIVOT_CONFIGURATOR_ACTION[\"changeFilter\"] = \"PIVOT_CONFIGURATOR_ACTION_CHANGE_FILTER\";\n PIVOT_CONFIGURATOR_ACTION[\"removeFilter\"] = \"PIVOT_CONFIGURATOR_ACTION_REMOVE_FILTER\";\n // Drag\n PIVOT_CONFIGURATOR_ACTION[\"setDragItem\"] = \"PIVOT_CONFIGURATOR_ACTION_SET_DRAGITEM\";\n PIVOT_CONFIGURATOR_ACTION[\"drop\"] = \"PIVOT_CONFIGURATOR_ACTION_DROP\";\n PIVOT_CONFIGURATOR_ACTION[\"setDropZone\"] = \"PIVOT_CONFIGURATOR_ACTION_SET_DROP_ZONE\";\n PIVOT_CONFIGURATOR_ACTION[\"setDropTarget\"] = \"PIVOT_CONFIGURATOR_ACTION_SET_DROP_TARGET\";\n PIVOT_CONFIGURATOR_ACTION[\"setDropDirection\"] = \"PIVOT_CONFIGURATOR_ACTION_SET_DROP_DIRECTION\";\n})(PIVOT_CONFIGURATOR_ACTION || (PIVOT_CONFIGURATOR_ACTION = {}));\n/**\n * @hidden\n */\nexport var configuratorReducer = function (state, action) {\n var newRows;\n var newColumns;\n var newMeasures;\n var newSort;\n var newFilter;\n var newDragitem;\n var newDropZone;\n var newDropDirection;\n var newDropTarget;\n switch (action.type) {\n case PIVOT_CONFIGURATOR_ACTION.toggleSelection: {\n if (Array.isArray(action.payload)) {\n // TODO;\n }\n else {\n var payload_1 = action.payload;\n if (payload_1.type === 2 || 'aggregator' in payload_1) {\n if (state.measureAxes.some(function (s) { return compareAxisWithField(s, payload_1); })) {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.removeMeasureAxis }));\n }\n else {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.addMeasureAxis }));\n }\n }\n else if (payload_1.type === 'kpi') {\n var measures = buildKPIMeasures(payload_1);\n if (measures.every(function (m) { return state.measureAxes.some(function (s) { return compareAxisWithField(s, m); }); })) {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.removeMeasureAxes, payload: measures }));\n }\n else {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.addMeasureAxes, payload: measures.filter(function (m) { return !state.measureAxes.some(function (s) { return compareAxisWithField(s, m); }); }) }));\n }\n }\n else if (action.payload.kpi) {\n if (state.measureAxes.some(function (s) { return compareAxisWithField(s, payload_1); })) {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.removeMeasureAxis }));\n }\n else {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.addMeasureAxis }));\n }\n }\n else {\n if (state.columnAxes.some(function (s) { return compareAxisWithField(s, payload_1); })) {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.removeColumnAxis }));\n }\n else if (state.rowAxes.some(function (s) { return compareAxisWithField(s, payload_1); })) {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.removeRowAxis }));\n }\n else if ((state.columnAxes && state.columnAxes.length) && (!state.rowAxes || !state.rowAxes.length)) {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.addRowAxis }));\n }\n else {\n return configuratorReducer(state, tslib_1.__assign({}, action, { type: PIVOT_CONFIGURATOR_ACTION.addColumnAxis }));\n }\n }\n }\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.addColumnAxis: {\n newColumns = (state.columnAxes || []).concat([\n { name: [action.payload.defaultHierarchy || action.payload.uniqueName] }\n ]);\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.addColumnAxes: {\n // TODO;\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.removeColumnAxis: {\n newColumns = (state.columnAxes || []).filter(function (s) { return !compareAxisWithField(s, action.payload); }).slice();\n filterField(newColumns, action.payload);\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.removeColumnAxes: {\n // TODO;\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.addRowAxis: {\n newRows = (state.rowAxes || []).concat([\n { name: [action.payload.defaultHierarchy || action.payload.uniqueName] }\n ]);\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.addRowAxes: {\n // TODO;\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.removeRowAxis: {\n newRows = (state.rowAxes || []).filter(function (s) { return !compareAxisWithField(s, action.payload); }).slice();\n filterField(newRows, action.payload);\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.removeRowAxes: {\n // TODO;\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.addMeasureAxis: {\n newMeasures = (state.measureAxes || []).concat([\n { name: [action.payload.defaultHierarchy || action.payload.uniqueName] }\n ]);\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.removeMeasureAxis: {\n newMeasures = (state.measureAxes || []).filter(function (s) { return !compareAxisWithField(s, action.payload); }).slice();\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.addMeasureAxes: {\n newMeasures = (state.measureAxes || []).concat((action.payload || []).map(function (p) { return ({ name: [p.defaultHierarchy || p.uniqueName] }); }));\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.removeMeasureAxes: {\n newMeasures = (state.measureAxes || []).filter(function (s) { return !action.payload.some(function (p) { return compareAxisWithField(s, p); }); }).slice();\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.remove: {\n if (state.columnAxes.some(function (s) { return compareAxes(s, action.payload); })) {\n newColumns = state.columnAxes.filter(function (s) { return !compareAxes(s, action.payload); }).slice();\n filterField(newColumns, { uniqueName: action.payload.name });\n }\n if (state.rowAxes.some(function (s) { return compareAxes(s, action.payload); })) {\n newRows = state.rowAxes.filter(function (s) { return !compareAxes(s, action.payload); }).slice();\n filterField(newRows, { uniqueName: action.payload.name });\n }\n if (state.measureAxes.some(function (s) { return compareAxes(s, action.payload); })) {\n newMeasures = state.measureAxes.filter(function (s) { return !compareAxes(s, action.payload); }).slice();\n }\n break;\n }\n case PIVOT_CONFIGURATOR_ACTION.setDragItem:\n newDragitem = action.payload;\n break;\n case PIVOT_CONFIGURATOR_ACTION.setDropZone:\n newDropZone = action.payload;\n break;\n case PIVOT_CONFIGURATOR_ACTION.setDropTarget:\n newDropTarget = action.payload;\n break;\n case PIVOT_CONFIGURATOR_ACTION.setDropDirection:\n newDropDirection = action.payload;\n break;\n case PIVOT_CONFIGURATOR_ACTION.drop:\n if (state.dragItem && state.dropZone) {\n var currentColumn = state.columnAxes.find(function (s) { return compareAxes(s, action.payload); });\n var currentRow = state.rowAxes.find(function (s) { return compareAxes(s, action.payload); });\n var currentMeasure = state.measureAxes.find(function (s) { return compareAxes(s, action.payload); });\n var current = void 0;\n if (currentColumn) {\n current = currentColumn;\n newColumns = state.columnAxes.filter(function (s) { return !compareAxes(s, action.payload); }).slice();\n filterField(newColumns, { uniqueName: action.payload.name });\n }\n if (currentRow) {\n current = currentRow;\n newRows = state.rowAxes.filter(function (s) { return !compareAxes(s, action.payload); }).slice();\n filterField(newRows, { uniqueName: action.payload.name });\n }\n if (currentMeasure) {\n current = currentMeasure;\n newMeasures = state.measureAxes.filter(function (s) { return !compareAxes(s, action.payload); }).slice();\n }\n switch (state.dropZone) {\n case 'columnAxes': {\n newColumns = newColumns || state.columnAxes.slice();\n insertAxis(newColumns, current, state);\n break;\n }\n case 'rowAxes': {\n newRows = newRows || state.rowAxes.slice();\n insertAxis(newRows, current, state);\n break;\n }\n case 'measureAxes': {\n newMeasures = newMeasures || state.measureAxes.slice();\n insertAxis(newMeasures, current, state);\n break;\n }\n default:\n break;\n }\n }\n newDragitem = null;\n newDropZone = null;\n newDropTarget = null;\n break;\n case PIVOT_CONFIGURATOR_ACTION.setSort:\n newSort = action.payload;\n break;\n case PIVOT_CONFIGURATOR_ACTION.setFilter:\n if (Array.isArray(action.payload)) {\n newFilter = action.payload;\n }\n else {\n newFilter = [action.payload];\n }\n break;\n case PIVOT_CONFIGURATOR_ACTION.addFilter:\n newFilter = (state.filter || []).slice();\n if (Array.isArray(action.payload)) {\n newFilter.push.apply(newFilter, action.payload);\n }\n else {\n newFilter.push(action.payload);\n }\n break;\n case PIVOT_CONFIGURATOR_ACTION.changeFilter:\n newFilter = (Array.isArray(action.payload)\n ? (state.filter || []).map(function (f) { return action.payload.some(function (a) { return a.field === f.field; })\n ? action.payload.find(function (a) { return a.field === f.field; })\n : f; })\n : (state.filter || []).map(function (f) { return f.field === action.payload.field\n ? action.payload\n : f; }));\n break;\n case PIVOT_CONFIGURATOR_ACTION.removeFilter:\n newFilter = (state.filter || []).slice();\n if (Array.isArray(action.payload)) {\n newFilter = newFilter.filter(function (f) { return !action.payload.some(function (p) { return p.field === f.field &&\n p.operator === f.operator; }); });\n }\n else {\n newFilter = newFilter.filter(function (f) { return !(f.field === action.payload.field\n && f.operator === action.payload.operator); });\n }\n break;\n default:\n break;\n }\n return {\n dragItem: newDragitem,\n dropTarget: newDropTarget,\n dropDirection: newDropDirection,\n dropZone: newDropZone,\n columnAxes: newColumns,\n rowAxes: newRows,\n measureAxes: newMeasures,\n filter: newFilter,\n sort: newSort\n };\n};\n","// tslint:disable:object-literal-sort-keys\n/**\n * Represents the aggregate object which calculates the total value. Applicable for local data binding.\n */\nexport var sumAggregate = {\n init: function (data) {\n if (('sum' in data) === false) {\n data.sum = 0;\n }\n },\n merge: function (src, dest) {\n dest.sum += src.sum;\n },\n accumulate: function (acc, value) {\n acc.sum += value;\n },\n result: function (data) { return data.sum; },\n format: function (value) { return value.toFixed(2); }\n};\n/**\n * Represents the aggregate object which calculates the count value. Applicable for local data binding.\n */\nexport var countAggregate = {\n init: function (data) {\n if (('countA' in data) === false) {\n data.countA = 0;\n }\n },\n merge: function (src, dest) {\n dest.countA += src.countA;\n },\n accumulate: function (acc, _value) {\n acc.countA += 1;\n },\n result: function (data) { return data.countA; },\n format: function (value) { return value.toFixed(); }\n};\n/**\n * Represents the aggregate object which calculates the minimum value. Applicable for local data binding.\n */\nexport var minAggregate = {\n init: function (data) {\n if (('min' in data) === false) {\n data.min = Number.POSITIVE_INFINITY;\n }\n },\n merge: function (src, dest) {\n dest.min = Math.min(src.min, dest.min);\n },\n accumulate: function (acc, value) {\n acc.min = Math.min(value, acc.min);\n },\n result: function (data) { return Number.isFinite(data.min) ? data.min : NaN; },\n format: function (value) { return value.toFixed(2); }\n};\n/**\n * Represents the aggregate object which calculates the maximum value. Applicable for local data binding.\n */\nexport var maxAggregate = {\n init: function (data) {\n if (('max' in data) === false) {\n data.max = Number.NEGATIVE_INFINITY;\n }\n },\n merge: function (src, dest) {\n dest.max = Math.max(src.max, dest.max);\n },\n accumulate: function (acc, value) {\n acc.max = Math.max(value, acc.max);\n },\n result: function (data) { return Number.isFinite(data.max) ? data.max : NaN; },\n format: function (value) { return value.toFixed(2); }\n};\n/**\n * Represents the aggregate object which calculates the average value. Applicable for local data binding.\n */\nexport var averageAggregate = {\n init: function (data) {\n if (('count' in data) === false) {\n data.sumA = 0;\n data.count = 0;\n }\n },\n merge: function (src, dest) {\n dest.sumA += src.sumA;\n dest.count += src.count;\n },\n accumulate: function (acc, value) {\n acc.sumA += value;\n acc.count += 1;\n },\n result: function (data) { return data.sumA / data.count; },\n format: function (value) { return value.toFixed(2); }\n};\n","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n var key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n var fields = [];\n field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator;\n(function (FilterOperator) {\n /**\n * The `contains` operator.\n */\n FilterOperator[\"Contains\"] = \"contains\";\n /**\n * The `doesnotcontain` operator.\n */\n FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n /**\n * The `doesnotendwith` operator.\n */\n FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n /**\n * The `doesnotstartwith` operator.\n */\n FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n /**\n * The `endswith` operator.\n */\n FilterOperator[\"EndsWith\"] = \"endswith\";\n /**\n * The `eq` operator.\n */\n FilterOperator[\"EqualTo\"] = \"eq\";\n /**\n * The `gt` operator.\n */\n FilterOperator[\"GreaterThan\"] = \"gt\";\n /**\n * The `gte` operator.\n */\n FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n /**\n * The `isempty` operator.\n */\n FilterOperator[\"IsEmpty\"] = \"isempty\";\n /**\n * The `isnotempty` operator.\n */\n FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n /**\n * The `isnotnull` operator.\n */\n FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n /**\n * The `isnull` operator.\n */\n FilterOperator[\"IsNull\"] = \"isnull\";\n /**\n * The `lt` operator.\n */\n FilterOperator[\"LessThan\"] = \"lt\";\n /**\n * The `lte` operator.\n */\n FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n /**\n * The `neq` operator.\n */\n FilterOperator[\"NotEqualTo\"] = \"neq\";\n /**\n * The `startswith` operator.\n */\n FilterOperator[\"StartsWith\"] = \"startswith\";\n})(FilterOperator || (FilterOperator = {}));\n","import { __assign, __spreadArrays } from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n return __spreadArrays(acc, [key + \"=\" + value]);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n var _b;\n var key = _a[0], value = _a[1];\n return (__assign(__assign({}, acc), (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n var skip = _a.skip, take = _a.take;\n return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n return compose.apply(void 0, patterns.map(function (_a) {\n var left = _a[0], right = _a[1];\n return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n return field + \"-\" + dir;\n};\nvar aggregateFormatter = function (_a) {\n var field = _a.field, aggregate = _a.aggregate;\n return field + \"-\" + aggregate;\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\" + value + \"'\"; };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: formatDateValue(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n sort: (sort(state) || []).filter(function (_a) {\n var dir = _a.dir;\n return isNotNullOrEmptyString(dir);\n })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n var field = _a.field;\n return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n var field = _a.field, operator = _a.operator, value = _a.value;\n return field + \"~\" + operator + \"~\" + value;\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n var logic = _a.logic;\n return \"~\" + logic + \"~\";\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n var filter = _a.filter;\n if (filter && filter.filters) {\n var filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nvar rules = function (state, encode) {\n if (encode === void 0) { encode = true; }\n return function (key) { return ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n }[key]); };\n};\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&')); };\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent))); };\n","import { __makeTemplateObject } from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return predicate() ? \"\" + str[0] + args[0] + str[1] : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"'\" + value.replace(/'/g, \"''\") + \"'\",\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"\" + encodeURIComponent(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n value: value,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n var brackets = wrapIf(function () { return filter.filters.length > 1; });\n return brackets(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"(\", \")\"], [\"(\",\n \")\"])), filter.filters\n .map(map)\n .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n target[field] = value;\n return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n var value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n return ({\n aggregates: translateAggregates(aggregates),\n field: field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value: value\n });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n var prop = getter(field, true);\n var position = 0;\n return function (agg, value) {\n agg[field] = agg[field] || {};\n var groupValue = prop(value);\n var key = valueToString(groupValue);\n var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n if (result === void 0) { result = {}; }\n Object.keys(result).forEach(function (field) {\n var aggregates = result[field];\n Object.keys(aggregates).forEach(function (aggregate) {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n average: function () {\n var value = 0;\n var count = 0;\n return {\n calc: function (curr) {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: function () { return isNumeric(value) ? value / count : value; }\n };\n },\n count: function () {\n var state = 0;\n return {\n calc: function () { return state++; },\n result: function () { return state; }\n };\n },\n max: function () {\n var state = Number.NEGATIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n min: function () {\n var state = Number.POSITIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n sum: function () {\n var state = 0;\n return {\n calc: function (value) {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: function () { return state; }\n };\n }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n var functions = descriptors.map(function (descriptor) {\n var fieldAccessor = getter(descriptor.field, true);\n var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n var aggregateAccessor = getter(aggregateName, true);\n return function (state, value) {\n var fieldAggregates = state[descriptor.field] || {};\n var aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n return isPresent(source.__value);\n};\nvar reduced = function (x) {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n var result = initialValue;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nvar logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n};\nvar operatorsMap = {\n contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return isPresent(a); },\n isnull: function (a) { return isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n if (value != null && isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n if (!isPresent(value)) {\n return prop;\n }\n var acc = prop;\n if (isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = function (a) {\n var x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return function (a) {\n var x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nvar transformFilter = function (_a) {\n var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n field = !isPresent(field) ? function (a) { return a; } : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n var op = isFunction(operator) ? operator : operatorsMap[operator];\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n var combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n .reduce(combiner.concat, combiner.identity);\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult](slug:api_kendo-data-query_aggregateresult) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n var initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n return isPresent(source.filters);\n};\n","import { compileFilter } from '@progress/kendo-data-query';\nfunction forEachDesc(desc, callbackfn) {\n if ('filters' in desc) {\n desc.filters.map(function (child) { return forEachDesc(child, callbackfn); });\n }\n else {\n callbackfn(desc);\n }\n}\nvar filterFields = function (filter, callback) {\n var descriptors = Array.isArray(filter) ? filter : filter.filters;\n descriptors.forEach(function (desc) { return forEachDesc(desc, callback); });\n};\n/** @hidden */\nexport var initializeFiltering = function (rows, columns, filter) {\n var compositeFilter = filter ?\n (Array.isArray(filter) ? { logic: 'and', filters: filter } : filter) : undefined;\n var predicate = compositeFilter ? compileFilter(compositeFilter) : function () { return true; };\n var axes = rows.concat(columns);\n var fieldValues = [];\n filterFields(filter || [], function (desc) {\n if ('field' in desc && desc.field) {\n fieldValues.push(desc.field);\n }\n });\n var result = { hasFilter: false, predicate: predicate, filteringAxes: [] };\n if (fieldValues.some(function (f) { return typeof f === 'function'; })) {\n result.filteringAxes = axes.slice();\n }\n else if (fieldValues.length > 0) {\n var filteringFields_1 = Array.from(new Set(fieldValues).values());\n var filteringAxes = axes.filter(function (a) { return filteringFields_1.indexOf(a.key) >= 0; });\n result.filteringAxes = filteringAxes;\n }\n result.hasFilter = result.filteringAxes.length > 0;\n return result;\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n if (originalData === void 0) { originalData = data; }\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n var descriptor = descriptors[0];\n var initialValue = {};\n var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n var result = [];\n Object.keys(view).forEach(function (field) {\n Object.keys(view[field]).forEach(function (value) {\n var group = view[field][value];\n var aggregateResult = {};\n var filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","/** @hidden */\nexport var subNode = function (node, field, initialNode) {\n var childNode = node.get(field);\n if (!childNode) {\n childNode = initialNode || new Map();\n node.set(field, childNode);\n }\n return childNode;\n};\nvar separator = '&';\n/** @hidden */\nexport var createKey = function (key, value) { return key + separator + value; };\n/** @hidden */\nexport var splitKeyValue = function (keyValue) {\n var separatorIndex = keyValue.indexOf(separator);\n if (separatorIndex !== -1) {\n var key = keyValue.substring(0, separatorIndex);\n var value = keyValue.substring(separatorIndex + 1);\n return [key, value];\n }\n else {\n return [keyValue, undefined];\n }\n};\n","import { initializeFiltering } from './filtering';\nimport { subNode, createKey } from './utils';\nvar calculateColumnData = function (node, measures, dataField) {\n node.forEach(function (childNode, k) {\n if (k !== dataField) {\n if (childNode.size > 0) {\n calculateColumnData(childNode, measures, dataField);\n }\n var childData_1 = childNode.get(dataField);\n var parentData_1 = subNode(node, dataField, {});\n measures.forEach(function (m) {\n m.aggregate.init(parentData_1);\n m.aggregate.merge(childData_1, parentData_1);\n });\n }\n });\n};\n/** @hidden */\nexport var mergeTrees = function (src, dest, measures, dataField) {\n src.forEach(function (srcChild, k) {\n var destChild;\n if (k !== dataField) {\n destChild = subNode(dest, k);\n mergeTrees(srcChild, destChild, measures, dataField);\n }\n else {\n destChild = subNode(dest, k, {});\n measures.forEach(function (m) {\n m.aggregate.init(destChild);\n m.aggregate.merge(srcChild, destChild);\n });\n }\n });\n};\nvar calculateColumns = function (node, measures, columnsData, dataField) {\n node.forEach(function (childNode, k) {\n if (k !== columnsData) {\n if (childNode.size > 0) {\n calculateColumns(childNode, measures, columnsData, dataField);\n }\n var srcColumns = subNode(childNode, columnsData);\n var destColumns = subNode(node, columnsData);\n mergeTrees(srcColumns, destColumns, measures, dataField);\n }\n });\n};\n/** @hidden */\nexport var createDataTree = function (data, rows, columns, measures, fields, filter) {\n var result = new Map();\n var cache = new Map();\n var axes = rows.concat(columns);\n var leafNodes = new Set();\n var dataField = fields.dataField, columnsData = fields.columnsData;\n var _a = initializeFiltering(rows, columns, filter), hasFilter = _a.hasFilter, predicate = _a.predicate, filteringAxes = _a.filteringAxes;\n var empty = '';\n data.forEach(function (dataItem) {\n if (hasFilter) {\n var filteringDataItem_1 = {};\n filteringAxes.forEach(function (axis) { filteringDataItem_1[axis.key] = axis.displayValue(dataItem); });\n if (!predicate(filteringDataItem_1)) {\n return;\n }\n }\n var values = axes.map(function (a) { return a.displayValue(dataItem); });\n var dataKey = empty.concat.apply(empty, values);\n var nodeData = cache.get(dataKey);\n if (!nodeData) {\n var node_1 = result;\n var eachAxis = function (axis) {\n node_1 = subNode(node_1, createKey(axis.key, axis.displayValue(dataItem)));\n };\n rows.forEach(eachAxis);\n node_1 = subNode(node_1, columnsData);\n leafNodes.add(node_1);\n columns.forEach(eachAxis);\n nodeData = {};\n node_1.set(dataField, nodeData);\n cache.set(dataKey, nodeData);\n measures.forEach(function (m) {\n m.aggregate.init(nodeData);\n });\n }\n measures.forEach(function (m) {\n m.aggregate.accumulate(nodeData, m.value(dataItem));\n });\n });\n leafNodes.forEach(function (leaf) { return calculateColumnData(leaf, measures, dataField); });\n calculateColumns(result, measures, columnsData, dataField);\n return result;\n};\n/** @hidden */\nexport var cloneDataTree = function (dataTree, dataField, measures) {\n var result = new Map();\n mergeTrees(dataTree, result, measures, dataField);\n return result;\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n if (!descriptor || descriptor.filters.length === 0) {\n return function () { return true; };\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { mergeTrees } from './dataTree';\nimport { splitKeyValue } from './utils';\nvar createPath = function (name, axes, path) {\n var _a = splitKeyValue(name), key = _a[0], value = _a[1];\n var result = path.slice();\n if (key && value) {\n var axis = axes.find(function (a) { return a.key === key; });\n var caption_1 = axis ? axis.caption : '';\n return result.map(function (p) { return p === caption_1 ? name : p; });\n }\n return result;\n};\nvar membersNode = function (tree, members, field, axisSettings, measures, dataField, cache) {\n var cacheData = cache || new Map();\n var path = axisSettings.map(function (a) { return a.caption; });\n while (members.length > 1 && axisSettings.some(function (a) { return a.caption === members[members.length - 1].caption; })) {\n members.pop();\n path.pop();\n }\n var node = tree;\n members.forEach(function (m, i) {\n path = createPath(m.name, axisSettings, path);\n if (node && !axisSettings.some(function (a) { return a.caption === m.name; })) {\n if (!node.has(m.name) && !cacheData.has(path.slice(0, path.indexOf(m.name) + 1).join('-'))) {\n var currentLevel = Array.from(node).find(function (n) { return n[0] !== field; });\n var currentLevelNode = currentLevel && currentLevel[0];\n var levelField_1 = currentLevelNode && splitKeyValue(currentLevelNode)[0];\n var depth = levelField_1 ? i - axisSettings.findIndex(function (a) { return a.key === levelField_1; }) : 0;\n var _loop_1 = function (t) {\n var data = [];\n node.forEach(function (value, key) {\n if (key !== field) {\n data.push.apply(data, Array.from(value).filter(function (d) { return d[0] !== field; }));\n }\n });\n var next = new Map();\n data.forEach(function (item) {\n if (next.has(item[0])) {\n var dest = next.get(item[0]);\n var src = item[1];\n var newDest = new Map();\n mergeTrees(dest, newDest, measures, dataField);\n mergeTrees(src, newDest, measures, dataField);\n next.set(item[0], newDest);\n }\n else {\n next.set(item[0], new Map(item[1]));\n }\n });\n var currentPath = path.slice(0, path.indexOf(m.name));\n next.forEach(function (value, key) {\n cacheData.set(createPath(key, axisSettings, currentPath.concat([key])).join('-'), value);\n });\n next.set(field, node.get(field));\n node = next;\n };\n for (var t = 0; t < depth; t++) {\n _loop_1(t);\n }\n }\n node = node.get(m.name) || cacheData.get(path.slice(0, path.indexOf(m.name) + 1).join('-'));\n }\n });\n return node;\n};\n/** @hidden */\nexport var readData = function (dataTree, rowTuples, columnTuples, fields, columnSettings, rowSettings, measures) {\n var data = [];\n var dataField = fields.dataField, columnsData = fields.columnsData;\n var rowsCache = new Map();\n rowTuples.forEach(function (row) {\n var rowNode = membersNode(dataTree, row.members.slice(), columnsData, rowSettings, measures, dataField, rowsCache);\n var rowColumnsNode = rowNode && rowNode.get(columnsData);\n columnTuples.forEach(function (col) {\n var members = col.members.slice();\n var measure = measures[0];\n if (members[members.length - 1].levelName === \"[Measures].[MeasuresLevel]\") {\n var measuresMember_1 = members.pop();\n measure = measures.find(function (m) { return String(m.name) === measuresMember_1.caption; }) || measure;\n }\n var colNode = rowColumnsNode && membersNode(rowColumnsNode, members, dataField, columnSettings, measures, dataField);\n var value = '', fmtValue = '', ordinal = 0;\n if (colNode && measure) {\n var result = measure.aggregate.result(colNode.get(dataField));\n value = String(result);\n fmtValue = measure.aggregate.format(result);\n }\n data.push({\n columnTuple: col,\n data: { fmtValue: fmtValue, ordinal: ordinal, value: value },\n rowTuple: row\n });\n });\n });\n return data;\n};\n","import { copy, reverseColumnsByMeasures } from '../utils';\nimport { splitKeyValue, subNode } from './utils';\nimport { readData } from './dataReader';\nvar getTopMembersTuple = function (parentFields, axesSettings) {\n var allTuple = { members: [] };\n parentFields.forEach(function (topField) {\n var axis = axesSettings.find(function (a) { return a.key === topField; });\n var caption = axis ? axis.caption : \"\";\n var member = {\n caption: caption,\n children: [],\n hasChildren: true,\n parentName: \"\",\n levelNum: 0,\n levelName: caption,\n hierarchy: topField,\n name: caption\n };\n allTuple.members.push(member);\n });\n return allTuple;\n};\nvar sortFunc = function (descriptor, axe) {\n return function (a, b) {\n var order = descriptor.dir;\n var sortableA = axe.sortValue(splitKeyValue(a[0])[1]);\n var sortableB = axe.sortValue(splitKeyValue(b[0])[1]);\n if (sortableA < sortableB) {\n return order === \"asc\" ? -1 : 1;\n }\n if (sortableA > sortableB) {\n return order === \"asc\" ? 1 : -1;\n }\n return 0;\n };\n};\nvar mergeData = function (src, dest, exclude) {\n src.forEach(function (srcChild, k) {\n if (!exclude[k]) {\n var destChild = subNode(dest, k);\n mergeData(srcChild, destChild, exclude);\n }\n });\n};\nvar childrenByKeys = function (dataTree, keys, exclude) {\n var result = [];\n var nodeData = function (node) { return Array.from(node).filter(function (n) { return !exclude[n[0]]; }); };\n var element = new Map(dataTree);\n var next;\n var _loop_1 = function (i) {\n next = element.get(keys[i]);\n if (next) {\n element = new Map(next);\n }\n else if (i < keys.length - 1 && Array.from(element).some(function (e) { return splitKeyValue(e[0])[0] === keys[i]; })) {\n var curLevel_1 = [];\n element.forEach(function (child, key) {\n if (!exclude[key]) {\n curLevel_1.push.apply(curLevel_1, nodeData(new Map(child)));\n }\n });\n element = new Map();\n curLevel_1.forEach(function (item) {\n if (element.has(item[0])) {\n var dest = element.get(item[0]);\n var src = item[1];\n var newDest = new Map();\n mergeData(dest, newDest, exclude);\n mergeData(src, newDest, exclude);\n element.set(item[0], newDest);\n }\n else {\n element.set(item[0], new Map(item[1]));\n }\n });\n }\n else if (i === 0 || i === keys.length - 1) {\n if (Array.from(element).some(function (e) { return splitKeyValue(e[0])[0] === keys[i]; })) {\n result.push.apply(result, nodeData(element));\n }\n }\n };\n for (var i = 0; i < keys.length; i++) {\n _loop_1(i);\n }\n return result;\n};\n/** @hidden */\nexport var rootFields = function (definitions) {\n var fields = new Set();\n definitions.forEach(function (item) {\n if (item.name.length === 1 && !splitKeyValue(item.name[0])[1]) {\n fields.add(item.name[0]);\n }\n });\n return fields;\n};\n/** @hidden */\nexport var createTuples = function (axesSettings, definitions, dataTree, sortDescriptors, excludeFields) {\n var parentFields = rootFields(definitions);\n var flatMembers = [];\n var topTuple = getTopMembersTuple(parentFields, axesSettings);\n flatMembers.push(topTuple);\n var _loop_2 = function (i) {\n var currDef = definitions[i];\n if (currDef.name.length === 1 && !currDef.expand && parentFields.has(currDef.name[0])) {\n return \"continue\";\n }\n var keysToAdd = new Set(parentFields.keys());\n var currDefMembers = [];\n var keys = [];\n var tuples = [];\n var axe;\n currDef.name.forEach(function (element, index) {\n var _a;\n var _b = splitKeyValue(element), field = _b[0], value = _b[1];\n axe = axesSettings.find(function (a) { return a.key === field; });\n if (value) {\n keysToAdd.delete(field);\n keys.push(element);\n var member = {\n children: [],\n caption: value,\n hierarchy: field,\n levelNum: 1,\n levelName: field + \" \" + field,\n name: element,\n parentName: axe ? axe.caption : \"\"\n };\n currDefMembers.push(member);\n }\n else if (currDef.expand && currDef.name.length - 1 === index) {\n keysToAdd.delete(element);\n keys.push(element);\n var children = childrenByKeys(dataTree, keys, excludeFields);\n var descriptor = sortDescriptors.find(function (desc) { return desc.field === field; });\n if (descriptor && descriptor.dir) {\n children.sort(sortFunc(descriptor, axe));\n }\n for (var c = 0; c < children.length; c++) {\n var leafValue = children[c][0];\n var leafTuple = { members: [] };\n tuples.push(leafTuple);\n var caption = splitKeyValue(leafValue)[1];\n axe = axesSettings.find(function (a) { return a.key === element; });\n var member = {\n caption: caption,\n children: [],\n levelName: element + \" \" + element,\n levelNum: 1,\n parentName: axe ? axe.caption : \"\",\n hierarchy: element,\n name: leafValue\n };\n (_a = leafTuple.members).push.apply(_a, currDefMembers);\n leafTuple.members.push(member);\n }\n }\n else if (currDef.expand) {\n axe = axesSettings.find(function (a) { return a.key === element; });\n var axisCaption = axe ? axe.caption : \"\";\n keysToAdd.delete(element);\n keys.push(element);\n var member = {\n children: [],\n caption: axisCaption,\n hierarchy: element,\n levelName: axisCaption,\n levelNum: 0,\n name: axisCaption,\n parentName: \"\"\n };\n currDefMembers.push(member);\n }\n keysToAdd.forEach(function (key) {\n tuples.forEach(function (tuple) {\n axe = axesSettings.find(function (a) { return a.key === key; });\n var curCaption = axe ? axe.caption : \"\";\n var member = {\n children: [],\n hasChildren: true,\n caption: curCaption,\n hierarchy: key,\n levelName: curCaption,\n levelNum: 0,\n name: curCaption,\n parentName: \"\"\n };\n tuple.members.push(member);\n });\n });\n flatMembers.push.apply(flatMembers, tuples);\n });\n };\n for (var i = 0; i < definitions.length; i++) {\n _loop_2(i);\n }\n return flatMembers;\n};\nvar measureToMember = function (measure) {\n return {\n caption: String(measure.name),\n children: [],\n hasChildren: false,\n hierarchy: \"[Measures]\",\n levelName: \"[Measures].[MeasuresLevel]\",\n levelNum: 0,\n name: \"[Measures].[\" + measure.name + \"]\",\n parentName: \"\"\n };\n};\nvar addMeasure = function (tuple, measure) {\n var measureMember = measureToMember(measure);\n var tupleCopy = copy(tuple);\n tupleCopy.members.push(measureMember);\n return tupleCopy;\n};\n/** @hidden */\nexport var addMultipleMeasures = function (tuples, measures) {\n if (measures.length < 2) {\n return tuples;\n }\n var result = tuples.slice();\n for (var i = result.length - 1; i >= 0; i--) {\n var tuple = result[i];\n result[i] = addMeasure(result[i], measures[0]);\n for (var m = 1; m < measures.length; m++) {\n var tupleWithMeasure = addMeasure(tuple, measures[m]);\n result.splice(i + m, 0, tupleWithMeasure);\n }\n }\n return reverseColumnsByMeasures(result);\n};\n/** @hidden */\nexport var createLocalDataState = function (args) {\n var _a;\n var dataTree = args.dataTree, rowSettings = args.rowSettings, columnSettings = args.columnSettings, rowAxes = args.rowAxes, columnAxes = args.columnAxes, measures = args.measures, sort = args.sort, fields = args.fields;\n var exclude = (_a = {}, _a[fields.columnsData] = fields.columnsData, _a[fields.dataField] = fields.dataField, _a);\n var colTuples = columnAxes.length ?\n createTuples(columnSettings, columnAxes, dataTree.get(fields.columnsData), sort, exclude) :\n measures.map(function (m) { return ({ members: [measureToMember(m)] }); });\n var columnTuples = columnAxes.length > 0 ? addMultipleMeasures(colTuples, measures) : colTuples;\n var rowTuples = rowAxes.length ? createTuples(rowSettings, rowAxes, dataTree, sort, exclude) : [{ members: [] }];\n var resultData = readData(dataTree, rowTuples, columnTuples, fields, columnSettings, rowSettings, measures);\n return {\n columns: columnTuples,\n data: resultData,\n rows: rowTuples\n };\n};\n","/** @hidden */\nexport var createFlatSchemaDimensions = function (dimensions, measures) {\n var result = Object.keys(dimensions).map(function (dim) { return ({\n caption: dim,\n defaultHierarchy: dim,\n description: '',\n name: dim,\n uniqueName: dim,\n hierarchyUniqueName: dim,\n measure: true,\n type: 1 // https://github.com/telerik/kendo-pivotgrid-common/blob/develop/src/models/responseDiscover.ts#L12-L14\n }); });\n if (measures.length) {\n result.push({\n caption: 'Measures',\n children: measures.map(function (m) { return ({\n aggregator: '1',\n caption: String(m.name),\n defaultFormat: '',\n description: '',\n displayFolder: '',\n groupName: String(m.name),\n name: String(m.name),\n uniqueName: String(m.name)\n }); }),\n type: 2,\n description: '',\n name: 'Measures',\n uniqueName: '[Measures]'\n });\n }\n return result;\n};\n","var Navigation = /** @class */ (function () {\n function Navigation(options) {\n this.tabIndex = 0;\n this.root = null;\n this.eventHandlers = {};\n this.update = function () { };\n this.tabIndex = options.tabIndex;\n }\n Object.defineProperty(Navigation.prototype, \"elements\", {\n get: function () {\n return this.root ? Array.from(this.root.querySelectorAll(this.selectors.join(','))) : [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigation.prototype, \"first\", {\n get: function () {\n return (this.root && this.root.querySelector(this.selectors.join(','))) || null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigation.prototype, \"last\", {\n get: function () {\n var all = this.elements;\n return all[all.length - 1] || null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigation.prototype, \"current\", {\n get: function () {\n return this.elements.find(function (el) { return el.matches(':focus'); });\n },\n enumerable: true,\n configurable: true\n });\n Navigation.prototype.start = function (root) {\n var _this = this;\n this.root = root;\n var _loop_1 = function (eventType) {\n if (this_1.mouseEvents[eventType]) {\n this_1.eventHandlers[eventType] = (function (ev) {\n var target = ev.target instanceof Element && ev.target.closest(_this.selectors.join(','));\n if (target) {\n _this.mouseEvents[eventType].call(undefined, target, _this, ev);\n }\n });\n root.addEventListener(eventType, this_1.eventHandlers[eventType]);\n }\n };\n var this_1 = this;\n for (var eventType in this.mouseEvents) {\n _loop_1(eventType);\n }\n var _loop_2 = function (eventType) {\n if (this_2.keyboardEvents[eventType]) {\n this_2.eventHandlers[eventType] = (function (ev) {\n var target = ev.target instanceof Element && ev.target.closest(_this.selectors.join(','));\n var key = ev.key === ' ' ? 'Space' : ev.key;\n if (target && _this.keyboardEvents[eventType][key]) {\n _this.keyboardEvents[eventType][key].call(undefined, target, _this, ev);\n }\n });\n root.addEventListener(eventType, this_2.eventHandlers[eventType]);\n }\n };\n var this_2 = this;\n for (var eventType in this.keyboardEvents) {\n _loop_2(eventType);\n }\n };\n Navigation.prototype.stop = function () {\n if (this.root) {\n for (var eventType in this.eventHandlers) {\n if (this.eventHandlers[eventType]) {\n this.root.removeEventListener(eventType, this.eventHandlers[eventType]);\n }\n }\n }\n this.root = null;\n };\n Navigation.prototype.focusElement = function (element, previous) {\n if (element) {\n if (previous) {\n previous.removeAttribute('tabindex');\n previous.classList.remove('k-focus');\n }\n element.setAttribute('tabindex', String(this.tabIndex));\n element.focus({ preventScroll: true });\n }\n };\n return Navigation;\n}());\nexport { Navigation };\n","import * as tslib_1 from \"tslib\";\nimport { Navigation } from './navigation';\nvar scrollableValuesSel = '.k-pivotgrid .k-pivotgrid-values';\nvar scrollableColumnHeaderSel = '.k-pivotgrid .k-pivotgrid-column-headers';\nvar scrollableRowHeaderSel = '.k-pivotgrid .k-pivotgrid-row-headers';\nvar emptyCellSel = '.k-pivotgrid > .k-pivotgrid-empty-cell';\nvar tableSel = 'table.k-pivotgrid-table';\nvar cellSel = '.k-pivotgrid-cell';\nvar scrollables = [scrollableValuesSel, scrollableColumnHeaderSel, scrollableRowHeaderSel].join(',');\nvar selectors = [\n emptyCellSel,\n [scrollableColumnHeaderSel, tableSel, cellSel].join(' '),\n [scrollableRowHeaderSel, tableSel, cellSel].join(' '),\n [scrollableValuesSel, tableSel, cellSel].join(' ')\n];\nvar onEnter = function (target, nav, ev) {\n var icon = target.querySelector('.k-icon, .k-svg-icon');\n if (icon) {\n var index_1 = nav.elements.indexOf(target);\n nav.update = function () {\n nav.focusElement(nav.elements[index_1], null);\n nav.update = function () { };\n };\n icon.click();\n ev.preventDefault();\n }\n};\nvar tryScrollLeft = function (target, scrollable, elToScroll) {\n if (target.offsetLeft < scrollable.scrollLeft) {\n elToScroll.scrollLeft = target.offsetLeft;\n }\n};\nvar tryScrollRight = function (target, scrollable, elToScroll) {\n if (target.offsetLeft + target.offsetWidth > scrollable.scrollLeft + scrollable.offsetWidth &&\n target.offsetWidth < scrollable.offsetWidth) {\n elToScroll.scrollLeft = target.offsetLeft + target.offsetWidth - scrollable.offsetWidth;\n }\n};\nvar tryScrollUp = function (target, scrollable, elToScroll) {\n if (scrollable.scrollTop && target.offsetTop < scrollable.scrollTop) {\n elToScroll.scrollTop = target.offsetTop;\n }\n};\nvar tryScrollDown = function (target, scrollable, elToScroll) {\n if (target.offsetTop + target.offsetHeight > scrollable.scrollTop + scrollable.offsetHeight &&\n target.offsetHeight < scrollable.offsetHeight) {\n elToScroll.scrollTop = target.offsetTop + target.offsetHeight - scrollable.offsetHeight;\n }\n};\nvar scrollTo = function (target, root, scrollFunc) {\n var elToScroll = root.querySelector(scrollableValuesSel);\n var scrollable = target && target.closest(scrollables);\n if (!elToScroll || !scrollable || !target) {\n return;\n }\n scrollFunc.forEach(function (scroll) { return scroll(target, scrollable, elToScroll); });\n};\nvar tableMap = function (table) {\n var rows = Array.from(table.rows);\n var colsCount = Array.from((rows && rows[0] && rows[0].cells) || [])\n .map(function (c) { return c.colSpan; })\n .reduce(function (prev, cur) { return prev + cur; }, 0);\n var map = rows.map(function () { return new Array(colsCount); });\n rows.forEach(function (row, r) {\n var curColSpan = 0;\n Array.from(row.cells).forEach(function (c) {\n for (var colSp = 0; colSp < c.colSpan; colSp++) {\n for (var rowSp = 0; rowSp < c.rowSpan; rowSp++) {\n var ind = map[r + rowSp].findIndex(function (val, curInd) { return curInd >= curColSpan && !val; });\n map[r + rowSp][ind] = c;\n }\n curColSpan++;\n }\n });\n });\n return map;\n};\nvar navigationMap = function (root) {\n var columnHeader = tableMap(root.querySelector([scrollableColumnHeaderSel, tableSel].join(' ')));\n var rowHeader = tableMap(root.querySelector([scrollableRowHeaderSel, tableSel].join(' ')));\n var values = tableMap(root.querySelector([scrollableValuesSel, tableSel].join(' ')));\n var emptyCell = root.querySelector(emptyCellSel);\n var emptyCellRow = new Array(rowHeader[0].length).fill(emptyCell);\n var map = [];\n for (var i = 0; i < columnHeader.length; i++) {\n map.push(emptyCellRow.concat(columnHeader[i]));\n }\n for (var i = 0; i < rowHeader.length; i++) {\n map.push(rowHeader[i].concat(values[i]));\n }\n return map;\n};\nvar getTargetPos = function (map, target) {\n for (var r = 0; r < map.length; r++) {\n for (var c = 0; c < map[r].length; c++) {\n if (map[r][c] === target) {\n return [r, c];\n }\n }\n }\n return [-1, -1];\n};\nvar ctrlKey = function (ev) { return ev.ctrlKey || ev.metaKey; };\nvar cellAt = function (root, target, pos) {\n var map = navigationMap(root);\n var targetPos = getTargetPos(map, target);\n var nextPos = [targetPos[0] + pos[0], targetPos[1] + pos[1]];\n var next = map[nextPos[0]] && map[nextPos[0]][nextPos[1]];\n while (next && next === target) {\n nextPos = [nextPos[0] + pos[0], nextPos[1] + pos[1]];\n next = map[nextPos[0]] && map[nextPos[0]][nextPos[1]];\n }\n return next;\n};\nvar keyboardEvents = {\n keydown: {\n ArrowLeft: function (target, nav, ev) {\n ev.preventDefault();\n var next = cellAt(nav.root, target, [0, -1]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollDown, tryScrollUp]);\n },\n ArrowRight: function (target, nav, ev) {\n ev.preventDefault();\n var next = cellAt(nav.root, target, [0, 1]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollLeft, tryScrollRight, tryScrollDown, tryScrollUp]);\n },\n ArrowUp: function (target, nav, ev) {\n ev.preventDefault();\n var next = cellAt(nav.root, target, [-1, 0]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollDown, tryScrollUp]);\n },\n ArrowDown: function (target, nav, ev) {\n ev.preventDefault();\n var next = cellAt(nav.root, target, [1, 0]);\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollUp, tryScrollDown]);\n },\n o: function (_target, nav, _ev) {\n if (!nav.root) {\n return;\n }\n var next = nav.root.nextElementSibling;\n if (next && next instanceof HTMLElement && next.matches('div.k-pivotgrid-configurator-button')) {\n next.click();\n setTimeout(function () {\n if (nav.root.parentNode) {\n var confHeader = nav.root.parentNode.querySelector('.k-pivotgrid-configurator-content .k-form-field .k-fields-list-wrapper .k-treeview');\n if (confHeader instanceof HTMLElement) {\n confHeader.setAttribute('tabindex', String(nav.tabIndex));\n confHeader.focus();\n }\n }\n }, 0);\n }\n },\n Enter: onEnter,\n Space: onEnter,\n Home: function (target, nav, ev) {\n var map = navigationMap(nav.root);\n var ctrl = ctrlKey(ev);\n var row = ctrl ? map[0] : (map.find(function (ro) { return Boolean(ro.find(function (x) { return x === target; })); }) || []);\n var next = row[0];\n if (next) {\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollRight, tryScrollLeft, tryScrollDown, tryScrollUp]);\n ev.preventDefault();\n }\n },\n End: function (target, nav, ev) {\n var map = navigationMap(nav.root);\n var ctrl = ctrlKey(ev);\n var row = ctrl ? map[map.length - 1] : (map.find(function (ro) { return Boolean(ro.find(function (x) { return x === target; })); }) || []);\n var next = row && row[row.length - 1] || null;\n if (next) {\n nav.focusElement(next, target);\n scrollTo(next, nav.root, [tryScrollLeft, tryScrollRight, tryScrollUp, tryScrollDown]);\n ev.preventDefault();\n }\n }\n }\n};\nvar mouseEvents = {\n click: function (target, nav) {\n if (target && target instanceof HTMLElement) {\n var prev = nav.elements.find(function (c) { return c.hasAttribute('tabindex'); }) || null;\n nav.focusElement(target, prev);\n }\n }\n};\n/**\n * The PivotGrid keyboard navigation functionality.\n *\n * Usage:\n *\n * On Initialize\n * const navigation = new PivotGridNavigation({ tabindex: 0 });\n *\n * Turn on\n * navigation.start(rootDomElement);\n *\n * On After Update\n * navigation.update();\n *\n * On Destroy / Turn off\n * navigation.stop();\n */\nvar PivotGridNavigation = /** @class */ (function (_super) {\n tslib_1.__extends(PivotGridNavigation, _super);\n function PivotGridNavigation() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.selectors = selectors;\n _this.mouseEvents = mouseEvents;\n _this.keyboardEvents = keyboardEvents;\n return _this;\n }\n return PivotGridNavigation;\n}(Navigation));\nexport { PivotGridNavigation };\n","import * as tslib_1 from \"tslib\";\nimport { Navigation } from './navigation';\nvar selectors = [\n '.k-pivotgrid-configurator-content .k-form-field .k-fields-list-wrapper .k-treeview',\n '.k-pivotgrid-configurator-content .k-chip',\n '.k-pivotgrid-configurator-actions button'\n];\nvar onEscape = function (_target, nav, ev) {\n if (ev.target instanceof HTMLElement) {\n if (nav.root) {\n var pivot = nav.root.previousElementSibling;\n var confButton = nav.root.nextElementSibling;\n var pivotCell = Array.from(pivot instanceof HTMLElement ? pivot.querySelectorAll('[tabindex]') : []).find(function (c) { return c.tabIndex >= 0; });\n if (pivotCell instanceof HTMLElement) {\n pivotCell.focus();\n if (confButton instanceof HTMLElement) {\n confButton.click();\n }\n }\n }\n }\n};\nvar navigate = function (target, nav, ev, dir) {\n ev.preventDefault();\n var all = nav.elements;\n var index = all.indexOf(target) + dir;\n if (index < 0) {\n index = all.length - 1;\n }\n nav.focusElement(all[index % all.length], target);\n};\nvar onDelete = function (target, nav, ev) {\n if (ev.target instanceof HTMLElement) {\n var deleteButton = ev.target.querySelector('.k-icon.k-i-x-circle, .k-svg-icon.k-svg-i-x-circle');\n if (deleteButton instanceof HTMLElement) {\n ev.preventDefault();\n navigate(target, nav, ev, -1);\n }\n }\n};\nvar keyboardEvents = {\n keydown: {\n Tab: function (target, nav, ev) {\n navigate(target, nav, ev, ev.shiftKey ? -1 : 1);\n },\n Escape: onEscape,\n Delete: onDelete,\n Backspace: onDelete\n }\n};\nvar mouseEvents = {\n click: function (target, nav) {\n if (target && target instanceof HTMLElement) {\n var prev = nav.elements.find(function (c) { return c.hasAttribute('tabindex'); }) || null;\n nav.focusElement(target, prev);\n }\n }\n};\n/**\n * The PivotGrid Configurator keyboard navigation functionality.\n *\n * Usage:\n *\n * On Initialize\n * const navigation = new ConfiguratorNavigation({ tabindex: 0 });\n *\n * Turn on\n * navigation.start(rootDomElement);\n *\n * On After Update\n * navigation.update();\n *\n * On Destroy / Turn off\n * navigation.stop();\n */\nvar ConfiguratorNavigation = /** @class */ (function (_super) {\n tslib_1.__extends(ConfiguratorNavigation, _super);\n function ConfiguratorNavigation() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.selectors = selectors;\n _this.mouseEvents = mouseEvents;\n _this.keyboardEvents = keyboardEvents;\n return _this;\n }\n return ConfiguratorNavigation;\n}(Navigation));\nexport { ConfiguratorNavigation };\n","var closest = function (element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n var matches = Element.prototype.matches ?\n function (el, sel) { return el.matches(sel); }\n : function (el, sel) { return el.msMatchesSelector(sel); };\n var node = element;\n while (node) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentElement;\n }\n};\nvar createRipple = function (doc) {\n var ripple = doc.createElement('div');\n ripple.className = 'k-ripple';\n var blob = doc.createElement('div');\n blob.className = 'k-ripple-blob';\n ripple.appendChild(blob);\n return [ripple, blob];\n};\nvar once = function (element, eventName, fn) {\n var listener = function () {\n fn();\n element.removeEventListener(eventName, listener, false);\n };\n var remove = function () { return element.addEventListener(eventName, listener, false); };\n remove();\n return { remove: remove };\n};\nvar activate = function (containerSelector, options) { return function (e) {\n var target = e.target;\n var doc = target.document || target.ownerDocument;\n var container;\n if (options.container) {\n container = options.container(target);\n }\n else {\n container = closest(target, containerSelector);\n }\n if (!container) {\n return;\n }\n // focus event of ripple container triggers double-focus\n var doubleFocus = /focus/i.test(e.type) && container.classList.contains(\"k-ripple-target\");\n if (doubleFocus) {\n return;\n }\n if (!target.classList.contains('k-checkbox') && !target.classList.contains('k-radio')) {\n // suppress focus when animating ripples\n container.classList.add(\"k-ripple-target\");\n var _a = createRipple(doc), ripple = _a[0], blob = _a[1];\n var state_1 = {\n animated: false,\n released: false,\n blob: blob,\n container: container,\n ripple: ripple\n };\n var eventType = {\n 'focusin': 'focusout',\n 'keydown': 'keyup',\n 'mousedown': 'mouseup',\n 'pointerdown': 'pointerup',\n 'touchdown': 'touchup',\n 'animationstart': 'animationend'\n }[e.type];\n once(e.currentTarget, eventType, function () { return release(state_1); });\n container.appendChild(ripple);\n // recalc to allow the effect to animate\n window.getComputedStyle(ripple).getPropertyValue('opacity');\n var rect = container.getBoundingClientRect();\n var left = 0;\n var top_1 = 0;\n if ((/mouse|pointer|touch/).test(e.type)) {\n left = e.clientX - rect.left;\n top_1 = e.clientY - rect.top;\n }\n else {\n left = rect.width / 2;\n top_1 = rect.height / 2;\n }\n // coordinates of the farthest corner\n var xMax = left < rect.width / 2 ? rect.width : 0;\n var yMax = top_1 < rect.height / 2 ? rect.height : 0;\n // distance to the farthest corner\n var dx = left - xMax;\n var dy = top_1 - yMax;\n // blob size is twice the blob radius\n var size = 2 * Math.sqrt(dx * dx + dy * dy);\n var duration = 500;\n blob.style.width = blob.style.height = size + \"px\";\n // force reflow for Safari 11 to align ripple blob\n if (blob.offsetWidth < 0) {\n throw new Error(\"Inconceivable!\");\n }\n blob.style.cssText = \"\\n width: \" + size + \"px;\\n height: \" + size + \"px;\\n transform: translate(-50%, -50%) scale(1);\\n left: \" + left + \"px;\\n top: \" + top_1 + \"px;\\n \";\n setTimeout(function () { return finishAnimation(state_1); }, duration);\n }\n else {\n e.target.classList.remove('k-ripple-focus');\n if (e.type !== 'animationend') {\n e.target.classList.add('k-ripple-focus');\n }\n }\n}; };\nvar finishAnimation = function (state) {\n state.animated = true;\n deactivate(state);\n};\nvar release = function (state) {\n state.released = true;\n deactivate(state);\n};\nvar deactivate = function (state) {\n // deactivation happens when both\n // - the activation event has been released (release)\n // - the ripple has finished animating (finishAnimation)\n if (!state.released || !state.animated) {\n return;\n }\n var blob = state.blob, ripple = state.ripple, container = state.container;\n if (container) {\n once(container, 'blur', function () { return container.classList.remove(\"k-ripple-target\"); });\n }\n if (blob) {\n once(blob, 'transitionend', function () {\n if (ripple && ripple.parentNode) {\n ripple.parentNode.removeChild(ripple);\n }\n });\n blob.style.transition = 'opacity 200ms linear';\n blob.style.opacity = '0';\n }\n};\n/**\n * @hidden\n */\nexport var register = function (root, elements) {\n var flatten = function (arr) { return [].concat.apply([], arr); };\n var handlers = flatten(elements.map(function (item) {\n var defaultOptions = {\n events: ['mousedown', 'touchdown'],\n global: false\n };\n var selector = item.selector, _a = item.options, options = _a === void 0 ? defaultOptions : _a;\n var activator = activate(selector, options);\n var events = options.events || defaultOptions.events;\n var container = options.global ? document.body : root;\n events.forEach(function (evt) { return container.addEventListener(evt, activator, false); });\n return { events: events, options: options, activator: activator };\n }));\n return function () {\n if (!root) {\n return;\n }\n var removeListener = function (_a) {\n var events = _a.events, options = _a.options, activator = _a.activator;\n var container = options.global ? document.body : root;\n events.forEach(function (evt) { return container.removeEventListener(evt, activator, false); });\n };\n handlers.forEach(removeListener);\n root = null;\n };\n};\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n /**\n * The `Forward` value with an underlying `1` number value.\n */\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n /**\n * The `Backward` value with an underlying `-1` (minus one) number value.\n */\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport var dayOfWeek = function (date, weekDay, direction) {\n if (direction === void 0) { direction = Direction.Forward; }\n var newDate = cloneDate(date);\n var newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n newDate.setDate(newDate.getDate() + newDay);\n return adjustDST(newDate, date.getHours());\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport var firstDayOfMonth = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","import { drawing, parseColor, geometry, drawText as drawText$1 } from '@progress/kendo-drawing';\nimport { dayOfWeek, getDate, addDays, firstDayOfMonth } from '@progress/kendo-date-math';\nimport { browser } from '@progress/kendo-common';\nimport JSZip from '@progress/jszip-esm';\n\n/* eslint-disable camelcase */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable max-params */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-else-return */\n/* eslint-disable no-param-reassign */\n/* eslint-disable eqeqeq */\n/* eslint-disable no-bitwise */\n\n// WARNING\n// == into === to make JSHint happy will break functionality.\n\nfunction columnName(colIndex) {\n const letter = Math.floor(colIndex / 26) - 1;\n return (letter >= 0 ? columnName(letter) : '') + String.fromCharCode(65 + (colIndex % 26));\n}\nfunction displaySheet(sheet) {\n if (/^[a-z_][a-z0-9_]*$/i.test(sheet)) {\n return sheet;\n }\n return \"'\" + sheet.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\nfunction displayRef(sheet, row, col, rel) {\n let aa = \"\";\n ++row;\n\n if (!isFinite(row)) {\n row = \"\";\n } else if (rel != null && !(rel & 2)) {\n row = \"$\" + row;\n }\n\n if (!isFinite(col)) {\n col = \"\";\n } else {\n aa = columnName(col);\n if (rel != null && !(rel & 1)) {\n aa = \"$\" + aa;\n }\n }\n if (sheet) {\n return displaySheet(sheet) + \"!\" + aa + row;\n } else {\n return aa + row;\n }\n}\n\n/* -----[ References ]----- */\n\nclass Ref {\n constructor() {\n this.type = \"ref\";\n this.sheet = \"\";\n }\n\n clone() {\n return this;\n }\n hasSheet() {\n return this._hasSheet;\n }\n simplify() {\n return this;\n }\n setSheet(sheet, hasSheet) {\n this.sheet = sheet;\n if (hasSheet != null) {\n this._hasSheet = hasSheet;\n }\n return this;\n }\n absolute(_arow, _acol) {\n return this;\n }\n relative(..._args) {\n return this;\n }\n adjust(_row, _col, _trow, _tcol, _forRow, _start, _delta) {\n return this;\n }\n toString() {\n return this.relative(0, 0, 3, 3).print(0, 0);\n }\n forEach(callback, obj) {\n callback.call(obj, this);\n }\n map(callback, obj) {\n return callback.call(obj, this);\n }\n intersect(_ref) {\n return this;\n }\n intersects(ref) {\n return this.intersect(ref) !== NULLREF;\n }\n isCell() {\n return false;\n }\n toRow(_row) {\n return this;\n }\n toColumn(_col) {\n return this;\n }\n // UnionRef overrides these, to access its subranges.\n first() {\n return this;\n }\n lastRange() {\n return this;\n }\n size() {\n return 1;\n }\n rangeAt(_index) {\n return this;\n }\n nextRangeIndex(_index) {\n return 0;\n }\n previousRangeIndex(_index) {\n return 0;\n }\n eq(reference) {\n let r1 = this;\n let r2 = reference;\n if (r1 === NULLREF || r2 === NULLREF) {\n return r1 === r2;\n }\n // make positions consistent\n if ((r2 instanceof CellRef) || (r2 instanceof RangeRef && !(r1 instanceof CellRef))) {\n r1 = reference;\n r2 = this;\n }\n if (r1 instanceof CellRef) { // cell eq *\n r2 = r2.simplify();\n return r2 instanceof CellRef && r1.row == r2.row && r1.col == r2.col && r1.sheet == r2.sheet;\n } else if (r1 instanceof RangeRef) { // range eq range/union\n if (r2 instanceof RangeRef) {\n return r2.topLeft.eq(r1.topLeft) && r2.bottomRight.eq(r1.bottomRight);\n }\n if (r2 instanceof UnionRef) {\n return r2.single() && r1.eq(r2.refs[0]);\n }\n } else if (r1 instanceof UnionRef && r2 instanceof UnionRef) { // union eq union\n const refs1 = r1.refs;\n const refs2 = r2.refs;\n if (refs1.length != refs2.length) {\n return false;\n }\n for (let i = 0, len = refs1.length; i < len; i++) {\n if (!refs1[i].eq(refs2[i])) {\n return false;\n }\n }\n return true;\n }\n return r1 === r2; // XXX'll support it.\n }\n concat(ref) {\n return new UnionRef([this, ref]);\n }\n replaceAt(_index, ref) {\n return ref;\n }\n forEachColumnIndex(callback) {\n this.forEachAxisIndex('col', callback);\n }\n forEachRowIndex(callback) {\n this.forEachAxisIndex('row', callback);\n }\n forEachRow(_callback) {\n //\n }\n forEachColumn(_callback) {\n //\n }\n forEachAxisIndex(axis, callback) {\n let sorted = [];\n let method = axis === 'row' ? 'forEachRow' : 'forEachColumn';\n\n this[method](function(ref) {\n let index = ref.first()[axis];\n if (sorted.indexOf(index) === -1) {\n sorted.push(index);\n }\n });\n\n sorted.sort(function(a, b) {\n return a > b ? 1 : (a < b ? -1 : 0);\n }).forEach(callback);\n }\n valid() {\n return false;\n }\n renameSheet(oldSheetName, newSheetName) {\n if (this.sheet && this.sheet.toLowerCase() == oldSheetName.toLowerCase()) {\n this.sheet = newSheetName;\n return true;\n }\n }\n}\n\nRef.display = displayRef;\n\n/* -----[ Null reference ]----- */\nclass NULLREFClass extends Ref {\n print() {\n return \"#NULL!\";\n }\n eq(ref) {\n return ref === this;\n }\n forEach() {}\n}\nconst NULLREF = new NULLREFClass();\n\n/* -----[ Name reference ]----- */\n\nclass NameRef extends Ref {\n constructor(name) {\n super();\n this.name = name;\n this.ref = \"name\";\n }\n\n clone() {\n return new NameRef(this.name)\n .setSheet(this.sheet, this.hasSheet());\n }\n print() {\n let ret = displaySheet(this.name);\n if (this.hasSheet()) {\n ret = displaySheet(this.sheet) + \"!\" + ret;\n }\n return ret;\n }\n}\n\n/* -----[ Cell reference ]----- */\n\nclass CellRef extends Ref {\n constructor(row, col, rel) {\n super();\n this.row = row;\n this.col = col;\n this.rel = rel || 0;\n this.ref = \"cell\";\n }\n\n clone() {\n return new CellRef(this.row, this.col, this.rel)\n .setSheet(this.sheet, this.hasSheet());\n }\n\n intersect(ref) {\n if (ref instanceof CellRef) {\n if (this.eq(ref)) {\n return this;\n } else {\n return NULLREF;\n }\n }\n return ref.intersect(this);\n }\n\n print(trow, tcol, mod) {\n let col = this.col, row = this.row, rel = this.rel, abs;\n if (trow == null && rel) {\n let sheet = this.hasSheet() ? displaySheet(this.sheet) + \"!\" : \"\";\n if (isFinite(col)) {\n col = rel & 1 ? (\"C[\" + col + \"]\") : (\"C\" + (col + 1));\n } else {\n col = \"\";\n }\n if (isFinite(row)) {\n row = rel & 2 ? (\"R[\" + row + \"]\") : (\"R\" + (row + 1));\n } else {\n row = \"\";\n }\n return sheet + row + col;\n } else {\n abs = this.absolute(trow, tcol);\n if (mod) {\n // Hacks`absolute()`\n row = abs.row % 0x100000;\n col = abs.col % 0x4000;\n if (row < 0) {\n row += 0x100000;\n }\n if (col < 0) {\n col += 0x4000;\n }\n return displayRef(this._hasSheet && this.sheet, row, col, rel);\n }\n return abs.valid() ? displayRef(this._hasSheet && this.sheet, abs.row, abs.col, rel) : \"#REF!\";\n }\n }\n absolute(arow, acol) {\n let ret = this.clone();\n if ((ret.rel & 3) === 0) {\n return ret; // already absolute\n }\n\n // Hacks0x4000 (max col) and 0x100000 (max row). This\n // fixes importing relative references in definedName-s from Excel. Example in\n // Excel3, open the Name Manager (in Formula tab) and define name\n // TEST with value Sheet1!A1:C3. The serialization of this name in XLSX is:\n //\n // Sheet1!XFA1048575:XFC1\n //\n // This is insane, of course, but oh well. Excel. If you type in E3 =SUM(TEST) it\n // works (it actually sums the cells), but if you type =SUM(Sheet1!XFA1048575:XFC1)\n // you get back zero. Let's see why SUM(TEST) works:\n //\n // XFA1048575:XFC1 E3\n // (zero-based indexes below)\n //\n // R[1048574]C[16380]:R[0]C[16382] + R2C4 = R1048576C16384:R2C16386\n // % (0x100000, 0x4000)\n // = R0C0:R2C2 (== A1:C3)\n //\n // So XFA1048575:XFC1 is relocated to E3 at evaluation time, and because we take\n // rows modulo 0x100000 and cols modulo 0x4000, we get back the correct range.\n //\n // IMO Excel should disallow A1-style relative references in name definitions\n // (simply because the meaning of the A1:C3 you type in Name Manager depends on the\n // active cell) and only allow R1C1 notation — that's unambiguous. But it doesn't.\n // Moreover, R1C1-style refs in XLSX are explicitly forbidden by the spec, and the\n // hacks above are not documented — how else could we have fun implementing a XLSX\n // reader?\n if (ret.rel & 1) {\n // relative col, add anchor\n ret.col = (ret.col + acol) % 0x4000;\n }\n if (ret.rel & 2) {\n // relative row, add anchor\n ret.row = (ret.row + arow) % 0x100000;\n }\n\n ret.rel = 0;\n return ret;\n }\n toRangeRef() {\n return new RangeRef(this, this);\n }\n relative(arow, acol, rel) {\n if (rel == null) {\n rel = this.rel;\n }\n let row = rel & 2 ? this.row - arow : this.row;\n let col = rel & 1 ? this.col - acol : this.col;\n return new CellRef(row, col, rel)\n .setSheet(this.sheet, this.hasSheet());\n }\n height() {\n return 1;\n }\n width() {\n return 1;\n }\n toString() {\n return displayRef(null, this.row, this.col, 3);\n }\n isCell() {\n return true;\n }\n leftColumn() {\n return this;\n }\n rightColumn() {\n return this;\n }\n topRow() {\n return this;\n }\n bottomRow() {\n return this;\n }\n forEachRow(callback) {\n callback(this.toRangeRef());\n }\n forEachColumn(callback) {\n callback(this.toRangeRef());\n }\n adjust(row, col, trow, tcol, forRow, start, delta) {\n let ref = this.absolute(row, col);\n if (forRow) {\n if (ref.row >= start) {\n if (delta < 0 && ref.row < start - delta) {\n return NULLREF;\n }\n ref.row += delta;\n }\n } else {\n if (ref.col >= start) {\n if (delta < 0 && ref.col < start - delta) {\n return NULLREF;\n }\n ref.col += delta;\n }\n }\n if (trow != null && tcol != null) {\n ref = ref.relative(trow, tcol, this.rel);\n }\n return ref;\n }\n valid() {\n if (this.rel) {\n throw new Error(\"valid() called on relative reference\");\n }\n let col = this.col, row = this.row;\n return !((isFinite(col) && col < 0) || (isFinite(row) && row < 0));\n }\n}\n\n/* -----[ Range reference ]----- */\n\nclass RangeRef extends Ref {\n constructor(tl, br) {\n super();\n this.ref = \"range\";\n if (tl._hasSheet && br._hasSheet && tl.sheet.toLowerCase() != br.sheet.toLowerCase()) {\n // \"3D\" reference\n this.endSheet = br.sheet;\n }\n // we want to drop any sheet information from the cells here.\n this.topLeft = new CellRef(tl.row, tl.col, tl.rel);\n this.bottomRight = new CellRef(br.row, br.col, br.rel);\n this.normalize();\n }\n clone() {\n return new RangeRef(this.topLeft.clone(), this.bottomRight.clone()).setSheet(this.sheet, this.hasSheet());\n }\n _containsRange(range) {\n return this._containsCell(range.topLeft)\n && this._containsCell(range.bottomRight);\n }\n _containsCell(cell) {\n return cell.sheet == this.sheet\n && cell.row >= this.topLeft.row\n && cell.col >= this.topLeft.col\n && cell.row <= this.bottomRight.row\n && cell.col <= this.bottomRight.col;\n }\n contains(ref) {\n if (ref instanceof Array) {\n let that = this;\n\n return ref.some(function(_ref) { return Boolean(that.contains(_ref)); });\n }\n if (ref instanceof CellRef) {\n return this._containsCell(ref);\n }\n if (ref instanceof RangeRef) {\n return this._containsRange(ref);\n }\n return false;\n }\n _intersectRange(ref) {\n if (this.sheet != ref.sheet) {\n return NULLREF;\n }\n let a_left = this.topLeft.col;\n let a_top = this.topLeft.row;\n let a_right = this.bottomRight.col;\n let a_bottom = this.bottomRight.row;\n let b_left = ref.topLeft.col;\n let b_top = ref.topLeft.row;\n let b_right = ref.bottomRight.col;\n let b_bottom = ref.bottomRight.row;\n if (a_left <= b_right &&\n b_left <= a_right &&\n a_top <= b_bottom &&\n b_top <= a_bottom) {\n return new RangeRef(\n // topLeft\n new CellRef(Math.max(a_top, b_top),\n Math.max(a_left, b_left)),\n // bottomRight\n new CellRef(Math.min(a_bottom, b_bottom),\n Math.min(a_right, b_right))\n ).setSheet(this.sheet, this.hasSheet());\n } else {\n return NULLREF;\n }\n }\n intersect(ref) {\n if (ref instanceof CellRef) {\n return this._containsCell(ref) ? ref : NULLREF;\n }\n if (ref instanceof RangeRef) {\n return this._intersectRange(ref).simplify();\n }\n if (ref instanceof UnionRef) {\n return ref.intersect(this);\n }\n return NULLREF; // can't handle NameRef-s here.\n }\n simplify() {\n if (this.isCell()) {\n return new CellRef(\n this.topLeft.row,\n this.topLeft.col,\n this.topLeft.rel\n ).setSheet(this.sheet, this.hasSheet());\n }\n return this;\n }\n normalize() {\n let a = this.topLeft, b = this.bottomRight;\n let r1 = a.row, c1 = a.col, r2 = b.row, c2 = b.col;\n let rr1 = a.rel & 2, rc1 = a.rel & 1;\n let rr2 = b.rel & 2, rc2 = b.rel & 1;\n let tmp, changes = false;\n // do not attempt to normalize unless relativeness of rows and cols are the same.\n // https://github.com/telerik/kendo-ui-core/issues/4278\n if (rr1 === rr2 && rc1 === rc2) {\n if (r1 > r2) {\n changes = true;\n tmp = r1; r1 = r2; r2 = tmp;\n tmp = rr1; rr1 = rr2; rr2 = tmp;\n }\n if (c1 > c2) {\n changes = true;\n tmp = c1; c1 = c2; c2 = tmp;\n tmp = rc1; rc1 = rc2; rc2 = tmp;\n }\n if (changes) {\n this.topLeft = new CellRef(r1, c1, rc1 | rr1);\n this.bottomRight = new CellRef(r2, c2, rc2 | rr2);\n }\n }\n return this;\n }\n print(trow, tcol, mod) {\n if (mod || this.absolute(trow, tcol).valid()) {\n let ret = this.topLeft.print(trow, tcol, mod)\n + \":\"\n + this.bottomRight.print(trow, tcol, mod);\n if (this.hasSheet()) {\n ret = displaySheet(this.sheet)\n + (this.endSheet ? \":\" + displaySheet(this.endSheet) : \"\")\n + \"!\" + ret;\n }\n return ret;\n }\n return \"#REF!\";\n }\n absolute(arow, acol) {\n return new RangeRef(\n this.topLeft.absolute(arow, acol),\n this.bottomRight.absolute(arow, acol)\n ).setSheet(this.sheet, this.hasSheet());\n }\n relative(arow, acol, relTL, relBR) {\n if (relBR == null) {\n relBR = relTL;\n }\n return new RangeRef(\n this.topLeft.relative(arow, acol, relTL),\n this.bottomRight.relative(arow, acol, relBR)\n ).setSheet(this.sheet, this.hasSheet());\n }\n height() {\n if (this.topLeft.rel != this.bottomRight.rel) {\n throw new Error(\"Mixed relative/absolute references\");\n }\n return this.bottomRight.row - this.topLeft.row + 1;\n }\n width() {\n if (this.topLeft.rel != this.bottomRight.rel) {\n throw new Error(\"Mixed relative/absolute references\");\n }\n return this.bottomRight.col - this.topLeft.col + 1;\n }\n collapse() {\n return this.topLeft.toRangeRef();\n }\n leftColumn() {\n return new RangeRef(this.topLeft, new CellRef(this.bottomRight.row, this.topLeft.col));\n }\n rightColumn() {\n return new RangeRef(new CellRef(this.topLeft.row, this.bottomRight.col), this.bottomRight);\n }\n topRow() {\n return new RangeRef(this.topLeft, new CellRef(this.topLeft.row, this.bottomRight.col));\n }\n bottomRow() {\n return new RangeRef(new CellRef(this.bottomRight.row, this.topLeft.col), this.bottomRight);\n }\n toRangeRef() {\n return this;\n }\n toRow(row) {\n row += Math.max(0, this.topLeft.row);\n return new RangeRef(\n new CellRef(row, this.topLeft.col),\n new CellRef(row, this.bottomRight.col)\n ).setSheet(this.sheet, this.hasSheet());\n }\n toColumn(col) {\n col += Math.max(0, this.topLeft.col);\n return new RangeRef(\n new CellRef(this.topLeft.row, col),\n new CellRef(this.bottomRight.row, col)\n ).setSheet(this.sheet, this.hasSheet());\n }\n toCell(row, col) {\n row += Math.max(0, this.topLeft.row);\n col += Math.max(0, this.topLeft.col);\n return new CellRef(row, col, 0)\n .setSheet(this.sheet, this.hasSheet());\n }\n forEachRow(callback) {\n let startRow = this.topLeft.row;\n let endRow = this.bottomRight.row;\n let startCol = this.topLeft.col;\n let endCol = this.bottomRight.col;\n\n for (let i = startRow; i <= endRow; i++) {\n callback(new RangeRef(\n new CellRef(i, startCol),\n new CellRef(i, endCol)\n ));\n }\n }\n forEachColumn(callback) {\n let startRow = this.topLeft.row;\n let endRow = this.bottomRight.row;\n let startCol = this.topLeft.col;\n let endCol = this.bottomRight.col;\n\n for (let i = startCol; i <= endCol; i++) {\n callback(new RangeRef(\n new CellRef(startRow, i),\n new CellRef(endRow, i)\n ));\n }\n }\n intersecting(refs) {\n return refs.filter((ref) => ref.toRangeRef().intersects(this));\n }\n\n union(refs, callback) {\n let intersecting = this.intersecting(refs);\n\n let topLeftRow = this.topLeft.row;\n let topLeftCol = this.topLeft.col;\n let bottomRightRow = this.bottomRight.row;\n let bottomRightCol = this.bottomRight.col;\n\n let modified = false;\n\n intersecting.forEach(function(ref) {\n ref = ref.toRangeRef();\n if (ref.topLeft.row < topLeftRow) {\n modified = true;\n topLeftRow = ref.topLeft.row;\n }\n\n if (ref.topLeft.col < topLeftCol) {\n modified = true;\n topLeftCol = ref.topLeft.col;\n }\n\n if (ref.bottomRight.row > bottomRightRow) {\n modified = true;\n bottomRightRow = ref.bottomRight.row;\n }\n\n if (ref.bottomRight.col > bottomRightCol) {\n modified = true;\n bottomRightCol = ref.bottomRight.col;\n }\n\n if (callback) {\n callback(ref);\n }\n });\n\n let result = new RangeRef(\n new CellRef(topLeftRow, topLeftCol),\n new CellRef(bottomRightRow, bottomRightCol)\n );\n\n if (modified) {\n return result.union(refs, callback);\n } else {\n return result;\n }\n }\n resize(options) {\n let limit = Math.max.bind(Math, 0);\n function num(value) { return value || 0; }\n\n let top = this.topLeft.row + num(options.top);\n let left = this.topLeft.col + num(options.left);\n let bottom = this.bottomRight.row + num(options.bottom);\n let right = this.bottomRight.col + num(options.right);\n\n if (left < 0 && right < 0 || top < 0 && bottom < 0) {\n return NULLREF;\n } else if (top <= bottom && left <= right) {\n return new RangeRef(new CellRef(limit(top), limit(left)),\n new CellRef(limit(bottom), limit(right)));\n } else {\n return NULLREF;\n }\n }\n move(rows, cols) {\n return new RangeRef(\n new CellRef(this.topLeft.row + rows,\n this.topLeft.col + cols),\n new CellRef(this.bottomRight.row + rows,\n this.bottomRight.col + cols)\n );\n }\n first() {\n return this.topLeft.clone().setSheet(this.sheet, this.hasSheet());\n }\n isCell() {\n return !this.endSheet && this.topLeft.eq(this.bottomRight);\n }\n toString() {\n return this.topLeft + \":\" + this.bottomRight;\n }\n adjust(row, col, trow, tcol, forRow, start, delta) {\n let tl = this.topLeft.adjust(row, col, trow, tcol, forRow, start, delta);\n let tr = this.bottomRight.adjust(row, col, trow, tcol, forRow, start, delta);\n if (tl === NULLREF && tr === NULLREF) {\n return NULLREF;\n }\n if (tl === NULLREF) {\n tl = this.topLeft.absolute(row, col);\n if (forRow) {\n tl.row = start;\n } else {\n tl.col = start;\n }\n if (trow != null && tcol != null) {\n tl = tl.relative(trow, tcol, this.topLeft.rel);\n }\n } else if (tr === NULLREF) {\n tr = this.bottomRight.absolute(row, col);\n if (forRow) {\n tr.row = start - 1;\n } else {\n tr.col = start - 1;\n }\n if (trow != null && tcol != null) {\n tr = tr.relative(trow, tcol, this.bottomRight.rel);\n }\n }\n return new RangeRef(tl, tr)\n .setSheet(this.sheet, this.hasSheet())\n .simplify();\n }\n valid() {\n return this.topLeft.valid() && this.bottomRight.valid();\n }\n}\n\n/* -----[ Union reference ]----- */\n\nclass UnionRef extends Ref {\n constructor(refs) {\n super();\n this.refs = refs;\n this.length = refs.length;\n }\n clone() {\n return new UnionRef(this.refs.slice());\n }\n intersect(ref) {\n let a = [];\n for (let i = 0; i < this.length; ++i) {\n let x = ref.intersect(this.refs[i]);\n if (x !== NULLREF) {\n a.push(x);\n }\n }\n if (a.length > 0) {\n return new UnionRef(a).simplify();\n }\n return NULLREF;\n }\n simplify() {\n // eslint-disable-next-line max-len\n let u = new UnionRef(this.refs.reduce(function(a, ref) {\n ref = ref.simplify();\n if (ref !== NULLREF) {\n a.push(ref);\n }\n return a;\n }, []));\n if (u.empty()) {\n return NULLREF;\n }\n if (u.single()) {\n return u.refs[0];\n }\n return u;\n }\n absolute(arow, acol) {\n return new UnionRef(this.refs.map(function(ref) {\n return ref.absolute(arow, acol);\n }));\n }\n forEach(callback, obj) {\n this.refs.forEach(function(ref) {\n if (ref instanceof UnionRef) {\n ref.forEach(callback, obj);\n } else {\n callback.call(obj, ref);\n }\n }, obj);\n }\n toRangeRef() {\n return this.refs[0].toRangeRef();\n }\n contains(theRef) {\n return this.refs.some(function(ref) { return ref.contains(theRef); });\n }\n map(callback, obj) {\n let refs = [];\n this.forEach(function(ref) {\n refs.push(callback.call(obj, ref));\n });\n return new UnionRef(refs);\n }\n first() {\n return this.refs[0].first();\n }\n lastRange() {\n return this.refs[this.length - 1];\n }\n size() {\n return this.length;\n }\n single() {\n return this.length == 1;\n }\n empty() {\n return this.length === 0;\n }\n isCell() {\n return this.single() && this.refs[0].isCell();\n }\n rangeAt(index) {\n return this.refs[index];\n }\n nextRangeIndex(index) {\n if (index === this.length - 1) {\n return 0;\n } else {\n return index + 1;\n }\n }\n previousRangeIndex(index) {\n if (index === 0) {\n return this.length - 1;\n } else {\n return index - 1;\n }\n }\n concat(ref) {\n return new UnionRef(this.refs.concat([ref]));\n }\n print(row, col, mod) {\n return this.refs.map(function(ref) { return ref.print(row, col, mod); }).join(\",\");\n }\n\n replaceAt(index, ref) {\n let newRefs = this.refs.slice();\n newRefs.splice(index, 1, ref);\n return new UnionRef(newRefs);\n }\n\n leftColumn() {\n return this.map(function(ref) {\n return ref.leftColumn();\n });\n }\n rightColumn() {\n return this.map(function(ref) {\n return ref.rightColumn();\n });\n }\n topRow() {\n return this.map(function(ref) {\n return ref.topRow();\n });\n }\n bottomRow() {\n return this.map(function(ref) {\n return ref.bottomRow();\n });\n }\n forEachRow(callback) {\n this.forEach(function(ref) {\n ref.forEachRow(callback);\n });\n }\n forEachColumn(callback) {\n this.forEach(function(ref) {\n ref.forEachColumn(callback);\n });\n }\n adjust(row, col, trow, tcol, forRow, start, delta) {\n return this.map(function(ref) {\n return ref.adjust(row, col, trow, tcol, forRow, start, delta);\n }).simplify();\n }\n toString() {\n return this.refs.map(function(ref) {\n return ref.toString();\n }).join(\", \");\n }\n valid() {\n for (let i = this.refs.length; --i >= 0;) {\n if (this.refs[i].valid()) {\n return false;\n }\n }\n return true;\n }\n renameSheet(oldSheetName, newSheetName) {\n this.refs.forEach(function(ref) {\n ref.renameSheet(oldSheetName, newSheetName);\n });\n }\n}\n\nconst FIRSTREF = new CellRef(0, 0);\n\nconst SHEETREF = new RangeRef(new CellRef(0, 0), new CellRef(Infinity, Infinity));\nSHEETREF.print = function() {\n return \"#SHEET\";\n};\n\n/* eslint-disable key-spacing */\nconst messages = {};\nmessages.view = {\n nameBox: \"Name Box\",\n errors: {\n modifyMerged: \"Cannot change part of a merged cell.\",\n openUnsupported: \"Unsupported format. Please select an .xlsx file.\",\n shiftingNonblankCells: \"Cannot insert cells due to data loss possibility. Select another insert location or delete the data from the end of your worksheet.\",\n insertColumnWhenRowIsSelected: \"Cannot insert column when all columns are selected.\",\n insertRowWhenColumnIsSelected: \"Cannot insert row when all rows are selected.\",\n filterRangeContainingMerges: \"Cannot create a filter within a range containing merges\",\n sortRangeContainingMerges: \"Cannot sort a range containing merges\",\n cantSortMultipleSelection: \"Cannot sort multiple selection\",\n cantSortNullRef: \"Cannot sort empty selection\",\n cantSortMixedCells: \"Cannot sort range containing cells of mixed shapes\",\n validationError: \"The value that you entered violates the validation rules set on the cell.\",\n cannotModifyDisabled: \"Cannot modify disabled cells.\",\n insertRowBelowLastRow: \"Cannot insert row below the last row.\",\n insertColAfterLastCol: \"Cannot insert column to the right of the last column.\"\n },\n tabs: {\n home: \"Home\",\n insert: \"Insert\",\n data: \"Data\"\n }\n};\n\nmessages.menus = {\n \"cut\" : \"Cut\",\n \"copy\" : \"Copy\",\n \"paste\" : \"Paste\",\n \"merge\" : \"Merge\",\n \"unmerge\" : \"Unmerge\",\n \"delete\" : \"Delete\",\n \"hide\" : \"Hide\",\n \"unhide\" : \"Unhide\",\n \"bringToFront\" : \"Bring to front\",\n \"sendToBack\" : \"Send to back\"\n};\n\nmessages.workbook = {\n defaultSheetName: \"Sheet\"\n};\n\nconst options = {\n name: \"Spreadsheet\",\n toolbar: true,\n sheetsbar: true,\n rows: 200,\n columns: 50,\n rowHeight: 20,\n columnWidth: 64,\n headerHeight: 20,\n headerWidth: 32,\n excel: {\n fileName: \"Workbook.xlsx\",\n forceProxy: false,\n proxyURL: \"\",\n },\n messages: messages,\n pdf: {\n // which part of the workbook to be exported\n area: \"workbook\",\n fileName: \"Workbook.pdf\",\n proxyURL: \"\",\n // paperSize can be an usual name, i.e. \"A4\", or an array of two Number-s specifying the\n // width/height in points (1pt = 1/72in), or strings including unit, i.e. \"10mm\". Supported\n // units are \"mm\", \"cm\", \"in\" and \"pt\". The default \"auto\" means paper size is determined\n // by content.\n paperSize: \"a4\",\n // True to reverse the paper dimensions if needed such that width is the larger edge.\n landscape: true,\n // An object containing { left, top, bottom, right } margins with units.\n margin: null,\n // Optional information for the PDF Info dictionary; all strings except for the date.\n title: null,\n author: null,\n subject: null,\n keywords: null,\n creator: \"Kendo UI PDF Generator\",\n // Creation Date; defaults to new Date()\n date: null\n },\n defaultCellStyle: {\n fontFamily: \"Arial\",\n fontSize: 12\n },\n useCultureDecimals: false,\n locale: 'en'\n};\n\nconst ALL_REASONS = {\n recalc: true,\n selection: true,\n activeCell: true,\n layout: true,\n sheetSelection: true,\n resize: true,\n editorChange: false,\n editorClose: false\n};\n\nconst keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F11: 122,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110,\n B: 66,\n I: 73,\n U: 85,\n N: 78,\n H: 72,\n A: 65,\n R: 82\n};\n\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n\nconst RX_UNICODE_LETTER = new RegExp(\"[\\\\u0041-\\\\u005A\\\\u0061-\\\\u007A\\\\u00AA\\\\u00B5\\\\u00BA\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\");\n\nfunction isUnicodeLetter(ch) {\n return RX_UNICODE_LETTER.test(ch);\n}\n\nfunction memoize(f) {\n let cache = Object.create(null);\n return function() {\n let id = \"\";\n for (let i = arguments.length; --i >= 0;) {\n id += \":\" + arguments[i];\n }\n return id in cache ? cache[id] : (cache[id] = f.apply(this, arguments));\n };\n}\n\nfunction arabicToRoman(n) {\n let literals = {\n 1: \"i\", 10: \"x\", 100: \"c\",\n 2: \"ii\", 20: \"xx\", 200: \"cc\",\n 3: \"iii\", 30: \"xxx\", 300: \"ccc\",\n 4: \"iv\", 40: \"xl\", 400: \"cd\",\n 5: \"v\", 50: \"l\", 500: \"d\",\n 6: \"vi\", 60: \"lx\", 600: \"dc\",\n 7: \"vii\", 70: \"lxx\", 700: \"dcc\",\n 8: \"viii\", 80: \"lxxx\", 800: \"dccc\",\n 9: \"ix\", 90: \"xc\", 900: \"cm\",\n 1000: \"m\"\n };\n let values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n let roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}\n\nfunction romanToArabic(r) {\n r = r.toLowerCase();\n let digits = {\n i: 1,\n v: 5,\n x: 10,\n l: 50,\n c: 100,\n d: 500,\n m: 1000\n };\n let value = 0, prev = 0;\n for (let i = 0; i < r.length; ++i) {\n let v = digits[r.charAt(i)];\n if (!v) {\n return null;\n }\n value += v;\n if (v > prev) {\n value -= 2 * prev;\n }\n prev = v;\n }\n return value;\n}\n\nfunction withExit(f, obj) {\n try {\n return f.call(obj, function(value) {\n throw new Return(value);\n });\n } catch (ex) {\n if (ex instanceof Return) {\n return ex.value;\n }\n throw ex;\n }\n function Return(value) {\n this.value = value;\n }\n}\n\nconst getterCache = {};\n\ngetterCache[\"undefined\"] = (obj) => obj;\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nfunction getter(field, safe) {\n const key = field + safe;\n\n if (getterCache[key]) {\n return getterCache[key];\n }\n\n const fields = [];\n field.replace(FIELD_REGEX, (_, index, indexAccessor, field) => {\n fields.push(isPresent(index) ? index : indexAccessor || field);\n return undefined;\n });\n\n getterCache[key] = (obj) => {\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n\n return result;\n };\n\n return getterCache[key];\n}\n\nfunction deepExtend(destination) {\n let i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n}\n\nfunction deepExtendOne(destination, source) {\n let property,\n propValue,\n propType,\n destProp;\n\n for (property in source) {\n if (property === '__proto__' || property === 'constructor') {\n continue;\n }\n\n propValue = source[property];\n propType = typeof propValue;\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue?.clone)) {\n destination[property] = propValue.clone();\n } else if (propType === 'object' && propValue !== null && isPlainObject(propValue)) {\n // Check if the property is a plain object before attempting to merge deeply\n destProp = destination[property];\n if (typeof destProp !== 'object' || destProp === null) {\n destination[property] = {};\n }\n\n deepExtendOne(destination[property], propValue);\n } else if (propType !== 'undefined') {\n destination[property] = propValue;\n }\n }\n\n return destination;\n}\n\nfunction guid() {\n let id = \"\", i, random, chars = \"abcdef\";\n\n id += chars[Math.floor(Math.random() * Math.floor(chars.length))];\n\n for (i = 1; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n\n return id;\n}\n\nconst support = {};\n\nconst scrollbar = function(refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n }\n\n let div = document.createElement(\"div\"),\n result;\n\n div.style.overflow = \"scroll\";\n div.style.overflowX = \"hidden\";\n div.style.zoom = \"1\";\n div.style.clear = \"both\";\n div.style.display = \"block\";\n\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n\n return result;\n};\n\nfunction toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function(strMatch, g1) {\n return g1.toUpperCase();\n });\n}\n\nfunction size(obj) {\n let result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key !== \"toJSON\") { // Ignore fake IE7 toJSON.\n result++;\n }\n }\n\n return result;\n}\n\nconst kendoGetComputedStyles = function(element, properties) {\n let styles = {}, computedStyle;\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\n\n if (properties) {\n properties.forEach(function(value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n\n if (properties) {\n properties.forEach(function(value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n\n if (!size(styles)) {\n styles = computedStyle;\n }\n\n return styles;\n};\n\nconst insertAfter = function(newElement, after) {\n after.parentNode.insertBefore(newElement, after.nextSibling);\n};\n\nconst _activeElement$1 = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n};\n\nconst isPresent = (value) => value !== null && value !== undefined;\nconst isBlank = (value) => !isPresent(value);\nconst isDate = (value) => value && value.getTime;\nconst isString = (value) => typeof value === \"string\";\nconst isNumeric = (value) => !isNaN(value - parseFloat(value));\nconst isFunction = (fn) => typeof fn === \"function\";\nconst isPlainObject = function(obj) {\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n const proto = Object.getPrototypeOf(obj);\n return proto === null || proto.constructor === Object;\n};\n\nclass CalcError {\n\n constructor(code) {\n if (code instanceof CalcError) {\n return code;\n }\n this.code = code;\n }\n\n toString() {\n return '#' + this.code + (this.code === 'NAME' ? '?' : '!');\n }\n}\n\nlet intlValue = {};\n\nconst intl = (value) => {\n if (value) {\n intlValue = value;\n } else {\n return intlValue;\n }\n};\n\nconst culture = () => {\n return intl().localeInfo();\n};\n\nfunction createKendoObj(calc, CalcError, Ref, CellRef, RangeRef) {\n const kendo = {};\n kendo.spreadsheet = { calc, CalcError, Ref, CellRef, RangeRef };\n kendo.culture = () => culture();\n\n return kendo;\n}\n\n/* eslint-disable max-params */\n/* eslint-disable complexity */\n/* eslint-disable no-unused-vars */\n\n\nlet calc = {\n runtime: {\n FUNCS: Object.create(null),\n }\n};\n\nlet FUNCS$1 = calc.runtime.FUNCS;\n\n/* -----[ Context ]----- */\n\nclass Context {\n constructor(callback, formula, ss, parent) {\n this.callback = callback;\n this.formula = formula;\n this.ss = ss;\n this.parent = parent;\n }\n\n resolve(val) {\n var self = this;\n if (val instanceof Ref) {\n self.resolveCells([ val ], function() {\n self._resolve(val);\n });\n } else {\n self._resolve(val);\n }\n }\n\n error(val) {\n return new CalcError(val);\n }\n\n _resolve(val) {\n if (val === undefined) {\n val = null;\n } else if (Array.isArray(val)) {\n val = this.asMatrix(val);\n } else {\n val = maybeRoundFloatErrors(val);\n }\n var f = this.formula;\n if (f.arrayFormulaRange) {\n // when this is an array formula, make sure we return a Matrix. The value already\n // *should* be a Matrix, so this won't incur speed penalty in normal cases.\n val = this.asMatrix(val) || this.asMatrix([[ val ]]);\n } else if (val instanceof RangeRef) {\n val = this._arrayArg(val);\n }\n f.value = val;\n if (this.ss.onFormula(f) && this.callback) {\n this.callback.call(f, val);\n }\n }\n\n resolveCells(a, f) {\n var context = this, formulas = [];\n\n (function loop(a) {\n for (var i = 0; i < a.length; ++i) {\n var x = a[i];\n if (x instanceof Ref) {\n add(context.getRefCells(x));\n }\n if (Array.isArray(x)) {\n // make sure we resolve cells in literal matrices\n loop(x);\n }\n }\n })(a);\n\n if (!formulas.length) {\n return f.call(context);\n }\n\n for (var pending = formulas.length, i = 0; i < formulas.length; ++i) {\n fetch(formulas[i]);\n }\n function fetch(formula) {\n formula.exec(context.ss, function() {\n if (!--pending) {\n f.call(context);\n }\n }, context);\n }\n function add(a) {\n for (var i = 0; i < a.length; ++i) {\n var cell = a[i];\n if (cell.formula) {\n formulas.push(cell.formula);\n }\n }\n return true;\n }\n }\n\n cellValues(a, wantNulls) {\n var ret = [];\n for (var i = 0; i < a.length; ++i) {\n var val = a[i];\n if (val instanceof Ref) {\n val = this.getRefData(val, wantNulls);\n ret = ret.concat(val);\n } else if (Array.isArray(val)) {\n ret = ret.concat(this.cellValues(val, wantNulls));\n } else if (val instanceof Matrix) {\n ret = ret.concat(this.cellValues(val.data, wantNulls));\n } else {\n ret.push(val);\n }\n }\n return ret;\n }\n\n fetchName(ref, callback) {\n var f = this.formula;\n var val = this.ss.nameValue(ref, f.sheet, f.row, f.col);\n if (val instanceof Formula$1) {\n // clone and relocate to calling formula, so that relative references in a named\n // formula would work as expected.\n val = val.clone(f.sheet, f.row, f.col, true);\n\n // XXX: I don't like this dependency here; basically we only need ss.onFormula to\n // return true and do nothing else.\n var ss = new calc.ValidationFormulaContext(this.ss.workbook);\n\n val.exec(ss, callback, this);\n } else {\n if (val instanceof Ref) {\n // relocate for relative refs\n val = val.absolute(f.row, f.col);\n if (val instanceof RangeRef && this.ss.isMerged(val)) {\n val = val.topLeft;\n }\n if (!val.sheet) {\n val.sheet = f.sheet;\n }\n }\n callback(val == null ? new CalcError(\"NAME\") : val);\n }\n }\n\n force(val) {\n if (val instanceof Ref) {\n return this.getRefData(val);\n }\n return val;\n }\n\n func(fname, callback, args) {\n fname = fname.toLowerCase();\n var f = FUNCS$1[fname];\n if (f) {\n return f.call(this, callback, args);\n }\n callback(new CalcError(\"NAME\"));\n }\n\n bool(val) {\n if (val instanceof Ref) {\n val = this.getRefData(val);\n }\n if (typeof val == \"string\") {\n return val.toLowerCase() == \"true\";\n }\n if (typeof val == \"number\") {\n return val !== 0;\n }\n if (typeof val == \"boolean\") {\n return val;\n }\n return val != null;\n }\n\n _arrayArg(ref) { // not necessarily a reference though\n var f = this.formula;\n if (!f.arrayFormulaRange && ref instanceof RangeRef) {\n // if formula wasn't saved with Ctrl-Shift-Enter but a range is passed, Excel does\n // something special:\n //\n // - if range is Wx1 (horizontal array) and current formula resides within the\n // horizontal bounds of the range, the appropriate cell is selected. Example:\n // A1..D1 contain 1, 2, 3, 4 and we have in B2: =A1:D1, then B2 will get 2 (the\n // value in A2). If the same formula is typed outside the horizontal span of the\n // range, say in E2: =A1:D1, then #VALUE! is returned.\n //\n // - similarly, if the range is 1xH (vertical array), the formula must reside within\n // the vertical bounds of the range and it gets the corresponding cell; otherwise,\n // #VALUE!.\n if (ref.height() == 1 && f.col >= ref.topLeft.col && f.col <= ref.bottomRight.col) {\n return this.getRefData(new CellRef(ref.topLeft.row, f.col).setSheet(ref.sheet));\n }\n if (ref.width() == 1 && f.row >= ref.topLeft.row && f.row <= ref.bottomRight.row) {\n return this.getRefData(new CellRef(f.row, ref.topLeft.col).setSheet(ref.sheet));\n }\n return new CalcError(\"VALUE\");\n } else {\n return this.asMatrix(ref);\n }\n }\n\n asMatrix(range) {\n if (range instanceof Matrix) {\n return range;\n }\n let self = this;\n if (range instanceof RangeRef) {\n let tl = range.topLeft;\n let top = tl.row, left = tl.col;\n let cells = self.getRefCells(range);\n let m = new Matrix(self);\n if (isFinite(range.width())) {\n m.width = range.width();\n }\n if (isFinite(range.height())) {\n m.height = range.height();\n }\n if (!isFinite(top)) {\n top = 0;\n }\n if (!isFinite(left)) {\n left = 0;\n }\n cells.forEach(function(cell) {\n m.set(cell.row - top,\n cell.col - left,\n cell.value);\n });\n return m;\n }\n if (Array.isArray(range) && range.length > 0) {\n let m = new Matrix(self), row = 0;\n range.forEach(function(line) {\n let col = 0;\n let h = 1;\n line.forEach(function(el) {\n let isRange = el instanceof RangeRef;\n if (el instanceof Ref && !isRange) {\n el = self.getRefData(el);\n }\n if (isRange || Array.isArray(el)) {\n el = self.asMatrix(el);\n }\n if (el instanceof Matrix) {\n el.each(function(el, r, c) {\n m.set(row + r, col + c, el);\n });\n h = Math.max(h, el.height);\n col += el.width;\n } else {\n if (typeof el === \"string\" && el.length && !isNaN(el)) {\n el = Number(el);\n }\n\n m.set(row, col++, el);\n }\n });\n row += h;\n });\n return m;\n }\n }\n\n getRefCells(refs, hiddenInfo, wantNulls) {\n var f = this.formula;\n return this.ss.getRefCells(refs, hiddenInfo, f.sheet, f.row, f.col, wantNulls);\n }\n\n getRefData(ref, wantNulls) {\n var f = this.formula;\n return this.ss.getData(ref, f.sheet, f.row, f.col, wantNulls);\n }\n\n workbook() {\n return this.ss.workbook;\n }\n}\n\nfunction argmax(i, end, f) {\n var max = f(i), pos = i;\n while (++i < end) {\n var v = f(i);\n if (v > max) {\n max = v;\n pos = i;\n }\n }\n return pos;\n}\n\nclass Matrix {\n constructor(context) {\n this.context = context;\n this.height = 0;\n this.width = 0;\n this.data = [];\n }\n clone() {\n var m = new Matrix(this.context);\n m.height = this.height;\n m.width = this.width;\n m.data = this.data.map(function(row) { return row.slice(); });\n return m;\n }\n get(row, col) {\n var line = this.data[row];\n var val = line ? line[col] : null;\n return val instanceof Ref ? this.context.getRefData(val) : val;\n }\n getNA(row, col) {\n if (this.height == 1) {\n row = 0;\n }\n if (this.width == 1) {\n col = 0;\n }\n if (row < this.height && col < this.width) {\n return this.get(row, col);\n }\n return new CalcError(\"N/A\");\n }\n set(row, col, data) {\n var line = this.data[row];\n if (line == null) {\n line = this.data[row] = [];\n }\n line[col] = data;\n if (row >= this.height) {\n this.height = row + 1;\n }\n if (col >= this.width) {\n this.width = col + 1;\n }\n }\n each(f, includeEmpty) {\n for (var row = 0; row < this.height; ++row) {\n for (var col = 0; col < this.width; ++col) {\n var val = this.get(row, col);\n if (includeEmpty || val != null) {\n val = f.call(this.context, val, row, col);\n if (val !== undefined) {\n return val;\n }\n }\n }\n }\n }\n map(f, includeEmpty) {\n var m = new Matrix(this.context);\n this.each(function(el, row, col) {\n // here `this` is actually the context\n m.set(row, col, f.call(this, el, row, col));\n }, includeEmpty);\n return m;\n }\n eachRow(f) {\n for (var row = 0; row < this.height; ++row) {\n var val = f.call(this.context, row);\n if (val !== undefined) {\n return val;\n }\n }\n }\n eachCol(f) {\n for (var col = 0; col < this.width; ++col) {\n var val = f.call(this.context, col);\n if (val !== undefined) {\n return val;\n }\n }\n }\n mapRow(f) {\n var m = new Matrix(this.context);\n this.eachRow(function(row) {\n m.set(row, 0, f.call(this.context, row));\n });\n return m;\n }\n mapCol(f) {\n var m = new Matrix(this.context);\n this.eachCol(function(col) {\n m.set(0, col, f.call(this.context, col));\n });\n return m;\n }\n toString() {\n return JSON.stringify(this.data);\n }\n transpose() {\n var m = new Matrix(this.context);\n this.each(function(el, row, col) {\n m.set(col, row, el);\n });\n return m;\n }\n unit(n) {\n this.width = this.height = n;\n var a = this.data = new Array(n);\n for (var i = n; --i >= 0;) {\n var row = a[i] = new Array(n);\n for (var j = n; --j >= 0;) {\n row[j] = i == j ? 1 : 0;\n }\n }\n return this;\n }\n multiply(b) {\n var a = this, m = new Matrix(a.context);\n for (var row = 0; row < a.height; ++row) {\n for (var col = 0; col < b.width; ++col) {\n var s = 0;\n for (var i = 0; i < a.width; ++i) {\n var va = a.get(row, i);\n var vb = b.get(i, col);\n if (typeof va != \"number\" || typeof vb != \"number\") {\n throw new CalcError(\"VALUE\");\n }\n s += va * vb;\n }\n m.set(row, col, s);\n }\n }\n return m;\n }\n adds(b, s) {\n var a = this, m = new Matrix(a.context);\n var sign = s ? -1 : 1;\n for (var row = 0; row < a.height; ++row) {\n for (var col = 0; col < a.width; ++col) {\n var x = a.get(row, col),\n y = b.get(row, col);\n m.set(row, col, x + sign * y);\n }\n }\n return m;\n }\n determinant() {\n var a = this.clone().data;\n var n = a.length;\n var d = 1, C, L, i, k;\n for (C = 0; C < n; C++) {\n for (L = C; (L < n) && (!a[L][C]); L++);\n if (L == n) {\n return 0;\n }\n if (L != C) {\n d = -d;\n for (k = C; k < n; k++) {\n var t = a[C][k];\n a[C][k] = a[L][k];\n a[L][k] = t;\n }\n }\n for (i = C + 1; i < n; i++) {\n for (k = C + 1; k < n; k++) {\n a[i][k] -= a[C][k] * a[i][C] / a[C][C];\n }\n }\n d *= a[C][C];\n }\n return d;\n }\n inverse() {\n let n = this.width;\n let m = this.augment(new Matrix(this.context).unit(n));\n let a = m.data;\n let tmp;\n\n // Gaussian elimination\n // https://en.wikipedia.org/wiki/Gaussian_elimination#Finding_the_inverse_of_a_matrix\n\n // 1. Get zeros below main diagonal\n for (let k = 0; k < n; ++k) {\n let imax = argmax(k, n, function(i) { return a[i][k]; });\n if (!a[imax][k]) {\n return null; // singular matrix\n }\n if (k != imax) {\n tmp = a[k];\n a[k] = a[imax];\n a[imax] = tmp;\n }\n for (let i = k + 1; i < n; ++i) {\n for (let j = k + 1; j < 2 * n; ++j) {\n a[i][j] -= a[k][j] * a[i][k] / a[k][k];\n }\n a[i][k] = 0;\n }\n }\n\n // 2. Get 1-s on main diagonal, dividing by pivot\n for (let i = 0; i < n; ++i) {\n for (let f = a[i][i], j = 0; j < 2 * n; ++j) {\n a[i][j] /= f;\n }\n }\n\n // 3. Get zeros above main diagonal. Actually, we only care to compute the right side\n // here (that will be the inverse), so in the inner loop below we go while j >= n,\n // instead of j >= k.\n for (let k = n; --k >= 0;) {\n for (let i = k; --i >= 0;) {\n if (a[i][k]) {\n for (let j = 2 * n; --j >= n;) {\n a[i][j] -= a[k][j] * a[i][k];\n }\n }\n }\n }\n\n return m.slice(0, n, n, n);\n }\n augment(m) {\n var ret = this.clone(), n = ret.width;\n m.each(function(val, row, col) {\n ret.set(row, col + n, val);\n });\n return ret;\n }\n slice(row, col, height, width) {\n var m = new Matrix(this.context);\n for (var i = 0; i < height; ++i) {\n for (var j = 0; j < width; ++j) {\n m.set(i, j, this.get(row + i, col + j));\n }\n }\n return m;\n }\n\n // XXX: debug\n // dump() {\n // this.data.forEach(function(row){\n // window.console.log(row.map(function(val){\n // var str = val.toFixed(3).replace(/\\.?0*$/, function(s){\n // return [ \"\", \" \", \" \", \" \", \" \" ][s.length];\n // });\n // if (val >= 0) { str = \" \" + str; }\n // return str;\n // }).join(\" \"));\n // });\n // }\n}\n\n/* -----[ Formula ]----- */\n\nfunction sameRef(r1, r2) {\n // note: r1.eq(r2) will not do, because it returns true for A1 and A1:A1 (CellRef\n // vs. RangeRef). To properly undo we need to assert that the references are exactly the\n // same (including type).\n if (r1.constructor !== r2.constructor) {\n return false;\n }\n if (r1 instanceof CellRef) {\n return r1.sheet == r2.sheet\n && r1.row == r2.row\n && r1.col == r2.col\n && r1.rel == r2.rel;\n }\n if (r1 instanceof RangeRef) {\n return sameRef(r1.topLeft , r2.topLeft)\n && sameRef(r1.bottomRight , r2.bottomRight)\n && r1.endSheet == r2.endSheet;\n }\n if (r1 instanceof UnionRef) {\n var i = r1.refs.length;\n if (i != r2.refs.length) {\n return false;\n }\n while (--i >= 0) {\n if (!sameRef(r1.refs[i], r2.refs[i])) {\n return false;\n }\n }\n }\n return true;\n}\n\nlet Formula$1 = class Formula {\n constructor(refs, handler, printer, sheet, row, col, arrayFormulaRange) {\n this.refs = refs;\n this.handler = handler;\n this.print = printer;\n this.absrefs = null;\n this.sheet = sheet;\n this.row = row;\n this.col = col;\n this.onReady = [];\n this.pending = false;\n this.arrayFormulaRange = arrayFormulaRange;\n }\n setArrayFormulaRange(ref) {\n this.arrayFormulaRange = ref.clone().setSheet(this.sheet);\n }\n clone(sheet, row, col, forceRefs) {\n var lcsheet = sheet.toLowerCase();\n var refs = this.refs;\n var range = this.arrayFormulaRange;\n if (forceRefs || lcsheet != this.sheet.toLowerCase()) {\n refs = refs.map(function(ref) {\n if (!ref.hasSheet() && (!ref.sheet || ref.sheet.toLowerCase() != lcsheet)) {\n ref = ref.clone().setSheet(sheet);\n }\n return ref;\n });\n if (range) {\n range = range.clone().setSheet(sheet);\n }\n }\n return new Formula(refs, this.handler, this.print, sheet, row, col, range);\n }\n deepClone() {\n var refs = this.refs.map(function(ref) { return ref.clone(); });\n return new Formula(refs, this.handler, this.print, this.sheet, this.row, this.col, this.arrayFormulaRange);\n }\n resolve(val) {\n this.pending = false;\n this.onReady.forEach(function(callback) {\n callback(val);\n });\n }\n exec(ss, callback, parentContext) {\n if (\"value\" in this) {\n if (callback) {\n callback(this.value);\n }\n } else {\n if (callback) {\n this.onReady.push(callback);\n }\n\n var ctx = new Context(this.resolve, this, ss, parentContext);\n var level = 0;\n // if the call chain leads back to this same formula, we have a circular dependency.\n while (parentContext) {\n if (parentContext.formula === this) {\n this.pending = false;\n ctx.resolve(new CalcError(\"CIRCULAR\"));\n return;\n }\n parentContext = parentContext.parent;\n ++level;\n }\n\n // pending is still useful for ASYNC formulas\n if (this.pending) {\n return;\n }\n this.pending = true;\n\n var next = function() {\n // compute and cache the absolute references\n if (!this.absrefs) {\n this.absrefs = this.refs.map(function(ref) {\n return ref.absolute(this.row, this.col);\n }, this);\n }\n\n // finally invoke the handler given to us by the compiler in calc.js\n this.handler.call(ctx);\n }.bind(this);\n\n if (level < 20) {\n next();\n } else {\n setTimeout(next, 0);\n }\n }\n }\n reset() {\n this.onReady = [];\n this.pending = false;\n delete this.value;\n }\n renameSheet(oldSheetName, newSheetName) {\n oldSheetName = oldSheetName.toLowerCase();\n this.absrefs = null;\n if (this.sheet.toLowerCase() == oldSheetName) {\n this.sheet = newSheetName;\n }\n this.refs.forEach(function(ref) {\n ref.renameSheet(oldSheetName, newSheetName);\n });\n }\n adjust(affectedSheet, operation, start, delta) {\n affectedSheet = affectedSheet.toLowerCase();\n var formulaRow = this.row;\n var formulaCol = this.col;\n var formulaSheet = this.sheet.toLowerCase();\n var formulaMoves = false;\n if (formulaSheet == affectedSheet) {\n // move formula if it's after the change point\n if (operation == \"row\" && formulaRow >= start) {\n this.row += delta;\n formulaMoves = true;\n }\n if (operation == \"col\" && formulaCol >= start) {\n this.col += delta;\n formulaMoves = true;\n }\n }\n var newFormulaRow = this.row;\n var newFormulaCol = this.col;\n this.absrefs = null;\n var prevRefs = this.refs;\n var modified = formulaMoves;\n this.refs = prevRefs.map(function(ref) {\n var newRef = adjust(ref);\n if (!modified && !sameRef(newRef, ref)) {\n modified = true;\n }\n return newRef;\n });\n\n var prevRange = this.arrayFormulaRange;\n if (prevRange) {\n this.arrayFormulaRange = adjust(prevRange);\n if (!modified && !sameRef(prevRange, this.arrayFormulaRange)) {\n modified = true;\n }\n }\n\n if (modified) {\n // return a clone of the original formula. needed to undo operations like\n // deleteRow, which can transform a reference into NULL.\n return new Formula(prevRefs, this.handler, this.print, this.sheet, formulaRow, formulaCol, prevRange);\n }\n\n function adjust(ref) {\n if (ref === NULLREF) {\n return ref;\n }\n if (ref.sheet.toLowerCase() != affectedSheet) {\n if (formulaMoves) {\n // a reference to another sheet should still point to the same location\n // after adjustment; thus if row/col was removed before formula, relative\n // references must be adjusted by delta.\n if (operation == \"row\" && formulaRow >= start) {\n ref = ref.relative(delta, 0);\n }\n if (operation == \"col\" && formulaCol >= start) {\n ref = ref.relative(0, delta);\n }\n }\n return ref;\n }\n return ref.adjust(\n formulaRow, formulaCol,\n newFormulaRow, newFormulaCol,\n operation == \"row\",\n start, delta\n );\n }\n }\n toString() {\n return this.print(this.row, this.col);\n }\n};\n\n// spreadsheet functions --------\n\nFUNCS$1[\"if\"] = function(callback, args) {\n var self = this;\n var co = args[0], th = args[1], el = args[2];\n // XXX: I don't like this resolveCells here. We should try to declare IF with\n // defineFunction.\n this.resolveCells([ co ], function() {\n var comatrix = self.asMatrix(co);\n if (comatrix) {\n // XXX: calling both branches in this case, since we'll typically need values from\n // both. We could optimize and call them only when first needed, but oh well.\n th(function(th) {\n el(function(el) {\n var thmatrix = self.asMatrix(th);\n var elmatrix = self.asMatrix(el);\n callback(comatrix.map(function(val, row, col) {\n if (val instanceof CalcError) {\n return val;\n } else if (self.bool(val)) {\n return thmatrix ? thmatrix.get(row, col) : th;\n } else {\n return elmatrix ? elmatrix.get(row, col) : el;\n }\n }));\n });\n });\n } else {\n co = this.force(co);\n if (co instanceof CalcError) {\n callback(co);\n } else if (self.bool(co)) {\n th(callback);\n } else {\n el(callback);\n }\n }\n });\n};\n\nFUNCS$1[\"φ\"] = function(callback) {\n callback((1 + Math.sqrt(5)) / 2);\n};\n\n// Lasciate ogni speranza, voi ch'entrate.\n//\n// XXX: document this function.\nfunction compileArgumentChecks(functionName, args) {\n var arrayArgs = \"function arrayArgs(args) { var xargs = [], width = 0, height = 0, arrays = [], i = 0; \";\n var resolve = \"function resolve(args, callback) { var toResolve = [], i = 0; \";\n var name, forced, main = \"'use strict'; function check(args) { var stack = [], tmp, xargs = [], i = 0, m, err = 'VALUE'; \", haveForced = false;\n var canBeArrayArg = false, hasArrayArgs = false;\n main += args.map(comp).join(\"\");\n main += \"if (i < args.length) return new CalcError('N/A'); \";\n main += \"return xargs; } \";\n arrayArgs += \"return { args: xargs, width: width, height: height, arrays: arrays }; } \";\n\n var f;\n if (haveForced) {\n resolve += \"this.resolveCells(toResolve, callback); } \";\n f = new Function(\"kendo\", \"CalcError\", \"round\", main + resolve + arrayArgs + \" return { resolve: resolve, check: check, arrayArgs: arrayArgs };\");\n } else {\n f = new Function(\"kendo\", \"CalcError\", \"round\", main + \" return { check: check };\");\n }\n f = f(calc.kendo, CalcError, limitPrecision$1);\n if (!hasArrayArgs) {\n delete f.arrayArgs;\n }\n return f;\n\n function comp(x) {\n name = x[0];\n var code = \"{ \";\n if (Array.isArray(name)) {\n arrayArgs += \"while (i < args.length) { \";\n resolve += \"while (i < args.length) { \";\n code += \"xargs.push(tmp = []); stack.push(xargs); xargs = tmp; \";\n code += \"while (i < args.length) { \";\n code += x.map(comp).join(\"\");\n code += \"} \";\n code += \"xargs = stack.pop(); \";\n resolve += \"} \";\n arrayArgs += \"} \";\n } else if (name == \"+\") {\n arrayArgs += \"while (i < args.length) { \";\n resolve += \"while (i < args.length) { \";\n code += \"if (i >= args.length) return new CalcError('N/A'); \";\n code += \"xargs.push(tmp = []); stack.push(xargs); xargs = tmp; \";\n code += \"do { \";\n code += x.slice(1).map(comp).join(\"\");\n code += \"} while (i < args.length); \";\n code += \"xargs = stack.pop(); \";\n resolve += \"} \";\n arrayArgs += \"} \";\n } else if (name == \"?\") {\n // standalone assertion without a new argument\n code += \"if (!(\" + cond(x[1]) + \")) return new CalcError(err); \";\n } else {\n var type = x[1];\n if (Array.isArray(type) && /^#?collect/.test(type[0])) {\n var wantNulls = /!$/.test(type[0]);\n var n = type[2];\n force();\n code += \"try {\"\n + \"var $\" + name + \" = this.cellValues(args.slice(i\";\n if (n) {\n code += \", i + \" + n;\n }\n code += \")\" + (wantNulls ? \",true\" : \"\") + \").reduce(function(ret, $\" + name + \"){ \";\n if (type[0].charAt(0) != \"#\") {\n code += \"if ($\" + name + \" instanceof CalcError) throw $\" + name + \"; \";\n }\n code += \"if (\" + cond(type[1]) + \") ret.push($\" + name + \"); \";\n code += \"return ret; \";\n code += \"}.bind(this), []); \";\n if (n) {\n code += \"i += \" + n + \"; \";\n } else {\n code += \"i = args.length; \";\n }\n code += \"xargs.push($\" + name + \")\"\n + \"} catch(ex) { if (ex instanceof CalcError) return ex; throw ex; } \";\n resolve += \"toResolve.push(args.slice(i)); \";\n } else if (type == \"rest\") {\n code += \"xargs.push(args.slice(i)); i = args.length; \";\n } else {\n if ((canBeArrayArg = /^\\*/.test(name))) {\n hasArrayArgs = true;\n name = name.substr(1);\n }\n code += \"var $\" + name + \" = args[i++]; \";\n var allowError = false;\n if (/!$/.test(type)) {\n type = type.substr(0, type.length - 1);\n allowError = true;\n } else {\n code += \"if ($\" + name + \" instanceof CalcError) return $\" + name + \"; \";\n }\n code += typeCheck(type, allowError) + \"xargs.push($\" + name + \"); \";\n }\n }\n code += \"} \";\n return code;\n }\n\n function force() {\n if (forced) {\n return \"$\" + name + \"\";\n }\n haveForced = true;\n forced = true;\n resolve += \"toResolve.push(args[i++]); \";\n return \"($\" + name + \" = this.force($\" + name + \"))\";\n }\n\n function forceNum(round) {\n return \"(\"\n + (round\n ? (\"(typeof \" + force() + \" == 'number' ? ($\" + name + \" = round($\" + name + \"), true) : false) || \")\n : (\"(typeof \" + force() + \" == 'number') || \"))\n + \"(typeof $\" + name + \" == 'boolean' ? ($\" + name + \" = +$\" + name + \", true) : false) || \"\n + \"(typeof $\" + name + \" == 'string' && !/^(?:=|true|false)/i.test($\" + name + \") ? (\"\n + \"tmp = kendo.spreadsheet.calc.parse(0, 0, 0, $\" + name + \"), \"\n + \"/^date|number|percent$/.test(tmp.type) ? ($\" + name + \" = +tmp.value, true) : false\"\n + \") : false)\"\n + \")\";\n }\n\n function typeCheck(type, allowError) {\n forced = false;\n var ret = \"if (!(\" + cond(type) + \")) { \";\n if (forced && !allowError) {\n ret += \" if ($\" + name + \" instanceof CalcError) return $\" + name + \"; \";\n }\n ret += \"return new CalcError(err); } \";\n if (!forced) {\n resolve += \"i++; \";\n }\n if (canBeArrayArg) {\n arrayArgs += \"var $\" + name + \" = this._arrayArg(args[i]); \"\n + \"if ($\" + name + \") { \"\n + \"xargs.push($\" + name + \"); \"\n + \"width = Math.max(width, $\" + name + \".width); \"\n + \"height = Math.max(height, $\" + name + \".height); \"\n + \"arrays.push(true) } else { \"\n + \"xargs.push(args[i]); \"\n + \"arrays.push(false); } i++; \";\n } else {\n arrayArgs += \"xargs.push(args[i++]); arrays.push(false); \";\n }\n return ret;\n }\n\n function cond(type) {\n if (Array.isArray(type)) {\n if (type[0] == \"or\") {\n return \"(\" + type.slice(1).map(cond).join(\") || (\") + \")\";\n }\n if (type[0] == \"and\") {\n return \"(\" + type.slice(1).map(cond).join(\") && (\") + \")\";\n }\n if (type[0] == \"values\") {\n return \"(\" + type.slice(1).map(function(val) {\n return force() + \" === \" + val;\n }).join(\") || (\") + \")\";\n }\n if (type[0] == \"null\") {\n return \"(\" + cond(\"null\") + \" ? (($\" + name + \" = \" + type[1] + \"), true) : false)\";\n }\n if (type[0] == \"between\" || type[0] == \"[between]\") {\n return \"(\" + force() + \" >= \" + type[1] + \" && \" + \"$\" + name + \" <= \" + type[2] + \" ? true : ((err = 'NUM'), false))\";\n }\n if (type[0] == \"(between)\") {\n return \"(\" + force() + \" > \" + type[1] + \" && \" + \"$\" + name + \" < \" + type[2] + \" ? true : ((err = 'NUM'), false))\";\n }\n if (type[0] == \"(between]\") {\n return \"(\" + force() + \" > \" + type[1] + \" && \" + \"$\" + name + \" <= \" + type[2] + \" ? true : ((err = 'NUM'), false))\";\n }\n if (type[0] == \"[between)\") {\n return \"(\" + force() + \" >= \" + type[1] + \" && \" + \"$\" + name + \" < \" + type[2] + \" ? true : ((err = 'NUM'), false))\";\n }\n if (type[0] == \"assert\") {\n var err = type[2] || \"N/A\";\n return \"((\" + type[1] + \") ? true : (err = \" + JSON.stringify(err) + \", false))\";\n }\n if (type[0] == \"not\") {\n return \"!(\" + cond(type[1]) + \")\";\n }\n throw new Error(\"Unknown array type condition: \" + type[0]);\n }\n if (type == \"number\" || type == \"datetime\") {\n return forceNum(true);\n }\n if (type == \"number!\") {\n return \"(typeof \" + force() + \" == 'number' ? ($\" + name + \" = round($\" + name + \"), true) : false)\";\n }\n if (type == \"integer\" || type == \"date\") {\n return \"(\" + forceNum() + \" && (($\" + name + \" |= 0), true))\";\n }\n if (type == \"divisor\") {\n return \"(\" + forceNum(true) + \" && ($\" + name + \" == 0 ? ((err = 'DIV/0'), false) : true))\";\n }\n if (type == \"number+\") {\n return \"(\" + forceNum(true) + \" && ($\" + name + \" >= 0 ? true : ((err = 'NUM'), false)))\";\n }\n if (type == \"integer+\") {\n return \"(\" + forceNum() + \" && (($\" + name + \" |= 0) >= 0 ? true : ((err = 'NUM'), false)))\";\n }\n if (type == \"number++\") {\n return \"(\" + forceNum(true) + \" && ($\" + name + \" > 0 ? true : ((err = 'NUM'), false)))\";\n }\n if (type == \"integer++\") {\n return \"(\" + forceNum() + \" && (($\" + name + \" |= 0) > 0 ? true : ((err = 'NUM'), false)))\";\n }\n if (type == \"string\") {\n return \"((typeof \" + force() + \" == 'string' || typeof $\" + name + \" == 'boolean' || typeof $\" + name + \" == 'number') ? ($\" + name + \" += '', true) : ($\" + name + \" === undefined ? (($\" + name + \" = ''), true) : false))\";\n }\n if (type == \"boolean\") {\n return \"(typeof \" + force() + \" == 'boolean')\";\n }\n if (type == \"logical\") {\n return \"(typeof \" + force() + \" == 'boolean' || (typeof $\" + name + \" == 'number' ? ($\" + name + \" = !!$\" + name + \", true) : false))\";\n }\n if (type == \"matrix\") {\n force();\n return \"((m = this.asMatrix($\" + name + \")) ? ($\" + name + \" = m) : false)\";\n }\n if (type == \"#matrix\") {\n return \"((m = this.asMatrix($\" + name + \")) ? ($\" + name + \" = m) : false)\";\n }\n if (type == \"ref\") {\n return \"($\" + name + \" instanceof kendo.spreadsheet.Ref)\";\n }\n if (type == \"area\") {\n return \"($\" + name + \" instanceof kendo.spreadsheet.CellRef || $\" + name + \" instanceof kendo.spreadsheet.RangeRef)\";\n }\n if (type == \"cell\") {\n return \"($\" + name + \" instanceof kendo.spreadsheet.CellRef)\";\n }\n if (type == \"null\") {\n return \"(\" + force() + \" == null)\";\n }\n if (type == \"anyvalue\") {\n return \"(\" + force() + \" != null && i <= args.length)\";\n }\n if (type == \"forced\") {\n return \"(\" + force() + \", i <= args.length)\";\n }\n if (type == \"anything\") {\n return \"(i <= args.length)\";\n }\n if (type == \"blank\") {\n return \"(\" + force() + \" == null || $\" + name + \" === '')\";\n }\n throw new Error(\"Can't check for type: \" + type);\n }\n}\n\nfunction limitPrecision$1(num, digits) {\n return num === parseInt(num, 10) ? num : +num.toPrecision(digits || 16);\n}\n\nfunction maybeRoundFloatErrors(num, digits) {\n if (typeof num == \"number\") {\n return limitPrecision$1(num, digits);\n } else {\n return num;\n }\n}\n\nfunction withErrorHandling(obj, f, args) {\n if (args instanceof CalcError) {\n return args;\n }\n try {\n return f.apply(obj, args);\n } catch (ex) {\n if (ex instanceof CalcError) {\n return ex;\n } else {\n throw ex;\n }\n }\n}\n\nfunction makeSyncFunction(handler, resolve, check, arrayArgs) {\n return function(callback, args) {\n function doit() {\n if (arrayArgs) {\n let x = arrayArgs.call(this, args);\n args = x.args;\n if (x.width > 0 && x.height > 0) {\n let result = new Matrix(this);\n for (let row = 0; row < x.height; ++row) {\n for (let col = 0; col < x.width; ++col) {\n let xargs = [];\n for (let i = 0; i < args.length; ++i) {\n if (x.arrays[i]) {\n xargs[i] = args[i].getNA(row, col);\n } else {\n xargs[i] = args[i];\n }\n }\n xargs = check.call(this, xargs);\n result.set(row, col, withErrorHandling(this, handler, xargs));\n }\n }\n return callback(result);\n }\n }\n let xargs = check.call(this, args);\n callback(withErrorHandling(this, handler, xargs));\n }\n if (resolve) {\n resolve.call(this, args, doit);\n } else {\n doit.call(this);\n }\n };\n}\n\nfunction makeAsyncFunction(handler, resolve, check, arrayArgs) {\n return function(callback, args) {\n function doit() {\n if (arrayArgs) {\n let x = arrayArgs.call(this, args);\n args = x.args;\n if (x.width > 0 && x.height > 0) {\n let result = new Matrix(this);\n let count = x.width * x.height;\n let makeCallback = function(row, col) {\n return function(value) {\n result.set(row, col, value);\n --count;\n if (count === 0) {\n return callback(result);\n }\n };\n };\n for (let row = 0; row < x.height && count > 0; ++row) {\n for (let col = 0; col < x.width && count > 0; ++col) {\n let xargs = [];\n for (let i = 0; i < args.length; ++i) {\n if (x.arrays[i]) {\n xargs[i] = args[i].getNA(row, col);\n } else {\n xargs[i] = args[i];\n }\n }\n xargs = check.call(this, xargs);\n if (xargs instanceof CalcError) {\n result.set(row, col, xargs);\n --count;\n if (count === 0) {\n return callback(result);\n }\n } else {\n xargs.unshift(makeCallback(row, col));\n handler.apply(this, xargs);\n }\n }\n }\n return;\n }\n }\n let x = check.call(this, args);\n if (x instanceof CalcError) {\n callback(x);\n } else {\n x.unshift(callback);\n handler.apply(this, x);\n }\n }\n if (resolve) {\n resolve.call(this, args, doit);\n } else {\n doit.call(this);\n }\n };\n}\n\nfunction defineFunction(name, func) {\n name = name.toLowerCase();\n FUNCS$1[name] = func;\n return {\n args: function(args, log) {\n var code = compileArgumentChecks(name, args);\n // XXX: DEBUG\n if (log) {\n if (code.arrayArgs) {window.console.log(code.arrayArgs.toString());}\n if (code.resolve) {window.console.log(code.resolve.toString());}\n if (code.check) {window.console.log(code.check.toString());}\n }\n var f = FUNCS$1[name] = makeSyncFunction(func, code.resolve, code.check, code.arrayArgs);\n f.kendoSpreadsheetArgs = args;\n return this;\n },\n argsAsync: function(args, log) {\n var code = compileArgumentChecks(name, args);\n // XXX: DEBUG\n if (log) {\n if (code.arrayArgs) {window.console.log(code.arrayArgs.toString());}\n if (code.resolve) {window.console.log(code.resolve.toString());}\n if (code.check) {window.console.log(code.check.toString());}\n }\n var f = FUNCS$1[name] = makeAsyncFunction(func, code.resolve, code.check, code.arrayArgs);\n f.kendoSpreadsheetArgs = args;\n return this;\n }\n };\n}\n\nfunction defineBuiltinFunction$1(name, isAsync, x, impl) {\n FUNCS$1[name] = isAsync\n ? makeAsyncFunction(impl, x.resolve, x.check, x.arrayArgs)\n : makeSyncFunction(impl, x.resolve, x.check, x.arrayArgs);\n}\n\n/* -----[ date calculations ]----- */\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\n\nfunction dateToJulianDays(y, m, d) {\n m++;\n return ((1461 * (y + 4800 + ((m - 14) / 12 | 0))) / 4 | 0) +\n ((367 * (m - 2 - 12 * ((m - 14) / 12 | 0))) / 12 | 0) -\n ((3 * (((y + 4900 + ((m - 14) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n d - 32075;\n}\n\nfunction julianDaysToDate(jd) {\n var l, n, j, i, m, d, y;\n l = jd + 68569;\n n = (4 * l) / 146097 | 0;\n l = l - ((146097 * n + 3) / 4 | 0);\n i = (4000 * (l + 1) / 1461001) | 0;\n l = l - ((1461 * i) / 4 | 0) + 31;\n j = (80 * l) / 2447 | 0;\n d = l - ((2447 * j) / 80 | 0);\n l = j / 11 | 0;\n m = j + 2 - (12 * l);\n y = 100 * (n - 49) + i + l;\n m--;\n return {\n year : y,\n month : m,\n date : d,\n day : (jd + 1) % 7,\n ord : ORDINAL_ADD_DAYS[isLeapYear$1(y)][m] + d\n };\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nvar BASE_DATE = dateToJulianDays(1900, 0, -1);\n\nvar DAYS_IN_MONTH = [ 31, 28, 31,\n 30, 31, 30,\n 31, 31, 30,\n 31, 30, 31 ];\n\nvar ORDINAL_ADD_DAYS = [\n [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 ], // non-leap year\n [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 ] // leap year\n];\n\nfunction isLeapYear$1(yr) {\n if (yr % 4) {\n return 0;\n }\n if (yr % 100) {\n return 1;\n }\n if (yr % 400) {\n return 0;\n }\n return 1;\n}\n\nfunction daysInYear$1(yr) {\n return isLeapYear$1(yr) ? 366 : 365;\n}\n\nfunction daysInMonth$1(yr, mo) {\n return (isLeapYear$1(yr) && mo == 1) ? 29 : DAYS_IN_MONTH[mo];\n}\n\nfunction validDate(yr, mo, da) {\n return mo >= 1 && mo <= 12 && da >= 1 && da <= daysInMonth$1(yr, mo - 1);\n}\n\nfunction unpackDate$2(serial) {\n return julianDaysToDate((serial | 0) + BASE_DATE);\n}\n\nfunction packDate$2(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n}\n\nvar MS_IN_MIN = 60 * 1000;\nvar MS_IN_HOUR = 60 * MS_IN_MIN;\nvar MS_IN_DAY = 24 * MS_IN_HOUR;\n\nfunction unpackTime$1(serial) {\n var frac = serial - (serial | 0);\n if (frac < 0) {\n frac++;\n }\n var ms = Math.round(MS_IN_DAY * frac);\n var hours = Math.floor(ms / MS_IN_HOUR);\n ms -= hours * MS_IN_HOUR;\n var minutes = Math.floor(ms / MS_IN_MIN);\n ms -= minutes * MS_IN_MIN;\n var seconds = Math.floor(ms / 1000);\n ms -= seconds * 1000;\n return {\n hours: hours,\n minutes: minutes,\n seconds: seconds,\n milliseconds: ms\n };\n}\n\nfunction serialToDate$2(serial) {\n var d = unpackDate$2(serial), t = unpackTime$1(serial);\n return new Date(d.year, d.month, d.date,\n t.hours, t.minutes, t.seconds, t.milliseconds);\n}\n\nfunction packTime$1(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\n\nfunction dateToSerial$2(date) {\n var time = packTime$1(date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds());\n date = packDate$2(date.getFullYear(),\n date.getMonth(),\n date.getDate());\n if (date < 0) {\n return date - 1 + time;\n } else {\n return date + time;\n }\n}\n\nfunction parseDate(str, format) {\n if (format) {\n format = calc.formatting.makeDateFormat(format);\n }\n const parseExactDate = intl().parseDate;\n return parseExactDate(str, format)\n || parseExactDate(str)\n || parseExactDate(str, [\n \"MMMM dd yyyy\",\n \"MMMM dd yy\",\n \"MMM dd yyyy\",\n \"MMM dd yy\",\n \"dd MMMM yyyy\",\n \"dd MMMM yy\",\n \"dd MMM yyyy\",\n \"dd MMM yy\",\n \"MMMM dd, yyyy\",\n \"MMMM dd, yy\",\n \"MMM dd, yyyy\",\n \"MMM dd, yy\",\n \"MMMM dd\",\n \"MMM dd\",\n \"MMMM yyyy\",\n \"MMM yyyy\",\n \"dd MMMM\",\n \"dd MMM\"\n ]);\n}\n\nfunction defineAlias$1(alias, name) {\n var orig = FUNCS$1[name];\n if (!orig) {\n throw new Error(\"Function \" + name + \" is not yet defined\");\n }\n if (!orig.kendoSpreadsheetAliases) {\n orig.kendoSpreadsheetAliases = [ name ];\n }\n orig.kendoSpreadsheetAliases.push(alias);\n FUNCS$1[alias] = orig;\n}\n\nclass ParseError {\n constructor(message, pos) {\n this.message = message;\n this.pos = pos;\n }\n toString() {\n return this.message;\n }\n}\n\nfunction InputStream(input) {\n let pos = 0;\n return {\n next : next,\n peek : peek,\n eof : eof,\n croak : croak,\n readWhile : readWhile,\n readEscaped : readEscaped,\n lookingAt : lookingAt,\n skip : skip,\n forward : forward,\n pos : location\n };\n function location() {\n return pos;\n }\n function next() {\n let ch = input.charAt(pos++);\n return ch;\n }\n function peek() {\n return input.charAt(pos);\n }\n function eof() {\n return peek() === \"\";\n }\n function croak(msg) {\n throw new ParseError(msg + \" (input: \" + input + \")\", pos);\n }\n function skip(ch) {\n if (typeof ch == \"string\") {\n if (input.substr(pos, ch.length) !== ch) {\n croak(\"Expected \" + ch);\n }\n forward(ch.length);\n } else if (ch instanceof RegExp) {\n let m = ch.exec(input.substr(pos));\n if (m) {\n forward(m[0].length);\n return m;\n }\n } else {\n // assuming RegExp match data\n forward(ch[0].length);\n }\n }\n function forward(n) {\n while (n-- > 0) {\n next();\n }\n }\n function readEscaped(end) {\n let escaped = false, str = \"\";\n while (!eof()) {\n let ch = next();\n if (escaped) {\n str += ch;\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else if (ch === end) {\n break;\n } else {\n str += ch;\n }\n }\n return str;\n }\n function readWhile(predicate) {\n let str = \"\";\n while (!eof() && predicate(peek(), str)) {\n str += next();\n }\n return str;\n }\n function lookingAt(rx) {\n return rx.exec(input.substr(pos));\n }\n}\n\n/* -----[ exports ]----- */\n\ncalc.runtime.CalcError = CalcError;\ncalc.runtime.Formula = Formula$1;\ncalc.runtime.Matrix = Matrix;\ncalc.runtime.packDate = packDate$2;\ncalc.runtime.unpackDate = unpackDate$2;\ncalc.runtime.packTime = packTime$1;\ncalc.runtime.unpackTime = unpackTime$1;\ncalc.runtime.serialToDate = serialToDate$2;\ncalc.runtime.dateToSerial = dateToSerial$2;\ncalc.runtime.daysInMonth = daysInMonth$1;\ncalc.runtime.validDate = validDate;\ncalc.runtime.isLeapYear = isLeapYear$1;\ncalc.runtime.daysInYear = daysInYear$1;\ncalc.runtime.parseDate = parseDate;\ncalc.runtime.limitPrecision = limitPrecision$1;\ncalc.runtime.defineBuiltinFunction = defineBuiltinFunction$1;\ncalc.runtime.defineAlias = defineAlias$1;\ncalc.runtime.InputStream = InputStream;\ncalc.runtime.ParseError = ParseError;\n\n/* eslint-disable indent */\n\nfunction Node() {\n this.node = null;\n}\nNode.prototype = {\n remove: function() {\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n this.attr = {};\n },\n attr: {},\n text: function() {\n return \"\";\n }\n};\nfunction NullNode() {\n}\nNullNode.prototype = {\n nodeName: \"#null\",\n attr: { style: {} },\n children: [],\n remove: function() {\n }\n};\nlet NULL_NODE = new NullNode();\nfunction Element(nodeName, attr, children) {\n this.nodeName = nodeName;\n this.attr = attr || {};\n this.children = children || [];\n}\nElement.prototype = new Node();\nElement.prototype.appendTo = function(parent) {\n let node = typeof(this.nodeName) === \"string\" ? document.createElement(this.nodeName) : this.nodeName;\n let children = this.children;\n for (let index = 0; index < children.length; index++) {\n children[index].render(node, NULL_NODE);\n }\n parent.appendChild(node);\n return node;\n};\nElement.prototype.render = function(parent, cached) {\n let node;\n if (cached.nodeName !== this.nodeName) {\n cached.remove();\n node = this.appendTo(parent);\n } else {\n node = cached.node;\n let index;\n let children = this.children;\n let length = children.length;\n let cachedChildren = cached.children;\n let cachedLength = cachedChildren.length;\n if (Math.abs(cachedLength - length) > 2) {\n this.render({\n appendChild: function(node) {\n parent.replaceChild(node, cached.node);\n }\n }, NULL_NODE);\n return;\n }\n for (index = 0; index < length; index++) {\n children[index].render(node, cachedChildren[index] || NULL_NODE);\n }\n for (index = length; index < cachedLength; index++) {\n cachedChildren[index].remove();\n }\n }\n this.node = node;\n this.syncAttributes(cached.attr);\n this.removeAttributes(cached.attr);\n};\nElement.prototype.syncAttributes = function(cachedAttr) {\n let attr = this.attr;\n for (let name in attr) {\n let value = attr[name];\n let cachedValue = cachedAttr[name];\n if (name === \"style\") {\n this.setStyle(value, cachedValue);\n } else if (value !== cachedValue) {\n this.setAttribute(name, value, cachedValue);\n }\n }\n};\nElement.prototype.setStyle = function(style, cachedValue) {\n let node = this.node;\n let key;\n if (cachedValue) {\n for (key in style) {\n if (style[key] !== cachedValue[key]) {\n node.style[key] = style[key];\n }\n }\n } else {\n for (key in style) {\n node.style[key] = style[key];\n }\n }\n};\nElement.prototype.removeStyle = function(cachedStyle) {\n let style = this.attr.style || {};\n let node = this.node;\n for (let key in cachedStyle) {\n if (style[key] === undefined) {\n node.style[key] = \"\";\n }\n }\n};\nElement.prototype.removeAttributes = function(cachedAttr) {\n let attr = this.attr;\n for (let name in cachedAttr) {\n if (name === \"style\") {\n this.removeStyle(cachedAttr.style);\n } else if (attr[name] === undefined) {\n this.removeAttribute(name);\n }\n }\n};\nElement.prototype.removeAttribute = function(name) {\n let node = this.node;\n if (name === \"style\") {\n node.style.cssText = \"\";\n } else if (name === \"className\") {\n node.className = \"\";\n } else {\n node.removeAttribute(name);\n }\n};\nElement.prototype.setAttribute = function(name, value) {\n let node = this.node;\n if (node[name] !== undefined) {\n node[name] = value;\n } else {\n node.setAttribute(name, value);\n }\n};\nElement.prototype.text = function() {\n let str = \"\";\n for (let i = 0; i < this.children.length; ++i) {\n str += this.children[i].text();\n }\n return str;\n};\nfunction TextNode(nodeValue) {\n this.nodeValue = String(nodeValue);\n}\nTextNode.prototype = new Node();\nTextNode.prototype.nodeName = \"#text\";\nTextNode.prototype.render = function(parent, cached) {\n let node;\n if (cached.nodeName !== this.nodeName) {\n cached.remove();\n node = document.createTextNode(this.nodeValue);\n parent.appendChild(node);\n } else {\n node = cached.node;\n if (this.nodeValue !== cached.nodeValue) {\n if (node.parentNode) {\n // sometimes in IE parentNode is null (reason unknown),\n // and IE throws an error when you try to set a\n // parentless' nodeValue, because why not.\n node.nodeValue = this.nodeValue;\n }\n }\n }\n this.node = node;\n};\nTextNode.prototype.text = function() {\n return this.nodeValue;\n};\nfunction HtmlNode(html) {\n this.html = html;\n}\nHtmlNode.prototype = {\n nodeName: \"#html\",\n attr: {},\n remove: function() {\n for (let index = 0; index < this.nodes.length; index++) {\n let el = this.nodes[index];\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n },\n render: function(parent, cached) {\n if (cached.nodeName !== this.nodeName || cached.html !== this.html) {\n cached.remove();\n let lastChild = parent.lastChild;\n insertHtml(parent, this.html);\n this.nodes = [];\n for (let child = lastChild ? lastChild.nextSibling : parent.firstChild; child; child = child.nextSibling) {\n this.nodes.push(child);\n }\n } else {\n this.nodes = cached.nodes.slice(0);\n }\n }\n};\n\nfunction insertHtml(node, html) {\n const HTML_CONTAINER = document.createElement(\"div\");\n HTML_CONTAINER.innerHTML = html;\n while (HTML_CONTAINER.firstChild) {\n node.appendChild(HTML_CONTAINER.firstChild);\n }\n}\nfunction html(value) {\n return new HtmlNode(value);\n}\nfunction element(nodeName, attrs, children) {\n return new Element(nodeName, attrs, children);\n}\nfunction text$1(value) {\n return new TextNode(value);\n}\nfunction Tree(root) {\n this.root = root;\n this.children = [];\n}\nTree.prototype = {\n html: html,\n element: element,\n text: text$1,\n render: function(children) {\n let cachedChildren = this.children;\n let index;\n let length;\n for (index = 0, length = children.length; index < length; index++) {\n let cached = cachedChildren[index];\n if (!cached) {\n cached = NULL_NODE;\n } else if (!cached.node || !cached.node.parentNode) {\n cached.remove();\n cached = NULL_NODE;\n }\n children[index].render(this.root, cached);\n }\n for (index = length; index < cachedChildren.length; index++) {\n cachedChildren[index].remove();\n }\n this.children = children;\n }\n};\n\nconst dom = {\n html: html,\n text: text$1,\n element: element,\n Tree: Tree,\n Node: Node\n};\n\n//--------------------------------------------------- custom number format.\n\n\nlet RX_COLORS = /^\\[(black|green|white|blue|magenta|yellow|cyan|red)\\]/i;\nlet RX_CONDITION = /^\\[(<=|>=|<>|<|>|=)(-?[0-9.]+)\\]/;\n\n/* eslint-disable complexity */\n\n/* The proper amount of suffering for whoever designed the Excel\n Custom Number Format would be to have him implement the\n formatter himself. */\n\nfunction parse$2(input) {\n input = calc.runtime.InputStream(input);\n let sections = [], haveConditional = false, decimalPart;\n while (!input.eof()) {\n let sec = readSection();\n sections.push(sec);\n if (sec.cond) {\n haveConditional = true;\n }\n }\n // From https://support.office.com/en-us/article/Create-or-delete-a-custom-number-format-78f2a361-936b-4c03-8772-09fab54be7f4:\n //\n // A number format can have up to four sections of code, separated by semicolons. These\n // code sections define the format for positive numbers, negative numbers, zero values,\n // and text, in that order.\n //\n // You do not have to include all code sections in your custom number format. If you\n // specify only two code sections for your custom number format, the first section is\n // used for positive numbers and zeros, and the second section is used for negative\n // numbers. If you specify only one code section, it is used for all numbers. If you want\n // to skip a code section and include a code section that follows it, you must include\n // the ending semicolon for the section that you skip.\n //\n // However, if sections have conditionals, it is not clear if:\n //\n // - still at most four are allowed\n // - is the last section still for text\n //\n // We will assume that if no sections have conditionals, then there must be at most 4, and\n // they will be interpreted in the order above. If the first section contains a\n // conditional, then there can be any number of them; if the last one is not conditional\n // then it will be interpreted as text format.\n if (!haveConditional) {\n if (sections.length === 1) {\n sections[0].cond = \"num\";\n } else if (sections.length === 2) {\n sections[0].cond = { op: \">=\", value: 0 };\n sections[1].cond = { op: \"<\", value: 0 };\n } else if (sections.length >= 3) {\n sections[0].cond = { op: \">\", value: 0 };\n sections[1].cond = { op: \"<\", value: 0 };\n sections[2].cond = { op: \"=\", value: 0 };\n if (sections.length > 3) {\n sections[3].cond = \"text\";\n sections = sections.slice(0, 4);\n }\n }\n }\n return sections;\n function maybeColor() {\n let m = input.skip(RX_COLORS);\n if (m) {\n return m[1].toLowerCase();\n }\n }\n function maybeCondition() {\n let m = input.skip(RX_CONDITION);\n if (m) {\n let val = parseFloat(m[2]);\n if (!isNaN(val)) {\n return { op: m[1], value: val, custom: true };\n }\n }\n }\n function readFormat() {\n let format = [], tok, prev = null;\n while (!input.eof() && (tok = readNext())) {\n // disambiguate: m/mm might mean month or minutes depending on surrounding context.\n if (tok.type === \"date\") {\n if (prev && /^(el)?time$/.test(prev.type) && prev.part === \"h\"\n && tok.part === \"m\" && tok.format < 3) {\n // m or mm that follows hours should display minutes\n tok.type = \"time\";\n }\n } else if (/^(el)?time$/.test(tok.type) && tok.part === \"s\") {\n if (prev && prev.type === \"date\" && prev.part === \"m\"\n && prev.format < 3) {\n // m or mm followed by seconds should display minutes\n prev.type = \"time\";\n }\n }\n if (!(/^(?:str|space|fill)$/.test(tok.type))) {\n prev = tok;\n }\n format.push(tok);\n }\n return format;\n }\n function maybeFraction(tok) {\n if (tok.type !== \"date\" || (tok.part === \"m\" && tok.format < 3)) {\n let m = input.skip(/^\\.(0+)/);\n if (m) {\n tok.fraction = m[1].length;\n if (tok.type === \"date\") {\n tok.type = \"time\";\n }\n }\n }\n return tok;\n }\n function readNext() {\n let ch, m;\n // numbers\n if ((m = input.skip(/^([#0?]+)(?:,([#0?]+))+/))) {\n // thousands separator. seems convenient to treat\n // this as a single token.\n return { type: \"digit\", sep: true, format: m[1] + m[2], decimal: decimalPart };\n }\n if ((m = input.skip(/^[#0?]+/))) {\n return { type: \"digit\", sep: false, format: m[0], decimal: decimalPart };\n }\n // XXX: handle this one!\n if ((m = input.skip(/^(e)([+-])/i))) {\n return { type: \"exp\", ch: m[1], sign: m[2] };\n }\n // dates\n if ((m = input.skip(/^(d{1,4}|m{1,5}|yyyy|yy|y)/i))) {\n m = m[1].toLowerCase();\n return maybeFraction({ type: \"date\", part: m.charAt(0), format: m.length });\n }\n // time (interpret as a date)\n if ((m = input.skip(/^(hh?|ss?)/i))) { // m and mm are handled above\n m = m[1].toLowerCase();\n return maybeFraction({ type: \"time\", part: m.charAt(0), format: m.length });\n }\n // elapsed time (interpret as interval of days)\n if ((m = input.skip(/^\\[(hh?|mm?|ss?)\\]/i))) {\n m = m[1].toLowerCase();\n return maybeFraction({ type: \"eltime\", part: m.charAt(0), format: m.length });\n }\n if ((m = input.skip(/^(a[.]?m[.]?\\/p[.]?m[.]?|a\\/p)/i))) {\n m = m[1].split(\"/\");\n return { type: \"ampm\", am: m[0], pm: m[1] };\n }\n switch ((ch = input.next())) { // JSHint sadness\n case \";\":\n return null;\n case \"\\\\\":\n // quotes next character\n return { type: \"str\", value: input.next() };\n case '\"':\n return { type: \"str\", value: input.readEscaped(ch) };\n case \"@\":\n return { type: \"text\" };\n case \"_\":\n // whitespace of the width of following character\n return { type: \"space\", value: input.next() };\n case \"*\":\n // fills cell width with the following character\n return { type: \"fill\", value: input.next() };\n case \".\":\n if (input.lookingAt(/^\\s*[#0?]/)) {\n decimalPart = true;\n return { type: \"dec\" };\n }\n return { type: \"str\", value: \".\" };\n case \"%\":\n return { type: \"percent\" };\n case \",\":\n return { type: \"comma\" };\n }\n // whatever we can't make sense of, output literally.\n return { type: \"str\", value: ch };\n }\n function readSection() {\n decimalPart = false;\n let color = maybeColor(), cond = maybeCondition();\n if (!color && cond) {\n color = maybeColor();\n }\n return {\n color: color,\n cond: cond,\n body: readFormat()\n };\n }\n}\n\nfunction print$1(sections) {\n return sections.map(printSection).join(\";\");\n function printSection(sec) {\n let out = \"\";\n if (sec.color) {\n out += \"[\" + sec.color + \"]\";\n }\n if (sec.cond) {\n if (!(sec.cond === \"text\" || sec.cond === \"num\")) {\n out += \"[\" + sec.cond.op + sec.cond.value + \"]\";\n }\n }\n out += sec.body.map(printToken).join(\"\");\n return out;\n }\n function maybeFraction(fmt, tok) {\n if (tok.fraction) {\n fmt += \".\" + padLeft(\"\", tok.fraction, \"0\");\n }\n return fmt;\n }\n function printToken(tok) {\n if (tok.type === \"digit\") {\n if (tok.sep) {\n return tok.format.charAt(0) + \",\" + tok.format.substr(1);\n } else {\n return tok.format;\n }\n } else if (tok.type === \"exp\") {\n return tok.ch + tok.sign;\n } else if (tok.type === \"date\" || tok.type === \"time\") {\n return maybeFraction(padLeft(\"\", tok.format, tok.part), tok);\n } else if (tok.type === \"eltime\") {\n return maybeFraction(\"[\" + padLeft(\"\", tok.format, tok.part) + \"]\", tok);\n } else if (tok.type === \"ampm\") {\n return tok.am + \"/\" + tok.pm;\n } else if (tok.type === \"str\") {\n return JSON.stringify(tok.value);\n } else if (tok.type === \"text\") {\n return \"@\";\n } else if (tok.type === \"space\") {\n return \"_\" + tok.value;\n } else if (tok.type === \"fill\") {\n return \"*\" + tok.value;\n } else if (tok.type === \"dec\") {\n return \".\";\n } else if (tok.type === \"percent\") {\n return \"%\";\n } else if (tok.type === \"comma\") {\n return \",\";\n }\n }\n}\n\nfunction adjustDecimals(sections, x) {\n sections.forEach(function(sec) {\n let diff = x;\n if (sec.cond === \"text\") {\n return;\n }\n let body = sec.body, adjusted = false, i = body.length;\n while (diff !== 0 && --i >= 0) {\n let tok = body[i];\n if (tok.type === \"digit\") {\n if (tok.decimal) {\n adjusted = true;\n if (diff > 0) {\n tok.format += padLeft(\"\", diff, \"0\");\n } else if (diff < 0) {\n let tmp = tok.format.length;\n tok.format = tok.format.substr(0, tmp + diff);\n diff += tmp - tok.format.length;\n }\n if (tok.format.length === 0) {\n body.splice(i, 1);\n while (--i >= 0) {\n tok = body[i];\n if (tok.type === \"digit\" && tok.decimal) {\n ++i;\n break;\n }\n if (tok.type === \"dec\") {\n body.splice(i, 1);\n break;\n }\n }\n }\n }\n if (diff > 0) {\n break;\n }\n }\n }\n if (!adjusted && diff > 0) {\n // no decimal part was found, insert one after the last digit token.\n body.splice(\n i + 1, 0, {\n type : \"dec\"\n }, {\n type : \"digit\",\n sep : false,\n decimal : true,\n format : padLeft(\"\", diff, \"0\")\n }\n );\n }\n });\n}\n\nfunction TokenStream2(parts) {\n let index = 0;\n return {\n next: function() {\n return parts[index++];\n },\n eof: function() {\n return index >= parts.length;\n },\n ahead: function(n, f) {\n if (index + n <= parts.length) {\n let val = f.apply(null, parts.slice(index, index + n));\n if (val) {\n index += n;\n }\n return val;\n }\n },\n restart: function() {\n index = 0;\n }\n };\n}\n\nlet runtime$1 = {\n unpackDate: calc.runtime.unpackDate,\n unpackTime: calc.runtime.unpackTime,\n\n date: function(culture, d, part, length) {\n switch (part) {\n case \"d\":\n switch (length) {\n case 1: return d.date;\n case 2: return padLeft(d.date, 2, \"0\");\n case 3: return culture.calendar.days.format.abbreviated[d.day];\n case 4: return culture.calendar.days.format.wide[d.day];\n }\n break;\n case \"m\":\n switch (length) {\n case 1: return d.month + 1;\n case 2: return padLeft(d.month + 1, 2, \"0\");\n case 3: return culture.calendar.months.format.abbreviated[d.month];\n case 4: return culture.calendar.months.format.wide[d.month];\n case 5: return culture.calendar.months.format.narrow[d.month];\n }\n break;\n case \"y\":\n switch (length) {\n case 1: return d.year;\n case 2: return d.year % 100;\n case 4: return d.year;\n }\n break;\n }\n return \"##\";\n },\n\n time: function(t, part, length, ampm, fraclen) {\n let ret, fraction;\n switch (part) {\n case \"h\":\n ret = padLeft(ampm ? t.hours % 12 || 12 : t.hours, length, \"0\");\n if (fraclen) {\n fraction = (t.minutes + (t.seconds + t.milliseconds / 1000) / 60) / 60;\n }\n break;\n case \"m\":\n ret = padLeft(t.minutes, length, \"0\");\n if (fraclen) {\n fraction = (t.seconds + t.milliseconds / 1000) / 60;\n }\n break;\n case \"s\":\n ret = padLeft(t.seconds, length, \"0\");\n if (fraclen) {\n fraction = t.milliseconds / 1000;\n }\n break;\n }\n if (fraction) {\n ret += runtime$1.toFixed(fraction, fraclen).replace(/^0+/, \"\");\n }\n return ret;\n },\n\n eltime: function(value, part, length, fraclen) {\n let ret, fraction;\n switch (part) {\n case \"h\":\n ret = value * 24;\n break;\n case \"m\":\n ret = value * 24 * 60;\n break;\n case \"s\":\n ret = value * 24 * 60 * 60;\n break;\n }\n if (fraclen) {\n fraction = ret - (ret | 0);\n }\n ret = padLeft(ret | 0, length, \"0\");\n if (fraction) {\n ret += runtime$1.toFixed(fraction, fraclen).replace(/^0+/, \"\");\n }\n return ret;\n },\n\n fill: function(ch) {\n // XXX: how to implement this?\n return ch;\n },\n\n // formatting integer part is slightly different than decimal\n // part, so they're implemented in two functions. For the\n // integer part we need to walk the value and the format\n // backwards (right-to-left).\n\n formatInt: function(culture, value, parts, declen, sep) {\n // toFixed is perfect for rounding our value; if there is\n // no format for decimals, for example, we want the number\n // rounded up.\n value = runtime$1.toFixed(value, declen).replace(/\\..*$/, \"\");\n let lastPart = parts[parts.length - 1];\n\n if (declen > 0 && lastPart[parts.length - 1] != \"0\") {\n // if the rounded number is zero and we have decimal\n // format, consider it a non-significant digit (Excel\n // won't display the leading zero for 0.2 in format #.#).\n // the zero won't e omitted if using 0.0 format\n if (value === \"0\") { value = \"\"; }\n else if (value === \"-0\") { value = \"-\"; }\n }\n\n let shouldInsertMinus = false;\n let iv = value.length - 1;\n let result = [];\n let len = 0, str;\n\n function add(ch, skipMinus) {\n if (sep && len && len % 3 === 0 && /^[0-9]$/.test(ch)) {\n str = culture.numbers.symbols.group + str;\n }\n if (skipMinus && ch === \"-\") {\n shouldInsertMinus = true;\n ch = \"0\";\n }\n str = ch + str;\n len++;\n }\n\n for (let j = parts.length; --j >= 0;) {\n let format = parts[j];\n str = \"\";\n for (let k = format.length; --k >= 0;) {\n let chf = format.charAt(k);\n if (iv < 0) {\n if (chf == \"0\") {\n add(\"0\");\n } else if (chf == \"?\") {\n add(\" \");\n }\n } else {\n if (value == \"0\" && chf == \"?\") {\n add(\" \");\n } else if (chf == \"0\") {\n add(value.charAt(iv), true);\n } else {\n add(value.charAt(iv));\n }\n iv--;\n }\n }\n if (j === 0) {\n while (iv >= 0) {\n add(value.charAt(iv--));\n }\n }\n result.unshift(str);\n }\n\n if (shouldInsertMinus) {\n result[0] = \"-\" + result[0];\n }\n\n return result;\n },\n\n // for decimal part we walk in normal direction and pad on the\n // right if required (for '0' or '?' chars).\n\n formatDec: function(value, parts, declen) {\n value = runtime$1.toFixed(value, declen);\n let pos = value.indexOf(\".\");\n if (pos >= 0) {\n value = value.substr(pos + 1).replace(/0+$/, \"\");\n } else {\n value = \"\";\n }\n\n let iv = 0;\n let result = [];\n\n for (let j = 0; j < parts.length; ++j) {\n let format = parts[j];\n let str = \"\";\n for (let k = 0; k < format.length; ++k) {\n let chf = format.charAt(k);\n if (iv < value.length) {\n str += value.charAt(iv++);\n } else if (chf == \"0\") {\n str += \"0\";\n } else if (chf == \"?\") {\n str += \" \";\n }\n }\n result.push(str);\n }\n\n return result;\n },\n\n // JS's toFixed is broken, it's only OK to use it on integers.\n toFixed: function(value, decimals) {\n return (function toFixed(value, last) {\n if (!isFinite(value)) {\n return \"#NUM!\";\n }\n\n // deal early with the trivial cases\n if (value < 0) { // JS's Math.round is broken with negative numbers\n return \"-\" + toFixed(-value);\n }\n\n if (decimals === 0) { // no decimals\n return String(Math.round(value));\n }\n\n if (value === Math.round(value) && !/e/i.test(String(value))) { // value is integer and not too big\n return value.toFixed(decimals);\n }\n\n // this handles cases like 0.3.toFixed(20) == \"0.29999999999999998890\", or\n // 2.1825.toFixed(20) = \"2.18250000000000010658\".\n // https://github.com/telerik/kendo-ui-core/issues/3520#issuecomment-333768221\n // https://twitter.com/mcbazon/status/1035828655652593665\n let num = digNumber(value);\n let intpart = num.intpart;\n let decpart = num.decpart;\n if (decpart.length <= decimals) {\n while (decpart.length < decimals) {\n decpart += \"0\";\n }\n return intpart + \".\" + decpart;\n }\n\n if (last) {\n // \"we should definitely not get here\" (famous last words). Let's MAKE SURE\n // there's no more recursion.\n return intpart + \".\" + decpart.substr(0, decimals);\n }\n\n // if there are more decimals than wanted, round and try again.\n // it should not recurse more than once.\n let f = Math.pow(10, decimals);\n return toFixed(Math.round(value * f) / f, true);\n\n })(Number(value.toFixed(14))); /* restrict to 14 decimals, because 0.1 + 0.2 ===\n * 0.30000000000000004 */\n }\n\n};\n\nfunction checkCondition(condition, a, b) {\n switch (condition.op) {\n case \"=\":\n return a == b;\n case \"<\":\n return a < b;\n case \">\":\n return a > b;\n case \"<=\":\n return a <= b;\n case \">=\":\n return a >= b;\n }\n throw new Error(`Unknown condition operator: ${JSON.stringify(condition)}`);\n}\n\nfunction compileFormatPart(format) {\n let input = TokenStream2(format.body);\n let hasDate = false;\n let hasTime = false;\n let hasAmpm = false;\n let percentCount = 0;\n let currency = /[\\$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BD\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6]/;\n let scaleCount = 0;\n let separeThousands = false;\n let declen = 0;\n let intFormat = [], decFormat = [];\n let condition = format.cond;\n\n function checkComma(a, b) {\n if ((a.type === \"digit\" && b.type === \"comma\") || (a.type === \"comma\" && a.hidden && b.type === \"comma\")) {\n b.hidden = true;\n scaleCount++;\n }\n }\n while (!input.eof()) {\n input.ahead(2, checkComma);\n let tok = input.next();\n if (tok.type === \"percent\") {\n percentCount++;\n }\n else if (tok.type === \"digit\") {\n if (tok.decimal) {\n declen += tok.format.length;\n decFormat.push(tok.format);\n } else {\n intFormat.push(tok.format);\n if (tok.sep) {\n separeThousands = true;\n }\n }\n }\n else if (tok.type === \"time\") {\n hasTime = true;\n }\n else if (tok.type === \"date\") {\n hasDate = true;\n }\n else if (tok.type === \"ampm\") {\n hasAmpm = hasTime = true;\n }\n }\n\n return function interpret(result, value, culture) {\n let intPart, decPart, isNegative, date, time;\n if (condition === \"text\") {\n if (!(typeof value == \"string\" || value instanceof CalcError)) {\n return false;\n }\n }\n else if (condition === \"num\") {\n if (typeof value != \"number\") {\n return false;\n }\n }\n else if (condition) {\n if (typeof value != \"number\") {\n return false;\n }\n if (!checkCondition(condition, value, condition.value)) {\n return false;\n }\n if (!condition.custom) {\n value = Math.abs(value);\n }\n }\n if (percentCount > 0 || scaleCount > 0 || intFormat.length || decFormat.length || hasDate || hasTime) {\n if (typeof value != \"number\") {\n return false;\n }\n }\n if (format.color) {\n result.color = format.color;\n }\n if (percentCount > 0) {\n value *= Math.pow(100, percentCount);\n }\n if (scaleCount > 0) {\n value /= Math.pow(1000, scaleCount);\n }\n if (intFormat.length) {\n intPart = runtime$1.formatInt(culture, value, intFormat, declen, separeThousands);\n isNegative = parseInt(intPart[0]) < 0;\n }\n if (decFormat.length) {\n decPart = runtime$1.formatDec(value, decFormat, declen);\n }\n if (intFormat.length || decFormat.length) {\n result.type = \"number\";\n }\n if (hasDate) {\n date = runtime$1.unpackDate(value);\n }\n if (hasTime) {\n time = runtime$1.unpackTime(value);\n }\n if (hasDate || hasTime) {\n result.type = \"date\";\n }\n let matchedCurrency = false, output = \"\";\n input.restart();\n while (!input.eof()) {\n let tok = input.next();\n if (tok.type === \"dec\") {\n output += culture.numbers.symbols.decimal;\n }\n else if (tok.type === \"comma\" && !tok.hidden) {\n output += ',';\n }\n else if (tok.type === \"percent\") {\n result.type = \"percent\";\n output += culture.numbers.symbols.percentSign;\n }\n else if (tok.type === \"str\") {\n if (currency.test(tok.value)) {\n result.type = \"currency\";\n if (isNegative) {\n output += \"-\";\n matchedCurrency = true;\n }\n }\n output += tok.value;\n }\n else if (tok.type === \"text\") {\n result.type = \"text\";\n output += value; // XXX: sure not `tok.value`?\n }\n else if (tok.type === \"space\") {\n if (output) {\n result.body.push(output);\n }\n output = \"\";\n result.body.push(tok);\n }\n else if (tok.type === \"fill\") {\n output += runtime$1.fill(tok.value);\n }\n else if (tok.type === \"digit\") {\n if (isNegative && intPart[0] && matchedCurrency) {\n intPart[0] = intPart[0].replace(\"-\", \"\");\n }\n output += tok.decimal ? decPart.shift() : intPart.shift();\n }\n else if (tok.type === \"date\") {\n output += runtime$1.date(culture, date, tok.part, tok.format);\n }\n else if (tok.type === \"time\") {\n output += runtime$1.time(time, tok.part, tok.format, hasAmpm, tok.fraction);\n }\n else if (tok.type === \"eltime\") {\n output += runtime$1.eltime(value, tok.part, tok.format, tok.fraction);\n }\n else if (tok.type === \"ampm\") {\n // XXX: should use culture? As per the \"spec\", Excel\n // displays whatever the token was (AM/PM, a/p etc.)\n output += time.hours < 12 ? tok.am : tok.pm;\n }\n }\n if (output) {\n result.body.push(output);\n }\n return true;\n };\n}\n\nlet TEXT = compileFormatPart({ cond: \"text\", body: [ { type: \"text\" } ] });\n\nlet compile = memoize(function(format) {\n let tree = parse$2(format);\n let parts = tree.map(compileFormatPart);\n parts.push(TEXT);\n return function(value, localCulture = culture()) {\n let result = { body: [] };\n for (let i = 0; i < parts.length; ++i) {\n if (parts[i](result, value, localCulture)) {\n break;\n }\n }\n return result;\n };\n});\n\n// Attempts to produce a format compatible with kendo.parseDate from our Excel format. Needed\n// in runtime.parseDate (passing Excel format to kendo.parseDate will mess up the month or\n// minutes). https://github.com/telerik/kendo-ui-core/issues/3797\nlet makeDateFormat = memoize(function(format) {\n let tree = parse$2(format);\n let section, found = false, hasAmpm = false;\n // locate a section that contains date/time formatting. only the first will be converted.\n for (let i = 0; i < tree.length; ++i) {\n section = tree[i];\n for (let j = 0; j < section.body.length; ++j) {\n if (/^(?:date|time|ampm)$/.test(section.body[j].type)) {\n found = true;\n if (section.body[j].type === \"ampm\") {\n hasAmpm = true;\n }\n }\n }\n if (found) {\n break;\n }\n }\n if (!found) {\n return null;\n }\n return section.body.map(printToken).join(\"\");\n // a little copy/paste goes a long way\n function maybeFraction(fmt, tok) {\n if (tok.fraction) {\n fmt += padLeft(\"\", Math.max(tok.fraction, 3), \"f\");\n }\n return fmt;\n }\n function printToken(tok) {\n if (tok.type === \"digit\") {\n if (tok.sep) {\n return tok.format.charAt(0) + \",\" + tok.format.substr(1);\n } else {\n return tok.format;\n }\n }\n else if (tok.type === \"exp\") {\n return tok.ch + tok.sign;\n }\n else if (tok.type === \"date\" || tok.type === \"time\") {\n let part = tok.part;\n if (tok.type === \"date\" && /^m/.test(part)) {\n part = \"M\"; // month, not minutes\n }\n else if (tok.type === \"time\" && /^h/.test(part)) {\n if (!hasAmpm) {\n // 24-hours clock is H or HH\n part = part.toUpperCase();\n }\n }\n return maybeFraction(padLeft(\"\", tok.format, part), tok);\n }\n else if (tok.type === \"ampm\") {\n return \"tt\";\n }\n else if (tok.type === \"str\") {\n // XXX: this is a bit wrong. it doesn't look like kendo.toString / kendo.parseDate\n // support arbitrary text (in Excel formats that's quoted), for example:\n // kendo.toString(new Date(), \"here's the day dude: dd\")\n // → \"3ere'8 t3e 19ay 19u19e: 19\" (it's 19th June, 3 o'clock, probably 8 seconds)\n return tok.value;\n }\n else if (tok.type === \"space\") {\n return \" \";\n }\n else if (tok.type === \"dec\") {\n return \".\";\n }\n else if (tok.type === \"percent\") {\n return \"%\";\n }\n else if (tok.type === \"comma\") {\n return \",\";\n }\n else {\n return \"\";\n }\n }\n});\n\nfunction padLeft(val, width, ch) {\n val += \"\";\n while (val.length < width) {\n val = ch + val;\n }\n return val;\n}\n\nfunction padRight(val, width, ch) {\n val += \"\";\n while (val.length < width) {\n val += ch;\n }\n return val;\n}\n\n// given a number, return { intpart, decpart } as strings. the main difficulty here is that JS\n// will stringify really large values in scientific notation (e.g. 1.23e+30, which is actually\n// the integer 1230000000000000000000000000000).\nfunction digNumber(num) {\n let str = String(num).toLowerCase();\n let intpart, decpart, m;\n let pos = str.indexOf(\".\");\n if (pos < 0) {\n pos = str.indexOf(\"e\");\n if (pos < 0) {\n intpart = str;\n decpart = \"\";\n } else {\n intpart = str.substr(0, pos);\n decpart = str.substr(pos);\n }\n } else {\n intpart = str.substr(0, pos);\n decpart = str.substr(pos + 1);\n }\n if ((m = /(\\d*)e([-+]?\\d+)/.exec(decpart))) {\n let exp = parseInt(m[2], 10);\n if (exp >= 0) {\n decpart = padRight(m[1], exp, \"0\");\n intpart += decpart.substr(0, exp);\n decpart = decpart.substr(exp);\n } else {\n intpart = padLeft(intpart, -exp, \"0\");\n decpart = intpart.substr(exp) + m[1];\n intpart = intpart.substr(0, intpart.length + exp);\n }\n }\n return { intpart: intpart || \"0\", decpart: decpart };\n}\n\n/* -----[ exports ]----- */\nfunction text(f) {\n let a = f.body;\n let text = \"\";\n for (let i = 0; i < a.length; ++i) {\n let el = a[i];\n if (typeof el == \"string\") {\n text += el;\n } else if (el.type === \"space\") {\n text += \" \";\n }\n }\n return text;\n}\n\nconst formatting = {\n compile : compile,\n parse: parse$2,\n format: function(value, format, culture) {\n let f = compile(format)(value, culture);\n let span = dom.element(\"span\");\n span.__dataType = f.type;\n let a = f.body;\n if (f.color) {\n span.attr.style = { color: f.color };\n }\n for (let i = 0; i < a.length; ++i) {\n let el = a[i];\n if (typeof el == \"string\") {\n span.children.push(dom.text(el));\n } else if (el.type === \"space\") {\n span.children.push(dom.element(\"span\", {\n style: { visibility: \"hidden\" }\n }, [ dom.text(el.value) ]));\n }\n }\n return span;\n },\n text: function(value, format, culture) {\n let f = compile(format)(value, culture);\n return text(f);\n },\n textAndColor: function(value, format, culture) {\n let f = compile(format)(value, culture);\n return { text: text(f), color: f.color, type: f.type };\n },\n type: function(value, format, culture) {\n return compile(format)(value, culture).type;\n },\n adjustDecimals: function(format, diff) {\n let ast = parse$2(format);\n adjustDecimals(ast, diff);\n return print$1(ast);\n },\n makeDateFormat: makeDateFormat\n};\n\n/* eslint-disable no-nested-ternary */\n/* eslint-disable space-infix-ops */\n/* eslint-disable indent */\n/* eslint-disable no-empty */\n/* eslint-disable no-loop-func */\n/* eslint-disable consistent-return */\n/* eslint-disable block-scoped-var */\n/* eslint-disable no-redeclare */\n/* eslint-disable no-var */\n/* eslint-disable eqeqeq */\n/* eslint-disable complexity */\n/* eslint-disable max-params */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable key-spacing */\n/* eslint-disable default-case */\n/* eslint-disable camelcase */\n/* eslint-disable brace-style */\n/* eslint-disable no-else-return */\n/* eslint-disable no-constant-condition */\n/* eslint-disable no-param-reassign */\n/* eslint-disable space-before-blocks */\n/* eslint-disable no-unused-labels */\n\n\nconst kendo = createKendoObj(calc, CalcError, Ref, CellRef, RangeRef);\ncalc.kendo = kendo; // XXX\ncalc.formatting = formatting;\n\n// --------------------------------------------calc.js\n\n// Excel formula parser and compiler to JS.\n// some code adapted from http://lisperator.net/pltut/\n\n// these two will hold the same operators, except that when the comma is used as decimal\n// separator, the union operator must be the semicolon (;) instead of comma.\nlet OPERATORS_STANDARD = Object.create(null);\nlet OPERATORS_COMMA = Object.create(null);\n\n(function(ops){\n ops.forEach(function(cls, i){\n cls.forEach(function(op){\n OPERATORS_STANDARD[op] = ops.length - i;\n OPERATORS_COMMA[op === \",\" ? \";\" : op] = ops.length - i;\n });\n });\n})([\n [ \":\" ],\n [ \" \" ],\n [ \",\" ],\n [ \"%\" ],\n [ \"^\" ],\n [ \"*\", \"/\" ],\n [ \"+\", \"-\" ],\n [ \"&\" ],\n [ \"=\", \"<\", \">\", \"<=\", \">=\", \"<>\" ]\n]);\n\nlet OPERATORS = OPERATORS_STANDARD;\n\nlet SEPARATORS = {\n DEC: \".\",\n ARG: \",\",\n COL: \",\"\n};\n\nfunction setDecimalSeparator(sep) {\n SEPARATORS.DEC = sep;\n SEPARATORS.ARG = sep === \",\" ? \";\" : \",\";\n SEPARATORS.COL = sep === \",\" ? \"\\\\\" : \",\";\n OPERATORS = sep === \",\" ? OPERATORS_COMMA : OPERATORS_STANDARD;\n}\n\ncalc.withDecimalSeparator = function(sep, f) {\n if (SEPARATORS.DEC === sep) {\n return f();\n }\n let save = SEPARATORS.DEC;\n setDecimalSeparator(sep);\n try {\n return f();\n } finally {\n setDecimalSeparator(save);\n }\n};\n\ncalc._separators = SEPARATORS;\n\nlet TRUE = { type: \"bool\", value: true };\nlet FALSE = { type: \"bool\", value: false };\n\nfunction getcol(str) {\n str = str.toUpperCase();\n let col = 0;\n for (let i = 0; i < str.length; ++i) {\n col = col * 26 + str.charCodeAt(i) - 64;\n }\n return col - 1;\n}\n\nfunction getrow(str) {\n return parseInt(str, 10) - 1;\n}\n\nfunction parseReference(name, noThrow) {\n if (name.toLowerCase() === \"#sheet\") {\n return SHEETREF;\n }\n OUT: {\n // this is redundant, but let's keep it fast for the most\n // common case — A1. If this fails, we'll try to employ the\n // whole tokenizer.\n let m;\n if ((m = /^(\\$)?([a-z]+)(\\$)?(\\d+)$/i.exec(name))) {\n let row = getrow(m[4]), col = getcol(m[2]);\n if (row < 0x100000 && col < 0x4000) {\n return new CellRef(getrow(m[4]), getcol(m[2]));\n }\n // no NameRef-s from this function\n break OUT;\n }\n let stream = TokenStream(name, {});\n let a = [];\n while (true) {\n let ref = stream.next();\n if (ref instanceof CellRef) {\n // this function always makes absolute references\n ref.rel = 0;\n } else if (ref instanceof RangeRef) {\n ref.topLeft.rel = 0;\n ref.bottomRight.rel = 0;\n } else {\n break OUT;\n }\n a.push(ref);\n if (stream.eof()) {\n break;\n }\n if (!stream.is(\"op\", SEPARATORS.ARG)) {\n break OUT;\n }\n stream.next();\n }\n return a.length === 1 ? a[0] : new UnionRef(a);\n }\n if (!noThrow) {\n throw new Error(\"Cannot parse reference: \" + name);\n }\n}\n\nfunction parseFormula(sheet, row, col, input) {\n let refs = [];\n input = TokenStream(input, { row: row, col: col });\n let is = input.is;\n\n return {\n type: \"exp\",\n ast: parseExpression(true),\n refs: refs,\n sheet: sheet,\n row: row,\n col: col\n };\n\n function addReference(ref) {\n ref.index = refs.length;\n refs.push(ref);\n return ref;\n }\n\n function skip(type, value, allowEOF) {\n if (is(type, value)) {\n return input.next();\n } else {\n let tok = input.peek();\n if (tok) {\n input.croak(\"Expected \" + type + \" «\" + value + \"» but found \" + tok.type + \" «\" + tok.value + \"»\");\n } else if (!allowEOF) {\n input.croak(\"Expected \" + type + \" «\" + value + \"»\");\n }\n }\n }\n\n function parseExpression(commas) {\n return maybeBinary(maybeIntersect(parseAtom()), 0, commas);\n }\n\n function parseSymbol(tok) {\n if (tok.upper === \"TRUE\" || tok.upper === \"FALSE\") {\n return tok.upper === \"TRUE\" ? TRUE : FALSE;\n }\n return addReference(new NameRef(tok.value));\n }\n\n function parseFuncall() {\n let fname = input.next();\n fname = fname.value;\n skip(\"punc\", \"(\");\n let args = [];\n while (1) {\n if (is(\"punc\", \")\")) {\n break;\n }\n if (is(\"op\", SEPARATORS.ARG)) {\n args.push({ type: \"null\" });\n input.next();\n continue;\n }\n args.push(parseExpression(false));\n if (input.eof() || is(\"punc\", \")\")) {\n break;\n }\n skip(\"op\", SEPARATORS.ARG);\n }\n skip(\"punc\", \")\", true);\n return {\n type: \"func\",\n func: fname,\n args: args\n };\n }\n\n function fixReference(ref) {\n if (!ref.hasSheet()) {\n ref.setSheet(sheet);\n }\n return addReference(ref);\n }\n\n function parseAtom() {\n let exp;\n if (is(\"ref\")) {\n exp = fixReference(input.next());\n }\n else if (is(\"func\")) {\n exp = parseFuncall();\n }\n else if (is(\"punc\", \"(\")) {\n input.next();\n exp = parseExpression(true);\n skip(\"punc\", \")\", true);\n }\n else if (is(\"punc\", \"{\")) {\n input.next();\n exp = parseArray();\n skip(\"punc\", \"}\", true);\n }\n else if (is(\"num\") || is(\"str\") || is(\"error\")) {\n exp = input.next();\n }\n else if (is(\"sym\")) {\n exp = parseSymbol(input.next());\n }\n else if (is(\"op\", \"+\") || is(\"op\", \"-\")) {\n exp = {\n type: \"prefix\",\n op: input.next().value,\n exp: parseAtom()\n };\n }\n else if (!input.peek()) {\n input.croak(\"Incomplete expression\");\n }\n else if (is(\"punc\", \"[\")) {\n input.croak(\"External reference not supported\");\n }\n else {\n input.croak(\"Parse error\");\n }\n return maybePercent(exp);\n }\n\n function parseArray() {\n let row = [], value = [ row ], first = true;\n while (!input.eof() && !is(\"punc\", \"}\")) {\n if (first) {\n first = false;\n } else if (is(null, \";\")) {\n value.push(row = []);\n input.next();\n } else {\n skip(null, SEPARATORS.COL);\n }\n row.push(parseExpression(false));\n }\n return {\n type: \"matrix\",\n value: value\n };\n }\n\n function maybeIntersect(exp) {\n if (is(\"punc\", \"(\") || is(\"ref\") || is(\"num\") || is(\"func\")) {\n return {\n type: \"binary\",\n op: \" \",\n left: exp,\n right: parseExpression(false)\n };\n } else {\n return exp;\n }\n }\n\n function maybePercent(exp) {\n if (is(\"op\", \"%\")) {\n input.next();\n return maybePercent({\n type: \"postfix\",\n op: \"%\",\n exp: exp\n });\n } else {\n return exp;\n }\n }\n\n function maybeBinary(left, my_prec, commas) {\n let tok = is(\"op\");\n if (tok && (commas || tok.value !== SEPARATORS.ARG)) {\n let his_prec = OPERATORS[tok.value];\n if (his_prec > my_prec) {\n input.next();\n let right = maybeBinary(parseAtom(), his_prec, commas);\n return maybeBinary({\n type: \"binary\",\n op: tok.value === \";\" ? \",\" : tok.value, // translate union back to comma\n left: left,\n right: right\n }, my_prec, commas);\n }\n }\n return left;\n }\n}\n\nfunction parseNameDefinition(name, def) {\n let nameRef = parseFormula(null, 0, 0, name);\n if (!(nameRef.ast instanceof NameRef)) {\n throw new calc.runtime.ParseError(\"Invalid name: \" + name);\n }\n nameRef = nameRef.ast;\n\n if (!(def instanceof Ref)) {\n let defAST = parseFormula(nameRef.sheet, 0, 0, def);\n if (defAST.ast instanceof Ref) {\n def = defAST.ast; // single reference\n } else if (/^(?:str|num|bool|error)$/.test(defAST.ast.type)) {\n def = defAST.ast.value; // constant\n } else {\n def = makeFormula(defAST); // formula\n }\n }\n\n return {\n name: nameRef,\n value: def\n };\n}\n\nfunction print(exp, refs, row, col, mod) {\n return print(exp.ast, exp, 0);\n\n function print(node, parent, prec) {\n switch (node.type) {\n case \"num\":\n return calc._separators.DEC == \".\" ? JSON.stringify(node.value)\n : JSON.stringify(node.value).replace(\".\", calc._separators.DEC);\n\n case \"bool\":\n return node.value;\n\n case \"error\":\n return \"#\" + node.value;\n\n case \"str\":\n return JSON.stringify(node.value);\n\n case \"ref\":\n return withParens(() =>\n refs[node.index].print(row, col, mod));\n\n case \"prefix\":\n return withParens(() =>\n node.op + print(node.exp, node, OPERATORS[node.op]));\n\n case \"postfix\":\n return withParens(() =>\n print(node.exp, node, OPERATORS[node.op]) + node.op);\n\n case \"binary\":\n return withParens(() => {\n let left = parenthesize(\n print(node.left, node, OPERATORS[node.op]),\n node.left instanceof NameRef && node.op === \":\"\n );\n let right = parenthesize(\n print(node.right, node, OPERATORS[node.op]),\n node.right instanceof NameRef && node.op === \":\"\n );\n if (/^[,;]/.test(node.op)) {\n return left + calc._separators.ARG + right;\n } else {\n return left + node.op + right;\n }\n });\n\n case \"func\":\n return node.func + \"(\"\n + node.args.map(arg => print(arg, node, 0)).join(calc._separators.ARG + \" \") + \")\";\n\n case \"matrix\":\n return \"{ \" + node.value.map(tr => tr.map(td => print(td, node, 0)).join(calc._separators.COL)).join(\"; \") + \" }\";\n\n case \"null\":\n return \"\";\n }\n\n throw new Error(\"Cannot print node \" + node.type);\n\n function withParens(f) {\n let op = node.op;\n let needParens = (OPERATORS[op] < prec\n || (!prec && op === \",\")\n || (parent.type === \"prefix\" && prec === OPERATORS[op] && parent.op === \"-\")\n || (parent.type === \"binary\" && prec === OPERATORS[op] && node === parent.right));\n return parenthesize(f(), needParens);\n }\n }\n\n function parenthesize(code, cond) {\n return cond ? \"(\" + code + \")\" : code;\n }\n}\n\nfunction makePrinter(exp) {\n return function(row, col, mod) {\n return print(exp, this.refs, row, col, mod);\n };\n}\n\n/// BEGIN interpreter\n\nfunction evRef(ctx, node, k) {\n return node.ref === \"name\"\n ? ctx.fetchName(node, k)\n : k(ctx.formula.absrefs[node.index]);\n}\n\nfunction evFuncIf(ctx, co, th, el, k) {\n return evaluate(ctx, co, co => ctx.func(\"if\", k, [\n co,\n k => evaluate(ctx, th, k),\n k => evaluate(ctx, el, k)\n ]));\n}\n\nfunction evFuncAnd(ctx, args, k) {\n return args.length === 0 ? k(true)\n : args.length === 1 ? evaluate(ctx, args[0], co => k(ctx.bool(co)))\n : evaluate(ctx, args[0], co =>\n ctx.bool(co)\n ? evFuncAnd(ctx, args.slice(1), k)\n : k(false));\n}\n\nfunction evFuncOr(ctx, args, k) {\n return args.length === 0 ? k(false)\n : args.length === 1 ? evaluate(ctx, args[0], co => k(ctx.bool(co)))\n : evaluate(ctx, args[0], co =>\n ctx.bool(co)\n ? k(true)\n : evFuncOr(ctx, args.slice(1), k));\n}\n\nfunction evFunc(ctx, node, k) {\n switch (node.func.toLowerCase()) {\n case \"if\":\n return evFuncIf(ctx, node.args[0], node.args[1] || TRUE, node.args[2] || FALSE, k);\n case \"and\":\n return evFuncAnd(ctx, node.args, k);\n case \"or\":\n return evFuncOr(ctx, node.args, k);\n case \"true\":\n return k(true);\n case \"false\":\n return k(false);\n }\n return evArguments(ctx, node.args, 0, args => ctx.func(node.func, k, args));\n}\n\nfunction evArguments(ctx, args, i, k, ret = []) {\n return i === args.length\n ? k(ret)\n : evaluate(ctx, args[i], val => (\n ret[i] = val,\n evArguments(ctx, args, i + 1, k, ret)\n ));\n}\n\nfunction evBinary(ctx, node, k) {\n return evaluate(ctx, node.left, left =>\n evaluate(ctx, node.right, right =>\n ctx.func(\"binary\" + node.op, k, [ left, right ])));\n}\n\nfunction evUnary(ctx, node, k) {\n return evaluate(ctx, node.exp, exp =>\n ctx.func(\"unary\" + node.op, k, [ exp ]));\n}\n\nfunction evMatrix(ctx, { value }, k) {\n let a = [];\n return (function loop(i){\n return i === value.length ? k(a)\n : evArguments(ctx, value[i], 0, row =>\n (a[i] = row, loop(i + 1)));\n })(0);\n}\n\nfunction evaluate(ctx, node, k) {\n switch (node.type) {\n case \"ref\":\n return evRef(ctx, node, k);\n case \"num\":\n case \"str\":\n case \"null\":\n case \"bool\":\n return k(node.value);\n case \"error\":\n return k(ctx.error(node.value));\n case \"prefix\":\n case \"postfix\":\n return evUnary(ctx, node, k);\n case \"binary\":\n return evBinary(ctx, node, k);\n case \"func\":\n return evFunc(ctx, node, k);\n case \"matrix\":\n return evMatrix(ctx, node, k);\n }\n throw new Error(\"Cannot evaluate \" + node.type);\n}\n\nfunction makeInterpreter({ ast }) {\n return function() {\n // `this` is the Context object (runtime.js), so don't attempt\n // to make this an arrow function.\n return evaluate(this, ast, val => this.resolve(val));\n };\n}\n\n/// END interpreter\n\nlet FORMULA_CACHE = Object.create(null);\n\nfunction makeFormula(exp) {\n let printer = makePrinter(exp);\n let hash = printer.call(exp); // needs .refs\n let formula = FORMULA_CACHE[hash];\n if (formula) {\n // we need to clone because formulas cache the result; even if the formula is the same,\n // its value will depend on its location, hence we need different objects. Still, using\n // this cache is a good idea because we'll reuse the same refs array, handler and\n // printer, instead of allocating new ones (and we skip compiling it).\n return formula.clone(exp.sheet, exp.row, exp.col);\n }\n\n formula = new calc.runtime.Formula(exp.refs, makeInterpreter(exp), printer, exp.sheet, exp.row, exp.col);\n FORMULA_CACHE[hash] = formula.clone(exp.sheet, exp.row, exp.col);\n return formula;\n}\n\nfunction identity$1(x) {\n return x;\n}\n\nfunction TokenStream(input, options) {\n input = RawTokenStream(calc.runtime.InputStream(input), options);\n let ahead = input.ahead;\n let skip = input.skip;\n let token = null;\n let fixCell = options.row != null && options.col != null\n ? function(cell) {\n if (cell.rel & 1) {\n cell.col -= options.col;\n }\n if (cell.rel & 2) {\n cell.row -= options.row;\n }\n return cell;\n }\n : identity$1;\n\n let addPos = options.forEditor\n ? function(thing, startToken, endToken) {\n thing.begin = startToken.begin;\n thing.end = endToken.end;\n return thing;\n }\n : identity$1;\n\n return {\n peek : peek,\n next : next,\n croak : input.croak,\n eof : input.eof,\n is : is\n };\n\n function is(type, value) {\n let tok = peek();\n return tok != null\n && (type == null || tok.type === type)\n && (value == null || tok.value === value)\n ? tok : null;\n }\n\n function peek() {\n if (token == null) {\n token = readNext();\n }\n return token;\n }\n\n function next() {\n if (token != null) {\n let tmp = token;\n token = null;\n return tmp;\n }\n return readNext();\n }\n\n function readNext() {\n let ret;\n let t = input.peek();\n if (t) {\n if (t.type === \"sym\" || t.type === \"rc\" || t.type === \"num\") {\n ret = ahead(8, refRange3D)\n || ahead(6, refCell3D)\n || ahead(6, refSheetRange)\n || ahead(4, refSheetCell)\n || ahead(4, refRange)\n || ahead(2, refCell)\n || ahead(2, funcall);\n }\n if (!ret) {\n ret = input.next();\n }\n }\n return ret;\n }\n\n function toCell(tok, isFirst) {\n if (tok.type === \"rc\") {\n // RC notation is read properly without knowing where\n // we are, so no need to fixCell on this one.\n // However, if only absolute refs were asked for (from\n // i.e. parseReference) I feel it's alright to yell\n // about it here.\n if (tok.rel && !options.forEditor && (options.row == null || options.col == null)) {\n input.croak(\"Cannot read relative cell in RC notation\");\n }\n return new CellRef(tok.row, tok.col, tok.rel);\n }\n if (tok.type === \"num\") {\n if (tok.value <= 1048577) {\n // whole row\n return fixCell(new CellRef(\n getrow(tok.value),\n isFirst ? -Infinity : +Infinity,\n 2\n ));\n } else {\n return null;\n }\n }\n // otherwise it's \"sym\". The OOXML spec (SpreadsheetML\n // 18.2.5) defines the maximum value to be interpreted as\n // a cell reference to be XFD1048576.\n let name = tok.value;\n let m = /^(\\$)?([a-z]+)(\\$)?(\\d+)$/i.exec(name);\n if (m) {\n let row = getrow(m[4]), col = getcol(m[2]);\n if (row <= 1048576 && col <= 16383) {\n return fixCell(new CellRef(\n getrow(m[4]),\n getcol(m[2]),\n (m[1] ? 0 : 1) | (m[3] ? 0 : 2)\n ));\n } else {\n return null;\n }\n }\n let abs = name.charAt(0) === \"$\";\n if (abs) {\n name = name.substr(1);\n }\n if (/^\\d+$/.test(name)) {\n let row = getrow(name);\n if (row <= 1048576) {\n return fixCell(new CellRef(\n getrow(name),\n isFirst ? -Infinity : +Infinity,\n (abs ? 0 : 2)\n ));\n }\n } else {\n let col = getcol(name);\n if (col <= 16383) {\n return fixCell(new CellRef(\n isFirst ? -Infinity : +Infinity,\n getcol(name),\n (abs ? 0 : 1)\n ));\n }\n }\n }\n\n // Sheet1(a) :(b) Sheet2(c) !(d) A1(e) :(f) C3(g) not followed by paren (h)\n function refRange3D(a, b, c, d, e, f, g, h) {\n if (a.type === \"sym\" &&\n b.type === \"op\" && b.value === \":\" &&\n c.type === \"sym\" &&\n d.type === \"punc\" && d.value === \"!\" &&\n (e.type === \"sym\" || e.type === \"rc\" || (e.type === \"num\" && e.value === e.value | 0)) &&\n f.type === \"op\" && f.value === \":\" &&\n (g.type === \"sym\" || g.type === \"rc\" || (g.type === \"num\" && g.value === g.value | 0)) &&\n g.type === e.type &&\n !(h.type === \"punc\" && h.value === \"(\" && !g.space))\n {\n let tl = toCell(e, true), br = toCell(g, false);\n if (tl && br) {\n // skip them except the last one, we only wanted to\n // ensure it's not paren.\n skip(7);\n return addPos(new RangeRef(\n tl.setSheet(a.value, true),\n br.setSheet(c.value, true)\n ).setSheet(a.value, true), a, g);\n }\n }\n }\n\n // Sheet1(a) :(b) Sheet2(c) !(d) A1(e) not followed by paren (f)\n function refCell3D(a, b, c, d, e, f) {\n if (a.type === \"sym\" &&\n b.type === \"op\" && b.value === \":\" &&\n c.type === \"sym\" &&\n d.type === \"punc\" && d.value === \"!\" &&\n (e.type === \"sym\" || e.type === \"rc\" || (e.type === \"num\" && e.value === e.value | 0)) &&\n !(f.type === \"punc\" && f.value === \"(\" && !e.space))\n {\n let tl = toCell(e);\n if (tl) {\n skip(5);\n let br = tl.clone();\n return addPos(new RangeRef(\n tl.setSheet(a.value, true),\n br.setSheet(c.value, true)\n ).setSheet(a.value, true), a, e);\n }\n }\n }\n\n // Sheet1(a) !(b) A1(c) :(d) C3(e) not followed by paren (f)\n function refSheetRange(a, b, c, d, e, f) {\n if (a.type === \"sym\" &&\n b.type === \"punc\" && b.value === \"!\" &&\n (c.type === \"sym\" || c.type === \"rc\" || (c.type === \"num\" && c.value === c.value | 0)) &&\n d.type === \"op\" && d.value === \":\" &&\n (e.type === \"sym\" || e.type === \"rc\" || (e.type === \"num\" && e.value === e.value | 0)) &&\n !(f.type === \"punc\" && f.value === \"(\" && !e.space))\n {\n let tl = toCell(c, true), br = toCell(e, false);\n if (tl && br) {\n skip(5);\n return addPos(new RangeRef(tl, br).setSheet(a.value, true), a, e);\n }\n }\n }\n\n // Sheet1(a) !(b) A1(c) not followed by paren (d)\n function refSheetCell(a, b, c, d) {\n if (a.type === \"sym\" &&\n b.type === \"punc\" && b.value === \"!\" &&\n (c.type === \"sym\" || c.type === \"rc\" || (c.type === \"num\" && c.value === c.value | 0)) &&\n !(d.type === \"punc\" && d.value === \"(\" && !c.space))\n {\n skip(3);\n let x = toCell(c);\n if (!x || !isFinite(x.row)) {\n x = new NameRef(c.value);\n }\n return addPos(x.setSheet(a.value, true), a, c);\n }\n }\n\n // A1(a) :(b) C3(c) not followed by paren (d)\n function refRange(a, b, c, d) {\n if ((a.type === \"sym\" || a.type === \"rc\" || (a.type === \"num\" && a.value === a.value | 0)) &&\n (b.type === \"op\" && b.value === \":\") &&\n (c.type === \"sym\" || c.type === \"rc\" || (c.type === \"num\" && c.value === c.value | 0)) &&\n !(d.type === \"punc\" && d.value === \"(\" && !c.space))\n {\n let tl = toCell(a, true), br = toCell(c, false);\n if (tl && br) {\n skip(3);\n return addPos(new RangeRef(tl, br), a, c);\n }\n }\n }\n\n // A1(a) not followed by paren (b)\n function refCell(a, b) {\n if ((a.type === \"sym\" || a.type === \"rc\") && !(b.type === \"punc\" && b.value === \"(\" && !a.space)) {\n let x = toCell(a);\n if (x && isFinite(x.row) && isFinite(x.col)) {\n skip(1);\n return addPos(x, a, a);\n }\n }\n }\n\n function funcall(a, b) {\n if (a.type === \"sym\" && b.type === \"punc\" && b.value === \"(\" && !a.space) {\n a.type = \"func\";\n skip(1);\n return a; // already has position\n }\n }\n}\n\nfunction isWhitespace(ch) {\n return \" \\t\\r\\n\\xa0\\u200b\".indexOf(ch) >= 0;\n}\n\nlet EOF = { type: \"eof\" };\n\nfunction RawTokenStream(input, options) {\n let tokens = [], index = 0;\n let readWhile = input.readWhile;\n\n return {\n next : next,\n peek : peek,\n eof : eof,\n croak : input.croak,\n ahead : ahead,\n skip : skip\n };\n\n function isDigit(ch) {\n return (/[0-9]/i.test(ch));\n }\n\n function isIdStart(ch) {\n return (/[a-z$_]/i.test(ch) || isUnicodeLetter(ch));\n }\n\n function isId(ch) {\n return isIdStart(ch) || isDigit(ch) || ch === \".\";\n }\n\n function isOpChar(ch) {\n return ch in OPERATORS;\n }\n\n function isPunc(ch) {\n return \"\\\\!;(){}[]\".indexOf(ch) >= 0;\n }\n\n function readNumber() {\n // XXX: TODO: exponential notation\n let has_dot = false;\n let number = readWhile(function(ch){\n if (ch === SEPARATORS.DEC) {\n if (has_dot) {\n return false;\n }\n has_dot = true;\n return true;\n }\n return isDigit(ch);\n });\n if (number === SEPARATORS.DEC) {\n return { type: \"punc\", value: SEPARATORS.DEC };\n } else {\n return { type: \"num\", value: parseFloat(number.replace(SEPARATORS.DEC, \".\")) };\n }\n }\n\n function symbol(id, quote) {\n return {\n type : \"sym\",\n value : id,\n upper : id.toUpperCase(),\n space : isWhitespace(input.peek()),\n quote : quote\n };\n }\n\n function getRC(a, b, c) {\n if (!a && !b && !c) {\n return null;\n }\n if ((!a && !c) || (a && c)) {\n let num = b ? parseInt(b, 10) : 0;\n return a ? num : num - 1;\n }\n }\n\n function readSymbol() {\n let m = input.lookingAt(/^R(\\[)?(-?[0-9]+)?(\\])?C(\\[)?(-?[0-9]+)?(\\])?/i);\n if (m) {\n let row = getRC(m[1], m[2], m[3]);\n let col = getRC(m[4], m[5], m[6]);\n if (row != null && col != null) {\n input.skip(m);\n return {\n type: \"rc\",\n row: row,\n col: col,\n rel: ((m[4] || !(m[4] || m[5] || m[6]) ? 1 : 0) // col\n |\n (m[1] || !(m[1] || m[2] || m[3]) ? 2 : 0) // row\n )\n };\n }\n }\n return symbol(readWhile(isId));\n }\n\n function readString() {\n input.next();\n return { type: \"str\", value: input.readEscaped('\"') };\n }\n\n function readSheetName() {\n input.next();\n return symbol(input.readEscaped(\"'\"), true);\n }\n\n function readOperator() {\n return {\n type : \"op\",\n value : readWhile(function(ch, op){\n return (op + ch) in OPERATORS;\n })\n };\n }\n\n function readPunc() {\n return {\n type : \"punc\",\n value : input.next()\n };\n }\n\n function readNext() {\n if (input.eof()) {\n return null;\n }\n let ch = input.peek(), m;\n if (ch === '\"') {\n return readString();\n }\n if (ch === \"'\") {\n return readSheetName();\n }\n if (isDigit(ch) || ch === SEPARATORS.DEC) {\n return readNumber();\n }\n if (isIdStart(ch)) {\n return readSymbol();\n }\n if (isOpChar(ch)) {\n return readOperator();\n }\n if (isPunc(ch)) {\n return readPunc();\n }\n if ((m = input.lookingAt(/^#([a-z\\/]+)[?!]?/i))) {\n input.skip(m);\n return { type: \"error\", value: m[1] };\n }\n if (!options.forEditor) {\n input.croak(\"Can't handle character with code: \" + ch.charCodeAt(0));\n }\n return { type: \"error\", value: input.next() };\n }\n\n function peek() {\n while (tokens.length <= index) {\n readWhile(isWhitespace);\n let begin = input.pos();\n let tok = readNext();\n if (options.forEditor && tok) {\n tok.begin = begin;\n tok.end = input.pos();\n }\n tokens.push(tok);\n }\n return tokens[index];\n }\n\n function next() {\n let tok = peek();\n if (tok) {\n index++;\n }\n return tok;\n }\n\n function ahead(n, f) {\n let pos = index, a = [];\n while (n-- > 0) {\n a.push(next() || EOF);\n }\n index = pos;\n return f.apply(a, a);\n }\n\n function skip(n) {\n index += n;\n }\n\n function eof() {\n return peek() == null;\n }\n}\n\n//// exports\n\nlet FORMAT_PARSERS = [];\n\nlet registerFormatParser = calc.registerFormatParser = function(p) {\n FORMAT_PARSERS.push(p);\n};\n\ncalc.parse = function(sheet, row, col, input, format) {\n if (input instanceof Date) {\n return { type: \"date\", value: calc.runtime.dateToSerial(input) };\n }\n if (typeof input == \"number\") {\n return { type: \"number\", value: input };\n }\n if (typeof input == \"boolean\") {\n return { type: \"boolean\", value: input };\n }\n input += \"\";\n if (/^'/.test(input)) {\n return {\n type: \"string\",\n value: input.substr(1)\n };\n }\n // trivial (integer) percent values; more complex formats are handled below via\n // registerFormatParser; this case could be dropped completely.\n if (/^-?[0-9]+%$/.test(input)) {\n let str = input.substr(0, input.length - 1);\n let num = parseFloat(str);\n if (!isNaN(num) && num === str) {\n return {\n type: \"percent\",\n value: num / 100\n };\n }\n }\n if (/^=/.test(input)) {\n input = input.substr(1);\n if (/\\S/.test(input)) {\n return parseFormula(sheet, row, col, input);\n } else {\n return {\n type: \"string\",\n value: \"=\" + input\n };\n }\n }\n for (let i = 0; i < FORMAT_PARSERS.length; ++i) {\n let result = FORMAT_PARSERS[i](input, format);\n if (result) {\n return result;\n }\n }\n if (input.toLowerCase() === \"true\") {\n return { type: \"boolean\", value: true };\n }\n if (input.toLowerCase() === \"false\") {\n return { type: \"boolean\", value: false };\n }\n let date = calc.runtime.parseDate(input, format);\n if (date) {\n return { type: \"date\", value: calc.runtime.dateToSerial(date) };\n }\n let num = parseFloat(input);\n if (!isNaN(num) && input.length > 0 && num === input) {\n format = null;\n if (num !== Math.floor(num)) {\n format = \"0.\" + String(num).split(\".\")[1].replace(/\\d/g, \"0\");\n }\n return {\n type: \"number\",\n value: num,\n format: format\n };\n }\n return {\n type: \"string\",\n value: input\n };\n};\n\nfunction tokenize(input, row, col) {\n let tokens = [];\n input = TokenStream(input, { forEditor: true, row: row, col: col });\n while (!input.eof()) {\n tokens.push(next());\n }\n let tok = tokens[0];\n if (tok.type === \"op\" && tok.value === \"=\") {\n tok.type = \"startexp\";\n }\n return tokens;\n\n function next() {\n let tok = input.next();\n if (tok.type === \"sym\") {\n if (tok.upper === \"TRUE\") {\n tok.type = \"bool\";\n tok.value = true;\n } else if (tok.upper === \"FALSE\") {\n tok.type = \"bool\";\n tok.value = false;\n }\n } else if (tok.type === \"ref\") {\n tok = {\n type : \"ref\",\n ref : (row != null && col != null ? tok.absolute(row, col) : tok),\n begin : tok.begin,\n end : tok.end\n };\n }\n return tok;\n }\n}\n\n// The `sqref` attribute in dataValidation (XLSX) will contain a space-separated list of\n// references. This helper is called from excel-reader.js to parse them.\nfunction parseSqref(input, row, col) {\n row = row || 0;\n col = col || 0;\n input = TokenStream(input, { row: row, col: col });\n let refs = [];\n while (!input.eof()) {\n let ref = input.next();\n if (ref.type !== \"ref\") {\n throw new calc.runtime.ParseError(\"Expecting a reference but got: \" + JSON.stringify(ref));\n }\n refs.push(ref.absolute(row, col));\n }\n return refs;\n}\n\ncalc.parseNameDefinition = parseNameDefinition;\ncalc.parseFormula = parseFormula;\ncalc.parseReference = parseReference;\ncalc.compile = makeFormula;\ncalc.parseSqref = parseSqref;\n\ncalc.tokenize = tokenize;\n\n/* -----[ a few special formats ]----- */\n\n// various time formats\nregisterFormatParser(function(input, existingFormat){\n let m, date = 0, format = \"\";\n // have date part?\n if (!existingFormat) {\n existingFormat = culture().calendar.patterns.d;\n }\n if ((m = /^(\\d+)([-/.])(\\d+)\\2(\\d{2}(?:\\d{2})?)(\\s*)/.exec(input))) {\n let mo = parseInt(m[1], 10);\n let sep = m[2];\n let da = parseInt(m[3], 10);\n let yr = parseInt(m[4], 10);\n if (yr < 30) {\n yr += 2000;\n } else if (yr < 100) {\n yr += 1900;\n }\n let monthFirst = existingFormat ? existingFormat.indexOf(\"M\") < existingFormat.indexOf(\"d\") : true;\n if (mo > 12 || !monthFirst) {\n let tmp = mo;\n mo = da;\n da = tmp;\n monthFirst = false;\n }\n if (!calc.runtime.validDate(yr, mo, da)) {\n return null;\n }\n date = calc.runtime.packDate(yr, mo - 1, da);\n if (date < 0) { date--; }\n if (monthFirst) {\n format = [\"mm\", \"dd\", \"yyyy\"].join(sep);\n } else {\n format = [\"dd\", \"mm\", \"yyyy\"].join(sep);\n }\n format += m[5];\n input = input.substr(m[0].length); // skip the date\n }\n // hh:mm\n if ((m = /^(\\d+):(\\d+)$/.exec(input))) {\n let hh = parseInt(m[1], 10);\n let mm = parseInt(m[2], 10);\n return {\n type : \"date\",\n format : format + \"hh:mm\",\n value : date + calc.runtime.packTime(hh, mm, 0, 0)\n };\n }\n // mm:ss.ms\n if ((m = /^(\\d+):(\\d+)(\\.\\d+)$/.exec(input))) {\n let mm = parseInt(m[1], 10);\n let ss = parseInt(m[2], 10);\n let ms = parseFloat(m[3]) * 1000;\n return {\n type : \"date\",\n format : format + \"mm:ss.00\",\n value : date + calc.runtime.packTime(0, mm, ss, ms)\n };\n }\n // hh:mm:ss\n if ((m = /^(\\d+):(\\d+):(\\d+)$/.exec(input))) {\n let hh = parseInt(m[1], 10);\n let mm = parseInt(m[2], 10);\n let ss = parseInt(m[3], 10);\n return {\n type : \"date\",\n format : format + \"hh:mm:ss\",\n value : date + calc.runtime.packTime(hh, mm, ss, 0)\n };\n }\n // hh:mm:ss.ms\n if ((m = /^(\\d+):(\\d+):(\\d+)(\\.\\d+)$/.exec(input))) {\n let hh = parseInt(m[1], 10);\n let mm = parseInt(m[2], 10);\n let ss = parseInt(m[3], 10);\n let ms = parseFloat(m[4]) * 1000;\n return {\n type : \"date\",\n format : format + \"hh:mm:ss.00\",\n value : date + calc.runtime.packTime(hh, mm, ss, ms)\n };\n }\n});\n\n// Support numeric formats with thousands separator and/or currency symbol, like `1,234,567.00`,\n// `$1234`, `123,456.78 $` etc. I apologize for this code.\nregisterFormatParser(function(input){\n let m, n;\n const intlService = intl();\n var numbers = intlService.localeInfo().numbers;\n let comma = numbers.symbols.group;\n let dot = numbers.symbols.decimal;\n let localeCurrency = numbers.localeCurrency;\n if (!localeCurrency && intlService.localeCurrency) {\n localeCurrency = intlService.localeCurrency();\n }\n let currency = numbers.currencies[localeCurrency].symbol;\n let rxnum = getNumberRegexp(comma, dot);\n let rxcur = new RegExp(\"^\\\\s*\\\\\" + currency + \"\\\\s*\");\n let sign = 1;\n let format = \"\";\n let suffix = \"\";\n let has_currency = false;\n let has_percent = false;\n\n input = calc.runtime.InputStream(input.replace(/^\\s+|\\s+$/g, \"\"));\n\n // has minus before currency?\n if (input.skip(/^-\\s*/)) {\n sign = -1;\n }\n\n // has currency before number?\n if ((m = input.skip(rxcur))) {\n has_currency = true;\n format += '\"' + m[0] + '\"';\n }\n\n // has minus after currency?\n if (input.skip(/^-\\s*/)) {\n if (sign < 0) {\n return null; // not a number\n }\n sign = -1;\n }\n\n // read the number itself\n if (!(n = input.skip(rxnum))) {\n return null; // not a number\n }\n format += \"0\";\n\n // has currency after number?\n if ((m = input.skip(rxcur))) {\n if (has_currency) {\n return null; // either before or after, not both.\n }\n has_currency = true;\n suffix = '\"' + m[0] + '\"';\n }\n\n // has percent after number?\n if (!has_currency && (m = input.skip(/^\\s*%\\s*/))) {\n has_percent = true;\n suffix = m[0]; // no quotes this time, % is special in format\n }\n\n if (!input.eof()) {\n return null; // should anything else follow, not a number\n }\n\n if (n[2] || has_currency) {\n format = format.replace(\"0\", \"#\");\n format += \",0\";\n }\n if (n[3]) {\n format += \".\" + repeat(\"0\", n[3].length - 1);\n }\n let value = n[0]\n .replace(new RegExp(\"\\\\\" + comma, \"g\"), \"\")\n .replace(new RegExp(\"\\\\\" + dot, \"g\"), \".\");\n\n value = parseFloat(value);\n if (has_percent) {\n value /= 100;\n }\n\n format += suffix;\n if (has_currency) {\n format += ';-' + format;\n }\n\n return {\n type: \"number\",\n currency: has_currency,\n format: format,\n value: sign * value\n };\n});\n\nregisterFormatParser(function(input){\n let m;\n if ((m = /^([0-9]*)\\.([0-9]+)(\\s*%)$/.exec(input))) {\n return {\n type: \"number\",\n value: parseFloat(input) / 100,\n format: \"0.\" + repeat(\"0\", m[2].length) + m[3]\n };\n }\n});\n\nlet NUMBER_FORMAT_RX = {};\nfunction getNumberRegexp(comma, dot) {\n let id = comma + dot;\n let rx = NUMBER_FORMAT_RX[id];\n if (!rx) {\n rx = \"^(\\\\d+(COM\\\\d{3})*(DOT\\\\d+)?)\";\n rx = rx.replace(/DOT/g, \"\\\\\" + dot).replace(/COM/g, \"\\\\\" + comma);\n rx = new RegExp(rx);\n NUMBER_FORMAT_RX[id] = rx;\n }\n return rx;\n}\n\nfunction repeat(str, len) {\n let out = \"\";\n while (len-- > 0) {\n out += str;\n }\n return out;\n}\n\n/*************************************************************************************/\n\nclass FormulaContext {\n constructor(workbook) {\n this.workbook = workbook;\n }\n\n getRefCells(ref, hiddenInfo, fsheet, frow, fcol, wantNulls) {\n let sheet, formula, value, i;\n if (ref instanceof CellRef) {\n sheet = this.workbook.sheetByName(ref.sheet);\n if (!sheet || !ref.valid()) {\n return [{\n value: new CalcError(\"REF\")\n }];\n }\n formula = sheet.formula(ref);\n value = sheet.range(ref.row, ref.col).value();\n\n if (wantNulls || formula != null || value != null) {\n return [{\n formula: formula,\n value: value,\n row: ref.row,\n col: ref.col,\n sheet: ref.sheet,\n hidden: hiddenInfo ? (sheet.columnWidth(ref.col) === 0 || sheet.rowHeight(ref.row) === 0) : false\n }];\n } else {\n return [];\n }\n }\n if (ref instanceof RangeRef) {\n i = this.workbook.sheetIndex(ref.sheet);\n let states = [], n = i;\n if (ref.endSheet) {\n // \"3D\" reference.\n n = this.workbook.sheetIndex(ref.endSheet);\n if (i > n) {\n let tmp = i;\n i = n;\n n = tmp;\n }\n }\n\n if (i < 0 || n < 0 || !ref.valid()) {\n return [{\n value: new CalcError(\"REF\")\n }];\n }\n\n // XXX: This is nicer, but significantly slower.\n // Should investigate why, or add some options to make\n // it faster (i.e. probably because it adds all cell\n // properties, while we only need value and formula).\n //\n // let add = function(row, col, data){\n // data.row = row;\n // data.col = col;\n // data.sheet = sheet.name();\n // states.push(data);\n // };\n // while (i <= n) {\n // sheet = this.workbook.sheetByIndex(i++);\n // sheet.forEach(ref, add);\n // }\n //\n // For now keep doing it \"manually\".\n\n while (i <= n) {\n sheet = this.workbook.sheetByIndex(i++);\n let tl = sheet._grid.normalize(ref.topLeft);\n let br = sheet._grid.normalize(ref.bottomRight);\n\n let startCellIndex = sheet._grid.cellRefIndex(tl);\n let endCellIndex = sheet._grid.cellRefIndex(br);\n\n let values = sheet._properties.iterator(\"value\", startCellIndex, endCellIndex);\n\n for (let col = tl.col; col <= br.col; ++col) {\n for (let row = tl.row; row <= br.row; ++row) {\n let index = sheet._grid.index(row, col);\n formula = sheet._properties.get(\"formula\", index);\n value = values.at(index);\n if (wantNulls || formula != null || value != null) {\n states.push({\n formula : formula,\n value : value,\n row : row,\n col : col,\n sheet : sheet.name(),\n hidden : hiddenInfo ? (sheet.columnWidth(col) === 0 || sheet.rowHeight(row) === 0) : false\n });\n }\n }\n }\n }\n\n return states;\n }\n if (ref instanceof UnionRef) {\n let a = [];\n for (i = 0; i < ref.refs.length; ++i) {\n a = a.concat(this.getRefCells(ref.refs[i], hiddenInfo, fsheet, frow, fcol));\n }\n return a;\n }\n if (ref instanceof NameRef) {\n let val = this.nameValue(ref, fsheet, frow, fcol);\n // XXX: revise this\n if (val instanceof Ref) {\n return this.getRefCells(val, hiddenInfo, fsheet, frow, fcol);\n }\n return [{\n value: val == null ? new CalcError(\"NAME\") : val\n }];\n }\n return [];\n }\n\n isMerged(ref) {\n let sheet = this.workbook.sheetByName(ref.sheet);\n return sheet.isMerged(ref);\n }\n\n nameValue(ref, fsheet, frow, fcol) {\n let val;\n if (ref.hasSheet()) {\n // qualified name\n val = this.workbook.nameValue(this._displayString(ref.print()));\n } else {\n // try local name\n ref = ref.clone().setSheet(fsheet, true);\n val = this.workbook.nameValue(this._displayString(ref.print()));\n if (val == null) {\n // try global name\n val = this.workbook.nameValue(this._displayString(ref.name));\n }\n if (val == null) {\n // try without _displayString\n val = this.workbook.nameValue(ref.print()) || this.workbook.nameValue(ref.name);\n }\n }\n if (val instanceof Ref) {\n val = val.absolute(frow, fcol);\n }\n return val;\n }\n\n getData(ref, fsheet, frow, fcol, wantNulls) {\n let single = ref instanceof CellRef;\n if (ref instanceof NameRef) {\n single = this.workbook.nameValue(ref.name) instanceof CellRef;\n }\n let data = this.getRefCells(ref, false, fsheet, frow, fcol, wantNulls).map(function(cell) {\n let val = cell.value;\n if (val instanceof calc.runtime.Formula) {\n val = val.value;\n }\n return val;\n });\n return single ? data[0] : data;\n }\n\n onFormula(f) {\n let sheet = this.workbook.sheetByName(f.sheet);\n let row = f.row, col = f.col, value = f.value;\n let currentFormula = sheet.formula({ row: row, col: col });\n if (currentFormula !== f) {\n // could have been deleted or modified in the mean time,\n // if the formula was asynchronous. ignore this result.\n return false;\n }\n\n let arrayRange = f.arrayFormulaRange;\n if (arrayRange) {\n // `value` will always be a Matrix in this case;\n // enforced in runtime.js (Context::_resolve). We\n // must fill only cells in arrayRange.\n let tlRow, tlCol;\n let width = value.width;\n let height = value.height;\n sheet.forEach(arrayRange, function(row, col) {\n if (tlRow === undefined) {\n tlRow = row;\n tlCol = col;\n }\n let vrow = row - tlRow;\n let vcol = col - tlCol;\n let val;\n if (vrow < height && vcol < width) {\n val = value.get(vrow, vcol);\n } else {\n val = new CalcError(\"N/A\");\n }\n sheet._value(row, col, val);\n });\n }\n else {\n // formulas may return references. if a range or union,\n // we'll just save the first cell.\n if (value instanceof Ref) {\n value = this.getData(value, f.sheet, row, col);\n if (Array.isArray(value)) {\n value = value[0];\n }\n if (value === undefined) {\n value = null; // clear contents\n }\n }\n\n // when not saved as an array formula, a formula\n // returning a Matrix will just save the first value.\n if (value instanceof calc.runtime.Matrix) {\n value = value.get(0, 0);\n }\n\n sheet._value(row, col, value);\n }\n\n clearTimeout(sheet._formulaContextRefresh);\n sheet._formulaContextRefresh = setTimeout(function() {\n sheet.batch(function() {}, { layout: true });\n }, 50);\n\n return true;\n }\n _displayString(val) {\n if (/^[a-z_][a-z0-9_]*$/i.test(val)) {\n return val;\n }\n return \"'\" + val.replace(/\\x27/g, \"\\\\'\") + \"'\";\n }\n}\n\nclass ValidationFormulaContext extends FormulaContext {\n onFormula() {\n return true;\n }\n}\n\ncalc.ValidationFormulaContext = ValidationFormulaContext;\n\n/* eslint-disable no-param-reassign */\n\nlet KEY_NAMES$1 = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 27: 'esc',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 35: 'end',\n 36: 'home',\n 32: 'spacebar',\n 33: 'pageup',\n 34: 'pagedown',\n 46: 'delete',\n 113: ':edit'\n};\n\nconst Mac = () => navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n\nlet isAlphaNum = function(keyCode) {\n if ((keyCode > 47 && keyCode < 58) || // number keys\n (keyCode > 64 && keyCode < 91) || // letter keys\n (keyCode > 95 && keyCode < 112) || // numpad keys\n (keyCode > 185 && keyCode < 193) || // ;=,-./` (in order)\n (keyCode > 218 && keyCode < 223) || // [\\]' (in order)\n (keyCode === 229) // combined key event?\n ) {\n return true;\n }\n\n return false;\n};\n\nlet keyName = function(event) {\n let keyCode = event.keyCode;\n let name = KEY_NAMES$1[keyCode];\n\n if (!name && isAlphaNum(keyCode)) {\n name = \":alphanum\";\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\n //\n // Fix for https://github.com/telerik/kendo-ui-core/issues/2284\n // (starting editor with `=` on Firefox)\n if (!name && event.key && event.key.length === 1) {\n name = \":alphanum\";\n }\n\n return name;\n};\n\nclass EventListener {\n constructor(target, observer, handlers) {\n this._handlers = {};\n this.target = target;\n this._observer = observer || window;\n\n this.keyDownProxy = this.keyDown.bind(this);\n this.mouseProxy = this.mouse.bind(this);\n this.touchProxy = this.touch.bind(this);\n this.threshold = 5;\n this._pressLocation = null;\n\n this._attachEvent(target, \"keydown\", this.keyDownProxy);\n this._attachEvent(target, \"contextmenu mousedown cut copy paste scroll wheel click dblclick focus\", this.mouseProxy);\n this._attachEvent(target, \"touchmove touchend\", this.touchProxy);\n\n this._attachEvent(document.documentElement, \"mousemove mouseup\", this.mouseProxy);\n this._attachEvent(document.documentElement, \"touchmove touchend\", this.touchProxy);\n\n if (handlers) {\n for (let key in handlers) {\n this.on(key, handlers[key]);\n }\n }\n }\n\n _attachEvent(element, events, handler) {\n events.split(' ').forEach(eventType => { element.addEventListener(eventType, handler); });\n }\n\n _removeEvent(element, events, handler) {\n events.split(' ').forEach(eventType => { element.removeEventListener(eventType, handler); });\n }\n\n keyDown(e) {\n // Do not handle keys for Toolbar Tab switch shortcuts\n if (e.altKey && (e.key === \"n\" || e.key === \"h\" || e.key === \"a\")) {\n return;\n }\n\n this.handleEvent(e, keyName(e));\n }\n\n touch(e) {\n this.handleEvent(e, e.type);\n }\n\n mouse(e) {\n let rightClick;\n\n if (e.which) {\n rightClick = (e.which === 3);\n } else if (e.button) {\n rightClick = (e.button === 2);\n }\n\n let type = e.type;\n\n if (type === \"mousedown\") {\n if (rightClick) {\n type = \"rightmousedown\";\n } else {\n this._pressLocation = { x: e.pageX, y: e.pageY };\n }\n }\n\n if (type === \"mouseup\") {\n if (!rightClick) {\n this._pressLocation = null;\n }\n }\n\n if (type === \"mousemove\" && this._pressLocation) {\n let dx = this._pressLocation.x - e.pageX;\n let dy = this._pressLocation.y - e.pageY;\n let distance = Math.sqrt(dx * dx + dy * dy);\n\n if (distance > this.threshold) {\n type = \"mousedrag\";\n }\n }\n\n this.handleEvent(e, type);\n }\n\n handleEvent(e, name) {\n let eventKey = \"\";\n\n e.mod = Mac() ? e.metaKey : (e.ctrlKey && !e.altKey);\n\n if (e.altKey) {\n eventKey += \"alt+\";\n }\n\n if (e.shiftKey) {\n eventKey += \"shift+\";\n }\n\n if (e.ctrlKey) {\n eventKey += \"ctrl+\";\n }\n\n eventKey += name;\n\n let catchAllHandler = this._handlers['*+' + name];\n\n if (catchAllHandler) {\n catchAllHandler.call(this._observer, e, eventKey);\n }\n\n let handler = this._handlers[eventKey];\n\n if (handler) {\n handler.call(this._observer, e, eventKey);\n }\n }\n\n on(event, callback) {\n let handlers = this._handlers;\n\n if (typeof callback === \"string\") {\n callback = this._observer[callback];\n }\n\n if (typeof event === \"string\") {\n event = event.split(\",\");\n }\n\n event.forEach(function(e) {\n handlers[e] = callback;\n });\n }\n\n destroy() {\n this._removeEvent(this.target, \"keydown\", this.keyDownProxy);\n this._removeEvent(this.target, \"contextmenu mousedown cut copy paste scroll wheel click dblclick focus\", this.mouseProxy);\n this._removeEvent(this.target, \"touchmove touchend\", this.touchProxy);\n\n this._removeEvent(document.documentElement, \"mousemove mouseup\", this.mouseProxy);\n this._removeEvent(document.documentElement, \"touchmove touchend\", this.touchProxy);\n }\n}\n\n/* eslint-disable default-case */\n/* eslint-disable no-else-return */\n/* eslint-disable key-spacing */\n/* eslint-disable eqeqeq */\n/* eslint-disable brace-style */\n/* eslint-disable consistent-return */\n\n\nlet alphaNumRegExp = /:alphanum$/;\n\nlet ACTIONS = {\n \"up\": \"up\",\n \"down\": \"down\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"home\": \"first-col\",\n \"end\": \"last-col\",\n \"ctrl+left\": \"word-left\",\n \"ctrl+right\": \"word-right\",\n \"ctrl+up\": \"word-up\",\n \"ctrl+down\": \"word-down\",\n \"ctrl+home\": \"first\",\n \"ctrl+end\": \"last\",\n \"pageup\": \"prev-page\",\n \"pagedown\": \"next-page\"\n};\n\nlet ENTRY_ACTIONS = {\n \"tab\": \"next\",\n \"shift+tab\": \"previous\",\n \"enter\": \"lower\",\n \"shift+enter\": \"upper\",\n \"delete\": \"clearContents\",\n \"backspace\": \"clearContents\",\n \"shift+:alphanum\": \"edit\",\n \"alt+:alphanum\": \"edit\",\n \":alphanum\": \"edit\",\n \"ctrl+:alphanum\": \"ctrl\",\n \"alt+ctrl+:alphanum\": \"edit\",\n \":edit\": \"edit\"\n};\n\nlet CONTAINER_EVENTS = {\n \"wheel\": \"onWheel\",\n \"*+mousedown\": \"onMouseDown\",\n \"contextmenu\": \"onContextMenu\",\n \"*+mousedrag\": \"onMouseDrag\",\n \"*+mouseup\": \"onMouseUp\",\n \"*+dblclick\": \"onDblClick\",\n \"mousemove\": \"onMouseMove\"\n};\n\nlet CLIPBOARD_EVENTS = {\n \"pageup\": \"onPageUp\",\n \"pagedown\": \"onPageDown\",\n \"mouseup\": \"onMouseUp\",\n \"*+cut\": \"onCut\",\n \"*+paste\": \"onPaste\",\n \"*+copy\": \"onCopy\"\n};\n\nlet EDITOR_EVENTS = {\n \"esc\": \"onEditorEsc\",\n \"enter\": \"onEditorBlur\",\n \"alt+enter\": \"insertNewline\",\n \"shift+enter\": \"onEditorBlur\",\n \"tab\": \"onEditorBlur\",\n \"shift+tab\": \"onEditorBlur\",\n \"shift+ctrl+enter\": \"onEditorArrayFormula\"\n};\n\nlet FORMULABAR_EVENTS = Object.assign({ focus: \"onEditorBarFocus\" }, EDITOR_EVENTS);\nlet FORMULAINPUT_EVENTS = Object.assign({ focus: \"onEditorCellFocus\" }, EDITOR_EVENTS);\n\nlet SELECTION_MODES = {\n cell: \"range\",\n rowheader: \"row\",\n columnheader: \"column\",\n topcorner: \"sheet\",\n autofill: \"autofill\"\n};\n\n// function toActionSelector(selectors) {\n// return selectors.map(function(action) {\n// return '[data-action=\"' + action + '\"]';\n// }).join(\",\");\n// }\n\n// let COMPOSITE_UNAVAILABLE_ACTION_SELECTORS = toActionSelector([ 'cut', 'copy', 'paste', 'insert-left', 'insert-right', 'insert-above', 'insert-below' ]);\n// let UNHIDE_ACTION_SELECTORS = toActionSelector([ 'unhide-row', 'unhide-column' ]);\n\nlet ACTION_KEYS = [];\nlet SHIFT_ACTION_KEYS = [];\nlet ENTRY_ACTION_KEYS = [];\n\nfor (let key in ACTIONS) {\n ACTION_KEYS.push(key);\n SHIFT_ACTION_KEYS.push(\"shift+\" + key);\n}\n\nfor (let key in ENTRY_ACTIONS) {\n ENTRY_ACTION_KEYS.push(key);\n}\n\nCLIPBOARD_EVENTS[ACTION_KEYS] = \"onAction\";\nCLIPBOARD_EVENTS[SHIFT_ACTION_KEYS] = \"onShiftAction\";\nCLIPBOARD_EVENTS[ENTRY_ACTION_KEYS] = \"onEntryAction\";\n\nFORMULAINPUT_EVENTS[ACTION_KEYS] = \"onEditorAction\";\nFORMULAINPUT_EVENTS[SHIFT_ACTION_KEYS] = \"onEditorShiftAction\";\n\nclass Controller {\n constructor(view, workbook) {\n this.view = view;\n this.workbook(workbook);\n this.container = view.container;\n this.clipboardElement = view.clipboard;\n // this.cellContextMenu = view.cellContextMenu;\n // this.rowHeaderContextMenu = view.rowHeaderContextMenu;\n // this.colHeaderContextMenu = view.colHeaderContextMenu;\n // this.drawingContextMenu = view.drawingContextMenu;\n this.scroller = view.scroller;\n this.tabstrip = view.tabstrip;\n this.sheetsbar = view.sheetsbar;\n\n view.nameEditor.bind(\"enter\", this.onNameEditorEnter.bind(this));\n view.nameEditor.bind(\"cancel\", this.onNameEditorCancel.bind(this));\n view.nameEditor.bind(\"select\", this.onNameEditorSelect.bind(this));\n view.nameEditor.bind(\"delete\", this.onNameEditorDelete.bind(this));\n\n this.editor = view.editor;\n this.editor.bind(\"change\", this.onEditorChange.bind(this));\n this.editor.bind(\"activate\", this.onEditorActivate.bind(this));\n this.editor.bind(\"deactivate\", this.onEditorDeactivate.bind(this));\n this.editor.bind(\"update\", this.onEditorUpdate.bind(this));\n\n this.listener = new EventListener(this.container, this, CONTAINER_EVENTS);\n\n this.scrollHandler = this.onScroll.bind(this);\n this.mouseDownHandler = this.onMouseDown.bind(this);\n\n view.scroller.addEventListener(\"scroll\", this.scrollHandler);\n view.scroller.addEventListener(\"mousedown\", this.mouseDownHandler);\n\n this._enableEditorEvents();\n\n if (this.sheetsbar) {\n this.sheetsbar.bind(\"select\", this.onSheetBarSelect.bind(this));\n this.sheetsbar.bind(\"reorder\", this.onSheetBarReorder.bind(this));\n this.sheetsbar.bind(\"rename\", this.onSheetBarRename.bind(this));\n this.sheetsbar.bind(\"remove\", this.onSheetBarRemove.bind(this));\n }\n\n // this.cellContextMenu.bind(\"select\", this.onContextMenuSelect.bind(this));\n // this.rowHeaderContextMenu.bind(\"select\", this.onContextMenuSelect.bind(this));\n // this.colHeaderContextMenu.bind(\"select\", this.onContextMenuSelect.bind(this));\n // this.drawingContextMenu.bind(\"select\", this.onContextMenuSelect.bind(this));\n\n // this is necessary for Windows to catch prevent context menu correctly\n // this.cellContextMenu.element\n // .add(this.rowHeaderContextMenu.element)\n // .add(this.colHeaderContextMenu.element)\n // .add(this.drawingContextMenu.element)\n // .on(\"contextmenu\", false);\n\n // if (this.tabstrip) {\n // this.tabstrip.bind(\"action\", this.onCommandRequest.bind(this));\n // this.tabstrip.bind(\"dialog\", this.onDialogRequest.bind(this));\n // }\n }\n\n executeCommand(options) {\n return this._execute(options);\n }\n\n _enableEditorEvents(enable) {\n if (enable === undefined || enable) {\n this.keyListener = new EventListener(this.clipboardElement, this, CLIPBOARD_EVENTS);\n this.barKeyListener = new EventListener(this.editor.barElement(), this, FORMULABAR_EVENTS);\n this.inputKeyListener = new EventListener(this.editor.cellElement(), this, FORMULAINPUT_EVENTS);\n } else {\n this.keyListener.destroy();\n this.barKeyListener.destroy();\n this.inputKeyListener.destroy();\n }\n }\n\n _execute(options) {\n let result = this._workbook.execute(options);\n\n if (options.command === \"EditCommand\" && !result) {\n this._workbook.trigger(\"change\", { editorClose: true });\n }\n\n if (result) {\n this._preventNavigation = true;\n if (result.reason === \"error\") {\n this.editor.deactivate(true); // make sure we don't call any change hooks\n this.view.showError(result, function() {\n // we only get here in case of a validation error when the user decided to retry.\n // this.activateEditor(false);\n // reset to last input from user\n // this.editor.value(this._lastEditorValue);\n // however, set _value manually such that it'll detect change properly. ugly :-\\\n // this.editor._value = this._workbook._inputForRef(this._workbook.activeSheet()._viewActiveCell());\n // seems like a nice UX to have the whole input selected\n // this.editor.select();\n }.bind(this));\n } else {\n this.view.openDialog(result.reason);\n }\n }\n\n return result;\n }\n\n _activeTooltip() {\n return this._workbook.activeSheet().activeCell().simplify().toString();\n }\n\n onContextMenuSelect(e) {\n let action = e.item.getAttribute('data-action'); // $(e.item).data(\"action\");\n let command;\n switch (action) {\n case \"cut\":\n command = { command: \"ToolbarCutCommand\", options: { workbook: this._workbook } };\n break;\n case \"copy\":\n command = { command: \"ToolbarCopyCommand\", options: { workbook: this._workbook } };\n break;\n case \"paste\":\n command = { command: \"ToolbarPasteCommand\", options: { workbook: this._workbook } };\n break;\n case \"delete-drawing\":\n command = { command: \"DeleteDrawingCommand\", options: { drawing: this.navigator._sheet._activeDrawing } };\n break;\n case \"bring-to-front\":\n command = { command: \"BringToFrontCommand\", options: { drawing: this.navigator._sheet._activeDrawing } };\n break;\n case \"send-to-back\":\n command = { command: \"SendToBackCommand\", options: { drawing: this.navigator._sheet._activeDrawing } };\n break;\n case \"unmerge\":\n command = { command: \"MergeCellCommand\", options: { value: \"unmerge\" } };\n break;\n case \"merge\":\n this.view.openDialog(\"merge\");\n break;\n case \"hide-row\":\n command = { command: \"HideLineCommand\", options: { axis: \"row\" } };\n break;\n case \"hide-column\":\n command = { command: \"HideLineCommand\", options: { axis: \"column\" } };\n break;\n case \"unhide-row\":\n command = { command: \"UnHideLineCommand\", options: { axis: \"row\" } };\n break;\n case \"unhide-column\":\n command = { command: \"UnHideLineCommand\", options: { axis: \"column\" } };\n break;\n case \"delete-row\":\n command = { command: \"DeleteRowCommand\" };\n break;\n case \"delete-column\":\n command = { command: \"DeleteColumnCommand\" };\n break;\n }\n\n if (command) {\n this._execute(command);\n }\n }\n\n onSheetBarRemove(e) {\n let sheet = this._workbook.sheetByName(e.name);\n\n //TODO: move to model!\n if (!sheet) {\n return;\n }\n\n this._workbook.removeSheet(sheet);\n }\n\n destroy() {\n this.view.scroller.removeEventListener(\"scroll\", this.scrollHandler);\n this.view.scroller.removeEventListener(\"mousedown\", this.mouseDownHandler);\n\n this.listener.destroy();\n this._enableEditorEvents(false);\n this.keyListener.destroy();\n this.inputKeyListener.destroy();\n }\n\n onSheetBarSelect(e) {\n let sheet;\n let workbook = this._workbook;\n\n if (e.isAddButton) {\n if (this._workbook.trigger(\"insertSheet\")) {\n return;\n }\n\n sheet = workbook.insertSheet();\n } else {\n sheet = workbook.sheetByName(e.name);\n }\n\n //TODO: move to model\n if (workbook.activeSheet().name() !== sheet.name()) {\n if (this._workbook.trigger(\"selectSheet\", { sheet: sheet })) {\n return;\n }\n\n if (!this.editor.canInsertRef(false)) {\n this.editor.deactivate();\n }\n\n workbook.activeSheet(sheet);\n }\n }\n\n onSheetBarReorder(e) {\n let workbook = this._workbook;\n let sheet = workbook.sheetByIndex(e.oldIndex);\n let activeSheet = workbook.activeSheet();\n let activeSheetName = activeSheet.name();\n\n workbook.moveSheetToIndex(sheet, e.newIndex);\n\n if (activeSheetName !== sheet.name()) {\n if (workbook.trigger(\"selectSheet\", { sheet: sheet })) {\n workbook.activeSheet(activeSheet);\n return;\n }\n\n if (!this.editor.canInsertRef(false)) {\n this.editor.deactivate();\n }\n\n workbook.activeSheet(sheet);\n }\n }\n\n onSheetBarRename(e) {\n let sheet = this._workbook.sheetByIndex(e.sheetIndex);\n\n if (this._workbook.sheetByName(e.name)) {\n this.view.showError({ reason: \"error\", type: \"duplicateSheetName\" });\n return;\n }\n\n this._workbook.renameSheet(sheet, e.name);\n\n this.clipboardElement.focus();\n }\n\n sheet(sheet) {\n this.navigator = sheet.navigator();\n this.axisManager = sheet.axisManager();\n }\n\n workbook(workbook) {\n this._workbook = workbook;\n this.clipboard = workbook.clipboard();\n workbook.bind(\"commandRequest\", this.onCommandRequest.bind(this));\n }\n\n refresh() {\n let editor = this.editor;\n let workbook = this._workbook;\n let sheet = workbook.activeSheet();\n\n this._viewPortHeight = this.view.scroller.clientHeight;\n this.navigator.height(this._viewPortHeight);\n\n if (!editor.isActive() && !this.isEditorDisabled) {\n editor.enable(sheet.selection().enable() !== false);\n this.resetEditorValue();\n }\n\n let ref = sheet.selection()._ref.simplify();\n let def = this._workbook.nameForRef(ref, sheet.name());\n this.view.nameEditor.value(def.name);\n }\n\n onScroll() {\n this.view.render({ scroll: true });\n }\n\n onWheel(event) {\n let deltaX = event.deltaX;\n let deltaY = event.deltaY;\n\n if (event.deltaMode === 1) {\n deltaX *= 10;\n deltaY *= 10;\n }\n\n this.scrollWith(deltaX, deltaY);\n\n event.preventDefault();\n }\n\n onAction(event, action) {\n let sheet = this._workbook.activeSheet();\n sheet._activeDrawing = null;\n this.navigator.moveActiveCell(ACTIONS[action]);\n event.preventDefault();\n }\n\n onPageUp() {\n this.scrollDown(-this._viewPortHeight);\n }\n\n onPageDown() {\n this.scrollDown(this._viewPortHeight);\n }\n\n onEntryAction(event, action) {\n let sheet = this._workbook.activeSheet();\n\n if (event.mod) {\n let key = String.fromCharCode(event.keyCode);\n let shouldPrevent = true;\n\n switch (key) {\n case \"A\":\n sheet._activeDrawing = null;\n this.navigator.selectAll();\n break;\n case \"Y\":\n this._workbook.undoRedoStack.redo();\n break;\n case \"Z\":\n this._workbook.undoRedoStack.undo();\n break;\n default:\n shouldPrevent = false;\n break;\n }\n if (shouldPrevent) {\n event.preventDefault();\n }\n } else {\n let disabled = sheet.selection().enable() === false;\n let casual = action !== \":edit\";\n\n if (action == \"delete\" || action == \"backspace\") {\n if (sheet._activeDrawing) {\n this._execute({\n command: \"DeleteDrawingCommand\",\n options: { drawing: sheet._activeDrawing }\n });\n } else if (!disabled) {\n this._execute({ command: \"ClearContentCommand\" });\n }\n event.preventDefault();\n } else if (alphaNumRegExp.test(action) || !casual) {\n sheet._activeDrawing = null;\n if (disabled) {\n event.preventDefault();\n return;\n }\n if (casual) {\n this.editor.value(\"\");\n }\n this.activateEditor(casual);\n } else {\n this.navigator.navigateInSelection(ENTRY_ACTIONS[action]);\n event.preventDefault();\n }\n }\n }\n\n onShiftAction(event, action) {\n this.navigator.modifySelection(ACTIONS[action.replace(\"shift+\", \"\")], this.appendSelection);\n event.preventDefault();\n }\n\n onMouseMove(event) {\n let sheet = this._workbook.activeSheet();\n\n if (sheet.resizingInProgress() || sheet.selectionInProgress()) {\n return;\n }\n\n let object = this.objectAt(event);\n if (object.type === \"columnresizehandle\" || object.type === \"rowresizehandle\") {\n sheet.positionResizeHandle(object.ref);\n } else {\n sheet.removeResizeHandle();\n }\n\n sheet._renderComment(object.type == \"cell\" ? object.ref : null);\n }\n\n onMouseDown(event) {\n let object = this.objectAt(event);\n if (object.pane) {\n this.originFrame = object.pane;\n }\n\n if (this._startResizingDrawing(event, object)) {\n event.stopPropagation();\n return;\n }\n\n let sheet = this._workbook.activeSheet();\n // let win = this.container.closest('[' + kendo.attr(\"role\") + '=\"window\"]');\n // if (win.length) {\n // win = kendo.widgetInstance(win);\n // if (win && win.options.modal) {\n // event.stopPropagation();\n // }\n // }\n\n sheet._activeDrawing = null;\n if (object.type === \"drawing\") {\n sheet._activeDrawing = object.drawing;\n object.copy = object.drawing.clone();\n object.startBox = sheet.drawingBoundingBox(object.copy);\n sheet.startDragging(object);\n sheet.triggerChange({ dragging: true });\n event.preventDefault();\n return;\n }\n\n if (object.type === \"outside\") {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n if (object.type === \"editor\") {\n // XXX: canceling the edits, because they might not\n // validate. Not sure it's the Right Thing.\n this.onEditorEsc();\n this.openCustomEditor();\n event.preventDefault();\n return;\n }\n\n if (this.editor.canInsertRef(false) && object.ref) {\n this._workbook.activeSheet()._setFormulaSelections(this.editor.highlightedRefs());\n this.navigator.startSelection(object.ref, this._selectionMode, this.appendSelection, event.shiftKey, this.view);\n event.preventDefault();\n return;\n } else {\n this._preventNavigation = false;\n this.editor.deactivate();\n if (this._preventNavigation) {\n return; // validation error\n }\n }\n\n if (object.type === \"columnresizehandle\" || object.type === \"rowresizehandle\") {\n sheet.startResizing({ x: object.x, y: object.y });\n event.preventDefault();\n return;\n }\n\n if (object.type === \"filtericon\") {\n this.openFilterMenu(event);\n event.preventDefault();\n return;\n }\n\n this._selectionMode = SELECTION_MODES[object.type];\n this.appendSelection = event.mod;\n this.navigator.startSelection(object.ref, this._selectionMode, this.appendSelection, event.shiftKey, this.view);\n }\n\n _startResizingDrawing(event) {\n let handle = event.target.closest(\".k-spreadsheet-drawing-handle\");\n if (handle) {\n let location = this.translateCoords(event);\n let direction = handle.getAttribute(\"data-direction\");\n let sheet = this._workbook.activeSheet();\n let drawing = sheet._activeDrawing;\n sheet.startDragging({\n pane : this.originFrame,\n drawing : drawing,\n copy : drawing.clone(),\n startBox : sheet.drawingBoundingBox(drawing),\n resize : direction,\n //aspect : drawing.width / drawing.height,\n startX : location.x,\n startY : location.y\n });\n return true;\n }\n }\n\n onContextMenu(event) {\n let sheet = this._workbook.activeSheet();\n\n event.preventDefault();\n\n if (sheet.resizingInProgress() || sheet.draggingInProgress()) {\n return;\n }\n\n // emit close here if necessary\n\n let object = this.objectAt(event);\n\n if (object.type === \"columnresizehandle\" || object.type === \"rowresizehandle\") {\n return;\n }\n\n if (object.ref) {\n this.navigator.selectForContextMenu(object.ref, SELECTION_MODES[object.type]);\n } else if (object.type == \"drawing\") {\n this.navigator.selectDrawingForContextMenu(object.drawing);\n }\n\n let isComposite = this.navigator._sheet.select() instanceof UnionRef;\n let showUnhide = false;\n let showUnmerge = false;\n\n if (object.type == \"columnheader\") {\n showUnhide = !isComposite && this.axisManager.selectionIncludesHiddenColumns();\n } else if (object.type == \"rowheader\") {\n showUnhide = !isComposite && this.axisManager.selectionIncludesHiddenRows();\n } else if (object.type == \"drawing\") ; else {\n showUnmerge = this.navigator.selectionIncludesMergedCells();\n }\n\n this._workbook.trigger(\"contextmenu\", {\n objectRef: object.ref,\n targetType: object.type,\n isComposite,\n showUnhide,\n showUnmerge,\n originalEvent: event\n });\n }\n\n prevent(event) {\n event.preventDefault();\n }\n\n constrainResize(type, ref) {\n let sheet = this._workbook.activeSheet();\n let resizeHandle = sheet.resizeHandlePosition();\n\n return !resizeHandle || type === \"outside\" || type === \"topcorner\" || ref.col < resizeHandle.col || ref.row < resizeHandle.row;\n }\n\n _dragDrawing(event) {\n let sheet = this._workbook.activeSheet();\n let drag = sheet.draggingInProgress();\n if (!drag) {\n return false;\n }\n\n let location = this.translateCoords(event);\n let drawing = drag.drawing;\n let deltaX = location.x - drag.startX;\n let deltaY = location.y - drag.startY;\n\n if (drag.resize == \"SE\") {\n if (drag.aspect) {\n if (Math.abs(deltaX) > Math.abs(deltaY)) {\n drawing.width = Math.max(drag.copy.width + deltaX, 20);\n drawing.height = drawing.width / drag.aspect;\n } else {\n drawing.height = Math.max(drag.copy.height + deltaY, 20);\n drawing.width = drawing.height * drag.aspect;\n }\n } else {\n drawing.width = Math.max(drag.copy.width + deltaX, 20);\n drawing.height = Math.max(drag.copy.height + deltaY, 20);\n }\n }\n else if (drag.resize == \"E\") {\n drawing.width = Math.max(drag.copy.width + deltaX, 20);\n }\n else if (drag.resize == \"S\") {\n drawing.height = Math.max(drag.copy.height + deltaY, 20);\n }\n else if (drag.resize == \"N\") {\n if (drag.copy.height - deltaY > 20) {\n drawing.height = drag.copy.height - deltaY;\n drawing.offsetY = drag.copy.offsetY + deltaY;\n }\n }\n else if (drag.resize == \"W\") {\n if (drag.copy.width - deltaX > 20) {\n drawing.width = drag.copy.width - deltaX;\n drawing.offsetX = drag.copy.offsetX + deltaX;\n }\n }\n else if (drag.resize == \"NE\") {\n drawing.width = Math.max(drag.copy.width + deltaX, 20);\n if (drag.copy.height - deltaY > 20) {\n drawing.height = drag.copy.height - deltaY;\n drawing.offsetY = drag.copy.offsetY + deltaY;\n }\n }\n else if (drag.resize == \"SW\") {\n drawing.height = Math.max(drag.copy.height + deltaY, 20);\n if (drag.copy.width - deltaX > 20) {\n drawing.width = drag.copy.width - deltaX;\n drawing.offsetX = drag.copy.offsetX + deltaX;\n }\n }\n else if (drag.resize == \"NW\") {\n if (drag.copy.height - deltaY > 20) {\n drawing.height = drag.copy.height - deltaY;\n drawing.offsetY = drag.copy.offsetY + deltaY;\n }\n if (drag.copy.width - deltaX > 20) {\n drawing.width = drag.copy.width - deltaX;\n drawing.offsetX = drag.copy.offsetX + deltaX;\n }\n }\n // just moving (no resize)\n else {\n drawing.offsetX = drag.copy.offsetX + deltaX;\n drawing.offsetY = drag.copy.offsetY + deltaY;\n }\n\n sheet.triggerChange({ dragging: true });\n\n return true;\n }\n\n onMouseDrag(event) {\n if (this._selectionMode === \"sheet\") {\n return;\n }\n\n let location = { clientX: event.clientX, clientY: event.clientY };\n let sheet = this._workbook.activeSheet();\n\n if (this._dragDrawing(event)) {\n return;\n }\n\n let object = this.objectAt(location);\n\n if (sheet.resizingInProgress()) {\n\n if (!this.constrainResize(object.type, object.ref)) {\n sheet.resizeHintPosition({ x: object.x, y: object.y });\n }\n\n return;\n }\n\n if (object.type === \"outside\") {\n this.startAutoScroll(object);\n return;\n }\n\n if (this.originFrame === object.pane) {\n this.selectToLocation(location);\n } else { // cross frame selection\n let frame = this.originFrame._grid;\n\n if (object.x > frame.right) ;\n\n if (object.y > frame.bottom) {\n this.scrollTop();\n }\n\n if (object.y < frame.top || object.x < frame.left) {\n this.startAutoScroll(object, location);\n } else {\n this.selectToLocation(location);\n }\n }\n\n event.preventDefault();\n }\n\n onMouseUp(event) {\n let sheet = this._workbook.activeSheet();\n sheet.completeResizing();\n sheet.completeDragging();\n\n this.navigator.completeSelection();\n this.stopAutoScroll();\n\n let editor = this.editor.activeEditor();\n if (!editor) {\n return;\n }\n let el = event.target;\n while (el) {\n if (el === editor.element) {\n return;\n }\n el = el.parentNode;\n }\n\n let object = this.objectAt(event);\n if (object && object.ref && editor.canInsertRef(false)) {\n editor.refAtPoint(sheet);\n sheet._setFormulaSelections(editor.highlightedRefs());\n }\n }\n\n onDblClick(event) {\n let object = this.objectAt(event);\n let disabled = this._workbook.activeSheet().selection().enable() === false;\n\n if (object.type !== \"cell\" || disabled) {\n return;\n }\n\n let sel = this._workbook.activeSheet().selection();\n this.activateEditor(!sel.value() && !sel.formula());\n this.onEditorUpdate();\n }\n\n onCut(e) {\n let self = this;\n setTimeout(function() {\n self.clipboard.menuInvoked = (e === undefined);\n self._execute({\n command: \"CutCommand\",\n options: { workbook: self.view._workbook, event: e }\n });\n });\n }\n\n clipBoardValue() {\n return this.clipboardElement.html();\n }\n\n _pasteImage(blob) {\n let self = this;\n let img = new window.Image();\n img.src = window.URL.createObjectURL(blob);\n img.onload = function() {\n self._execute({\n command: \"InsertImageCommand\",\n options: {\n blob: blob,\n width: img.width,\n height: img.height\n }\n });\n };\n setTimeout(function() {\n window.URL.revokeObjectURL(img.src);\n }, 10);\n }\n\n onPaste(e) {\n let self = this;\n let html = \"\";\n let plain = \"\";\n self.clipboard.menuInvoked = (e === undefined);\n if (e) {\n let clipboardData = e.clipboardData;\n if (clipboardData && clipboardData.getData) {\n e.preventDefault();\n let hasHTML = false;\n let hasPlainText = false;\n // Firefox uses DOMStringList, needs special handling\n if (window.DOMStringList && clipboardData.types instanceof window.DOMStringList) {\n hasHTML = clipboardData.types.contains(\"text/html\");\n hasPlainText = clipboardData.types.contains(\"text/plain\");\n } else if (Array.isArray(clipboardData.types)) {\n hasHTML = clipboardData.types.indexOf(\"text/html\") >= 0;\n hasPlainText = clipboardData.types.indexOf(\"text/plain\") >= 0;\n } else {\n hasHTML = /text\\/html/.test(clipboardData.types);\n hasPlainText = /text\\/plain/.test(clipboardData.types);\n }\n if (hasHTML) {\n html = clipboardData.getData('text/html').trim();\n }\n if (hasPlainText) {\n plain = clipboardData.getData('text/plain').trim();\n }\n if (!html && !plain && clipboardData.items && clipboardData.items.length) {\n for (let i = 0; i < clipboardData.items.length; ++i) {\n let item = clipboardData.items[i];\n if (item.kind === \"file\" && /^image\\/(?:png|jpe?g|gif)$/i.test(item.type)) {\n return self._pasteImage(item.getAsFile());\n }\n }\n }\n } else {\n if (window.clipboardData.files && window.clipboardData.files.length) {\n let file = window.clipboardData.files[0];\n if (/^image\\/(?:png|jpe?g|gif)$/i.test(file.type)) {\n return self._pasteImage(file);\n }\n }\n\n plain = window.clipboardData.getData(\"Text\");\n if (plain) {\n plain = plain.trim();\n }\n\n // There's no way to get the HTML clipboard contents in IE other than letting\n // the browser handle the event (it pastes into our clipboardElement), and then\n // we can read the HTML from there. Need to allow a small timeout for this.\n self.clipboardElement.empty();\n setTimeout(function() {\n html = self.clipboardElement.html();\n if (html || plain) {\n self.clipboard.external({ html: html, plain: plain });\n self._execute({\n command: \"PasteCommand\",\n options: { workbook: self.view._workbook, event: e }\n });\n }\n });\n\n return;\n }\n } else {\n self.clipboard.menuInvoked = true;\n }\n\n if (!html && !plain) {\n return;\n }\n self.clipboard.external({ html: html, plain: plain });\n self._execute({\n command: \"PasteCommand\",\n options: { workbook: self.view._workbook, event: e }\n });\n }\n\n onCopy(e) {\n this.clipboard.menuInvoked = (e === undefined);\n this._execute({\n command: \"CopyCommand\",\n options: { workbook: this.view._workbook, event: e }\n });\n }\n\n////////////////////////////////////////////////////////////////////\n\n scrollTop() {\n this.scroller.scrollTop = 0;\n }\n\n scrollLeft() {\n this.scroller.scrollLeft = 0;\n }\n\n scrollDown(value) {\n this.scroller.scrollTop += value;\n }\n\n scrollRight(value) {\n this.scroller.scrollLeft += value;\n }\n\n scrollWith(right, down) {\n this.scroller.scrollTop += down;\n this.scroller.scrollLeft += right;\n }\n\n translateCoords(location) {\n let box = this.container.getBoundingClientRect();\n return {\n x: location.clientX - box.left,\n y: location.clientY - box.top\n };\n }\n\n objectAt(location, noDrawing) {\n if (!location) {\n return;\n }\n const loc = this.translateCoords(location);\n return this.view.objectAt(loc.x, loc.y, noDrawing);\n }\n\n selectToLocation(cellLocation) {\n let object = this.objectAt(cellLocation, true);\n\n if (object.pane && object.ref) { // cell, rowheader or columnheader\n this.extendSelection(object);\n this.lastKnownCellLocation = cellLocation;\n this.originFrame = object.pane;\n }\n\n this.stopAutoScroll();\n }\n\n extendSelection(object) {\n this.navigator.extendSelection(object.ref, this._selectionMode);\n }\n\n autoScroll() {\n let x = this._autoScrollTarget.x;\n let y = this._autoScrollTarget.y;\n let boundaries = this.originFrame._grid;\n let scroller = this.view.scroller;\n let scrollStep = 8;\n\n let scrollLeft = scroller.scrollLeft;\n let scrollTop = scroller.scrollTop;\n\n if (x < boundaries.left) {\n this.scrollRight(-scrollStep);\n }\n if (x > boundaries.right) {\n this.scrollRight(scrollStep);\n }\n if (y < boundaries.top) {\n this.scrollDown(-scrollStep);\n }\n if (y > boundaries.bottom) {\n this.scrollDown(scrollStep);\n }\n\n if (scrollTop === scroller.scrollTop && scrollLeft === scroller.scrollLeft) {\n this.selectToLocation(this.finalLocation);\n } else {\n this.extendSelection(this.objectAt(this.lastKnownCellLocation));\n }\n }\n\n startAutoScroll(viewObject, location) {\n if (!this._scrollInterval) {\n this._scrollInterval = setInterval(this.autoScroll.bind(this), 50);\n }\n\n this.finalLocation = location || this.lastKnownCellLocation;\n\n this._autoScrollTarget = viewObject;\n }\n\n stopAutoScroll() {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n }\n\n openCustomEditor() {\n this.view.openCustomEditor();\n }\n\n openFilterMenu(event) {\n let object = this.objectAt(event);\n let sheet = this._workbook.activeSheet();\n let column = sheet.filterColumn(object.ref);\n let filterMenu = this.view.createFilterMenu(column);\n\n filterMenu.bind(\"action\", this.onCommandRequest.bind(this));\n filterMenu.bind(\"action\", filterMenu.close.bind(filterMenu));\n\n filterMenu.openFor(event.target, event);\n }\n\n////////////////////////////////////////////////////////////////////\n\n _saveEditorValue(arrayFormula) {\n let sheet = this.editor._range.sheet();\n let value = this.editor.value();\n if (this._workbook.activeSheet() !== sheet) {\n // remove highlighted refs (XXX: which are mostly wrong, BTW)\n this._workbook.activeSheet()._setFormulaSelections();\n // go back to the original sheet\n this._workbook.activeSheet(sheet);\n }\n sheet.isInEditMode(false);\n this._lastEditorValue = value;\n this._execute({\n command: \"EditCommand\",\n options: {\n value: value,\n arrayFormula: arrayFormula\n }\n });\n }\n\n onEditorChange() {\n this._saveEditorValue(false);\n }\n\n onEditorArrayFormula() {\n this._saveEditorValue(true);\n this.editor.deactivate(true);\n }\n\n onEditorActivate() {\n let workbook = this._workbook;\n let sheet = workbook.activeSheet();\n\n sheet._setFormulaSelections(this.editor.highlightedRefs());\n sheet.isInEditMode(true);\n }\n\n onEditorDeactivate() {\n let sheet = this._workbook.activeSheet();\n\n sheet.isInEditMode(false);\n sheet._setFormulaSelections([]);\n }\n\n onEditorUpdate() {\n this._workbook.activeSheet()._setFormulaSelections(this.editor.highlightedRefs());\n }\n\n onEditorBarFocus() {\n let disabled = this._workbook.activeSheet().selection().enable() === false;\n if (disabled) {\n return;\n }\n this.editor\n .activate({\n range: this._workbook.activeSheet().selection(),\n rect: this.view.activeCellRectangle(),\n tooltip: this._activeTooltip()\n });\n }\n\n onEditorCellFocus() {\n this.editor.scale();\n }\n\n onEditorEsc() {\n this.resetEditorValue();\n this.editor.deactivate();\n\n this.clipboardElement.focus();\n }\n\n insertNewline(e) {\n e.preventDefault();\n this.editor.insertNewline();\n }\n\n onEditorBlur(e, action) {\n if (e.defaultPrevented || this.editor.isFiltered()) {\n return;\n }\n\n this._preventNavigation = false;\n this.editor.deactivate();\n\n if (!this._preventNavigation) {\n this.clipboardElement.focus();\n this.navigator.navigateInSelection(ENTRY_ACTIONS[action]);\n }\n\n if (action === 'tab') {\n e.preventDefault();\n }\n }\n\n onEditorAction(event, action) {\n if (event.defaultPrevented) {\n return;\n }\n\n let editor = this.editor;\n let sheet = this._workbook.activeSheet();\n\n if (this._casualEditing && /^(?:up|right|down|left)$/.test(action)) {\n this.deactivateEditor();\n this.navigator.moveActiveCell(ACTIONS[action]);\n event.preventDefault();\n } else if (editor.canInsertRef(true)) {\n this.navigator.moveActiveCell(ACTIONS[action]);\n editor.activeEditor().refAtPoint(sheet);\n sheet._setFormulaSelections(editor.highlightedRefs());\n event.preventDefault();\n }\n }\n\n onEditorShiftAction(event, action) {\n let editor = this.editor;\n let sheet = this._workbook.activeSheet();\n\n if (editor.canInsertRef(true)) {\n this.navigator.modifySelection(ACTIONS[action.replace(\"shift+\", \"\")], this.appendSelection);\n\n editor.activeEditor().refAtPoint(sheet);\n sheet._setFormulaSelections(editor.highlightedRefs());\n\n event.preventDefault();\n }\n }\n\n////////////////////////////////////////////////////////////////////\n resetEditorValue() {\n let sheet = this._workbook.activeSheet();\n let ref = sheet.activeCell();\n let input = this._workbook._inputForRef(ref);\n let x = sheet.range(ref).intersectingArrayFormula();\n if (x) {\n input = \"=\" + x.formula;\n }\n this.editor.value(input, Boolean(x));\n }\n\n activateEditor(casual) {\n // This flag will be false when F2 has been pressed, and\n // true when editing is \"casual\", i.e., user just started\n // typing. In this case we want arrow keys to do cell\n // navigation rather than move the cursor.\n // https://github.com/telerik/kendo-ui-core/issues/3644\n this._casualEditing = casual;\n\n this.editor.activate({\n range: this._workbook.activeSheet().selection(),\n rect: this.view.activeCellRectangle(),\n tooltip: this._activeTooltip()\n }).focus();\n }\n\n deactivateEditor() {\n this.view.editor.deactivate();\n }\n\n onCommandRequest(e) {\n if (e.command) {\n this._execute(e);\n } else {\n this._workbook.undoRedoStack[e.action]();\n }\n }\n\n onDialogRequest(e) {\n let additionalOptions = {\n pdfExport: this._workbook.options.pdf,\n excelExport: this._workbook.options.excel\n };\n\n if (e.options) {\n deepExtend(e.options, additionalOptions);\n } else {\n e.options = additionalOptions;\n }\n\n this.view.openDialog(e.name, e.options);\n }\n\n onNameEditorEnter({ value }) {\n let ref;\n let workbook = this._workbook;\n let sheet = workbook.activeSheet();\n let name = value !== undefined ? value : this.view.nameEditor.value();\n\n // 1. does it look like a reference, or already defined\n // name? If so, just select it (don't define/modify any\n // names)\n ref = calc.parseReference(name, true) || workbook.nameValue(name);\n if (ref instanceof Ref) {\n if (ref.sheet && ref.sheet.toLowerCase() !== sheet.name().toLowerCase()) {\n // reference points to another sheet, select it if found\n let tmp = workbook.sheetByName(ref.sheet);\n if (tmp) {\n workbook.activeSheet(tmp);\n sheet = tmp;\n }\n }\n sheet.range(ref).select();\n return;\n }\n\n ref = sheet.selection()._ref.clone().simplify().setSheet(sheet.name(), true);\n\n // XXX: should we check if a name is already defined for this range, and update it instead?\n // Excel just adds a new one, and provides a more complete Name Manager dialog.\n //let def = workbook.nameForRef(ref, sheet.name());\n\n // just define new name\n this._execute({\n command: \"DefineNameCommand\",\n options: { name: name, value: ref }\n });\n\n this.clipboardElement.focus();\n }\n onNameEditorCancel() {\n this.clipboardElement.focus();\n }\n onNameEditorSelect(ev) {\n let name = ev.name;\n let workbook = this._workbook;\n let sheet = workbook.activeSheet();\n let ref = workbook.nameValue(name);\n if (ref instanceof Ref) {\n if (ref.sheet && ref.sheet.toLowerCase() !== sheet.name().toLowerCase()) {\n // reference points to another sheet, select it if found\n let tmp = workbook.sheetByName(ref.sheet);\n if (tmp) {\n workbook.activeSheet(tmp);\n sheet = tmp;\n }\n }\n sheet.range(ref).select();\n return;\n }\n this.clipboardElement.focus();\n }\n onNameEditorDelete(ev) {\n this._execute({\n command: \"DeleteNameCommand\",\n options: { name: ev.name }\n });\n this.clipboardElement.focus();\n }\n}\n\nclass RangeTreeNode {\n constructor(level, value, left, right) {\n this.level = level;\n this.value = value;\n this.left = left;\n this.right = right;\n }\n}\n\nconst NilNode = {\n left: undefined,\n right: undefined,\n level: 0\n};\nNilNode.left = NilNode;\nNilNode.right = NilNode;\n\nfunction skew(n) {\n let node = n;\n if (node.left.level === node.level) {\n let temp = node;\n node = node.left;\n temp.left = node.right;\n node.right = temp;\n }\n\n return node;\n}\n\nfunction split(n) {\n let node = n;\n if (node.right.right.level === node.level) {\n let temp = node;\n node = node.right;\n temp.right = node.left;\n node.left = temp;\n node.level += 1;\n }\n\n return node;\n}\n\nfunction insert(node, value) {\n if (node === NilNode) {\n return new RangeTreeNode(1, value, NilNode, NilNode);\n } else if (node.value.start > value.start) {\n node.left = insert(node.left, value);\n } else {\n node.right = insert(node.right, value);\n }\n\n return split(skew(node));\n}\n\nfunction remove(n, value) {\n let node = n;\n if (node === NilNode) {\n return node;\n }\n\n let diff = node.value.start - value.start;\n if (diff === 0) {\n if (node.left !== NilNode && node.right !== NilNode) {\n let heir = node.left;\n\n while (heir.right !== NilNode) {\n heir = heir.right;\n }\n\n node.value = heir.value;\n node.left = remove(node.left, node.value);\n } else if (node.left === NilNode) {\n node = node.right;\n } else {\n node = node.left;\n }\n } else if (diff > 0) {\n node.left = remove(node.left, value);\n } else {\n node.right = remove(node.right, value);\n }\n\n if (node.left.level < (node.level - 1) || node.right.level < (node.level - 1)) {\n node.level -= 1;\n if (node.right.level > node.level) {\n node.right.level = node.level;\n }\n\n node = skew(node);\n node.right = skew(node.right);\n node.right.right = skew(node.right.right);\n node = split(node);\n node.right = split(node.right);\n }\n\n return node;\n}\n\nclass ValueRange {\n // start;\n // end;\n // value;\n\n constructor(start, end, value) {\n this.start = start;\n this.end = end;\n this.value = value;\n }\n\n intersects(range) {\n return range.start <= this.end && range.end >= this.start;\n }\n\n clone() {\n return new ValueRange(this.start, this.end, this.value);\n }\n}\n\nclass RangeTree {\n // root;\n constructor() {\n this.root = NilNode;\n }\n\n insert(value) {\n this.root = insert(this.root, value);\n }\n\n remove(value) {\n this.root = remove(this.root, value);\n }\n\n findrange(value) {\n let node = this.root;\n\n while (node !== NilNode) {\n if (value < node.value.start) {\n node = node.left;\n } else if (value > node.value.end) {\n node = node.right;\n } else {\n return node.value;\n }\n }\n\n return null;\n }\n\n values() {\n let result = [];\n values(this.root, result);\n return result;\n }\n\n intersecting(start, end) {\n let ranges = [];\n intersecting(this.root, new ValueRange(start, end), ranges);\n return ranges;\n }\n\n map(callback) {\n let tree = new RangeTree();\n map(tree, this.root, callback);\n return tree;\n }\n\n forEach(callback) {\n forEach(this.root, callback);\n }\n\n clone() {\n return this.map(function(value) {\n return value.clone();\n });\n }\n\n first() {\n let first = this.root;\n while (first.left !== NilNode) {\n first = first.left;\n }\n\n return first;\n }\n\n last() {\n let last = this.root;\n while (last.right !== NilNode) {\n last = last.right;\n }\n\n return last;\n }\n}\n\nfunction values(node, result) {\n if (node === NilNode) {\n return;\n }\n\n values(node.left, result);\n result.push(node.value);\n values(node.right, result);\n}\n\nfunction intersecting(node, range, ranges) {\n if (node === NilNode) {\n return;\n }\n\n let value = node.value;\n\n if (range.start < value.start) {\n intersecting(node.left, range, ranges);\n }\n\n if (value.intersects(range)) {\n ranges.push(value);\n }\n\n if (range.end > value.end) {\n intersecting(node.right, range, ranges);\n }\n}\n\nfunction map(tree, root, callback) {\n if (root === NilNode) {\n return;\n }\n map(tree, root.left, callback);\n tree.insert(callback(root.value));\n map(tree, root.right, callback);\n}\n\nfunction forEach(root, callback) {\n if (root === NilNode) {\n return;\n }\n forEach(root.left, callback);\n callback(root.value);\n forEach(root.right, callback);\n}\n\nclass RangeList {\n // tree;\n constructor(start, end, value) {\n if (end === undefined) {\n this.tree = start;\n } else {\n this.tree = new RangeTree();\n this.tree.insert(new ValueRange(start, end, value));\n }\n }\n\n values() {\n return this.tree.values();\n }\n\n map(callback) {\n return new RangeList(this.tree.map(callback));\n }\n\n forEach(callback) {\n this.tree.forEach(callback);\n }\n\n intersecting(start, end) {\n return this.tree.intersecting(start, end);\n }\n\n first() {\n return this.tree.first().value;\n }\n\n last() {\n return this.tree.last().value;\n }\n\n insert(start, end, value) {\n return this.tree.insert(new ValueRange(start, end, value));\n }\n\n value(s, e, value) {\n let start = s, end = e;\n if (value === undefined) {\n if (end === undefined) {\n end = start;\n }\n return this.intersecting(start, end)[0].value;\n }\n\n let ranges = this.tree.intersecting(start - 1, end + 1);\n\n if (ranges.length) {\n let firstRange = ranges[0], lastRange = ranges[ranges.length - 1];\n\n if (firstRange.end < start) {\n if (firstRange.value === value) {\n start = firstRange.start;\n } else {\n ranges.shift();\n }\n }\n\n if (lastRange.start > end) {\n if (lastRange.value === value) {\n end = lastRange.end;\n } else {\n ranges.pop();\n }\n }\n\n for (let i = 0, length = ranges.length; i < length; i++) {\n let range = ranges[i];\n let rangeValue = range.value;\n let rangeStart = range.start;\n let rangeEnd = range.end;\n\n this.tree.remove(range);\n\n if (rangeStart < start) {\n if (rangeValue !== value) {\n this.insert(rangeStart, start - 1, rangeValue);\n } else {\n start = rangeStart;\n }\n }\n\n if (rangeEnd > end) {\n if (rangeValue !== value) {\n this.insert(end + 1, rangeEnd, rangeValue);\n } else {\n end = rangeEnd;\n }\n }\n }\n }\n\n this.insert(start, end, value);\n }\n\n expandedValues(start, end) {\n let ranges = this.intersecting(start, end);\n let result = [];\n\n let rangeIndex = 0;\n\n for (let i = start; i <= end; i++) {\n if (ranges[rangeIndex].end < i) {\n rangeIndex ++;\n }\n\n result.push({ index: i - start, value: ranges[rangeIndex].value });\n }\n\n return result;\n }\n\n sortedIndices(start, end, valueComparer, indices) {\n let result = this.expandedValues(start, end);\n\n let comparer = function(a, b) {\n if (a.value === b.value) {\n return a.index - b.index;\n }\n\n return valueComparer(a.value, b.value);\n };\n\n if (indices) {\n comparer = function(a, b) {\n let x = indices[a.index];\n let y = indices[b.index];\n\n if (x.value === y.value) {\n return valueComparer(a.value, b.value);\n }\n\n return a.index - b.index;\n };\n }\n\n result.sort(comparer);\n\n return result;\n }\n\n sort(start, end, indices) {\n if (this.intersecting(start, end).length === 1) {\n return;\n }\n\n let expValues = this.expandedValues(start, end);\n\n for (let i = 0, len = indices.length; i < len; i++) {\n this.value(i + start, i + start, expValues[indices[i].index].value);\n }\n }\n\n copy(sourceStart, sourceEnd, targetStart) {\n let intValues = this.intersecting(sourceStart, sourceEnd);\n\n let start = targetStart;\n let end;\n\n for (let i = 0, len = intValues.length; i < len; i++) {\n let rangeStart = intValues[i].start;\n\n if (rangeStart < sourceStart) {\n rangeStart = sourceStart;\n }\n\n let rangeEnd = intValues[i].end;\n\n if (rangeEnd > sourceEnd) {\n rangeEnd = sourceEnd;\n }\n\n end = start + (rangeEnd - rangeStart);\n\n this.value(start, end, intValues[i].value);\n\n start = ++end;\n }\n }\n\n iterator(start, end) {\n return new Iterator(start, end, this.intersecting(start, end));\n }\n\n getState() {\n return this.tree.clone();\n }\n\n setState(state) {\n this.tree = state.clone();\n }\n\n toJSON() {\n return this.values();\n }\n\n fromJSON(vals) {\n vals.forEach((v) => {\n this.value(v.start, v.end, v.value);\n });\n }\n}\n\nclass Iterator {\n constructor(start, end, ranges) {\n this.start = start;\n this.end = end;\n this.index = 0;\n this.ranges = ranges;\n }\n\n unique() {\n return this.ranges.map(function(range) {\n return range.value;\n });\n }\n\n at(index) {\n while (this.ranges[this.index] && this.ranges[this.index].end < index) {\n this.index ++;\n }\n\n return this.ranges[this.index] && this.ranges[this.index].value;\n }\n\n forEach(callback) {\n for (let i = this.start; i <= this.end; i++) {\n callback(this.at(i), i);\n }\n\n this.index = 0;\n }\n}\n\nclass SparseRangeList extends RangeList {\n constructor(start, end, value) {\n super(start, end, value);\n this._defaultValue = value;\n this.tree = new RangeTree();\n this.range = new ValueRange(start, end, value);\n }\n\n intersecting(s, end) {\n let start = s;\n let ranges = this.tree.intersecting(start, end);\n let result = [];\n let range;\n\n if (!ranges.length) {\n return [this.range];\n }\n\n for (let i = 0, len = ranges.length; i < len; i++) {\n range = ranges[i];\n if (range.start > start) {\n result.push(new ValueRange(start, range.start - 1, this.range.value));\n }\n\n result.push(range);\n start = range.end + 1;\n }\n\n if (range.end < end) {\n result.push(new ValueRange(range.end + 1, end, this.range.value));\n }\n\n return result;\n }\n\n insert(start, end, v) {\n let value = v;\n if (value == null) {\n value = this._defaultValue;\n }\n if (value !== this.range.value) {\n this.tree.insert(new ValueRange(start, end, value));\n }\n }\n\n lastRangeStart() {\n let node = this.tree.root;\n\n if (node === NilNode) {\n return this.range.start;\n }\n\n while (node.right !== NilNode) {\n node = node.right;\n }\n\n return node.value.end + 1;\n }\n}\n\n/* eslint-disable default-case */\n/* eslint-disable camelcase */\n/* eslint-disable no-param-reassign */\n\n\nclass Property {\n constructor(list) {\n this.list = list;\n }\n\n get(index) {\n return this.parse(this.list.value(index, index));\n }\n\n set(start, end, value) {\n if (value === undefined) {\n value = end;\n end = start;\n }\n\n this.list.value(start, end, value);\n }\n\n parse(value) {\n return value;\n }\n\n copy(start, end, dst) {\n this.list.copy(start, end, dst);\n }\n\n iterator(start, end) {\n return this.list.iterator(start, end);\n }\n}\nclass JsonProperty extends Property {\n set(start, end, value) {\n this.list.value(start, end, JSON.stringify(value));\n }\n\n parse(value) {\n return JSON.parse(value);\n }\n}\nclass ValueProperty extends Property {\n constructor(values, formats) {\n super(values);\n this.formats = formats;\n }\n\n set(start, end, value) {\n if (value instanceof Date) {\n value = calc.runtime.dateToSerial(value);\n if (!this.formats.value(start,end)) {\n this.formats.value(start, end, toExcelFormat$1(culture().calendar.patterns.d));\n }\n } else if (typeof value == \"number\") {\n value = calc.runtime.limitPrecision(value);\n }\n\n this.list.value(start, end, value);\n }\n}\nfunction toExcelFormat$1(format) {\n return format.replace(/M/g, \"m\").replace(/'/g, '\"').replace(/tt/, \"am/pm\");\n}\n\nconst propertyBagSpec = [\n { property: Property, name: \"format\", value: null, sortable: true, serializable: true },\n { property: ValueProperty, name: \"value\", value: null, sortable: true, serializable: true, depends: \"format\" },\n { property: Property, name: \"formula\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"background\", value: null, sortable: true, serializable: true },\n { property: JsonProperty, name: \"vBorders\", value: null, sortable: false, serializable: false },\n { property: JsonProperty, name: \"hBorders\", value: null, sortable: false, serializable: false },\n { property: JsonProperty, name: \"dBorders\", value: null, sortable: false, serializable: true },\n { property: Property, name: \"color\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"fontFamily\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"underline\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"fontSize\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"italic\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"bold\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"textAlign\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"indent\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"verticalAlign\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"wrap\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"validation\", value: null, sortable: false, serializable: true },\n { property: Property, name: \"enable\", value: null, sortable: false, serializable: true },\n { property: Property, name: \"link\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"editor\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"comment\", value: null, sortable: true, serializable: true },\n { property: Property, name: \"html\", value: null, sortable: true, serializable: true }\n];\n\nclass PropertyBag {\n constructor(rowCount, columnCount, defaultValues) {\n defaultValues = defaultValues || {};\n let cellCount = rowCount * columnCount - 1;\n\n this.specs = propertyBagSpec;\n this.rowCount = rowCount;\n this.columnCount = columnCount;\n this.cellCount = cellCount;\n this.properties = {};\n this.lists = {};\n\n this.specs.forEach(function(spec) {\n let name = spec.name;\n let value = defaultValues[name];\n if (value === undefined) {\n value = spec.value;\n }\n this.lists[name] = new SparseRangeList(0, cellCount, value);\n let prop = this.properties[name] = new spec.property(this.lists[name], this.lists[spec.depends]);\n prop.spec = spec;\n }, this);\n\n // XXX: this is a hack but I have no better ideas at this\n // point. The getState() method in a SparseRangeList\n // clones the tree (which just copies values over), but\n // formulas are objects maintaining complex state.\n // https://github.com/telerik/kendo-ui-core/issues/2816\n this.lists.formula.tree.clone = cloneFormulaTree;\n this.lists.validation.tree.clone = cloneFormulaTree;\n }\n\n _resize(new_rows, new_cols) {\n let self = this;\n let old_rows = self.rowCount;\n let cell_count = new_rows * new_cols - 1;\n function scaleIndex(index) {\n let col = index / old_rows | 0;\n let row = index % old_rows;\n return col * new_rows + row;\n }\n function scaleNode(node) {\n // node is a ValueRange from rangelist.js\n // start/end are rowCount * col + row\n node.start = scaleIndex(node.start);\n node.end = scaleIndex(node.end);\n }\n Object.keys(self.lists).forEach(function(name) {\n let list = self.lists[name];\n if (new_rows !== old_rows) {\n list.forEach(scaleNode);\n }\n list.range.end = cell_count;\n });\n self.rowCount = new_rows;\n self.columnCount = new_cols;\n self.cellCount = cell_count;\n }\n\n getState() {\n let state = {};\n\n this.specs.forEach(function(spec) {\n state[spec.name] = this.lists[spec.name].getState();\n }, this);\n\n return state;\n }\n\n setState(state) {\n this.specs.forEach(function(spec) {\n this.lists[spec.name].setState(state[spec.name]);\n }, this);\n }\n\n get(name, index) {\n if (index === undefined) {\n return this.lists[name];\n }\n\n switch (name) {\n case \"borderRight\":\n index += this.rowCount;\n /* falls through */\n case \"borderLeft\":\n name = \"vBorders\";\n break;\n\n case \"borderBottom\":\n index++;\n /* falls through */\n case \"borderTop\":\n name = \"hBorders\";\n break;\n }\n return index > this.cellCount ? null : this.properties[name].get(index);\n }\n\n set(name, start, end, value) {\n switch (name) {\n case \"borderRight\":\n start += this.rowCount;\n end += this.rowCount;\n /* falls through */\n case \"borderLeft\":\n name = \"vBorders\";\n break;\n\n case \"borderBottom\":\n start++;\n end++;\n /* falls through */\n case \"borderTop\":\n name = \"hBorders\";\n break;\n }\n if (start <= end && end <= this.cellCount) {\n this.properties[name].set(start, end, value);\n }\n }\n\n fromJSON(index, value) {\n for (let si = 0; si < this.specs.length; si++) {\n let spec = this.specs[si];\n\n if (spec.serializable) {\n if (value[spec.name] !== undefined) {\n this.set(spec.name, index, index, value[spec.name], false);\n }\n }\n }\n\n [ \"borderLeft\", \"borderRight\", \"borderTop\", \"borderBottom\" ].forEach(function(b) {\n if (value[b] !== undefined) {\n this.set(b, index, index, value[b]);\n }\n }, this);\n }\n\n copy(sourceStart, sourceEnd, targetStart) {\n this.specs.forEach(function(spec) {\n this.properties[spec.name].copy(sourceStart, sourceEnd, targetStart);\n }, this);\n }\n\n iterator(name, start, end) {\n let prop = this.properties[name];\n let iter = prop.iterator(start, end), at = iter.at;\n let cellCount = this.cellCount;\n iter.at = function(index) {\n return index > cellCount ? null : prop.parse(at.call(iter, index));\n };\n iter.name = name;\n iter.value = prop.spec.value;\n return iter;\n }\n\n sortable() {\n return this.specs.filter(function(spec) { return spec.sortable; })\n .map(function(spec) {\n return this.lists[spec.name];\n }, this);\n }\n\n iterators(start, end) {\n return this.specs.reduce(function(ret, spec) {\n if (spec.serializable) {\n ret.push(this.iterator(spec.name, start, end));\n }\n return ret;\n }.bind(this), []);\n }\n\n forEach(start, end, callback) {\n let iterators = this.iterators(start, end);\n let hBorders = this.iterator(\"hBorders\", start, end + 1);\n let leftBorders = this.iterator(\"vBorders\", start, end);\n let rightBorders = this.iterator(\"vBorders\", start + this.rowCount, end + this.rowCount);\n let values, index;\n\n function addBorder(name, iterator, index) {\n let val = iterator.at(index);\n if (val !== iterator.value) {\n values[name] = val;\n }\n }\n\n for (index = start; index <= end; index++) {\n values = {};\n\n for (let i = 0; i < iterators.length; i++) {\n let iterator = iterators[i];\n let value = iterator.at(index);\n\n if (value !== iterator.value) {\n values[iterator.name] = value;\n }\n }\n\n addBorder(\"borderLeft\", leftBorders, index);\n addBorder(\"borderRight\", rightBorders, index + this.rowCount);\n addBorder(\"borderTop\", hBorders, index);\n if ((index + 1) % this.rowCount) {\n addBorder(\"borderBottom\", hBorders, index + 1);\n }\n\n callback(values);\n }\n }\n\n forEachProperty(callback) {\n for (let name in this.properties) {\n callback(this.properties[name]);\n }\n }\n}\nfunction cloneFormulaValue(x) {\n x = x.clone();\n x.value = x.value.deepClone(); // x.value is Formula or Validation\n return x;\n}\nfunction cloneFormulaTree() {\n let tree = this.map(cloneFormulaValue);\n tree.clone = cloneFormulaTree; // because it's a new RangeTree now\n return tree;\n}\nconst ALL_PROPERTIES = propertyBagSpec.reduce(function(a, spec) {\n if (spec.serializable) {\n a.push(spec.name);\n }\n return a;\n}, [ \"borderTop\", \"borderRight\", \"borderBottom\", \"borderLeft\" ]);\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-useless-call */\n/* eslint-disable camelcase */\n/* eslint-disable default-case */\n\n\nlet TRANSPOSE_FORMAT = \"_matrix({0})\";\nlet DATE_FORMAT = 'DATEVALUE(\"{0}\")';\n\nfunction compileValidation(sheet, row, col, validation) {\n let validationHandler;\n let comparer;\n let parsedFromDate;\n let parsedToDate;\n if (typeof validation === \"string\") {\n validation = JSON.parse(validation);\n }\n if (validation.from) {\n if (validation.dataType === \"list\" && !validation.fromIsListValue) {\n // We need to convert the {...} validation.from value to a string, so that it would work when exported to XLSX\n if (validation.from.indexOf(\"{\") > -1) {\n validation.from = validation.from.replace(/\\\"/g,\"\").replace(\"{\",\"\\\"\").replace(\"}\", \"\\\"\");\n }\n validation.from = intl().format(TRANSPOSE_FORMAT, validation.from);\n validation.fromIsListValue = true;\n }\n if (validation.dataType === \"date\") {\n parsedFromDate = calc.runtime.parseDate(validation.from);\n if (parsedFromDate) {\n validation.from = intl().format(DATE_FORMAT, validation.from);\n validation.fromIsDateValue = true;\n }\n }\n validation.from = calc.compile(calc.parseFormula(sheet, row, col, validation.from));\n }\n if (validation.to) {\n if (validation.dataType === \"date\") {\n parsedToDate = calc.runtime.parseDate(validation.to);\n if (parsedToDate) {\n validation.to = intl().format(DATE_FORMAT, validation.to);\n validation.toIsDateValue = true;\n }\n }\n validation.to = calc.compile(calc.parseFormula(sheet, row, col, validation.to));\n }\n if (validation.dataType === \"custom\") {\n comparer = validationExport.validationComparers.custom;\n } else if (validation.dataType === \"list\") {\n comparer = validationExport.validationComparers.list;\n } else {\n comparer = validationExport.validationComparers[validation.comparerType];\n }\n if (!comparer) {\n throw intl().format(\"'{0}' comparer is not implemented.\", validation.comparerType);\n }\n validationHandler = function(valueToCompare) { //add 'valueFormat' arg when add isDate comparer\n let toValue = this.to && (this.to_value || this.to_value === 0) ? this.to_value : undefined;\n if (valueToCompare === null || valueToCompare === \"\") {\n if (this.allowNulls) {\n this.value = true;\n } else {\n this.value = false;\n }\n } else if (this.dataType === \"custom\") {\n this.value = comparer(valueToCompare, this.from_value, toValue);\n } else if (this.dataType === \"list\") {\n let data = this._getListData();\n this.value = comparer(valueToCompare, data, toValue);\n } else {\n //TODO: TYPE CHECK IS REQUIRED ONLY FOR DATE TYPE WHEN SPECIAL COMPARER (ISDATE) IS USED\n this.value = comparer(valueToCompare, this.from_value, toValue);\n }\n return this.value;\n };\n const resultOptions = Object.assign({}, validation);\n resultOptions.handler = validationHandler;\n resultOptions.sheet = sheet;\n resultOptions.row = row;\n resultOptions.col = col;\n return new Validation(resultOptions);\n}\nclass Validation {\n constructor(options) {\n this.handler = options.handler;\n this.from = options.from;\n this.to = options.to;\n this.dataType = options.dataType; //date, time etc\n this.comparerType = options.comparerType; //greaterThan, EqaulTo etc\n this.type = options.type ? options.type : \"warning\"; //info, warning, reject\n this.allowNulls = options.allowNulls ? true : false;\n this.fromIsDateValue = options.fromIsDateValue ? true : false;\n this.toIsDateValue = options.toIsDateValue ? true : false;\n this.showButton = options.showButton;\n this.fromIsListValue = options.fromIsListValue ? true : false;\n //TODO: address to be range / cell ref, and adjust it based on it\n this.sheet = options.sheet;\n this.row = options.row;\n this.col = options.col;\n if (options.tooltipMessageTemplate) {\n this.tooltipMessageTemplate = options.tooltipMessageTemplate;\n }\n if (options.tooltipTitleTemplate) {\n this.tooltipTitleTemplate = options.tooltipTitleTemplate;\n }\n if (options.messageTemplate) {\n this.messageTemplate = options.messageTemplate;\n }\n if (options.titleTemplate) {\n this.titleTemplate = options.titleTemplate;\n }\n }\n _formatMessages(format) {\n let from = this.from ? this.from_value : \"\";\n let to = this.to ? this.to_value : \"\";\n let fromFormula = this.from ? this.from.toString() : \"\";\n let toFormula = this.to ? this.to.toString() : \"\";\n let dataType = this.dataType;\n let type = this.type;\n let comparerType = this.comparerType;\n return intl().format(format, from, to, fromFormula, toFormula, dataType, type, comparerType);\n }\n _setMessages() {\n this.title = \"\";\n this.message = \"\";\n if (this.tooltipTitleTemplate) {\n this.tooltipTitle = this._formatMessages(this.tooltipTitleTemplate);\n }\n if (this.tooltipMessageTemplate) {\n this.tooltipMessage = this._formatMessages(this.tooltipMessageTemplate);\n }\n if (this.titleTemplate) {\n this.title = this._formatMessages(this.titleTemplate);\n }\n if (this.messageTemplate) {\n this.message = this._formatMessages(this.messageTemplate);\n }\n }\n _getListData() {\n if (!this.from_value || !this.from_value.data) {\n return [];\n }\n let cube = this.from_value.data;\n let i;\n let y;\n let data = [];\n for (i = 0; i < cube.length; i++ ) {\n let array = cube[i];\n if (array) {\n for (y = 0; y < array.length; y++ ) {\n data.push(array[y]);\n }\n }\n }\n return data;\n }\n clone(sheet, row, col) {\n let options = this._getOptions();\n if (options.from) {\n options.from = options.from.clone(sheet, row, col);\n }\n if (options.to) {\n options.to = options.to.clone(sheet, row, col);\n }\n const optionsResult = Object.assign({}, options);\n optionsResult.handler = this.handler;\n optionsResult.sheet = sheet;\n optionsResult.row = row;\n optionsResult.col = col;\n return new Validation(optionsResult);\n }\n deepClone() {\n let v = new Validation(this);\n v.from = v.from.deepClone();\n if (v.to) {\n v.to = v.to.deepClone();\n }\n return v;\n }\n exec(ss, compareValue, compareFormat, callback) {\n let self = this;\n function getValue(val) {\n if (val instanceof Ref) {\n val = ss.getData(val);\n if (Array.isArray(val)) {\n val = val[0];\n }\n }\n return val;\n }\n let calculateFromCallBack = function(val) {\n self.from_value = getValue(val);\n self.value = self.handler.call(self, compareValue, compareFormat);\n self._setMessages();\n if (callback) {\n callback(self.value);\n }\n };\n if (self.to) {\n self.to.exec(ss, function(val) {\n self.to_value = getValue(val);\n self.from.exec(ss, calculateFromCallBack);\n });\n } else {\n self.from.exec(ss, calculateFromCallBack);\n }\n }\n reset() {\n if (this.from) {\n this.from.reset();\n }\n if (this.to) {\n this.to.reset();\n }\n delete this.value;\n }\n adjust(affectedSheet, operation, start, delta) {\n let prevFrom, prevTo, modified;\n let formulaRow = this.row;\n let formulaCol = this.col;\n if (this.from) {\n prevFrom = this.from.adjust(affectedSheet, operation, start, delta);\n }\n if (this.to) {\n prevTo = this.to.adjust(affectedSheet, operation, start, delta);\n }\n if (this.sheet.toLowerCase() === affectedSheet.toLowerCase()) {\n switch (operation) {\n case \"row\":\n if (formulaRow >= start) {\n modified = true;\n this.row += delta;\n }\n break;\n case \"col\":\n if (formulaCol >= start) {\n modified = true;\n this.col += delta;\n }\n break;\n }\n }\n if (modified || prevFrom || prevTo) {\n let v = new Validation(this);\n v.from = prevFrom;\n v.to = prevTo;\n v.row = formulaRow;\n v.col = formulaCol;\n return v;\n }\n }\n toJSON() {\n let options = this._getOptions();\n if (options.from) {\n options.from = options.from.toString();\n if (options.dataType === \"list\") {\n options.from = options.from.replace(/^_matrix\\((.*)\\)$/i, \"$1\");\n delete options.fromIsListValue;\n }\n if (options.dataType === \"date\") {\n if (this.fromIsDateValue) {\n options.from = options.from.replace(/^DATEVALUE\\(\"(.*)\"\\)$/i, \"$1\");\n delete options.fromIsDateValue;\n }\n }\n }\n if (options.to) {\n options.to = options.to.toString();\n if (options.dataType === \"date\") {\n if (this.toIsDateValue) {\n options.to = options.to.replace(/^DATEVALUE\\(\"(.*)\"\\)$/i, \"$1\");\n delete options.toIsDateValue;\n }\n }\n }\n return options;\n }\n _getOptions() {\n return {\n from: this.from,\n to: this.to,\n dataType: this.dataType,\n type: this.type,\n comparerType: this.comparerType,\n row: this.row,\n col: this.col,\n sheet: this.sheet,\n allowNulls: this.allowNulls,\n fromIsListValue: this.fromIsListValue,\n fromIsDateValue: this.fromIsDateValue,\n toIsDateValue: this.toIsDateValue,\n tooltipMessageTemplate: this.tooltipMessageTemplate,\n tooltipTitleTemplate: this.tooltipTitleTemplate,\n //TODO: export generated messages instead?\n messageTemplate: this.messageTemplate,\n titleTemplate: this.titleTemplate,\n showButton: this.showButton\n };\n }\n}\nconst validationExport = {};\nvalidationExport.compile = compileValidation;\nvalidationExport.validationComparers = {\n greaterThan: function(valueToCompare, from) {\n return valueToCompare > from;\n },\n lessThan: function(valueToCompare, from) {\n return valueToCompare < from;\n },\n between: function(valueToCompare, from, to) {\n return valueToCompare >= from && valueToCompare <= to;\n },\n equalTo: function(valueToCompare, from) {\n return valueToCompare === from;\n },\n notEqualTo: function(valueToCompare, from) {\n return valueToCompare !== from;\n },\n greaterThanOrEqualTo: function(valueToCompare, from) {\n return valueToCompare >= from;\n },\n lessThanOrEqualTo: function(valueToCompare, from) {\n return valueToCompare <= from;\n },\n notBetween: function(valueToCompare, from, to) {\n return valueToCompare < from || valueToCompare > to;\n },\n custom: function(valueToCompare, from) {\n return from;\n },\n list: function(valueToCompare, data) {\n return data.indexOf(valueToCompare) > -1;\n }\n};\nvalidationExport.Validation = Validation;\n\n/* eslint-disable no-nested-ternary */\n/* eslint-disable curly */\n/* eslint-disable space-infix-ops */\n/* eslint-disable indent */\n/* eslint-disable no-empty */\n/* eslint-disable no-loop-func */\n/* eslint-disable consistent-return */\n/* eslint-disable block-scoped-var */\n/* eslint-disable no-redeclare */\n/* eslint-disable no-var */\n/* eslint-disable eqeqeq */\n/* eslint-disable complexity */\n/* eslint-disable max-params */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable key-spacing */\n/* eslint-disable default-case */\n/* eslint-disable camelcase */\n/* eslint-disable brace-style */\n/* eslint-disable no-else-return */\n/* eslint-disable no-constant-condition */\n/* eslint-disable no-param-reassign */\n/* eslint-disable space-before-blocks */\n\nconst { measureText } = drawing.util;\n\nlet PROPERTIES = [\n \"color\", \"fontFamily\", \"underline\",\n \"italic\", \"bold\", \"textAlign\", \"indent\",\n \"verticalAlign\", \"background\", \"format\", \"link\", \"editor\",\n \"borderTop\", \"borderRight\", \"borderBottom\", \"borderLeft\",\n \"comment\", \"html\"\n];\nlet Range$1 = class Range {\n constructor(ref, sheet) {\n this._sheet = sheet;\n this._ref = ref;\n }\n\n clone() {\n return new Range(this._ref.clone(), this._sheet);\n }\n\n skipHiddenCells() {\n let refs = [];\n let self = this, sheet = self._sheet;\n let skipHiddenRows = sheet.isHiddenRow.bind(sheet);\n let skipHiddenCols = sheet.isHiddenColumn.bind(sheet);\n self._ref.forEach(function(ref) {\n ref = self._normalize(ref.toRangeRef());\n let tl = ref.topLeft, br = ref.bottomRight;\n let rows = partition(tl.row, br.row, skipHiddenRows);\n let cols = partition(tl.col, br.col, skipHiddenCols);\n for (let i = 0; i < rows.length; ++i) {\n for (let j = 0; j < cols.length; ++j) {\n refs.push(new RangeRef(\n new CellRef(rows[i].begin, cols[j].begin),\n new CellRef(rows[i].end, cols[j].end)\n ));\n }\n }\n });\n return sheet.range(refs.length > 1 ? new UnionRef(refs) : refs[0]);\n }\n\n _normalize(ref) {\n return this._sheet._grid.normalize(ref);\n }\n\n _set(name, value, noTrigger) {\n let self = this;\n let sheet = self._sheet;\n self._ref.forEach(function(ref) {\n let result = ref;\n let valueProp = name === \"value\" || name === \"formula\" || name === \"link\";\n\n // Set values/formulas/links only to the topLeft cell when merged\n if (valueProp && ref.topLeft) {\n let topLeftRef = new CellRef(ref.topLeft.row, ref.topLeft.col);\n\n sheet.forEachMergedCell(function(f) {\n if (f.intersects(topLeftRef)) {\n result = topLeftRef;\n }\n });\n }\n\n sheet._set(result.toRangeRef(), name, value);\n });\n if (!noTrigger) {\n sheet.triggerChange({\n recalc : name === \"formula\" || name === \"value\" || name === \"validation\",\n value : value,\n range : self,\n ref : self._ref,\n isValue : name === \"value\"\n });\n }\n return self;\n }\n\n _get(name) {\n return this._sheet._get(this._ref.toRangeRef(), name);\n }\n\n _property(name, value) {\n if (value === undefined) {\n return this._get(name);\n } else {\n return this._set(name, value);\n }\n }\n\n value(value) {\n if (value !== undefined) {\n // When value is set through the public API we must clear the\n // formula. Don't trigger change (third parameter), it'll be\n // done when setting the value below\n this._set(\"formula\", null, true);\n }\n return this._property(\"value\", value);\n }\n\n html(value) {\n return this._property(\"html\", value);\n }\n\n resize(direction) {\n let ref = this._resizedRef(direction);\n return new Range(ref, this._sheet);\n }\n\n _resizedRef(direction) {\n return this._ref.map(function(ref) {\n return ref.toRangeRef().resize(direction);\n });\n }\n\n input(value, options) {\n options = Object.assign({ arrayFormula: false }, options);\n let existingFormat = this._get(\"format\"), x;\n if (value !== undefined) {\n let tl = this._ref.toRangeRef().topLeft;\n x = calc.parse(this._sheet.name(), tl.row, tl.col, value, existingFormat);\n this._sheet.batch(function() {\n let formula = null;\n if (x.type === \"exp\") {\n formula = calc.compile(x);\n } else if (existingFormat !== \"@\") {\n let existingFormatType = existingFormat &&\n formatting.type(x.value, existingFormat);\n if (x.type === \"date\" && existingFormatType !== \"date\") {\n this.format(x.format || toExcelFormat(culture().calendar.patterns.d));\n } else if (x.type === \"percent\" && existingFormatType !== \"percent\") {\n this.format(x.value * 100 === (x.value * 100 | 0) ? \"0%\" : \"0.00%\");\n } else if (x.format) {\n if (!existingFormat || x.currency ||\n (existingFormatType === \"number\" && x.type === \"number\" &&\n x.format.length > existingFormat.length)) {\n this.format(x.format);\n }\n }\n } else if (x.type !== \"string\") {\n x.value = value;\n }\n this.formula(formula, options.arrayFormula);\n if (!formula) {\n // value() will clear the formula. Lucky for us,\n // x.value is undefined so it actually won't, but let's\n // be explicit and only set value if formula is not\n // present.\n this.value(x.value);\n }\n }.bind(this), {\n recalc : true,\n value : value,\n ref : this._ref,\n editorChange : this._sheet.isInEditMode(),\n isValue : true\n });\n\n return this;\n } else {\n value = this._get(\"value\");\n let formula = this._get(\"formula\");\n let type = existingFormat && !formula && formatting.type(value, existingFormat);\n\n if (formula) {\n // it's a Formula object which stringifies to the\n // formula as text (without the starting `=`).\n value = \"=\" + formula;\n } else OUT: {\n if (existingFormat && type === \"date\") {\n // check if we could parse back the displayed value.\n // https://github.com/telerik/kendo/issues/5335\n let t1 = formatting.text(value, existingFormat);\n x = calc.parse(null, null, null, t1, existingFormat); // it's not a formula so we don't need sheet/row/col\n let t2 = formatting.text(x.value, existingFormat);\n if (t1 === t2) {\n value = t1;\n break OUT;\n }\n }\n if (type === \"date\") {\n const intlVal = intl();\n value = intlVal.toString(calc.runtime.serialToDate(value), culture().calendar.patterns.d, intlVal.locale);\n } else if (type === \"percent\") {\n value = calc.runtime.limitPrecision(value * 100) + \"%\";\n } else if (typeof value == \"string\" &&\n (/^[=']/.test(value) ||\n (/^(?:true|false)$/i).test(value) ||\n looksLikeANumber(value))) {\n value = \"'\" + value;\n } else if (this._sheet._useCultureDecimals() &&\n typeof value == \"number\" &&\n value !== Math.floor(value)) {\n value = String(value).replace(\".\", culture().numbers.symbols.decimal);\n }\n }\n\n return value;\n }\n }\n\n enable(value) {\n if (value === undefined) {\n return !withExit(function(exit) {\n this._sheet.forEach(this._ref, function(_, __, data) {\n if (data.enable === false) {\n exit(true);\n }\n });\n }, this);\n }\n\n return this._property(\"enable\", value);\n }\n\n formula(value, arrayFormula) {\n let self = this;\n if (value === undefined) {\n let f = self._get(\"formula\");\n return f ? \"\" + f : null; // stringify if present\n }\n if (arrayFormula) {\n // when setting an array formula, we want to set it on\n // the first cell only, as it will fill the whole\n // range.\n let ref = this._ref.toRangeRef();\n value = self._sheet.range(ref.topLeft)\n ._set(\"formula\", value)\n ._get(\"formula\"); // make sure we get the compiled Formula, not a string\n\n if (value) { // could be null.\n // this will be used in FormulaContext -- it's the\n // range that the formula must populate.\n value.setArrayFormulaRange(ref);\n }\n } else {\n self._set(\"formula\", value);\n }\n return self;\n }\n\n intersectingArrayFormula() {\n let ref = this._ref.clone().simplify().setSheet(this._sheet.name());\n return withExit(function(exit) {\n this._sheet._forFormulas(function(f) {\n let r = f.arrayFormulaRange;\n if (r && (r = ref.intersect(r)) !== NULLREF) {\n exit({ formula: f, intersection: r });\n }\n });\n }, this);\n }\n\n canEditArrayFormula() {\n let x = this.intersectingArrayFormula();\n if (x) {\n // we want to allow editing only when the new range is\n // at least as big as the original range (i.e. no\n // cells removed)\n return x.formula.arrayFormulaRange.eq(x.intersection);\n }\n return true;\n }\n\n validation(value) {\n //TODO: Accept objects only?\n\n if (value === undefined) {\n let f = this._get(\"validation\");\n\n return f ? f.toJSON() : null; // stringify if present\n }\n return this._property(\"validation\", value);\n }\n\n _getValidationState() {\n let ref = this._ref.toRangeRef();\n let topLeftRow = ref.topLeft.row;\n let topLeftCol = ref.topLeft.col;\n let bottomRightRow = ref.bottomRight.row;\n let bottomRightCol = ref.bottomRight.col;\n let ci, ri;\n\n for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n let validation = this._sheet._validation(ri, ci);\n\n if (validation && validation.type === \"reject\" && validation.value === false) {\n return validation;\n }\n }\n }\n\n return false;\n }\n\n merge() {\n this._ref = this._sheet._merge(this._ref);\n return this;\n }\n\n unmerge() {\n let mergedCells = this._sheet._mergedCells;\n\n this._ref.forEach(function(ref) {\n ref.toRangeRef().intersecting(mergedCells).forEach(function(mergedRef) {\n mergedCells.splice(mergedCells.indexOf(mergedRef), 1);\n });\n });\n\n this._sheet.triggerChange({});\n\n return this;\n }\n\n select() {\n this._sheet.select(this._ref);\n\n return this;\n }\n\n values(values) {\n if (this._ref instanceof UnionRef) {\n throw new Error(\"Unsupported for multiple ranges.\");\n }\n\n if (this._ref === NULLREF) {\n if (values !== undefined) {\n throw new Error(\"Unsupported for NULLREF.\");\n } else {\n return [];\n }\n }\n\n let ref = this._ref.toRangeRef();\n let topLeftRow = ref.topLeft.row;\n let topLeftCol = ref.topLeft.col;\n let bottomRightRow = ref.bottomRight.row;\n let bottomRightCol = ref.bottomRight.col;\n let ci, ri;\n\n if (values === undefined) {\n values = new Array(ref.height());\n\n for (let vi = 0; vi < values.length; vi++) {\n values[vi] = new Array(ref.width());\n }\n\n for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n values[ri - topLeftRow][ci - topLeftCol] = this._sheet._value(ri, ci);\n }\n }\n\n return values;\n } else {\n this._sheet._set(ref, \"formula\", null);\n\n for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n let row = values[ri - topLeftRow];\n\n if (row) {\n let value = row[ci - topLeftCol];\n\n if (value !== undefined) {\n this._sheet._value(ri, ci, value);\n }\n }\n }\n }\n\n this._sheet.triggerChange({ recalc: true, ref: ref });\n\n return this;\n }\n }\n\n _properties(props, isAutofill) {\n if (this._ref instanceof UnionRef) {\n throw new Error(\"Unsupported for multiple ranges.\");\n }\n\n if (this._ref === NULLREF) {\n if (props !== undefined) {\n throw new Error(\"Unsupported for NULLREF.\");\n } else {\n return [];\n }\n }\n\n let ref = this._ref.toRangeRef();\n let topLeftRow = ref.topLeft.row;\n let topLeftCol = ref.topLeft.col;\n let bottomRightRow = ref.bottomRight.row;\n let bottomRightCol = ref.bottomRight.col;\n let ci, ri;\n let sheet = this._sheet;\n\n if (props === undefined) {\n props = new Array(ref.height());\n sheet.forEach(ref, function(row, col, data) {\n row -= topLeftRow;\n col -= topLeftCol;\n let line = props[row] || (props[row] = []);\n line[col] = data;\n });\n return props;\n } else {\n let data;\n ref = ref.clone();\n let setProp = function(propName) {\n let propValue = data[propName];\n ref.topLeft.row = ref.bottomRight.row = ri;\n ref.topLeft.col = ref.bottomRight.col = ci;\n\n if (propName === \"value\") {\n sheet._set(ref, \"formula\", null);\n }\n\n sheet._set(ref, propName, propValue);\n };\n\n let isValue = false;\n for (ci = topLeftCol; ci <= bottomRightCol; ci ++) {\n if (!isAutofill && sheet.isHiddenColumn(ci)) {\n continue;\n }\n for (ri = topLeftRow; ri <= bottomRightRow; ri ++) {\n if (!isAutofill && sheet.isHiddenRow(ri)) {\n continue;\n }\n if (isAutofill && sheet.isFilteredRow(ri)) {\n continue;\n }\n let row = props[ri - topLeftRow];\n if (row) {\n data = row[ci - topLeftCol];\n if (data) {\n const keys = Object.keys(data);\n keys.forEach(setProp);\n isValue = isValue || keys.includes(\"value\");\n }\n }\n }\n }\n sheet.triggerChange({ recalc: true, ref: this._ref, isValue: isValue });\n return this;\n }\n }\n\n clear(options) {\n options = options || {};\n let clearAll = options.clearAll || !Object.keys(options).length;\n\n let sheet = this._sheet;\n\n let reason = {\n recalc: clearAll || options.contentsOnly,\n ref: this._ref,\n isValue: true\n };\n\n sheet.batch(function() {\n\n if (reason.recalc) {\n this.formula(null);\n }\n\n if (clearAll) {\n this.validation(null);\n }\n\n if (clearAll || options.formatOnly) {\n PROPERTIES.forEach(function(x) {\n if (!(options.keepBorders && /^border/i.test(x))) {\n this[x](null);\n }\n }.bind(this));\n this.fontSize(null);\n this.wrap(null);\n this.unmerge();\n }\n\n }.bind(this), reason);\n\n return this;\n }\n\n clearContent() {\n return this.clear({ contentsOnly: true });\n }\n\n clearFormat() {\n return this.clear({ formatOnly: true });\n }\n\n isSortable() {\n return !this.cantSort();\n }\n\n cantSort() {\n if (this._ref instanceof UnionRef) {\n return { code: \"cantSortMultipleSelection\",\n message: \"Unsupported for multiple ranges.\" };\n }\n if (this._ref === NULLREF) {\n return { code: \"cantSortNullRef\",\n message: \"Unsupported for NULLREF.\" };\n }\n let mc = this._sheet._getMergedCells(this._ref.toRangeRef());\n let primary = mc.primary;\n let secondary = mc.secondary;\n let width = null, height = null;\n let cant = {};\n try {\n this._sheet.forEach(this, function(row, col) {\n let id = new CellRef(row, col).print();\n let merged = primary[id];\n if (merged) {\n if (width === null) {\n width = merged.width();\n height = merged.height();\n } else if (!(width === merged.width() && height === merged.height())) {\n throw cant;\n }\n } else if (!secondary[id] && mc.hasMerged) {\n throw cant;\n }\n });\n } catch (ex) {\n if (ex !== cant) {\n throw ex;\n }\n return {\n code: \"cantSortMixedCells\",\n message: \"Unsupported for range containing cells of different shapes.\"\n };\n }\n return false;\n }\n\n sort(spec) {\n let reason = this.cantSort();\n if (reason) {\n throw new Error(reason.message);\n }\n\n if (spec === undefined) {\n spec = { column: 0 };\n }\n\n spec = spec instanceof Array ? spec : [spec];\n\n this._sheet._sortBy(this._ref.toRangeRef(), spec.map(function(spec, index) {\n if (typeof spec === \"number\") {\n spec = { column: spec };\n }\n\n return {\n index: spec.column === undefined ? index : spec.column,\n ascending: spec.ascending === undefined ? true : spec.ascending\n };\n }));\n\n return this;\n }\n\n isFilterable() {\n return !(this._ref instanceof UnionRef);\n }\n\n filter(spec) {\n if (this._ref instanceof UnionRef) {\n throw new Error(\"Unsupported for multiple ranges.\");\n }\n\n if (spec === false) {\n this.clearFilters();\n } else {\n spec = spec === true ? [] : spec instanceof Array ? spec : [spec];\n\n this._sheet._filterBy(this._ref.toRangeRef(), spec.map(function(spec, index) {\n return {\n index: spec.column === undefined ? spec.index === undefined ? index : spec.index : spec.column,\n filter: spec.filter\n };\n }));\n }\n\n return this;\n }\n\n clearFilter(spec) {\n this._sheet.clearFilter(spec);\n }\n\n clearFilters() {\n let filter = this._sheet.filter();\n let spec = [];\n\n if (filter) {\n for (let i = 0; i < filter.columns.length; i++) {\n spec.push(filter.columns[i].index);\n }\n\n this._sheet.batch(function() {\n this.clearFilter(spec);\n this._filter = null;\n }, { layout: true, filter: true });\n }\n }\n\n hasFilter() {\n let filter = this._sheet.filter();\n return Boolean(filter);\n }\n\n leftColumn() {\n return new Range(this._ref.leftColumn(), this._sheet);\n }\n\n rightColumn() {\n return new Range(this._ref.rightColumn(), this._sheet);\n }\n\n topRow() {\n return new Range(this._ref.topRow(), this._sheet);\n }\n\n bottomRow() {\n return new Range(this._ref.bottomRow(), this._sheet);\n }\n\n column(column) {\n return new Range(this._ref.toColumn(column), this._sheet);\n }\n\n row(row) {\n return new Range(this._ref.toRow(row), this._sheet);\n }\n\n forEachRow(callback) {\n this._ref.forEachRow(function(ref) {\n callback(new Range(ref, this._sheet));\n }.bind(this));\n }\n\n forEachColumn(callback) {\n this._ref.forEachColumn(function(ref) {\n callback(new Range(ref, this._sheet));\n }.bind(this));\n }\n\n sheet() {\n return this._sheet;\n }\n\n topLeft() {\n return this._ref.toRangeRef().topLeft;\n }\n\n intersectingMerged() {\n let sheet = this._sheet;\n let mergedCells = [];\n\n sheet._mergedCells.forEach(function(ref) {\n if (ref.intersects(this._ref)) {\n mergedCells.push(ref.toString());\n }\n }.bind(this));\n\n return mergedCells;\n }\n\n getState(propertyName) {\n let topLeft = this._ref.first();\n let state = {\n ref : topLeft,\n data : [],\n origRef : this._ref,\n\n // save row heights\n rows : this._sheet._rows.getState()\n };\n let properties;\n if (!propertyName) {\n properties = ALL_PROPERTIES;\n state.mergedCells = this.intersectingMerged();\n } else if (propertyName === \"input\") {\n properties = [\"value\", \"formula\"];\n } else if (propertyName === \"border\") {\n properties = [\"borderLeft\", \"borderTop\", \"borderRight\", \"borderBottom\"];\n } else {\n properties = [propertyName];\n }\n\n let data = state.data;\n this.forEachCell(function(row, col, cell) {\n let cellState = {};\n let dr = row - topLeft.row;\n let dc = col - topLeft.col;\n if (!data[dr]) {\n data[dr] = [];\n }\n data[dr][dc] = cellState;\n\n properties.forEach(function(property) {\n let value = typeof cell[property] == \"undefined\" ? null : cell[property];\n if (value instanceof calc.runtime.Formula ||\n value instanceof validationExport.Validation) {\n value = value.deepClone();\n }\n cellState[property] = value;\n });\n });\n\n return state;\n }\n\n setState(state, clipboard) {\n let sheet = this._sheet;\n let origin = this._ref.first();\n let rowDelta = state.ref.row - origin.row;\n let colDelta = state.ref.col - origin.col;\n let internalClipboard = clipboard && !clipboard.isExternal();\n let externalClipboard = clipboard && !internalClipboard;\n\n sheet.batch(function() {\n if (state.mergedCells) {\n this.unmerge();\n }\n\n if (!clipboard) {\n // restore row heights. they won't be available\n // when this function is called from the clipboard\n // code.\n this._sheet._rows.setState(state.rows);\n }\n\n let row = origin.row;\n let hasFilter = this.hasFilter();\n state.data.forEach(function(data, dr) {\n if (hasFilter && internalClipboard && sheet.isHiddenRow(state.ref.row + dr)) {\n return;\n }\n let col = origin.col;\n data.forEach(function(cellState, dc) {\n if (hasFilter && internalClipboard && sheet.isHiddenColumn(state.ref.col + dc)) {\n return;\n }\n let range = clipboard ? sheet.range(row, col)\n : sheet.range(origin.row + dr, origin.col + dc);\n if (range.enable()) {\n for (let property in cellState) {\n if (property !== \"value\") {\n // make sure value comes last (after the loop),\n // because if we set value here and get get to\n // formula later and cellState.formula is null,\n // it'll clear the value.\n\n // when pasting, do not copy \"disabled\" state\n if (!(clipboard && property === \"enable\")) {\n range._set(property, cellState[property]);\n }\n }\n }\n if (!cellState.formula) {\n // only need to set the value if we don't have a\n // formula. Go through the lower level setter rather\n // than range.value(...), because range.value will clear\n // the formula! chicken and egg issues.\n if (externalClipboard) {\n // https://github.com/telerik/kendo-ui-core/issues/1688\n // if we have a paste from external source, we should parse the\n // value as if it were inputted. This allows to treat numbers\n // as numbers, or `=sum(a1:b2)` as formula (Google Sheets does\n // the same). A difference though is that we can't store an\n // invalid Formula and display #ERROR, like G.S. does, so in\n // case of a parse error we'll just set the value as string.\n try {\n if (cellState.value == null) {\n range._set(\"value\", null);\n } else {\n range.input(cellState.value);\n }\n } catch (ex) {\n range._set(\"value\", cellState.value);\n }\n } else {\n range._set(\"value\", cellState.value);\n }\n }\n }\n col++;\n });\n row++;\n });\n\n if (state.mergedCells) {\n state.mergedCells.forEach(function(merged) {\n merged = sheet._ref(merged).relative(rowDelta, colDelta, 3);\n sheet.range(merged).merge();\n }, this);\n }\n }.bind(this), { recalc: true, ref: this._ref });\n }\n\n _adjustRowHeight() {\n let that = this;\n let sheet = that._sheet;\n let mc = sheet._getMergedCells(that._ref.toRangeRef());\n let primary = mc.primary;\n let secondary = mc.secondary;\n\n sheet.batch(function() {\n that.forEachRow(function(rowRange) {\n let row = rowRange._ref.topLeft.row;\n let height = sheet.rowHeight(row);\n if (!height) {\n // do not adjust if hidden.\n // https://github.com/telerik/kendo-ui-core/issues/6272\n // (case 2)\n return;\n }\n rowRange.forEachCell(function(row, col, cell) {\n let id = new CellRef(row, col).print();\n if (secondary[id]) {\n return;\n }\n let merged = primary[id];\n let width;\n if (merged) {\n width = sheet._columns.sum(merged.topLeft.col,\n merged.bottomRight.col);\n } else {\n width = sheet.columnWidth(col);\n }\n let data = cell.value;\n if (cell.format && data != null) {\n data = formatting.format(data, cell.format);\n }\n let textHeight = getTextHeight(\n data, width, cell.fontFamily, cell.fontSize, cell.wrap);\n height = Math.max(height, textHeight);\n });\n sheet.rowHeight(row, height);\n });\n }, { layout: true });\n }\n\n forEachCell(callback) {\n this._ref.forEach(function(ref) {\n this._sheet.forEach(ref.toRangeRef(), callback.bind(this));\n }.bind(this));\n }\n\n hasValue() {\n let defStyle = this._sheet._defaultCellStyle;\n return withExit(function(exit) {\n this.forEachCell(function(row, col, cell) {\n // we must not consider cells that only have same values\n // as defaultCellStyle, or otherwise we will forbid\n // inserting rows/cols in an empty sheet.\n for (let key in cell) {\n let val = cell[key];\n if (val !== undefined && val !== null && val !== defStyle[key]) {\n exit(true);\n }\n }\n });\n }, this);\n }\n\n wrap(flag) {\n if (flag === undefined) {\n return Boolean(this._property(\"wrap\"));\n }\n this._property(\"wrap\", flag);\n if (flag !== null) {\n this._adjustRowHeight();\n }\n return this;\n }\n\n fontSize(size) {\n if (size === undefined) {\n return this._property(\"fontSize\");\n }\n this._property(\"fontSize\", size);\n if (size !== null) {\n this._adjustRowHeight();\n }\n return this;\n }\n\n draw(options, callback) {\n this._sheet.draw(this, options, callback);\n }\n\n insideBorders(value) {\n return this.insideVerticalBorders(value).insideHorizontalBorders(value);\n }\n\n insideVerticalBorders(value) {\n this._ref.forEach(function(ref) {\n if (ref instanceof RangeRef && ref.width() > 1) {\n ref = ref.clone();\n ref.topLeft.col++;\n this._sheet.range(ref)._set(\"vBorders\", value);\n }\n }, this);\n return this;\n }\n\n insideHorizontalBorders(value) {\n this._ref.forEach(function(ref) {\n if (ref instanceof RangeRef && ref.height() > 1) {\n ref = ref.clone();\n ref.topLeft.row++;\n this._sheet.range(ref)._set(\"hBorders\", value);\n }\n }, this);\n return this;\n }\n};\nfunction partition(begin, end, predicate) {\n while (begin <= end && predicate(begin)) {\n begin++;\n }\n if (begin > end) {\n return [];\n }\n for (let i = begin + 1; i <= end; ++i) {\n if (predicate(i)) {\n return [\n { begin: begin, end: i - 1 }\n ].concat(partition(i + 1, end, predicate));\n }\n }\n return [{ begin: begin, end: end }];\n}\nPROPERTIES.forEach(function(property) {\n Range$1.prototype[property] = function(value) {\n return this._property(property, value);\n };\n});\nfunction toExcelFormat(format) {\n return format.replace(/M/g, \"m\").replace(/'/g, '\"').replace(/tt/, \"am/pm\");\n}\nfunction looksLikeANumber(str) {\n // XXX: could do with just a regexp instead of calling parse.\n return !(/^=/.test(str)) && (/number|percent/).test(calc.parse(null, 0, 0, str).type);\n}\n\nfunction getTextHeight(text, width, fontFamily, fontSize, wrap) {\n const measureBox = document.createElement(\"div\");\n\n measureBox.style.setProperty('position', 'absolute', 'important');\n measureBox.style.setProperty('top', '-4000px', 'important');\n measureBox.style.setProperty('height', 'auto', 'important');\n measureBox.style.setProperty('padding', '1px 3px', 'important');\n measureBox.style.setProperty('box-sizing', 'border-box', 'important');\n measureBox.style.setProperty('margin', '0', 'important');\n measureBox.style.setProperty('border', '1px solid black', 'important');\n measureBox.style.setProperty('line-height', 'normal', 'important');\n measureBox.style.setProperty('visibility', 'hidden', 'important');\n measureBox.style.setProperty('white-space', 'pre-wrap');\n\n let styles = {\n \"baselineMarkerSize\" : 0,\n \"width\" : (wrap === true) ? width + \"px\" : \"auto\",\n \"font-size\" : (fontSize || 12) + \"px\",\n \"font-family\" : fontFamily || \"Arial\",\n \"white-space\" : (wrap === true) ? \"pre-wrap\" : \"pre\",\n \"overflow-wrap\" : (wrap === true) ? \"break-word\" : \"normal\",\n \"word-wrap\" : (wrap === true) ? \"break-word\" : \"normal\"\n };\n\n return measureText(text, styles, { box: measureBox, normalizeText: false }).height;\n}\n\n// --------------------------------------------------------------- autofill.js\n\nvar runtime = calc.runtime;\nvar Formula = runtime.Formula;\n\nvar ERR_INCOMPATIBLE = \"incompatibleRanges\";\nvar ERR_NO_DIRECTION = \"noFillDirection\";\n\nvar FillError = Range$1.FillError = function(msg) {\n this.code = msg;\n};\n\n// `srcRange`: the range containing data that we wish to fill. `direction`: 0↓, 1→, 2↑, 3←. So\n// when bit 0 is set we're doing horizontal filling, and when bit 1 is set we're doing it in\n// reverse order.\nRange$1.prototype._previewFillFrom = function(srcRange, direction) {\n var destRange = this, sheet = destRange._sheet;\n if (typeof srcRange == \"string\") {\n srcRange = sheet.range(srcRange);\n }\n var src = srcRange._ref.toRangeRef().clone().setSheet(sheet.name());\n var dest = destRange._ref.toRangeRef().clone().setSheet(sheet.name());\n\n if (src.intersects(dest)) {\n // the UI will send e.g. C2:C8.fillFrom(C7:D8) (intersecting ranges). this figures out\n // the actual destination range.\n if (src.eq(dest)) {\n return null; // nothing to do\n }\n dest = dest.clone();\n if (src.topLeft.eq(dest.topLeft)) {\n if (src.width() == dest.width()) {\n dest.topLeft.row += src.height();\n direction = 0;\n } else if (src.height() == dest.height()) {\n dest.topLeft.col += src.width();\n direction = 1;\n } else {\n throw new FillError(ERR_INCOMPATIBLE);\n }\n } else if (src.bottomRight.eq(dest.bottomRight)) {\n if (src.width() == dest.width()) {\n dest.bottomRight.row -= src.height();\n direction = 2;\n } else if (src.height() == dest.height()) {\n dest.bottomRight.col -= src.width();\n direction = 3;\n } else {\n throw new FillError(ERR_INCOMPATIBLE);\n }\n } else {\n throw new FillError(ERR_INCOMPATIBLE);\n }\n return sheet.range(dest)._previewFillFrom(srcRange, direction);\n }\n\n if (direction == null) {\n // try to determine based on ranges location/geometry\n if (src.topLeft.col == dest.topLeft.col) {\n // assume vertical filling\n direction = src.topLeft.row < dest.topLeft.row ? 0 : 2;\n } else if (src.topLeft.row == dest.topLeft.row) {\n direction = src.topLeft.col < dest.topLeft.col ? 1 : 3;\n } else {\n throw new FillError(ERR_NO_DIRECTION);\n }\n }\n var horizontal = direction & 1;\n var descending = direction & 2;\n if ((horizontal && src.height() != dest.height()) ||\n (!horizontal && src.width() != dest.width())) {\n throw new FillError(ERR_INCOMPATIBLE);\n }\n var data = srcRange._properties(), n;\n if (!horizontal) {\n data = transpose(data);\n n = dest.height();\n } else {\n n = dest.width();\n }\n var fill = new Array(data.length);\n var hint = null;\n for (var i = 0; i < data.length; ++i) {\n var s = data[i];\n var f = findSeries(s);\n var a = fill[i] = new Array(n);\n for (var j = 0; j < n; ++j) {\n var idx = descending ? -j - 1 : s.length + j;\n var srcIdx = descending ? s.length - (j % s.length) - 1 : (j % s.length);\n var cell = a[descending ? n - j - 1 : j] = f(idx, srcIdx);\n if (cell.value != null) {\n hint = cell.value;\n }\n }\n }\n if (!horizontal) {\n fill = transpose(fill);\n }\n return { props: fill, direction: direction, dest: destRange, hint: hint };\n};\n\nRange$1.prototype.fillFrom = function(srcRange, direction) {\n var x = this._previewFillFrom(srcRange, direction);\n x.dest._properties(x.props, true);\n return x.dest;\n};\n\n// This is essentially the FORECAST function, see ./runtime.functions.2.js.\n// It receives an array of values, and returns a function that \"predicts\"\n// the value in cell N.\nfunction linearRegression(data) {\n var N = data.length;\n var mx = (N + 1) / 2, my = data.reduce(function(a, b){\n return a + b;\n }, 0) / N;\n var s1 = 0, s2 = 0;\n for (var i = 0; i < N; i++) {\n var t1 = (i + 1) - mx, t2 = data[i] - my;\n s1 += t1 * t2;\n s2 += t1 * t1;\n }\n if (!s2) {\n return function(N){\n return data[N % data.length];\n };\n }\n var b = s1 / s2, a = my - b * mx;\n return function(N) {\n return a + b * (N + 1);\n };\n}\n\nfunction findSeries(properties) {\n function findStep(a) {\n var diff = a[1] - a[0];\n for (var i = 2; i < a.length; ++i) {\n if (a[i] - a[i-1] != diff) {\n return null;\n }\n }\n return diff;\n }\n function getData(a) {\n return a.map(function(v){\n return v.number;\n });\n }\n var series = [];\n var data = properties.map(function(x){\n return x.formula || x.value;\n });\n forEachSeries(data, function(begin, end, type, a){\n var f, values;\n if (type == \"number\") {\n values = getData(a);\n\n // This code would increase a date even if a single cell was selected. Seems it's\n // not desirable so I commented it out.\n // https://github.com/telerik/kendo-ui-core/issues/3565\n //\n // if (values.length == 1 && (begin > 0 || end < data.length ||\n // formatType(values[0], properties[begin].format) == \"date\")) {\n // values.push(values[0] + 1);\n // }\n\n f = linearRegression(values);\n } else if (type == \"string\" || type == \"formula\" || type == \"boolean\") {\n // formulas are simply copied over; the sheet will internally clone the objects\n f = function(N, i) {\n return data[i];\n };\n } else if (Array.isArray(type)) {\n if (a.length == 1) {\n f = function(N) {\n return type[(a[0].number + N) % type.length];\n };\n } else {\n // figure out the step\n var diff = findStep(getData(a));\n if (diff == null) {\n // seemingly no pattern, just repeat those strings\n f = function(N) {\n return a[(N) % a.length].value;\n };\n } else {\n f = function(N) {\n var idx = a[0].number + diff * N;\n return type[idx % type.length];\n };\n }\n }\n } else if (type != \"null\") {\n values = getData(a);\n if (values.length == 1) {\n values.push(values[0] + 1);\n }\n values = linearRegression(values);\n f = function(N, i) {\n return data[i].replace(/^(.*[\\D0]+)\\d+/, \"$1\" + values(N, i));\n };\n } else {\n f = function() { return null; };\n }\n var s = { f: f, begin: begin, end: end, len: end - begin };\n for (var i = begin; i < end; ++i) {\n series[i] = s;\n }\n });\n return function(N, i) {\n var s = series[i];\n var q = N / data.length | 0;\n var r = N % data.length;\n var n = q * s.len + r - s.begin;\n var value = s.f(n, i);\n var props = clone$1(properties[i]);\n delete props.enable;\n if (value instanceof Formula) {\n props.formula = value;\n } else {\n props.value = value;\n }\n return props;\n };\n}\n\nfunction clone$1(obj) {\n var copy = {};\n Object.keys(obj || {}).forEach(function(key){\n copy[key] = obj[key];\n });\n return copy;\n}\n\nfunction forEachSeries(data, f) {\n var prev = null, start = 0, a = [], type;\n for (var i = 0; i < data.length; ++i) {\n type = getType(data[i]);\n a.push(type);\n if (prev != null && type.type !== prev.type) {\n f(start, i, prev.type, a.slice(start, i));\n start = i;\n }\n prev = type;\n }\n f(start, i, prev.type, a.slice(start, i));\n}\n\nfunction getType(el) {\n if (typeof el == \"number\") {\n return { type: \"number\", number: el };\n }\n if (typeof el == \"string\") {\n var lst = findStringList(el);\n if (lst) {\n return lst;\n }\n var m = /^(.*\\D)(\\d+)/.exec(el);\n if (m) {\n el = el.replace(/^(.*\\D)\\d+/, \"$1-######\");\n return { type: el, match: m, number: parseFloat(m[2]) };\n }\n return { type: \"string\" };\n }\n if (typeof el == \"boolean\") {\n return { type: \"boolean\" };\n }\n if (el == null) {\n return { type: \"null\" };\n }\n if (el instanceof Formula) {\n return { type: \"formula\" };\n }\n window.console.error(el);\n throw new Error(\"Cannot fill data\");\n}\n\nfunction stringLists() {\n const calendar = culture().calendar;\n return [\n calendar.days.format.abbreviated,\n calendar.days.format.wide,\n calendar.months.format.abbreviated,\n calendar.months.format.wide\n ];\n}\n\nfunction findStringList(str) {\n var strl = str.toLowerCase();\n var lists = stringLists();\n for (var i = 0; i < lists.length; ++i) {\n var a = lists[i];\n for (var j = a.length; --j >= 0;) {\n var el = a[j].toLowerCase();\n if (el == strl) {\n return { type: a, number: j, value: str };\n }\n }\n }\n}\n\nfunction transpose(a) {\n var height = a.length, width = a[0].length;\n var t = [];\n for (var i = 0; i < width; ++i) {\n t[i] = [];\n for (var j = 0; j < height; ++j) {\n t[i][j] = a[j][i];\n }\n }\n return t;\n}\n\n/* eslint-disable no-loop-func */\n/* eslint-disable no-param-reassign */\nconst STRING$1 = 'string';\nconst FUNCTION = 'function';\n\nlet preventDefault = function() {\n this._defaultPrevented = true;\n};\n\nlet isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n};\n\nclass Observable {\n constructor() {\n this._events = {};\n }\n\n bind(eventName, handlers, one) {\n let that = this,\n idx,\n eventNames = typeof eventName === STRING$1 ? [eventName] : eventName,\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return that;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n let that = this,\n idx,\n eventNames = typeof eventName === STRING$1 ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n }\n\n trigger(eventName, e) {\n let that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n e = e || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n let that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n}\n\nclass Widget extends Observable {\n constructor(element, options) {\n super();\n\n this.element = element;\n this.events = [];\n this.options = options;\n\n // this.bind(this.events, options);\n }\n\n setOptions(options) {\n this._setEvents(options);\n deepExtend({}, this.options, options);\n }\n\n _setEvents(options) {\n let that = this,\n idx = 0,\n length = that.events.length,\n e;\n\n for (; idx < length; idx ++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n\n that.bind(that.events, options);\n }\n\n resize(force) {\n const size = this.getSize(),\n currentSize = this._size;\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n }\n\n getSize() {\n return { width: this.element.offsetWidth, height: this.element.offsetHeight };\n }\n\n destroy() {\n this.unbind();\n }\n}\n\n/* eslint-disable no-param-reassign */\n\nconst _activeElement = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n};\n\nclass SheetEditor extends Observable {\n constructor(view) {\n super();\n\n this.events = [\n \"activate\",\n \"deactivate\",\n \"change\",\n \"update\"\n ];\n\n this.view = view;\n this.formulaBar = view.formulaBar;\n this._active = false;\n\n this.barInput = view.formulaBar.formulaInput;\n this.cellInput = view.formulaInput;\n\n this.barInput.syncWith(this.cellInput);\n this.cellInput.syncWith(this.barInput);\n\n this.barInput.bind(\"keyup\", this._triggerUpdate.bind(this));\n this.cellInput.bind(\"keyup\", this._triggerUpdate.bind(this));\n\n this.barInput.bind(\"blur\", this._blur.bind(this));\n this.cellInput.bind(\"blur\", this._blur.bind(this));\n }\n\n _blur() {\n this.deactivate();\n }\n\n _triggerUpdate() {\n this.trigger(\"update\", { value: this.value() });\n }\n\n activeEditor() {\n let editor = null;\n let activeElement = _activeElement();\n\n if (this.barElement() === activeElement) {\n editor = this.barInput;\n } else if (this.cellElement() === activeElement) {\n editor = this.cellInput;\n }\n\n return editor;\n }\n\n activate(options) {\n let viewElement = this.view.element,\n viewWidth, scrollerElement, scrollbarWidth;\n\n this._active = true;\n this._rect = options.rect;\n this._range = options.range;\n\n this.cellInput.position(options.rect);\n this.cellInput.resize(options.rect);\n this.cellInput.tooltip(options.tooltip);\n this.cellInput.activeCell = this.barInput.activeCell = this._range.topLeft();\n this.cellInput.activeSheet = this.barInput.activeSheet = this._range._sheet;\n\n if (viewElement) {\n viewWidth = viewElement.offsetWidth;\n scrollerElement = viewElement.querySelector(\".k-spreadsheet-scroller\");\n scrollbarWidth = scrollerElement.offsetWidth - scrollerElement.clientWidth;\n\n this.cellInput.element.style.maxWidth = (viewWidth - scrollbarWidth - parseFloat(this.cellInput.element.style.left)) + \"px\";\n }\n\n this.trigger(\"activate\");\n\n return this;\n }\n\n deactivate(noChange) {\n let cellInput = this.cellInput;\n\n if (!this._active) {\n return;\n }\n\n this._active = false;\n\n if (!noChange && cellInput.value() !== this._value) {\n this.trigger(\"change\", {\n value: cellInput.value(),\n range: this._range\n });\n }\n\n this._rect = null;\n cellInput.hide();\n this.trigger(\"deactivate\");\n }\n\n enable(enable) {\n this.barInput.enable(enable);\n this.cellInput.enable(enable);\n }\n\n barElement() {\n return this.barInput.element;\n }\n\n cellElement() {\n return this.cellInput.element;\n }\n\n focus(inputType) {\n inputType = inputType || \"cell\";\n\n if (inputType === \"cell\") {\n this.cellInput.element.focus();\n this.cellInput.end();\n } else {\n this.barInput.focus();\n }\n }\n\n isActive() {\n return this._active;\n }\n\n isFiltered() {\n return this.barInput.popup.visible() || this.cellInput.popup.visible();\n }\n\n canInsertRef(isKeyboardAction) {\n let editor = this.activeEditor();\n return editor && editor.canInsertRef(isKeyboardAction);\n }\n\n highlightedRefs() {\n let editor = this.activeEditor();\n let refs = [];\n\n if (editor) {\n refs = editor.highlightedRefs();\n }\n\n return refs;\n }\n\n scale() {\n this.cellInput.scale();\n }\n\n toggleTooltip(rect) {\n this.cellInput.toggleTooltip(notEqual(this._rect, rect));\n }\n\n value(value, isArrayFormula) {\n if (value === undefined) {\n return this.barInput.value();\n }\n\n if (value === null) {\n value = \"\";\n }\n\n this._value = value;\n\n this.barInput.value(value);\n this.cellInput.value(value);\n\n this.barInput.element.classList.toggle(\"k-spreadsheet-array-formula\", Boolean(isArrayFormula));\n }\n\n insertNewline() {\n this.activeEditor().insertNewline();\n this.scale();\n }\n\n select() {\n this.activeEditor().select();\n }\n}\n\nfunction notEqual(oldRect, newRect) {\n return oldRect && (oldRect.top !== newRect.top || oldRect.left !== newRect.left);\n}\n\nconst ampRegExp = /&/g,\n ltRegExp = //g;\n\nconst htmlEncode = function(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n};\n\nclass Axis {\n constructor(count, value) {\n this._value = value;\n this._count = count;\n this.values = new RangeList(0, count - 1, value);\n this._hidden = new RangeList(0, count - 1, 0);\n this.scrollBarSize = scrollbar();\n this._refresh();\n }\n _resize(count) {\n if (count > this._count) {\n this.values.value(this._count, count - 1, this._value);\n this._hidden.value(this._count, count - 1, 0);\n } else if (count < this._count) {\n this.values.value(count, this._count - 1, 0);\n this._hidden.value(count, this._count - 1, 0);\n }\n this._count = count;\n this._refresh();\n }\n adjust(start, delta) {\n // adjust this axis for insert/remove rows/cols operation\n if (delta < 0) {\n // removing -- copy from start+|delta| to start\n this.values.copy(start - delta, this._count - 1, start);\n this._hidden.copy(start - delta, this._count - 1, start);\n } else {\n // adding -- copy from start to start+delta, and set\n // values for inserted things to default.\n this.values.copy(start, this._count, start + delta);\n this._hidden.copy(start, this._count, start + delta);\n this.values.value(start, start + delta - 1, this._value);\n this._hidden.value(start, start + delta - 1, 0);\n }\n this._refresh();\n }\n toJSON(field, positions) {\n let values = [];\n\n let iterator = this.values.iterator(0, this._count - 1);\n\n for (let idx = 0; idx < this._count; idx++) {\n let value = iterator.at(idx);\n let hidden = this._hidden.value(idx, idx);\n\n if (value === this._value && !hidden) {\n continue;\n }\n\n let position = positions[idx];\n\n if (position === undefined) {\n position = values.length;\n\n let item = { index: idx };\n\n item[field] = value;\n if (hidden) {\n item.hidden = hidden;\n }\n\n values.push(item);\n\n positions[idx] = position;\n }\n }\n\n return values;\n }\n fromJSON(field, values) {\n for (let idx = 0; idx < values.length; idx++) {\n let el = values[idx];\n\n let index = el.index;\n if (index === undefined) {\n index = idx;\n }\n\n // when this particular axis is hidden, the value for\n // the field (\"height\" or \"width\") will be zero, and\n // in the \"hidden\" field we'll have the actual value\n // before it was hidden.\n // https://github.com/telerik/kendo-ui-core/issues/3523\n let value = el[field];\n\n if (value === 0) {\n this._hidden.value(index, index, el.hidden || this._value);\n this.value(index, index, 0);\n } else {\n this.value(index, index, value);\n }\n }\n }\n hide(index) {\n if (!this.hidden(index)) {\n let value = this.value(index, index);\n this._hidden.value(index, index, value);\n this.value(index, index, 0);\n }\n }\n hidden(index) {\n return this._hidden.value(index, index) !== 0;\n }\n includesHidden(start, end) {\n return this._hidden.intersecting(start, end).length > 1;\n }\n nextVisible(index) {\n let end = this._count - 1, i = index;\n while (++i <= end) {\n if (!this.hidden(i)) {\n return i;\n }\n }\n return index;\n }\n nextUntil(index, pred) {\n let end = this._count - 1, i = index, advanced = false;\n while (++i <= end) {\n let val = pred(i, advanced, this.hidden(i));\n if (typeof val == 'number') {\n return val;\n } else if (val) {\n break;\n }\n advanced = true;\n }\n return i - 1;\n }\n nextPage(index, pageSize) {\n return this.index(this.sum(0, index - 1) + pageSize);\n }\n prevPage(index, pageSize) {\n return this.index(this.sum(0, index) - pageSize);\n }\n firstVisible() {\n let firstHidden = this._hidden.first();\n if (firstHidden.value === 0) {\n return 0;\n }\n return firstHidden.end + 1;\n }\n lastVisible() {\n let lastHidden = this._hidden.last();\n if (lastHidden.value === 0) {\n return this._count - 1;\n }\n return lastHidden.start - 1;\n }\n prevVisible(index) {\n let i = index;\n while (--i >= 0) {\n if (!this.hidden(i)) {\n return i;\n }\n }\n return index;\n }\n prevUntil(index, pred) {\n let i = index, advanced = false;\n while (--i >= 0) {\n let val = pred(i, advanced, this.hidden(i));\n if (typeof val == 'number') {\n return val;\n } else if (val) {\n break;\n }\n advanced = true;\n }\n return i + 1;\n }\n unhide(index) {\n if (this.hidden(index)) {\n let value = this._hidden.value(index, index);\n this._hidden.value(index, index, 0);\n this.value(index, index, value);\n }\n }\n value(start, end, value) {\n if (value !== undefined) {\n this.values.value(start, end, value);\n this._refresh();\n } else {\n return this.values.iterator(start, end).at(0);\n }\n }\n sum(start, end) {\n let values = this.values.iterator(start, end);\n let sum = 0;\n for (let idx = start; idx <= end; idx ++) {\n sum += values.at(idx);\n }\n return sum;\n }\n locate(start, end, predicate) {\n let values = this.values.iterator(start, end);\n let sum = 0;\n for (let idx = start; idx <= end; idx++) {\n sum += values.at(idx);\n let val = predicate(sum);\n if (val) {\n return idx;\n }\n }\n return null;\n }\n visible(start, end) {\n let startSegment = null;\n let endSegment = null;\n let lastPage = false;\n if (end >= this.total + this.scrollBarSize) {\n lastPage = true;\n }\n let ranges = this._pixelValues.intersecting(start, end);\n startSegment = ranges[0];\n endSegment = ranges[ranges.length - 1];\n if (!startSegment) {\n return { values: this.values.iterator(0, 0), offset: 0 };\n }\n let startOffset = start - startSegment.start;\n // eslint-disable-next-line no-bitwise\n let startIndex = ((startOffset / startSegment.value.value) >> 0) + startSegment.value.start;\n let offset = startOffset - (startIndex - startSegment.value.start) * startSegment.value.value;\n let endOffset = end - endSegment.start;\n // eslint-disable-next-line no-bitwise\n let endIndex = ((endOffset / endSegment.value.value) >> 0) + endSegment.value.start;\n if (endIndex > endSegment.value.end) {\n endIndex = endSegment.value.end;\n }\n if (lastPage) {\n offset += endSegment.value.value - (endOffset - (endIndex - endSegment.value.start) * endSegment.value.value);\n }\n offset = Math.min(-offset, 0);\n return {\n values: this.values.iterator(startIndex, endIndex),\n offset: offset\n };\n }\n index(value) {\n let index = 0;\n let iterator = this.values.iterator(0, this._count - 1);\n let current = iterator.at(0);\n while (current < value && index < this._count - 1) {\n current += iterator.at(++index);\n }\n return index;\n }\n indexVisible(value) {\n let index = this.index(value);\n if (this.hidden(index)) {\n index = this.prevVisible(index);\n }\n return index;\n }\n _refresh() {\n let current = 0;\n this._pixelValues = this.values.map(function(range) {\n let start = current;\n current += (range.end - range.start + 1) * range.value;\n let end = current - 1;\n return new ValueRange(start, end, range);\n });\n this.total = current;\n }\n getState() {\n return {\n values: this.values.getState(),\n hidden: this._hidden.getState(),\n count: this._count\n };\n }\n setState(state) {\n this.values.setState(state.values);\n this._hidden.setState(state.hidden);\n let nowCount = this._count;\n if (nowCount > state.count) {\n this._count = state.count;\n this._resize(nowCount); // calls _refresh too\n } else {\n this._refresh();\n }\n }\n}\n\nclass PaneAxis {\n constructor(axis, start, count, headerSize) {\n this._axis = axis;\n this._start = start;\n this._count = count;\n this.hasHeader = start === 0;\n this.headerSize = headerSize;\n this.defaultValue = axis._value;\n this.frozen = count > 0;\n }\n viewSize(viewSize) {\n this._viewSize = viewSize;\n }\n sum(start, end) {\n return this._axis.sum(start, end - 1);\n }\n start() {\n return this.sum(0, this._start);\n }\n size() {\n return this.sum(this._start, this._start + this._count);\n }\n index(value, offset) {\n return this._axis.index(value + (this.frozen ? 0 : offset) - this.headerSize);\n }\n indexVisible(value, offset) {\n return this._axis.indexVisible(value + (this.frozen ? 0 : offset) - this.headerSize);\n }\n // XXX: rename this method\n paneSegment() {\n let offset = this.start();\n let length;\n if (!this.hasHeader) {\n offset += this.headerSize;\n }\n if (this.frozen) {\n length = this.size();\n if (this.hasHeader) {\n length += this.headerSize;\n } else {\n length -= this.headerSize;\n }\n } else {\n length = this._viewSize - offset;\n }\n return {\n offset: offset,\n length: length\n };\n }\n visible(offset) {\n let start = this.start();\n let size;\n if (this.frozen) {\n size = this.size();\n if (!this.hasHeader) {\n size -= this.headerSize;\n }\n } else {\n size = this._viewSize - start - this.headerSize;\n start += offset;\n }\n let result = this._axis.visible(start, start + size - 1);\n if (this.frozen) {\n result.offset = 0;\n }\n result.start = start;\n if (this.hasHeader) {\n result.offset += this.headerSize;\n result.start -= this.headerSize;\n }\n return result;\n }\n contains(start, end) {\n if (this.frozen) {\n if (start > this._start + this._count) {\n return false;\n }\n if (end < this._start) {\n return false;\n }\n return true;\n }\n return end >= this._start;\n }\n}\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable camelcase */\n\nclass Rectangle {\n constructor(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n this.right = this.left + this.width;\n this.bottom = this.top + this.height;\n }\n\n offset(left, top) {\n return new Rectangle(this.left + left, this.top + top, this.width, this.height);\n }\n\n resize(width, height) {\n return new Rectangle(this.left, this.top, this.width + width, this.height + height);\n }\n\n intersects(x, y) {\n if (x instanceof Rectangle) {\n return this.intersectsRect(x);\n }\n return this.left < x && x < this.left + this.width &&\n this.top < y && y < this.top + this.height;\n }\n\n intersectsRect(b) {\n let a = this;\n return a.left <= b.right\n && b.left <= a.right\n && a.top <= b.bottom\n && b.top <= a.bottom;\n }\n\n toDiv(className) {\n return dom.element(\"div\", {\n className: className,\n style: {\n width: this.width + \"px\",\n height: this.height + \"px\",\n top: this.top + \"px\",\n left: this.left + \"px\"\n }\n });\n }\n}\n\nclass Grid {\n constructor(rows, columns, rowCount, columnCount, headerHeight, headerWidth) {\n this.rowCount = rowCount;\n this.columnCount = columnCount;\n this._columns = columns;\n this._rows = rows;\n this._headerHeight = headerHeight;\n this._headerWidth = headerWidth;\n }\n\n _resize(new_rows, new_cols) {\n this.rowCount = new_rows;\n this.columnCount = new_cols;\n }\n\n isAxis(ref) {\n ref = ref.toRangeRef();\n let topLeft = ref.topLeft;\n let bottomRight = ref.bottomRight;\n return (topLeft.row === 0 && bottomRight.row === this.rowCount - 1) || (topLeft.col === 0 && bottomRight.col === this.columnCount - 1);\n }\n\n width(start, end) {\n return this._columns.sum(start, end);\n }\n\n height(start, end) {\n return this._rows.sum(start, end);\n }\n\n totalHeight() {\n return this._rows.total + this._headerHeight;\n }\n\n totalWidth() {\n return this._columns.total + this._headerWidth;\n }\n\n index(row, column) {\n return column * this.rowCount + row;\n }\n\n cellRef(index) {\n return new CellRef(index % this.rowCount, (index / this.rowCount) >> 0);\n }\n\n rowRef(row) {\n return new RangeRef(new CellRef(row, 0), new CellRef(row, this.columnCount - 1));\n }\n\n colRef(col) {\n return new RangeRef(new CellRef(0, col), new CellRef(this.rowCount - 1, col));\n }\n\n cellRefIndex(ref) {\n return this.index(ref.row, ref.col);\n }\n\n normalize(ref) {\n if (ref instanceof RangeRef) {\n return new RangeRef(\n this.normalize(ref.topLeft),\n this.normalize(ref.bottomRight)\n ).setSheet(ref.sheet, ref.hasSheet());\n }\n\n if (ref instanceof UnionRef) {\n return ref.map(function(ref) {\n return this.normalize(ref);\n }, this);\n }\n\n if (ref instanceof CellRef) {\n ref = ref.clone();\n ref.col = Math.max(0, Math.min(this.columnCount - 1, ref.col));\n ref.row = Math.max(0, Math.min(this.rowCount - 1, ref.row));\n }\n\n return ref;\n }\n\n rectangle(ref) {\n let topLeft = this.normalize(ref.topLeft);\n let bottomRight = this.normalize(ref.bottomRight);\n return new Rectangle(\n this.width(0, topLeft.col - 1),\n this.height(0, topLeft.row - 1),\n this.width(topLeft.col, bottomRight.col),\n this.height(topLeft.row, bottomRight.row)\n );\n }\n\n pane(options) {\n return new PaneGrid(\n new PaneAxis(this._rows, options.row, options.rowCount, this._headerHeight),\n new PaneAxis(this._columns, options.column, options.columnCount, this._headerWidth),\n this\n );\n }\n\n rangeDimensions(rangeRef) {\n return {\n rows: this._rows.values.iterator(rangeRef.topLeft.row, rangeRef.bottomRight.row),\n columns: this._columns.values.iterator(rangeRef.topLeft.col, rangeRef.bottomRight.col)\n };\n }\n\n forEach(ref, callback) {\n let topLeft = this.normalize(ref.topLeft);\n let bottomRight = this.normalize(ref.bottomRight);\n\n for (let ci = topLeft.col; ci <= bottomRight.col; ci ++) {\n for (let ri = topLeft.row; ri <= bottomRight.row; ri ++) {\n callback(new CellRef(ri, ci));\n }\n }\n }\n\n trim(ref, property) {\n let topLeft = this.normalize(ref.topLeft);\n let bottomRight = this.normalize(ref.bottomRight);\n let bottomRightRow = topLeft.row;\n let bottomRightCol = topLeft.col;\n\n for (let ci = topLeft.col; ci <= bottomRight.col; ci ++) {\n let start = this.index(topLeft.row, ci);\n let end = this.index(bottomRight.row, ci);\n let values = property.tree.intersecting(start, end);\n if (values.length) {\n let cell = this.cellRef(values[values.length - 1].end);\n bottomRightRow = Math.max(bottomRightRow, cell.row);\n bottomRightCol = ci;\n }\n }\n return new RangeRef(ref.topLeft, new CellRef(Math.min(bottomRightRow, ref.bottomRight.row), bottomRightCol));\n }\n}\n\nclass PaneGrid {\n constructor(rows, columns, grid) {\n this.rows = rows;\n this.columns = columns;\n this._grid = grid;\n\n this.headerHeight = rows.headerSize;\n this.headerWidth = columns.headerSize;\n this.hasRowHeader = columns.hasHeader;\n this.hasColumnHeader = rows.hasHeader;\n }\n\n refresh(width, height) {\n this.columns.viewSize(width);\n this.rows.viewSize(height);\n\n let x = this.columns.paneSegment();\n let y = this.rows.paneSegment();\n\n this.left = x.offset;\n this.top = y.offset;\n this.right = x.offset + x.length;\n this.bottom = y.offset + y.length;\n\n this.style = {\n top: y.offset + \"px\",\n left: x.offset + \"px\",\n height: y.length + \"px\",\n width: x.length + \"px\"\n };\n }\n\n view(left, top) {\n let rows = this.rows.visible(top);\n let columns = this.columns.visible(left);\n\n return {\n rows: rows,\n columns: columns,\n\n rowOffset: rows.offset,\n columnOffset: columns.offset,\n\n mergedCellLeft: columns.start,\n mergedCellTop: rows.start,\n\n ref: new RangeRef(\n new CellRef(rows.values.start, columns.values.start),\n new CellRef(rows.values.end, columns.values.end)\n )\n };\n }\n\n contains(ref) {\n return this.rows.contains(ref.topLeft.row, ref.bottomRight.row) &&\n this.columns.contains(ref.topLeft.col, ref.bottomRight.col);\n }\n\n index(row, column) {\n return this._grid.index(row, column);\n }\n\n boundingRectangle(ref) {\n return this._grid.rectangle(ref);\n }\n\n cellRefIndex(ref) {\n return this._grid.cellRefIndex(ref);\n }\n\n scrollBoundaries(cell) {\n let position = this.boundingRectangle(cell);\n\n let boundaries = {\n top: Math.max(0, position.top - this.top + (this.hasColumnHeader ? 0 : this.headerHeight)),\n left: Math.max(0, position.left - this.left + (this.hasRowHeader ? 0 : this.headerWidth)),\n right: position.right - this.columns._viewSize + this.headerWidth,\n bottom: position.bottom - this.rows._viewSize + this.headerHeight\n };\n\n let widthCompensation = this.columns.defaultValue / 2;\n let heightCompensation = this.rows.defaultValue / 2;\n\n boundaries.scrollTop = boundaries.top - heightCompensation;\n boundaries.scrollBottom = boundaries.bottom + heightCompensation;\n\n boundaries.scrollLeft = boundaries.left - widthCompensation;\n boundaries.scrollRight = boundaries.right + widthCompensation;\n return boundaries;\n }\n}\n\nclass Sorter {\n constructor(grid, lists) {\n this._grid = grid;\n this._lists = lists;\n }\n\n indices(rangeRef, list, ascending, indices) {\n let comparer = Sorter.ascendingComparer;\n\n if (ascending === false) {\n comparer = Sorter.descendingComparer;\n }\n\n return list.sortedIndices(this._grid.cellRefIndex(rangeRef.topLeft),\n this._grid.cellRefIndex(rangeRef.bottomRight), comparer, indices);\n }\n\n sortBy(ref, column, list, ascending, indices) {\n let sortedIndices = this.indices(ref.toColumn(column), list, ascending, indices);\n\n for (let ci = ref.topLeft.col; ci <= ref.bottomRight.col; ci++) {\n let start = this._grid.index(ref.topLeft.row, ci);\n let end = this._grid.index(ref.bottomRight.row, ci);\n\n for (let li = 0; li < this._lists.length; li++) {\n if (start < this._lists[li].lastRangeStart()) {\n this._lists[li].sort(start, end, sortedIndices);\n }\n }\n }\n\n return sortedIndices;\n }\n}\n\nSorter.ascendingComparer = function(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n\n if (a === null) {\n return 1;\n }\n\n if (b === null) {\n return -1;\n }\n\n let typeA = typeof a;\n let typeB = typeof b;\n\n if (typeA === 'number') {\n if (typeB === 'number') {\n return a - b;\n }\n return -1;\n }\n\n if (typeA === 'string') {\n switch (typeB) {\n case 'number':\n return 1;\n case 'string':\n return a.localeCompare(b);\n default:\n return -1;\n }\n }\n\n if (typeA === 'boolean') {\n switch (typeB) {\n case 'number':\n return 1;\n case 'string':\n return 1;\n case 'boolean':\n return a - b;\n default:\n return -1;\n }\n }\n\n if (a instanceof CalcError) {\n if (b instanceof CalcError) {\n return 0;\n }\n return 1;\n }\n\n throw new Error('Cannot compare ' + a + ' and ' + b);\n};\n\nSorter.descendingComparer = function(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n\n if (a === null) {\n return 1;\n }\n\n if (b === null) {\n return -1;\n }\n\n return Sorter.ascendingComparer(b, a);\n};\n\n/* eslint-disable no-constant-condition */\n/* eslint-disable key-spacing */\n/* eslint-disable no-param-reassign */\n\n\nclass AxisManager {\n constructor(sheet) {\n this._sheet = sheet;\n }\n\n forEachSelectedColumn(callback) {\n let sheet = this._sheet;\n\n sheet.batch(function() {\n sheet.select().forEachColumnIndex(function(index, i) {\n callback(sheet, index, i);\n });\n }, { layout: true, recalc: true });\n }\n\n forEachSelectedRow(callback) {\n let sheet = this._sheet;\n\n sheet.batch(function() {\n sheet.select().forEachRowIndex(function(index, i) {\n callback(sheet, index, i);\n });\n }, { layout: true, recalc: true });\n }\n\n includesHiddenColumns(ref) {\n return this._sheet._grid._columns.includesHidden(ref.topLeft.col, ref.bottomRight.col);\n }\n\n includesHiddenRows(ref) {\n return this._sheet._grid._rows.includesHidden(ref.topLeft.row, ref.bottomRight.row);\n }\n\n selectionIncludesHiddenColumns() {\n return this.includesHiddenColumns(this._sheet.select());\n }\n\n selectionIncludesHiddenRows() {\n return this.includesHiddenRows(this._sheet.select());\n }\n\n deleteSelectedColumns() {\n let indexes = [], delta = 0;\n this.forEachSelectedColumn(function(sheet, index) {\n index -= delta;\n if (sheet.isHiddenColumn(index)) {\n return;\n }\n delta++;\n let formulas = [];\n indexes.unshift({\n index : index,\n formulas : formulas,\n width : sheet.columnWidth(index)\n });\n sheet._saveModifiedFormulas(formulas, function() {\n sheet.deleteColumn(index);\n });\n });\n return indexes;\n }\n\n deleteSelectedRows() {\n let indexes = [], delta = 0;\n this.forEachSelectedRow(function(sheet, index) {\n index -= delta;\n if (sheet.isHiddenRow(index)) {\n return;\n }\n delta++;\n let formulas = [];\n indexes.unshift({\n index : index,\n formulas : formulas,\n height : sheet.rowHeight(index)\n });\n sheet._saveModifiedFormulas(formulas, function() {\n sheet.deleteRow(index);\n });\n });\n return indexes;\n }\n\n hideSelectedColumns() {\n this.forEachSelectedColumn(function(sheet, index) {\n sheet.hideColumn(index);\n });\n let sheet = this._sheet;\n let ref = sheet.select().toRangeRef();\n let left = ref.topLeft.col;\n let right = ref.bottomRight.col;\n let sel = null;\n while (true) {\n let hasRight = right < sheet._columns._count;\n let hasLeft = left >= 0;\n if (!hasLeft && !hasRight) {\n break;\n }\n if (hasRight && !sheet.isHiddenColumn(right)) {\n sel = right;\n break;\n }\n if (hasLeft && !sheet.isHiddenColumn(left)) {\n sel = left;\n break;\n }\n left--;\n right++;\n }\n if (sel !== null) {\n ref = new RangeRef(\n new CellRef(0, sel),\n new CellRef(sheet._rows._count - 1, sel)\n );\n sheet.range(ref).select();\n }\n }\n\n hideSelectedRows() {\n this.forEachSelectedRow(function(sheet, index) {\n sheet.hideRow(index);\n });\n let sheet = this._sheet;\n let ref = sheet.select().toRangeRef();\n let top = ref.topLeft.row;\n let bottom = ref.bottomRight.row;\n let sel = null;\n while (true) {\n let hasBottom = bottom < sheet._rows._count;\n let hasTop = top >= 0;\n if (!hasTop && !hasBottom) {\n break;\n }\n if (hasBottom && !sheet.isHiddenRow(bottom)) {\n sel = bottom;\n break;\n }\n if (hasTop && !sheet.isHiddenRow(top)) {\n sel = top;\n break;\n }\n top--;\n bottom++;\n }\n if (sel !== null) {\n ref = new RangeRef(\n new CellRef(sel, 0),\n new CellRef(sel, sheet._columns._count - 1)\n );\n sheet.range(ref).select();\n }\n }\n\n unhideSelectedColumns() {\n this.forEachSelectedColumn(function(sheet, index) {\n sheet.unhideColumn(index);\n });\n }\n\n unhideSelectedRows() {\n this.forEachSelectedRow(function(sheet, index) {\n sheet.unhideRow(index);\n });\n }\n\n addColumnLeft() {\n let sheet = this._sheet;\n let base, count = 0;\n sheet.batch(function() {\n sheet.select().forEachColumnIndex(function(index) {\n if (!base) {\n base = index;\n }\n sheet.insertColumn(base);\n ++count;\n });\n }, { recalc: true, layout: true });\n return { base: base, count: count };\n }\n\n addColumnRight() {\n let sheet = this._sheet;\n let base, count = 0;\n sheet.batch(function() {\n sheet.select().forEachColumnIndex(function(index) {\n base = index + 1;\n ++count;\n });\n for (let i = 0; i < count; ++i) {\n sheet.insertColumn(base);\n }\n }, { recalc: true, layout: true });\n return { base: base, count: count };\n }\n\n addRowAbove() {\n let sheet = this._sheet;\n let base, count = 0;\n let selectedRows = sheet.select();\n\n sheet.batch(function() {\n selectedRows.forEachRowIndex(function(index) {\n if (!base) {\n base = index;\n }\n sheet.insertRow(base);\n ++count;\n });\n }, { recalc: true, layout: true });\n\n return { base: base, count: count };\n }\n\n addRowBelow() {\n let sheet = this._sheet;\n let base, count = 0;\n\n sheet.batch(function() {\n sheet.select().forEachRowIndex(function(index) {\n base = index + 1;\n ++count;\n });\n for (let i = 0; i < count; ++i) {\n sheet.insertRow(base);\n }\n }, { recalc: true, layout: true });\n\n return { base: base, count: count };\n }\n}\n\n/* eslint-disable no-param-reassign */\n\nclass AutoFillCalculator {\n constructor(grid) {\n this._grid = grid;\n }\n\n rectIsVertical(start, end, x, y) {\n let startRect = this._grid.rectangle(start.toRangeRef());\n let endRect = this._grid.rectangle(end.toRangeRef());\n return Math.abs(endRect[y] - startRect[y]) > Math.abs(startRect[x] - endRect[x]);\n }\n\n autoFillDest(selection, cursor) {\n let topLeft = selection.topLeft;\n let bottomRight = selection.bottomRight;\n\n let quadrant;\n let lower = cursor.row >= topLeft.row;\n let further = cursor.col >= topLeft.col;\n\n if (lower) {\n quadrant = further ? 4 : 3;\n } else {\n quadrant = further ? 2 : 1;\n }\n\n let pivot, opposite, cornerResult, expanding;\n\n if (quadrant === 4) {\n pivot = topLeft;\n opposite = bottomRight;\n\n expanding = cursor.row > opposite.row || cursor.col > opposite.col;\n\n if (expanding) {\n cursor = new CellRef(Math.max(cursor.row, opposite.row), Math.max(cursor.col, opposite.col));\n }\n\n if (this.rectIsVertical(opposite, cursor, 'right', 'bottom')) { // vertical\n cornerResult = new CellRef(cursor.row, opposite.col);\n } else {\n cornerResult = new CellRef(opposite.row, cursor.col);\n }\n } else if (quadrant === 3) {\n let bottomLeft = new CellRef(topLeft.col, bottomRight.row);\n\n if (cursor.row > bottomRight.row && this.rectIsVertical(bottomLeft, cursor, 'left', 'bottom')) { // vertical\n pivot = topLeft;\n cornerResult = new CellRef(cursor.row, bottomRight.col);\n } else {\n pivot = bottomRight;\n cornerResult = new CellRef(topLeft.row, cursor.col);\n }\n } else if (quadrant === 2) {\n let topRight = new CellRef(topLeft.row, bottomRight.col);\n\n if (cursor.col > bottomRight.col && !this.rectIsVertical(topRight, cursor, 'right', 'top')) { // horizontal\n pivot = topLeft;\n cornerResult = new CellRef(bottomRight.row, cursor.col);\n } else {\n pivot = bottomRight;\n cornerResult = new CellRef(cursor.row, topLeft.col);\n }\n } else {\n pivot = bottomRight;\n if (this.rectIsVertical(topLeft, cursor, 'left', 'top')) { // horizontal\n cornerResult = new CellRef(cursor.row, topLeft.col);\n } else {\n cornerResult = new CellRef(topLeft.row, cursor.col);\n }\n }\n\n return this._grid.normalize(new RangeRef(pivot, cornerResult));\n }\n}\n\n/* eslint-disable max-params */\n/* eslint-disable no-empty */\n/* eslint-disable no-loop-func */\n/* eslint-disable consistent-return */\n/* eslint-disable block-scoped-var */\n/* eslint-disable no-redeclare */\n/* eslint-disable no-var */\n/* eslint-disable eqeqeq */\n/* eslint-disable complexity */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable brace-style */\n/* eslint-disable key-spacing */\n/* eslint-disable no-else-return */\n/* eslint-disable default-case */\n/* eslint-disable no-param-reassign */\n\n\nclass EdgeNavigator {\n constructor(field, axis, rangeGetter, union) {\n this.rangeGetter = rangeGetter;\n\n this.prevLeft = function(index) {\n var current = union(this.range(index));\n var range = this.range(axis.prevVisible(current.topLeft[field]));\n return union(range).topLeft[field];\n };\n\n this.nextRight = function(index) {\n var current = union(this.range(index));\n var range = this.range(axis.nextVisible(current.bottomRight[field]));\n return union(range).bottomRight[field];\n };\n\n // these two don't look like the other ones, as they \"shrink\"\n this.nextLeft = function(index) {\n var range = union(this.range(index));\n return axis.nextVisible(range.bottomRight[field]);\n };\n\n this.prevRight = function(index) {\n var range = union(this.range(index));\n return axis.prevVisible(range.topLeft[field]);\n };\n }\n\n boundary(top, bottom) {\n this.top = top;\n this.bottom = bottom;\n }\n\n range(index) {\n return this.rangeGetter(index, this.top, this.bottom);\n }\n}\n\nclass SheetNavigator {\n constructor(sheet) {\n this._sheet = sheet;\n this.autoFillCalculator = new AutoFillCalculator(sheet._grid);\n\n this.colEdge = new EdgeNavigator(\"col\", this._sheet._grid._columns, this.columnRange.bind(this), this.union.bind(this));\n this.rowEdge = new EdgeNavigator(\"row\", this._sheet._grid._rows, this.rowRange.bind(this), this.union.bind(this));\n }\n\n height(height) {\n this._viewPortHeight = height;\n }\n\n union(ref) {\n return this._sheet.unionWithMerged(ref);\n }\n\n columnRange(col, topRow, bottomRow) {\n return this._sheet._ref(topRow, col, bottomRow - topRow, 1);\n }\n\n rowRange(row, leftCol, rightCol) {\n return this._sheet._ref(row, leftCol, 1, rightCol - leftCol);\n }\n\n selectionIncludesMergedCells() {\n return this._sheet.select().contains(this._sheet._mergedCells);\n }\n\n setSelectionValue(value) {\n var selection = this._sheet.selection();\n\n setTimeout(function() {\n selection.value(value());\n });\n }\n\n selectAll() {\n this._sheet.select(this._sheet._sheetRef);\n }\n\n select(ref, mode, addToExisting) {\n ref = this.refForMode(ref, mode);\n\n if (addToExisting) {\n ref = this._sheet.select().concat(ref);\n }\n\n this._sheet.select(ref);\n }\n\n refForMode(ref, mode) {\n var grid = this._sheet._grid;\n\n switch (mode) {\n case \"range\":\n ref = grid.normalize(ref);\n break;\n case \"row\":\n ref = grid.rowRef(ref.row);\n break;\n case \"column\":\n ref = grid.colRef(ref.col);\n break;\n case \"sheet\":\n ref = this._sheet._sheetRef;\n break;\n }\n\n return ref;\n }\n\n startSelection(ref, mode, addToExisting, shiftKey, view) {\n if (mode === \"autofill\") {\n this._sheet.startAutoFill();\n } else if (shiftKey && mode === \"range\") {\n var range = new RangeRef(this._sheet.activeCell().first(), ref);\n this._sheet.select(range, false, false);\n this._sheet.startSelection(view);\n } else {\n this._sheet.startSelection(view);\n this.select(ref, mode, addToExisting);\n }\n }\n\n completeSelection() {\n this._sheet.completeSelection();\n }\n\n selectForContextMenu(ref, mode) {\n var sheet = this._sheet;\n sheet._activeDrawing = null;\n if (!sheet.select().contains(this.refForMode(ref, mode))) {\n this.select(ref, mode);\n }\n }\n\n selectDrawingForContextMenu(drawing) {\n var sheet = this._sheet;\n sheet._activeDrawing = drawing;\n sheet.triggerChange({ selection: true });\n }\n\n modifySelection(action) {\n var direction = this.determineDirection(action);\n\n var sheet = this._sheet;\n var viewPortHeight = this._viewPortHeight;\n var rows = sheet._grid._rows;\n var columns = sheet._grid._columns;\n\n var originalSelection = sheet.currentOriginalSelectionRange();\n var selection = sheet.select().toRangeRef();\n var activeCell = sheet.activeCell();\n\n var topLeft = originalSelection.topLeft.clone();\n var bottomRight = originalSelection.bottomRight.clone();\n var bottomLeft = new CellRef(bottomRight.row, topLeft.col);\n\n var scrollInto;\n\n this.colEdge.boundary(selection.topLeft.row, selection.bottomRight.row);\n this.rowEdge.boundary(selection.topLeft.col, selection.bottomRight.col);\n\n switch (direction) {\n case \"expand-left\": // <| |\n topLeft.col = this.colEdge.prevLeft(topLeft.col);\n scrollInto = topLeft;\n break;\n case \"shrink-right\": // |>|\n topLeft.col = this.colEdge.nextLeft(topLeft.col);\n scrollInto = topLeft;\n break;\n case \"expand-right\": // | |>\n bottomRight.col = this.colEdge.nextRight(bottomRight.col);\n scrollInto = bottomRight;\n break;\n case \"shrink-left\": // |<|\n bottomRight.col = this.colEdge.prevRight(bottomRight.col);\n scrollInto = bottomRight;\n break;\n\n // four actions below mirror the upper ones, on the vertical axis\n case \"expand-up\":\n topLeft.row = this.rowEdge.prevLeft(topLeft.row);\n scrollInto = topLeft;\n break;\n case \"shrink-down\":\n topLeft.row = this.rowEdge.nextLeft(topLeft.row);\n scrollInto = topLeft;\n break;\n case \"expand-down\":\n bottomRight.row = this.rowEdge.nextRight(bottomRight.row);\n scrollInto = bottomRight;\n break;\n case \"shrink-up\":\n bottomRight.row = this.rowEdge.prevRight(bottomRight.row);\n scrollInto = bottomRight;\n break;\n\n // pageup/down - may need improvement\n case \"expand-page-up\":\n topLeft.row = rows.prevPage(topLeft.row, viewPortHeight);\n break;\n case \"shrink-page-up\":\n bottomRight.row = rows.prevPage(bottomRight.row, viewPortHeight);\n break;\n case \"expand-page-down\":\n bottomRight.row = rows.nextPage(bottomRight.row, viewPortHeight);\n break;\n case \"shrink-page-down\":\n topLeft.row = rows.nextPage(topLeft.row, viewPortHeight);\n break;\n\n case \"first-col\":\n topLeft.col = columns.firstVisible();\n bottomRight.col = activeCell.bottomRight.col;\n scrollInto = topLeft;\n break;\n case \"last-col\":\n bottomRight.col = columns.lastVisible();\n topLeft.col = activeCell.topLeft.col;\n scrollInto = bottomRight;\n break;\n case \"first-row\":\n topLeft.row = rows.firstVisible();\n bottomRight.row = activeCell.bottomRight.row;\n scrollInto = topLeft;\n break;\n case \"last-row\":\n bottomRight.row = rows.lastVisible();\n topLeft.row = activeCell.topLeft.row;\n scrollInto = bottomRight;\n break;\n case \"last\":\n bottomRight.row = rows.lastVisible();\n bottomRight.col = columns.lastVisible();\n topLeft = activeCell.topLeft;\n scrollInto = bottomRight;\n break;\n case \"first\":\n topLeft.row = rows.firstVisible();\n topLeft.col = columns.firstVisible();\n bottomRight = activeCell.bottomRight;\n scrollInto = topLeft;\n break;\n\n case \"expand-word-right\":\n bottomRight.col = columns.nextUntil(bottomRight.col, makeWordMovement(sheet, bottomRight, true));\n scrollInto = bottomRight;\n break;\n case \"shrink-word-right\":\n topLeft.col = columns.nextUntil(bottomLeft.col, makeWordMovement(sheet, bottomLeft, true));\n scrollInto = topLeft;\n break;\n case \"expand-word-left\":\n topLeft.col = columns.prevUntil(bottomLeft.col, makeWordMovement(sheet, bottomLeft, true));\n scrollInto = topLeft;\n break;\n case \"shrink-word-left\":\n bottomRight.col = columns.prevUntil(bottomRight.col, makeWordMovement(sheet, bottomRight, true));\n scrollInto = bottomRight;\n break;\n case \"expand-word-up\":\n topLeft.row = rows.prevUntil(topLeft.row, makeWordMovement(sheet, topLeft, false));\n scrollInto = topLeft;\n break;\n case \"shrink-word-up\":\n bottomRight.row = rows.prevUntil(bottomRight.row, makeWordMovement(sheet, bottomRight, false));\n scrollInto = bottomRight;\n break;\n case \"expand-word-down\":\n bottomRight.row = rows.nextUntil(bottomRight.row, makeWordMovement(sheet, bottomRight, false));\n scrollInto = bottomRight;\n break;\n case \"shrink-word-down\":\n topLeft.row = rows.nextUntil(topLeft.row, makeWordMovement(sheet, topLeft, false));\n scrollInto = topLeft;\n break;\n }\n\n var newSelection = new RangeRef(topLeft, bottomRight);\n\n if (!this.union(newSelection).intersects(activeCell)) {\n // throw new Error(newSelection.print() + \" does not contain \" + activeCell.print());\n this.modifySelection(direction.replace(\"shrink\", \"expand\"));\n return;\n }\n\n if (scrollInto) {\n sheet.focus(scrollInto);\n }\n\n this.updateCurrentSelectionRange(newSelection);\n }\n\n moveActiveCell(direction) {\n var sheet = this._sheet;\n var activeCell = sheet.activeCell();\n var topLeft = activeCell.topLeft;\n var bottomRight = activeCell.bottomRight;\n\n var cell = sheet.originalActiveCell();\n var rows = sheet._grid._rows;\n var columns = sheet._grid._columns;\n\n var row = cell.row;\n var column = cell.col;\n\n switch (direction) {\n case \"left\":\n column = columns.prevVisible(topLeft.col);\n break;\n case \"up\":\n row = rows.prevVisible(topLeft.row);\n break;\n case \"right\":\n column = columns.nextVisible(bottomRight.col);\n break;\n case \"down\":\n row = rows.nextVisible(bottomRight.row);\n break;\n case \"first-col\":\n column = columns.firstVisible();\n break;\n case \"last-col\":\n column = columns.lastVisible();\n break;\n case \"first-row\":\n row = rows.firstVisible();\n break;\n case \"last-row\":\n row = rows.lastVisible();\n break;\n case \"last\":\n row = rows.lastVisible();\n column = columns.lastVisible();\n break;\n case \"first\":\n row = rows.firstVisible();\n column = columns.firstVisible();\n break;\n case \"next-page\":\n row = rows.nextPage(bottomRight.row, this._viewPortHeight);\n break;\n case \"prev-page\":\n row = rows.prevPage(bottomRight.row, this._viewPortHeight);\n break;\n\n case \"word-right\":\n column = columns.nextUntil(column, makeWordMovement(sheet, bottomRight, true));\n break;\n case \"word-left\":\n column = columns.prevUntil(column, makeWordMovement(sheet, bottomRight, true));\n break;\n case \"word-up\":\n row = rows.prevUntil(row, makeWordMovement(sheet, bottomRight, false));\n break;\n case \"word-down\":\n row = rows.nextUntil(row, makeWordMovement(sheet, bottomRight, false));\n break;\n }\n\n sheet.select(new CellRef(row, column));\n }\n\n navigateInSelection(direction) {\n var sheet = this._sheet;\n var activeCell = sheet.activeCell();\n var topLeft = activeCell.topLeft;\n\n var cell = sheet.originalActiveCell();\n var rows = sheet._grid._rows;\n var columns = sheet._grid._columns;\n\n var row = cell.row;\n var column = cell.col;\n\n var isFirstCell = false;\n var isLastCell = false;\n\n var selTopLeft, selBottomRight;\n\n var topLeftCol = topLeft.col;\n var topLeftRow = topLeft.row;\n var tmp;\n\n function setSelection(sel) {\n selTopLeft = sel.topLeft;\n selBottomRight = sel.bottomRight;\n }\n\n setSelection(sheet.currentNavigationRange());\n\n var done = false;\n var navigatedAway = false;\n\n while (!done && !navigatedAway) {\n var current = new CellRef(row, column);\n var isSingleCellSelected = sheet.singleCellSelection();\n\n if (isSingleCellSelected) {\n isFirstCell = selTopLeft.eq(current) && sheet._sheetRef.topLeft.eq(current);\n isLastCell = selBottomRight.eq(current) && sheet._sheetRef.bottomRight.eq(current);\n\n if (!isFirstCell) {\n isFirstCell = columns.firstVisible() === column && rows.firstVisible() === row;\n }\n\n if (!isLastCell) {\n isLastCell = columns.lastVisible() === column && rows.lastVisible() === row;\n }\n }\n\n switch (direction) {\n case \"next\":\n if (isLastCell) {\n navigatedAway = true;\n } else if (selBottomRight.eq(current)) {\n setSelection(sheet.nextNavigationRange());\n row = selTopLeft.row;\n column = selTopLeft.col;\n } else {\n column = columns.nextVisible(topLeftCol);\n if (column === topLeftCol || column > selBottomRight.col) {\n column = selTopLeft.col;\n tmp = rows.nextVisible(row);\n if (tmp === row || tmp > selBottomRight.row) {\n row = selTopLeft.row;\n } else {\n row = tmp;\n }\n }\n }\n break;\n case \"previous\":\n if (isFirstCell) {\n navigatedAway = true;\n this._sheet._workbook._view.element.querySelector('.k-spreadsheet-name-editor .k-input-inner').focus();\n } else if (selTopLeft.eq(current)) {\n setSelection(sheet.previousNavigationRange());\n row = selBottomRight.row;\n column = selBottomRight.col;\n } else {\n column = columns.prevVisible(topLeftCol);\n if (column === topLeftCol || column < selTopLeft.col) {\n column = selBottomRight.col;\n tmp = rows.prevVisible(row);\n if (tmp === row || tmp < selTopLeft.row) {\n row = selBottomRight.row;\n } else {\n row = tmp;\n }\n }\n }\n break;\n case \"lower\":\n if (selBottomRight.eq(current)) {\n setSelection(sheet.nextNavigationRange());\n row = selTopLeft.row;\n column = selTopLeft.col;\n } else {\n row = rows.nextVisible(topLeftRow);\n if (row === topLeftRow || row > selBottomRight.row) {\n row = selTopLeft.row;\n tmp = columns.nextVisible(column);\n if (tmp === column || tmp > selBottomRight.col) {\n column = selTopLeft.col;\n } else {\n column = tmp;\n }\n }\n }\n break;\n case \"upper\":\n if (selTopLeft.eq(current)) {\n setSelection(sheet.previousNavigationRange());\n row = selBottomRight.row;\n column = selBottomRight.col;\n } else {\n row = rows.prevVisible(topLeftRow);\n if (row === topLeftRow || row < selTopLeft.row) {\n row = selBottomRight.row;\n tmp = columns.prevVisible(column);\n if (tmp === column || tmp < selTopLeft.col) {\n column = selBottomRight.col;\n } else {\n column = tmp;\n }\n }\n }\n break;\n default:\n throw new Error(\"Unknown entry navigation: \" + direction);\n }\n\n done = !this.shouldSkip(row, column);\n // if (!done) { console.log(\"skipping\", row, column); }\n topLeftCol = column;\n topLeftRow = row;\n }\n\n if (done) {\n if (sheet.singleCellSelection()) {\n sheet.select(new CellRef(row, column));\n } else {\n sheet.activeCell(new CellRef(row, column));\n }\n }\n }\n\n extendSelection(ref, mode) {\n var sheet = this._sheet;\n var grid = sheet._grid;\n\n if (mode === \"autofill\") {\n this.resizeAutoFill(ref);\n return;\n }\n if (mode === \"range\") {\n ref = grid.normalize(ref);\n }\n else if (mode === \"row\") {\n ref = grid.rowRef(ref.row).bottomRight;\n } else if (mode === \"column\") {\n ref = grid.colRef(ref.col).bottomRight;\n }\n\n var activeCell = sheet.originalActiveCell().toRangeRef();\n\n this.updateCurrentSelectionRange(new RangeRef(activeCell.topLeft, ref));\n }\n\n shouldSkip(row, col) {\n if (this._sheet.isHiddenRow(row) || this._sheet.isHiddenColumn(col)) {\n return true;\n }\n var ref = new CellRef(row, col);\n var isMerged = false;\n this._sheet.forEachMergedCell(function(merged) {\n if (merged.intersects(ref) && !merged.collapse().eq(ref)) {\n isMerged = true;\n }\n });\n\n return isMerged;\n }\n\n resizeAutoFill(ref) {\n var sheet = this._sheet;\n var selection = sheet.select();\n var origin = sheet._autoFillOrigin;\n var dest = this.autoFillCalculator.autoFillDest(selection, ref);\n\n var punch = this.punch(selection, dest);\n var hint, direction;\n\n if (!punch) {\n var preview = sheet.range(dest)._previewFillFrom(sheet.range(origin));\n if (preview) {\n direction = preview.direction;\n hint = preview.hint;\n }\n }\n\n sheet.updateAutoFill(dest, punch, hint, direction);\n }\n\n determineDirection(action) {\n var selection = this._sheet.currentSelectionRange();\n var activeCell = this._sheet.activeCell();\n\n // There may be a third, indeterminate state, caused by a merged cell.\n // In this state, all key movements are treated as shrinks.\n // The navigator will reverse them if it detects this it will cause the selection to exclude the active cell.\n var leftMode = activeCell.topLeft.col === selection.topLeft.col;\n var rightMode = activeCell.bottomRight.col === selection.bottomRight.col;\n var topMode = activeCell.topLeft.row === selection.topLeft.row;\n var bottomMode = activeCell.bottomRight.row === selection.bottomRight.row;\n\n switch (action) {\n case \"left\":\n action = rightMode ? \"expand-left\" : \"shrink-left\";\n break;\n case \"right\":\n action = leftMode ? \"expand-right\" : \"shrink-right\";\n break;\n case \"up\":\n action = bottomMode ? \"expand-up\" : \"shrink-up\";\n break;\n case \"down\":\n action = topMode ? \"expand-down\" : \"shrink-down\";\n break;\n case \"prev-page\":\n action = bottomMode ? \"expand-page-up\" : \"shrink-page-up\";\n break;\n case \"next-page\":\n action = topMode ? \"expand-page-down\" : \"shrink-page-down\";\n break;\n case \"word-left\":\n action = rightMode ? \"expand-word-left\" : \"shrink-word-left\";\n break;\n case \"word-right\":\n action = leftMode ? \"expand-word-right\" : \"shrink-word-right\";\n break;\n case \"word-up\":\n action = bottomMode ? \"expand-word-up\" : \"shrink-word-up\";\n break;\n case \"word-down\":\n action = topMode ? \"expand-word-down\" : \"shrink-word-down\";\n break;\n }\n\n return action;\n }\n\n updateCurrentSelectionRange(ref) {\n var sheet = this._sheet;\n sheet.select(sheet.originalSelect().replaceAt(sheet.selectionRangeIndex(), ref), false);\n }\n\n punch(selection, subset) {\n var punch;\n if (subset.topLeft.eq(selection.topLeft)) {\n if (subset.bottomRight.row < selection.bottomRight.row) {\n var bottomRow = this.rowEdge.nextRight(subset.bottomRight.row);\n\n punch = new RangeRef(\n new CellRef(bottomRow, selection.topLeft.col),\n selection.bottomRight\n );\n } else if (subset.bottomRight.col < selection.bottomRight.col) {\n var bottomCol = this.colEdge.nextRight(subset.bottomRight.col);\n\n punch = new RangeRef(\n new CellRef(selection.topLeft.row, bottomCol),\n selection.bottomRight\n );\n }\n }\n\n return punch;\n }\n}\n\nfunction makeWordMovement(sheet, pivot, isCol) {\n // the general idea is:\n //\n // - if we start on a non-empty cell, we should select the\n // range of non-empty cells that follow it. If, however,\n // the second cell is empty, then we don't stop there; we\n // should skip all the empty cells and stop at the first\n // non-empty cell (and select it).\n //\n // - if we start on an empty cell, then skip all empty cells\n // and select the first non-empty one.\n\n var firstVal = sheet.range(pivot).value();\n return function(pos, advanced, hidden) {\n if (hidden) { return true; } // skip hidden cells\n var val = ( isCol ?\n sheet.range(pivot.row, pos) :\n sheet.range(pos, pivot.col) ).value();\n if (firstVal === null) {\n return val === null ? false : pos;\n } else if (!advanced && val === null) {\n firstVal = null; // switch to the other mode\n return false;\n } else {\n return val === null;\n }\n };\n}\n\n/* eslint-disable max-params */\n/* eslint-disable no-empty */\n/* eslint-disable no-loop-func */\n/* eslint-disable consistent-return */\n/* eslint-disable block-scoped-var */\n/* eslint-disable no-redeclare */\n/* eslint-disable no-var */\n/* eslint-disable eqeqeq */\n/* eslint-disable complexity */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable brace-style */\n/* eslint-disable key-spacing */\n/* eslint-disable no-else-return */\n/* eslint-disable default-case */\n/* eslint-disable no-param-reassign */\n\n\nfunction numberToDate(val) {\n return val == null ? null : calc.runtime.serialToDate(val);\n}\n\nfunction dateToNumber(val) {\n return val == null ? null : calc.runtime.dateToSerial(val);\n}\n\nvar identity = function (o) { return o; };\n\nclass SheetDataSourceBinder {\n constructor(options) {\n this.options = Object.assign({ columns: [] }, this.options,\n // skip undefined properties in options\n Object.keys(options).reduce((acc, key) => {\n if (options[key] !== undefined) acc[key] = options[key];\n return acc;\n }, {})\n );\n\n this.columns = this._normalizeColumns(this.options.columns);\n\n this._sheet();\n this._dataSource();\n\n this._header();\n\n this._boundRowsCount = 0;\n\n this.dataSource.fetch();\n }\n\n _sheet() {\n this.sheet = this.options.sheet;\n\n this._sheetChangeHandler = this._sheetChange.bind(this);\n this._sheetDeleteRowHandler = this._sheetDeleteRow.bind(this);\n this._sheetInsertRowHandler = this._sheetInsertRow.bind(this);\n\n this.sheet.bind(\"change\", this._sheetChangeHandler)\n .bind(\"afterDeleteRow\", this._sheetDeleteRowHandler)\n .bind(\"afterInsertRow\", this._sheetInsertRowHandler);\n }\n\n _sheetInsertRow(e) {\n if (e.index !== undefined) {\n this.dataSource.insert(Math.max(e.index - 1, 0), {});\n }\n }\n\n _sheetDeleteRow(e) {\n if (e.index !== undefined) {\n var dataSource = this.dataSource;\n var model = dataSource.view()[e.index - 1];\n\n if (model) {\n dataSource.remove(model);\n }\n }\n }\n\n _header() {\n this.sheet.batch(function () {\n this.columns.forEach(function (column, index) {\n this.sheet.range(0, index).value(column.title);\n }.bind(this));\n }.bind(this));\n }\n\n _sheetChange(e) {\n if (e.insertRow || e.deleteRow) {\n // these actions are handled via custom events\n return;\n }\n\n if (e.recalc && e.ref && e.isValue) {\n var dataSource = this.dataSource;\n var data = dataSource.view();\n var columns = this.columns;\n var values = [];\n var sheet = this.sheet;\n var fields, getters, normalizedRef, i, rangeRef, normalizedRefs;\n var setValues = function (ref) {\n ref = ref.toRangeRef();\n var record;\n var valueIndex = 0;\n for (var ri = ref.topLeft.row; ri <= ref.bottomRight.row; ri++) {\n record = data[ri - 1]; // skip header row\n\n if (!record) {\n record = dataSource.insert(ri - 1, {});\n data = dataSource.view();\n }\n\n var colValueIndex = 0;\n for (var ci = ref.topLeft.col; ci <= ref.bottomRight.col && ci < columns.length; ci++) {\n var currentValue = values[i][valueIndex][colValueIndex++];\n record.set(columns[ci].field, getters[ci](currentValue));\n }\n valueIndex++;\n }\n };\n\n if (dataSource.reader.model) {\n fields = dataSource.reader.model.fields;\n }\n\n if (!columns.length && data.length) {\n columns = Object.keys(data[0].toJSON());\n }\n\n getters = columns.map(function (column) {\n var field = column.field;\n if (field && fields && fields[field] && fields[field].type === \"date\") {\n return numberToDate;\n }\n return identity;\n });\n\n this._skipRebind = true;\n normalizedRef = sheet._grid.normalize(e.ref);\n\n if (!(normalizedRef instanceof UnionRef)) {\n normalizedRef = new UnionRef([normalizedRef]);\n }\n\n normalizedRefs = normalizedRef.refs;\n\n normalizedRefs.forEach(function (ref) {\n values.push(sheet.range(ref).values());\n });\n\n for (i = 0; i < normalizedRefs.length; i++) {\n rangeRef = normalizedRefs[i];\n rangeRef.forEach(setValues);\n }\n\n this._boundRowsCount = dataSource.view().length;\n\n this._skipRebind = false;\n }\n }\n\n _normalizeColumns(columns) {\n return columns.map(function (column) {\n var field = column.field || column;\n return {\n field: field,\n title: column.title || field\n };\n });\n }\n\n _dataSource() {\n var options = this.options;\n var dataSource = options.dataSource;\n\n dataSource = Array.isArray(dataSource) ? { data: dataSource } : dataSource;\n\n if (this.dataSource && this._changeHandler) {\n this.dataSource.unbind(\"change\", this._changeHandler)\n .unbind(\"progress\", this._progressHandler)\n .unbind(\"error\", this._errorHandler);\n } else {\n this._changeHandler = this._change.bind(this);\n this._progressHandler = this._requestStart.bind(this);\n this._errorHandler = this._error.bind(this);\n }\n\n this.dataSource = this.options.sheet.createSheetDataSource?.(dataSource)\n .bind(\"change\", this._changeHandler)\n .bind(\"progress\", this._progressHandler)\n .bind(\"error\", this._errorHandler);\n }\n\n _error() {\n this._progress(false);\n }\n\n _requestStart() {\n this._progress(true);\n }\n\n _progress(toggle) {\n this.sheet.trigger(\"progress\", {\n toggle: toggle\n });\n }\n\n _change() {\n if (this._skipRebind) {\n return;\n }\n\n if (this.sheet.trigger(\"dataBinding\")) {\n return;\n }\n\n var data = this.dataSource.view();\n var columns = this.columns;\n\n if (!columns.length && data.length) {\n this.columns = columns = this._normalizeColumns(Object.keys(data[0].toJSON()));\n this._header();\n }\n\n var getters = columns.map(function (column) {\n return getter(column.field);\n });\n\n this.sheet.batch(function () {\n var length = Math.max(data.length, this._boundRowsCount, this.sheet._grid.rowCount - 1);\n\n for (var idx = 0; idx < length; idx++) {\n for (var getterIdx = 0; getterIdx < getters.length; getterIdx++) {\n var value = data[idx] ? getters[getterIdx](data[idx]) : null;\n\n //skip header row\n this.sheet.range(idx + 1, getterIdx).value(value);\n }\n }\n }.bind(this));\n\n this._boundRowsCount = data.length;\n\n this._progress(false);\n this.sheet.trigger(\"dataBound\");\n }\n\n destroy() {\n this.dataSource.unbind(\"change\", this._changeHandler)\n .unbind(\"progress\", this._progressHandler)\n .unbind(\"error\", this._errorHandler);\n\n this.sheet.unbind(\"change\", this._sheetChangeHandler)\n .unbind(\"deleteRow\", this._sheetDeleteRowHandler)\n .unbind(\"insertRow\", this._sheetInsertRowHandler);\n }\n}\n\nconst kendoDate = (function() {\n function today() {\n return getDate(new Date());\n }\n\n function isToday(date) {\n return getDate(date).getTime() === today().getTime();\n }\n\n return {\n dayOfWeek: dayOfWeek,\n getDate: getDate,\n isToday: isToday,\n addDays: addDays,\n today: today,\n firstDayOfMonth: firstDayOfMonth\n };\n})();\n\n/* eslint-disable no-var */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-loop-func */\n\n\nconst logic = {\n or: {\n concat: (acc, fn) => (a) => acc(a) || fn(a),\n identity: () => false,\n },\n and: {\n concat: (acc, fn) => (a) => acc(a) && fn(a),\n identity: () => true,\n },\n};\n\nconst operatorsMap = {\n contains: (a, b) => (a || \"\").indexOf(b) >= 0,\n doesnotcontain: (a, b) => (a || \"\").indexOf(b) === -1,\n doesnotendwith: (a, b) =>\n (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0,\n doesnotstartwith: (a, b) => (a || \"\").lastIndexOf(b, 0) === -1,\n endswith: (a, b) =>\n (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0,\n eq: (a, b) => a === b,\n gt: (a, b) => a > b,\n gte: (a, b) => a >= b,\n isempty: (a) => a === \"\",\n isnotempty: (a) => a !== \"\",\n isnotnull: (a) => isPresent(a),\n isnull: (a) => isBlank(a),\n lt: (a, b) => a < b,\n lte: (a, b) => a <= b,\n neq: (a, b) => a != b, // tslint:disable-line:triple-equals\n startswith: (a, b) => (a || \"\").lastIndexOf(b, 0) === 0,\n};\n\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\nconst convertValue = (value, ignoreCase, accentFoldingFiltering) => {\n if (value != null && isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n } else if (ignoreCase) {\n return accentFoldingFiltering\n ? value.toLocaleLowerCase(accentFoldingFiltering)\n : value.toLowerCase();\n }\n } else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\n\nconst transformFilter = ({\n field,\n ignoreCase,\n value,\n operator,\n accentFoldingFiltering,\n}) => {\n field = !isPresent(field) ? (a) => a : field;\n\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n\n const itemProp = typedGetter(\n isFunction(field) ? field : getter(field, true),\n value,\n ignoreCase,\n accentFoldingFiltering\n );\n\n value = convertValue(value, ignoreCase, accentFoldingFiltering);\n\n const op = isFunction(operator) ? operator : operatorsMap[operator];\n\n return (a) => op(itemProp(a), value, ignoreCase);\n};\n\nconst typedGetter = (prop, value, ignoreCase, accentFoldingFiltering) => {\n if (!isPresent(value)) {\n return prop;\n }\n\n let acc = prop;\n\n if (isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = (a) => {\n const x = prop(a);\n if (typeof x === \"string\" && ignoreCase) {\n return accentFoldingFiltering\n ? x.toLocaleLowerCase(accentFoldingFiltering)\n : x.toLowerCase();\n } else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n\n if (isDate(value)) {\n return (a) => {\n const x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\n\nconst transformCompositeFilter = function (filter) {\n const accentFoldingFiltering = filter.accentFoldingFiltering;\n const combiner = logic[filter.logic || \"and\"];\n\n return filter.filters\n .filter(isPresent)\n .map((x) => {\n const extendedFilter = isPresent(accentFoldingFiltering)\n ? deepExtend({}, x, { accentFoldingFiltering })\n : x;\n\n return isPresent(x.filters)\n ? transformCompositeFilter(extendedFilter)\n : transformFilter(extendedFilter);\n })\n .reduce(combiner.concat, combiner.identity);\n};\n\n/* eslint-disable max-params */\n/* eslint-disable no-empty */\n/* eslint-disable no-loop-func */\n/* eslint-disable consistent-return */\n/* eslint-disable block-scoped-var */\n/* eslint-disable no-redeclare */\n/* eslint-disable no-var */\n/* eslint-disable eqeqeq */\n/* eslint-disable complexity */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable brace-style */\n/* eslint-disable key-spacing */\n/* eslint-disable no-else-return */\n/* eslint-disable default-case */\n/* eslint-disable no-param-reassign */\n\n\nlet filtersObj = {};\nconst dateToSerial$1 = calc.runtime.dateToSerial;\nconst serialToDate$1 = calc.runtime.serialToDate;\n\nclass Filter {\n prepare() {\n }\n value(cell) {\n return cell.value;\n }\n matches() {\n throw new Error(\"The 'matches' method is not implemented.\");\n }\n toJSON() {\n throw new Error(\"The 'toJSON' method is not implemented.\");\n }\n}\n\nFilter.create = function(options) {\n var filter = options.filter;\n\n if (!filter) {\n throw new Error(\"Filter type not specified.\");\n }\n\n var constructor = filtersObj[filter.charAt(0).toUpperCase() + filter.substring(1) + \"Filter\"];\n\n if (!constructor) {\n throw new Error(\"Filter type not recognized.\");\n }\n\n return new constructor(options);\n};\n\nclass ValueFilter extends Filter {\n constructor(options) {\n super(options);\n\n this._values = [];\n this._dates = [];\n this._blanks = false;\n\n if (options.values !== undefined) {\n this._values = options.values;\n }\n\n if (options.blanks !== undefined) {\n this._blanks = options.blanks;\n }\n\n if (options.dates !== undefined) {\n this._dates = options.dates;\n }\n }\n\n value(cell) {\n var value = cell.value;\n\n if (this._dates.length > 0 && cell.format && typeof value === \"number\") {\n var type = formatting.type(value, cell.format);\n\n if (type === \"date\") {\n value = serialToDate$1(value);\n }\n }\n\n return value;\n }\n\n matches(value) {\n if (value === null || value === undefined) {\n return this._blanks;\n }\n\n if (value instanceof Date) {\n return this._dates.some(function(date) {\n return date.year === value.getFullYear() &&\n (date.month === undefined || date.month === value.getMonth()) &&\n (date.day === undefined || date.day === value.getDate()) &&\n (date.hours === undefined || date.hours === value.getHours()) &&\n (date.minutes === undefined || date.minutes === value.getMinutes()) &&\n (date.seconds === undefined || date.seconds === value.getSeconds());\n });\n }\n\n return this._values.indexOf(value) >= 0;\n }\n toJSON() {\n return {\n filter: \"value\",\n blanks: this._blanks,\n values: this._values.slice(0)\n };\n }\n}\n\nclass CustomFilter extends Filter {\n constructor(options) {\n super(options);\n this._logic = \"and\";\n if (options.logic !== undefined) {\n this._logic = options.logic;\n }\n\n if (options.criteria === undefined) {\n throw new Error(\"Must specify criteria.\");\n }\n\n this._criteria = options.criteria;\n\n this._matches = transformCompositeFilter({\n logic: this._logic,\n filters: this._criteria,\n accentFoldingFiltering: culture().name,\n });\n }\n matches(value) {\n if (value === null) {\n return false;\n }\n\n return this._matches(value);\n }\n value(cell) {\n var value = cell.value;\n var criterionValue = this._criteria[0].value;\n var criterionType = criterionValue instanceof Date ? \"date\" : typeof criterionValue;\n var valueType = typeof value;\n\n if (cell.format) {\n valueType = formatting.type(value, cell.format);\n }\n\n if (valueType != criterionType) {\n if (criterionType == \"string\") {\n if (cell.format) {\n value = formatting.text(value, cell.format);\n }\n value = value + \"\";\n }\n } else if (valueType == \"date\") {\n value = serialToDate$1(value);\n }\n\n return value;\n }\n toJSON() {\n return {\n filter: \"custom\",\n logic: this._logic,\n criteria: this._criteria\n };\n }\n}\n\nclass TopFilter extends Filter {\n constructor(options) {\n super(options);\n this._type = options.type;\n this._value = options.value;\n this._values = [];\n }\n\n prepare(cells) {\n var values = cells.map(this.value)\n .sort()\n .filter(function(value, index, array) {\n return index === 0 || value !== array[index - 1];\n });\n\n if (this._type === \"topNumber\" || this._type == \"topPercent\") {\n values.sort(function(x, y) {\n return y - x;\n });\n } else {\n values.sort(function(x, y) {\n return x - y;\n });\n }\n\n var count = this._value;\n\n if (this._type === \"topPercent\" || this._type === \"bottomPercent\") {\n count = (values.length * count / 100) >> 0;\n }\n\n this._values = values.slice(0, count);\n }\n matches(value) {\n return this._values.indexOf(value) >= 0;\n }\n toJSON() {\n return {\n filter: \"top\",\n type: this._type,\n value: this._value\n };\n }\n}\n\nclass DynamicFilter extends Filter {\n constructor(options) {\n super(options);\n this._type = options.type;\n\n this._predicate = this[options.type];\n\n if (typeof this._predicate !== \"function\") {\n throw new Error(\"DynamicFilter type '\" + options.type + \"' not recognized.\");\n }\n }\n value(cell) {\n var value = cell.value;\n\n if (cell.format) {\n var type = formatting.type(value, cell.format);\n\n if (type === \"date\") {\n value = serialToDate$1(value);\n }\n }\n\n return value;\n }\n prepare(cells) {\n var sum = 0;\n var count = 0;\n\n for (var ci = 0; ci < cells.length; ci++) {\n var value = this.value(cells[ci]);\n\n if (typeof value === \"number\") {\n sum += value;\n count ++;\n }\n }\n\n if (count > 0) {\n this._average = sum / count;\n } else {\n this._average = 0;\n }\n }\n matches(value) {\n return this._predicate(value);\n }\n aboveAverage(value) {\n if (value instanceof Date) {\n value = dateToSerial$1(value);\n }\n\n if (typeof value !== \"number\") {\n return false;\n }\n\n return value > this._average;\n }\n belowAverage(value) {\n if (value instanceof Date) {\n value = dateToSerial$1(value);\n }\n\n if (typeof value !== \"number\") {\n return false;\n }\n\n return value < this._average;\n }\n tomorrow(value) {\n if (value instanceof Date) {\n var tomorrow = kendoDate.addDays(kendoDate.today(), 1);\n\n return kendoDate.getDate(value).getTime() === tomorrow.getTime();\n }\n\n return false;\n }\n today(value) {\n if (value instanceof Date) {\n return kendoDate.isToday(value);\n }\n\n return false;\n }\n yesterday(value) {\n if (value instanceof Date) {\n var yesterday = kendoDate.addDays(kendoDate.today(), -1);\n\n return kendoDate.getDate(value).getTime() === yesterday.getTime();\n }\n\n return false;\n }\n nextWeek(value) {\n return sameWeek(kendoDate.addDays(kendoDate.today(), 7), value);\n }\n thisWeek(value) {\n return sameWeek(kendoDate.today(), value);\n }\n lastWeek(value) {\n return sameWeek(kendoDate.addDays(kendoDate.today(), -7), value);\n }\n nextMonth(value) {\n return sameMonth(value, 1);\n }\n thisMonth(value) {\n return sameMonth(value, 0);\n }\n lastMonth(value) {\n return sameMonth(value, -1);\n }\n nextQuarter(value) {\n if (value instanceof Date) {\n var today = kendoDate.today();\n\n var diff = quarter(value) - quarter(today);\n\n return (diff === 1 && today.getFullYear() === value.getFullYear()) ||\n (diff == -3 && today.getFullYear() + 1 === value.getFullYear());\n }\n\n return false;\n }\n thisQuarter(value) {\n if (value instanceof Date) {\n var today = kendoDate.today();\n\n var diff = quarter(value) - quarter(today);\n\n return diff === 0 && today.getFullYear() === value.getFullYear();\n }\n\n return false;\n }\n lastQuarter(value) {\n if (value instanceof Date) {\n var today = kendoDate.today();\n\n var diff = quarter(today) - quarter(value);\n\n return (diff === 1 && today.getFullYear() === value.getFullYear()) ||\n (diff == -3 && today.getFullYear() - 1 === value.getFullYear());\n }\n\n return false;\n }\n nextYear(value) {\n return sameYear(value, 1);\n }\n thisYear(value) {\n return sameYear(value, 0);\n }\n lastYear(value) {\n return sameYear(value, -1);\n }\n yearToDate(value) {\n if (value instanceof Date) {\n var today = kendoDate.today();\n\n return value.getFullYear() === today.getFullYear() && value <= today;\n }\n\n return false;\n }\n toJSON() {\n return {\n filter: \"dynamic\",\n type: this._type\n };\n }\n}\n\nfiltersObj = {\n Filter, ValueFilter, CustomFilter, TopFilter\n};\n\n[1, 2, 3, 4].forEach(function(target) {\n DynamicFilter.prototype[\"quarter\" + target] = function(value) {\n if (value instanceof Date) {\n return quarter(value) === target;\n }\n\n return false;\n };\n});\n\nconst initDynamicFilter = () => {\n culture().calendar.months.format.wide.forEach(function(month, index) {\n DynamicFilter.prototype[month.toLowerCase()] = function(value) {\n if (value instanceof Date) {\n return value.getMonth() === index;\n }\n\n return false;\n };\n });\n};\n\nfunction quarter(value) {\n var month = value.getMonth() + 1;\n\n if (month >= 1 && month <= 3) {\n return 1;\n } else if (month >= 4 && month <= 6) {\n return 2;\n } else if (month >= 7 && month <= 9) {\n return 3;\n } else {\n return 4;\n }\n}\n\nfunction sameYear(value, offset) {\n if (value instanceof Date) {\n var today = kendoDate.today();\n\n today.setFullYear(today.getFullYear() + offset);\n\n return today.getFullYear() === value.getFullYear();\n }\n\n return false;\n}\n\nfunction sameMonth(value, offset) {\n if (value instanceof Date) {\n var today = kendoDate.firstDayOfMonth(kendoDate.today());\n\n today.setMonth(today.getMonth() + offset, 1);\n\n return today.getTime() === kendoDate.firstDayOfMonth(value).getTime();\n }\n\n return false;\n}\n\nfunction sameWeek(a, b) {\n if (b instanceof Date) {\n var firstWeek = kendoDate.dayOfWeek(kendoDate.getDate(a), 1);\n\n var secondWeek = kendoDate.dayOfWeek(kendoDate.getDate(b), 1);\n\n return firstWeek.getTime() === secondWeek.getTime();\n }\n\n return false;\n}\n\n/* eslint-disable max-params */\n/* eslint-disable no-empty */\n/* eslint-disable no-loop-func */\n/* eslint-disable consistent-return */\n/* eslint-disable block-scoped-var */\n/* eslint-disable no-redeclare */\n/* eslint-disable no-var */\n/* eslint-disable eqeqeq */\n/* eslint-disable complexity */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable brace-style */\n/* eslint-disable key-spacing */\n/* eslint-disable no-else-return */\n/* eslint-disable default-case */\n/* eslint-disable no-param-reassign */\n\n\n// This is a “dynamic variable” (see Greenspun's 10th rule). It's\n// bound to an array via sheet._saveModifiedFormulas (which see)\n// while the callback runs. The goal is to enable external code\n// to get a list of formulas or validations that have been\n// adjusted as an effect of an insert/delete row/column operation,\n// to be able to undo it.\n//\n// The reason why simply saving the state via sheet.getState() or\n// range.getState() won't suffice is that an insert or delete\n// operation can have far-reaching effects, like adjusting\n// formulas from another sheet.\nvar MODIFIED_FORMULAS;\n\nconst DEFAULT_SHEET_STATE = 'visible';\n\nclass Selection {\n constructor(sheet) {\n this._sheet = sheet;\n this.selection = FIRSTREF.toRangeRef();\n this.originalSelection = FIRSTREF.toRangeRef();\n this._activeCell = FIRSTREF.toRangeRef();\n this.originalActiveCell = FIRSTREF;\n }\n\n currentSelectionRange() {\n return this.selection.rangeAt(this.selectionRangeIndex).toRangeRef();\n }\n\n currentOriginalNavigationRange() {\n return this.originalSelection.rangeAt(this.selectionRangeIndex).toRangeRef();\n }\n\n currentNavigationRange() {\n if (this.singleCellSelection()) {\n return this._sheet._sheetRef;\n } else {\n return this.selection.rangeAt(this.selectionRangeIndex).toRangeRef();\n }\n }\n\n nextNavigationRange() {\n if (!this.singleCellSelection()) {\n this.selectionRangeIndex = this.selection.nextRangeIndex(this.selectionRangeIndex);\n }\n\n return this.currentNavigationRange();\n }\n\n previousNavigationRange() {\n if (!this.singleCellSelection()) {\n this.selectionRangeIndex = this.selection.previousRangeIndex(this.selectionRangeIndex);\n }\n\n return this.currentNavigationRange();\n }\n\n activeCell(ref) {\n if (ref) {\n this.originalActiveCell = ref.first();\n this._activeCell = this._sheet.unionWithMerged(ref.toRangeRef());\n this._sheet.focus(ref);\n this._sheet.triggerChange({ activeCell: true, selection: true });\n }\n\n return this._activeCell;\n }\n\n select(ref, expanded, changeActiveCell, view) {\n if (ref) {\n if (ref.eq(this.originalSelection)) {\n return;\n }\n\n this._sheet.triggerSelect(new Range$1(ref, this._sheet));\n\n this.originalSelection = ref;\n\n this.selection = expanded;\n\n if (changeActiveCell !== false) {\n if (ref.isCell()) {\n // when selecting part of a merged cell, i.e. A1:B2 is merged and select(B2)\n // is requested, mark A1 as the actually active cell.\n // https://github.com/telerik/kendo/issues/7698\n this._sheet.forEachMergedCell(ref, function(merged) {\n ref = merged.topLeft;\n });\n this.activeCell(ref);\n } else {\n ref = this.selection.lastRange();\n if (view && view._sheet === this._sheet && view.panes[0]) {\n // we should intersect this ref with the range that's currently on\n // screen, so that the view doesn't scroll (that is, keep the activeCell\n // visible) - https://github.com/telerik/kendo-ui-core/issues/5182 —\n // XXX: fiddling with View internals here is probably bad practice, but\n // this whole thing is a mess already, so it can be forgiven. :-/\n var panes = view.panes;\n var i, pane, rows, cols, visible, newRef;\n\n for (i = 0; i < panes.length; i++) {\n pane = panes[i];\n if (!pane._currentView) {\n continue;\n }\n rows = pane._currentView.rows.values;\n cols = pane._currentView.columns.values;\n\n visible = new RangeRef(\n new CellRef(rows.start, cols.start),\n new CellRef(rows.end, cols.end)\n );\n\n newRef = ref.intersect(visible);\n\n if (newRef !== NULLREF) {\n break;\n }\n }\n\n if (newRef && newRef !== NULLREF) {\n ref = newRef;\n }\n }\n this.activeCell(ref.first());\n }\n\n this.selectionRangeIndex = this.selection.size() - 1;\n } else {\n this._sheet.triggerChange({ selection: true });\n }\n }\n\n return this.selection;\n }\n\n singleCellSelection() {\n return this._activeCell.eq(this.selection);\n }\n}\n\nlet EDITORS = {};\n\nfunction registerEditor(name, editor) {\n EDITORS[name] = editor;\n}\n\nclass Sheet extends Observable {\n constructor() {\n super();\n this.events = [\n \"changing\",\n \"commandRequest\",\n \"afterInsertRow\",\n \"afterDeleteRow\",\n \"insertRow\",\n \"insertColumn\",\n \"deleteRow\",\n \"deleteColumn\",\n \"hideRow\",\n \"hideColumn\",\n \"unhideRow\",\n \"unhideColumn\",\n \"select\",\n \"dataBinding\",\n \"dataBound\",\n \"progress\"\n ];\n\n this.createSheetDataSource = Array.from(arguments).pop();\n\n this._reinit.apply(this, arguments);\n }\n\n activeCellCustomEditor() {\n let cell = this.activeCell().first();\n\n if (this.range(cell).enable()) {\n let val = this.validation(cell);\n let key = this._properties.get(\"editor\", this._grid.cellRefIndex(cell));\n let editor;\n\n if (key != null) {\n editor = EDITORS[key];\n }\n else if (val && val.showButton) {\n key = \"_validation_\" + val.dataType;\n editor = EDITORS[key];\n }\n\n if (typeof editor == \"function\") {\n editor = EDITORS[key] = editor();\n }\n\n return editor;\n }\n }\n\n _reinit(rowCount, columnCount, rowHeight, columnWidth, headerHeight, headerWidth, defaultCellStyle) {\n defaultCellStyle = defaultCellStyle || {};\n\n this._defaultCellStyle = {\n background: defaultCellStyle.background,\n color: defaultCellStyle.color,\n fontFamily: defaultCellStyle.fontFamily,\n fontSize: defaultCellStyle.fontSize,\n italic: defaultCellStyle.italic,\n bold: defaultCellStyle.bold,\n underline: defaultCellStyle.underline,\n wrap: defaultCellStyle.wrap,\n verticalAlign: defaultCellStyle.verticalAlign,\n textAlign: defaultCellStyle.textAlign\n };\n\n this._rows = new Axis(rowCount, rowHeight);\n this._columns = new Axis(columnCount, columnWidth);\n this._filteredRows = new RangeList(0, rowCount - 1, false);\n this._mergedCells = [];\n this._frozenRows = 0;\n this._frozenColumns = 0;\n this._suspendChanges = false;\n this._filter = null;\n this._showGridLines = true;\n this._gridLinesColor = null;\n this._grid = new Grid(this._rows, this._columns, rowCount, columnCount, headerHeight, headerWidth);\n this._sheetRef = this._grid.normalize(SHEETREF);\n this._properties = new PropertyBag(rowCount, columnCount, this._defaultCellStyle);\n this._sorter = new Sorter(this._grid, this._properties.sortable());\n\n this._viewSelection = new Selection(this);\n\n this._editSelection = new Selection(this);\n\n this._formulaSelections = [];\n this._drawings = [];\n }\n\n resize(newRows, newCols) {\n newRows = Math.max(newRows, 1);\n newCols = Math.max(newCols, 1);\n var oldRows = this._rows._count;\n var oldCols = this._columns._count;\n if (newRows < oldRows) {\n this.range(newRows, 0, oldRows - newRows, oldCols).clear();\n }\n if (newCols < oldCols) {\n this.range(0, newCols, oldRows, oldCols - newCols).clear();\n }\n this._rows._resize(newRows);\n this._columns._resize(newCols);\n this._grid._resize(newRows, newCols);\n this._properties._resize(newRows, newCols);\n this._sheetRef = this._grid.normalize(SHEETREF);\n if (newRows > oldRows) {\n this.range(oldRows, 0, newRows - oldRows, newCols).clear();\n this._filteredRows.value(oldRows, newRows - 1, false);\n }\n if (newCols > oldCols) {\n this.range(0, oldCols, newRows, newCols - oldCols).clear();\n }\n this.triggerChange({ layout: true });\n }\n\n _resizeAddRow(count) {\n this.resize(this._rows._count + (count || 1), this._columns._count);\n }\n\n _resizeAddColumn(count) {\n this.resize(this._rows._count, this._columns._count + (count || 1));\n }\n\n _resizeDeleteRow(count) {\n this._resizeAddRow(-(count || 1));\n }\n\n _resizeDeleteColumn(count) {\n this._resizeAddColumn(-(count || 1));\n }\n\n _resizeForJSON(rows) {\n var rowCount = rows.length, colCount = 0;\n for (var ri = 0; ri < rows.length; ++ri) {\n var row = rows[ri];\n if (row.index != null) {\n rowCount = Math.max(rowCount, row.index + 1);\n }\n if (row.cells) {\n colCount = Math.max(colCount, row.cells.length);\n for (var ci = 0; ci < row.cells.length; ++ci) {\n var cell = row.cells[ci];\n if (cell.index != null) {\n colCount = Math.max(colCount, cell.index + 1);\n }\n }\n }\n }\n this.resize(Math.max(rowCount, this._rows._count),\n Math.max(colCount, this._columns._count));\n }\n\n _selectionState() {\n return this._inEdit ? this._editSelection : this._viewSelection;\n }\n\n navigator() {\n if (!this._navigator) {\n this._navigator = new SheetNavigator(this);\n }\n return this._navigator;\n }\n\n axisManager() {\n if (!this._axisManager) {\n this._axisManager = new AxisManager(this);\n }\n\n return this._axisManager;\n }\n\n _name(value) {\n if (!value) {\n return this._sheetName;\n }\n\n this._sheetName = value;\n\n return this;\n }\n\n name() {\n return this._name();\n }\n\n _state(value) {\n if (!value) {\n return this._sheetState || DEFAULT_SHEET_STATE;\n }\n\n this._sheetState = value;\n\n return this;\n }\n\n state() {\n return this._state();\n }\n\n _property(accessor, value, reason) {\n if (value === undefined) {\n return accessor();\n } else {\n accessor(value);\n\n return this.triggerChange(reason);\n }\n }\n\n _field(name, value, reason) {\n if (value === undefined) {\n return this[name];\n } else {\n this[name] = value;\n\n return this.triggerChange(reason);\n }\n }\n\n suspendChanges(value) {\n if (value === undefined) {\n return this._suspendChanges;\n }\n\n this._suspendChanges = value;\n\n return this;\n }\n\n triggerChange(reason) {\n if (!this._suspendChanges) {\n this.trigger(\"change\", reason);\n } else if (reason && reason.isValue) {\n this._valueChanged = true;\n }\n return this;\n }\n\n triggerSelect(range) {\n this.trigger(\"select\", { range: range });\n }\n\n setDataSource(dataSource, columns) {\n if (this.dataSourceBinder) {\n this.dataSourceBinder.destroy();\n }\n\n this.dataSourceBinder = new SheetDataSourceBinder({\n dataSource: dataSource,\n sheet: this,\n columns: columns,\n createSheetDataSource: this.createSheetDataSource\n });\n\n this.dataSource = this.dataSourceBinder.dataSource;\n }\n\n hideColumn(columnIndex) {\n if (this.trigger(\"hideColumn\", { index: columnIndex })) {\n return;\n }\n\n return this._property(this._columns.hide.bind(this._columns), columnIndex, { layout: true });\n }\n\n unhideColumn(columnIndex) {\n if (this.trigger(\"unhideColumn\", { index: columnIndex })) {\n return;\n }\n\n return this._property(this._columns.unhide.bind(this._columns), columnIndex, { layout: true });\n }\n\n isHiddenColumn(columnIndex) {\n return this._grid._columns.hidden(columnIndex);\n }\n\n _copyRange(sourceRangeRef, targetRef) {\n var grid = this._grid;\n var rowCount = grid.rowCount;\n\n var nextRefTopLeft = grid.normalize(sourceRangeRef.topLeft);\n var nextRefBottomRight = grid.normalize(sourceRangeRef.bottomRight);\n\n var nextIndex = nextRefTopLeft.col * rowCount + nextRefTopLeft.row;\n var nextBottomIndex = nextRefBottomRight.col * rowCount + nextRefBottomRight.row;\n\n var targetIndex = targetRef.col * rowCount + targetRef.row;\n\n this._properties.copy(nextIndex, nextBottomIndex, targetIndex);\n }\n\n _saveModifiedFormulas(array, callback) {\n var save = MODIFIED_FORMULAS;\n MODIFIED_FORMULAS = array;\n var ret = callback();\n MODIFIED_FORMULAS = save;\n return ret;\n }\n\n _restoreModifiedFormulas(array) {\n var wb = this._workbook;\n array.forEach(function(f) {\n var sheet = wb.sheetByName(f.sheet), index;\n if (f instanceof calc.runtime.Formula) {\n index = sheet._grid.cellRefIndex(f); // f has row, col\n sheet._properties.set(\"formula\", index, index, f);\n }\n if (f instanceof validationExport.Validation) {\n index = sheet._grid.cellRefIndex(f); // f has row, col\n sheet._properties.set(\"validation\", index, index, f);\n }\n });\n }\n\n _adjustReferences(operation, start, delta, mergedCells) {\n this._mergedCells = mergedCells.reduce(function(a, ref) {\n ref = ref.adjust(null, null, null, null, operation === \"row\", start, delta);\n if (ref instanceof RangeRef) {\n a.push(ref);\n }\n return a;\n }, []);\n if (this._workbook) {\n var affectedSheet = this._name();\n this._workbook._sheets.forEach(function(sheet) {\n sheet._forFormulas(function(formula) {\n var prev = formula.adjust(affectedSheet, operation, start, delta);\n if (prev && MODIFIED_FORMULAS) {\n // if formula.adjust returns non-null,\n // that means the formula was indeed\n // modified and the returned value is a\n // copy of the previous Formula, which we\n // can use for undoing the operation.\n MODIFIED_FORMULAS.push(prev);\n }\n });\n\n sheet._forValidations(function(validation) {\n var prev = validation.adjust(affectedSheet, operation, start, delta);\n if (prev && MODIFIED_FORMULAS) {\n MODIFIED_FORMULAS.push(prev);\n }\n });\n });\n this._workbook.adjustNames(affectedSheet, operation === \"row\", start, delta);\n }\n var selection = this.select();\n selection = selection.adjust(null, null, null, null, operation === \"row\", start, delta);\n if (selection !== NULLREF) {\n this.select(selection);\n }\n // adjust column widths or row heights and hidden attribute\n var axis = operation === \"col\" ? this._columns : this._rows;\n axis.adjust(start, delta);\n\n if (operation === \"row\") {\n if (delta < 0) {\n this._filteredRows.copy(start - delta, this._rows._count - 1, start);\n } else {\n this._filteredRows.copy(start, this._rows._count, start + delta);\n this._filteredRows.value(start, start + delta - 1, false);\n }\n }\n\n // adjust drawing anchor cells\n this._drawings.forEach(function(drawing) {\n if (drawing.topLeftCell) {\n drawing.topLeftCell = drawing.topLeftCell.adjust(null, null, null, null,\n operation === \"row\", start, delta);\n }\n });\n }\n\n _forFormulas(callback) {\n var props = this._properties;\n var formulas = props.get(\"formula\").values();\n var n = formulas.length;\n formulas.forEach(function(f, i) {\n callback.call(this, f.value, i, n);\n }, this);\n }\n\n _forValidations(callback) {\n var props = this._properties;\n props.get(\"validation\").values().forEach(function(v) {\n callback.call(this, v.value);\n }, this);\n }\n\n insertRow(rowIndex, skipDataSourceInsert) {\n if (this.trigger(\"insertRow\", { index: rowIndex })) {\n return;\n }\n\n this.batch(function() {\n this._resizeAddRow();\n\n var grid = this._grid;\n var columnCount = grid.columnCount;\n var rowCount = grid.rowCount;\n\n if (rowIndex + 1 === rowCount) {\n // we just inserted after the last one, no need to shift data\n return;\n }\n\n var frozenRows = this.frozenRows();\n\n if (rowIndex < frozenRows) {\n this.frozenRows(frozenRows + 1);\n }\n\n var mergedCells = this._mergedCells.slice();\n\n for (var ci = 0; ci < columnCount; ci++) {\n var ref = new RangeRef(new CellRef(rowIndex, ci), new CellRef(rowIndex, ci));\n\n var topLeft = grid.normalize(ref.topLeft);\n var bottomRight = grid.normalize(ref.bottomRight);\n\n var nextRef = new RangeRef(\n new CellRef(topLeft.row, topLeft.col),\n new CellRef(rowCount - 2, bottomRight.col)\n );\n\n this._copyRange(nextRef, new CellRef(topLeft.row + 1, topLeft.col));\n\n new Range$1(ref, this).clear({ clearAll: true, keepBorders: true });\n }\n\n this._adjustReferences(\"row\", rowIndex, 1, mergedCells);\n }, {\n recalc: true,\n layout: true,\n insertRow: { index: rowIndex },\n ref: new RangeRef(new CellRef(rowIndex, 0), new CellRef(Infinity, Infinity))\n });\n\n if (!skipDataSourceInsert) {\n this.trigger(\"afterInsertRow\", { index: rowIndex });\n }\n\n return this;\n }\n\n isEnabledRow(rowIndex) {\n var ref = new RangeRef(new CellRef(rowIndex, 0), new CellRef(rowIndex, this._grid.columnCount));\n return new Range$1(ref, this).enable();\n }\n\n deleteRow(rowIndex, skipDataSourceDelete) {\n if (!this.isEnabledRow(rowIndex)) {\n return this;\n }\n\n if (this.trigger(\"deleteRow\", { index: rowIndex })) {\n return;\n }\n\n this.batch(function() {\n var grid = this._grid;\n var columnCount = grid.columnCount;\n\n var frozenRows = this.frozenRows();\n if (rowIndex < frozenRows) {\n this.frozenRows(frozenRows - 1);\n }\n\n var mergedCells = this._mergedCells.slice();\n\n for (var ci = 0; ci < columnCount; ci++) {\n var ref = new RangeRef(new CellRef(rowIndex, ci), new CellRef(rowIndex, ci));\n\n new Range$1(ref, this).clear({ clearAll: true, keepBorders: true });\n\n var topLeft = grid.normalize(ref.topLeft);\n var bottomRight = grid.normalize(ref.bottomRight);\n\n var nextRef = new RangeRef(\n new CellRef(topLeft.row + 1, topLeft.col),\n new CellRef(Infinity, bottomRight.col)\n );\n\n this._copyRange(nextRef, topLeft);\n\n var nextRefBottomRight = grid.normalize(nextRef.bottomRight);\n\n new Range$1(new RangeRef(nextRefBottomRight, nextRefBottomRight), this).clear();\n }\n\n this._adjustReferences(\"row\", rowIndex, -1, mergedCells);\n\n this._resizeDeleteRow();\n }, {\n recalc: true,\n layout: true,\n deleteRow: { index: rowIndex },\n ref: new RangeRef(new CellRef(rowIndex, 0), new CellRef(Infinity, Infinity))\n });\n\n if (!skipDataSourceDelete) {\n this.trigger(\"afterDeleteRow\", { index: rowIndex });\n }\n\n return this;\n }\n\n insertColumn(columnIndex) {\n if (this.trigger(\"insertColumn\", { index: columnIndex })) {\n return;\n }\n\n this.batch(function() {\n this._resizeAddColumn();\n\n var grid = this._grid;\n var columnCount = grid.columnCount;\n\n if (columnIndex + 1 === columnCount) {\n // we just inserted after the last one, no need to shift data\n return;\n }\n\n var frozenColumns = this.frozenColumns();\n\n if (columnIndex < frozenColumns) {\n this.frozenColumns(frozenColumns + 1);\n }\n\n var mergedCells = this._mergedCells.slice();\n\n for (var ci = columnCount; ci >= columnIndex; ci--) {\n var ref = new RangeRef(new CellRef(0, ci), new CellRef(Infinity, ci));\n\n new Range$1(ref, this).clear({ clearAll: true, keepBorders: true });\n\n if (ci === columnIndex) {\n break;\n }\n\n var topLeft = grid.normalize(ref.topLeft);\n var bottomRight = grid.normalize(ref.bottomRight);\n\n var nextRef = new RangeRef(\n new CellRef(topLeft.row, topLeft.col - 1),\n new CellRef(bottomRight.row, bottomRight.col - 1)\n );\n\n this._copyRange(nextRef, topLeft);\n }\n\n this._adjustReferences(\"col\", columnIndex, 1, mergedCells);\n }, {\n recalc: true,\n layout: true,\n insertColumn: { index: columnIndex },\n ref: new RangeRef(new CellRef(0, columnIndex), new CellRef(Infinity, Infinity))\n });\n\n return this;\n }\n\n isEnabledColumn(columnIndex) {\n var ref = new RangeRef(new CellRef(0, columnIndex), new CellRef(Infinity, columnIndex));\n return new Range$1(ref, this).enable();\n }\n\n deleteColumn(columnIndex) {\n if (!this.isEnabledColumn(columnIndex)) {\n return this;\n }\n\n if (this.trigger(\"deleteColumn\", { index: columnIndex })) {\n return;\n }\n\n this.batch(function() {\n var grid = this._grid;\n var columnCount = grid.columnCount;\n\n var frozenColumns = this.frozenColumns();\n\n if (columnIndex < frozenColumns) {\n this.frozenColumns(frozenColumns - 1);\n }\n\n var mergedCells = this._mergedCells.slice();\n\n for (var ci = columnIndex; ci < columnCount; ci++) {\n var ref = new RangeRef(new CellRef(0, ci), new CellRef(Infinity, ci));\n\n new Range$1(ref, this).clear({ clearAll: true, keepBorders: true });\n\n if (ci === columnCount - 1) {\n break;\n }\n\n var topLeft = grid.normalize(ref.topLeft);\n var bottomRight = grid.normalize(ref.bottomRight);\n\n var nextRef = new RangeRef(\n new CellRef(topLeft.row, topLeft.col + 1),\n new CellRef(bottomRight.row, bottomRight.col + 1)\n );\n\n this._copyRange(nextRef, topLeft);\n }\n\n this._adjustReferences(\"col\", columnIndex, -1, mergedCells);\n\n this._resizeDeleteColumn();\n }, {\n recalc: true,\n layout: true,\n deleteColumn: { index: columnIndex },\n ref: new RangeRef(new CellRef(0, columnIndex), new CellRef(Infinity, Infinity))\n });\n\n return this;\n }\n\n _filterRow(rowIndex) {\n this._rows.hide(rowIndex);\n this._filteredRows.value(rowIndex, rowIndex, true);\n this.triggerChange({ layout: true });\n }\n\n hideRow(rowIndex) {\n if (this.trigger(\"hideRow\", { index: rowIndex })) {\n return;\n }\n return this._property(this._rows.hide.bind(this._rows), rowIndex, { layout: true });\n }\n\n unhideRow(rowIndex) {\n if (this.trigger(\"unhideRow\", { index: rowIndex })) {\n return;\n }\n return this._property(this._rows.unhide.bind(this._rows), rowIndex, { layout: true });\n }\n\n isHiddenRow(rowIndex) {\n return this._grid._rows.hidden(rowIndex);\n }\n\n isFilteredRow(rowIndex) {\n return this._filteredRows.value(rowIndex);\n }\n\n columnWidth(columnIndex, width) {\n return this._property(this._columns.value.bind(this._columns, columnIndex, columnIndex), width, { layout: true });\n }\n\n rowHeight(rowIndex, height) {\n return this._property(this._rows.value.bind(this._rows, rowIndex, rowIndex), height, { layout: true });\n }\n\n frozenRows(value) {\n return this._field(\"_frozenRows\", value, { layout: true });\n }\n\n frozenColumns(value) {\n return this._field(\"_frozenColumns\", value, { layout: true });\n }\n\n showGridLines(value) {\n return this._field(\"_showGridLines\", value, { layout: true });\n }\n\n gridLinesColor(value) {\n return this._field(\"_gridLinesColor\", value, { layout: true });\n }\n\n _ref(row, column, numRows, numColumns) {\n var ref = null;\n\n if (row instanceof Ref) {\n return row;\n }\n\n if (row instanceof Range$1) {\n return row._ref.toRangeRef();\n }\n\n if (typeof row === \"string\") {\n ref = calc.parseReference(row);\n } else {\n if (!numRows) {\n numRows = 1;\n }\n\n if (!numColumns) {\n numColumns = 1;\n }\n ref = new RangeRef(new CellRef(row, column), new CellRef(row + numRows - 1, column + numColumns - 1));\n }\n\n return ref;\n }\n\n range(row, column, numRows, numColumns) {\n return new Range$1(this._ref(row, column, numRows, numColumns), this);\n }\n\n _getMergedCells(range) {\n var grid = this._grid;\n var primary = {};\n var secondary = {};\n var hasMerged = false;\n\n this.forEachMergedCell(range, function(ref) {\n var topLeft = ref.topLeft;\n grid.forEach(ref, function(cellRef) {\n if (topLeft.eq(cellRef)) {\n primary[cellRef.print()] = ref;\n hasMerged = true;\n } else if (range.contains(cellRef)) {\n secondary[cellRef.print()] = topLeft;\n hasMerged = true;\n }\n });\n });\n\n return { primary: primary, secondary: secondary, hasMerged: hasMerged };\n }\n\n forEachMergedCell(ref, callback) {\n var selectAll = false;\n\n if (typeof callback === \"undefined\") {\n callback = ref;\n selectAll = true;\n }\n\n this._mergedCells.forEach(function(merged) {\n if (selectAll || merged.intersects(ref)) {\n callback(merged);\n }\n });\n }\n\n forEachFilterHeader(ref, callback) {\n var selectAll = false;\n\n if (typeof callback === \"undefined\") {\n callback = ref;\n selectAll = true;\n }\n\n if (this._filter) {\n var refs = [];\n\n // get refs of all columns\n this._filter.ref.forEachColumn(function(columnRef) {\n if (selectAll || columnRef.intersects(ref)) {\n refs.push(columnRef.topLeft);\n }\n });\n\n // filter out merged references\n this._mergedCells.forEach(function(merged) {\n refs = refs.map(function(ref) {\n if (merged.intersects(ref)) {\n return merged;\n }\n\n return ref;\n });\n });\n\n // use only unique refs\n refs.reduce(function unique(result, element) {\n if (result.indexOf(element) < 0) {\n result.push(element);\n }\n\n return result;\n }, []).forEach(callback);\n }\n }\n\n forEach(ref, callback) {\n var self = this;\n function forEachRange(ref) {\n if (!(ref instanceof RangeRef)) {\n ref = ref.toRangeRef();\n }\n var topLeft = self._grid.normalize(ref.topLeft);\n var bottomRight = self._grid.normalize(ref.bottomRight);\n var ci, ri;\n\n function doIt(value) {\n callback(ri++, ci, value);\n }\n\n for (ci = topLeft.col; ci <= bottomRight.col; ci++) {\n ri = topLeft.row;\n var startCellIndex = self._grid.index(ri, ci);\n var endCellIndex = self._grid.index(bottomRight.row, ci);\n self._properties.forEach(startCellIndex, endCellIndex, doIt);\n }\n }\n\n if (!(ref instanceof RangeRef)) {\n ref = self._ref(ref);\n }\n\n if (ref instanceof UnionRef) {\n // _ref() might still return a UnionRef, for instance, if\n // `ref` happens to be one. Probably an oversight, but it\n // turns out to be useful.\n ref.forEach(forEachRange);\n } else {\n forEachRange(ref);\n }\n }\n\n startResizing(initialPosition) {\n this._initialPosition = initialPosition;\n this._resizeInProgress = true;\n }\n\n startAutoFill() {\n this._autoFillInProgress = true;\n var selection = this.select();\n this._autoFillOrigin = selection;\n this._autoFillDest = selection;\n this.triggerChange({ selection: true });\n }\n\n updateAutoFill(dest, punch, hint, direction) {\n this._autoFillDest = dest;\n this._autoFillPunch = punch;\n this._autoFillHint = hint;\n this._autoFillDirection = direction;\n this.triggerChange({ selection: true });\n }\n\n autoFillRef() {\n return this._autoFillDest;\n }\n\n autoFillPunch() {\n return this._autoFillPunch;\n }\n\n autoFillInProgress() {\n return this._autoFillInProgress;\n }\n\n resizingInProgress() {\n return this._resizeInProgress;\n }\n\n draggingInProgress() {\n return this._draggingInProgress;\n }\n\n completeResizing() {\n if (this._resizeInProgress) {\n this._resizeInProgress = false;\n var hintPosition = this.resizeHintPosition();\n\n if (this._initialPosition && hintPosition) {\n var handlePosition = this.resizeHandlePosition();\n if (handlePosition.col !== -Infinity) {\n this.trigger(\"commandRequest\", {\n command: \"ColumnWidthCommand\",\n options: {\n target: handlePosition.col,\n value: this.columnWidth(handlePosition.col) - (this._initialPosition.x - hintPosition.x)\n }\n });\n } else {\n this.trigger(\"commandRequest\", {\n command: \"RowHeightCommand\",\n options: {\n target: handlePosition.row,\n value: this.rowHeight(handlePosition.row) - (this._initialPosition.y - hintPosition.y)\n }\n });\n }\n } else {\n this.trigger(\"change\", { resize: true });\n }\n }\n }\n\n _visualRange(ref) {\n var merged = this._mergedCells;\n for (var i = merged.length; --i >= 0;) {\n if (merged[i].intersects(ref)) {\n return this.range(merged[i]);\n }\n }\n return this.range(ref);\n }\n\n _renderComment(ref) {\n var comment = null;\n if (ref) {\n var range = this._visualRange(ref);\n comment = range.comment();\n ref = range._ref.toRangeRef().topLeft;\n }\n if (comment) {\n if (!this._commentRef || !ref.eq(this._commentRef)) {\n this._commentRef = ref;\n this.trigger(\"change\", { comment: true });\n }\n } else {\n if (this._commentRef) {\n this._commentRef = null;\n this.trigger(\"change\", { comment: true });\n }\n }\n }\n\n resizeHandlePosition() {\n return this._resizeHandlePosition;\n }\n\n resizeHintPosition(location) {\n if (location !== undefined) {\n this._resizeHintPosition = location;\n this.trigger(\"change\", { resize: true });\n }\n return this._resizeHintPosition;\n }\n\n removeResizeHandle() {\n if (this._resizeHandlePosition) {\n this._resizeHintPosition = undefined;\n this._resizeHandlePosition = undefined;\n this._initialPosition = undefined;\n this.trigger(\"change\", { resize: true });\n }\n }\n\n positionResizeHandle(ref) {\n this._resizeHandlePosition = ref;\n this.trigger(\"change\", { resize: true });\n }\n\n startDragging(data) {\n this._draggingInProgress = data;\n }\n\n completeDragging() {\n var drag = this._draggingInProgress;\n if (drag) {\n this._draggingInProgress = null;\n var drawing = drag.drawing;\n if (drawing.eq(drag.copy)) {\n return;\n }\n if (drawing.topLeftCell) {\n // adjust reference - in case the top-left corner\n // was moving, select the cell beneath it.\n var box = this.drawingBoundingBox(drawing);\n var row = this._rows.indexVisible(box.top);\n var col = this._columns.indexVisible(box.left);\n var ref = new CellRef(row, col);\n var refBox = this.refBoundingBox(ref);\n drawing.offsetX = box.left - refBox.left;\n drawing.offsetY = box.top - refBox.top;\n drawing.topLeftCell = ref;\n this.triggerChange({ dragging: true });\n }\n this.trigger(\"commandRequest\", {\n command: \"DrawingUpdateCommand\",\n options: {\n sheet : this,\n drawing : drawing,\n previous : drag.copy\n }\n });\n }\n }\n\n startSelection(view) {\n if (this.frozenRows() || this.frozenColumns()) {\n this._currentView = null;\n } else if (view && view._sheet === this) {\n this._currentView = view;\n }\n this._selectionInProgress = true;\n }\n\n completeSelection() {\n if (this._selectionInProgress) {\n this._selectionInProgress = false;\n this._resizeHintPosition = undefined;\n this.trigger(\"change\", { selection: true });\n }\n if (this._autoFillInProgress) {\n this._autoFillInProgress = false;\n var dest = this._autoFillDest;\n var origin = this._autoFillOrigin;\n\n if (this._autoFillPunch) { // we just clear data here\n this.trigger(\"commandRequest\", {\n command: \"ClearContentCommand\", options: { operatingRange: this.range(this._autoFillPunch) }\n });\n } else {\n if (!dest.eq(origin)) {\n this.trigger(\"commandRequest\", {\n command: \"AutoFillCommand\", options: { operatingRange: this.range(dest), origin: this.range(origin) }\n });\n } else {\n this.triggerChange({ selection: true });\n }\n }\n\n this._autoFillDest = null;\n this._autoFillPunch = null;\n this._autoFillOrigin = null;\n\n this.select(dest);\n }\n }\n\n selectionInProgress() {\n return this._selectionInProgress;\n }\n\n select(ref, changeActiveCell) {\n var selectionState = this._selectionState();\n\n var expandedRef;\n\n if (ref) {\n ref = this._ref(ref);\n ref = this._grid.normalize(ref);\n expandedRef = this._grid.isAxis(ref) ? ref : this.unionWithMerged(ref);\n }\n\n return selectionState.select(ref, expandedRef, changeActiveCell, this._currentView);\n }\n\n originalSelect() {\n return this._selectionState().originalSelection;\n }\n\n currentSelectionRange() {\n return this._selectionState().currentSelectionRange();\n }\n\n currentOriginalSelectionRange() {\n return this._selectionState().currentOriginalNavigationRange();\n }\n\n currentNavigationRange() {\n return this._selectionState().currentNavigationRange();\n }\n\n nextNavigationRange() {\n return this._selectionState().nextNavigationRange();\n }\n\n previousNavigationRange() {\n return this._selectionState().previousNavigationRange();\n }\n\n selectionRangeIndex() {\n return this._selectionState().selectionRangeIndex;\n }\n\n activeCell(ref) {\n return this._selectionState().activeCell(ref);\n }\n\n originalActiveCell() {\n return this._selectionState().originalActiveCell;\n }\n\n singleCellSelection() {\n return this._selectionState().singleCellSelection();\n }\n\n unionWithMerged(ref) {\n var mergedCells = this._mergedCells;\n\n return ref.map(function(ref) {\n return ref.toRangeRef().union(mergedCells);\n });\n }\n\n trim(ref) {\n var trims = [];\n var grid = this._grid;\n this._properties.forEachProperty(function(property) {\n trims.push(grid.trim(ref, property.list));\n });\n return this.unionWithMerged(ref.topLeft.toRangeRef().union(trims));\n }\n\n focus(ref) {\n if (ref) {\n this._focus = ref.toRangeRef();\n } else {\n var focus = this._focus;\n this._focus = null;\n return focus;\n }\n }\n\n activeCellSelection() {\n return new Range$1(this._grid.normalize(this.activeCell()), this);\n }\n\n selection() {\n return new Range$1(this._grid.normalize(this._selectionState().selection), this);\n }\n\n selectedHeaders() {\n var selection = this.select();\n\n var rows = {};\n var cols = {};\n var allCols = false;\n var allRows = false;\n var maxRow = this._grid.rowCount - 1;\n var maxCol = this._grid.columnCount - 1;\n\n selection.forEach(function(ref) {\n var i;\n var rowState = \"partial\";\n var colState = \"partial\";\n ref = ref.toRangeRef();\n\n var bottomRight = ref.bottomRight;\n var topLeft = ref.topLeft;\n\n var rowSelection = topLeft.col <= 0 && bottomRight.col >= maxCol;\n var colSelection = topLeft.row <= 0 && bottomRight.row >= maxRow;\n\n if (colSelection) { //column selection\n allRows = true;\n colState = \"full\";\n }\n\n if (rowSelection) { //row selection\n allCols = true;\n rowState = \"full\";\n }\n\n if (!colSelection) { //column selection\n for (i = topLeft.row; i <= bottomRight.row; i++) {\n if (rows[i] !== \"full\") {\n rows[i] = rowState;\n }\n }\n }\n\n if (!rowSelection) {\n for (i = topLeft.col; i <= bottomRight.col; i++) {\n if (cols[i] !== \"full\") {\n cols[i] = colState;\n }\n }\n }\n });\n\n return {\n rows: rows,\n cols: cols,\n allRows: allRows,\n allCols: allCols,\n all: allRows && allCols\n };\n }\n\n isInEditMode(isInEdit) {\n if (isInEdit === undefined) {\n return this._inEdit;\n }\n\n this._inEdit = isInEdit;\n\n if (isInEdit) {\n this._editSelection.selection = this._viewSelection.selection.clone();\n this._editSelection.originalSelection = this._viewSelection.originalSelection.clone();\n this._editSelection._activeCell = this._viewSelection._activeCell.clone();\n this._editSelection.originalActiveCell = this._viewSelection.originalActiveCell.clone();\n }\n }\n\n _setFormulaSelections(selection) {\n this._formulaSelections = (selection || []).slice();\n this.triggerChange({ selection: true });\n }\n\n _viewActiveCell() {\n return this._viewSelection._activeCell.toRangeRef();\n }\n\n toJSON() {\n var positions = {};\n\n var rows = this._rows.toJSON(\"height\", positions);\n var columns = this._columns.toJSON(\"width\", {});\n var viewSelection = this._viewSelection;\n var hyperlinks = [];\n var defaultCellStyle = this._defaultCellStyle || {};\n\n function clearDefaultStyle(cell) {\n Object.keys(defaultCellStyle).forEach(function(key) {\n if (cell[key] === defaultCellStyle[key]) {\n delete cell[key];\n }\n });\n }\n\n this.forEach(SHEETREF, function(row, col, cell) {\n clearDefaultStyle(cell);\n\n if (Object.keys(cell).length === 0) {\n return;\n }\n\n if (cell.link) {\n hyperlinks.push({\n ref : Ref.display(null, row, col),\n target : cell.link\n });\n }\n\n var position = positions[row];\n\n if (position === undefined) {\n position = rows.length;\n rows.push({ index: row });\n positions[row] = position;\n }\n\n row = rows[position];\n\n cell.index = col;\n\n if (row.cells === undefined) {\n row.cells = [];\n }\n\n if (cell.formula) {\n // stringify Formula object.\n if (cell.formula.arrayFormulaRange) {\n cell.formula = {\n src: cell.formula.toString(),\n ref: cell.formula.arrayFormulaRange.toString()\n };\n } else {\n cell.formula = cell.formula.toString();\n }\n }\n\n if (cell.validation) {\n cell.validation = cell.validation.toJSON();\n }\n\n if (cell.color) {\n cell.color = parseColor(cell.color).toCss();\n }\n\n if (cell.background) {\n cell.background = parseColor(cell.background).toCss();\n }\n\n if (cell.borderTop && cell.borderTop.color) {\n cell.borderTop.color = parseColor(cell.borderTop.color).toCss();\n }\n\n if (cell.borderBottom && cell.borderBottom.color) {\n cell.borderBottom.color = parseColor(cell.borderBottom.color).toCss();\n }\n\n if (cell.borderRight && cell.borderRight.color) {\n cell.borderRight.color = parseColor(cell.borderRight.color).toCss();\n }\n\n if (cell.borderLeft && cell.borderLeft.color) {\n cell.borderLeft.color = parseColor(cell.borderLeft.color).toCss();\n }\n\n row.cells.push(cell);\n });\n\n var json = {\n name: this._name(),\n state: this._state(),\n rows: rows,\n columns: columns,\n selection: viewSelection.selection.toString(),\n activeCell: viewSelection.activeCell().toString(),\n frozenRows: this.frozenRows(),\n frozenColumns: this.frozenColumns(),\n showGridLines: this.showGridLines(),\n gridLinesColor: this.gridLinesColor(),\n mergedCells: this._mergedCells.map(function(ref) {\n return ref.toString();\n }),\n hyperlinks: hyperlinks,\n defaultCellStyle: defaultCellStyle,\n drawings: this._drawings.map(function(dr) {\n return dr.toJSON();\n })\n };\n\n if (this._sort) {\n json.sort = {\n ref: this._sort.ref.toString(),\n columns: this._sort.columns.map(function(column) {\n return {\n index: column.index,\n ascending: column.ascending\n };\n })\n };\n }\n\n if (this._filter) {\n json.filter = {\n ref: this._filter.ref.toString(),\n columns: this._filter.columns.map(function(column) {\n var filter = column.filter.toJSON();\n filter.index = column.index;\n return filter;\n })\n };\n }\n\n return json;\n }\n\n fromJSON(json) {\n this.batch(function() {\n if (json.name !== undefined) {\n this._name(json.name);\n }\n\n if (json.frozenColumns !== undefined) {\n this.frozenColumns(json.frozenColumns);\n }\n\n if (json.frozenRows !== undefined) {\n this.frozenRows(json.frozenRows);\n }\n\n if (json.columns !== undefined) {\n this._columns.fromJSON(\"width\", json.columns);\n }\n\n if (json.rows !== undefined) {\n this._resizeForJSON(json.rows);\n this._rows.fromJSON(\"height\", json.rows);\n\n for (var ri = 0; ri < json.rows.length; ri++) {\n var row = json.rows[ri];\n var rowIndex = row.index;\n\n if (rowIndex === undefined) {\n rowIndex = ri;\n }\n\n if (row.cells) {\n for (var ci = 0; ci < row.cells.length; ci++) {\n var cell = row.cells[ci];\n var columnIndex = cell.index;\n\n if (columnIndex === undefined) {\n columnIndex = ci;\n }\n\n if (cell.formula) {\n var isArray = typeof cell.formula != \"string\";\n var src = isArray ? cell.formula.src : cell.formula;\n var formula = this._compileFormula(rowIndex, columnIndex, src);\n if (isArray) {\n formula.setArrayFormulaRange(\n calc.parseReference(cell.formula.ref));\n }\n cell.formula = formula;\n }\n\n if (cell.validation) {\n cell.validation = this._compileValidation(rowIndex, columnIndex, cell.validation);\n }\n\n this._properties.fromJSON(this._grid.index(rowIndex, columnIndex), cell);\n }\n }\n }\n }\n\n if (json.drawings) {\n this._drawings = json.drawings.map(Drawing.fromJSON);\n }\n\n if (json.selection) {\n this._viewSelection.selection =\n this._viewSelection.originalSelection = this._ref(json.selection);\n }\n\n if (json.activeCell) {\n var activeCellRef = this._ref(json.activeCell);\n\n this._viewSelection._activeCell = activeCellRef.toRangeRef();\n this._viewSelection.originalActiveCell = activeCellRef.first();\n }\n\n\n if (json.mergedCells) {\n json.mergedCells.forEach(function(ref) {\n this.range(ref).merge();\n }, this);\n }\n\n if (json.filter) {\n var ref = json.filter.ref;\n var columns = json.filter.columns === undefined ? [] : json.filter.columns;\n\n if (!ref) ; else {\n this._filter = {\n ref: this._ref(ref),\n columns: columns.map(function(column) {\n return {\n index: column.index,\n filter: Filter.create(column)\n };\n })\n };\n\n this._refreshFilter();\n }\n }\n\n if (json.showGridLines !== undefined) {\n this._showGridLines = json.showGridLines;\n }\n\n this._gridLinesColor = json.gridLinesColor;\n\n if (json.sort) {\n this._sortBy(this._ref(json.sort.ref), json.sort.columns.slice(0));\n }\n });\n\n this._rows._refresh();\n this._columns._refresh();\n }\n\n formula(ref) {\n return this._properties.get(\"formula\", this._grid.cellRefIndex(ref));\n }\n\n validation(ref) {\n return this._properties.get(\"validation\", this._grid.cellRefIndex(ref));\n }\n\n // NOTE: resetFormulas should be called first. We don't do it in this\n // function because it should be done from the Workbook object for all\n // sheets.\n resetFormulas() {\n this._forFormulas(function(formula) {\n formula.reset();\n });\n }\n\n resetValidations() {\n this._forValidations(function(validation) {\n validation.reset();\n });\n }\n\n recalc(context, callback) {\n var formulas = this._properties.get(\"formula\").values();\n var count = formulas.length, pending = 0, i = 0;\n if (!count && callback) {\n return callback();\n }\n function next() {\n pending--;\n if (i === count && !pending) {\n callback();\n }\n }\n while (i < count) {\n pending++;\n formulas[i++].value.exec(context, callback ? next : null);\n }\n }\n\n revalidate(context) {\n var self = this;\n this._forValidations(function(validation) {\n var cellRef = new CellRef(validation.row, validation.col);\n var ref = new RangeRef(cellRef, cellRef);\n validation.exec(context, self._get(ref, \"value\"), self._get(ref, \"format\"));\n });\n }\n\n _value(row, col, value) {\n var index = this._grid.index(row, col);\n\n if (value !== undefined) {\n this._properties.set(\"value\", index, index, value);\n } else {\n return this._properties.get(\"value\", index);\n }\n }\n\n _validation(row, col) {\n var index = this._grid.index(row, col);\n\n return this._properties.get(\"validation\", index);\n }\n\n _compileValidation(row, col, curValidation) {\n if (curValidation instanceof validationExport.Validation) {\n // do not alter an existing object.\n return curValidation.clone(this._name(), row, col);\n }\n\n if (curValidation.from != null) {\n curValidation.from = (curValidation.from + \"\").replace(/^=/, \"\");\n }\n\n if (curValidation.to != null) {\n curValidation.to = (curValidation.to + \"\").replace(/^=/, \"\");\n }\n\n return validationExport.compile(this._name(), row, col, curValidation);\n }\n\n _compileFormula(row, col, f) {\n f = f.replace(/^=/, \"\");\n f = calc.parseFormula(this._name(), row, col, f);\n return calc.compile(f);\n }\n\n _copyValuesInRange(topLeft, bottomRight, value, property) {\n var ci, start, end;\n\n for (ci = topLeft.col; ci <= bottomRight.col; ci++) {\n start = this._grid.index(topLeft.row, ci);\n end = this._grid.index(bottomRight.row, ci);\n for (var index = start, row = topLeft.row; index <= end; ++index, ++row) {\n // Even if it's the same formula in multiple cells, we\n // need to have different Formula objects, hence cloning\n // it. Don't worry, clone() is fast.\n value = value.clone(this._name(), row, ci);\n this._properties.set(property, index, index, value);\n }\n }\n return value;\n }\n\n _set(ref, name, value) {\n var topLeft = this._grid.normalize(ref.topLeft);\n var bottomRight = this._grid.normalize(ref.bottomRight);\n var ci, start, end;\n\n if (typeof value == \"number\") {\n // Apparently, Excel (and LibreOffice and Google\n // Sheets) will limit precision to 14 digits; type:\n // -4.2524999999999995 and you get -4.2525. The\n // formula engine already does something similar for\n // intermediate formula results, but we must do it\n // here as well for original input values.\n value = calc.runtime.limitPrecision(value);\n }\n\n if (value && name === \"formula\") {\n if (typeof value == \"string\") {\n // get Formula object. we don't care about handling errors\n // here since it won't be called interactively.\n value = this._compileFormula(topLeft.row, topLeft.col, value);\n }\n\n value = this._copyValuesInRange(topLeft, bottomRight, value, \"formula\");\n\n } else if (value && name === \"validation\") {\n value = this._compileValidation(topLeft.row, topLeft.col, value);\n value = this._copyValuesInRange(topLeft, bottomRight, value, \"validation\");\n\n } else {\n for (ci = topLeft.col; ci <= bottomRight.col; ci++) {\n start = this._grid.index(topLeft.row, ci);\n end = this._grid.index(bottomRight.row, ci);\n this._properties.set(name, start, end, value);\n if (name === \"formula\") {\n // removing a formula, must clear value.\n this._properties.set(\"value\", start, end, null);\n }\n }\n }\n }\n\n _get(ref, name) {\n var topLeft = this._grid.normalize(ref.topLeft);\n\n var index = this._grid.index(topLeft.row, topLeft.col);\n\n return this._properties.get(name, index);\n }\n\n batch(callback, reason) {\n var suspended = this.suspendChanges();\n\n this.suspendChanges(true);\n this._valueChanged = false;\n\n callback.call(this);\n\n if (!reason) {\n reason = { recalc: true };\n }\n if (this._valueChanged) {\n reason.isValue = true;\n }\n\n return this.suspendChanges(suspended).triggerChange(reason);\n }\n\n _sortBy(ref, columns) {\n var indices = null;\n\n columns.forEach(function(column) {\n indices = this._sorter.sortBy(ref, column.index, this._properties.get(\"value\"), column.ascending, indices);\n }, this);\n\n this._sort = {\n ref: ref,\n columns: columns\n };\n\n this._refreshFilter();\n\n this.forEach(ref, function(row, col, props) {\n var formula = props.formula;\n if (formula) {\n var diff = row - formula.row;\n if (diff !== 0) {\n var start = diff > 0 ? formula.row : formula.row + diff;\n formula.adjust(this.name(), \"row\", start, diff);\n }\n }\n }.bind(this));\n\n this.triggerChange({ recalc: true });\n }\n\n _refreshFilter() {\n if (this._filter) {\n this._filterBy(this._filter.ref, this._filter.columns);\n }\n }\n\n _filterBy(ref, columns) {\n this.batch(function() {\n for (var ri = ref.topLeft.row; ri <= ref.bottomRight.row; ri++) {\n if (this.isFilteredRow(ri)) {\n this._filteredRows.value(ri, ri, false);\n this._rows.unhide(ri);\n }\n }\n\n columns.forEach(function(column) {\n // do not filter header row\n var columnRef = ref.resize({ top: 1 }).toColumn(column.index);\n\n var cells = [];\n\n if (columnRef === NULLREF) {\n return;\n }\n\n this.forEach(columnRef, function(row, col, cell) {\n cell.row = row;\n cells.push(cell);\n });\n\n column.filter.prepare(cells);\n\n for (var ci = 0; ci < cells.length; ci++) {\n var cell = cells[ci];\n var value = column.filter.value(cell);\n\n if (column.filter.matches(value) === false) {\n this._filterRow(cell.row);\n }\n }\n }, this);\n\n this._filter = {\n ref: ref,\n columns: columns\n };\n }, { recalc: true, layout: true, filter: true });\n }\n\n filterColumn(ref) {\n var filterRef = this.filter().ref;\n return ref.toRangeRef().topLeft.col - filterRef.topLeft.col;\n }\n\n filter() {\n return this._filter;\n }\n\n clearFilter(spec) {\n this._clearFilter(spec instanceof Array ? spec : [spec]);\n }\n\n _clearFilter(indices) {\n if (this._filter) {\n this.batch(function() {\n this._filter.columns = this._filter.columns.filter(function(column) {\n return indices.indexOf(column.index) < 0;\n });\n\n this._refreshFilter();\n }, { recalc: true, layout: true, filter: true });\n }\n }\n\n getAxisState() {\n return {\n rows: this._rows.getState(),\n columns: this._columns.getState()\n };\n }\n\n setAxisState(state) {\n this._rows.setState(state.rows);\n this._columns.setState(state.columns);\n this.triggerChange({ layout: true });\n }\n\n getState() {\n return {\n rows: this._rows.getState(),\n columns: this._columns.getState(),\n mergedCells: this._mergedCells.map(function(cell) { return cell.clone(); }),\n properties: this._properties.getState()\n };\n }\n\n setState(state) {\n this._rows.setState(state.rows);\n this._columns.setState(state.columns);\n this._mergedCells = state.mergedCells;\n this._properties.setState(state.properties);\n this.triggerChange(ALL_REASONS);\n }\n\n _merge(ref) {\n var mergedCells = this._mergedCells;\n\n var sheet = this;\n var mergedRef;\n this.batch(function() {\n mergedRef = ref.map(function(ref) {\n if (ref instanceof CellRef) {\n return ref;\n }\n\n var currentRef = ref.toRangeRef().union(mergedCells, function(ref) {\n mergedCells.splice(mergedCells.indexOf(ref), 1);\n });\n\n var range = new Range$1(currentRef, sheet);\n var formula = range._get(\"formula\");\n var value = range.value();\n var format = range.format();\n var background = range.background();\n\n range.value(null);\n range.format(null);\n range.background(null);\n\n var topLeft = new Range$1(currentRef.collapse(), sheet);\n\n if (formula) {\n topLeft._set(\"formula\", formula);\n } else {\n topLeft.value(value);\n }\n topLeft.format(format);\n topLeft.background(background);\n\n mergedCells.push(currentRef);\n return currentRef;\n });\n\n var viewSelection = sheet._viewSelection;\n\n viewSelection.selection = sheet.unionWithMerged(viewSelection.originalSelection);\n viewSelection._activeCell = sheet.unionWithMerged(viewSelection.originalActiveCell);\n }, { activeCell: true, selection: true });\n\n return mergedRef;\n }\n\n _useCultureDecimals() {\n return this._workbook && this._workbook.options.useCultureDecimals;\n }\n\n withCultureDecimals(f) {\n var dot = \".\";\n if (this._useCultureDecimals()) {\n dot = culture().numbers.symbols.decimal;\n }\n return calc.withDecimalSeparator(dot, f);\n }\n\n drawingBoundingBox(drawing) {\n var left = drawing.offsetX;\n var top = drawing.offsetY;\n if (drawing.topLeftCell) {\n // offsets are relative to cell\n left += this._columns.sum(0, drawing.topLeftCell.col - 1);\n top += this._rows.sum(0, drawing.topLeftCell.row - 1);\n }\n return new Rectangle(left, top, drawing.width, drawing.height);\n }\n\n refBoundingBox(ref) {\n return this._grid.rectangle(ref.toRangeRef());\n }\n\n addDrawing(drw, activate) {\n if (!(drw instanceof Drawing)) {\n drw = new Drawing(drw);\n }\n this._drawings.push(drw);\n if (activate) {\n this._activeDrawing = drw;\n }\n this.triggerChange({ layout: true });\n return drw;\n }\n\n removeDrawing(drawing) {\n var pos = this._drawings.indexOf(drawing);\n if (pos >= 0) {\n this._drawings.splice(pos, 1);\n this.triggerChange({ layout: true });\n }\n }\n\n usesImage(img) {\n for (var i = this._drawings.length; --i >= 0;) {\n if (this._drawings[i].image === img) {\n return true;\n }\n }\n return false;\n }\n\n isMerged(ref) {\n var merged = this._mergedCells;\n for (var i = merged.length; --i >= 0;) {\n if (merged[i].eq(ref)) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass Drawing {\n constructor(args) {\n this.reset(args);\n }\n\n toJSON() {\n return {\n topLeftCell: this.topLeftCell.toString(),\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n width: this.width,\n height: this.height,\n image: this.image,\n opacity: this.opacity\n };\n }\n\n clone() {\n return new Drawing(this);\n }\n\n reset(dr) {\n var anchor = dr.topLeftCell;\n if (typeof anchor == \"string\") {\n anchor = calc.parseReference(anchor);\n }\n this.topLeftCell = anchor;\n this.offsetX = dr.offsetX || 0;\n this.offsetY = dr.offsetY || 0;\n this.width = dr.width;\n this.height = dr.height;\n this.image = dr.image;\n this.opacity = dr.opacity != null ? dr.opacity : 1;\n }\n\n eq(dr) {\n return ((!this.topLeftCell && !dr.topLeftCell)\n || (this.topLeftCell && dr.topLeftCell\n && this.topLeftCell.eq(dr.topLeftCell)))\n && this.offsetX === dr.offsetX\n && this.offsetY === dr.offsetY\n && this.width === dr.width\n && this.height === dr.height\n && this.image === dr.image\n && this.opacity === dr.opacity;\n }\n}\n\nDrawing.fromJSON = function(args) {\n return new Drawing(args);\n};\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable key-spacing */\nlet PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction mm2pt(mm) {\n return mm * (72 / 25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n let m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n let num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] === \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n let options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n let paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n let margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\n/* eslint-disable no-nested-ternary */\n/* eslint-disable default-case */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable no-else-return */\n/* eslint-disable key-spacing */\n/* eslint-disable eqeqeq */\n/* eslint-disable no-param-reassign */\n\n\nlet GUIDELINE_WIDTH = 0.8;\n\n// This takes a list of row heights and the page height, and\n// produces a list of Y coordinates for each row, such that rows\n// are not truncated across pages. However, the algorithm will\n// decide to truncate a row in the event that more than\n// `maxEmpty` (default 0.2) of the available space would\n// otherwise be left blank.\n//\n// It will be used for horizontal splitting too (will receive\n// column widths and page width, and produce a list of X coords).\n//\n// If the third argument (headerRows) is not null, it specifies a\n// number of rows to repeat on each page. On pages other than the\n// first, the necessary space will be skipped at the top. Header\n// coordinates (except for the first page) are pushed in\n// headerCoords.\nfunction distributeCoords(heights, pageHeight, maxEmpty, headerRows, headerCoords) {\n let curr = 0;\n let out = [];\n let bottom = pageHeight;\n let header = 0;\n if (pageHeight && maxEmpty) {\n maxEmpty *= pageHeight;\n }\n heights.forEach(function(h, i) {\n if (headerRows != null && i < headerRows) {\n header += h;\n }\n if (pageHeight && curr + h > bottom) {\n if (bottom - curr < maxEmpty) {\n // align to next page\n curr = pageHeight * Math.ceil(curr / pageHeight) + header;\n if (header > 0) {\n headerCoords.push(curr - header);\n }\n }\n // update bottom anyway; don't just add pageHeight, as\n // we might need multiple pages for the pathological\n // case of one row higher than the page.\n bottom += pageHeight * Math.ceil(h / pageHeight);\n }\n out.push(curr);\n curr += h;\n });\n out.push(curr);\n return out;\n}\n\nfunction doLayout(sheet, range, options) {\n // normalize reference so we don't have to deal with Infinity here.\n let grid = sheet._grid;\n range = grid.normalize(range);\n\n let wholeRect = grid.rectangle(range);\n let drawings = [];\n sheet._drawings.forEach(function(d) {\n let box = sheet.drawingBoundingBox(d);\n if (box.intersects(wholeRect)) {\n drawings.push({\n drawing: d,\n box: box.offset(-wholeRect.left, -wholeRect.top)\n });\n }\n });\n\n // 1. obtain the list of cells that need to be printed, the\n // row heights and column widths. Place in each cell row,\n // col (relative to range, i.e. first is 0,0), rowspan,\n // colspan and merged. also place a list of drawings\n // anchored to that cell.\n let cells = [];\n let rowHeights = [];\n let colWidths = [];\n let mergedCells = sheet._getMergedCells(range);\n\n let maxRow = -1, maxCol = -1;\n sheet.forEach(range, function(row, col, cell) {\n let relrow = row - range.topLeft.row;\n let relcol = col - range.topLeft.col;\n let rh = sheet.rowHeight(row);\n let cw = sheet.columnWidth(col);\n if (!options.forScreen) {\n // for printing we'll need the list of anchored\n // drawings so that we can adjust them after page\n // splitting.\n cell.drawings = drawings.filter(function(d) {\n let tl = d.drawing.topLeftCell;\n if (tl && tl.row == row && tl.col == col) {\n maxRow = Math.max(maxRow, sheet._rows.index(d.box.bottom));\n maxCol = Math.max(maxCol, sheet._columns.index(d.box.right));\n return true;\n }\n });\n }\n if (!relcol) {\n rowHeights.push(rh);\n }\n if (!relrow) {\n colWidths.push(cw);\n }\n let id = new CellRef(row, col).print();\n if (mergedCells.secondary[id]) {\n return;\n }\n cell.row = relrow;\n cell.col = relcol;\n let m = mergedCells.primary[id];\n if (m) {\n delete mergedCells.primary[id];\n cell.merged = true;\n cell.rowspan = m.height();\n cell.colspan = m.width();\n if (options.forScreen) {\n cell.width = sheet._columns.sum(m.topLeft.col, m.bottomRight.col);\n cell.height = sheet._rows.sum(m.topLeft.row, m.bottomRight.row);\n }\n } else {\n cell.rowspan = 1;\n cell.colspan = 1;\n }\n if (!sheet._grid._columns.sum(col, col + cell.colspan - 1) ||\n !sheet._grid._rows.sum(row, row + cell.rowspan - 1)) {\n return;\n }\n let nonEmpty = options.forScreen || shouldDrawCell(cell);\n if (!(options.emptyCells || nonEmpty)) {\n return;\n }\n if (nonEmpty) {\n maxRow = Math.max(maxRow, relrow + cell.rowspan - 1);\n maxCol = Math.max(maxCol, relcol + cell.colspan - 1);\n } else {\n cell.empty = true;\n }\n cells.push(cell);\n });\n\n if (!options.forScreen) {\n // keep only the drawable area\n rowHeights = rowHeights.slice(0, maxRow + 1);\n colWidths = colWidths.slice(0, maxCol + 1);\n }\n\n let pageWidth = options.pageWidth;\n let pageHeight = options.pageHeight;\n let scaleFactor = options.scale || 1;\n\n // when fitWidth is requested, we must update the page size\n // with the corresponding scale factor; the algorithm below\n // (2) will continue to work, just drawing on a bigger page.\n if (options.fitWidth) {\n let width = colWidths.reduce(sum, 0);\n if (width > pageWidth) {\n scaleFactor = pageWidth / width;\n }\n }\n pageWidth = Math.ceil(pageWidth / scaleFactor);\n pageHeight = Math.ceil(pageHeight / scaleFactor);\n\n // 2. calculate top, left, bottom, right, width and height for\n // printable cells. Merged cells will be split across\n // pages, unless the first row/col is shifted to next page.\n // boxWidth and boxHeight get the complete drawing size.\n // Note that cell coordinates keep increasing, i.e. they\n // are not reset to zero for a new page. The print\n // function translates the view to current page.\n let hyCoords = []; // will receive header Y coordinates, if needed\n let yCoords = distributeCoords(rowHeights, pageHeight || 0, options.maxEmpty,\n options.headerRows, hyCoords);\n let xCoords = distributeCoords(colWidths, pageWidth || 0, options.maxEmpty);\n let boxWidth = 0;\n let boxHeight = 0;\n let headerCells = [];\n cells = cells.filter(function(cell) {\n if (cell.empty && (cell.row > maxRow || cell.col > maxCol)) {\n return false;\n }\n if (options.headerRows && cell.row < options.headerRows) {\n headerCells.push(cell);\n }\n cell.left = xCoords[cell.col];\n cell.top = yCoords[cell.row];\n if (cell.merged) {\n if (!options.forScreen) {\n cell.right = orlast(xCoords, cell.col + cell.colspan);\n cell.bottom = orlast(yCoords, cell.row + cell.rowspan);\n cell.width = cell.right - cell.left;\n cell.height = cell.bottom - cell.top;\n } else {\n cell.right = cell.left + cell.width;\n cell.bottom = cell.top + cell.height;\n }\n } else {\n cell.width = colWidths[cell.col];\n cell.height = rowHeights[cell.row];\n cell.bottom = cell.top + cell.height;\n cell.right = cell.left + cell.width;\n }\n if (!options.forScreen) {\n // page breaking will shift cell coordinates. adjust\n // anchored drawings.\n cell.drawings.forEach(function(d) {\n let box = d.box;\n box.left = cell.left + d.drawing.offsetX;\n box.top = cell.top + d.drawing.offsetY;\n box.right = box.left + box.width;\n box.bottom = box.top + box.height;\n });\n }\n boxWidth = Math.max(boxWidth, cell.right);\n boxHeight = Math.max(boxHeight, cell.bottom);\n return true;\n });\n\n // 3. if any merged cells remain in \"primary\", they start\n // outside the printed range and we should still display\n // them partially.\n Object.keys(mergedCells.primary).forEach(function(id) {\n let ref = mergedCells.primary[id];\n sheet.forEach(ref.topLeft.toRangeRef(), function(row, col, cell) {\n let relrow = row - range.topLeft.row;\n let relcol = col - range.topLeft.col;\n cell.merged = true;\n cell.colspan = ref.width();\n cell.rowspan = ref.height();\n if (relrow < 0) {\n cell.top = -sheet._rows.sum(row, row - relrow - 1);\n } else {\n cell.top = yCoords[relrow];\n }\n if (relcol < 0) {\n cell.left = -sheet._columns.sum(col, col - relcol - 1);\n } else {\n cell.left = xCoords[relcol];\n }\n cell.height = sheet._rows.sum(ref.topLeft.row, ref.bottomRight.row);\n cell.width = sheet._columns.sum(ref.topLeft.col, ref.bottomRight.col);\n if (cell.height > 0 && cell.width > 0) {\n // zero means a fully hidden merged cell (all rows/columns are hidden)\n // https://github.com/telerik/kendo-ui-core/issues/1794\n cell.right = cell.left + cell.width;\n cell.bottom = cell.top + cell.height;\n cell.row = relrow;\n cell.col = relcol;\n cells.push(cell);\n }\n });\n });\n\n // 4. replicate header rows on all pages\n if (options.headerRows) {\n hyCoords.forEach(function(y) {\n headerCells.forEach(function(cell) {\n cell = clone(cell);\n cell.top += y;\n cell.bottom = cell.top + cell.height;\n cells.push(cell);\n });\n yCoords.push(y);\n });\n yCoords.sort(orderCoords);\n }\n\n return {\n width : boxWidth,\n height : boxHeight,\n cells : cells.sort(orderCells),\n scale : scaleFactor,\n xCoords : xCoords,\n yCoords : yCoords,\n drawings : drawings\n };\n}\n\nfunction clone(hash, target) {\n if (!target) {\n target = {};\n }\n if (Object.assign) {\n return Object.assign(target, hash);\n }\n return Object.keys(hash).reduce(function(copy, key) {\n copy[key] = hash[key];\n return copy;\n }, target);\n}\n\nfunction sameBorder(a, b) {\n return a.size === b.size && a.color === b.color;\n}\n\nfunction sum(a, b) {\n return a + b;\n}\n\nfunction orlast(a, i) {\n return i < a.length ? a[i] : a[a.length - 1];\n}\n\nfunction shouldDrawCell(cell) {\n return cell.value != null\n || cell.merged\n || cell.background != null\n || cell.borderRight != null\n || cell.borderBottom != null\n || cell.dBorders != null\n || (cell.validation != null && !cell.validation.value)\n || (cell.drawings && cell.drawings.length);\n}\n\nfunction orderCells(a, b) {\n if (a.top < b.top) {\n return -1;\n } else if (a.top == b.top) {\n if (a.left < b.left) {\n return -1;\n } else if (a.left == b.left) {\n return 0;\n } else {\n return 1;\n }\n } else {\n return 1;\n }\n}\n\nfunction orderCoords(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction drawLayout(sheet, layout, group, options) {\n // options:\n // - pageWidth\n // - pageHeight\n // - fitWidth\n // - hCenter\n // - vCenter\n let ncols = Math.ceil(layout.width / options.pageWidth);\n let nrows = Math.ceil(layout.height / options.pageHeight);\n let pageWidth = Math.ceil(options.pageWidth / layout.scale);\n let pageHeight = Math.ceil(options.pageHeight / layout.scale);\n\n for (let j = 0; j < nrows; ++j) {\n for (let i = 0; i < ncols; ++i) {\n addPage(j, i);\n }\n }\n\n function addPage(row, col) {\n let left = col * pageWidth;\n let right = left + pageWidth;\n let top = row * pageHeight;\n let bottom = top + pageHeight;\n let endbottom = 0, endright = 0;\n\n function isInside(box) {\n if (box.right <= left || box.left >= right ||\n box.bottom <= top || box.top >= bottom) {\n return false;\n }\n endbottom = Math.max(box.bottom, endbottom);\n endright = Math.max(box.right, endright);\n return true;\n }\n\n // XXX: this can be optimized - discard cells that won't\n // be used again, and don't walk cells that stand no\n // chance to fit.\n let cells = layout.cells.filter(isInside);\n\n let drawings = layout.drawings.filter(function(d) {\n return isInside(d.box);\n });\n\n // merged cells might stretch beyond page; limit to that\n endbottom = Math.min(endbottom, bottom);\n endright = Math.min(endright, right);\n\n if (cells.length || drawings.length) {\n let page = new drawing.Group();\n group.append(page);\n // page.clip(drawing.Path.fromRect(\n // new geometry.Rect([ 0, 0 ],\n // [ options.pageWidth, options.pageHeight ])));\n\n let content = new drawing.Group();\n page.append(content);\n\n content.clip(drawing.Path.fromRect(\n new geometry.Rect([ left - 1, top - 1 ], [ endright + 1, endbottom + 1 ])\n ));\n\n let matrix = geometry.Matrix.scale(layout.scale, layout.scale)\n .multiplyCopy(geometry.Matrix.translate(-left, -top));\n\n if (options.hCenter || options.vCenter) {\n matrix = matrix.multiplyCopy(\n geometry.Matrix.translate(\n options.hCenter ? (right - endright) / 2 : 0,\n options.vCenter ? (bottom - endbottom) / 2 : 0)\n );\n }\n\n content.transform(matrix);\n\n if (options.guidelines) {\n let prev = null;\n layout.xCoords.forEach(function(x) {\n x = Math.min(x, endright);\n if (x !== prev && x >= left && x <= right) {\n prev = x;\n content.append(\n new drawing.Path()\n .moveTo(x, top)\n .lineTo(x, endbottom)\n .close()\n .stroke(options.guideColor, GUIDELINE_WIDTH)\n );\n }\n });\n prev = null;\n layout.yCoords.forEach(function(y) {\n y = Math.min(y, endbottom);\n if (y !== prev && y >= top && y <= bottom) {\n prev = y;\n content.append(\n new drawing.Path()\n .moveTo(left, y)\n .lineTo(endright, y)\n .close()\n .stroke(options.guideColor, GUIDELINE_WIDTH)\n );\n }\n });\n }\n\n let borders = Borders();\n cells.forEach(function(cell) {\n drawCell$1(cell, content, options);\n borders.add(cell, sheet);\n });\n\n let bordersGroup = new drawing.Group();\n borders.vert.forEach(function(a) {\n a.forEach(function(b) {\n if (!b.rendered) {\n b.rendered = true;\n bordersGroup.append(\n new drawing.Path()\n .moveTo(b.x, b.top)\n .lineTo(b.x, b.bottom)\n .close()\n .stroke(b.color, b.size)\n );\n }\n });\n });\n borders.horiz.forEach(function(a) {\n a.forEach(function(b) {\n if (!b.rendered) {\n b.rendered = true;\n bordersGroup.append(\n new drawing.Path()\n .moveTo(b.left, b.y)\n .lineTo(b.right, b.y)\n .close()\n .stroke(b.color, b.size)\n );\n }\n });\n });\n content.append(bordersGroup);\n\n drawings.forEach(function(d) {\n let drawing = d.drawing;\n let image = drawing.image;\n if (image != null) {\n let box = d.box;\n let url = sheet._workbook.imageUrl(image);\n content.append(\n new drawing.Image(url, new geometry.Rect(\n [ box.left, box.top ],\n [ box.width, box.height ]\n )).opacity(drawing.opacity)\n );\n }\n });\n }\n }\n}\n\nfunction drawCell$1(cell, content, options) {\n let g = new drawing.Group();\n content.append(g);\n let rect = new geometry.Rect([ cell.left, cell.top ],\n [ cell.width, cell.height ]);\n if (cell.background || cell.merged) {\n let r2d2 = rect;\n if (options.guidelines) {\n r2d2 = rect.clone();\n r2d2.origin.x += GUIDELINE_WIDTH / 2 + 0.1;\n r2d2.origin.y += GUIDELINE_WIDTH / 2 + 0.1;\n r2d2.size.width -= GUIDELINE_WIDTH + 0.2;\n r2d2.size.height -= GUIDELINE_WIDTH + 0.2;\n }\n g.append(\n new drawing.Rect(r2d2)\n .fill(cell.background || \"#fff\")\n .stroke(null)\n );\n }\n if (cell.dBorders) {\n if (cell.dBorders.type & 2) {\n g.append(\n new drawing.Path()\n .moveTo(cell.left, cell.bottom)\n .lineTo(cell.right, cell.top)\n .stroke(cell.dBorders.color, cell.dBorders.size)\n );\n }\n if (cell.dBorders.type & 1) {\n g.append(\n new drawing.Path()\n .moveTo(cell.left, cell.top)\n .lineTo(cell.right, cell.bottom)\n .stroke(cell.dBorders.color, cell.dBorders.size)\n );\n }\n }\n let val = cell.value;\n if (val != null) {\n let type = typeof val == \"number\" ? \"number\" : null;\n let clip = new drawing.Group();\n clip.clip(drawing.Path.fromRect(rect));\n g.append(clip);\n let f, format = cell.format;\n if (!format && type == \"number\" && val != Math.floor(val)) {\n format = \"0.##############\";\n }\n if (format) {\n f = formatting.textAndColor(val, format);\n val = f.text;\n if (f.type) {\n type = f.type;\n }\n } else {\n val += \"\";\n }\n if (!cell.textAlign) {\n switch (type) {\n case \"number\":\n case \"date\":\n case \"percent\":\n case \"currency\":\n cell.textAlign = \"right\";\n break;\n case \"boolean\":\n cell.textAlign = \"center\";\n break;\n }\n }\n drawText(val, (f && f.color) || cell.color || \"#000\", cell, clip);\n }\n}\n\nfunction applyIndent(cell, style) {\n if (cell.indent) {\n // OOXML spec states the indent is \"An integer value,\n // where an increment of 1 represents 3 spaces\". This, of\n // course, bears no resemblance to what Excel actually\n // does, so we need magic numbers here.\n let indent = 1.4 * cell.indent;\n switch (style.textAlign) {\n case null:\n case \"left\":\n style.paddingLeft = indent + \"ch\";\n break;\n case \"right\":\n style.paddingRight = indent + \"ch\";\n break;\n case \"center\":\n style.paddingLeft = indent / 2 + \"ch\";\n style.paddingRight = indent / 2 + \"ch\";\n break;\n }\n }\n}\n\nlet CONT;\nfunction drawText(text, color, cell, group) {\n if (!CONT) {\n CONT = document.createElement(\"div\");\n CONT.style.position = \"fixed\";\n CONT.style.left = \"0px\";\n CONT.style.top = \"0px\";\n CONT.style.visibility = \"hidden\";\n CONT.style.overflow = \"hidden\";\n CONT.style.boxSizing = \"border-box\";\n CONT.style.lineHeight = \"normal\";\n document.body.appendChild(CONT);\n }\n\n if (CONT.firstChild) {\n CONT.removeChild(CONT.firstChild);\n }\n\n CONT.style.padding = \"2px 4px\";\n CONT.style.color = color;\n CONT.style.font = makeFontDef(cell);\n CONT.style.width = cell.width + \"px\";\n CONT.style.textAlign = cell.textAlign || \"left\";\n CONT.style.textDecoration = cell.underline ? \"underline\" : \"none\";\n\n applyIndent(cell, CONT.style);\n\n if (cell.wrap) {\n CONT.style.whiteSpace = \"pre-wrap\";\n CONT.style.overflowWrap = CONT.style.wordWrap = \"break-word\";\n } else {\n CONT.style.whiteSpace = \"pre\";\n CONT.style.overflowWrap = CONT.style.wordWrap = \"normal\";\n }\n\n CONT.appendChild(document.createTextNode(text));\n\n let vtrans = 0;\n switch (cell.verticalAlign) {\n case \"center\":\n vtrans = (cell.height - CONT.offsetHeight) >> 1;\n break;\n\n case undefined:\n case null:\n case \"bottom\":\n vtrans = (cell.height - CONT.offsetHeight);\n break;\n }\n if (vtrans < 0) { vtrans = 0; }\n\n let textGroup = drawText$1(CONT);\n textGroup.transform(geometry.Matrix.translate(cell.left, cell.top + vtrans));\n group.append(textGroup);\n}\n\nfunction makeFontDef(cell) {\n let font = [];\n if (cell.italic) {\n font.push(\"italic\");\n }\n if (cell.bold) {\n font.push(\"bold\");\n }\n font.push((cell.fontSize || 12) + \"px\");\n font.push((cell.fontFamily || \"Arial\"));\n return font.join(\" \");\n}\n\nfunction drawFn(sheet, range, options, callback) {\n if (options == null && callback == null) {\n callback = range;\n options = {};\n range = SHEETREF;\n }\n if (callback == null) {\n callback = options;\n if (range instanceof Range\n || range instanceof Ref\n || typeof range == \"string\") {\n options = {};\n } else {\n options = range;\n range = SHEETREF;\n }\n }\n options = Object.assign({ }, {\n paperSize : \"A4\",\n landscape : true,\n margin : \"1cm\",\n guidelines : true,\n guideColor : \"#aaa\",\n emptyCells : true,\n fitWidth : false,\n center : false,\n headerRows : null,\n maxEmpty : 0.2,\n scale : 1\n }, options);\n let group = new drawing.Group();\n let paper = getPaperOptions(options);\n group.options.set(\"pdf\", {\n author : options.author,\n creator : options.creator,\n date : options.date,\n keywords : options.keywords,\n margin : paper.margin,\n multiPage : true,\n paperSize : paper.paperSize,\n subject : options.subject,\n title : options.title,\n autoPrint : options.autoPrint\n });\n let pageWidth = paper.paperSize[0];\n let pageHeight = paper.paperSize[1];\n if (paper.margin) {\n pageWidth -= paper.margin.left + paper.margin.right + 1;\n pageHeight -= paper.margin.top + paper.margin.bottom + 1;\n }\n options.pageWidth = pageWidth;\n options.pageHeight = pageHeight;\n let layout = doLayout(sheet, sheet._ref(range), options);\n drawLayout(sheet, layout, group, options);\n callback(group);\n}\n\nSheet.prototype.draw = function(range, options, callback) {\n let sheet = this;\n if (sheet._workbook) {\n sheet.recalc(sheet._workbook._context, function() {\n drawFn(sheet, range, options, callback);\n });\n } else {\n drawFn(sheet, range, options, callback);\n }\n};\n\n// Hack: since we index the border arrays by relative row/col we\n// could end up with negative indexes, i.e. horiz[-2] = border.\n// Array forEach will ignore these, so we provide a simple\n// container here (outside code only needs forEach at this time).\nfunction Container() {}\nContainer.prototype = {\n forEach: function(f) {\n Object.keys(this).forEach(function(key) {\n f(this[key], key, this);\n }, this);\n }\n};\n\nfunction Borders() {\n let horiz = new Container();\n let vert = new Container();\n function add(cell, sheet) {\n if (sheet) {\n // reset borders here; the propertybag doesn't keep track of merged cells :-/ this\n // is ugly, but the inner details of data storage have leaked everywhere anyway.\n let pb = sheet._properties;\n let grid = sheet._grid;\n cell.borderLeft = pb.get(\"vBorders\", grid.index(cell.row, cell.col));\n cell.borderRight = pb.get(\"vBorders\", grid.index(cell.row, cell.col + cell.colspan));\n cell.borderTop = pb.get(\"hBorders\", grid.index(cell.row, cell.col));\n cell.borderBottom = pb.get(\"hBorders\", grid.index(cell.row + cell.rowspan, cell.col));\n }\n if (cell.borderLeft) {\n addVert(cell.row, cell.col, cell.borderLeft,\n cell.left, cell.top, cell.bottom);\n }\n if (cell.borderRight) {\n addVert(cell.row, cell.col + cell.colspan, cell.borderRight,\n cell.right, cell.top, cell.bottom);\n }\n if (cell.borderTop) {\n addHoriz(cell.row, cell.col, cell.borderTop,\n cell.top, cell.left, cell.right);\n }\n if (cell.borderBottom) {\n addHoriz(cell.row + cell.rowspan, cell.col, cell.borderBottom,\n cell.bottom, cell.left, cell.right);\n }\n }\n function addVert(row, col, border, x, top, bottom) {\n let a = vert[col] || (vert[col] = new Container());\n let prev = row > 0 && a[row - 1];\n if (prev && sameBorder(prev, border)) {\n a[row] = prev;\n prev.bottom = bottom;\n } else {\n a[row] = {\n size: border.size,\n color: border.color || \"#000\",\n x: x,\n top: top,\n bottom: bottom\n };\n }\n }\n function addHoriz(row, col, border, y, left, right) {\n let a = horiz[row] || (horiz[row] = new Container());\n let prev = col > 0 && a[col - 1];\n if (prev && sameBorder(prev, border)) {\n a[col] = prev;\n prev.right = right;\n } else {\n a[col] = {\n size: border.size,\n color: border.color || \"#000\",\n y: y,\n left: left,\n right: right\n };\n }\n }\n return { add: add, horiz: horiz, vert: vert };\n}\n\n// export function drawTabularData(options) {\n // let progress = new $.Deferred();\n // let promise = progress.promise();\n\n // options = clone(options, {\n // dataSource : null,\n // guidelines : true,\n // guideColor : \"#000\",\n // columns : null,\n // headerBackground : \"#999\",\n // headerColor : \"#000\",\n // oddBackground : null,\n // evenBackground : null,\n // fontFamily : \"Arial\",\n // fontSize : 12,\n // paperSize : \"A4\",\n // margin : \"1cm\",\n // landscape : true,\n // fitWidth : false,\n // scale : 1,\n // rowHeight : 20,\n // maxEmpty : 1,\n // useGridFormat : true\n // });\n\n // // retrieve fonts; custom fonts should be already loaded\n // pdf.defineFont(\n // getFontFaces(document)\n // );\n\n // let charWidth = charWidthFunction(options.fontFamily, options.fontSize);\n\n // function textWidth(value) {\n // if (value != null) {\n // let width = 12; // magic numbers :-/\n // for (let i = value.length; --i >= 0;) {\n // width += charWidth(value.charAt(i));\n // }\n // return width;\n // }\n // return 0;\n // }\n\n // let border = options.guidelines ? { size: 1, color: options.guideColor } : null;\n\n // function mkCell(data) {\n // if (!border) {\n // return data;\n // }\n // return clone(data, {\n // borderLeft: border,\n // borderTop: border,\n // borderRight: border,\n // borderBottom: border\n // });\n // }\n\n // options.dataSource.fetch(function() {\n // let data = options.dataSource.data();\n // if (!data.length) {\n // return progress.reject(\"Empty dataset\");\n // }\n\n // // this really must be present\n // let columns = options.columns.map(function(col) {\n // if (typeof col == \"string\") {\n // return { title: col, field: col };\n // } else {\n // return col;\n // }\n // });\n // let columnTitles = columns.map(function(col) {\n // return col.title || col.field;\n // });\n // let columnWidths = columnTitles.map(textWidth);\n\n // // prepare data for a Sheet object's fromJSON method\n // let rows = data.map(function(row, rowIndex) {\n // return {\n // cells: columns.map(function(col, colIndex) {\n // let value = row[col.field];\n\n // // NOTE: value might not be string. I added option useGridFormat (default\n // // true), which will use a column's format, if present, to convert the value\n // // to a string, so that we can measure the width right now.\n // if (options.useGridFormat) {\n // if (value != null) {\n // if (col.format) {\n // value = intl().format(col.format, value);\n // } else {\n // value += \"\";\n // }\n // }\n // // adjust the column widths while we're at it\n // columnWidths[colIndex] = Math.max(\n // textWidth(value),\n // columnWidths[colIndex]\n // );\n // }\n\n // // if options.useGridFormat is false and col.format is present, pass it over\n // // to the spreadsheet. In that case we should calculate the widths after\n // // the spreadsheet is created (XXX to be implemented when someone needs it).\n // return mkCell({\n // value: value,\n // format: options.useGridFormat ? null : col.format,\n // background: rowIndex % 2 ? options.evenBackground : options.oddBackground\n // });\n // })\n // };\n // });\n\n // // insert header line\n // rows.unshift({\n // cells: columnTitles.map(function(label) {\n // return mkCell({\n // value: label,\n // background: options.headerBackground,\n // color: options.headerColor\n // });\n // })\n // });\n\n // // init a Sheet object. Note that we have to add one\n // // extra-row and column, because the very last ones can't\n // // have right/bottom borders (known limitation).\n // let sheet = new Sheet(\n // rows.length + 1, // rows\n // columns.length + 1, // columns\n // options.rowHeight, // row height\n // 50, // column width\n // 20, // header height\n // 20, // header width,\n // { // default cell style\n // fontFamily: options.fontFamily,\n // fontSize: options.fontSize,\n // verticalAlign: \"center\"\n // }\n // );\n\n // // load data\n // sheet.fromJSON({\n // name: \"Sheet1\",\n // rows: rows,\n // columns: columnWidths.map(function(w, i) {\n // return { index: i, width: w };\n // })\n // });\n\n // sheet.draw({\n // paperSize : options.paperSize,\n // landscape : options.landscape,\n // margin : options.margin,\n // guidelines : false, // using borders instead (better contrast)\n // scale : options.scale,\n // fitWidth : options.fitWidth,\n // maxEmpty : options.maxEmpty,\n // headerRows : 1\n // }, progress.resolve.bind(progress));\n // });\n\n // return promise;\n// }\n\n// let CACHE_CHAR_WIDTH = {};\n\n// let charWidthFunction = function(fontFamily, fontSize) {\n// let id = fontSize + \":\" + fontFamily;\n// let func = CACHE_CHAR_WIDTH[id];\n// if (!func) {\n// let span, div = document.createElement(\"div\");\n// div.style.position = \"fixed\";\n// div.style.left = \"-10000px\";\n// div.style.top = \"-10000px\";\n// div.style.fontFamily = fontFamily;\n// div.style.fontSize = fontSize + \"px\";\n// div.style.whiteSpace = \"pre\";\n// for (let i = 32; i < 128; ++i) {\n// span = document.createElement(\"span\");\n// span.appendChild(document.createTextNode(String.fromCharCode(i)));\n// div.appendChild(span);\n// }\n// document.body.appendChild(div);\n// let widths = {};\n// for (let i = 32, span = div.firstChild; i < 128 && span; ++i, span = span.nextSibling) {\n// widths[i] = span.offsetWidth;\n// }\n// while ((span = div.firstChild)) {\n// div.removeChild(span);\n// }\n// func = CACHE_CHAR_WIDTH[id] = function(ch) {\n// let code = ch.charCodeAt(0);\n// let width = widths[code];\n// if (width == null) {\n// // probably not an ASCII character, let's cache its width as well\n// span = document.createElement(\"span\");\n// span.appendChild(document.createTextNode(String.fromCharCode(code)));\n// div.appendChild(span);\n// width = widths[code] = span.offsetWidth;\n// div.removeChild(span);\n// }\n// return width;\n// };\n// }\n// return func;\n// };\n\n// spreadsheet.draw = {\n// Borders : Borders,\n// doLayout : doLayout,\n// applyIndent : applyIndent\n// };\n\nconst draw = { Borders, doLayout, applyIndent };\n\n// spreadsheet.drawTabularData = drawTabularData;\n\nconst RESIZE_HANDLE_WIDTH = 7;\nconst EDIT_BUTTON_WIDTH = 20;\nconst DOT = \".\";\n\nconst viewClassNames = {\n view: \"k-spreadsheet-view\",\n fixedContainer: \"k-spreadsheet-fixed-container\",\n editContainer: \"k-spreadsheet-edit-container\",\n scroller: \"k-spreadsheet-scroller\",\n viewSize: \"k-spreadsheet-view-size\",\n clipboard: \"k-spreadsheet-clipboard\",\n cellEditor: \"k-spreadsheet-cell-editor\",\n barEditor: \"k-spreadsheet-editor\",\n topCorner: \"k-spreadsheet-top-corner\",\n filterHeadersWrapper: \"k-filter-wrapper\",\n filterRange: \"k-filter-range\",\n filterButton: \"k-spreadsheet-filter\",\n filterButtonSelected: \"k-selected\",\n horizontalResize: \"k-horizontal-resize\",\n verticalResize: \"k-vertical-resize\",\n icon: \"k-icon\",\n iconFilterDefault: \"k-i-caret-alt-down\",\n sheetsBar: \"k-spreadsheet-sheets-bar\",\n sheetsBarActive: \"k-spreadsheet-sheets-bar-active\",\n sheetsBarInactive: \"k-spreadsheet-sheets-bar-inactive\",\n cellContextMenu: \"k-spreadsheet-cell-context-menu\",\n rowHeaderContextMenu: \"k-spreadsheet-row-header-context-menu\",\n colHeaderContextMenu: \"k-spreadsheet-col-header-context-menu\",\n drawingContextMenu: \"k-spreadsheet-drawing-context-menu\"\n};\n\nconst paneClassNames = {\n cell: \"k-spreadsheet-cell\",\n vaxis: \"k-spreadsheet-vaxis\",\n haxis: \"k-spreadsheet-haxis\",\n vborder: \"k-spreadsheet-vborder\",\n hborder: \"k-spreadsheet-hborder\",\n rowHeader: \"k-spreadsheet-row-header\",\n columnHeader: \"k-spreadsheet-column-header\",\n pane: \"k-spreadsheet-pane\",\n data: \"k-spreadsheet-data\",\n mergedCell: \"k-spreadsheet-merged-cell\",\n mergedCellsWrapper: \"k-merged-cells-wrapper\",\n activeCell: \"k-spreadsheet-active-cell\",\n selection: \"k-spreadsheet-selection\",\n selectionWrapper: \"k-selection-wrapper\",\n autoFillWrapper: \"k-auto-fill-wrapper\",\n single: \"k-single\",\n top: \"k-top\",\n right: \"k-right\",\n bottom: \"k-bottom\",\n left: \"k-left\",\n resizeHandle: \"k-resize-handle\",\n columnResizeHandle: \"k-column-resize-handle\",\n rowResizeHandle: \"k-row-resize-handle\",\n resizeHint: \"k-resize-hint\",\n resizeHintHandle: \"k-resize-hint-handle\",\n resizeHintMarker: \"k-resize-hint-marker\",\n resizeHintVertical: \"k-resize-hint-vertical\",\n selectionHighlight: \"k-spreadsheet-selection-highlight\",\n series: [\n \"k-series-a\",\n \"k-series-b\",\n \"k-series-c\",\n \"k-series-d\",\n \"k-series-e\",\n \"k-series-f\"\n ]\n};\n\n/* eslint-disable complexity */\n\n\nfunction cellBorder(value) {\n return (value.size || 1) + \"px solid \" + (value.color || \"#000\");\n}\n\nfunction asURL(link) {\n if (!/:\\/\\//.test(link)) {\n link = \"http://\" + link;\n }\n return link;\n}\n\nfunction drawCell(collection, cell, cls, showGrid) {\n function maybeLink(el) {\n let link = cell.link;\n if (!link) {\n if (typeof cell.value == \"object\") {\n link = cell.value.link;\n }\n }\n if (link) {\n let style = {\n textDecoration: \"none\"\n };\n if (cell.color) {\n style.color = cell.color;\n }\n if (cell.underline) {\n style.textDecoration = \"underline\";\n }\n return dom.element(\"a\", {\n href : asURL(link),\n style : style,\n target : \"_blank\" // XXX: customizable?\n }, el ? [ el ] : []);\n }\n return el;\n }\n\n let shouldDraw = (cell.value != null || (cell.validation != null && !cell.validation.value) || // jshint ignore:line\n cell.background || cell.merged || cell.comment || cell.dBorders);\n if (!cls && !shouldDraw) {\n return;\n }\n\n let style = { background: [] };\n let background = cell.background;\n if (background) {\n let defaultBorder = background;\n if (showGrid) {\n // darken\n defaultBorder = parseColor(defaultBorder).toHSV();\n defaultBorder.v *= 0.9;\n defaultBorder = defaultBorder.toCssRgba();\n }\n defaultBorder = cellBorder({ color: defaultBorder });\n style.outline = defaultBorder;\n }\n\n if (cell.dBorders) {\n if (cell.dBorders.type & 2) {\n style.background.push(\"linear-gradient(to top left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) calc(50% - \" +\n cell.dBorders.size + \"px), \" + cell.dBorders.color + \" 50%, rgba(0, 0, 0, 0) calc(50% + \" +\n cell.dBorders.size + \"px), rgba(0, 0, 0, 0) 100%)\");\n }\n if (cell.dBorders.type & 1) {\n style.background.push(\"linear-gradient(to top right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) calc(50% - \" +\n cell.dBorders.size + \"px), \" + cell.dBorders.color + \" 50%, rgba(0, 0, 0, 0) calc(50% + \" +\n cell.dBorders.size + \"px), rgba(0, 0, 0, 0) 100%)\");\n }\n }\n\n if (background) {\n style.background.push(background);\n }\n\n if (cell.color) {\n style.color = cell.color;\n }\n\n if (cell.fontFamily) {\n style.fontFamily = cell.fontFamily;\n }\n\n if (cell.underline) {\n style.textDecoration = \"underline\";\n }\n\n if (cell.italic) {\n style.fontStyle = \"italic\";\n }\n\n if (cell.textAlign) {\n style.textAlign = cell.textAlign;\n }\n\n if (cell.bold) {\n style.fontWeight = \"bold\";\n }\n\n if (cell.fontSize) {\n style.fontSize = cell.fontSize + \"px\";\n }\n\n if (cell.wrap === true) {\n style.whiteSpace = \"pre-wrap\";\n style.overflowWrap = \"break-word\";\n style.wordWrap = \"break-word\";\n } else {\n style.whiteSpace = \"pre\";\n style.overflowWrap = \"normal\";\n style.wordWrap = \"normal\";\n }\n\n style.left = (cell.left + 1) + \"px\";\n style.top = (cell.top + 1) + \"px\";\n style.width = (cell.width - 1) + \"px\";\n style.height = (cell.height - 1) + \"px\";\n\n let data = cell.value, type = typeof data, format = cell.format;\n if (!format && type === \"number\" && data !== Math.floor(data)) {\n format = \"0.##############\";\n }\n if (format && data != null) {\n data = formatting.format(data, format);\n if (data.__dataType) {\n type = data.__dataType;\n }\n } else if (data != null) {\n if (cell.html) {\n data = dom.html(data);\n } else {\n data = dom.text(data);\n }\n }\n\n if (!style.textAlign) {\n switch (type) {\n case \"number\":\n case \"date\":\n case \"percent\":\n case \"currency\":\n style.textAlign = \"right\";\n break;\n case \"boolean\":\n style.textAlign = \"center\";\n break;\n }\n }\n\n // defined in print.js\n draw.applyIndent(cell, style);\n\n let classNames = [ paneClassNames.cell ];\n\n if (cls) {\n classNames.push(cls);\n }\n if (cell.enable === false) {\n classNames.push(\"k-disabled\");\n }\n if (cell.merged) {\n classNames.push(\"k-spreadsheet-merged-cell\");\n if (!cell.enable) {\n collection.push(dom.element(\"div\", {\n className: \"k-spreadsheet-disabled-mask\",\n style: {\n left: (cell.left + 1) + \"px\",\n top: (cell.top + 1) + \"px\",\n width: (cell.width - 1) + \"px\",\n height: (cell.height - 1) + \"px\"\n }\n }));\n }\n }\n if (cell.comment) {\n classNames.push(\"k-spreadsheet-has-comment\");\n }\n\n let verticalAlign = cell.verticalAlign || \"bottom\";\n\n if (verticalAlign && data) {\n data = dom.element(\"div\", { className: \"k-vertical-align-\" + verticalAlign }, [ maybeLink(data) ]);\n } else {\n data = maybeLink(data);\n }\n\n if (style.background.length) {\n style.background = style.background.join(\",\");\n } else {\n delete style.background;\n }\n\n let children = data ? [ data ] : [];\n let properties = {\n style: style\n };\n let validation = cell.validation;\n if (validation && !validation.value) {\n children.push(dom.element(\"span\", { className: \"k-dirty\" }));\n classNames.push(\"k-dirty-cell\");\n\n properties.title = validation.message;\n }\n properties.className = classNames.join(\" \");\n\n let div = dom.element(\"div\", properties, children);\n collection.push(div);\n return div;\n}\n\nclass Pane {\n constructor(sheet, grid, getIconHTMLString) {\n this._sheet = sheet;\n this._grid = grid;\n this.getIconHTMLString = getIconHTMLString;\n }\n\n refresh(width, height) {\n this._grid.refresh(width, height);\n }\n\n isVisible(scrollLeft, scrollTop, ref) {\n return this._grid.view(scrollLeft, scrollTop).ref.intersects(ref);\n }\n\n render(args) {\n let scroller = args.scroller;\n let scrollLeft = scroller.scrollLeft;\n let scrollTop = scroller.scrollTop;\n\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n\n let classNames = Pane.classNames;\n let sheet = this._sheet;\n let grid = this._grid;\n let view = grid.view(scrollLeft, scrollTop);\n this._currentView = view;\n this._currentRect = this._rectangle(view.ref);\n this._selectedHeaders = sheet.selectedHeaders();\n\n let children = [];\n\n children.push(this.renderData(args));\n\n if (!sheet._activeDrawing) {\n children.push(this.renderSelection(scroller));\n }\n\n children.push(this.renderAutoFill());\n\n children.push(this.renderEditorSelection());\n\n children.push(this.renderFilterHeaders());\n\n if (grid.hasRowHeader) {\n let rowHeader = dom.element(\"div\", {\n className: classNames.rowHeader,\n style: {\n width: grid.headerWidth + \"px\",\n top: view.rowOffset + \"px\"\n }\n });\n children.push(rowHeader);\n sheet.forEach(view.ref.leftColumn(), function(row) {\n if (!sheet.isHiddenRow(row)) {\n let text = row + 1, height = sheet.rowHeight(row);\n rowHeader.children.push(dom.element(\"div\", {\n className: this.headerClassName(row, \"row\"),\n style: {\n width: grid.headerWidth + \"px\",\n height: height + \"px\"\n }\n }, [ dom.element(\"div\", {\n className: \"k-vertical-align-center\"\n }, [ dom.text(text + \"\") ])]));\n }\n }.bind(this));\n }\n\n if (grid.hasColumnHeader) {\n let columnHeader = dom.element(\"div\", {\n className: classNames.columnHeader,\n style: {\n top: \"0px\",\n left: view.columnOffset + \"px\",\n width: this._currentRect.width + \"px\",\n height: grid.headerHeight + \"px\"\n }\n });\n children.push(columnHeader);\n let left = 0;\n sheet.forEach(view.ref.topRow(), function(row, col) {\n if (!sheet.isHiddenColumn(col)) {\n let text = Ref.display(null, Infinity, col),\n width = sheet.columnWidth(col);\n columnHeader.children.push(dom.element(\"div\", {\n className: this.headerClassName(col, \"col\"),\n style: {\n position: \"absolute\",\n left: left + \"px\",\n width: width + \"px\",\n height: grid.headerHeight + \"px\"\n }\n }, [ dom.element(\"div\", {\n className: \"k-vertical-align-center\"\n }, [ dom.text(text + \"\") ])]));\n left += width;\n }\n }.bind(this));\n }\n\n if (sheet.resizeHandlePosition() && (grid.hasColumnHeader || grid.hasRowHeader)) {\n if (!sheet.resizeHintPosition()) {\n this.renderResizeHandle(children);\n }\n }\n\n let paneClasses = [classNames.pane];\n\n if (grid.hasColumnHeader) {\n paneClasses.push(classNames.top);\n }\n\n if (grid.hasRowHeader) {\n paneClasses.push(classNames.left);\n }\n\n return dom.element(\"div\", {\n style: grid.style,\n className: paneClasses.join(\" \")\n }, children);\n }\n\n headerClassName(index, type) {\n let selectedHeaders = this._selectedHeaders;\n\n let itemSelection;\n let allHeaders;\n\n if (type === \"row\") {\n itemSelection = selectedHeaders.rows[index];\n allHeaders = selectedHeaders.allRows;\n } else {\n itemSelection = selectedHeaders.cols[index];\n allHeaders = selectedHeaders.allCols;\n }\n\n let className = itemSelection || (selectedHeaders.all ? \"full\" : (allHeaders ? \"partial\" : \"none\"));\n\n if (className) {\n className = \"k-selection-\" + className;\n }\n\n return className;\n }\n\n renderData(args) {\n let sheet = this._sheet;\n let view = this._currentView;\n let cont = dom.element(\"div\", {\n className: Pane.classNames.data,\n style: {\n position: \"relative\",\n left: view.columnOffset + \"px\",\n top: view.rowOffset + \"px\"\n }\n });\n let rect = this._currentRect;\n let layout = draw.doLayout(sheet, view.ref, { forScreen: true }), prev;\n let grid = this._grid;\n let showGridLines = sheet._showGridLines;\n if (showGridLines) {\n // draw axis first\n prev = null;\n layout.xCoords.forEach(function(x) {\n if (x !== prev) {\n prev = x;\n cont.children.push(dom.element(\"div\", {\n className: paneClassNames.vaxis,\n style: {\n left: x + \"px\",\n height: rect.height + \"px\",\n borderColor: sheet.gridLinesColor()\n }\n }));\n }\n });\n prev = null;\n layout.yCoords.forEach(function(y) {\n if (y !== prev) {\n prev = y;\n cont.children.push(dom.element(\"div\", {\n className: paneClassNames.haxis,\n style: {\n top: y + \"px\",\n width: rect.width + \"px\",\n borderColor: sheet.gridLinesColor()\n }\n }));\n }\n });\n }\n let borders = draw.Borders();\n let activeCellRange = sheet.activeCell().toRangeRef();\n let activeCell = activeCellRange.topLeft;\n\n layout.cells.forEach(function(cell) {\n let cls = null;\n let absRow = cell.row + view.ref.topLeft.row;\n let absCol = cell.col + view.ref.topLeft.col;\n if (sheet._activeDrawing) {\n let ref = sheet._activeDrawing.topLeftCell;\n if (ref && ref.row === absRow && ref.col === absCol) {\n cls = \"k-spreadsheet-drawing-anchor-cell\";\n }\n } else if (absRow === activeCell.row && absCol === activeCell.col) {\n // active cell. normally we enter here only once.\n cls = [\n Pane.classNames.activeCell\n ].concat(this._activeFormulaColor(),\n this._directionClasses(activeCellRange));\n if (sheet.singleCellSelection()) {\n cls.push(Pane.classNames.single);\n }\n cls = cls.join(\" \");\n }\n borders.add(cell);\n drawCell(cont.children, cell, cls, showGridLines);\n if (cell.comment && sheet._commentRef &&\n absRow === sheet._commentRef.row && absCol === sheet._commentRef.col) {\n let ttOffset = 4;\n let left = cell.right + grid.left + view.columnOffset + ttOffset;\n let style = { top: (cell.top + grid.top + view.rowOffset) + \"px\" };\n if (left + 200 > args.contentWidth) {\n style.right = (args.contentWidth - grid.left - cell.left - view.columnOffset + ttOffset) + \"px\";\n } else {\n style.left = left + \"px\";\n }\n let div = dom.element(\"div\", {\n className: \"k-tooltip k-spreadsheet-cell-comment\",\n style: style\n }, [ dom.text(cell.comment) ]);\n args.toplevelElements.push(div);\n }\n }, this);\n borders.vert.forEach(function(a) {\n a.forEach(function(b) {\n if (!b.rendered) {\n b.rendered = true;\n let style = {\n left : b.x + \"px\",\n top : b.top + \"px\",\n height : (b.bottom - b.top + 1) + \"px\",\n borderWidth : b.size + \"px\",\n borderColor : b.color\n };\n if (b.size !== 1) {\n style.transform = \"translateX(-\" + (b.size - 1) / 2 + \"px)\";\n }\n cont.children.push(dom.element(\"div\", {\n className: paneClassNames.vborder,\n style: style\n }));\n }\n });\n });\n borders.horiz.forEach(function(a) {\n a.forEach(function(b) {\n if (!b.rendered) {\n b.rendered = true;\n let style = {\n top : b.y + \"px\",\n left : b.left + \"px\",\n width : (b.right - b.left) + \"px\",\n borderWidth : b.size + \"px\",\n borderColor : b.color\n };\n if (b.size !== 1) {\n style.transform = \"translateY(-\" + (b.size - 1) / 2 + \"px)\";\n }\n cont.children.push(dom.element(\"div\", {\n className: paneClassNames.hborder,\n style: style\n }));\n }\n });\n });\n this.renderDrawings(layout, cont.children);\n return cont;\n }\n\n renderDrawings(layout, container) {\n let sheet = this._sheet;\n let workbook = sheet._workbook;\n layout.drawings.forEach(function(d) {\n let drawing = d.drawing;\n let box = d.box;\n let div = box.toDiv(\"k-spreadsheet-drawing\");\n if (drawing.image) {\n div.children.push(dom.element(\"div\", {\n className: \"k-spreadsheet-drawing-image\",\n style: {\n backgroundImage: \"url('\" + workbook.imageUrl(drawing.image) + \"')\",\n opacity: drawing.opacity\n }\n }));\n }\n if (drawing === sheet._activeDrawing) {\n div.attr.className += \" k-spreadsheet-active-drawing\";\n drawingResizeHandles(div.children);\n }\n container.push(div);\n });\n }\n\n renderResizeHandle(container) {\n let sheet = this._sheet;\n let ref = sheet.resizeHandlePosition();\n let rectangle = this._rectangle(ref);\n let classNames = [ Pane.classNames.resizeHandle ];\n\n let style;\n if (ref.col !== -Infinity) {\n if (this._grid.rows._start > 0) {\n return;\n }\n style = {\n height: this._grid.headerHeight + \"px\",\n width: RESIZE_HANDLE_WIDTH + \"px\",\n left: rectangle.right - RESIZE_HANDLE_WIDTH / 2 + \"px\",\n top: \"0px\"\n };\n classNames.push(viewClassNames.horizontalResize);\n } else {\n if (this._grid.columns._start > 0) {\n return;\n }\n style = {\n height: RESIZE_HANDLE_WIDTH + \"px\",\n width: this._grid.headerWidth + \"px\",\n top: rectangle.bottom - RESIZE_HANDLE_WIDTH / 2 + \"px\",\n left: \"0px\"\n };\n classNames.push(viewClassNames.verticalResize);\n }\n\n container.push(dom.element(\"div\", {\n className: classNames.join(\" \"),\n style: style\n }));\n }\n\n filterIconRect(rect) {\n let BUTTON_SIZE = 16;\n let BUTTON_OFFSET = 3;\n\n return new Rectangle(\n rect.right - BUTTON_SIZE - BUTTON_OFFSET,\n rect.top + BUTTON_OFFSET,\n BUTTON_SIZE,\n BUTTON_SIZE\n );\n }\n\n icon(className) {\n if (typeof this.getIconHTMLString === \"function\") {\n return dom.element(this.getIconHTMLString(className));\n }\n\n return dom.element(\"span\", {\n className: viewClassNames.icon + \" \" + className\n });\n }\n\n renderFilterHeaders() {\n let pane = this;\n let sheet = this._sheet;\n let children = [];\n let classNames = viewClassNames;\n let filter = sheet.filter();\n\n function filterButton(classNames, position, index) {\n let style = {\n left: position.left + \"px\",\n top: position.top + \"px\"\n };\n let filtered = filter && filter.columns.some(function(c) {\n return c.index === index;\n });\n let classes = classNames.filterButton;\n\n if (filtered) {\n classes += \" \" + classNames.filterButtonSelected;\n }\n\n let button = dom.element(\n \"span\",\n { className: classes, style: style },\n [ pane.icon(classNames.iconFilterDefault) ]\n );\n\n return button;\n }\n\n if (filter) {\n this._addDiv(children, filter.ref, classNames.filterRange);\n }\n\n sheet.forEachFilterHeader(this._currentView.ref, function(ref) {\n let rect = this._rectangle(ref);\n let position = this.filterIconRect(rect);\n let column = this._sheet.filterColumn(ref);\n let button = filterButton(classNames, position, column);\n\n children.push(button);\n }.bind(this));\n\n return dom.element(\"div\", {\n className: classNames.filterHeadersWrapper\n }, children);\n\n }\n\n renderEditorSelection() {\n let classNames = Pane.classNames;\n let sheet = this._sheet;\n let selections = [];\n\n sheet._formulaSelections.forEach(function(range) {\n let ref = range.ref;\n\n if (ref === NULLREF) {\n return;\n }\n\n this._addDiv(selections, ref, classNames.selectionHighlight + \" \" + range.colorClass);\n }.bind(this));\n\n return dom.element(\"div\", { className: classNames.selectionWrapper }, selections);\n\n }\n\n renderSelection(scroller) {\n let classNames = Pane.classNames;\n let selections = [];\n let selectionClasses = [classNames.selection];\n let sheet = this._sheet;\n let activeCell = sheet.activeCell().toRangeRef();\n let selection = sheet.select();\n\n selectionClasses = selectionClasses.concat(this._activeFormulaColor());\n\n if (selection.size() === 1) {\n selectionClasses.push(\"k-single-selection\");\n }\n\n if (this._sheet.autoFillPunch()) {\n selectionClasses.push(\"k-dim-auto-fill-handle\");\n }\n\n selection.forEach(function(ref) {\n if (ref !== NULLREF) {\n this._addDiv(selections, ref, selectionClasses.join(\" \"));\n }\n }.bind(this));\n\n this._renderCustomEditorButton(selections, activeCell, scroller);\n\n return dom.element(\"div\", { className: classNames.selectionWrapper }, selections);\n }\n\n renderAutoFill() {\n let autoFillRectangle = [];\n\n if (this._sheet.autoFillInProgress()) {\n let autoFillRef = this._sheet.autoFillRef();\n let punch = this._sheet.autoFillPunch();\n let direction = this._sheet._autoFillDirection;\n\n this._addDiv(autoFillRectangle, autoFillRef, \"k-auto-fill\");\n\n if (punch) { // collapsing, add overlay\n this._addDiv(autoFillRectangle, punch, \"k-auto-fill-punch\");\n } else if (direction !== undefined) { // expanding - add hint\n let ref, cssClass;\n\n switch (direction) {\n case 0:\n ref = autoFillRef.bottomRight;\n cssClass = \"k-auto-fill-br-hint\";\n break;\n case 1:\n ref = autoFillRef.bottomRight;\n cssClass = \"k-auto-fill-br-hint\";\n break;\n case 2:\n ref = new CellRef(autoFillRef.topLeft.row, autoFillRef.bottomRight.col);\n cssClass = \"k-auto-fill-tr-hint\";\n break;\n case 3:\n ref = new CellRef(autoFillRef.bottomRight.row, autoFillRef.topLeft.col);\n cssClass = \"k-auto-fill-bl-hint\";\n break;\n }\n\n let rectangle = this._addDiv(autoFillRectangle, ref, cssClass);\n if (rectangle) {\n let hint = dom.element(\"span\", { className: \"k-tooltip\" }, [ dom.text(this._sheet._autoFillHint) ]);\n rectangle.children.push(hint);\n }\n }\n }\n\n return dom.element(\"div\", { className: Pane.classNames.autoFillWrapper }, autoFillRectangle);\n }\n\n _addDiv(collection, ref, className) {\n let view = this._currentView, div;\n\n if (view.ref.intersects(ref)) {\n div = this._rectangle(ref).resize(1, 1).toDiv(className);\n collection.push(div);\n }\n return div;\n }\n\n _renderCustomEditorButton(collection, ref, scroller) {\n let self = this;\n let sheet = self._sheet;\n let view = self._currentView;\n let columnCount = self._grid.columns._axis._count;\n let ed = sheet.activeCellCustomEditor();\n\n if (ed && view.ref.intersects(ref)) {\n let rectangle = self._rectangle(ref);\n sheet.forEach(ref.collapse(), function(row, col, cell) {\n cell.left = rectangle.left;\n cell.top = rectangle.top;\n cell.width = rectangle.width;\n cell.height = rectangle.height;\n\n let btnClass = \"k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-spreadsheet-editor-button\";\n let isLastColumn = col === columnCount - 1 || self._buttonOutOfVisiblePane(row, col, scroller);\n if (isLastColumn) {\n btnClass += \" k-spreadsheet-last-column\";\n }\n self._editorInLastColumn = isLastColumn;\n let btn = dom.element(\"div\", {\n className: btnClass,\n style: {\n left : (cell.left + (isLastColumn ? 0 : cell.width)) + \"px\",\n top : cell.top + \"px\",\n height : cell.height + \"px\"\n }\n });\n\n if (ed.icon) {\n btn.children.push(self.icon(ed.icon));\n }\n\n collection.push(btn);\n });\n }\n }\n\n _activeFormulaColor() {\n let activeFormulaSelection;\n let colorClasses = [];\n\n if (this._sheet.isInEditMode()) {\n activeFormulaSelection = this._sheet._formulaSelections.filter(function(sel) { return sel.active && sel.type === \"ref\"; })[0];\n\n if (activeFormulaSelection) {\n colorClasses.push(activeFormulaSelection.colorClass);\n }\n }\n\n return colorClasses;\n }\n\n _directionClasses(cell) {\n let cellClasses = [];\n let classNames = Pane.classNames;\n let view = this._currentView.ref;\n\n if (!cell.move(0, -1).intersects(view)) {\n cellClasses.push(classNames.left);\n }\n\n if (!cell.move(-1, 0).intersects(view)) {\n cellClasses.push(classNames.top);\n }\n\n if (!cell.move(0, 1).intersects(view)) {\n cellClasses.push(classNames.right);\n }\n\n if (!cell.move(1, 0).intersects(view)) {\n cellClasses.push(classNames.bottom);\n }\n\n return cellClasses;\n }\n\n _rectangle(ref) {\n return this._grid.boundingRectangle(ref.toRangeRef()).offset(-this._currentView.mergedCellLeft, -this._currentView.mergedCellTop);\n }\n\n _buttonOutOfVisiblePane(row, col, scroller) {\n let self = this;\n let theGrid = self._grid;\n let sheet = self._sheet;\n let ref = sheet.range(row, col)._ref;\n let boundaries = theGrid.scrollBoundaries(ref);\n let scrollLeft = theGrid.columns.frozen ? 0 : scroller.scrollLeft;\n\n if (boundaries.right + EDIT_BUTTON_WIDTH > scrollLeft || col + 1 === sheet.frozenColumns()) {\n return true;\n }\n }\n}\n\nPane.classNames = paneClassNames;\n\nfunction drawingResizeHandles(container) {\n [ \"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\" ].forEach(function(direction) {\n container.push(dom.element(\"div\", {\n \"className\": \"k-spreadsheet-drawing-handle \" + direction,\n \"data-direction\": direction\n }));\n });\n}\n\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-else-return */\n/* eslint-disable no-multi-spaces */\n/* eslint-disable no-nested-ternary */\n\n\nlet styles = [\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"letter-spacing\",\n \"text-transform\",\n \"line-height\"\n];\n\n//move to core\nlet KEY_NAMES = {\n 27: 'esc',\n 37: 'left',\n 39: 'right',\n 35: 'end',\n 36: 'home',\n 32: 'spacebar'\n};\n\nlet PRIVATE_FORMULA_CHECK = /(^_|[^a-z0-9]$)/i;\n\nclass FormulaInput extends Widget {\n constructor(element, opt) {\n const defaultOptions = {\n name: \"FormulaInput\",\n autoScale: false,\n filterOperator: \"startswith\",\n scalePadding: 30,\n minLength: 1,\n formulaBarWidth: null\n };\n\n const options = Object.assign({}, defaultOptions, opt);\n super(element, options);\n\n this.events = [\n \"keyup\",\n \"focus\"\n ];\n\n this.input = opt.input;\n\n if (!element) {\n return;\n }\n\n this.bind(this.events, this.options);\n\n element.classList.add(FormulaInput.classNames.wrapper);\n\n if (options && options.formulaBarWidth) ;\n\n this._highlightedRefs = [];\n\n this._formulaSource();\n\n this._formulaList();\n\n this._tooltip();\n\n this._sync = this._sync.bind(this);\n this.scale = this.scale.bind(this);\n this._keydown = this._keydown.bind(this);\n this._keyup = this._keyup.bind(this);\n this._blur = this._blur.bind(this);\n this._input = this._input.bind(this);\n this._focus = this._focus.bind(this);\n this._paste = this._paste.bind(this);\n\n if (this.options.autoScale) {\n element.addEventListener(\"input\", this.scale);\n }\n\n element.addEventListener(\"keydown\", this._keydown);\n element.addEventListener(\"keyup\", this._keyup);\n element.addEventListener(\"blur\", this._blur);\n element.addEventListener(\"input\", this._input);\n element.addEventListener(\"click\", this._input);\n element.addEventListener(\"focus\", this._focus);\n element.addEventListener(\"paste\", this._paste);\n }\n\n enable(enable) {\n if (enable === undefined) {\n return this.element.getAttribute(\"contenteditable\") === \"true\";\n }\n\n if (enable) {\n this.element.setAttribute(\"contenteditable\", enable);\n } else {\n this.element.removeAttribute(\"contenteditable\");\n }\n\n this.element.classList.toggle(\"k-disabled\", !enable);\n }\n\n getPos() {\n let div = this.element;\n let sel = window.getSelection();\n let a = lookup(sel.focusNode, sel.focusOffset);\n let b = lookup(sel.anchorNode, sel.anchorOffset);\n if (a != null && b != null) {\n if (a > b) {\n let tmp = a;\n a = b;\n b = tmp;\n }\n return { begin: a, end: b, collapsed: a === b };\n }\n function lookup(lookupNode, pos) {\n try {\n (function loop(node) {\n if (node === lookupNode) {\n throw pos;\n } else if (node.nodeType === 1 /* Element */) {\n for (let i = node.firstChild; i; i = i.nextSibling) {\n loop(i);\n }\n } else if (node.nodeType === 3 /* Text */) {\n pos += node.nodeValue.length;\n }\n })(div);\n } catch (index) {\n return index;\n }\n }\n }\n\n setPos(begin, end) {\n let eiv = this.element;\n begin = lookup(eiv, begin);\n if (end != null) {\n end = lookup(eiv, end);\n } else {\n end = begin;\n }\n if (begin && end) {\n this._setRange(begin, end);\n }\n\n function lookup(node, pos) {\n try {\n (function loop(node) {\n if (node.nodeType === 3 /* Text */) {\n let len = node.nodeValue.length;\n if (len >= pos) {\n throw node;\n }\n pos -= len;\n } else if (node.nodeType === 1 /* Element */) {\n for (let i = node.firstChild; i; i = i.nextSibling) {\n loop(i);\n }\n }\n })(node);\n } catch (el) {\n return { node: el, pos: pos };\n }\n }\n }\n\n end() {\n this.setPos(this.length());\n }\n\n home() {\n this.setPos(0);\n }\n\n select() {\n this.setPos(0, this.length());\n }\n\n length() {\n return this.value().length;\n }\n\n _setRange(begin, end) {\n let range = document.createRange();\n range.setStart(begin.node, begin.pos);\n range.setEnd(end.node, end.pos);\n let sel = window.getSelection();\n let currentRange = sel.getRangeAt(0);\n if (differ(range, currentRange)) {\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n function differ(a, b) {\n return (\n a.startOffset !== b.startOffset ||\n a.endOffset !== b.endOffset ||\n a.startContainer !== b.endContainer ||\n a.endContainer !== b.endContainer\n );\n }\n }\n\n _formulaSource() {\n let result = [];\n let value;\n\n for (let key in calc.runtime.FUNCS) {\n if (!PRIVATE_FORMULA_CHECK.test(key)) {\n value = key.toUpperCase();\n result.push({ value: value, text: value });\n }\n }\n\n this.formulaSource = result;\n }\n\n get list() { return this.input.current.list; }\n get popup() { return this.input.current.popup; }\n\n _formulaList() {\n this.list.data(this.formulaSource);\n this.list.itemClick((value) => {\n this._formulaListChange(value);\n });\n }\n\n _formulaListChange(value) {\n let tokenCtx = this._tokenContext();\n\n if (!tokenCtx || this._mute) {\n return;\n }\n\n let activeToken = tokenCtx.token;\n let completion = value;\n let ctx = {\n replace: true,\n token: activeToken,\n end: activeToken.end\n };\n\n if (!tokenCtx.nextToken || tokenCtx.nextToken.value !== \"(\") {\n completion += \"(\";\n }\n\n this._replaceAt(ctx, completion);\n this.popup.close();\n }\n\n _blur() {\n this.popup.close();\n clearTimeout(this._focusId);\n this.trigger(\"blur\");\n }\n\n _isFormula() {\n return /^=/.test(this.value());\n }\n\n _keydown(e) {\n let key = e.keyCode;\n let that = this;\n\n if (KEY_NAMES[key]) {\n that.popup.close();\n that._navigated = true;\n } else if (that._move(key)) {\n that._navigated = true;\n e.preventDefault();\n }\n\n that._keyDownTimeout = setTimeout(that._syntaxHighlight.bind(that));\n }\n\n _keyup() {\n let popup = this.popup;\n let value;\n\n if (this._isFormula() && !this._navigated) {\n value = ((this._tokenContext() || {}).token || {}).value;\n\n const data = this.filter(value);\n\n if (!value || !data.length) {\n popup.close();\n } else {\n popup[popup.visible() ? \"position\" : \"open\"]();\n setTimeout(() => { this.list.focusFirst(); }, 0);\n }\n }\n\n this._navigated = false;\n this._syntaxHighlight();\n\n this.trigger(\"keyup\");\n }\n\n _input() {\n this._syntaxHighlight();\n }\n\n _focus() {\n setTimeout(this._sync.bind(this));\n this._focusTimeout = setTimeout(this._syntaxHighlight.bind(this));\n this.trigger(\"focus\");\n }\n\n _paste(ev) {\n ev.preventDefault();\n let pos = this.getPos();\n let text;\n text = ev.clipboardData.getData(\"text/plain\");\n let val = this.value();\n val = val.substr(0, pos.begin) + text + val.substr(pos.end);\n this.value(val);\n this.setPos(pos.begin + text.length);\n this.scale();\n }\n\n _move(key) {\n let list = this.list;\n let popup = this.popup;\n if (popup.visible()) {\n if (key === keys.DOWN) {\n list.focusNext();\n return true;\n }\n if (key === keys.UP) {\n list.focusPrev();\n return true;\n }\n if (key === keys.ENTER || key === keys.TAB) {\n let focusIndex = typeof list.focusIndex === \"function\" ? list.focusIndex() : list.focus();\n if (list.data()[focusIndex]) {\n this._formulaListChange(list.data()[focusIndex].value);\n }\n\n popup.close();\n return true;\n }\n if (key === keys.PAGEUP) {\n list.focusFirst();\n return true;\n }\n if (key === keys.PAGEDOWN) {\n list.focusLast();\n return true;\n }\n }\n return false; // key === keys.ENTER || key === keys.TAB;\n }\n\n _tokenContext() {\n let point = this.getPos();\n let value = this.value();\n\n if (!value || !point || !point.collapsed) {\n return null;\n }\n\n let tokens = calc.tokenize(value, this.row(), this.col());\n let tok;\n\n for (let i = 0; i < tokens.length; ++i) {\n tok = tokens[i];\n if (touches(tok, point) && /^(?:str|sym|func)$/.test(tok.type)) {\n return { token: tok, nextToken: tokens[i + 1] };\n }\n }\n\n return null;\n }\n\n _sync() {\n if (this._editorToSync && this.isActive()) {\n this._editorToSync.value(this.value());\n }\n }\n\n _textContainer() {\n let computedStyles = kendoGetComputedStyles(this.element, styles);\n\n computedStyles.position = \"absolute\";\n computedStyles.visibility = \"hidden\";\n computedStyles.whiteSpace = \"pre\";\n computedStyles.top = -3333;\n computedStyles.left = -3333;\n\n this._span = document.createElement('span');\n this._span.style.whiteSpace = 'pre';\n for (const style in computedStyles) {\n if (Object.hasOwnProperty.call(computedStyles, style)) {\n this._span.style[style] = computedStyles[style];\n }\n }\n insertAfter(this._span, this.element);\n // this._span = $(\"\").css(computedStyles).insertAfter(this.element);\n }\n\n _tooltip() {\n this._cellTooltip = document.createElement('div');\n this._cellTooltip.className = 'k-widget k-tooltip';\n this._cellTooltip.style.position = 'absolute';\n this._cellTooltip.style.display = 'none';\n this._cellTooltip.appendChild(document.createTextNode('A1'));\n insertAfter(this._cellTooltip, this.element);\n // this._cellTooltip = $('
    A1
    ').insertAfter(this.element);\n }\n\n tooltip(value) {\n while (this._cellTooltip.firstChild) {\n this._cellTooltip.removeChild(this._cellTooltip.firstChild);\n }\n this._cellTooltip.appendChild(document.createTextNode(value));\n // this._cellTooltip.text(value);\n }\n\n toggleTooltip(show) {\n this._cellTooltip.style.display = (show ? '' : 'none');\n // this._cellTooltip.toggle(show);\n }\n\n isActive() {\n return this.element === _activeElement$1();\n }\n\n filter(value) {\n if (!value || value.length < this.options.minLength) {\n return;\n }\n\n const data = this.formulaSource.filter((item) => String(item.value).toLowerCase().startsWith(value.toLowerCase()));\n\n this.list.data(data);\n\n return data;\n }\n\n hide() {\n this.enable(false);\n this.element.style.display = 'none';\n this._cellTooltip.style.display = 'none';\n }\n\n show() {\n this.enable(true);\n this.element.style.display = 'block';\n }\n\n row() {\n if (this.activeCell) {\n return this.activeCell.row;\n }\n }\n\n col() {\n if (this.activeCell) {\n return this.activeCell.col;\n }\n }\n\n position(rectangle) {\n if (!rectangle) {\n return;\n }\n\n this.show();\n\n this.element.style.top = (rectangle.top + 1) + \"px\";\n this.element.style.left = (rectangle.left + 1) + \"px\";\n\n this._cellTooltip.style.top = (rectangle.top - this._cellTooltip.offsetHeight - 10) + \"px\";\n this._cellTooltip.style.left = rectangle.left + \"px\";\n }\n\n resize(rectangle) {\n if (!rectangle) {\n return;\n }\n\n this.element.style.width = (rectangle.width - 1) + \"px\";\n this.element.style.height = (rectangle.height - 1) + \"px\";\n }\n\n canInsertRef(isKeyboardAction) {\n return this._canInsertRef(isKeyboardAction);\n }\n\n _canInsertRef(isKeyboardAction) {\n if (this.popup.visible()) {\n return null;\n }\n let strictMode = isKeyboardAction;\n let point = this.getPos();\n let tokens, tok, i;\n\n if (point && this._isFormula()) {\n if (point.begin === 0) {\n return null;\n }\n\n tokens = calc.tokenize(this.value(), this.row(), this.col());\n\n for (i = 0; i < tokens.length; ++i) {\n tok = tokens[i];\n if (touches(tok, point)) {\n return canReplace(tok);\n }\n if (afterPoint(tok)) {\n return canInsertBetween(tokens[i - 1], tok);\n }\n }\n return canInsertBetween(tok, null);\n }\n\n return null;\n\n function afterPoint(tok) {\n return tok.begin > point.begin;\n }\n function canReplace(tok) {\n if (tok) {\n if (/^(?:num|str|bool|sym|ref)$/.test(tok.type)) {\n return { replace: true, token: tok, end: tok.end };\n }\n if (/^(?:op|punc|startexp)$/.test(tok.type)) {\n if (tok.end === point.end) {\n return canInsertBetween(tok, tokens[i + 1]);\n }\n return canInsertBetween(tokens[i - 1], tok);\n }\n }\n }\n function canInsertBetween(left, right) {\n if (left == null) {\n return null;\n }\n if (right == null) {\n if (/^(?:op|startexp)$/.test(left.type) || isOpenParen(left.value)) {\n return { token: left, end: point.end };\n }\n return null;\n }\n if (strictMode) {\n if (left.type === \"op\" && /^(?:punc|op)$/.test(right.type)) {\n return { token: left, end: point.end };\n }\n } else {\n if (left.type === \"startexp\") {\n return { token: left, end: point.end };\n }\n if (/^(?:op|punc)$/.test(left.type) && /^[,;({]$/.test(left.value)) {\n return { token: left, end: point.end };\n }\n if (/^(?:ref|sym)/.test(left.type)) {\n return { token: left, replace: true, end: left.end };\n }\n if (/^(?:ref|sym)/.test(right.type)) {\n return { token: right, replace: true, end: right.end };\n }\n }\n return false;\n }\n }\n\n refAtPoint(sheet) {\n let x = this._canInsertRef();\n if (x) {\n let ref = sheet.selection()._ref.simplify().clone().relative(0, 0, 3);\n if (sheet.isMerged(ref)) {\n ref = ref.topLeft;\n }\n if (sheet !== this.activeSheet) {\n ref = ref.setSheet(sheet.name(), true);\n }\n this._replaceAt(x, ref.print(0, 0));\n }\n }\n\n _replaceAt(ctx, newValue) {\n let value = this.value();\n let tok = ctx.token;\n let rest = value.substr(ctx.end);\n value = value.substr(0, ctx.replace ? tok.begin : ctx.end) + newValue;\n let point = value.length;\n value += rest;\n this._value(value);\n this.setPos(point);\n this.scale();\n this._syntaxHighlight();\n }\n\n syncWith(formulaInput) {\n this._editorToSync = formulaInput;\n if (this.element) {\n this.element.removeEventListener(\"input\", this._sync);\n this.element.addEventListener(\"input\", this._sync);\n }\n }\n\n scale() {\n let element = this.element;\n let width, height;\n\n if (!this._span) {\n this._textContainer();\n }\n\n this._span.innerHTML = element.innerHTML;\n\n width = this._span.offsetWidth + this.options.scalePadding;\n height = this._span.offsetHeight;\n\n if (width > element.offsetWidth) {\n element.style.width = width + 'px';\n }\n\n const activeCellOutlineWidth = 1;\n if (height - activeCellOutlineWidth > element.offsetHeight) {\n element.style.height = (height - activeCellOutlineWidth) + 'px';\n }\n\n this._sync();\n }\n\n _value(value) {\n let txt = (this.element.innerText || this.element.textContent).replace(/\\n$/, \"\");\n if (txt !== value) {\n while (this.element.firstChild) {\n this.element.removeChild(this.element.firstChild);\n }\n this.element.appendChild(document.createTextNode(value));\n }\n }\n\n value(value) {\n let txt = (this.element.innerText || this.element.textContent).replace(/\\n$/, \"\");\n if (value === undefined) {\n return txt;\n }\n\n if (txt !== value) {\n this._value(value);\n this._syntaxHighlight();\n }\n }\n\n highlightedRefs() {\n return this._highlightedRefs.slice();\n }\n\n _syntaxHighlight() {\n let pos = this.getPos();\n let value = this.value();\n let refClasses = Pane.classNames.series;\n let highlightedRefs = [];\n let refIndex = 0;\n let parens = [];\n let tokens = [];\n // let activeToken;\n\n if (pos && !pos.collapsed) {\n // Backward selection (hold shift, move right to left)\n // will not work properly if we continuously re-set\n // the HTML. If the selection is on, presumably the\n // text has already been highlighted, so stop here.\n return;\n }\n\n if (!(/^=/.test(value))) {\n // if an user deleted the initial =, reset the text to\n // discard any highlighting. Only do that once.\n if (this._highlightedRefs.length) {\n this._highlightedRefs = [];\n this._value(value);\n }\n\n // also make sure the completion popup goes away\n // if (this.popup) {\n // this.popup.close();\n // }\n\n return; // avoid messing with the cursor position below\n } else {\n tokens = calc.tokenize(value, this.row(), this.col());\n tokens.forEach(function(tok) {\n tok.active = false;\n tok.cls = [ \"k-syntax-\" + tok.type ];\n\n if (tok.type === \"ref\") {\n tok.colorClass = refClasses[(refIndex++) % refClasses.length];\n tok.cls.push(tok.colorClass);\n highlightedRefs.push(tok);\n }\n if (pos && tok.type === \"punc\") {\n if (isOpenParen(tok.value)) {\n parens.unshift(tok);\n } else if (isCloseParen(tok.value)) {\n let open = parens.shift();\n if (open) {\n if (isMatchingParen(tok.value, open.value)) {\n if (touches(tok, pos) || touches(open, pos)) {\n tok.cls.push(\"k-syntax-paren-match\");\n open.cls.push(\"k-syntax-paren-match\");\n }\n } else {\n tok.cls.push(\"k-syntax-error\");\n open.cls.push(\"k-syntax-error\");\n }\n } else {\n tok.cls.push(\"k-syntax-error\");\n }\n }\n }\n if (pos && touches(tok, pos)) {\n tok.cls.push(\"k-syntax-at-point\");\n tok.active = true;\n // activeToken = tok;\n }\n if (tok.type === \"func\" && !knownFunction(tok.value) && (!pos || !touches(tok, pos))) {\n tok.cls.push(\"k-syntax-error\");\n }\n });\n tokens.reverse().forEach(function(tok) {\n let begin = tok.begin, end = tok.end;\n let text = htmlEncode(value.substring(begin, end));\n value = value.substr(0, begin) +\n \"\" + text + \"\" +\n value.substr(end);\n });\n this.element.innerHTML = value;\n }\n if (pos) {\n this.setPos(pos.begin, pos.end);\n }\n\n this._highlightedRefs = highlightedRefs;\n }\n\n destroy() {\n this._editorToSync = null;\n\n this.element.removeEventListener(\"input\", this.scale);\n this.element.removeEventListener(\"keydown\", this._keydown);\n this.element.removeEventListener(\"keyup\", this._keyup);\n this.element.removeEventListener(\"blur\", this._blur);\n this.element.removeEventListener(\"input\", this._input);\n this.element.removeEventListener(\"click\", this._input);\n this.element.removeEventListener(\"focus\", this._focus);\n this.element.removeEventListener(\"paste\", this._paste);\n\n clearTimeout(this._focusTimeout);\n clearTimeout(this._keyDownTimeout);\n\n this._cellTooltip = null;\n this._span = null;\n\n super.destroy();\n }\n\n insertNewline() {\n let val = this.value();\n let pos = this.getPos();\n let eof = pos.end === val.length;\n val = val.substr(0, pos.begin) + (eof ? \"\\n\\n\" : \"\\n\" + val.substr(pos.end));\n this.value(val);\n this.setPos(pos.begin + 1);\n }\n}\n\nFormulaInput.classNames = {\n wrapper: \"k-spreadsheet-formula-input\",\n listWrapper: \"k-spreadsheet-formula-list\"\n};\n\nfunction isOpenParen(ch) {\n return ch === \"(\" || ch === \"[\" || ch === \"{\";\n}\n\nfunction isCloseParen(ch) {\n return ch === \")\" || ch === \"]\" || ch === \"}\";\n}\n\nfunction isMatchingParen(close, open) {\n return open === \"(\" ? close === \")\"\n : open === \"[\" ? close === \"]\"\n : open === \"{\" ? close === \"}\"\n : false;\n}\n\nfunction touches(pos, target) {\n return pos.begin <= target.begin && pos.end >= target.end;\n}\n\nfunction knownFunction(name) {\n return calc.runtime.FUNCS[name.toLowerCase()];\n}\n\nclass FormulaBar extends Widget {\n constructor(element, options) {\n super(element, options);\n\n const formulaInputDiv = element && element.querySelector(\".k-spreadsheet-formula-input:not(.k-spreadsheet-cell-editor)\");\n this.formulaInput = new FormulaInput(formulaInputDiv, this.options);\n }\n\n destroy() {\n if (this.formulaInput) {\n this.formulaInput.destroy();\n }\n this.formulaInput = null;\n }\n}\n\nclass NameEditor extends Widget {\n readData() {\n const data = [];\n this._workbook.forEachName(function(def) {\n if (!def.hidden && def.value instanceof Ref) {\n data.push({ name: def.name });\n }\n });\n return data;\n }\n value(val) {\n if (this.options.combobox.current) {\n return this.options.combobox.current.value(val);\n }\n }\n}\n\nclass SheetsBar extends Widget {\n constructor(element, options) {\n super(element, Object.assign({}, { name: \"SheetsBar\" }, options));\n this.events = [\n \"select\",\n \"reorder\",\n \"rename\"\n ];\n }\n\n onSheetReorderEnd(e) {\n this.trigger(\"reorder\", { oldIndex: e.oldIndex, newIndex: e.newIndex });\n }\n onSheetRemove(removedSheetName) {\n this.trigger(\"remove\", { name: removedSheetName, confirmation: true });\n }\n onSheetSelect(selectedSheetText) {\n this.trigger(\"select\", { name: selectedSheetText, isAddButton: false });\n }\n onSheetRename(newSheetName, sheetIndex) {\n this.trigger(\"rename\", { name: newSheetName, sheetIndex: sheetIndex });\n }\n onAddSelect() {\n this.trigger(\"select\", { isAddButton: true });\n }\n destroy() {\n super.destroy();\n }\n}\n\n/* eslint-disable complexity */\n/* eslint-disable consistent-return */\n/* eslint-disable default-case */\n/* eslint-disable no-implicit-coercion */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable key-spacing */\n/* eslint-disable no-param-reassign */\n\n\nfunction selectElementContents(el) {\n let sel = window.getSelection();\n sel.removeAllRanges();\n\n let range = document.createRange();\n range.selectNodeContents(el);\n\n sel.addRange(range);\n}\n\nfunction cellBefore(table, row) {\n let cells = table.trs[row].children;\n return cells[cells.length - 2];\n}\n\nfunction cellAbove(table, row) {\n let prevRow = table.trs[row - 1];\n let index = table.trs[row].children.length - 1;\n\n if (prevRow && index >= 0) {\n return prevRow.children[index];\n }\n}\n\nfunction addCell(table, row, cell) {\n let style = {};\n\n if (cell.background) {\n style.backgroundColor = cell.background;\n }\n\n if (cell.color) {\n style.color = cell.color;\n }\n\n if (cell.fontFamily) {\n style.fontFamily = cell.fontFamily;\n }\n\n if (cell.underline) {\n style.textDecoration = \"underline\";\n }\n\n if (cell.italic) {\n style.fontStyle = \"italic\";\n }\n\n if (cell.textAlign) {\n style.textAlign = cell.textAlign;\n }\n\n if (cell.verticalAlign) {\n style.verticalAlign = (cell.verticalAlign === \"center\") ? \"middle\" : cell.verticalAlign;\n }\n\n if (cell.bold) {\n style.fontWeight = \"bold\";\n }\n\n if (cell.fontSize) {\n style.fontSize = cell.fontSize + \"px\";\n }\n\n if (cell.wrap === true) {\n style.whiteSpace = \"pre-wrap\";\n }\n\n if (cell.borderRight) {\n style.borderRight = cellBorder(cell.borderRight);\n } else if (cell.background) {\n style.borderRightColor = cell.background;\n }\n\n if (cell.borderBottom) {\n style.borderBottom = cellBorder(cell.borderBottom);\n } else if (cell.background) {\n style.borderBottomColor = cell.background;\n }\n\n let data = cell.value, type = typeof data, format = cell.format;\n if (!format && type === \"number\" && data !== Math.floor(data)) {\n format = \"0.##############\";\n }\n if (format && data != null) {\n data = formatting.format(data, format);\n if (data.__dataType) {\n type = data.__dataType;\n }\n }\n\n let attrs = { style: style };\n\n if (!style.textAlign) {\n switch (type) {\n case \"number\":\n case \"date\":\n case \"percent\":\n case \"currency\":\n style.textAlign = \"right\";\n break;\n case \"boolean\":\n style.textAlign = \"center\";\n break;\n }\n }\n\n if (!/^(?:string|undefined)$/.test(type)) {\n // provide original value and number format for better\n // interoperability with google sheets and libre office.\n attrs.sdval = cell.value;\n attrs[\"data-sheets-value\"] = JSON.stringify({ 1: 3, 3: cell.value });\n if (format) {\n attrs.sdnum = format;\n attrs[\"data-sheets-numberformat\"] = JSON.stringify({ 1: 2, 2: format, 3: 1 });\n }\n }\n if (cell.formula) {\n attrs[\"data-sheets-formula\"] = \"=\" + cell.formula.print();\n }\n\n let className = null;\n\n if (cell.enable === false) {\n className = \"k-disabled\";\n }\n\n let td = table.addCell(row, data, attrs, className, cell.validation);\n\n let border, sibling;\n\n if (cell.borderLeft) {\n sibling = cellBefore(table, row);\n border = cellBorder(cell.borderLeft);\n if (sibling && border) {\n sibling.attr.style.borderRight = border;\n }\n } else if (cell.background) {\n style.borderLeftColor = cell.background;\n }\n\n if (cell.borderTop) {\n sibling = cellAbove(table, row);\n border = cellBorder(cell.borderTop);\n if (sibling && border) {\n sibling.attr.style.borderBottom = border;\n }\n } else if (cell.background) {\n style.borderTopColor = cell.background;\n }\n\n return td;\n}\n\nclass HtmlTable {\n constructor() {\n this.cols = [];\n this.trs = [];\n this._height = 0;\n this._width = 0;\n }\n\n addColumn(width) {\n this._width += width;\n\n let col = dom.element(\"col\", { style: { width: width + \"px\" } });\n\n col.visible = width > 0;\n\n this.cols.push(col);\n }\n\n addRow(height) {\n let attr = null;\n\n attr = { style: { height: height + \"px\" } };\n\n this._height += height;\n\n let tr = dom.element(\"tr\", attr);\n\n tr.visible = height > 0;\n\n this.trs.push(tr);\n }\n\n addCell(rowIndex, text, attrs, className, validation) {\n if (text === null || text === undefined) {\n text = \"\";\n }\n if (!(text instanceof dom.Node)) {\n text = dom.text(text);\n }\n\n let children = [text];\n\n if (validation && !validation.value) {\n children.push(dom.element(\"span\", { className: \"k-dirty\" }));\n\n className = (className || \"\") + (className ? \" \" : \"\") + \"k-dirty-cell\";\n attrs.title = validation.message;\n }\n\n if (className) {\n attrs.className = className;\n }\n let td = dom.element(\"td\", attrs, children);\n\n this.trs[rowIndex].children.push(td);\n return td;\n }\n\n toDomTree(x, y, className) {\n this.trs = this.trs.filter(function (tr) {\n return tr.visible;\n });\n\n let offset = 0;\n this.cols = this.cols.filter(function (col, ci) {\n if (!col.visible) {\n this.trs.forEach(function (tr) {\n tr.children.splice(ci - offset, 1);\n });\n offset++;\n }\n\n return col.visible;\n }, this);\n\n return dom.element(\"table\", {\n style: { left: x + \"px\", top: y + \"px\", height: this._height + \"px\", width: this._width + \"px\" },\n className: className,\n role: \"presentation\"\n }, [\n dom.element(\"colgroup\", null, this.cols),\n dom.element(\"tbody\", null, this.trs)\n ]);\n }\n}\n\nfunction within(value, min, max) {\n return value >= min && value <= max;\n}\n\nclass View extends Observable {\n constructor(element, options) {\n super();\n let classNames = View.classNames;\n\n this.element = element;\n\n this.options = deepExtend({}, {\n messages: messages.view\n }, this.options, options);\n\n this.events = ['update', 'message'];\n\n this._chrome();\n\n this._dialogs = [];\n\n this._formulaInput();\n\n this.wrapper = element.querySelector(DOT + classNames.view);\n this.container = element.querySelector(DOT + classNames.fixedContainer);\n this.scroller = element.querySelector(DOT + classNames.scroller);\n this.clipboard = element.querySelector(DOT + classNames.clipboard);\n\n this.viewSize = this.scroller ?\n this.scroller.querySelector(\".k-spreadsheet-view-size\") || this.scroller.firstElementChild :\n null;\n\n if (!this.viewSize) {\n throw new Error(\"The scroller element does not contain a view size element.\");\n }\n\n this.tree = new dom.Tree(this.container);\n this.clipboardContents = new dom.Tree(this.clipboard);\n\n this.editor = new SheetEditor(this);\n\n this._sheetsbar();\n\n this.options.createContextMenus?.();\n }\n\n enableClipboard(enable) {\n this.isClipboardDeactivated = !enable;\n\n if (enable) {\n this.clipboard.setAttribute(\"contenteditable\", enable);\n } else {\n this.clipboard.removeAttribute(\"contenteditable\");\n }\n }\n\n _resize() {\n // let actionBar = $(this.formulaBar.element).parents(\".k-spreadsheet-action-bar\");\n // let outerHeight = kendo._outerHeight;\n // let tabstripHeight = this.tabstrip ? outerHeight(this.tabstrip.element) : 0;\n // let formulaBarHeight = actionBar ? outerHeight(actionBar) : 0;\n // let sheetsBarHeight = this.sheetsbar ? outerHeight(this.sheetsbar.element) : 0;\n\n // this.wrapper.height(\n // this.element.height() -\n // (tabstripHeight + formulaBarHeight + sheetsBarHeight)\n // );\n\n // if (this.tabstrip) {\n // this.tabstrip.quickAccessAdjust();\n // }\n }\n\n _chrome() {\n // let wrapper = document.createElement('div');\n // wrapper.className = 'k-spreadsheet-action-bar';\n // this.element.appendChild(wrapper);\n\n let nameEditor = this.element.querySelector('.k-spreadsheet-name-editor');\n this.nameEditor = new NameEditor(nameEditor, { combobox: this.options.nameBoxRef });\n\n // let formulaBar = document.createElement('div');\n // wrapper.appendChild(formulaBar);\n let formulaBar = this.element.querySelector('.k-spreadsheet-formula-bar');\n this.formulaBar = new FormulaBar(formulaBar, { input: this.options.formulaBarInputRef });\n\n // if (this.options.toolbar) {\n this._tabstrip();\n // }\n }\n\n _formulaInput() {\n let editor = this.element.querySelector(DOT + View.classNames.cellEditor);\n\n this.formulaInput = new FormulaInput(editor, {\n autoScale: true,\n input: this.options.formulaCellInputRef\n });\n }\n\n _sheetsbar() {\n if (this.options.sheetsbar) {\n this.sheetsbar = new SheetsBar(this.element.querySelector(DOT + View.classNames.sheetsBar), this.options.sheetsbar);\n this.options.createSheetBar?.(this.options.openDialogCallback);\n }\n }\n\n _tabstrip() {\n this.tabstrip = this.options.createTabStrip?.();\n // let messages = this.options.messages.tabs;\n // let options = $.extend(true, { home: true, insert: true, data: true }, this.options.toolbar);\n // let tabs = [];\n\n // if (this.tabstrip) {\n // this.tabstrip.destroy();\n // this.element.children(\".k-tabstrip\").remove();\n // }\n\n // for (let name in options) {\n // if (options[name] === true || options[name] instanceof Array) {\n // tabs.push({ id: name, text: messages[name], content: \"\" });\n // }\n // }\n\n // this.tabstrip = new kendo.spreadsheet.TabStrip($(\"
    \").prependTo(this.element), {\n // animation: false,\n // dataTextField: \"text\",\n // dataContentField: \"content\",\n // dataSource: tabs,\n // toolbarOptions: options,\n // view: this\n // });\n\n // this.tabstrip.select(0);\n }\n\n _executeCommand(e) {\n this._sheet.trigger(\"commandRequest\", e);\n }\n\n workbook(workbook) {\n this._workbook = workbook;\n workbook._view = this;\n this.nameEditor._workbook = workbook;\n }\n\n sheet(sheet) {\n this._sheet = sheet;\n }\n\n activeCellRectangle() {\n return this.cellRectangle(this._sheet._viewActiveCell());\n }\n\n _rectangle(pane, ref) {\n return pane._grid.boundingRectangle(ref.toRangeRef());\n }\n\n isColumnResizer(x, pane, col) {\n // relative to content\n x -= this._sheet._grid._headerWidth;\n\n // add scroll if pane is not frozen\n if (!pane._grid.columns.frozen) {\n x += this.scroller.scrollLeft;\n }\n\n col = this._sheet._grid._columns.locate(0, col, function (w) {\n return Math.abs(x - w) <= RESIZE_HANDLE_WIDTH / 2;\n });\n\n return col !== null && !this._sheet.isHiddenColumn(col) ? col : null;\n }\n\n isRowResizer(y, pane, row) {\n // relative to content\n y -= this._sheet._grid._headerHeight;\n\n // add scroll if pane is not frozen\n if (!pane._grid.rows.frozen) {\n y += this.scroller.scrollTop;\n }\n\n row = this._sheet._grid._rows.locate(0, row, function (h) {\n return Math.abs(y - h) <= RESIZE_HANDLE_WIDTH / 2;\n });\n\n return row !== null && !this._sheet.isHiddenRow(row) ? row : null;\n }\n\n isFilterIcon(x, y, pane, ref) {\n let self = this;\n let theGrid = pane._grid;\n let scrollTop = theGrid.rows.frozen ? 0 : self.scroller.scrollTop;\n let scrollLeft = theGrid.columns.frozen ? 0 : self.scroller.scrollLeft;\n\n x -= self._sheet._grid._headerWidth - scrollLeft;\n y -= self._sheet._grid._headerHeight - scrollTop;\n\n return withExit(function (exit) {\n self._sheet.forEachFilterHeader(ref, function (ref) {\n let rect = self._rectangle(pane, ref);\n if (pane.filterIconRect(rect).intersects(x, y)) {\n exit(true);\n }\n });\n });\n }\n\n isAutoFill(x, y, pane) {\n let selection = this._sheet.select();\n\n if (selection.size > 1) {\n return false;\n }\n\n x -= this._sheet._grid._headerWidth;\n y -= this._sheet._grid._headerHeight;\n\n if (!pane._grid.columns.frozen) {\n x += this.scroller.scrollLeft;\n }\n\n if (!pane._grid.rows.frozen) {\n y += this.scroller.scrollTop;\n }\n\n let rectangle = this._rectangle(pane, selection);\n\n return Math.abs(rectangle.right - x) < 8 && Math.abs(rectangle.bottom - y) < 8;\n }\n\n isEditButton(x, y, pane) {\n let ed = this._sheet.activeCellCustomEditor();\n if (ed) {\n let r = this.activeCellRectangle();\n // XXX: hard-coded button width (20)\n\n if (y >= r.top && y <= r.bottom) {\n return pane._editorInLastColumn ? x < r.left && x >= r.left - EDIT_BUTTON_WIDTH\n : x > r.right && x <= r.right + EDIT_BUTTON_WIDTH;\n }\n }\n }\n\n drawingAt(x, y, pane) {\n x -= this._sheet._grid._headerWidth;\n y -= this._sheet._grid._headerHeight;\n\n if (!pane._grid.columns.frozen) {\n x += this.scroller.scrollLeft;\n }\n\n if (!pane._grid.rows.frozen) {\n y += this.scroller.scrollTop;\n }\n\n let sheet = this._sheet;\n let drawings = this._sheet._drawings;\n for (let i = drawings.length; --i >= 0;) {\n let d = drawings[i];\n let box = sheet.drawingBoundingBox(d);\n if (box.intersects(x, y)) {\n return {\n drawing: d,\n\n // also include how far is the drawing's\n // top-left from the mouse position, as it's\n // not easy to compute some place else.\n drx: box.left - x,\n dry: box.top - y\n };\n }\n }\n }\n\n objectAt(x, y, noDrawing) {\n let grid = this._sheet._grid;\n let object, pane;\n\n if (x < 0 || y < 0 || x > this.scroller.clientWidth || y > this.scroller.clientHeight) {\n object = { type: \"outside\" };\n } else if (x < grid._headerWidth && y < grid._headerHeight) {\n object = { type: \"topcorner\" };\n } else {\n pane = this.paneAt(x, y);\n\n if (!pane) {\n object = { type: \"outside\" };\n } else {\n if (!noDrawing) {\n let drawing = this.drawingAt(x, y, pane);\n if (drawing) {\n return {\n type: \"drawing\",\n drawing: drawing.drawing,\n drx: drawing.drx,\n dry: drawing.dry,\n pane: pane,\n startX: x,\n startY: y\n };\n }\n }\n\n let row = pane._grid.rows.indexVisible(y, this.scroller.scrollTop);\n let column = pane._grid.columns.indexVisible(x, this.scroller.scrollLeft);\n\n let type = \"cell\";\n let ref = new CellRef(row, column);\n let selecting = this._sheet.selectionInProgress();\n\n if (this.isAutoFill(x, y, pane)) {\n type = \"autofill\";\n } else if (this.isFilterIcon(x, y, pane, ref)) {\n type = \"filtericon\";\n } else if (!selecting && x < grid._headerWidth) {\n type = \"rowheader\";\n if ((row = this.isRowResizer(y, pane, row)) !== null) {\n ref = new CellRef(row, -Infinity);\n type = \"rowresizehandle\";\n }\n } else if (!selecting && y < grid._headerHeight) {\n type = \"columnheader\";\n if ((column = this.isColumnResizer(x, pane, column)) !== null) {\n ref = new CellRef(-Infinity, column);\n type = \"columnresizehandle\";\n }\n } else if (this.isEditButton(x, y, pane)) {\n type = \"editor\";\n }\n\n object = { type: type, ref: ref };\n }\n }\n\n object.pane = pane;\n object.x = x;\n object.y = y;\n return object;\n }\n\n paneAt(x, y) {\n return this.panes.filter(function paneLocationWithin(pane) {\n let grid = pane._grid;\n return within(y, grid.top, grid.bottom) && within(x, grid.left, grid.right);\n })[0];\n }\n\n containingPane(cell) {\n return this.panes.filter(function (pane) {\n if (pane._grid.contains(cell)) {\n return true;\n }\n return false;\n })[0];\n }\n\n cellRectangle(cell) {\n let theGrid = this.containingPane(cell)._grid;\n let rectangle = this._sheet._grid.rectangle(cell);\n\n return rectangle.offset(\n theGrid.headerWidth - (theGrid.columns.frozen ? 0 : this.scroller.scrollLeft),\n theGrid.headerHeight - (theGrid.rows.frozen ? 0 : this.scroller.scrollTop)\n );\n }\n\n refresh(reason) {\n let sheet = this._sheet;\n\n // if (this.tabstrip) {\n // this.tabstrip.refreshTools(sheet.range(sheet.activeCell()));\n // }\n\n this.trigger('update', { reason, range: sheet.range(sheet.activeCell()), sheet });\n\n // if (reason.sheetSelection && this.sheetsbar) {\n // this.sheetsbar.renderSheets(this._workbook.sheets(), this._workbook.sheetIndex(this._sheet));\n // }\n\n this._resize();\n\n //TODO: refresh sheets list on sheetSelection\n this.viewSize.style.height = sheet._grid.totalHeight() + \"px\";\n this.viewSize.style.width = sheet._grid.totalWidth() + \"px\";\n\n if (reason.layout) {\n let frozenColumns = sheet.frozenColumns();\n let frozenRows = sheet.frozenRows();\n\n // main or bottom or right pane\n this.panes = [this._pane(frozenRows, frozenColumns)];\n\n // left pane\n if (frozenColumns > 0) {\n this.panes.push(this._pane(frozenRows, 0, null, frozenColumns));\n }\n\n // top pane\n if (frozenRows > 0) {\n this.panes.push(this._pane(0, frozenColumns, frozenRows, null));\n }\n\n // left-top \"fixed\" pane\n if (frozenRows > 0 && frozenColumns > 0) {\n this.panes.push(this._pane(0, 0, frozenRows, frozenColumns));\n }\n }\n\n if (reason.filter) {\n this._destroyFilterMenu();\n }\n\n if (reason.activeCell) {\n this._focus = sheet.activeCell().toRangeRef();\n }\n }\n\n createFilterMenu(column) {\n this._destroyFilterMenu();\n\n let sheet = this._sheet;\n let ref = sheet.filter().ref;\n let range = new Range$1(ref, sheet);\n\n let options = { column: column, range: range };\n\n this._filterMenu = this.options.createFilterMenu(options);\n\n return this._filterMenu;\n }\n\n selectClipboardContents() {\n if (!this.isClipboardDeactivated) {\n this.clipboard.focus({ preventScroll: true });\n selectElementContents(this.clipboard);\n }\n }\n\n scrollIntoView(cell) {\n let willScroll = false;\n let theGrid = this.containingPane(cell)._grid;\n\n let boundaries = theGrid.scrollBoundaries(cell);\n\n let scroller = this.scroller;\n let scrollTop = theGrid.rows.frozen ? 0 : scroller.scrollTop;\n let scrollLeft = theGrid.columns.frozen ? 0 : scroller.scrollLeft;\n\n if (boundaries.top < scrollTop) {\n willScroll = true;\n scroller.scrollTop = boundaries.scrollTop;\n }\n\n if (boundaries.bottom > scrollTop) {\n willScroll = true;\n scroller.scrollTop = boundaries.scrollBottom;\n }\n\n if (boundaries.left < scrollLeft) {\n willScroll = true;\n scroller.scrollLeft = boundaries.scrollLeft;\n }\n\n if (boundaries.right > scrollLeft) {\n willScroll = true;\n scroller.scrollLeft = boundaries.scrollRight;\n }\n\n return willScroll;\n }\n\n _destroyDialog() {\n this._dialogs.pop();\n }\n\n openCustomEditor() {\n let self = this;\n let cell = self._sheet.activeCell().first();\n let editor = self._sheet.activeCellCustomEditor();\n let range = self._sheet.range(cell);\n editor.edit({\n range: range,\n rect: self.activeCellRectangle(),\n view: this,\n validation: this._sheet.validation(cell),\n callback: function (value, parse) {\n self._executeCommand({\n command: \"EditCommand\",\n options: {\n operatingRange: range,\n editRange: range,\n property: parse ? \"input\" : \"value\",\n value: value\n }\n });\n }\n });\n }\n\n openDialog(name, options) {\n let sheet = this._sheet;\n return sheet.withCultureDecimals(function () {\n let ref = sheet.activeCell();\n let range = new Range$1(ref, sheet);\n let args = { ...options, name, ref, range };\n this.trigger('message', args);\n return args.dialog;\n }.bind(this));\n }\n\n showError(options, reopenEditor) {\n let currentDialogs = this._dialogs;\n let errorMessages = this.options.messages.errors;\n\n if (currentDialogs.length > 0) {\n return;\n }\n\n let onClose = function () {\n currentDialogs.pop();\n // let dlg = e.sender;\n this.selectClipboardContents();\n if (reopenEditor) { // dlg._retry &&\n reopenEditor();\n }\n }.bind(this);\n\n const dialogOptions = {\n title: options.title || \"Error\",\n text: options.body ? options.body : errorMessages[options.type],\n close: onClose\n };\n\n currentDialogs.push(dialogOptions);\n\n this.openDialog(options.type || \"message\", dialogOptions);\n }\n\n destroy() {\n this.unbind();\n\n [this.tree, this.clipboardContents].forEach(el => {\n while (el && el.root && el.root.lastChild) {\n el.root.removeChild(el.root.lastChild);\n }\n });\n this.tree = this.clipboardContents = null;\n\n // this._dialogs.forEach(function(dialog) {\n // dialog.destroy();\n // });\n\n // if (this.cellContextMenu) {\n // this.cellContextMenu.destroy();\n // }\n\n // this.rowHeaderContextMenu.destroy();\n // this.colHeaderContextMenu.destroy();\n // this.drawingContextMenu.destroy();\n\n // this.cellContextMenu = this.rowHeaderContextMenu =\n // this.colHeaderContextMenu =\n // this.drawingContextMenu = null;\n\n if (this.tabstrip) {\n this.tabstrip.destroy();\n this.tabstrip = null;\n }\n\n this._destroyFilterMenu();\n }\n\n _destroyFilterMenu() {\n if (this._filterMenu) {\n this._filterMenu.destroy();\n this._filterMenu = undefined;\n }\n }\n\n render(reason) {\n // if (!this.element.is(\":visible\")) {\n // return;\n // }\n let sheet = this._sheet;\n let focus = sheet.focus();\n let scrollbarSize = scrollbar();\n let contentWidth = this.wrapper.clientWidth - scrollbarSize;\n let contentHeight = this.wrapper.clientHeight - scrollbarSize;\n\n if (focus && this.scrollIntoView(focus)) {\n return;\n }\n\n let resizeDirection =\n !sheet.resizingInProgress() ? \"none\" :\n sheet.resizeHandlePosition().col === -Infinity ? \"column\" :\n \"row\";\n\n this.wrapper.classList.toggle(viewClassNames.editContainer, this.editor.isActive());\n this.wrapper.classList.toggle(viewClassNames.horizontalResize, resizeDirection === \"row\");\n this.wrapper.classList.toggle(viewClassNames.verticalResize, resizeDirection === \"column\");\n\n let grid = sheet._grid;\n let content = [];\n let args = {\n scroller: this.scroller,\n toplevelElements: content,\n contentWidth: contentWidth,\n contentHeight: contentHeight\n };\n this.panes.forEach(function (pane) {\n content.push(pane.render(args));\n });\n\n let topCorner = dom.element(\"div\", {\n style: { width: grid._headerWidth + \"px\", height: grid._headerHeight + \"px\" },\n className: View.classNames.topCorner\n });\n\n content.push(topCorner);\n\n if (sheet.resizeHandlePosition() && sheet.resizeHintPosition()) {\n content.push(this.renderResizeHint());\n }\n\n this.tree.render(content);\n\n this.container.style.width = contentWidth + 'px';\n this.container.style.height = contentHeight + 'px';\n // $(this.container).css({\n // width: contentWidth,\n // height: contentHeight\n // });\n\n if (this.editor.isActive()) {\n this.editor.toggleTooltip(this.activeCellRectangle());\n } else if (!(reason.resize ||\n reason.comment ||\n sheet.selectionInProgress() ||\n sheet.resizingInProgress() ||\n sheet.draggingInProgress() ||\n sheet.isInEditMode())) {\n this.renderClipboardContents();\n }\n }\n\n // this renders the big blue line during resizing\n renderResizeHint() {\n let sheet = this._sheet;\n let ref = sheet.resizeHandlePosition();\n\n let horizontal = ref.col !== -Infinity;\n\n let style;\n if (horizontal) {\n style = {\n height: this.scroller.clientHeight + \"px\",\n width: RESIZE_HANDLE_WIDTH + \"px\",\n left: sheet.resizeHintPosition().x + \"px\",\n top: \"0px\"\n };\n } else {\n style = {\n height: RESIZE_HANDLE_WIDTH + \"px\",\n width: this.scroller.clientWidth + \"px\",\n top: sheet.resizeHintPosition().y + \"px\",\n left: \"0px\"\n };\n }\n\n let classNames = Pane.classNames;\n\n return dom.element(\"div\", {\n className: classNames.resizeHint + (!horizontal ? \" \" + classNames.resizeHintVertical : \"\"),\n style: style\n }, [\n dom.element(\"div\", { className: classNames.resizeHintHandle }),\n dom.element(\"div\", { className: classNames.resizeHintMarker })\n ]);\n }\n\n renderClipboardContents() {\n let sheet = this._sheet;\n let grid = sheet._grid;\n\n // if (sheet._activeDrawing && sheet._activeDrawing.image) {\n // let url = this._workbook.imageUrl(sheet._activeDrawing.image);\n // let img = dom.element(\"img\", {\n // src: url,\n // style: {\n // width: sheet._activeDrawing.width + \"px\",\n // height: sheet._activeDrawing.height + \"px\"\n // }\n // });\n // this.clipboardContents.render([ img ]);\n // this.selectClipboardContents();\n // return;\n // }\n\n let selection = grid.normalize(sheet.select().toRangeRef());\n let status = this._workbook.clipboard().canCopy();\n if (status.canCopy === false && status.multiSelection) {\n this.clipboardContents.render([]);\n this.selectClipboardContents();\n return;\n }\n\n selection = sheet.trim(selection);\n\n let table = new HtmlTable();\n\n let selectionView = grid.rangeDimensions(selection);\n\n selectionView.rows.forEach(function (height) {\n table.addRow(height);\n });\n\n selectionView.columns.forEach(function (width) {\n table.addColumn(width);\n });\n\n let tmp = sheet._getMergedCells(selection);\n let primaryMergedCells = tmp.primary;\n let secondaryMergedCells = tmp.secondary;\n\n sheet.forEach(selection, function (row, col, cell) {\n let location = new CellRef(row, col).print();\n\n if (!secondaryMergedCells[location]) {\n let td = addCell(table, row - selection.topLeft.row, cell);\n\n let mergedCell = primaryMergedCells[location];\n\n if (mergedCell) {\n td.attr.colspan = mergedCell.width();\n td.attr.rowspan = mergedCell.height();\n }\n }\n });\n\n this.clipboardContents.render([table.toDomTree(0, 0, \"kendo-clipboard-\" + this._workbook.clipboard()._uid)]);\n\n this.selectClipboardContents();\n }\n\n _pane(row, column, rowCount, columnCount) {\n let pane = new Pane(this._sheet, this._sheet._grid.pane({ row: row, column: column, rowCount: rowCount, columnCount: columnCount }), this.options.getIconHTMLString);\n pane.refresh(this.scroller.clientWidth, this.scroller.clientHeight);\n return pane;\n }\n}\n\nView.classNames = viewClassNames;\n\nconst reTable = /]+>/gmi;\nconst tables = contentStr => ((contentStr || '').match(reTable) || []);\n\nclass Clipboard {\n constructor(workbook) {\n this._content = {};\n this._externalContent = {};\n this._internalContent = {};\n this.workbook = workbook;\n this.origin = NULLREF;\n this.iframe = document.createElement(\"iframe\");\n this.iframe.className = \"k-spreadsheet-clipboard-paste\";\n this.iframe.setAttribute(\"title\", \"Spreadsheet clipboard iframe\");\n this.menuInvoked = false;\n this._uid = guid();\n document.body.appendChild(this.iframe);\n }\n\n destroy() {\n if (this.iframe && this.iframe.parentNode) {\n this.iframe.parentNode.removeChild(this.iframe);\n }\n }\n\n canCopy() {\n let status = { canCopy: true };\n let selection = this.workbook.activeSheet().select();\n if (selection === NULLREF) {\n status.canCopy = false;\n }\n if (selection instanceof UnionRef) {\n status.canCopy = false;\n status.multiSelection = true;\n }\n if (this.menuInvoked) {\n status.canCopy = false;\n status.menuInvoked = true;\n }\n return status;\n }\n\n canPaste() {\n let sheet = this.workbook.activeSheet();\n let ref = this.pasteRef();\n let range = sheet.range(ref);\n let status = { canPaste: true, pasteOnMerged: false, pasteOnDisabled: false };\n\n if (!range.enable()) {\n status.canPaste = false;\n status.pasteOnDisabled = true;\n }\n if (!ref.eq(sheet.unionWithMerged(ref))) {\n status.canPaste = false;\n status.pasteOnMerged = true;\n }\n if (this.menuInvoked) {\n status.canPaste = false;\n status.menuInvoked = true;\n }\n return status;\n }\n\n intersectsMerged() {\n let sheet = this.workbook.activeSheet();\n this.parse();\n this.origin = this._content.origRef;\n let ref = this.pasteRef();\n return !ref.eq(sheet.unionWithMerged(ref));\n }\n\n copy() {\n let sheet = this.workbook.activeSheet();\n this.origin = sheet.select();\n this._internalContent = sheet.selection().getState();\n delete this._externalContent.html;\n delete this._externalContent.plain;\n }\n\n cut() {\n let sheet = this.workbook.activeSheet();\n this.copy();\n sheet.range(sheet.select()).clear();\n }\n\n pasteRef() {\n let sheet = this.workbook.activeSheet();\n\n // When pasting from an external source, origin will be\n // NULLREF. Just return the destination range.\n // https://github.com/telerik/kendo-ui-core/issues/3486\n if (this.origin === NULLREF) {\n return sheet.select();\n }\n\n let destination = sheet.activeCell().first();\n let originActiveCell = this.origin.first();\n let rowDelta = originActiveCell.row - destination.row;\n let colDelta = originActiveCell.col - destination.col;\n\n return this.origin.relative(rowDelta, colDelta, 3);\n }\n\n paste() {\n let sheet = this.workbook.activeSheet();\n let pasteRef = this.pasteRef();\n if (pasteRef.bottomRight.row >= sheet._rows._count || pasteRef.bottomRight.col >= sheet._columns._count) {\n sheet.resize(\n Math.max(pasteRef.bottomRight.row + 1, sheet._rows._count),\n Math.max(pasteRef.bottomRight.col + 1, sheet._columns._count)\n );\n }\n sheet.range(pasteRef).setState(this._content, this);\n sheet.triggerChange({ recalc: true, ref: pasteRef });\n }\n\n external(data) {\n if (data && (data.html || data.plain)) {\n this._externalContent = data;\n } else {\n return this._externalContent;\n }\n }\n\n isExternal() {\n return !this._isInternal();\n }\n\n parse() {\n let state;\n\n if (this._isInternal()) {\n state = this._internalContent;\n } else {\n let data = this._externalContent;\n state = data.plain ? parseTSV(data.plain) : newState();\n if (data.html) {\n let doc = this.iframe.contentWindow.document;\n doc.open();\n doc.write(data.html);\n doc.close();\n let table = doc.querySelector(\"table\"),\n program = doc.head.querySelector(\"meta[name=ProgId]\")?.getAttribute(\"content\");\n if (table) {\n let richState = parseHTML(table, program);\n\n // fixup #### values that are sent by Excel when the column is too\n // narrow. It turns out that the plain text clipboard data contains the\n // actual values. https://github.com/telerik/kendo-ui-core/issues/5277\n richState.data.forEach(function(rowData, rowIndex) {\n rowData.forEach(function(colData, colIndex) {\n if (/^\\s*#+\\s*$/.test(colData.value)) {\n colData.value = state.data[rowIndex][colIndex].value;\n }\n });\n });\n state = richState;\n }\n }\n this.origin = state.origRef;\n }\n\n this._content = state;\n }\n\n _isInternal() {\n if (this._externalContent.html === undefined) {\n return true;\n }\n\n const uid = \"kendo-clipboard-\" + this._uid;\n const includeUid = tablesArr => tablesArr.some(table => table.includes(uid));\n\n return includeUid(tables(this._externalContent.html)) || includeUid(tables(this._externalContent.plain));\n }\n}\n\nfunction newState() {\n let ref = new CellRef(0, 0, 0);\n return {\n ref: ref,\n mergedCells: [],\n data: [],\n foreign: true,\n origRef: ref.toRangeRef()\n };\n}\n\nfunction setStateData(state, row, col, value) {\n let data = state.data || (state.data = []);\n if (!data[row]) {\n data[row] = [];\n }\n data[row][col] = value;\n let br = state.origRef.bottomRight;\n br.row = Math.max(br.row, row);\n br.col = Math.max(br.col, col);\n}\n\nfunction stripStyle(style) {\n return style.replace(/^-(?:ms|moz|webkit)-/, \"\");\n}\n\nfunction borderObject(element, styles) {\n // MS Office uses class name and writes borders in the