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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "js-draw",
3
- "version": "1.20.3",
3
+ "version": "1.21.1",
4
4
  "description": "Draw pictures using a pen, touchscreen, or mouse! JS-draw is a drawing library for JavaScript and TypeScript. ",
5
5
  "types": "./dist/mjs/lib.d.ts",
6
6
  "main": "./dist/cjs/lib.js",
@@ -54,22 +54,21 @@
54
54
  },
55
55
  "author": "Henry Heino",
56
56
  "license": "MIT",
57
- "private": false,
58
57
  "scripts": {
59
- "dist-test": "cd dist-test/test_imports && npm install && npm run test",
60
- "dist": "npm run build && npm run dist-test",
61
- "build": "rm -rf ./dist/* && build-tool build",
58
+ "dist-test": "cd dist-test/test_imports && yarn install && yarn run test",
59
+ "dist": "yarn run build && yarn run dist-test",
60
+ "build": "build-tool build",
62
61
  "watch": "build-tool watch",
63
62
  "build-translation-templates": "build-tool build-translation-templates",
64
- "prepack": "npm run dist && cd ../../ && npm run test && cd packages/js-draw && ts-node tools/copyREADME.ts copy",
63
+ "prepack": "yarn run dist && cd ../../ && yarn run test && cd packages/js-draw && ts-node tools/copyREADME.ts copy",
65
64
  "postpack": "ts-node tools/copyREADME.ts revert"
66
65
  },
67
66
  "dependencies": {
68
- "@js-draw/math": "^1.19.0",
67
+ "@js-draw/math": "^1.21.1",
69
68
  "@melloware/coloris": "0.22.0"
70
69
  },
71
70
  "devDependencies": {
72
- "@js-draw/build-tool": "^1.19.0",
71
+ "@js-draw/build-tool": "^1.21.1",
73
72
  "@types/jest": "29.5.5",
74
73
  "@types/jsdom": "21.1.3"
75
74
  },
@@ -87,5 +86,5 @@
87
86
  "freehand",
88
87
  "svg"
89
88
  ],
90
- "gitHead": "43382107b39bc9c7c0cf16e83d8b0e2bb82af615"
89
+ "gitHead": "a46f0e1c3586e4b3019152eea87cd2784b00282f"
91
90
  }
@@ -1,27 +1,9 @@
1
1
 
2
2
  @use './makeAboutDialog.scss';
3
+ @use './makeMessageDialog.scss';
3
4
 
4
- // Repeat to increase specificity -- dialog containers are often overlays
5
- .dialog-container.dialog-container {
6
- background-color: var( --background-color-transparent);
7
-
8
- backdrop-filter: blur(5px);
9
- -webkit-backdrop-filter: blur(5px);
10
-
11
- // Show above other items
12
- position: absolute;
13
- z-index: 3;
14
-
15
- // Fill the editor
16
- width: var(--editor-current-width-px);
17
- height: var(--editor-current-height-px);
18
-
19
- display: flex;
20
- flex-direction: column-reverse;
21
- align-items: center;
22
- justify-content: center;
23
-
24
- dialog {
5
+ .dialog-container {
6
+ > dialog {
25
7
  background-color: var(--background-color-1);
26
8
  color: var(--foreground-color-1);
27
9
  border: none;
@@ -33,5 +15,11 @@
33
15
  max-height: 90vh;
34
16
  width: min(100%, 500px);
35
17
  box-sizing: border-box;
18
+
19
+ &::backdrop {
20
+ backdrop-filter: blur(5px);
21
+ -webkit-backdrop-filter: blur(5px);
22
+ background-color: var( --background-color-transparent);
23
+ }
36
24
  }
37
25
  }
@@ -1,41 +1,21 @@
1
1
 
2
- .about-dialog-container dialog {
3
- display: flex;
4
- flex-direction: column;
2
+ .about-dialog-content > .scroll {
3
+ white-space: pre-wrap;
4
+ font-family: monospace;
5
5
 
6
- .close-button {
7
- // Center the close button
8
- display: block;
9
- margin-left: auto;
10
- margin-right: auto;
6
+ & > details > summary {
7
+ cursor: pointer;
11
8
  }
12
9
 
13
- .about-entry-container {
14
- flex-grow: 1;
15
- flex-shrink: 1;
16
- overflow-y: auto;
10
+ & > h2, & > details > summary {
11
+ margin-top: 15px;
17
12
 
18
- margin-left: 20px;
19
- margin-right: 20px;
13
+ font-size: 1.2em;
14
+ font-weight: bold;
20
15
 
21
- padding-bottom: 20px;
22
-
23
- white-space: pre-wrap;
24
- font-family: monospace;
25
-
26
- & > h2, & > details > summary {
27
- cursor: pointer;
28
- margin-top: 15px;
29
-
30
- font-size: 1.2em;
31
- font-weight: bold;
32
-
33
- a {
34
- color: var(--foreground-color-1);
35
- text-decoration: underline;
36
- }
16
+ a {
17
+ color: var(--foreground-color-1);
18
+ text-decoration: underline;
37
19
  }
38
20
  }
39
-
40
-
41
- }
21
+ }
@@ -0,0 +1,46 @@
1
+
2
+ @keyframes fade-in {
3
+ from { opacity: 0; }
4
+ to { opacity: 1; }
5
+ }
6
+
7
+ .message-dialog-container dialog {
8
+ display: flex;
9
+
10
+ &.-closing {
11
+ opacity: 0;
12
+
13
+ &::backdrop {
14
+ opacity: 0;
15
+ }
16
+ }
17
+
18
+ &, &::backdrop {
19
+ transition: opacity 0.2s ease;
20
+ animation: fade-in 0.2s ease;
21
+ }
22
+ }
23
+
24
+ .message-dialog-content {
25
+ display: flex;
26
+ flex-direction: column;
27
+ flex-grow: 1;
28
+
29
+ > .close {
30
+ // Center the close button
31
+ display: block;
32
+ margin-left: auto;
33
+ margin-right: auto;
34
+ }
35
+
36
+ > .scroll {
37
+ flex-grow: 1;
38
+ flex-shrink: 1;
39
+ overflow-y: auto;
40
+
41
+ margin-left: 20px;
42
+ margin-right: 20px;
43
+
44
+ padding-bottom: 20px;
45
+ }
46
+ }
@@ -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
- }
@@ -1,174 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
- var _BaseTool_enabled, _BaseTool_group, _BaseTool_inputMapper, _BaseTool_readOnlyEditorChangeListener;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const types_1 = require("../types");
16
- const inputEvents_1 = require("../inputEvents");
17
- const ReactiveValue_1 = require("../util/ReactiveValue");
18
- class BaseTool {
19
- constructor(notifier, description) {
20
- this.notifier = notifier;
21
- this.description = description;
22
- _BaseTool_enabled.set(this, void 0);
23
- _BaseTool_group.set(this, null);
24
- _BaseTool_inputMapper.set(this, null);
25
- _BaseTool_readOnlyEditorChangeListener.set(this, null);
26
- __classPrivateFieldSet(this, _BaseTool_enabled, ReactiveValue_1.ReactiveValue.fromInitialValue(true), "f");
27
- __classPrivateFieldGet(this, _BaseTool_enabled, "f").onUpdate(enabled => {
28
- // Ensure that at most one tool in the group is enabled.
29
- if (enabled) {
30
- __classPrivateFieldGet(this, _BaseTool_group, "f")?.notifyEnabled(this);
31
- this.notifier.dispatch(types_1.EditorEventType.ToolEnabled, {
32
- kind: types_1.EditorEventType.ToolEnabled,
33
- tool: this,
34
- });
35
- }
36
- else {
37
- this.notifier.dispatch(types_1.EditorEventType.ToolDisabled, {
38
- kind: types_1.EditorEventType.ToolDisabled,
39
- tool: this,
40
- });
41
- }
42
- });
43
- }
44
- /** Override this to allow this tool to be enabled in a read-only editor */
45
- canReceiveInputInReadOnlyEditor() {
46
- return false;
47
- }
48
- setInputMapper(mapper) {
49
- __classPrivateFieldSet(this, _BaseTool_inputMapper, mapper, "f");
50
- if (mapper) {
51
- mapper.setEmitListener(event => this.dispatchEventToCallback(event));
52
- }
53
- }
54
- getInputMapper() {
55
- return __classPrivateFieldGet(this, _BaseTool_inputMapper, "f");
56
- }
57
- dispatchEventToCallback(event) {
58
- let exhaustivenessCheck;
59
- switch (event.kind) {
60
- case inputEvents_1.InputEvtType.PointerDownEvt:
61
- return this.onPointerDown(event);
62
- case inputEvents_1.InputEvtType.PointerMoveEvt:
63
- this.onPointerMove(event);
64
- break;
65
- case inputEvents_1.InputEvtType.PointerUpEvt:
66
- return this.onPointerUp(event) ?? false;
67
- case inputEvents_1.InputEvtType.GestureCancelEvt:
68
- this.onGestureCancel(event);
69
- break;
70
- case inputEvents_1.InputEvtType.WheelEvt:
71
- return this.onWheel(event);
72
- case inputEvents_1.InputEvtType.KeyPressEvent:
73
- return this.onKeyPress(event);
74
- case inputEvents_1.InputEvtType.KeyUpEvent:
75
- return this.onKeyUp(event);
76
- case inputEvents_1.InputEvtType.CopyEvent:
77
- return this.onCopy(event);
78
- case inputEvents_1.InputEvtType.PasteEvent:
79
- return this.onPaste(event);
80
- default:
81
- exhaustivenessCheck = event;
82
- return exhaustivenessCheck;
83
- }
84
- return true;
85
- }
86
- // @internal
87
- onEvent(event) {
88
- if (__classPrivateFieldGet(this, _BaseTool_inputMapper, "f")) {
89
- return __classPrivateFieldGet(this, _BaseTool_inputMapper, "f").onEvent(event);
90
- }
91
- return this.dispatchEventToCallback(event);
92
- }
93
- /**
94
- * Returns true iff the tool handled the event and thus should receive additional
95
- * events.
96
- */
97
- onPointerDown(_event) { return false; }
98
- onPointerMove(_event) { }
99
- /**
100
- * Returns true iff there are additional pointers down and the tool should
101
- * remain active to handle the additional events.
102
- *
103
- * For most purposes, this should return `false` or nothing.
104
- */
105
- onPointerUp(_event) { }
106
- onGestureCancel(_event) { }
107
- onWheel(_event) {
108
- return false;
109
- }
110
- onCopy(_event) {
111
- return false;
112
- }
113
- onPaste(_event) {
114
- return false;
115
- }
116
- onKeyPress(_event) {
117
- return false;
118
- }
119
- onKeyUp(_event) {
120
- return false;
121
- }
122
- /**
123
- * Return true if, while this tool is active, `_event` can be delivered to
124
- * another tool that is higher priority than this.
125
- * @internal May be renamed
126
- */
127
- eventCanBeDeliveredToNonActiveTool(_event) {
128
- return true;
129
- }
130
- setEnabled(enabled) {
131
- __classPrivateFieldGet(this, _BaseTool_enabled, "f").set(enabled);
132
- }
133
- isEnabled() {
134
- return __classPrivateFieldGet(this, _BaseTool_enabled, "f").get();
135
- }
136
- /**
137
- * Returns a {@link ReactiveValue} that updates based on whether this tool is
138
- * enabled.
139
- *
140
- * @example
141
- * ```ts
142
- * const tool = new SomeTool();
143
- *
144
- * // Watch for changes in enabled status
145
- * tool.enabledValue().onUpdate(enabled => doSomething(enabled));
146
- * ```
147
- */
148
- enabledValue() {
149
- return __classPrivateFieldGet(this, _BaseTool_enabled, "f");
150
- }
151
- // Connect this tool to a set of other tools, ensuring that at most one
152
- // of the tools in the group is enabled.
153
- setToolGroup(group) {
154
- if (this.isEnabled()) {
155
- group.notifyEnabled(this);
156
- }
157
- __classPrivateFieldSet(this, _BaseTool_group, group, "f");
158
- }
159
- getToolGroup() {
160
- if (__classPrivateFieldGet(this, _BaseTool_group, "f")) {
161
- return __classPrivateFieldGet(this, _BaseTool_group, "f");
162
- }
163
- return null;
164
- }
165
- // Called when the tool is removed/when the editor is destroyed.
166
- // Subclasses that override this method **must call super.onDestroy()**.
167
- onDestroy() {
168
- __classPrivateFieldGet(this, _BaseTool_readOnlyEditorChangeListener, "f")?.remove();
169
- __classPrivateFieldSet(this, _BaseTool_readOnlyEditorChangeListener, null, "f");
170
- __classPrivateFieldSet(this, _BaseTool_group, null, "f");
171
- }
172
- }
173
- _BaseTool_enabled = new WeakMap(), _BaseTool_group = new WeakMap(), _BaseTool_inputMapper = new WeakMap(), _BaseTool_readOnlyEditorChangeListener = new WeakMap();
174
- exports.default = BaseTool;
@@ -1,56 +0,0 @@
1
- import { GestureCancelEvt, KeyPressEvent, PointerEvt } from '../inputEvents';
2
- import BaseTool from './BaseTool';
3
- import Editor from '../Editor';
4
- import { MutableReactiveValue } from '../util/ReactiveValue';
5
- export declare enum EraserMode {
6
- PartialStroke = "partial-stroke",
7
- FullStroke = "full-stroke"
8
- }
9
- export interface InitialEraserOptions {
10
- thickness?: number;
11
- mode?: EraserMode;
12
- }
13
- export default class Eraser extends BaseTool {
14
- private editor;
15
- private lastPoint;
16
- private isFirstEraseEvt;
17
- private thickness;
18
- private thicknessValue;
19
- private modeValue;
20
- private toRemove;
21
- private toAdd;
22
- private eraseCommands;
23
- private addCommands;
24
- constructor(editor: Editor, description: string, options?: InitialEraserOptions);
25
- /**
26
- * @returns a tool that briefly enables the eraser when a physical eraser is used.
27
- * This tool should be added to the tool list after the primary tools.
28
- */
29
- makeEraserSwitcherTool(): BaseTool;
30
- private clearPreview;
31
- private getSizeOnCanvas;
32
- private drawPreviewAt;
33
- /**
34
- * @returns the eraser rectangle in canvas coordinates.
35
- *
36
- * For now, all erasers are rectangles or points.
37
- */
38
- private getEraserRect;
39
- /** Erases in a line from the last point to the current. */
40
- private eraseTo;
41
- onPointerDown(event: PointerEvt): boolean;
42
- onPointerMove(event: PointerEvt): void;
43
- onPointerUp(event: PointerEvt): void;
44
- onGestureCancel(_event: GestureCancelEvt): void;
45
- onKeyPress(event: KeyPressEvent): boolean;
46
- /** Returns the side-length of the tip of this eraser. */
47
- getThickness(): number;
48
- /** Sets the side-length of this' tip. */
49
- setThickness(thickness: number): void;
50
- /**
51
- * Returns a {@link MutableReactiveValue} that can be used to watch
52
- * this tool's thickness.
53
- */
54
- getThicknessValue(): MutableReactiveValue<number>;
55
- getModeValue(): MutableReactiveValue<EraserMode>;
56
- }