UNPKG

drugflow-molstar

Version:
61 lines (60 loc) 3.15 kB
"use strict"; 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;