molstar
Version:
A comprehensive macromolecular library.
60 lines • 2.63 kB
JavaScript
/**
* 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