UNPKG

drugflow-molstar

Version:
66 lines (65 loc) 3.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AlphafoldTransparencyControls = void 0; var tslib_1 = require("tslib"); var jsx_runtime_1 = require("react/jsx-runtime"); var base_1 = require("Molstar/mol-plugin-ui/base"); var icons_1 = require("Molstar/mol-plugin-ui/controls/icons"); var param_definition_1 = require("Molstar/mol-util/param-definition"); var parameters_1 = require("Molstar/mol-plugin-ui/controls/parameters"); var alphafold_transparency_1 = require("../alphafold-transparency"); var TransparencyParams = { score: param_definition_1.ParamDefinition.Numeric(70, { min: 0, max: 100, step: 1 }, { label: 'pLDDT less than', description: 'pLDDT score value in the range of 0 to 100' }), opacity: param_definition_1.ParamDefinition.Numeric(0.2, { min: 0, max: 1, step: 0.01 }, { description: 'Opacity value in the range 0 to 1' }) }; var AlphafoldTransparencyControls = /** @class */ (function (_super) { tslib_1.__extends(AlphafoldTransparencyControls, _super); function AlphafoldTransparencyControls() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.updateTransparency = function (val) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var superpositionState, afStr; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: this.setState({ transpareny: val }); superpositionState = this.plugin.customState.superpositionState; afStr = this.plugin.managers.structure.hierarchy.current.refs.get(superpositionState.alphafold.ref); return [4 /*yield*/, (0, alphafold_transparency_1.clearStructureTransparency)(this.plugin, afStr.components)]; case 1: _a.sent(); return [4 /*yield*/, (0, alphafold_transparency_1.applyAFTransparency)(this.plugin, afStr, 1 - val.opacity, val.score)]; case 2: _a.sent(); return [2 /*return*/]; } }); }); }; return _this; } AlphafoldTransparencyControls.prototype.defaultState = function () { return { isCollapsed: false, header: 'AlphaFold Structure Opacity', brand: { accent: 'gray', svg: icons_1.SuperpositionSvg }, isHidden: true, transpareny: { score: 70, opacity: 0.2 } }; }; AlphafoldTransparencyControls.prototype.componentDidMount = function () { var _this = this; this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection, function (sel) { var superpositionState = _this.plugin.customState.superpositionState; if (superpositionState && superpositionState.alphafold.ref && superpositionState.alphafold.ref !== '') { _this.setState({ isHidden: false }); } }); }; AlphafoldTransparencyControls.prototype.renderControls = function () { return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(parameters_1.ParameterControls, { params: TransparencyParams, values: this.state.transpareny, onChangeValues: this.updateTransparency }) }); }; return AlphafoldTransparencyControls; }(base_1.CollapsableControls)); exports.AlphafoldTransparencyControls = AlphafoldTransparencyControls;