js-draw 1.20.3 → 1.21.2
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +1 -1
- package/dist/Editor.css +136 -26
- package/dist/bundle.js +2 -2
- package/dist/bundledStyles.js +1 -1
- package/dist/cjs/Editor.d.ts +27 -6
- package/dist/cjs/Editor.js +30 -8
- package/dist/cjs/SVGLoader/SVGLoader.js +2 -2
- package/dist/cjs/Viewport.d.ts +2 -2
- package/dist/cjs/commands/Command.d.ts +5 -0
- package/dist/cjs/commands/Command.js +5 -0
- package/dist/cjs/commands/SerializableCommand.d.ts +7 -0
- package/dist/cjs/commands/SerializableCommand.js +9 -0
- package/dist/cjs/dialogs/makeAboutDialog.d.ts +1 -1
- package/dist/cjs/dialogs/makeAboutDialog.js +10 -25
- package/dist/cjs/dialogs/makeMessageDialog.d.ts +11 -0
- package/dist/cjs/dialogs/makeMessageDialog.js +56 -0
- package/dist/cjs/image/EditorImage.d.ts +15 -1
- package/dist/cjs/image/EditorImage.js +15 -5
- package/dist/cjs/inputEvents.d.ts +10 -2
- package/dist/cjs/inputEvents.js +1 -0
- package/dist/cjs/localizations/es.js +3 -0
- package/dist/cjs/rendering/Display.d.ts +1 -0
- package/dist/cjs/rendering/Display.js +1 -0
- package/dist/cjs/rendering/TextRenderingStyle.d.ts +7 -6
- package/dist/cjs/rendering/TextRenderingStyle.js +1 -0
- package/dist/cjs/rendering/renderers/CanvasRenderer.d.ts +12 -3
- package/dist/cjs/rendering/renderers/CanvasRenderer.js +15 -2
- package/dist/cjs/rendering/renderers/DummyRenderer.d.ts +1 -1
- package/dist/cjs/testing/firstElementAncestorOfNode.d.ts +1 -1
- package/dist/cjs/testing/firstElementAncestorOfNode.js +1 -1
- package/dist/cjs/testing/sendPenEvent.d.ts +2 -2
- package/dist/cjs/testing/sendTouchEvent.d.ts +2 -2
- package/dist/cjs/toolbar/AbstractToolbar.d.ts +6 -1
- package/dist/cjs/toolbar/AbstractToolbar.js +6 -1
- package/dist/cjs/toolbar/IconProvider.d.ts +1 -1
- package/dist/cjs/toolbar/IconProvider.js +6 -1
- package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +8 -0
- package/dist/cjs/toolbar/widgets/BaseWidget.js +8 -0
- package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
- package/dist/cjs/toolbar/widgets/HandToolWidget.js +1 -0
- package/dist/cjs/toolbar/widgets/InsertImageWidget/ImageWrapper.d.ts +1 -1
- package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
- package/dist/cjs/toolbar/widgets/PenToolWidget.js +5 -0
- package/dist/cjs/types.d.ts +5 -0
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/util/ClipboardHandler.d.ts +9 -1
- package/dist/cjs/util/ClipboardHandler.js +82 -24
- package/dist/cjs/version.js +1 -1
- package/dist/mjs/Editor.d.ts +27 -6
- package/dist/mjs/Editor.mjs +31 -9
- package/dist/mjs/SVGLoader/SVGLoader.mjs +2 -2
- package/dist/mjs/Viewport.d.ts +2 -2
- package/dist/mjs/commands/Command.d.ts +5 -0
- package/dist/mjs/commands/Command.mjs +5 -0
- package/dist/mjs/commands/SerializableCommand.d.ts +7 -0
- package/dist/mjs/commands/SerializableCommand.mjs +9 -0
- package/dist/mjs/dialogs/makeAboutDialog.d.ts +1 -1
- package/dist/mjs/dialogs/makeAboutDialog.mjs +7 -25
- package/dist/mjs/dialogs/makeMessageDialog.d.ts +11 -0
- package/dist/mjs/dialogs/makeMessageDialog.mjs +51 -0
- package/dist/mjs/image/EditorImage.d.ts +15 -1
- package/dist/mjs/image/EditorImage.mjs +15 -5
- package/dist/mjs/inputEvents.d.ts +10 -2
- package/dist/mjs/inputEvents.mjs +1 -0
- package/dist/mjs/localizations/es.mjs +3 -0
- package/dist/mjs/rendering/Display.d.ts +1 -0
- package/dist/mjs/rendering/Display.mjs +1 -0
- package/dist/mjs/rendering/TextRenderingStyle.d.ts +7 -6
- package/dist/mjs/rendering/TextRenderingStyle.mjs +1 -0
- package/dist/mjs/rendering/renderers/CanvasRenderer.d.ts +12 -3
- package/dist/mjs/rendering/renderers/CanvasRenderer.mjs +15 -2
- package/dist/mjs/rendering/renderers/DummyRenderer.d.ts +1 -1
- package/dist/mjs/testing/firstElementAncestorOfNode.d.ts +1 -1
- package/dist/mjs/testing/firstElementAncestorOfNode.mjs +1 -1
- package/dist/mjs/testing/sendPenEvent.d.ts +2 -2
- package/dist/mjs/testing/sendTouchEvent.d.ts +2 -2
- package/dist/mjs/toolbar/AbstractToolbar.d.ts +6 -1
- package/dist/mjs/toolbar/AbstractToolbar.mjs +6 -1
- package/dist/mjs/toolbar/IconProvider.d.ts +1 -1
- package/dist/mjs/toolbar/IconProvider.mjs +6 -1
- package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +8 -0
- package/dist/mjs/toolbar/widgets/BaseWidget.mjs +8 -0
- package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
- package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +1 -0
- package/dist/mjs/toolbar/widgets/InsertImageWidget/ImageWrapper.d.ts +1 -1
- package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
- package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +5 -0
- package/dist/mjs/types.d.ts +5 -0
- package/dist/mjs/types.mjs +1 -0
- package/dist/mjs/util/ClipboardHandler.d.ts +9 -1
- package/dist/mjs/util/ClipboardHandler.mjs +82 -24
- package/dist/mjs/version.mjs +1 -1
- package/package.json +8 -9
- package/src/dialogs/dialogs.scss +9 -21
- package/src/dialogs/makeAboutDialog.scss +13 -33
- package/src/dialogs/makeMessageDialog.scss +46 -0
- package/dist/cjs/tools/BaseTool.d.ts +0 -60
- package/dist/cjs/tools/BaseTool.js +0 -174
- package/dist/cjs/tools/Eraser.d.ts +0 -56
- package/dist/cjs/tools/Eraser.js +0 -295
- package/dist/cjs/tools/Eraser.test.d.ts +0 -1
- package/dist/cjs/tools/FindTool.d.ts +0 -21
- package/dist/cjs/tools/FindTool.js +0 -137
- package/dist/cjs/tools/FindTool.test.d.ts +0 -1
- package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
- package/dist/cjs/tools/InputFilter/FunctionMapper.js +0 -21
- package/dist/cjs/tools/InputFilter/InputMapper.d.ts +0 -23
- package/dist/cjs/tools/InputFilter/InputMapper.js +0 -38
- package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +0 -15
- package/dist/cjs/tools/InputFilter/InputPipeline.js +0 -54
- package/dist/cjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
- package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
- package/dist/cjs/tools/InputFilter/InputStabilizer.js +0 -181
- package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
- package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +0 -84
- package/dist/cjs/tools/PanZoom.d.ts +0 -119
- package/dist/cjs/tools/PanZoom.js +0 -508
- package/dist/cjs/tools/PanZoom.test.d.ts +0 -1
- package/dist/cjs/tools/PasteHandler.d.ts +0 -23
- package/dist/cjs/tools/PasteHandler.js +0 -109
- package/dist/cjs/tools/Pen.d.ts +0 -53
- package/dist/cjs/tools/Pen.js +0 -318
- package/dist/cjs/tools/Pen.test.d.ts +0 -1
- package/dist/cjs/tools/PipetteTool.d.ts +0 -28
- package/dist/cjs/tools/PipetteTool.js +0 -69
- package/dist/cjs/tools/ScrollbarTool.d.ts +0 -18
- package/dist/cjs/tools/ScrollbarTool.js +0 -85
- package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
- package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +0 -32
- package/dist/cjs/tools/SelectionTool/Selection.d.ts +0 -71
- package/dist/cjs/tools/SelectionTool/Selection.js +0 -620
- package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
- package/dist/cjs/tools/SelectionTool/SelectionHandle.js +0 -141
- package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
- package/dist/cjs/tools/SelectionTool/SelectionTool.js +0 -494
- package/dist/cjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
- package/dist/cjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
- package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
- package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.js +0 -83
- package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +0 -42
- package/dist/cjs/tools/SelectionTool/TransformMode.js +0 -155
- package/dist/cjs/tools/SelectionTool/types.d.ts +0 -28
- package/dist/cjs/tools/SelectionTool/types.js +0 -14
- package/dist/cjs/tools/SoundUITool.d.ts +0 -26
- package/dist/cjs/tools/SoundUITool.js +0 -171
- package/dist/cjs/tools/TextTool.d.ts +0 -36
- package/dist/cjs/tools/TextTool.js +0 -285
- package/dist/cjs/tools/TextTool.test.d.ts +0 -1
- package/dist/cjs/tools/ToolController.d.ts +0 -73
- package/dist/cjs/tools/ToolController.js +0 -304
- package/dist/cjs/tools/ToolController.test.d.ts +0 -1
- package/dist/cjs/tools/ToolEnabledGroup.d.ts +0 -6
- package/dist/cjs/tools/ToolEnabledGroup.js +0 -13
- package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +0 -16
- package/dist/cjs/tools/ToolSwitcherShortcut.js +0 -40
- package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +0 -12
- package/dist/cjs/tools/ToolbarShortcutHandler.js +0 -34
- package/dist/cjs/tools/UndoRedoShortcut.d.ts +0 -8
- package/dist/cjs/tools/UndoRedoShortcut.js +0 -27
- package/dist/cjs/tools/UndoRedoShortcut.test.d.ts +0 -1
- package/dist/cjs/tools/keybindings.d.ts +0 -18
- package/dist/cjs/tools/keybindings.js +0 -49
- package/dist/cjs/tools/lib.d.ts +0 -14
- package/dist/cjs/tools/lib.js +0 -36
- package/dist/cjs/tools/localization.d.ts +0 -34
- package/dist/cjs/tools/localization.js +0 -36
- package/dist/cjs/tools/util/StationaryPenDetector.d.ts +0 -22
- package/dist/cjs/tools/util/StationaryPenDetector.js +0 -95
- package/dist/mjs/tools/BaseTool.d.ts +0 -60
- package/dist/mjs/tools/BaseTool.mjs +0 -172
- package/dist/mjs/tools/Eraser.d.ts +0 -56
- package/dist/mjs/tools/Eraser.mjs +0 -288
- package/dist/mjs/tools/Eraser.test.d.ts +0 -1
- package/dist/mjs/tools/FindTool.d.ts +0 -21
- package/dist/mjs/tools/FindTool.mjs +0 -131
- package/dist/mjs/tools/FindTool.test.d.ts +0 -1
- package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
- package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +0 -15
- package/dist/mjs/tools/InputFilter/InputMapper.d.ts +0 -23
- package/dist/mjs/tools/InputFilter/InputMapper.mjs +0 -36
- package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +0 -15
- package/dist/mjs/tools/InputFilter/InputPipeline.mjs +0 -49
- package/dist/mjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
- package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
- package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +0 -175
- package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
- package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +0 -78
- package/dist/mjs/tools/PanZoom.d.ts +0 -119
- package/dist/mjs/tools/PanZoom.mjs +0 -501
- package/dist/mjs/tools/PanZoom.test.d.ts +0 -1
- package/dist/mjs/tools/PasteHandler.d.ts +0 -23
- package/dist/mjs/tools/PasteHandler.mjs +0 -103
- package/dist/mjs/tools/Pen.d.ts +0 -53
- package/dist/mjs/tools/Pen.mjs +0 -312
- package/dist/mjs/tools/Pen.test.d.ts +0 -1
- package/dist/mjs/tools/PipetteTool.d.ts +0 -28
- package/dist/mjs/tools/PipetteTool.mjs +0 -63
- package/dist/mjs/tools/ScrollbarTool.d.ts +0 -18
- package/dist/mjs/tools/ScrollbarTool.mjs +0 -79
- package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
- package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +0 -26
- package/dist/mjs/tools/SelectionTool/Selection.d.ts +0 -71
- package/dist/mjs/tools/SelectionTool/Selection.mjs +0 -592
- package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
- package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +0 -137
- package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
- package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +0 -488
- package/dist/mjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
- package/dist/mjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
- package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
- package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.mjs +0 -77
- package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +0 -42
- package/dist/mjs/tools/SelectionTool/TransformMode.mjs +0 -146
- package/dist/mjs/tools/SelectionTool/types.d.ts +0 -28
- package/dist/mjs/tools/SelectionTool/types.mjs +0 -11
- package/dist/mjs/tools/SoundUITool.d.ts +0 -26
- package/dist/mjs/tools/SoundUITool.mjs +0 -165
- package/dist/mjs/tools/TextTool.d.ts +0 -36
- package/dist/mjs/tools/TextTool.mjs +0 -279
- package/dist/mjs/tools/TextTool.test.d.ts +0 -1
- package/dist/mjs/tools/ToolController.d.ts +0 -73
- package/dist/mjs/tools/ToolController.mjs +0 -275
- package/dist/mjs/tools/ToolController.test.d.ts +0 -1
- package/dist/mjs/tools/ToolEnabledGroup.d.ts +0 -6
- package/dist/mjs/tools/ToolEnabledGroup.mjs +0 -10
- package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +0 -16
- package/dist/mjs/tools/ToolSwitcherShortcut.mjs +0 -34
- package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +0 -12
- package/dist/mjs/tools/ToolbarShortcutHandler.mjs +0 -28
- package/dist/mjs/tools/UndoRedoShortcut.d.ts +0 -8
- package/dist/mjs/tools/UndoRedoShortcut.mjs +0 -21
- package/dist/mjs/tools/UndoRedoShortcut.test.d.ts +0 -1
- package/dist/mjs/tools/keybindings.d.ts +0 -18
- package/dist/mjs/tools/keybindings.mjs +0 -43
- package/dist/mjs/tools/lib.d.ts +0 -14
- package/dist/mjs/tools/lib.mjs +0 -14
- package/dist/mjs/tools/localization.d.ts +0 -34
- package/dist/mjs/tools/localization.mjs +0 -33
- package/dist/mjs/tools/util/StationaryPenDetector.d.ts +0 -22
- package/dist/mjs/tools/util/StationaryPenDetector.mjs +0 -92
- package/src/tools/FindTool.css +0 -7
- package/src/tools/ScrollbarTool.scss +0 -57
- package/src/tools/SelectionTool/SelectionTool.scss +0 -137
- package/src/tools/SoundUITool.scss +0 -22
- package/src/tools/tools.scss +0 -5
@@ -1,16 +0,0 @@
|
|
1
|
-
import Editor from '../Editor';
|
2
|
-
import { KeyPressEvent } from '../inputEvents';
|
3
|
-
import BaseTool from './BaseTool';
|
4
|
-
/**
|
5
|
-
* Handles keyboard events used, by default, to select tools. By default,
|
6
|
-
* 1 maps to the first primary tool, 2 to the second primary tool, ... .
|
7
|
-
*
|
8
|
-
* This is in the default set of {@link ToolController} tools.
|
9
|
-
*
|
10
|
-
*/
|
11
|
-
export default class ToolSwitcherShortcut extends BaseTool {
|
12
|
-
private editor;
|
13
|
-
constructor(editor: Editor);
|
14
|
-
canReceiveInputInReadOnlyEditor(): boolean;
|
15
|
-
onKeyPress({ key }: KeyPressEvent): boolean;
|
16
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const BaseTool_1 = __importDefault(require("./BaseTool"));
|
7
|
-
/**
|
8
|
-
* Handles keyboard events used, by default, to select tools. By default,
|
9
|
-
* 1 maps to the first primary tool, 2 to the second primary tool, ... .
|
10
|
-
*
|
11
|
-
* This is in the default set of {@link ToolController} tools.
|
12
|
-
*
|
13
|
-
*/
|
14
|
-
class ToolSwitcherShortcut extends BaseTool_1.default {
|
15
|
-
constructor(editor) {
|
16
|
-
super(editor.notifier, editor.localization.changeTool);
|
17
|
-
this.editor = editor;
|
18
|
-
}
|
19
|
-
canReceiveInputInReadOnlyEditor() {
|
20
|
-
return true;
|
21
|
-
}
|
22
|
-
// @internal
|
23
|
-
onKeyPress({ key }) {
|
24
|
-
const toolController = this.editor.toolController;
|
25
|
-
const primaryTools = toolController.getPrimaryTools();
|
26
|
-
// Map keys 0-9 to primary tools.
|
27
|
-
const keyMatch = /^[0-9]$/.exec(key);
|
28
|
-
let targetTool;
|
29
|
-
if (keyMatch) {
|
30
|
-
const targetIdx = parseInt(keyMatch[0], 10) - 1;
|
31
|
-
targetTool = primaryTools[targetIdx];
|
32
|
-
}
|
33
|
-
if (targetTool) {
|
34
|
-
targetTool.setEnabled(true);
|
35
|
-
return true;
|
36
|
-
}
|
37
|
-
return false;
|
38
|
-
}
|
39
|
-
}
|
40
|
-
exports.default = ToolSwitcherShortcut;
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import Editor from '../Editor';
|
2
|
-
import { KeyPressEvent } from '../inputEvents';
|
3
|
-
import BaseTool from './BaseTool';
|
4
|
-
type KeyPressListener = (event: KeyPressEvent) => boolean;
|
5
|
-
export default class ToolbarShortcutHandler extends BaseTool {
|
6
|
-
private listeners;
|
7
|
-
constructor(editor: Editor);
|
8
|
-
registerListener(listener: KeyPressListener): void;
|
9
|
-
removeListener(listener: KeyPressListener): void;
|
10
|
-
onKeyPress(event: KeyPressEvent): boolean;
|
11
|
-
}
|
12
|
-
export {};
|
@@ -1,34 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
// Allows the toolbar to register keyboard events.
|
3
|
-
// @packageDocumentation
|
4
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
5
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
6
|
-
};
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
8
|
-
const BaseTool_1 = __importDefault(require("./BaseTool"));
|
9
|
-
class ToolbarShortcutHandler extends BaseTool_1.default {
|
10
|
-
constructor(editor) {
|
11
|
-
super(editor.notifier, editor.localization.changeTool);
|
12
|
-
this.listeners = new Set([]);
|
13
|
-
}
|
14
|
-
registerListener(listener) {
|
15
|
-
this.listeners.add(listener);
|
16
|
-
}
|
17
|
-
removeListener(listener) {
|
18
|
-
this.listeners.delete(listener);
|
19
|
-
}
|
20
|
-
onKeyPress(event) {
|
21
|
-
// TypeScript seems to automatically convert for of loops into for(init;check;update)
|
22
|
-
// loops (even with target set to es6). Thus, we cannot iterate directly through the
|
23
|
-
// set here.
|
24
|
-
// See https://stackoverflow.com/q/48886500
|
25
|
-
const listeners = Array.from(this.listeners.values());
|
26
|
-
for (const listener of listeners) {
|
27
|
-
if (listener(event)) {
|
28
|
-
return true;
|
29
|
-
}
|
30
|
-
}
|
31
|
-
return false;
|
32
|
-
}
|
33
|
-
}
|
34
|
-
exports.default = ToolbarShortcutHandler;
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import Editor from '../Editor';
|
2
|
-
import { KeyPressEvent } from '../inputEvents';
|
3
|
-
import BaseTool from './BaseTool';
|
4
|
-
export default class UndoRedoShortcut extends BaseTool {
|
5
|
-
private editor;
|
6
|
-
constructor(editor: Editor);
|
7
|
-
onKeyPress(event: KeyPressEvent): boolean;
|
8
|
-
}
|
@@ -1,27 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const BaseTool_1 = __importDefault(require("./BaseTool"));
|
7
|
-
const keybindings_1 = require("./keybindings");
|
8
|
-
// Handles ctrl+Z, ctrl+Shift+Z keyboard shortcuts.
|
9
|
-
class UndoRedoShortcut extends BaseTool_1.default {
|
10
|
-
constructor(editor) {
|
11
|
-
super(editor.notifier, editor.localization.undoRedoTool);
|
12
|
-
this.editor = editor;
|
13
|
-
}
|
14
|
-
// @internal
|
15
|
-
onKeyPress(event) {
|
16
|
-
if (this.editor.shortcuts.matchesShortcut(keybindings_1.undoKeyboardShortcutId, event)) {
|
17
|
-
this.editor.history.undo();
|
18
|
-
return true;
|
19
|
-
}
|
20
|
-
else if (this.editor.shortcuts.matchesShortcut(keybindings_1.redoKeyboardShortcutId, event)) {
|
21
|
-
this.editor.history.redo();
|
22
|
-
return true;
|
23
|
-
}
|
24
|
-
return false;
|
25
|
-
}
|
26
|
-
}
|
27
|
-
exports.default = UndoRedoShortcut;
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,18 +0,0 @@
|
|
1
|
-
export declare const undoKeyboardShortcutId = "jsdraw.tools.undo";
|
2
|
-
export declare const redoKeyboardShortcutId = "jsdaw.tools.redo";
|
3
|
-
export declare const increaseSizeKeyboardShortcutId = "jsdraw.tools.increaseSize";
|
4
|
-
export declare const decreaseSizeKeyboardShortcutId = "jsdraw.tools.decreaseSize";
|
5
|
-
export declare const snapToGridKeyboardShortcutId = "jsdraw.tools.snapToGrid";
|
6
|
-
export declare const lineLockKeyboardShortcutId = "jsdraw.tools.lockToLine";
|
7
|
-
export declare const toggleFindVisibleShortcutId = "js-draw.tools.FindTool.toggleVisible";
|
8
|
-
export declare const moveLeftKeyboardShortcutId = "jsdraw.tools.PanZoom.moveLeft";
|
9
|
-
export declare const moveRightKeyboardShortcutId = "jsdraw.tools.PanZoom.moveRight";
|
10
|
-
export declare const moveUpKeyboardShortcutId = "jsdraw.tools.PanZoom.moveUp";
|
11
|
-
export declare const moveDownKeyboardShortcutId = "jsdraw.tools.PanZoom.moveDown";
|
12
|
-
export declare const rotateClockwiseKeyboardShortcutId = "jsdraw.tools.PanZoom.rotateViewClockwise";
|
13
|
-
export declare const rotateCounterClockwiseKeyboardShortcutId = "jsdraw.tools.PanZoom.rotateViewCounterClockwise";
|
14
|
-
export declare const zoomInKeyboardShortcutId = "jsdraw.tools.PanZoom.zoomIn";
|
15
|
-
export declare const zoomOutKeyboardShortcutId = "jsdraw.tools.PanZoom.zoomOut";
|
16
|
-
export declare const selectAllKeyboardShortcut = "jsdraw.tools.SelectionTool.selectAll";
|
17
|
-
export declare const duplicateSelectionShortcut = "jsdraw.tools.SelectionTool.duplicateSelection";
|
18
|
-
export declare const sendToBackSelectionShortcut = "jsdraw.tools.SelectionTool.sendToBack";
|
@@ -1,49 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.sendToBackSelectionShortcut = exports.duplicateSelectionShortcut = exports.selectAllKeyboardShortcut = exports.zoomOutKeyboardShortcutId = exports.zoomInKeyboardShortcutId = exports.rotateCounterClockwiseKeyboardShortcutId = exports.rotateClockwiseKeyboardShortcutId = exports.moveDownKeyboardShortcutId = exports.moveUpKeyboardShortcutId = exports.moveRightKeyboardShortcutId = exports.moveLeftKeyboardShortcutId = exports.toggleFindVisibleShortcutId = exports.lineLockKeyboardShortcutId = exports.snapToGridKeyboardShortcutId = exports.decreaseSizeKeyboardShortcutId = exports.increaseSizeKeyboardShortcutId = exports.redoKeyboardShortcutId = exports.undoKeyboardShortcutId = void 0;
|
7
|
-
const KeyboardShortcutManager_1 = __importDefault(require("../shortcuts/KeyboardShortcutManager"));
|
8
|
-
// This file contains user-overridable tool-realted keybindings.
|
9
|
-
// Undo/redo
|
10
|
-
exports.undoKeyboardShortcutId = 'jsdraw.tools.undo';
|
11
|
-
exports.redoKeyboardShortcutId = 'jsdaw.tools.redo';
|
12
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.undoKeyboardShortcutId, ['CtrlOrMeta+KeyZ'], 'Undo');
|
13
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.redoKeyboardShortcutId, ['CtrlOrMeta+Shift+KeyZ', 'CtrlOrMeta+KeyY'], 'Redo');
|
14
|
-
// Pen/eraser/selection keybindings
|
15
|
-
exports.increaseSizeKeyboardShortcutId = 'jsdraw.tools.increaseSize';
|
16
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.increaseSizeKeyboardShortcutId, ['Equal', 'Shift+Equal'], 'Increase pen/eraser size');
|
17
|
-
exports.decreaseSizeKeyboardShortcutId = 'jsdraw.tools.decreaseSize';
|
18
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.decreaseSizeKeyboardShortcutId, ['Minus', 'Shift+Minus'], 'Decrease pen/eraser size');
|
19
|
-
exports.snapToGridKeyboardShortcutId = 'jsdraw.tools.snapToGrid';
|
20
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.snapToGridKeyboardShortcutId, ['Control', 'Meta'], 'Snap to grid (press and hold)');
|
21
|
-
exports.lineLockKeyboardShortcutId = 'jsdraw.tools.lockToLine';
|
22
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.lineLockKeyboardShortcutId, ['Shift'], 'Snap to XY axes (press and hold)');
|
23
|
-
// Find tool
|
24
|
-
exports.toggleFindVisibleShortcutId = 'js-draw.tools.FindTool.toggleVisible';
|
25
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.toggleFindVisibleShortcutId, ['CtrlOrMeta+KeyF'], 'Shows/hides the find tool');
|
26
|
-
// Pan/zoom
|
27
|
-
exports.moveLeftKeyboardShortcutId = 'jsdraw.tools.PanZoom.moveLeft';
|
28
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.moveLeftKeyboardShortcutId, ['ArrowLeft', 'KeyH', 'KeyA'], 'Pan left');
|
29
|
-
exports.moveRightKeyboardShortcutId = 'jsdraw.tools.PanZoom.moveRight';
|
30
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.moveRightKeyboardShortcutId, ['ArrowRight', 'KeyL', 'KeyD'], 'Pan right');
|
31
|
-
exports.moveUpKeyboardShortcutId = 'jsdraw.tools.PanZoom.moveUp';
|
32
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.moveUpKeyboardShortcutId, ['ArrowUp', 'KeyK', 'KeyQ'], 'Pan up');
|
33
|
-
exports.moveDownKeyboardShortcutId = 'jsdraw.tools.PanZoom.moveDown';
|
34
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.moveDownKeyboardShortcutId, ['ArrowDown', 'KeyJ', 'KeyE'], 'Pan down');
|
35
|
-
exports.rotateClockwiseKeyboardShortcutId = 'jsdraw.tools.PanZoom.rotateViewClockwise';
|
36
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.rotateClockwiseKeyboardShortcutId, ['Shift+KeyR'], 'Rotate viewport clockwise');
|
37
|
-
exports.rotateCounterClockwiseKeyboardShortcutId = 'jsdraw.tools.PanZoom.rotateViewCounterClockwise';
|
38
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.rotateCounterClockwiseKeyboardShortcutId, ['KeyR'], 'Rotate viewport counter-clockwise');
|
39
|
-
exports.zoomInKeyboardShortcutId = 'jsdraw.tools.PanZoom.zoomIn';
|
40
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.zoomInKeyboardShortcutId, ['KeyW'], 'Zoom in');
|
41
|
-
exports.zoomOutKeyboardShortcutId = 'jsdraw.tools.PanZoom.zoomOut';
|
42
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.zoomOutKeyboardShortcutId, ['KeyS'], 'Zoom out');
|
43
|
-
// Selection
|
44
|
-
exports.selectAllKeyboardShortcut = 'jsdraw.tools.SelectionTool.selectAll';
|
45
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.selectAllKeyboardShortcut, ['CtrlOrMeta+KeyA'], 'Select all');
|
46
|
-
exports.duplicateSelectionShortcut = 'jsdraw.tools.SelectionTool.duplicateSelection';
|
47
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.duplicateSelectionShortcut, ['CtrlOrMeta+KeyD'], 'Duplicate selection');
|
48
|
-
exports.sendToBackSelectionShortcut = 'jsdraw.tools.SelectionTool.sendToBack';
|
49
|
-
KeyboardShortcutManager_1.default.registerDefaultKeyboardShortcut(exports.sendToBackSelectionShortcut, ['End'], 'Send to back');
|
package/dist/cjs/tools/lib.d.ts
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
export { default as BaseTool } from './BaseTool';
|
2
|
-
export { default as ToolController } from './ToolController';
|
3
|
-
export { default as ToolEnabledGroup } from './ToolEnabledGroup';
|
4
|
-
export { default as UndoRedoShortcut } from './UndoRedoShortcut';
|
5
|
-
export { default as ToolSwitcherShortcut } from './ToolSwitcherShortcut';
|
6
|
-
export { default as PanZoomTool, PanZoomMode } from './PanZoom';
|
7
|
-
export { default as PenTool, PenStyle } from './Pen';
|
8
|
-
export { default as TextTool } from './TextTool';
|
9
|
-
export { default as SelectionTool } from './SelectionTool/SelectionTool';
|
10
|
-
export { default as SelectAllShortcutHandler } from './SelectionTool/SelectAllShortcutHandler';
|
11
|
-
export { default as EraserTool, EraserMode } from './Eraser';
|
12
|
-
export { default as PasteHandler } from './PasteHandler';
|
13
|
-
export { default as SoundUITool } from './SoundUITool';
|
14
|
-
export { default as ToolbarShortcutHandler } from './ToolbarShortcutHandler';
|
package/dist/cjs/tools/lib.js
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.ToolbarShortcutHandler = exports.SoundUITool = exports.PasteHandler = exports.EraserMode = exports.EraserTool = exports.SelectAllShortcutHandler = exports.SelectionTool = exports.TextTool = exports.PenTool = exports.PanZoomMode = exports.PanZoomTool = exports.ToolSwitcherShortcut = exports.UndoRedoShortcut = exports.ToolEnabledGroup = exports.ToolController = exports.BaseTool = void 0;
|
7
|
-
var BaseTool_1 = require("./BaseTool");
|
8
|
-
Object.defineProperty(exports, "BaseTool", { enumerable: true, get: function () { return __importDefault(BaseTool_1).default; } });
|
9
|
-
var ToolController_1 = require("./ToolController");
|
10
|
-
Object.defineProperty(exports, "ToolController", { enumerable: true, get: function () { return __importDefault(ToolController_1).default; } });
|
11
|
-
var ToolEnabledGroup_1 = require("./ToolEnabledGroup");
|
12
|
-
Object.defineProperty(exports, "ToolEnabledGroup", { enumerable: true, get: function () { return __importDefault(ToolEnabledGroup_1).default; } });
|
13
|
-
var UndoRedoShortcut_1 = require("./UndoRedoShortcut");
|
14
|
-
Object.defineProperty(exports, "UndoRedoShortcut", { enumerable: true, get: function () { return __importDefault(UndoRedoShortcut_1).default; } });
|
15
|
-
var ToolSwitcherShortcut_1 = require("./ToolSwitcherShortcut");
|
16
|
-
Object.defineProperty(exports, "ToolSwitcherShortcut", { enumerable: true, get: function () { return __importDefault(ToolSwitcherShortcut_1).default; } });
|
17
|
-
var PanZoom_1 = require("./PanZoom");
|
18
|
-
Object.defineProperty(exports, "PanZoomTool", { enumerable: true, get: function () { return __importDefault(PanZoom_1).default; } });
|
19
|
-
Object.defineProperty(exports, "PanZoomMode", { enumerable: true, get: function () { return PanZoom_1.PanZoomMode; } });
|
20
|
-
var Pen_1 = require("./Pen");
|
21
|
-
Object.defineProperty(exports, "PenTool", { enumerable: true, get: function () { return __importDefault(Pen_1).default; } });
|
22
|
-
var TextTool_1 = require("./TextTool");
|
23
|
-
Object.defineProperty(exports, "TextTool", { enumerable: true, get: function () { return __importDefault(TextTool_1).default; } });
|
24
|
-
var SelectionTool_1 = require("./SelectionTool/SelectionTool");
|
25
|
-
Object.defineProperty(exports, "SelectionTool", { enumerable: true, get: function () { return __importDefault(SelectionTool_1).default; } });
|
26
|
-
var SelectAllShortcutHandler_1 = require("./SelectionTool/SelectAllShortcutHandler");
|
27
|
-
Object.defineProperty(exports, "SelectAllShortcutHandler", { enumerable: true, get: function () { return __importDefault(SelectAllShortcutHandler_1).default; } });
|
28
|
-
var Eraser_1 = require("./Eraser");
|
29
|
-
Object.defineProperty(exports, "EraserTool", { enumerable: true, get: function () { return __importDefault(Eraser_1).default; } });
|
30
|
-
Object.defineProperty(exports, "EraserMode", { enumerable: true, get: function () { return Eraser_1.EraserMode; } });
|
31
|
-
var PasteHandler_1 = require("./PasteHandler");
|
32
|
-
Object.defineProperty(exports, "PasteHandler", { enumerable: true, get: function () { return __importDefault(PasteHandler_1).default; } });
|
33
|
-
var SoundUITool_1 = require("./SoundUITool");
|
34
|
-
Object.defineProperty(exports, "SoundUITool", { enumerable: true, get: function () { return __importDefault(SoundUITool_1).default; } });
|
35
|
-
var ToolbarShortcutHandler_1 = require("./ToolbarShortcutHandler");
|
36
|
-
Object.defineProperty(exports, "ToolbarShortcutHandler", { enumerable: true, get: function () { return __importDefault(ToolbarShortcutHandler_1).default; } });
|
@@ -1,34 +0,0 @@
|
|
1
|
-
export interface ToolLocalization {
|
2
|
-
keyboardPanZoom: string;
|
3
|
-
penTool: (penId: number) => string;
|
4
|
-
selectionTool: string;
|
5
|
-
selectAllTool: string;
|
6
|
-
eraserTool: string;
|
7
|
-
touchPanTool: string;
|
8
|
-
twoFingerPanZoomTool: string;
|
9
|
-
undoRedoTool: string;
|
10
|
-
pipetteTool: string;
|
11
|
-
rightClickDragPanTool: string;
|
12
|
-
autocorrectedTo: (description: string) => string;
|
13
|
-
autocorrectionCanceled: string;
|
14
|
-
textTool: string;
|
15
|
-
enterTextToInsert: string;
|
16
|
-
changeTool: string;
|
17
|
-
pasteHandler: string;
|
18
|
-
soundExplorer: string;
|
19
|
-
disableAccessibilityExploreTool: string;
|
20
|
-
enableAccessibilityExploreTool: string;
|
21
|
-
soundExplorerUsageAnnouncement: string;
|
22
|
-
findLabel: string;
|
23
|
-
toNextMatch: string;
|
24
|
-
closeDialog: string;
|
25
|
-
findDialogShown: string;
|
26
|
-
findDialogHidden: string;
|
27
|
-
focusedFoundText: (currentMatchNumber: number, totalMatches: number) => string;
|
28
|
-
anyDevicePanning: string;
|
29
|
-
copied: (count: number) => string;
|
30
|
-
pasted: (count: number) => string;
|
31
|
-
toolEnabledAnnouncement: (toolName: string) => string;
|
32
|
-
toolDisabledAnnouncement: (toolName: string) => string;
|
33
|
-
}
|
34
|
-
export declare const defaultToolLocalization: ToolLocalization;
|
@@ -1,36 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.defaultToolLocalization = void 0;
|
4
|
-
exports.defaultToolLocalization = {
|
5
|
-
penTool: (penId) => `Pen ${penId}`,
|
6
|
-
selectionTool: 'Selection',
|
7
|
-
selectAllTool: 'Select all shortcut',
|
8
|
-
eraserTool: 'Eraser',
|
9
|
-
touchPanTool: 'Touch panning',
|
10
|
-
twoFingerPanZoomTool: 'Panning and zooming',
|
11
|
-
undoRedoTool: 'Undo/Redo',
|
12
|
-
rightClickDragPanTool: 'Right-click drag',
|
13
|
-
pipetteTool: 'Pick color from screen',
|
14
|
-
keyboardPanZoom: 'Keyboard pan/zoom shortcuts',
|
15
|
-
autocorrectedTo: (strokeDescription) => `Autocorrected to ${strokeDescription}`,
|
16
|
-
autocorrectionCanceled: 'Autocorrect cancelled',
|
17
|
-
textTool: 'Text',
|
18
|
-
enterTextToInsert: 'Text to insert',
|
19
|
-
changeTool: 'Change tool',
|
20
|
-
pasteHandler: 'Copy paste handler',
|
21
|
-
soundExplorer: 'Sound-based image exploration',
|
22
|
-
disableAccessibilityExploreTool: 'Disable sound-based exploration',
|
23
|
-
enableAccessibilityExploreTool: 'Enable sound-based exploration',
|
24
|
-
soundExplorerUsageAnnouncement: 'Sound-based image exploration enabled: Click/drag the screen to play a sound representation of different parts of the image.',
|
25
|
-
findLabel: 'Find',
|
26
|
-
toNextMatch: 'Next',
|
27
|
-
closeDialog: 'Close',
|
28
|
-
findDialogShown: 'Find dialog shown',
|
29
|
-
findDialogHidden: 'Find dialog hidden',
|
30
|
-
focusedFoundText: (matchIdx, totalMatches) => `Viewing match ${matchIdx} of ${totalMatches}`,
|
31
|
-
anyDevicePanning: 'Any device panning',
|
32
|
-
copied: (count) => `Copied ${count} item(s)`,
|
33
|
-
pasted: (count) => `Pasted ${count} item(s)`,
|
34
|
-
toolEnabledAnnouncement: (toolName) => `${toolName} enabled`,
|
35
|
-
toolDisabledAnnouncement: (toolName) => `${toolName} disabled`,
|
36
|
-
};
|
@@ -1,22 +0,0 @@
|
|
1
|
-
import Pointer from '../../Pointer';
|
2
|
-
interface Config {
|
3
|
-
maxSpeed: number;
|
4
|
-
minTimeSeconds: number;
|
5
|
-
maxRadius: number;
|
6
|
-
}
|
7
|
-
type OnStationaryCallback = (lastPointer: Pointer) => void;
|
8
|
-
export default class StationaryPenDetector {
|
9
|
-
private config;
|
10
|
-
private onStationary;
|
11
|
-
private stationaryStartPointer;
|
12
|
-
private lastPointer;
|
13
|
-
private averageVelocity;
|
14
|
-
private timeout;
|
15
|
-
constructor(startPointer: Pointer, config: Config, onStationary: OnStationaryCallback);
|
16
|
-
onPointerMove(currentPointer: Pointer): boolean | undefined;
|
17
|
-
onPointerUp(pointer: Pointer): void;
|
18
|
-
destroy(): void;
|
19
|
-
private cancelStationaryTimeout;
|
20
|
-
private setStationaryTimeout;
|
21
|
-
}
|
22
|
-
export {};
|
@@ -1,95 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
const math_1 = require("@js-draw/math");
|
4
|
-
class StationaryPenDetector {
|
5
|
-
// Only handles one pen. As such, `startPointer` should be the same device/finger
|
6
|
-
// as `updatedPointer` in `onPointerMove`.
|
7
|
-
//
|
8
|
-
// A new `StationaryPenDetector` should be created for each gesture.
|
9
|
-
constructor(startPointer, config, onStationary) {
|
10
|
-
this.config = config;
|
11
|
-
this.onStationary = onStationary;
|
12
|
-
this.timeout = null;
|
13
|
-
this.stationaryStartPointer = startPointer;
|
14
|
-
this.lastPointer = startPointer;
|
15
|
-
this.averageVelocity = math_1.Vec2.zero;
|
16
|
-
}
|
17
|
-
// Returns true if stationary
|
18
|
-
onPointerMove(currentPointer) {
|
19
|
-
if (!this.stationaryStartPointer) {
|
20
|
-
// Destoroyed
|
21
|
-
return;
|
22
|
-
}
|
23
|
-
if (currentPointer.id !== this.stationaryStartPointer.id) {
|
24
|
-
return false;
|
25
|
-
}
|
26
|
-
// dx: "Δx" Displacement from last.
|
27
|
-
const dxFromLast = currentPointer.screenPos.minus(this.lastPointer.screenPos);
|
28
|
-
const dxFromStationaryStart = currentPointer.screenPos.minus(this.stationaryStartPointer.screenPos);
|
29
|
-
// dt: Delta time:
|
30
|
-
// /1000: Convert to s.
|
31
|
-
let dtFromLast = (currentPointer.timeStamp - this.lastPointer.timeStamp) / 1000; // s
|
32
|
-
// Don't divide by zero
|
33
|
-
if (dtFromLast === 0) {
|
34
|
-
dtFromLast = 1;
|
35
|
-
}
|
36
|
-
const currentVelocity = dxFromLast.times(1 / dtFromLast); // px/s
|
37
|
-
// Slight smoothing of the velocity to prevent input jitter from affecting the
|
38
|
-
// velocity too significantly.
|
39
|
-
this.averageVelocity = this.averageVelocity.lerp(currentVelocity, 0.5); // px/s
|
40
|
-
const dtFromStart = currentPointer.timeStamp - this.stationaryStartPointer.timeStamp; // ms
|
41
|
-
// If not stationary
|
42
|
-
if (dxFromStationaryStart.length() > this.config.maxRadius
|
43
|
-
|| this.averageVelocity.length() > this.config.maxSpeed
|
44
|
-
|| dtFromStart < this.config.minTimeSeconds) {
|
45
|
-
this.stationaryStartPointer = currentPointer;
|
46
|
-
this.lastPointer = currentPointer;
|
47
|
-
this.setStationaryTimeout(this.config.minTimeSeconds * 1000);
|
48
|
-
return false;
|
49
|
-
}
|
50
|
-
const stationaryTimeoutMs = this.config.minTimeSeconds * 1000 - dtFromStart;
|
51
|
-
this.lastPointer = currentPointer;
|
52
|
-
return stationaryTimeoutMs <= 0;
|
53
|
-
}
|
54
|
-
onPointerUp(pointer) {
|
55
|
-
if (pointer.id !== this.stationaryStartPointer?.id) {
|
56
|
-
this.cancelStationaryTimeout();
|
57
|
-
}
|
58
|
-
}
|
59
|
-
destroy() {
|
60
|
-
this.cancelStationaryTimeout();
|
61
|
-
this.stationaryStartPointer = null;
|
62
|
-
}
|
63
|
-
cancelStationaryTimeout() {
|
64
|
-
if (this.timeout !== null) {
|
65
|
-
clearTimeout(this.timeout);
|
66
|
-
this.timeout = null;
|
67
|
-
}
|
68
|
-
}
|
69
|
-
setStationaryTimeout(timeoutMs) {
|
70
|
-
if (this.timeout !== null) {
|
71
|
-
return;
|
72
|
-
}
|
73
|
-
if (timeoutMs <= 0) {
|
74
|
-
this.onStationary(this.lastPointer);
|
75
|
-
}
|
76
|
-
else {
|
77
|
-
this.timeout = setTimeout(() => {
|
78
|
-
this.timeout = null;
|
79
|
-
if (!this.stationaryStartPointer) {
|
80
|
-
// Destroyed
|
81
|
-
return;
|
82
|
-
}
|
83
|
-
const timeSinceStationaryStart = performance.now() - this.stationaryStartPointer.timeStamp;
|
84
|
-
const timeRemaining = this.config.minTimeSeconds * 1000 - timeSinceStationaryStart;
|
85
|
-
if (timeRemaining <= 0) {
|
86
|
-
this.onStationary(this.lastPointer);
|
87
|
-
}
|
88
|
-
else {
|
89
|
-
this.setStationaryTimeout(timeRemaining);
|
90
|
-
}
|
91
|
-
}, timeoutMs);
|
92
|
-
}
|
93
|
-
}
|
94
|
-
}
|
95
|
-
exports.default = StationaryPenDetector;
|
@@ -1,60 +0,0 @@
|
|
1
|
-
import { EditorNotifier } from '../types';
|
2
|
-
import { WheelEvt, PointerEvt, KeyPressEvent, KeyUpEvent, PasteEvent, CopyEvent, InputEvt, GestureCancelEvt, PointerDownEvt, PointerMoveEvt, PointerUpEvt } from '../inputEvents';
|
3
|
-
import ToolEnabledGroup from './ToolEnabledGroup';
|
4
|
-
import InputMapper, { InputEventListener } from './InputFilter/InputMapper';
|
5
|
-
import { ReactiveValue } from '../util/ReactiveValue';
|
6
|
-
export default abstract class BaseTool implements InputEventListener {
|
7
|
-
#private;
|
8
|
-
private notifier;
|
9
|
-
readonly description: string;
|
10
|
-
protected constructor(notifier: EditorNotifier, description: string);
|
11
|
-
/** Override this to allow this tool to be enabled in a read-only editor */
|
12
|
-
canReceiveInputInReadOnlyEditor(): boolean;
|
13
|
-
setInputMapper(mapper: InputMapper | null): void;
|
14
|
-
getInputMapper(): InputMapper | null;
|
15
|
-
private dispatchEventToCallback;
|
16
|
-
onEvent(event: InputEvt): boolean;
|
17
|
-
/**
|
18
|
-
* Returns true iff the tool handled the event and thus should receive additional
|
19
|
-
* events.
|
20
|
-
*/
|
21
|
-
onPointerDown(_event: PointerDownEvt): boolean;
|
22
|
-
onPointerMove(_event: PointerMoveEvt): void;
|
23
|
-
/**
|
24
|
-
* Returns true iff there are additional pointers down and the tool should
|
25
|
-
* remain active to handle the additional events.
|
26
|
-
*
|
27
|
-
* For most purposes, this should return `false` or nothing.
|
28
|
-
*/
|
29
|
-
onPointerUp(_event: PointerUpEvt): boolean | void;
|
30
|
-
onGestureCancel(_event: GestureCancelEvt): void;
|
31
|
-
onWheel(_event: WheelEvt): boolean;
|
32
|
-
onCopy(_event: CopyEvent): boolean;
|
33
|
-
onPaste(_event: PasteEvent): boolean;
|
34
|
-
onKeyPress(_event: KeyPressEvent): boolean;
|
35
|
-
onKeyUp(_event: KeyUpEvent): boolean;
|
36
|
-
/**
|
37
|
-
* Return true if, while this tool is active, `_event` can be delivered to
|
38
|
-
* another tool that is higher priority than this.
|
39
|
-
* @internal May be renamed
|
40
|
-
*/
|
41
|
-
eventCanBeDeliveredToNonActiveTool(_event: PointerEvt): boolean;
|
42
|
-
setEnabled(enabled: boolean): void;
|
43
|
-
isEnabled(): boolean;
|
44
|
-
/**
|
45
|
-
* Returns a {@link ReactiveValue} that updates based on whether this tool is
|
46
|
-
* enabled.
|
47
|
-
*
|
48
|
-
* @example
|
49
|
-
* ```ts
|
50
|
-
* const tool = new SomeTool();
|
51
|
-
*
|
52
|
-
* // Watch for changes in enabled status
|
53
|
-
* tool.enabledValue().onUpdate(enabled => doSomething(enabled));
|
54
|
-
* ```
|
55
|
-
*/
|
56
|
-
enabledValue(): ReactiveValue<boolean>;
|
57
|
-
setToolGroup(group: ToolEnabledGroup): void;
|
58
|
-
getToolGroup(): ToolEnabledGroup | null;
|
59
|
-
onDestroy(): void;
|
60
|
-
}
|