in src/canvastools/ts/CanvasTools/Region/RegionsManager.ts [865:976]
private subscribeToEvents() {
this.regionManagerLayer.node.addEventListener("pointerenter", (e: PointerEvent) => {
this.callbacks.onManipulationBegin();
});
this.regionManagerLayer.node.addEventListener("pointerleave", (e: PointerEvent) => {
this.callbacks.onManipulationEnd();
});
window.addEventListener("keyup", (e) => {
if (!(e.target instanceof HTMLInputElement) &&
!(e.target instanceof HTMLTextAreaElement) &&
!(e.target instanceof HTMLSelectElement)) {
if (!this.isFrozen) {
switch (e.keyCode) {
// tab
case 9:
if (this.isFocused) {
if (!e.shiftKey && this.shouldPreventTabDefault()) {
this.selectNextRegion();
} else if (e.shiftKey && this.shouldPreventShiftTabDefault()) {
this.selectPrevRegion();
}
}
break;
// delete, backspace
case 46:
case 8:
this.deleteSelectedRegions();
break;
// ctrl + up
case 38:
if (e.ctrlKey) {
if (!e.shiftKey && !e.altKey) {
this.moveSelectedRegions(0, -5);
} else if (e.shiftKey && !e.altKey) {
this.resizeSelectedRegions(0, -5);
} else if (e.altKey && !e.shiftKey) {
this.resizeSelectedRegions(0, -5, true);
}
}
break;
// ctrl + down
case 40:
if (e.ctrlKey) {
if (!e.shiftKey && !e.altKey) {
this.moveSelectedRegions(0, 5);
} else if (e.shiftKey && !e.altKey) {
this.resizeSelectedRegions(0, 5);
} else if (e.altKey && !e.shiftKey) {
this.resizeSelectedRegions(0, 5, true);
}
}
break;
// ctrl + left
case 37:
if (e.ctrlKey) {
if (!e.shiftKey && !e.altKey) {
this.moveSelectedRegions(-5, 0);
} else if (e.shiftKey && !e.altKey) {
this.resizeSelectedRegions(-5, 0);
} else if (e.altKey && !e.shiftKey) {
this.resizeSelectedRegions(-5, 0, true);
}
}
break;
// ctrl + right
case 39:
if (e.ctrlKey) {
if (!e.shiftKey && !e.altKey) {
this.moveSelectedRegions(5, 0);
} else if (e.shiftKey && !e.altKey) {
this.resizeSelectedRegions(5, 0);
} else if (e.altKey && !e.shiftKey) {
this.resizeSelectedRegions(5, 0, true);
}
}
break;
// default
default: return;
}
e.preventDefault();
}
}
});
window.addEventListener("keydown", (e) => {
if (!(e.target instanceof HTMLInputElement) &&
!(e.target instanceof HTMLTextAreaElement) &&
!(e.target instanceof HTMLSelectElement)) {
if (!this.isFrozen) {
switch (e.key) {
case "a":
case "A":
if (e.ctrlKey) {
this.selectAllRegions();
}
break;
case "Tab":
if (this.isFocused) {
if (!e.shiftKey && this.shouldPreventTabDefault()) {
e.preventDefault();
} else if (e.shiftKey && this.shouldPreventShiftTabDefault()) {
e.preventDefault();
}
}
break;
}
}
}
});
}