import { c3_chart_fn } from './core'; import { isDefined } from './util'; c3_chart_fn.zoom = function (domain) { var $$ = this.internal; if (domain) { if ($$.isTimeSeries()) { domain = domain.map(function (x) { return $$.parseDate(x); }); } if ($$.config.subchart_show) { $$.brush.selectionAsValue(domain, true); } else { $$.updateXDomain(null, true, false, false, domain); $$.redraw({withY: $$.config.zoom_rescale, withSubchart: false}); } $$.config.zoom_onzoom.call(this, $$.x.orgDomain()); return domain; } else { return $$.x.domain(); } }; c3_chart_fn.zoom.enable = function (enabled) { var $$ = this.internal; $$.config.zoom_enabled = enabled; $$.updateAndRedraw(); }; c3_chart_fn.unzoom = function () { var $$ = this.internal; if ($$.config.subchart_show) { $$.brush.clear(); } else { $$.updateXDomain(null, true, false, false, $$.subX.domain()); $$.redraw({withY: $$.config.zoom_rescale, withSubchart: false}); } }; c3_chart_fn.zoom.max = function (max) { var $$ = this.internal, config = $$.config, d3 = $$.d3; if (max === 0 || max) { config.zoom_x_max = d3.max([$$.orgXDomain[1], max]); } else { return config.zoom_x_max; } }; c3_chart_fn.zoom.min = function (min) { var $$ = this.internal, config = $$.config, d3 = $$.d3; if (min === 0 || min) { config.zoom_x_min = d3.min([$$.orgXDomain[0], min]); } else { return config.zoom_x_min; } }; c3_chart_fn.zoom.range = function (range) { if (arguments.length) { if (isDefined(range.max)) { this.domain.max(range.max); } if (isDefined(range.min)) { this.domain.min(range.min); } } else { return { max: this.domain.max(), min: this.domain.min() }; } };