molstar
Version:
A comprehensive macromolecular library.
63 lines • 2.8 kB
JavaScript
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.StateAction = void 0;
var tslib_1 = require("tslib");
var mol_util_1 = require("../mol-util");
var param_definition_1 = require("../mol-util/param-definition");
var StateAction;
(function (StateAction) {
function create(definition) {
var action = {
create: function (params) { return { action: action, params: params }; },
id: mol_util_1.UUID.create22(),
definition: definition,
createDefaultParams: function (a, globalCtx) { return definition.params ? param_definition_1.ParamDefinition.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((0, tslib_1.__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 = {}));
exports.StateAction = StateAction;
//# sourceMappingURL=action.js.map
;