js-draw 1.20.3 → 1.21.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (243) hide show
  1. package/LICENSE +1 -1
  2. package/dist/Editor.css +134 -26
  3. package/dist/bundle.js +2 -2
  4. package/dist/bundledStyles.js +1 -1
  5. package/dist/cjs/Editor.d.ts +27 -6
  6. package/dist/cjs/Editor.js +30 -8
  7. package/dist/cjs/SVGLoader/SVGLoader.js +2 -2
  8. package/dist/cjs/Viewport.d.ts +2 -2
  9. package/dist/cjs/commands/Command.d.ts +5 -0
  10. package/dist/cjs/commands/Command.js +5 -0
  11. package/dist/cjs/commands/SerializableCommand.d.ts +7 -0
  12. package/dist/cjs/commands/SerializableCommand.js +9 -0
  13. package/dist/cjs/dialogs/makeAboutDialog.d.ts +1 -1
  14. package/dist/cjs/dialogs/makeAboutDialog.js +10 -25
  15. package/dist/cjs/dialogs/makeMessageDialog.d.ts +11 -0
  16. package/dist/cjs/dialogs/makeMessageDialog.js +56 -0
  17. package/dist/cjs/image/EditorImage.d.ts +15 -1
  18. package/dist/cjs/image/EditorImage.js +15 -5
  19. package/dist/cjs/inputEvents.d.ts +10 -2
  20. package/dist/cjs/inputEvents.js +1 -0
  21. package/dist/cjs/localizations/es.js +3 -0
  22. package/dist/cjs/rendering/Display.d.ts +1 -0
  23. package/dist/cjs/rendering/Display.js +1 -0
  24. package/dist/cjs/rendering/TextRenderingStyle.d.ts +7 -6
  25. package/dist/cjs/rendering/TextRenderingStyle.js +1 -0
  26. package/dist/cjs/rendering/renderers/CanvasRenderer.d.ts +12 -3
  27. package/dist/cjs/rendering/renderers/CanvasRenderer.js +15 -2
  28. package/dist/cjs/rendering/renderers/DummyRenderer.d.ts +1 -1
  29. package/dist/cjs/testing/firstElementAncestorOfNode.d.ts +1 -1
  30. package/dist/cjs/testing/firstElementAncestorOfNode.js +1 -1
  31. package/dist/cjs/testing/sendPenEvent.d.ts +2 -2
  32. package/dist/cjs/testing/sendTouchEvent.d.ts +2 -2
  33. package/dist/cjs/toolbar/AbstractToolbar.d.ts +6 -1
  34. package/dist/cjs/toolbar/AbstractToolbar.js +6 -1
  35. package/dist/cjs/toolbar/IconProvider.d.ts +1 -1
  36. package/dist/cjs/toolbar/IconProvider.js +6 -1
  37. package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +8 -0
  38. package/dist/cjs/toolbar/widgets/BaseWidget.js +8 -0
  39. package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  40. package/dist/cjs/toolbar/widgets/HandToolWidget.js +1 -0
  41. package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
  42. package/dist/cjs/toolbar/widgets/PenToolWidget.js +5 -0
  43. package/dist/cjs/types.d.ts +5 -0
  44. package/dist/cjs/types.js +1 -0
  45. package/dist/cjs/util/ClipboardHandler.d.ts +9 -1
  46. package/dist/cjs/util/ClipboardHandler.js +82 -24
  47. package/dist/cjs/version.js +1 -1
  48. package/dist/mjs/Editor.d.ts +27 -6
  49. package/dist/mjs/Editor.mjs +31 -9
  50. package/dist/mjs/SVGLoader/SVGLoader.mjs +2 -2
  51. package/dist/mjs/Viewport.d.ts +2 -2
  52. package/dist/mjs/commands/Command.d.ts +5 -0
  53. package/dist/mjs/commands/Command.mjs +5 -0
  54. package/dist/mjs/commands/SerializableCommand.d.ts +7 -0
  55. package/dist/mjs/commands/SerializableCommand.mjs +9 -0
  56. package/dist/mjs/dialogs/makeAboutDialog.d.ts +1 -1
  57. package/dist/mjs/dialogs/makeAboutDialog.mjs +7 -25
  58. package/dist/mjs/dialogs/makeMessageDialog.d.ts +11 -0
  59. package/dist/mjs/dialogs/makeMessageDialog.mjs +51 -0
  60. package/dist/mjs/image/EditorImage.d.ts +15 -1
  61. package/dist/mjs/image/EditorImage.mjs +15 -5
  62. package/dist/mjs/inputEvents.d.ts +10 -2
  63. package/dist/mjs/inputEvents.mjs +1 -0
  64. package/dist/mjs/localizations/es.mjs +3 -0
  65. package/dist/mjs/rendering/Display.d.ts +1 -0
  66. package/dist/mjs/rendering/Display.mjs +1 -0
  67. package/dist/mjs/rendering/TextRenderingStyle.d.ts +7 -6
  68. package/dist/mjs/rendering/TextRenderingStyle.mjs +1 -0
  69. package/dist/mjs/rendering/renderers/CanvasRenderer.d.ts +12 -3
  70. package/dist/mjs/rendering/renderers/CanvasRenderer.mjs +15 -2
  71. package/dist/mjs/rendering/renderers/DummyRenderer.d.ts +1 -1
  72. package/dist/mjs/testing/firstElementAncestorOfNode.d.ts +1 -1
  73. package/dist/mjs/testing/firstElementAncestorOfNode.mjs +1 -1
  74. package/dist/mjs/testing/sendPenEvent.d.ts +2 -2
  75. package/dist/mjs/testing/sendTouchEvent.d.ts +2 -2
  76. package/dist/mjs/toolbar/AbstractToolbar.d.ts +6 -1
  77. package/dist/mjs/toolbar/AbstractToolbar.mjs +6 -1
  78. package/dist/mjs/toolbar/IconProvider.d.ts +1 -1
  79. package/dist/mjs/toolbar/IconProvider.mjs +6 -1
  80. package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +8 -0
  81. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +8 -0
  82. package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  83. package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +1 -0
  84. package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
  85. package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +5 -0
  86. package/dist/mjs/types.d.ts +5 -0
  87. package/dist/mjs/types.mjs +1 -0
  88. package/dist/mjs/util/ClipboardHandler.d.ts +9 -1
  89. package/dist/mjs/util/ClipboardHandler.mjs +82 -24
  90. package/dist/mjs/version.mjs +1 -1
  91. package/package.json +8 -9
  92. package/src/dialogs/dialogs.scss +9 -21
  93. package/src/dialogs/makeAboutDialog.scss +13 -33
  94. package/src/dialogs/makeMessageDialog.scss +46 -0
  95. package/dist/cjs/tools/BaseTool.d.ts +0 -60
  96. package/dist/cjs/tools/BaseTool.js +0 -174
  97. package/dist/cjs/tools/Eraser.d.ts +0 -56
  98. package/dist/cjs/tools/Eraser.js +0 -295
  99. package/dist/cjs/tools/Eraser.test.d.ts +0 -1
  100. package/dist/cjs/tools/FindTool.d.ts +0 -21
  101. package/dist/cjs/tools/FindTool.js +0 -137
  102. package/dist/cjs/tools/FindTool.test.d.ts +0 -1
  103. package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
  104. package/dist/cjs/tools/InputFilter/FunctionMapper.js +0 -21
  105. package/dist/cjs/tools/InputFilter/InputMapper.d.ts +0 -23
  106. package/dist/cjs/tools/InputFilter/InputMapper.js +0 -38
  107. package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +0 -15
  108. package/dist/cjs/tools/InputFilter/InputPipeline.js +0 -54
  109. package/dist/cjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
  110. package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
  111. package/dist/cjs/tools/InputFilter/InputStabilizer.js +0 -181
  112. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
  113. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +0 -84
  114. package/dist/cjs/tools/PanZoom.d.ts +0 -119
  115. package/dist/cjs/tools/PanZoom.js +0 -508
  116. package/dist/cjs/tools/PanZoom.test.d.ts +0 -1
  117. package/dist/cjs/tools/PasteHandler.d.ts +0 -23
  118. package/dist/cjs/tools/PasteHandler.js +0 -109
  119. package/dist/cjs/tools/Pen.d.ts +0 -53
  120. package/dist/cjs/tools/Pen.js +0 -318
  121. package/dist/cjs/tools/Pen.test.d.ts +0 -1
  122. package/dist/cjs/tools/PipetteTool.d.ts +0 -28
  123. package/dist/cjs/tools/PipetteTool.js +0 -69
  124. package/dist/cjs/tools/ScrollbarTool.d.ts +0 -18
  125. package/dist/cjs/tools/ScrollbarTool.js +0 -85
  126. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
  127. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +0 -32
  128. package/dist/cjs/tools/SelectionTool/Selection.d.ts +0 -71
  129. package/dist/cjs/tools/SelectionTool/Selection.js +0 -620
  130. package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
  131. package/dist/cjs/tools/SelectionTool/SelectionHandle.js +0 -141
  132. package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
  133. package/dist/cjs/tools/SelectionTool/SelectionTool.js +0 -494
  134. package/dist/cjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
  135. package/dist/cjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
  136. package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
  137. package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.js +0 -83
  138. package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +0 -42
  139. package/dist/cjs/tools/SelectionTool/TransformMode.js +0 -155
  140. package/dist/cjs/tools/SelectionTool/types.d.ts +0 -28
  141. package/dist/cjs/tools/SelectionTool/types.js +0 -14
  142. package/dist/cjs/tools/SoundUITool.d.ts +0 -26
  143. package/dist/cjs/tools/SoundUITool.js +0 -171
  144. package/dist/cjs/tools/TextTool.d.ts +0 -36
  145. package/dist/cjs/tools/TextTool.js +0 -285
  146. package/dist/cjs/tools/TextTool.test.d.ts +0 -1
  147. package/dist/cjs/tools/ToolController.d.ts +0 -73
  148. package/dist/cjs/tools/ToolController.js +0 -304
  149. package/dist/cjs/tools/ToolController.test.d.ts +0 -1
  150. package/dist/cjs/tools/ToolEnabledGroup.d.ts +0 -6
  151. package/dist/cjs/tools/ToolEnabledGroup.js +0 -13
  152. package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +0 -16
  153. package/dist/cjs/tools/ToolSwitcherShortcut.js +0 -40
  154. package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +0 -12
  155. package/dist/cjs/tools/ToolbarShortcutHandler.js +0 -34
  156. package/dist/cjs/tools/UndoRedoShortcut.d.ts +0 -8
  157. package/dist/cjs/tools/UndoRedoShortcut.js +0 -27
  158. package/dist/cjs/tools/UndoRedoShortcut.test.d.ts +0 -1
  159. package/dist/cjs/tools/keybindings.d.ts +0 -18
  160. package/dist/cjs/tools/keybindings.js +0 -49
  161. package/dist/cjs/tools/lib.d.ts +0 -14
  162. package/dist/cjs/tools/lib.js +0 -36
  163. package/dist/cjs/tools/localization.d.ts +0 -34
  164. package/dist/cjs/tools/localization.js +0 -36
  165. package/dist/cjs/tools/util/StationaryPenDetector.d.ts +0 -22
  166. package/dist/cjs/tools/util/StationaryPenDetector.js +0 -95
  167. package/dist/mjs/tools/BaseTool.d.ts +0 -60
  168. package/dist/mjs/tools/BaseTool.mjs +0 -172
  169. package/dist/mjs/tools/Eraser.d.ts +0 -56
  170. package/dist/mjs/tools/Eraser.mjs +0 -288
  171. package/dist/mjs/tools/Eraser.test.d.ts +0 -1
  172. package/dist/mjs/tools/FindTool.d.ts +0 -21
  173. package/dist/mjs/tools/FindTool.mjs +0 -131
  174. package/dist/mjs/tools/FindTool.test.d.ts +0 -1
  175. package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
  176. package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +0 -15
  177. package/dist/mjs/tools/InputFilter/InputMapper.d.ts +0 -23
  178. package/dist/mjs/tools/InputFilter/InputMapper.mjs +0 -36
  179. package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +0 -15
  180. package/dist/mjs/tools/InputFilter/InputPipeline.mjs +0 -49
  181. package/dist/mjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
  182. package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
  183. package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +0 -175
  184. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
  185. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +0 -78
  186. package/dist/mjs/tools/PanZoom.d.ts +0 -119
  187. package/dist/mjs/tools/PanZoom.mjs +0 -501
  188. package/dist/mjs/tools/PanZoom.test.d.ts +0 -1
  189. package/dist/mjs/tools/PasteHandler.d.ts +0 -23
  190. package/dist/mjs/tools/PasteHandler.mjs +0 -103
  191. package/dist/mjs/tools/Pen.d.ts +0 -53
  192. package/dist/mjs/tools/Pen.mjs +0 -312
  193. package/dist/mjs/tools/Pen.test.d.ts +0 -1
  194. package/dist/mjs/tools/PipetteTool.d.ts +0 -28
  195. package/dist/mjs/tools/PipetteTool.mjs +0 -63
  196. package/dist/mjs/tools/ScrollbarTool.d.ts +0 -18
  197. package/dist/mjs/tools/ScrollbarTool.mjs +0 -79
  198. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
  199. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +0 -26
  200. package/dist/mjs/tools/SelectionTool/Selection.d.ts +0 -71
  201. package/dist/mjs/tools/SelectionTool/Selection.mjs +0 -592
  202. package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
  203. package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +0 -137
  204. package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
  205. package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +0 -488
  206. package/dist/mjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
  207. package/dist/mjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
  208. package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
  209. package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.mjs +0 -77
  210. package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +0 -42
  211. package/dist/mjs/tools/SelectionTool/TransformMode.mjs +0 -146
  212. package/dist/mjs/tools/SelectionTool/types.d.ts +0 -28
  213. package/dist/mjs/tools/SelectionTool/types.mjs +0 -11
  214. package/dist/mjs/tools/SoundUITool.d.ts +0 -26
  215. package/dist/mjs/tools/SoundUITool.mjs +0 -165
  216. package/dist/mjs/tools/TextTool.d.ts +0 -36
  217. package/dist/mjs/tools/TextTool.mjs +0 -279
  218. package/dist/mjs/tools/TextTool.test.d.ts +0 -1
  219. package/dist/mjs/tools/ToolController.d.ts +0 -73
  220. package/dist/mjs/tools/ToolController.mjs +0 -275
  221. package/dist/mjs/tools/ToolController.test.d.ts +0 -1
  222. package/dist/mjs/tools/ToolEnabledGroup.d.ts +0 -6
  223. package/dist/mjs/tools/ToolEnabledGroup.mjs +0 -10
  224. package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +0 -16
  225. package/dist/mjs/tools/ToolSwitcherShortcut.mjs +0 -34
  226. package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +0 -12
  227. package/dist/mjs/tools/ToolbarShortcutHandler.mjs +0 -28
  228. package/dist/mjs/tools/UndoRedoShortcut.d.ts +0 -8
  229. package/dist/mjs/tools/UndoRedoShortcut.mjs +0 -21
  230. package/dist/mjs/tools/UndoRedoShortcut.test.d.ts +0 -1
  231. package/dist/mjs/tools/keybindings.d.ts +0 -18
  232. package/dist/mjs/tools/keybindings.mjs +0 -43
  233. package/dist/mjs/tools/lib.d.ts +0 -14
  234. package/dist/mjs/tools/lib.mjs +0 -14
  235. package/dist/mjs/tools/localization.d.ts +0 -34
  236. package/dist/mjs/tools/localization.mjs +0 -33
  237. package/dist/mjs/tools/util/StationaryPenDetector.d.ts +0 -22
  238. package/dist/mjs/tools/util/StationaryPenDetector.mjs +0 -92
  239. package/src/tools/FindTool.css +0 -7
  240. package/src/tools/ScrollbarTool.scss +0 -57
  241. package/src/tools/SelectionTool/SelectionTool.scss +0 -137
  242. package/src/tools/SoundUITool.scss +0 -22
  243. 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');
@@ -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';
@@ -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
- }