react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
60 lines (51 loc) • 7.08 kB
JavaScript
import { MODE_IDLE, MODE_3D_FIRST_PERSON, MODE_3D_VIEW, MODE_SNAPPING } from '../constants';
import { rollback, undo, remove, toggleSnap } from '../actions/project-actions';
import { SNAP_POINT, SNAP_LINE, SNAP_SEGMENT, SNAP_MASK } from '../utils/snap';
var KEY_DELETE = 46;
var KEY_BACKSPACE = 8;
var KEY_ESC = 27;
var KEY_Z = 90;
var KEY_ALT = 18;
export default 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 KEY_BACKSPACE:
case KEY_DELETE:
{
if ([MODE_IDLE, MODE_3D_FIRST_PERSON, MODE_3D_VIEW].includes(mode)) store.dispatch(remove());
break;
}
case KEY_ESC:
{
store.dispatch(rollback());
break;
}
case KEY_Z:
{
if (event.getModifierState('Control') || event.getModifierState('Meta')) store.dispatch(undo());
break;
}
case KEY_ALT:
{
if (MODE_SNAPPING.includes(mode)) store.dispatch(toggleSnap(state.snapMask.merge({ SNAP_POINT: false, SNAP_LINE: false, SNAP_SEGMENT: false, tempSnapConfiguartion: state.snapMask.toJS() })));
break;
}
}
});
window.addEventListener('keyup', function (event) {
var state = stateExtractor(store.getState());
var mode = state.get('mode');
switch (event.keyCode) {
case KEY_ALT:
{
if (MODE_SNAPPING.includes(mode)) store.dispatch(toggleSnap(state.snapMask.merge(state.snapMask.get('tempSnapConfiguartion'))));
break;
}
}
});
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW5zL2tleWJvYXJkLmpzIl0sIm5hbWVzIjpbIk1PREVfSURMRSIsIk1PREVfM0RfRklSU1RfUEVSU09OIiwiTU9ERV8zRF9WSUVXIiwiTU9ERV9TTkFQUElORyIsInJvbGxiYWNrIiwidW5kbyIsInJlbW92ZSIsInRvZ2dsZVNuYXAiLCJTTkFQX1BPSU5UIiwiU05BUF9MSU5FIiwiU05BUF9TRUdNRU5UIiwiU05BUF9NQVNLIiwiS0VZX0RFTEVURSIsIktFWV9CQUNLU1BBQ0UiLCJLRVlfRVNDIiwiS0VZX1oiLCJLRVlfQUxUIiwia2V5Ym9hcmQiLCJzdG9yZSIsInN0YXRlRXh0cmFjdG9yIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInN0YXRlIiwiZ2V0U3RhdGUiLCJtb2RlIiwiZ2V0IiwiZXZlbnQiLCJrZXlDb2RlIiwiaW5jbHVkZXMiLCJkaXNwYXRjaCIsImdldE1vZGlmaWVyU3RhdGUiLCJzbmFwTWFzayIsIm1lcmdlIiwidGVtcFNuYXBDb25maWd1YXJ0aW9uIiwidG9KUyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBVCxFQUFvQkMsb0JBQXBCLEVBQTBDQyxZQUExQyxFQUF3REMsYUFBeEQsUUFBNkUsY0FBN0U7QUFDQSxTQUFTQyxRQUFULEVBQW1CQyxJQUFuQixFQUF5QkMsTUFBekIsRUFBaUNDLFVBQWpDLFFBQW1ELDRCQUFuRDtBQUNBLFNBQVNDLFVBQVQsRUFBcUJDLFNBQXJCLEVBQWdDQyxZQUFoQyxFQUE4Q0MsU0FBOUMsUUFBK0QsZUFBL0Q7O0FBRUEsSUFBTUMsYUFBYSxFQUFuQjtBQUNBLElBQU1DLGdCQUFnQixDQUF0QjtBQUNBLElBQU1DLFVBQVUsRUFBaEI7QUFDQSxJQUFNQyxRQUFRLEVBQWQ7QUFDQSxJQUFNQyxVQUFVLEVBQWhCOztBQUVBLGVBQWUsU0FBU0MsUUFBVCxHQUFvQjs7QUFFakMsU0FBTyxVQUFDQyxLQUFELEVBQVFDLGNBQVIsRUFBMkI7O0FBRWhDQyxXQUFPQyxnQkFBUCxDQUF3QixTQUF4QixFQUFtQyxpQkFBUzs7QUFFMUMsVUFBSUMsUUFBUUgsZUFBZUQsTUFBTUssUUFBTixFQUFmLENBQVo7QUFDQSxVQUFJQyxPQUFPRixNQUFNRyxHQUFOLENBQVUsTUFBVixDQUFYOztBQUVBLGNBQVFDLE1BQU1DLE9BQWQ7QUFDRSxhQUFLZCxhQUFMO0FBQ0EsYUFBS0QsVUFBTDtBQUNBO0FBQ0UsZ0JBQUksQ0FBQ1osU0FBRCxFQUFZQyxvQkFBWixFQUFrQ0MsWUFBbEMsRUFBZ0QwQixRQUFoRCxDQUF5REosSUFBekQsQ0FBSixFQUNFTixNQUFNVyxRQUFOLENBQWV2QixRQUFmO0FBQ0Y7QUFDRDtBQUNELGFBQUtRLE9BQUw7QUFDQTtBQUNFSSxrQkFBTVcsUUFBTixDQUFlekIsVUFBZjtBQUNBO0FBQ0Q7QUFDRCxhQUFLVyxLQUFMO0FBQ0E7QUFDRSxnQkFBSVcsTUFBTUksZ0JBQU4sQ0FBdUIsU0FBdkIsS0FBcUNKLE1BQU1JLGdCQUFOLENBQXVCLE1BQXZCLENBQXpDLEVBQ0VaLE1BQU1XLFFBQU4sQ0FBZXhCLE1BQWY7QUFDRjtBQUNEO0FBQ0QsYUFBS1csT0FBTDtBQUNBO0FBQ0UsZ0JBQUliLGNBQWN5QixRQUFkLENBQXVCSixJQUF2QixDQUFKLEVBQ0VOLE1BQU1XLFFBQU4sQ0FBZXRCLFdBQVdlLE1BQU1TLFFBQU4sQ0FBZUMsS0FBZixDQUFxQixFQUFFeEIsWUFBWSxLQUFkLEVBQXFCQyxXQUFXLEtBQWhDLEVBQXVDQyxjQUFjLEtBQXJELEVBQTREdUIsdUJBQXVCWCxNQUFNUyxRQUFOLENBQWVHLElBQWYsRUFBbkYsRUFBckIsQ0FBWCxDQUFmO0FBQ0Y7QUFDRDtBQXhCSDtBQTJCRCxLQWhDRDs7QUFrQ0FkLFdBQU9DLGdCQUFQLENBQXdCLE9BQXhCLEVBQWlDLGlCQUFTOztBQUV4QyxVQUFJQyxRQUFRSCxlQUFlRCxNQUFNSyxRQUFOLEVBQWYsQ0FBWjtBQUNBLFVBQUlDLE9BQU9GLE1BQU1HLEdBQU4sQ0FBVSxNQUFWLENBQVg7O0FBRUEsY0FBUUMsTUFBTUMsT0FBZDtBQUNFLGFBQUtYLE9BQUw7QUFDRTtBQUNFLGdCQUFJYixjQUFjeUIsUUFBZCxDQUF1QkosSUFBdkIsQ0FBSixFQUNFTixNQUFNVyxRQUFOLENBQWV0QixXQUFXZSxNQUFNUyxRQUFOLENBQWVDLEtBQWYsQ0FBcUJWLE1BQU1TLFFBQU4sQ0FBZU4sR0FBZixDQUFtQix1QkFBbkIsQ0FBckIsQ0FBWCxDQUFmO0FBQ0Y7QUFDRDtBQU5MO0FBU0QsS0FkRDtBQWdCRCxHQXBERDtBQXFERCIsImZpbGUiOiJrZXlib2FyZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1PREVfSURMRSwgTU9ERV8zRF9GSVJTVF9QRVJTT04sIE1PREVfM0RfVklFVywgTU9ERV9TTkFQUElORyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyByb2xsYmFjaywgdW5kbywgcmVtb3ZlLCB0b2dnbGVTbmFwIH0gZnJvbSAnLi4vYWN0aW9ucy9wcm9qZWN0LWFjdGlvbnMnO1xuaW1wb3J0IHsgU05BUF9QT0lOVCwgU05BUF9MSU5FLCBTTkFQX1NFR01FTlQsIFNOQVBfTUFTSyB9IGZyb20gJy4uL3V0aWxzL3NuYXAnO1xuXG5jb25zdCBLRVlfREVMRVRFID0gNDY7XG5jb25zdCBLRVlfQkFDS1NQQUNFID0gODtcbmNvbnN0IEtFWV9FU0MgPSAyNztcbmNvbnN0IEtFWV9aID0gOTA7XG5jb25zdCBLRVlfQUxUID0gMTg7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGtleWJvYXJkKCkge1xuXG4gIHJldHVybiAoc3RvcmUsIHN0YXRlRXh0cmFjdG9yKSA9PiB7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+IHtcblxuICAgICAgbGV0IHN0YXRlID0gc3RhdGVFeHRyYWN0b3Ioc3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgICBsZXQgbW9kZSA9IHN0YXRlLmdldCgnbW9kZScpO1xuXG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSBLRVlfQkFDS1NQQUNFOlxuICAgICAgICBjYXNlIEtFWV9ERUxFVEU6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoW01PREVfSURMRSwgTU9ERV8zRF9GSVJTVF9QRVJTT04sIE1PREVfM0RfVklFV10uaW5jbHVkZXMobW9kZSkpXG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChyZW1vdmUoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBLRVlfRVNDOlxuICAgICAgICB7XG4gICAgICAgICAgc3RvcmUuZGlzcGF0Y2gocm9sbGJhY2soKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBLRVlfWjpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChldmVudC5nZXRNb2RpZmllclN0YXRlKCdDb250cm9sJykgfHwgZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgnTWV0YScpKVxuICAgICAgICAgICAgc3RvcmUuZGlzcGF0Y2godW5kbygpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEtFWV9BTFQ6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiggTU9ERV9TTkFQUElORy5pbmNsdWRlcyhtb2RlKSApXG4gICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCh0b2dnbGVTbmFwKHN0YXRlLnNuYXBNYXNrLm1lcmdlKHsgU05BUF9QT0lOVDogZmFsc2UsIFNOQVBfTElORTogZmFsc2UsIFNOQVBfU0VHTUVOVDogZmFsc2UsIHRlbXBTbmFwQ29uZmlndWFydGlvbjogc3RhdGUuc25hcE1hc2sudG9KUygpIH0pKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZXZlbnQgPT4ge1xuXG4gICAgICBsZXQgc3RhdGUgPSBzdGF0ZUV4dHJhY3RvcihzdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgIGxldCBtb2RlID0gc3RhdGUuZ2V0KCdtb2RlJyk7XG5cbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICBjYXNlIEtFWV9BTFQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgaWYoIE1PREVfU05BUFBJTkcuaW5jbHVkZXMobW9kZSkgKVxuICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaCh0b2dnbGVTbmFwKHN0YXRlLnNuYXBNYXNrLm1lcmdlKHN0YXRlLnNuYXBNYXNrLmdldCgndGVtcFNuYXBDb25maWd1YXJ0aW9uJykpKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9KTtcblxuICB9XG59XG4iXX0=