molstar
Version:
A comprehensive macromolecular library.
50 lines • 2.25 kB
JavaScript
/**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { Structure, StructureSelection as Sel, QueryContext } from '../../mol-model/structure';
import { Script } from '../../mol-script/script';
import { compile } from '../../mol-script/runtime/query/compiler';
export { StructureQueryHelper };
var StructureQueryHelper;
(function (StructureQueryHelper) {
function isUnchanged(entry, query, structure) {
if (entry.currentStructure !== structure)
return false;
if (Script.is(query)) {
return !!entry.script && Script.areEqual(entry.script, query);
}
return entry.expression === query;
}
StructureQueryHelper.isUnchanged = isUnchanged;
function create(structure, query) {
var script = Script.is(query) ? query : void 0;
var expression = Script.is(query) ? Script.toExpression(query) : query;
var compiled = compile(expression);
return { script: script, expression: expression, compiled: compiled, originalStructure: structure, currentStructure: structure };
}
StructureQueryHelper.create = create;
function run(entry, structure) {
return entry.compiled(new QueryContext(structure));
}
StructureQueryHelper.run = run;
function createAndRun(structure, query) {
var entry = create(structure, query);
return { entry: entry, selection: run(entry, structure) };
}
StructureQueryHelper.createAndRun = createAndRun;
function updateStructure(entry, structure) {
entry.currentStructure = structure;
return entry.compiled(new QueryContext(structure));
}
StructureQueryHelper.updateStructure = updateStructure;
function updateStructureObject(obj, selection, label) {
var s = Sel.unionStructure(selection);
obj.label = "" + (label || 'Selection');
obj.description = Structure.elementDescription(s);
obj.data = s;
}
StructureQueryHelper.updateStructureObject = updateStructureObject;
})(StructureQueryHelper || (StructureQueryHelper = {}));
//# sourceMappingURL=structure-query.js.map