private subscribeToEvents()

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;
                    }
                }
            }
        });
    }