drugflow-molstar
Version:
Molstar implementation for DrugFlow
61 lines (60 loc) • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StructureSelectionsContact3D = void 0;
var tslib_1 = require("tslib");
var mol_state_1 = require("molstar/lib/mol-state");
var mol_task_1 = require("molstar/lib/mol-task");
var objects_1 = require("molstar/lib/mol-plugin-state/objects");
var helpers_1 = require("molstar/lib/mol-plugin-state/transforms/helpers");
var contact_1 = require("./contact");
var StructureSelectionsContact3D = objects_1.PluginStateTransform.BuiltIn({
name: 'structure-selections-contact-3d',
display: '3D Contact',
from: objects_1.PluginStateObject.Molecule.Structure.Selections,
to: objects_1.PluginStateObject.Shape.Representation3D,
params: function () { return (tslib_1.__assign({}, contact_1.ContactParams)); }
})({
canAutoUpdate: function (_a) {
var oldParams = _a.oldParams, newParams = _a.newParams;
return true;
},
apply: function (_a, plugin) {
var _this = this;
var a = _a.a, params = _a.params;
return mol_task_1.Task.create('Structure Contact', function (ctx) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var data, repr;
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
data = (0, helpers_1.getDistanceDataFromStructureSelections)(a.data);
repr = (0, contact_1.ContactRepresentation)(tslib_1.__assign({ webgl: (_a = plugin.canvas3d) === null || _a === void 0 ? void 0 : _a.webgl }, plugin.representation.structure.themes), function () { return contact_1.ContactParams; });
return [4 /*yield*/, repr.createOrUpdate(params, data).runInContext(ctx)];
case 1:
_b.sent();
return [2 /*return*/, new objects_1.PluginStateObject.Shape.Representation3D({ repr: repr, sourceData: data }, { label: "Contact" })];
}
});
}); });
},
update: function (_a, plugin) {
var _this = this;
var a = _a.a, b = _a.b, oldParams = _a.oldParams, newParams = _a.newParams;
return mol_task_1.Task.create('Structure Contact', function (ctx) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var props, data;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
props = tslib_1.__assign(tslib_1.__assign({}, b.data.repr.props), newParams);
data = (0, helpers_1.getDistanceDataFromStructureSelections)(a.data);
return [4 /*yield*/, b.data.repr.createOrUpdate(props, data).runInContext(ctx)];
case 1:
_a.sent();
b.data.sourceData = data;
return [2 /*return*/, mol_state_1.StateTransformer.UpdateResult.Updated];
}
});
}); });
},
});
exports.StructureSelectionsContact3D = StructureSelectionsContact3D;