(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ecSimpleOptionPlayer = {})); }(this, (function (exports) { 'use strict'; function assert(condition, message) { if (!condition) { throw new Error(message); } } function hasOwn(own, prop) { return own.hasOwnProperty(prop); } function isObject(value) { var type = typeof value; return type === 'function' || (!!value && type === 'object'); } function isArray(value) { if (Array.isArray) { return Array.isArray(value); } return Object.prototype.toString.call(value) === '[object Array]'; } function isFunction(value) { return typeof value === 'function'; } function getMapValue(map, key) { return (key != null && hasOwn(map, key)) ? map[key] : null; } function create(opt) { return new SimpleOptionPlayer(opt); } var SimpleOptionPlayer = (function () { function SimpleOptionPlayer(opt) { assert(opt.chart && isObject(opt.dataMeta) && isArray(opt.optionList) && opt.seriesIndex != null && opt.optionList.length); this._chart = opt.chart; this._dataMeta = opt.dataMeta; var optionList = this._optionList = opt.optionList; var optionMap = this._optionMap = {}; this._replaceMerge = opt.replaceMerge; this._seriesIndex = opt.seriesIndex; this._currOptionIdx = null; for (var i = 0; i < optionList.length; i++) { var optionWrap = optionList[i]; var optionKey = optionWrap.key; if (optionKey != null) { assert(!hasOwn(optionMap, optionKey), 'option key duplicat: ' + optionKey); optionMap[optionKey] = i; } } } SimpleOptionPlayer.prototype.next = function () { var optionList = this._optionList; var newOptionIdx = this._currOptionIdx == null ? 0 : Math.min(optionList.length - 1, this._currOptionIdx + 1); this._doChangeOption(newOptionIdx); }; SimpleOptionPlayer.prototype.previous = function () { var optionList = this._optionList; var newOptionIdx = this._currOptionIdx == null ? optionList.length - 1 : Math.max(0, this._currOptionIdx - 1); this._doChangeOption(newOptionIdx); }; SimpleOptionPlayer.prototype.go = function (optionKey) { var newOptionIdx = getMapValue(this._optionMap, optionKey); assert(newOptionIdx != null, 'Can not find option by option key: ' + optionKey); this._doChangeOption(newOptionIdx); }; SimpleOptionPlayer.prototype._doChangeOption = function (newOptionIdx) { var optionList = this._optionList; var oldOptionWrap = this._currOptionIdx != null ? optionList[this._currOptionIdx] : null; var newOptionWrap = optionList[newOptionIdx]; var dataMeta = this._dataMeta; var targetSeriesIndex = this._seriesIndex; var transitionOpt = { to: { seriesIndex: targetSeriesIndex } }; if (oldOptionWrap) { var common = findCommonDimension(oldOptionWrap, newOptionWrap) || findCommonDimension(newOptionWrap, oldOptionWrap); if (common != null) { transitionOpt = { from: { seriesIndex: targetSeriesIndex, dimension: common.uniqueDimension }, to: { seriesIndex: targetSeriesIndex, dimension: common.uniqueDimension, }, dividingMethod: common.dividingMethod }; } } this._currOptionIdx = newOptionIdx; this._getChart().setOption(newOptionWrap.option, { replaceMerge: this._replaceMerge, transition: transitionOpt }); function findCommonDimension(optionWrapA, optionWrapB) { var metaA = getMapValue(dataMeta, optionWrapA.dataMetaKey); var metaB = getMapValue(dataMeta, optionWrapB.dataMetaKey); var uniqueDimensionB = metaB.uniqueDimension; if (uniqueDimensionB != null && metaA.dimensions.indexOf(uniqueDimensionB) >= 0) { return { uniqueDimension: uniqueDimensionB, dividingMethod: metaB.dividingMethod }; } } }; SimpleOptionPlayer.prototype._getChart = function () { return isFunction(this._chart) ? this._chart() : this._chart; }; SimpleOptionPlayer.prototype.getOptionKeys = function () { var optionKeys = []; var optionList = this._optionList; for (var i = 0; i < optionList.length; i++) { optionKeys.push(optionList[i].key); } return optionKeys; }; return SimpleOptionPlayer; }()); exports.create = create; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=ecSimpleOptionPlayer.js.map