kitchen-simulator
Version:
It is a kitchen simulator (self-contained micro-frontend).
108 lines (107 loc) • 5.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = keyboard;
var _constants = require("../constants");
var _projectActions = require("../actions/project-actions");
function keyboard() {
return function (store, stateExtractor) {
window.addEventListener('keydown', function (event) {
var state = stateExtractor(store.getState());
var mode = state.get('mode');
switch (event.keyCode) {
case _constants.KEYBOARD_BUTTON_CODE.BACKSPACE:
case _constants.KEYBOARD_BUTTON_CODE.DELETE:
{
if ([_constants.MODE_IDLE, _constants.MODE_3D_FIRST_PERSON, _constants.MODE_3D_VIEW, _constants.MODE_IDLE_3D, _constants.MODE_ROTATING_ITEM_3D, _constants.MODE_DRAGGING_ITEM_3D].includes(mode)) store.dispatch((0, _projectActions.remove)());
break;
}
case _constants.KEYBOARD_BUTTON_CODE.ESC:
{
store.dispatch((0, _projectActions.rollback)());
break;
}
case _constants.KEYBOARD_BUTTON_CODE.Z:
{
if (event.getModifierState('Control') || event.getModifierState('Meta')) store.dispatch((0, _projectActions.undo)());
break;
}
case _constants.KEYBOARD_BUTTON_CODE.Q:
{
if (event.getModifierState('Control') || event.getModifierState('Meta')) store.dispatch((0, _projectActions.redo)());
break;
}
case _constants.KEYBOARD_BUTTON_CODE.ALT:
{
if (_constants.MODE_SNAPPING.includes(mode)) store.dispatch((0, _projectActions.toggleSnap)(state.snapMask.merge({
SNAP_POINT: false,
SNAP_LINE: false,
SNAP_SEGMENT: false,
SNAP_GRID: false,
SNAP_GUIDE: false,
tempSnapConfiguartion: state.snapMask.toJS()
})));
break;
}
case _constants.KEYBOARD_BUTTON_CODE.C:
{
var selectedLayer = state.getIn(['scene', 'selectedLayer']);
var selected = state.getIn(['scene', 'layers', selectedLayer, 'selected']);
if ((mode === _constants.MODE_IDLE || mode === _constants.MODE_3D_VIEW) && (selected.holes.size || selected.areas.size || selected.items.size || selected.lines.size)) {
if (selected.holes.size) {
var hole = state.getIn(['scene', 'layers', selectedLayer, 'holes', selected.holes.get(0)]);
store.dispatch((0, _projectActions.copyProperties)(hole.get('properties')));
} else if (selected.areas.size) {
var area = state.getIn(['scene', 'layers', selectedLayer, 'areas', selected.areas.get(0)]);
store.dispatch((0, _projectActions.copyProperties)(area.properties));
} else if (selected.items.size) {
var item = state.getIn(['scene', 'layers', selectedLayer, 'items', selected.items.get(0)]);
store.dispatch((0, _projectActions.copyProperties)(item.properties));
} else if (selected.lines.size) {
var line = state.getIn(['scene', 'layers', selectedLayer, 'lines', selected.lines.get(0)]);
store.dispatch((0, _projectActions.copyProperties)(line.properties));
}
}
break;
}
case _constants.KEYBOARD_BUTTON_CODE.V:
{
store.dispatch((0, _projectActions.pasteProperties)());
break;
}
case _constants.KEYBOARD_BUTTON_CODE.SHIFT:
{
if (['TEXTAREA', 'INPUT'].includes(document.activeElement.tagName) === false) {
if ([_constants.MODE_DRAWING_ITEM_3D, _constants.MODE_IDLE_3D].includes(mode)) store.dispatch((0, _projectActions.recreate)());else if ([_constants.MODE_DRAWING_ITEM, _constants.MODE_IDLE].includes(mode)) store.dispatch((0, _projectActions.shift2doff)());
}
break;
}
}
});
window.addEventListener('keyup', function (event) {
var state = stateExtractor(store.getState());
var mode = state.get('mode');
switch (event.keyCode) {
case _constants.KEYBOARD_BUTTON_CODE.ALT:
{
if (_constants.MODE_SNAPPING.includes(mode)) store.dispatch((0, _projectActions.toggleSnap)(state.snapMask.merge(state.snapMask.get('tempSnapConfiguartion'))));
break;
}
case _constants.KEYBOARD_BUTTON_CODE.CTRL:
{
// store.dispatch(setAlterateState());
break;
}
case _constants.KEYBOARD_BUTTON_CODE.SHIFT:
{
if (['TEXTAREA', 'INPUT'].includes(document.activeElement.tagName) === false) {
if ([_constants.MODE_DRAWING_ITEM_3D, _constants.MODE_IDLE_3D].includes(mode)) store.dispatch((0, _projectActions.uncreate)());else if ([_constants.MODE_DRAWING_ITEM, _constants.MODE_IDLE].includes(mode)) store.dispatch((0, _projectActions.shift2don)());
}
break;
}
}
});
};
}
module.exports = exports.default;