pdbe-molstar-3dbionotes
Version:
Molstar implementation for PDBe
56 lines • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CustomEvents = void 0;
var loci_details_1 = require("./loci-details");
var CustomEvents;
(function (CustomEvents) {
function create(eventTypeArr) {
var eventObj = {};
for (var ei = 0, el = eventTypeArr.length; ei < el; ei++) {
var eventType = eventTypeArr[ei];
var event_1 = void 0;
if (typeof MouseEvent == 'function') {
// current standard
event_1 = new MouseEvent(eventType, { 'view': window, 'bubbles': true, 'cancelable': true });
}
else if (typeof document.createEvent == 'function') {
// older standard
event_1 = document.createEvent('MouseEvents');
event_1.initEvent(eventType, true /* bubbles */, true /* cancelable */);
}
eventObj[eventType] = event_1;
}
;
return eventObj;
}
function dispatchCustomEvent(event, eventData, targetElement) {
if (typeof eventData !== 'undefined') {
eventData['residueNumber'] = eventData.seq_id;
event['eventData'] = eventData;
event.eventData.residueNumber = eventData.seq_id;
targetElement.dispatchEvent(event);
}
}
function add(plugin, targetElement) {
var pdbevents = create(['PDB.molstar.click', 'PDB.molstar.mouseover', 'PDB.molstar.mouseout']);
plugin.behaviors.interaction.click.subscribe(function (e) {
if (e.button === 1 && e.current && e.current.loci.kind !== 'empty-loci') {
var evData = loci_details_1.lociDetails(e.current.loci);
if (evData)
dispatchCustomEvent(pdbevents['PDB.molstar.click'], evData, targetElement);
}
});
plugin.behaviors.interaction.hover.subscribe(function (e) {
if (e.current && e.current.loci && e.current.loci.kind !== 'empty-loci') {
var evData = loci_details_1.lociDetails(e.current.loci);
if (evData)
dispatchCustomEvent(pdbevents['PDB.molstar.mouseover'], evData, targetElement);
}
if (e.current && e.current.loci && e.current.loci.kind === 'empty-loci') {
dispatchCustomEvent(pdbevents['PDB.molstar.mouseout'], {}, targetElement);
}
});
}
CustomEvents.add = add;
})(CustomEvents = exports.CustomEvents || (exports.CustomEvents = {}));
//# sourceMappingURL=custom-events.js.map