/**
 *
 *  (c) 2010-2018 Paweł Fus
 *
 *  License: www.highcharts.com/license
 *
 *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
 *
 * */
'use strict';
var chartNavigation = {
    /**
     * Initializes `chart.navigation` object which delegates `update()` methods
     * to all other common classes (used in exporting and navigationBindings).
     *
     * @private
     * @param {Highcharts.Chart} chart
     *        The chart instance.
     * @return {void}
     */
    initUpdate: function (chart) {
        if (!chart.navigation) {
            chart.navigation = {
                updates: [],
                update: function (options, redraw) {
                    this.updates.forEach(function (updateConfig) {
                        updateConfig.update.call(updateConfig.context, options, redraw);
                    });
                }
            };
        }
    },
    /**
     * Registers an `update()` method in the `chart.navigation` object.
     *
     * @private
     * @param {Highcharts.ChartNavigationUpdateFunction} update
     *        The `update()` method that will be called in `chart.update()`.
     * @param {Highcharts.Chart} chart
     *        The chart instance. `update()` will use that as a context
     *        (`this`).
     * @return {void}
     */
    addUpdate: function (update, chart) {
        if (!chart.navigation) {
            this.initUpdate(chart);
        }
        chart.navigation.updates.push({
            update: update,
            context: chart
        });
    }
};
export default chartNavigation;
