UNPKG

molstar

Version:

A comprehensive macromolecular library.

60 lines 2.63 kB
/** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ import { __assign } from "tslib"; import { UUID } from '../mol-util'; import { ParamDefinition as PD } from '../mol-util/param-definition'; export { StateAction }; var StateAction; (function (StateAction) { function create(definition) { var action = { create: function (params) { return { action: action, params: params }; }, id: UUID.create22(), definition: definition, createDefaultParams: function (a, globalCtx) { return definition.params ? PD.getDefaultValues(definition.params(a, globalCtx)) : {}; } }; return action; } StateAction.create = create; function fromTransformer(transformer) { var def = transformer.definition; return create({ from: def.from, display: def.display, params: def.params, isApplicable: transformer.definition.isApplicable ? function (a, t, ctx) { return transformer.definition.isApplicable(a, ctx); } : void 0, run: function (_a) { var cell = _a.cell, state = _a.state, params = _a.params; var tree = state.build().to(cell.transform.ref).apply(transformer, params); return state.updateTree(tree); } }); } StateAction.fromTransformer = fromTransformer; var Builder; (function (Builder) { function root(info) { return function (def) { return create(__assign({ from: info.from instanceof Array ? info.from : !!info.from ? [info.from] : [], display: typeof info.display === 'string' ? { name: info.display } : !!info.display ? info.display : { name: 'Unnamed State Action' }, params: typeof info.params === 'object' ? function () { return info.params; } : !!info.params ? info.params : void 0, isApplicable: info.isApplicable }, (typeof def === 'function' ? { run: def } : def))); }; } Builder.build = function (info) { return root(info); }; })(Builder = StateAction.Builder || (StateAction.Builder = {})); StateAction.build = Builder.build; })(StateAction || (StateAction = {})); //# sourceMappingURL=action.js.map