molstar
Version:
A comprehensive macromolecular library.
116 lines • 4.26 kB
JavaScript
/**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Binding = void 0;
var input_observer_1 = require("./input/input-observer");
var string_1 = require("./string");
function Binding(triggers, action, description) {
if (action === void 0) { action = ''; }
if (description === void 0) { description = ''; }
return Binding.create(triggers, action, description);
}
exports.Binding = Binding;
(function (Binding) {
function create(triggers, action, description) {
if (action === void 0) { action = ''; }
if (description === void 0) { description = ''; }
return { triggers: triggers, action: action, description: description };
}
Binding.create = create;
Binding.Empty = { triggers: [], action: '', description: '' };
function isEmpty(binding) {
return binding.triggers.length === 0 ||
binding.triggers.every(function (t) { return t.buttons === undefined && t.modifiers === undefined; });
}
Binding.isEmpty = isEmpty;
function match(binding, buttons, modifiers) {
return binding.triggers.some(function (t) { return Trigger.match(t, buttons, modifiers); });
}
Binding.match = match;
function formatTriggers(binding) {
return binding.triggers.map(Trigger.format).join(' or ');
}
Binding.formatTriggers = formatTriggers;
function format(binding, name) {
if (name === void 0) { name = ''; }
var help = binding.description || (0, string_1.stringToWords)(name);
return (0, string_1.interpolate)(help, { triggers: '<i>' + formatTriggers(binding) + '</i>' });
}
Binding.format = format;
function Trigger(buttons, modifiers) {
return Trigger.create(buttons, modifiers);
}
Binding.Trigger = Trigger;
(function (Trigger) {
function create(buttons, modifiers) {
return { buttons: buttons, modifiers: modifiers };
}
Trigger.create = create;
Trigger.Empty = {};
function match(trigger, buttons, modifiers) {
var b = trigger.buttons, m = trigger.modifiers;
return b !== undefined &&
(b === buttons || input_observer_1.ButtonsType.has(b, buttons)) &&
(!m || input_observer_1.ModifiersKeys.areEqual(m, modifiers));
}
Trigger.match = match;
function format(trigger) {
var s = [];
var b = formatButtons(trigger.buttons);
if (b)
s.push(b);
var m = formatModifiers(trigger.modifiers);
if (m)
s.push(m);
return s.join(' + ');
}
Trigger.format = format;
})(Trigger = Binding.Trigger || (Binding.Trigger = {}));
})(Binding || (Binding = {}));
exports.Binding = Binding;
var B = input_observer_1.ButtonsType;
function formatButtons(buttons) {
var s = [];
if (buttons === undefined) {
s.push('any mouse button');
}
else if (buttons === 0) {
s.push('mouse hover');
}
else {
if (B.has(buttons, 1 /* Primary */))
s.push('left mouse button');
if (B.has(buttons, 2 /* Secondary */))
s.push('right mouse button');
if (B.has(buttons, 4 /* Auxilary */))
s.push('wheel/middle mouse button');
if (B.has(buttons, 8 /* Forth */))
s.push('three fingers');
}
return s.join(' + ');
}
function formatModifiers(modifiers, verbose) {
var s = [];
if (modifiers) {
if (modifiers.alt)
s.push('alt key');
if (modifiers.control)
s.push('control key');
if (modifiers.meta)
s.push('meta/command key');
if (modifiers.shift)
s.push('shift key');
if (verbose && s.length === 0)
s.push('no key');
}
else {
if (verbose)
s.push('any key');
}
return s.join(' + ');
}
//# sourceMappingURL=binding.js.map
;