/* * * * (c) 2009-2021 Øystein Moseng * * TimelineEvent class definition. * * License: www.highcharts.com/license * * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!! * * */ 'use strict'; import U from '../../Core/Utilities.js'; var merge = U.merge, uniqueKey = U.uniqueKey; /* eslint-disable no-invalid-this, valid-jsdoc */ /* * * * Class * * */ /** * The TimelineEvent class. Represents a sound event on a timeline. * * @requires module:modules/sonification * * @private * @class * @name Highcharts.TimelineEvent * * @param {Highcharts.TimelineEventOptionsObject} options * Options for the TimelineEvent. */ var TimelineEvent = /** @class */ (function () { /* * * * Constructor * * */ function TimelineEvent(options) { /* * * * Properties * * */ this.id = void 0; this.options = void 0; this.time = void 0; this.init(options); } /* * * * Functions * * */ TimelineEvent.prototype.init = function (options) { this.options = options; this.time = options.time || 0; this.id = this.options.id = options.id || uniqueKey(); }; /** * Play the event. Does not take the TimelineEvent.time option into account, * and plays the event immediately. * * @function Highcharts.TimelineEvent#play * * @param {Highcharts.TimelineEventOptionsObject} [options] * Options to pass in to the eventObject when playing it. * */ TimelineEvent.prototype.play = function (options) { var eventObject = this.options.eventObject, masterOnEnd = this.options.onEnd, playOnEnd = options && options.onEnd, playOptionsOnEnd = this.options.playOptions && this.options.playOptions.onEnd, playOptions = merge(this.options.playOptions, options); if (eventObject && eventObject.sonify) { // If we have multiple onEnds defined, use all playOptions.onEnd = masterOnEnd || playOnEnd || playOptionsOnEnd ? function () { var args = arguments; [masterOnEnd, playOnEnd, playOptionsOnEnd].forEach(function (onEnd) { if (onEnd) { onEnd.apply(this, args); } }); } : void 0; eventObject.sonify(playOptions); } else { if (playOnEnd) { playOnEnd(); } if (masterOnEnd) { masterOnEnd(); } } }; /** * Cancel the sonification of this event. Does nothing if the event is not * currently sonifying. * * @function Highcharts.TimelineEvent#cancel * * @param {boolean} [fadeOut=false] * Whether or not to fade out as we stop. If false, the event is * cancelled synchronously. */ TimelineEvent.prototype.cancel = function (fadeOut) { var eventObject = this.options.eventObject; if (eventObject) { eventObject.cancelSonify(fadeOut); } }; return TimelineEvent; }()); /* * * * Default export * * */ export default TimelineEvent; /* * * * API Declarations * * */ /** * A set of options for the TimelineEvent class. * * @requires module:modules/sonification * * @private * @interface Highcharts.TimelineEventOptionsObject */ /** * The object we want to sonify when playing the TimelineEvent. Can be any * object that implements the `sonify` and `cancelSonify` functions. If this is * not supplied, the TimelineEvent is considered a silent event, and the onEnd * event is immediately called. * @name Highcharts.TimelineEventOptionsObject#eventObject * @type {*} */ /** * Options to pass on to the eventObject when playing it. * @name Highcharts.TimelineEventOptionsObject#playOptions * @type {object|undefined} */ /** * The time at which we want this event to play (in milliseconds offset). This * is not used for the TimelineEvent.play function, but rather intended as a * property to decide when to call TimelineEvent.play. Defaults to 0. * @name Highcharts.TimelineEventOptionsObject#time * @type {number|undefined} */ /** * Unique ID for the event. Generated automatically if not supplied. * @name Highcharts.TimelineEventOptionsObject#id * @type {string|undefined} */ /** * Callback called when the play has finished. * @name Highcharts.TimelineEventOptionsObject#onEnd * @type {Function|undefined} */ (''); // detach doclets above