UNPKG

@visactor/vgrammar-core

Version:

VGrammar is a visual grammar library

117 lines (107 loc) 6.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.registerPlayer = exports.Player = exports.generateDiscretePlayerAttributes = exports.generateContinuousPlayerAttributes = void 0; const vutils_1 = require("@visactor/vutils"), vrender_components_1 = require("@visactor/vrender-components"), graph_1 = require("../graph"), component_1 = require("../view/component"), encode_1 = require("../graph/mark/encode"), factory_1 = require("../core/factory"), player_filter_1 = require("../interactions/player-filter"), filter_1 = require("../interactions/filter"), generateContinuousPlayerAttributes = (data, theme, addition) => { var _a; const playerTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.continuousPlayer; return (0, vutils_1.merge)({}, playerTheme, { data: data, dataIndex: 0 }, null != addition ? addition : {}); }; exports.generateContinuousPlayerAttributes = generateContinuousPlayerAttributes; const generateDiscretePlayerAttributes = (data, theme, addition) => { var _a; const playerTheme = null === (_a = null == theme ? void 0 : theme.components) || void 0 === _a ? void 0 : _a.discretePlayer; return (0, vutils_1.merge)({}, playerTheme, { data: data, dataIndex: 0 }, null != addition ? addition : {}); }; exports.generateDiscretePlayerAttributes = generateDiscretePlayerAttributes; class Player extends component_1.Component { constructor(view, group) { super(view, graph_1.ComponentEnum.player, group), this.spec.componentType = graph_1.ComponentEnum.player, this.spec.playerType = "auto"; } parseAddition(spec) { return super.parseAddition(spec), this.playerType(spec.playerType), this.source(spec.source), this; } playerType(playerType) { return this.spec.playerType = playerType, this._playerComponentType = null, this._prepareRejoin(), this.commit(), this; } source(source) { var _a; if (this.spec.source) { const lastSource = null === (_a = this.spec) || void 0 === _a ? void 0 : _a.source, lastSourceDataGrammar = (0, vutils_1.isArray)(lastSource) ? null : (0, vutils_1.isString)(lastSource) ? this.view.getDataById(lastSource) : lastSource; this.detach(lastSourceDataGrammar); } this.spec.source = source; const sourceDataGrammar = (0, vutils_1.isArray)(source) ? null : (0, vutils_1.isString)(source) ? this.view.getDataById(source) : source; return this.attach(sourceDataGrammar), this.commit(), this; } play() { return this.getGroupGraphicItem().play(), this; } pause() { return this.getGroupGraphicItem().pause(), this; } backward() { return this.getGroupGraphicItem().backward(), this; } forward() { return this.getGroupGraphicItem().forward(), this; } addGraphicItem(attrs, groupKey, newGraphicItem) { const initialAttributes = (0, vutils_1.merge)({ slider: { handlerStyle: { size: 16 } } }, attrs), graphicItem = null != newGraphicItem ? newGraphicItem : factory_1.Factory.createGraphicComponent(this._getPlayerComponentType(), initialAttributes, { skipDefault: this.spec.skipTheme }); return super.addGraphicItem(initialAttributes, groupKey, graphicItem); } _updateComponentEncoders() { const encoders = Object.assign({ update: {} }, this.spec.encode), componentEncoders = Object.keys(encoders).reduce(((res, state) => { const encoder = encoders[state]; return encoder && (res[state] = { callback: (datum, element, parameters) => { var _a; const theme = this.spec.skipTheme ? null : this.view.getCurrentTheme(), addition = (0, encode_1.invokeEncoder)(encoder, datum, element, parameters), source = this.spec.source, sourceDataGrammar = (0, vutils_1.isArray)(source) ? null : (0, vutils_1.isString)(source) ? this.view.getDataById(source) : source, sourceData = (0, vutils_1.isArray)(source) ? source : null !== (_a = null == sourceDataGrammar ? void 0 : sourceDataGrammar.getValue()) && void 0 !== _a ? _a : []; switch (this._getPlayerComponentType()) { case "continuousPlayer": return (0, exports.generateContinuousPlayerAttributes)(sourceData, theme, addition); case "discretePlayer": return (0, exports.generateDiscretePlayerAttributes)(sourceData, theme, addition); } } }), res; }), {}); this._encoders = componentEncoders; } _getPlayerComponentType() { return this._playerComponentType || (this.spec.playerType && "auto" !== this.spec.playerType ? this._playerComponentType = "discrete" === this.spec.playerType ? "discretePlayer" : "continuous" === this.spec.playerType ? "continuousPlayer" : "discretePlayer" : this._playerComponentType = "discretePlayer"), this._playerComponentType; } } exports.Player = Player, Player.componentType = graph_1.ComponentEnum.player; const registerPlayer = () => { factory_1.Factory.registerGraphicComponent(graph_1.PlayerEnum.continuousPlayer, (attrs => new vrender_components_1.ContinuousPlayer(attrs))), factory_1.Factory.registerGraphicComponent(graph_1.PlayerEnum.discretePlayer, (attrs => new vrender_components_1.DiscretePlayer(attrs))), factory_1.Factory.registerComponent(graph_1.ComponentEnum.player, Player), (0, vutils_1.mixin)(filter_1.Filter, filter_1.FilterMixin), factory_1.Factory.registerInteraction(player_filter_1.PlayerFilter.type, player_filter_1.PlayerFilter); }; exports.registerPlayer = registerPlayer; //# sourceMappingURL=player.js.map