/* Highcharts JS v9.0.1 (2021-02-15) Sonification module (c) 2012-2021 ystein Moseng License: www.highcharts.com/license */ (function(b){"object"===typeof module&&module.exports?(b["default"]=b,module.exports=b):"function"===typeof define&&define.amd?define("highcharts/modules/sonification",["highcharts"],function(l){b(l);b.Highcharts=l;return b}):b("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(b){function l(c,b,f,p){c.hasOwnProperty(b)||(c[b]=p.apply(null,f))}b=b?b._modules:{};l(b,"Extensions/Sonification/Instrument.js",[b["Core/Globals.js"],b["Core/Utilities.js"]],function(c,b){function f(d){this.init(d)} var p=b.error,m=b.merge,h=b.pick,B=b.uniqueKey,n={type:"oscillator",playCallbackInterval:20,masterVolume:1,oscillator:{waveformShape:"sine"}};f.prototype.init=function(d){if(this.initAudioContext()){this.options=m(n,d);this.id=this.options.id=d&&d.id||B();this.masterVolume=this.options.masterVolume||0;d=c.audioContext;var a=this.destinationNode||d.destination;this.gainNode=d.createGain();this.setGain(0);(this.panNode=d.createStereoPanner&&d.createStereoPanner())?(this.setPan(0),this.gainNode.connect(this.panNode), this.panNode.connect(a)):this.gainNode.connect(a);"oscillator"===this.options.type&&this.initOscillator(this.options.oscillator);this.playCallbackTimers=[]}else p(29)};f.prototype.copy=function(d){return new f(m(this.options,{id:null},d))};f.prototype.initAudioContext=function(){var d=c.win.AudioContext||c.win.webkitAudioContext,a=!!c.audioContext;return d?(c.audioContext=c.audioContext||new d,!a&&c.audioContext&&"running"===c.audioContext.state&&c.audioContext.suspend(),!!(c.audioContext&&c.audioContext.createOscillator&& c.audioContext.createGain)):!1};f.prototype.initOscillator=function(d){this.oscillator=c.audioContext.createOscillator();this.oscillator.type=d.waveformShape;this.oscillator.connect(this.gainNode);this.oscillatorStarted=!1};f.prototype.setPan=function(d){this.panNode&&this.panNode.pan.setValueAtTime(d,c.audioContext.currentTime)};f.prototype.setGain=function(d,a){var e=this.gainNode;d*=this.masterVolume;e&&(1.2c?e:a},Infinity):d};f.prototype.clearPlayCallbackTimers=function(){this.playCallbackTimers.forEach(function(d){clearInterval(d)});this.playCallbackTimers=[]};f.prototype.setFrequency=function(d,a){a=a||{};d=this.getValidFrequency(d,a.min,a.max);"oscillator"===this.options.type&&this.oscillatorPlay(d)};f.prototype.oscillatorPlay=function(d){this.oscillatorStarted||(this.oscillator.start(),this.oscillatorStarted=!0);this.oscillator.frequency.setValueAtTime(d, c.audioContext.currentTime)};f.prototype.preparePlay=function(){this.setGain(.001);"suspended"===c.audioContext.state&&c.audioContext.resume();this.oscillator&&!this.oscillatorStarted&&(this.oscillator.start(),this.oscillatorStarted=!0)};f.prototype.play=function(d){var a=this,e=d.duration||0,g=function(e,g,b){var c=d.duration,f=0,h=a.options.playCallbackInterval;if("function"===typeof e){var m=setInterval(function(){f++;var d=f*h/c;if(1<=d)a[g](e(1),b),clearInterval(m);else a[g](e(d),b)},h);a.playCallbackTimers.push(m)}else a[g](e, b)};if(a.id)if("suspended"===c.audioContext.state||this.oscillator&&!this.oscillatorStarted)a.preparePlay(),setTimeout(function(){a.play(d)},10);else{a.playCallbackTimers.length&&a.clearPlayCallbackTimers();a.cancelGainRamp();a.stopOscillatorTimeout&&(clearTimeout(a.stopOscillatorTimeout),delete a.stopOscillatorTimeout);a.stopTimeout&&(clearTimeout(a.stopTimeout),delete a.stopTimeout,a.stopCallback&&(a._play=a.play,a.play=function(){},a.stopCallback("cancelled"),a.play=a._play));var b=e=e.max||g.push(new b.sonification.TimelineEvent({time:e.max}));g.length&&a.addTimelineEvents(g)})}function x(a){return a.reduce(function(a,b){return a+w(b).reduce(function(a,b){return(b=b.series&&b.seriesOptions&&b.seriesOptions.timeExtremes)?Math.max(a,b.max-b.min):a},0)},0)}function A(a,e){var c=Math.max(e-G(a),0),d=x(a);return a.reduce(function(a,e){e=w(e).reduce(function(a,e){e instanceof b.sonification.TimelinePath?a.push(e):e.series&&(e.seriesOptions.duration=e.seriesOptions.duration|| p.virtualAxisTranslate(e.seriesOptions.timeExtremes.max-e.seriesOptions.timeExtremes.min,{min:0,max:d},{min:0,max:c}),a.push(g(e.series,e.seriesOptions)));return a},[]);a.push(e);return a},[])}function H(a,b){var e,c;if(null===b||void 0===b?0:b.instruments)return b.instruments;var d=(null===(e=a.chart.options.sonification)||void 0===e?void 0:e.defaultInstrumentOptions)||{},g=function(a){M(a,function(b,e){null===b&&delete a[e]})};return((null===(c=a.options.sonification)||void 0===c?void 0:c.instruments)|| [{}]).map(function(a){g(a.mapping||{});g(a);return{instrument:a.instrument||d.instrument,instrumentOptions:u(d,a,{mapping:void 0,instrument:void 0}),instrumentMapping:u(d.mapping,a.mapping)}})}function E(a){var b,e,c=a.options.sonification||{},d=a.chart.options.sonification||{},g=d.events||{},f=c.events||{};return{onEnd:f.onSeriesEnd||g.onSeriesEnd,onStart:f.onSeriesStart||g.onSeriesStart,onPointEnd:f.onPointEnd||g.onPointEnd,onPointStart:f.onPointStart||g.onPointStart,pointPlayTime:null===(e=null=== (b=d.defaultInstrumentOptions)||void 0===b?void 0:b.mapping)||void 0===e?void 0:e.pointPlayTime,masterVolume:d.masterVolume,instruments:H(a),earcons:c.earcons||d.earcons}}function I(a,b){var e,c,d,g,f;a=a.options.sonification||{};return u({duration:a.duration,afterSeriesWait:a.afterSeriesWait,pointPlayTime:null===(c=null===(e=a.defaultInstrumentOptions)||void 0===e?void 0:e.mapping)||void 0===c?void 0:c.pointPlayTime,order:a.order,onSeriesStart:null===(d=a.events)||void 0===d?void 0:d.onSeriesStart, onSeriesEnd:null===(g=a.events)||void 0===g?void 0:g.onSeriesEnd,onEnd:null===(f=a.events)||void 0===f?void 0:f.onEnd},b)}"";var L=f.find,K=f.isArray,u=f.merge,y=f.pick,w=f.splat,M=f.objectEach;return{chartSonify:function(a){var e=I(this,a);this.sonification.timeline&&this.sonification.timeline.pause();this.sonification.duration=e.duration;var c=l(this,e.instruments,e.dataExtremes);a=z(e.order,this,function(a){return r(a,c,e)});a=v(a,e.afterSeriesWait||0);a=A(a,e.duration);a.forEach(function(a){q(a)}); this.sonification.timeline=new b.sonification.Timeline({paths:a,onEnd:e.onEnd});this.sonification.timeline.play()},seriesSonify:function(a){var e=this.chart.options.sonification,c=this.options.sonification;a=u({duration:(null===c||void 0===c?void 0:c.duration)||(null===e||void 0===e?void 0:e.duration)},E(this),a);e=g(this,a);c=this.chart.sonification;c.timeline&&c.timeline.pause();c.duration=a.duration;c.timeline=new b.sonification.Timeline({paths:[e]});c.timeline.play()},pause:function(a){this.sonification.timeline? this.sonification.timeline.pause(y(a,!0)):this.sonification.currentlyPlayingPoint&&this.sonification.currentlyPlayingPoint.cancelSonify(a)},resume:function(a){this.sonification.timeline&&this.sonification.timeline.play(a)},rewind:function(a){this.sonification.timeline&&this.sonification.timeline.rewind(a)},cancel:function(a){this.pauseSonify(a);this.resetSonifyCursor()},getCurrentPoints:function(){if(this.sonification.timeline){var a=this.sonification.timeline.getCursor();return Object.keys(a).map(function(b){return a[b].eventObject}).filter(function(a){return a instanceof k})}return[]},setCursor:function(a){var b=this.sonification.timeline;b&&w(a).forEach(function(a){b.setCursor(a.id)})},resetCursor:function(){this.sonification.timeline&&this.sonification.timeline.resetCursor()},resetCursorEnd:function(){this.sonification.timeline&&this.sonification.timeline.resetCursorEnd()}}});l(b,"Extensions/Sonification/Timeline.js",[b["Core/Globals.js"],b["Core/Utilities.js"],b["Extensions/Sonification/Utilities.js"]],function(b,k,f){function c(a){this.init(a||{})}function m(a){this.init(a)} function h(a){this.init(a||{})}var l=k.merge,n=k.splat,d=k.uniqueKey;c.prototype.init=function(a){this.options=a;this.time=a.time||0;this.id=this.options.id=a.id||d()};c.prototype.play=function(a){var b=this.options.eventObject,c=this.options.onEnd,d=a&&a.onEnd,f=this.options.playOptions&&this.options.playOptions.onEnd;a=l(this.options.playOptions,a);b&&b.sonify?(a.onEnd=c||d||f?function(){var a=arguments;[c,d,f].forEach(function(b){b&&b.apply(this,a)})}:void 0,b.sonify(a)):(d&&d(),c&&c())};c.prototype.cancel= function(a){this.options.eventObject.cancelSonify(a)};m.prototype.init=function(a){this.options=a;this.id=this.options.id=a.id||d();this.cursor=0;this.eventsPlaying={};this.events=a.silentWait?[new c({time:0}),new c({time:a.silentWait})]:this.options.events;this.targetDuration=a.targetDuration||a.silentWait;this.sortEvents();this.updateEventIdMap();this.signalHandler=new f.SignalHandler(["playOnEnd","masterOnEnd","onStart","onEventStart","onEventEnd"]);this.signalHandler.registerSignalCallbacks(l(a, {masterOnEnd:a.onEnd}))};m.prototype.sortEvents=function(){this.events=this.events.sort(function(a,b){return a.time-b.time})};m.prototype.updateEventIdMap=function(){this.eventIdMap=this.events.reduce(function(a,b,c){a[b.id]=c;return a},{})};m.prototype.addTimelineEvents=function(a){this.events=this.events.concat(a);this.sortEvents();this.updateEventIdMap()};m.prototype.getCursor=function(){return this.events[this.cursor]};m.prototype.setCursor=function(a){a=this.eventIdMap[a];return"undefined"!== typeof a?(this.cursor=a,!0):!1};m.prototype.play=function(a){this.pause();this.signalHandler.emitSignal("onStart");this.signalHandler.clearSignalCallbacks(["playOnEnd"]);this.signalHandler.registerSignalCallbacks({playOnEnd:a});this.playEvents(1)};m.prototype.rewind=function(a){this.pause();this.signalHandler.emitSignal("onStart");this.signalHandler.clearSignalCallbacks(["playOnEnd"]);this.signalHandler.registerSignalCallbacks({playOnEnd:a});this.playEvents(-1)};m.prototype.resetCursor=function(){this.cursor= 0};m.prototype.resetCursorEnd=function(){this.cursor=this.events.length-1};m.prototype.pause=function(a){var b=this;clearTimeout(b.nextScheduledPlay);Object.keys(b.eventsPlaying).forEach(function(c){b.eventsPlaying[c]&&b.eventsPlaying[c].cancel(a)});b.eventsPlaying={}};m.prototype.playEvents=function(a){var b=this,c=b.events[this.cursor],d=b.events[this.cursor+a],f=function(a){b.signalHandler.emitSignal("masterOnEnd",a);b.signalHandler.emitSignal("playOnEnd",a)};c.timelinePath=b;if(!1===b.signalHandler.emitSignal("onEventStart", c))f({event:c,cancelled:!0});else if(b.eventsPlaying[c.id]=c,c.play({onEnd:function(a){a={event:c,cancelled:!!a};delete b.eventsPlaying[c.id];b.signalHandler.emitSignal("onEventEnd",a);d||f(a)}}),d){var h=Math.abs(d.time-c.time);1>h?(b.cursor+=a,b.playEvents(a)):this.nextScheduledPlay=setTimeout(function(){b.cursor+=a;b.playEvents(a)},h)}};h.prototype.init=function(a){this.options=a;this.cursor=0;this.paths=a.paths||[];this.pathsPlaying={};this.signalHandler=new f.SignalHandler(["playOnEnd","masterOnEnd", "onPathStart","onPathEnd"]);this.signalHandler.registerSignalCallbacks(l(a,{masterOnEnd:a.onEnd}))};h.prototype.play=function(a){this.pause();this.signalHandler.clearSignalCallbacks(["playOnEnd"]);this.signalHandler.registerSignalCallbacks({playOnEnd:a});this.playPaths(1)};h.prototype.rewind=function(a){this.pause();this.signalHandler.clearSignalCallbacks(["playOnEnd"]);this.signalHandler.registerSignalCallbacks({playOnEnd:a});this.playPaths(-1)};h.prototype.playPaths=function(a){var c=this,d=c.signalHandler; if(c.paths.length){var f=n(this.paths[this.cursor]),h=this.paths[this.cursor+a],k=0,m=function(b){d.emitSignal("onPathStart",b);c.pathsPlaying[b.id]=b;b[0=f.length&&(h&&!e?(c.cursor+=a,n(h).forEach(function(b){b[0