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