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.
Files changed (245) hide show
  1. package/LICENSE +1 -1
  2. package/dist/Editor.css +136 -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/InsertImageWidget/ImageWrapper.d.ts +1 -1
  42. package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
  43. package/dist/cjs/toolbar/widgets/PenToolWidget.js +5 -0
  44. package/dist/cjs/types.d.ts +5 -0
  45. package/dist/cjs/types.js +1 -0
  46. package/dist/cjs/util/ClipboardHandler.d.ts +9 -1
  47. package/dist/cjs/util/ClipboardHandler.js +82 -24
  48. package/dist/cjs/version.js +1 -1
  49. package/dist/mjs/Editor.d.ts +27 -6
  50. package/dist/mjs/Editor.mjs +31 -9
  51. package/dist/mjs/SVGLoader/SVGLoader.mjs +2 -2
  52. package/dist/mjs/Viewport.d.ts +2 -2
  53. package/dist/mjs/commands/Command.d.ts +5 -0
  54. package/dist/mjs/commands/Command.mjs +5 -0
  55. package/dist/mjs/commands/SerializableCommand.d.ts +7 -0
  56. package/dist/mjs/commands/SerializableCommand.mjs +9 -0
  57. package/dist/mjs/dialogs/makeAboutDialog.d.ts +1 -1
  58. package/dist/mjs/dialogs/makeAboutDialog.mjs +7 -25
  59. package/dist/mjs/dialogs/makeMessageDialog.d.ts +11 -0
  60. package/dist/mjs/dialogs/makeMessageDialog.mjs +51 -0
  61. package/dist/mjs/image/EditorImage.d.ts +15 -1
  62. package/dist/mjs/image/EditorImage.mjs +15 -5
  63. package/dist/mjs/inputEvents.d.ts +10 -2
  64. package/dist/mjs/inputEvents.mjs +1 -0
  65. package/dist/mjs/localizations/es.mjs +3 -0
  66. package/dist/mjs/rendering/Display.d.ts +1 -0
  67. package/dist/mjs/rendering/Display.mjs +1 -0
  68. package/dist/mjs/rendering/TextRenderingStyle.d.ts +7 -6
  69. package/dist/mjs/rendering/TextRenderingStyle.mjs +1 -0
  70. package/dist/mjs/rendering/renderers/CanvasRenderer.d.ts +12 -3
  71. package/dist/mjs/rendering/renderers/CanvasRenderer.mjs +15 -2
  72. package/dist/mjs/rendering/renderers/DummyRenderer.d.ts +1 -1
  73. package/dist/mjs/testing/firstElementAncestorOfNode.d.ts +1 -1
  74. package/dist/mjs/testing/firstElementAncestorOfNode.mjs +1 -1
  75. package/dist/mjs/testing/sendPenEvent.d.ts +2 -2
  76. package/dist/mjs/testing/sendTouchEvent.d.ts +2 -2
  77. package/dist/mjs/toolbar/AbstractToolbar.d.ts +6 -1
  78. package/dist/mjs/toolbar/AbstractToolbar.mjs +6 -1
  79. package/dist/mjs/toolbar/IconProvider.d.ts +1 -1
  80. package/dist/mjs/toolbar/IconProvider.mjs +6 -1
  81. package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +8 -0
  82. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +8 -0
  83. package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  84. package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +1 -0
  85. package/dist/mjs/toolbar/widgets/InsertImageWidget/ImageWrapper.d.ts +1 -1
  86. package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
  87. package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +5 -0
  88. package/dist/mjs/types.d.ts +5 -0
  89. package/dist/mjs/types.mjs +1 -0
  90. package/dist/mjs/util/ClipboardHandler.d.ts +9 -1
  91. package/dist/mjs/util/ClipboardHandler.mjs +82 -24
  92. package/dist/mjs/version.mjs +1 -1
  93. package/package.json +8 -9
  94. package/src/dialogs/dialogs.scss +9 -21
  95. package/src/dialogs/makeAboutDialog.scss +13 -33
  96. package/src/dialogs/makeMessageDialog.scss +46 -0
  97. package/dist/cjs/tools/BaseTool.d.ts +0 -60
  98. package/dist/cjs/tools/BaseTool.js +0 -174
  99. package/dist/cjs/tools/Eraser.d.ts +0 -56
  100. package/dist/cjs/tools/Eraser.js +0 -295
  101. package/dist/cjs/tools/Eraser.test.d.ts +0 -1
  102. package/dist/cjs/tools/FindTool.d.ts +0 -21
  103. package/dist/cjs/tools/FindTool.js +0 -137
  104. package/dist/cjs/tools/FindTool.test.d.ts +0 -1
  105. package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
  106. package/dist/cjs/tools/InputFilter/FunctionMapper.js +0 -21
  107. package/dist/cjs/tools/InputFilter/InputMapper.d.ts +0 -23
  108. package/dist/cjs/tools/InputFilter/InputMapper.js +0 -38
  109. package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +0 -15
  110. package/dist/cjs/tools/InputFilter/InputPipeline.js +0 -54
  111. package/dist/cjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
  112. package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
  113. package/dist/cjs/tools/InputFilter/InputStabilizer.js +0 -181
  114. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
  115. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +0 -84
  116. package/dist/cjs/tools/PanZoom.d.ts +0 -119
  117. package/dist/cjs/tools/PanZoom.js +0 -508
  118. package/dist/cjs/tools/PanZoom.test.d.ts +0 -1
  119. package/dist/cjs/tools/PasteHandler.d.ts +0 -23
  120. package/dist/cjs/tools/PasteHandler.js +0 -109
  121. package/dist/cjs/tools/Pen.d.ts +0 -53
  122. package/dist/cjs/tools/Pen.js +0 -318
  123. package/dist/cjs/tools/Pen.test.d.ts +0 -1
  124. package/dist/cjs/tools/PipetteTool.d.ts +0 -28
  125. package/dist/cjs/tools/PipetteTool.js +0 -69
  126. package/dist/cjs/tools/ScrollbarTool.d.ts +0 -18
  127. package/dist/cjs/tools/ScrollbarTool.js +0 -85
  128. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
  129. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +0 -32
  130. package/dist/cjs/tools/SelectionTool/Selection.d.ts +0 -71
  131. package/dist/cjs/tools/SelectionTool/Selection.js +0 -620
  132. package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
  133. package/dist/cjs/tools/SelectionTool/SelectionHandle.js +0 -141
  134. package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
  135. package/dist/cjs/tools/SelectionTool/SelectionTool.js +0 -494
  136. package/dist/cjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
  137. package/dist/cjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
  138. package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
  139. package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.js +0 -83
  140. package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +0 -42
  141. package/dist/cjs/tools/SelectionTool/TransformMode.js +0 -155
  142. package/dist/cjs/tools/SelectionTool/types.d.ts +0 -28
  143. package/dist/cjs/tools/SelectionTool/types.js +0 -14
  144. package/dist/cjs/tools/SoundUITool.d.ts +0 -26
  145. package/dist/cjs/tools/SoundUITool.js +0 -171
  146. package/dist/cjs/tools/TextTool.d.ts +0 -36
  147. package/dist/cjs/tools/TextTool.js +0 -285
  148. package/dist/cjs/tools/TextTool.test.d.ts +0 -1
  149. package/dist/cjs/tools/ToolController.d.ts +0 -73
  150. package/dist/cjs/tools/ToolController.js +0 -304
  151. package/dist/cjs/tools/ToolController.test.d.ts +0 -1
  152. package/dist/cjs/tools/ToolEnabledGroup.d.ts +0 -6
  153. package/dist/cjs/tools/ToolEnabledGroup.js +0 -13
  154. package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +0 -16
  155. package/dist/cjs/tools/ToolSwitcherShortcut.js +0 -40
  156. package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +0 -12
  157. package/dist/cjs/tools/ToolbarShortcutHandler.js +0 -34
  158. package/dist/cjs/tools/UndoRedoShortcut.d.ts +0 -8
  159. package/dist/cjs/tools/UndoRedoShortcut.js +0 -27
  160. package/dist/cjs/tools/UndoRedoShortcut.test.d.ts +0 -1
  161. package/dist/cjs/tools/keybindings.d.ts +0 -18
  162. package/dist/cjs/tools/keybindings.js +0 -49
  163. package/dist/cjs/tools/lib.d.ts +0 -14
  164. package/dist/cjs/tools/lib.js +0 -36
  165. package/dist/cjs/tools/localization.d.ts +0 -34
  166. package/dist/cjs/tools/localization.js +0 -36
  167. package/dist/cjs/tools/util/StationaryPenDetector.d.ts +0 -22
  168. package/dist/cjs/tools/util/StationaryPenDetector.js +0 -95
  169. package/dist/mjs/tools/BaseTool.d.ts +0 -60
  170. package/dist/mjs/tools/BaseTool.mjs +0 -172
  171. package/dist/mjs/tools/Eraser.d.ts +0 -56
  172. package/dist/mjs/tools/Eraser.mjs +0 -288
  173. package/dist/mjs/tools/Eraser.test.d.ts +0 -1
  174. package/dist/mjs/tools/FindTool.d.ts +0 -21
  175. package/dist/mjs/tools/FindTool.mjs +0 -131
  176. package/dist/mjs/tools/FindTool.test.d.ts +0 -1
  177. package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
  178. package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +0 -15
  179. package/dist/mjs/tools/InputFilter/InputMapper.d.ts +0 -23
  180. package/dist/mjs/tools/InputFilter/InputMapper.mjs +0 -36
  181. package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +0 -15
  182. package/dist/mjs/tools/InputFilter/InputPipeline.mjs +0 -49
  183. package/dist/mjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
  184. package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
  185. package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +0 -175
  186. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
  187. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +0 -78
  188. package/dist/mjs/tools/PanZoom.d.ts +0 -119
  189. package/dist/mjs/tools/PanZoom.mjs +0 -501
  190. package/dist/mjs/tools/PanZoom.test.d.ts +0 -1
  191. package/dist/mjs/tools/PasteHandler.d.ts +0 -23
  192. package/dist/mjs/tools/PasteHandler.mjs +0 -103
  193. package/dist/mjs/tools/Pen.d.ts +0 -53
  194. package/dist/mjs/tools/Pen.mjs +0 -312
  195. package/dist/mjs/tools/Pen.test.d.ts +0 -1
  196. package/dist/mjs/tools/PipetteTool.d.ts +0 -28
  197. package/dist/mjs/tools/PipetteTool.mjs +0 -63
  198. package/dist/mjs/tools/ScrollbarTool.d.ts +0 -18
  199. package/dist/mjs/tools/ScrollbarTool.mjs +0 -79
  200. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
  201. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +0 -26
  202. package/dist/mjs/tools/SelectionTool/Selection.d.ts +0 -71
  203. package/dist/mjs/tools/SelectionTool/Selection.mjs +0 -592
  204. package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
  205. package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +0 -137
  206. package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
  207. package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +0 -488
  208. package/dist/mjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
  209. package/dist/mjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
  210. package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
  211. package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.mjs +0 -77
  212. package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +0 -42
  213. package/dist/mjs/tools/SelectionTool/TransformMode.mjs +0 -146
  214. package/dist/mjs/tools/SelectionTool/types.d.ts +0 -28
  215. package/dist/mjs/tools/SelectionTool/types.mjs +0 -11
  216. package/dist/mjs/tools/SoundUITool.d.ts +0 -26
  217. package/dist/mjs/tools/SoundUITool.mjs +0 -165
  218. package/dist/mjs/tools/TextTool.d.ts +0 -36
  219. package/dist/mjs/tools/TextTool.mjs +0 -279
  220. package/dist/mjs/tools/TextTool.test.d.ts +0 -1
  221. package/dist/mjs/tools/ToolController.d.ts +0 -73
  222. package/dist/mjs/tools/ToolController.mjs +0 -275
  223. package/dist/mjs/tools/ToolController.test.d.ts +0 -1
  224. package/dist/mjs/tools/ToolEnabledGroup.d.ts +0 -6
  225. package/dist/mjs/tools/ToolEnabledGroup.mjs +0 -10
  226. package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +0 -16
  227. package/dist/mjs/tools/ToolSwitcherShortcut.mjs +0 -34
  228. package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +0 -12
  229. package/dist/mjs/tools/ToolbarShortcutHandler.mjs +0 -28
  230. package/dist/mjs/tools/UndoRedoShortcut.d.ts +0 -8
  231. package/dist/mjs/tools/UndoRedoShortcut.mjs +0 -21
  232. package/dist/mjs/tools/UndoRedoShortcut.test.d.ts +0 -1
  233. package/dist/mjs/tools/keybindings.d.ts +0 -18
  234. package/dist/mjs/tools/keybindings.mjs +0 -43
  235. package/dist/mjs/tools/lib.d.ts +0 -14
  236. package/dist/mjs/tools/lib.mjs +0 -14
  237. package/dist/mjs/tools/localization.d.ts +0 -34
  238. package/dist/mjs/tools/localization.mjs +0 -33
  239. package/dist/mjs/tools/util/StationaryPenDetector.d.ts +0 -22
  240. package/dist/mjs/tools/util/StationaryPenDetector.mjs +0 -92
  241. package/src/tools/FindTool.css +0 -7
  242. package/src/tools/ScrollbarTool.scss +0 -57
  243. package/src/tools/SelectionTool/SelectionTool.scss +0 -137
  244. package/src/tools/SoundUITool.scss +0 -22
  245. package/src/tools/tools.scss +0 -5
@@ -1,62 +0,0 @@
1
- import { Point2, Vec2 } from '@js-draw/math';
2
- import Selection from './Selection';
3
- import Pointer from '../../Pointer';
4
- import Viewport from '../../Viewport';
5
- import { SelectionBoxChild } from './types';
6
- export declare enum HandleAction {
7
- ResizeXY = "resize-xy",
8
- Rotate = "rotate",
9
- ResizeX = "resize-x",
10
- ResizeY = "resize-y"
11
- }
12
- export interface HandlePresentation {
13
- side: Vec2;
14
- icon?: Element;
15
- action: HandleAction;
16
- }
17
- export declare const handleSize = 30;
18
- export type DragStartCallback = (startPoint: Point2) => void;
19
- export type DragUpdateCallback = (canvasPoint: Point2) => void;
20
- export type DragEndCallback = () => Promise<void> | void;
21
- export default class SelectionHandle implements SelectionBoxChild {
22
- readonly presentation: HandlePresentation;
23
- private readonly parent;
24
- private readonly viewport;
25
- private readonly onDragStart;
26
- private readonly onDragUpdate;
27
- private readonly onDragEnd;
28
- private element;
29
- private snapToGrid;
30
- private shape;
31
- private parentSide;
32
- constructor(presentation: HandlePresentation, parent: Selection, viewport: Viewport, onDragStart: DragStartCallback, onDragUpdate: DragUpdateCallback, onDragEnd: DragEndCallback);
33
- /**
34
- * Adds this to `container`, where `conatiner` should be the background/selection
35
- * element visible on the screen.
36
- */
37
- addTo(container: HTMLElement): void;
38
- /**
39
- * Removes this element from its container. Should only be called
40
- * after {@link addTo}.
41
- */
42
- remove(): void;
43
- /**
44
- * Returns this handle's bounding box relative to the top left of the
45
- * selection box.
46
- */
47
- private getBBoxParentCoords;
48
- /** @returns this handle's bounding box relative to the canvas. */
49
- private getBBoxCanvasCoords;
50
- /**
51
- * Moves the HTML representation of this to the location matching its internal representation.
52
- */
53
- updatePosition(): void;
54
- /** @returns true iff `point` (in editor **canvas** coordinates) is in this. */
55
- containsPoint(point: Point2): boolean;
56
- private dragLastPos;
57
- handleDragStart(pointer: Pointer): boolean;
58
- handleDragUpdate(pointer: Pointer): void;
59
- handleDragEnd(): void | Promise<void>;
60
- setSnapToGrid(snap: boolean): void;
61
- isSnappingToGrid(): boolean;
62
- }
@@ -1,141 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleSize = exports.HandleAction = void 0;
4
- const assertions_1 = require("../../util/assertions");
5
- const math_1 = require("@js-draw/math");
6
- const SelectionTool_1 = require("./SelectionTool");
7
- var HandleShape;
8
- (function (HandleShape) {
9
- HandleShape[HandleShape["Circle"] = 0] = "Circle";
10
- HandleShape[HandleShape["Square"] = 1] = "Square";
11
- })(HandleShape || (HandleShape = {}));
12
- var HandleAction;
13
- (function (HandleAction) {
14
- HandleAction["ResizeXY"] = "resize-xy";
15
- HandleAction["Rotate"] = "rotate";
16
- HandleAction["ResizeX"] = "resize-x";
17
- HandleAction["ResizeY"] = "resize-y";
18
- })(HandleAction || (exports.HandleAction = HandleAction = {}));
19
- // The *interactable* handle size. The visual size will be slightly smaller.
20
- exports.handleSize = 30;
21
- class SelectionHandle {
22
- constructor(presentation, parent, viewport, onDragStart, onDragUpdate, onDragEnd) {
23
- this.presentation = presentation;
24
- this.parent = parent;
25
- this.viewport = viewport;
26
- this.onDragStart = onDragStart;
27
- this.onDragUpdate = onDragUpdate;
28
- this.onDragEnd = onDragEnd;
29
- this.dragLastPos = null;
30
- this.element = document.createElement('div');
31
- this.element.classList.add(`${SelectionTool_1.cssPrefix}handle`, `${SelectionTool_1.cssPrefix}${presentation.action}`);
32
- // Create a slightly smaller content/background element.
33
- const visibleContent = document.createElement('div');
34
- visibleContent.classList.add(`${SelectionTool_1.cssPrefix}content`);
35
- this.element.appendChild(visibleContent);
36
- this.parentSide = presentation.side;
37
- const icon = presentation.icon;
38
- if (icon) {
39
- visibleContent.appendChild(icon);
40
- icon.classList.add('icon');
41
- }
42
- if (presentation.action === HandleAction.Rotate) {
43
- this.shape = HandleShape.Circle;
44
- }
45
- else {
46
- this.shape = HandleShape.Square;
47
- }
48
- switch (this.shape) {
49
- case HandleShape.Circle:
50
- this.element.classList.add(`${SelectionTool_1.cssPrefix}circle`);
51
- break;
52
- case HandleShape.Square:
53
- this.element.classList.add(`${SelectionTool_1.cssPrefix}square`);
54
- break;
55
- default:
56
- (0, assertions_1.assertUnreachable)(this.shape);
57
- }
58
- this.updatePosition();
59
- }
60
- /**
61
- * Adds this to `container`, where `conatiner` should be the background/selection
62
- * element visible on the screen.
63
- */
64
- addTo(container) {
65
- container.appendChild(this.element);
66
- }
67
- /**
68
- * Removes this element from its container. Should only be called
69
- * after {@link addTo}.
70
- */
71
- remove() { this.element.remove(); }
72
- /**
73
- * Returns this handle's bounding box relative to the top left of the
74
- * selection box.
75
- */
76
- getBBoxParentCoords() {
77
- const parentRect = this.parent.getScreenRegion();
78
- const size = math_1.Vec2.of(exports.handleSize, exports.handleSize);
79
- const topLeft = parentRect.size.scale(this.parentSide)
80
- // Center
81
- .minus(size.times(1 / 2));
82
- return new math_1.Rect2(topLeft.x, topLeft.y, size.x, size.y);
83
- }
84
- /** @returns this handle's bounding box relative to the canvas. */
85
- getBBoxCanvasCoords() {
86
- const parentRect = this.parent.region;
87
- const size = math_1.Vec2.of(exports.handleSize, exports.handleSize).times(1 / this.viewport.getScaleFactor());
88
- const topLeftFromParent = parentRect.size.scale(this.parentSide).minus(size.times(0.5));
89
- return new math_1.Rect2(topLeftFromParent.x, topLeftFromParent.y, size.x, size.y).translatedBy(parentRect.topLeft);
90
- }
91
- /**
92
- * Moves the HTML representation of this to the location matching its internal representation.
93
- */
94
- updatePosition() {
95
- const bbox = this.getBBoxParentCoords();
96
- // Position within the selection box.
97
- this.element.style.marginLeft = `${bbox.topLeft.x}px`;
98
- this.element.style.marginTop = `${bbox.topLeft.y}px`;
99
- this.element.style.width = `${bbox.w}px`;
100
- this.element.style.height = `${bbox.h}px`;
101
- }
102
- /** @returns true iff `point` (in editor **canvas** coordinates) is in this. */
103
- containsPoint(point) {
104
- const bbox = this.getBBoxCanvasCoords();
105
- const delta = point.minus(bbox.center);
106
- // Should have same x and y radius
107
- const radius = bbox.size.x / 2;
108
- let result;
109
- if (this.shape === HandleShape.Circle) {
110
- result = delta.magnitude() <= radius;
111
- }
112
- else {
113
- result = Math.abs(delta.x) <= radius && Math.abs(delta.y) <= radius;
114
- }
115
- return result;
116
- }
117
- handleDragStart(pointer) {
118
- this.onDragStart(pointer.canvasPos);
119
- this.dragLastPos = pointer.canvasPos;
120
- return true;
121
- }
122
- handleDragUpdate(pointer) {
123
- if (!this.dragLastPos) {
124
- return;
125
- }
126
- this.onDragUpdate(pointer.canvasPos);
127
- }
128
- handleDragEnd() {
129
- if (!this.dragLastPos) {
130
- return;
131
- }
132
- return this.onDragEnd();
133
- }
134
- setSnapToGrid(snap) {
135
- this.snapToGrid = snap;
136
- }
137
- isSnappingToGrid() {
138
- return this.snapToGrid;
139
- }
140
- }
141
- exports.default = SelectionHandle;
@@ -1,40 +0,0 @@
1
- import AbstractComponent from '../../components/AbstractComponent';
2
- import Editor from '../../Editor';
3
- import { CopyEvent, KeyPressEvent, KeyUpEvent, PointerEvt } from '../../inputEvents';
4
- import BaseTool from '../BaseTool';
5
- import Selection from './Selection';
6
- export declare const cssPrefix = "selection-tool-";
7
- export default class SelectionTool extends BaseTool {
8
- private editor;
9
- private handleOverlay;
10
- private prevSelectionBox;
11
- private selectionBox;
12
- private startPoint;
13
- private expandingSelectionBox;
14
- private shiftKeyPressed;
15
- private snapToGrid;
16
- private lastPointer;
17
- private autoscroller;
18
- constructor(editor: Editor, description: string);
19
- private makeSelectionBox;
20
- private snapSelectionToGrid;
21
- private selectionBoxHandlingEvt;
22
- onPointerDown({ allPointers, current }: PointerEvt): boolean;
23
- onPointerMove(event: PointerEvt): void;
24
- private onMainPointerUpdated;
25
- onPointerUp(event: PointerEvt): void;
26
- onGestureCancel(): void;
27
- private lastSelectedObjects;
28
- private onSelectionUpdated;
29
- private zoomToSelection;
30
- private static handleableKeys;
31
- private hasUnfinalizedTransformFromKeyPress;
32
- onKeyPress(event: KeyPressEvent): boolean;
33
- onKeyUp(evt: KeyUpEvent): boolean;
34
- onCopy(event: CopyEvent): boolean;
35
- setEnabled(enabled: boolean): void;
36
- getSelection(): Selection | null;
37
- getSelectedObjects(): AbstractComponent[];
38
- setSelection(objects: AbstractComponent[]): void;
39
- clearSelection(): void;
40
- }