molstar
Version:
A comprehensive macromolecular library.
100 lines • 4.34 kB
JavaScript
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateRepresentationVisibility = exports.SyncStructureRepresentation3DState = exports.SyncRepresentationToCanvas = exports.registerDefault = void 0;
var objects_1 = require("../../../mol-plugin-state/objects");
function registerDefault(ctx) {
SyncRepresentationToCanvas(ctx);
SyncStructureRepresentation3DState(ctx); // should be AFTER SyncRepresentationToCanvas
UpdateRepresentationVisibility(ctx);
}
exports.registerDefault = registerDefault;
function SyncRepresentationToCanvas(ctx) {
var events = ctx.state.data.events;
events.object.created.subscribe(function (e) {
var _a;
if (!objects_1.PluginStateObject.isRepresentation3D(e.obj))
return;
updateVisibility(e.state.cells.get(e.ref), e.obj.data.repr);
e.obj.data.repr.setState({ syncManually: true });
(_a = ctx.canvas3d) === null || _a === void 0 ? void 0 : _a.add(e.obj.data.repr);
});
events.object.updated.subscribe(function (e) {
var _a, _b;
if (e.oldObj && objects_1.PluginStateObject.isRepresentation3D(e.oldObj)) {
(_a = ctx.canvas3d) === null || _a === void 0 ? void 0 : _a.remove(e.oldObj.data.repr);
e.oldObj.data.repr.destroy();
}
if (!objects_1.PluginStateObject.isRepresentation3D(e.obj)) {
return;
}
updateVisibility(e.state.cells.get(e.ref), e.obj.data.repr);
if (e.action === 'recreate') {
e.obj.data.repr.setState({ syncManually: true });
}
(_b = ctx.canvas3d) === null || _b === void 0 ? void 0 : _b.add(e.obj.data.repr);
});
events.object.removed.subscribe(function (e) {
var _a;
if (!objects_1.PluginStateObject.isRepresentation3D(e.obj))
return;
(_a = ctx.canvas3d) === null || _a === void 0 ? void 0 : _a.remove(e.obj.data.repr);
e.obj.data.repr.destroy();
});
}
exports.SyncRepresentationToCanvas = SyncRepresentationToCanvas;
function SyncStructureRepresentation3DState(ctx) {
// TODO: figure out how to do transform composition here?
var events = ctx.state.data.events;
events.object.created.subscribe(function (e) {
var _a;
if (!objects_1.PluginStateObject.Molecule.Structure.Representation3DState.is(e.obj))
return;
var data = e.obj.data;
data.repr.setState(data.state);
(_a = ctx.canvas3d) === null || _a === void 0 ? void 0 : _a.update(data.repr);
});
events.object.updated.subscribe(function (e) {
var _a;
if (!objects_1.PluginStateObject.Molecule.Structure.Representation3DState.is(e.obj))
return;
var data = e.obj.data;
data.repr.setState(data.state);
(_a = ctx.canvas3d) === null || _a === void 0 ? void 0 : _a.update(data.repr);
});
events.object.removed.subscribe(function (e) {
var _a;
if (!objects_1.PluginStateObject.Molecule.Structure.Representation3DState.is(e.obj))
return;
var data = e.obj.data;
data.repr.setState(data.initialState);
(_a = ctx.canvas3d) === null || _a === void 0 ? void 0 : _a.update(data.repr);
});
}
exports.SyncStructureRepresentation3DState = SyncStructureRepresentation3DState;
function UpdateRepresentationVisibility(ctx) {
ctx.state.data.events.cell.stateUpdated.subscribe(function (e) {
var _a;
var cell = e.state.cells.get(e.ref);
if (!objects_1.PluginStateObject.isRepresentation3D(cell.obj))
return;
if (updateVisibility(cell, cell.obj.data.repr)) {
(_a = ctx.canvas3d) === null || _a === void 0 ? void 0 : _a.syncVisibility();
}
});
}
exports.UpdateRepresentationVisibility = UpdateRepresentationVisibility;
function updateVisibility(cell, r) {
if (r.state.visible === cell.state.isHidden) {
r.setState({ visible: !cell.state.isHidden });
return true;
}
else {
return false;
}
}
//# sourceMappingURL=representation.js.map
;