|  | (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 |