js-draw 0.25.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/README.md +80 -26
  2. package/build-config.json +22 -21
  3. package/dist/Editor.css +1281 -0
  4. package/dist/bundle.js +3 -3
  5. package/dist/bundledStyles.js +1 -1
  6. package/dist/cjs/Editor.d.ts +91 -12
  7. package/dist/cjs/Editor.js +619 -590
  8. package/dist/cjs/EditorImage.d.ts +5 -2
  9. package/dist/cjs/EditorImage.js +258 -297
  10. package/dist/cjs/EventDispatcher.js +17 -19
  11. package/dist/cjs/Pointer.d.ts +3 -1
  12. package/dist/cjs/Pointer.js +41 -44
  13. package/dist/cjs/SVGLoader.d.ts +7 -1
  14. package/dist/cjs/SVGLoader.js +373 -474
  15. package/dist/cjs/UndoRedoHistory.js +28 -40
  16. package/dist/cjs/Viewport.d.ts +1 -4
  17. package/dist/cjs/Viewport.js +150 -193
  18. package/dist/cjs/bundle/bundled.js +4 -1
  19. package/dist/cjs/commands/Command.js +22 -49
  20. package/dist/cjs/commands/Duplicate.js +28 -44
  21. package/dist/cjs/commands/Erase.js +36 -54
  22. package/dist/cjs/commands/SerializableCommand.js +20 -35
  23. package/dist/cjs/commands/UnresolvedCommand.js +14 -29
  24. package/dist/cjs/commands/invertCommand.js +29 -51
  25. package/dist/cjs/commands/lib.js +9 -6
  26. package/dist/cjs/commands/localization.d.ts +1 -1
  27. package/dist/cjs/commands/localization.js +9 -9
  28. package/dist/cjs/commands/uniteCommands.js +57 -87
  29. package/dist/cjs/components/AbstractComponent.d.ts +11 -3
  30. package/dist/cjs/components/AbstractComponent.js +141 -169
  31. package/dist/cjs/components/BackgroundComponent.d.ts +3 -6
  32. package/dist/cjs/components/BackgroundComponent.js +124 -149
  33. package/dist/cjs/components/ImageComponent.d.ts +3 -5
  34. package/dist/cjs/components/ImageComponent.js +95 -175
  35. package/dist/cjs/components/RestylableComponent.d.ts +1 -1
  36. package/dist/cjs/components/RestylableComponent.js +41 -56
  37. package/dist/cjs/components/SVGGlobalAttributesObject.d.ts +1 -3
  38. package/dist/cjs/components/SVGGlobalAttributesObject.js +34 -51
  39. package/dist/cjs/components/Stroke.d.ts +4 -6
  40. package/dist/cjs/components/Stroke.js +95 -121
  41. package/dist/cjs/components/TextComponent.d.ts +2 -4
  42. package/dist/cjs/components/TextComponent.js +189 -234
  43. package/dist/cjs/components/UnknownSVGObject.d.ts +1 -3
  44. package/dist/cjs/components/UnknownSVGObject.js +30 -43
  45. package/dist/cjs/components/builders/ArrowBuilder.d.ts +1 -1
  46. package/dist/cjs/components/builders/ArrowBuilder.js +43 -42
  47. package/dist/cjs/components/builders/CircleBuilder.js +43 -43
  48. package/dist/cjs/components/builders/FreehandLineBuilder.d.ts +3 -2
  49. package/dist/cjs/components/builders/FreehandLineBuilder.js +73 -86
  50. package/dist/cjs/components/builders/LineBuilder.d.ts +1 -1
  51. package/dist/cjs/components/builders/LineBuilder.js +38 -36
  52. package/dist/cjs/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +1 -1
  53. package/dist/cjs/components/builders/PressureSensitiveFreehandLineBuilder.js +131 -139
  54. package/dist/cjs/components/builders/RectangleBuilder.d.ts +1 -1
  55. package/dist/cjs/components/builders/RectangleBuilder.js +31 -31
  56. package/dist/cjs/components/builders/types.d.ts +1 -1
  57. package/dist/cjs/components/lib.d.ts +3 -1
  58. package/dist/cjs/components/lib.js +10 -7
  59. package/dist/cjs/components/localization.js +4 -4
  60. package/dist/cjs/components/util/StrokeSmoother.d.ts +1 -2
  61. package/dist/cjs/components/util/StrokeSmoother.js +67 -72
  62. package/dist/cjs/components/util/describeComponentList.d.ts +1 -1
  63. package/dist/cjs/components/util/describeComponentList.js +4 -5
  64. package/dist/cjs/dialogs/makeAboutDialog.d.ts +15 -0
  65. package/dist/cjs/dialogs/makeAboutDialog.js +54 -0
  66. package/dist/cjs/inputEvents.d.ts +84 -0
  67. package/dist/cjs/inputEvents.js +40 -0
  68. package/dist/cjs/lib.d.ts +29 -13
  69. package/dist/cjs/lib.js +38 -23
  70. package/dist/cjs/localization.js +19 -18
  71. package/dist/cjs/localizations/de.js +117 -13
  72. package/dist/cjs/localizations/en.js +4 -13
  73. package/dist/cjs/localizations/es.js +62 -23
  74. package/dist/cjs/localizations/getLocalizationTable.js +15 -13
  75. package/dist/cjs/rendering/Display.d.ts +1 -2
  76. package/dist/cjs/rendering/Display.js +70 -83
  77. package/dist/cjs/rendering/RenderablePathSpec.d.ts +15 -0
  78. package/dist/cjs/rendering/RenderablePathSpec.js +70 -0
  79. package/dist/cjs/rendering/RenderingStyle.d.ts +4 -4
  80. package/dist/cjs/rendering/RenderingStyle.js +18 -28
  81. package/dist/cjs/rendering/TextRenderingStyle.d.ts +10 -10
  82. package/dist/cjs/rendering/TextRenderingStyle.js +13 -18
  83. package/dist/cjs/rendering/caching/CacheRecord.d.ts +1 -2
  84. package/dist/cjs/rendering/caching/CacheRecord.js +20 -22
  85. package/dist/cjs/rendering/caching/CacheRecordManager.d.ts +1 -1
  86. package/dist/cjs/rendering/caching/CacheRecordManager.js +17 -15
  87. package/dist/cjs/rendering/caching/RenderingCache.js +19 -19
  88. package/dist/cjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
  89. package/dist/cjs/rendering/caching/RenderingCacheNode.js +98 -118
  90. package/dist/cjs/rendering/caching/testUtils.js +24 -23
  91. package/dist/cjs/rendering/caching/types.d.ts +3 -3
  92. package/dist/cjs/rendering/lib.js +8 -5
  93. package/dist/cjs/rendering/localization.js +5 -5
  94. package/dist/cjs/rendering/renderers/AbstractRenderer.d.ts +2 -11
  95. package/dist/cjs/rendering/renderers/AbstractRenderer.js +53 -57
  96. package/dist/cjs/rendering/renderers/CanvasRenderer.d.ts +3 -5
  97. package/dist/cjs/rendering/renderers/CanvasRenderer.js +91 -106
  98. package/dist/cjs/rendering/renderers/DummyRenderer.d.ts +1 -4
  99. package/dist/cjs/rendering/renderers/DummyRenderer.js +56 -76
  100. package/dist/cjs/rendering/renderers/SVGRenderer.d.ts +5 -5
  101. package/dist/cjs/rendering/renderers/SVGRenderer.js +194 -176
  102. package/dist/cjs/rendering/renderers/TextOnlyRenderer.d.ts +1 -3
  103. package/dist/cjs/rendering/renderers/TextOnlyRenderer.js +47 -72
  104. package/dist/cjs/shortcuts/KeyBinding.d.ts +5 -0
  105. package/dist/cjs/shortcuts/KeyBinding.js +94 -70
  106. package/dist/cjs/shortcuts/KeyboardShortcutManager.d.ts +1 -1
  107. package/dist/cjs/shortcuts/KeyboardShortcutManager.js +36 -45
  108. package/dist/cjs/shortcuts/lib.js +5 -2
  109. package/dist/cjs/testing/createEditor.js +7 -4
  110. package/dist/cjs/testing/getUniquePointerId.js +4 -5
  111. package/dist/cjs/testing/lib.js +5 -2
  112. package/dist/cjs/testing/sendPenEvent.d.ts +2 -2
  113. package/dist/cjs/testing/sendPenEvent.js +10 -7
  114. package/dist/cjs/testing/sendTouchEvent.d.ts +2 -2
  115. package/dist/cjs/testing/sendTouchEvent.js +34 -16
  116. package/dist/cjs/toolbar/AbstractToolbar.d.ts +166 -0
  117. package/dist/cjs/toolbar/AbstractToolbar.js +410 -0
  118. package/dist/cjs/toolbar/DropdownToolbar.d.ts +43 -0
  119. package/dist/cjs/toolbar/DropdownToolbar.js +176 -0
  120. package/dist/cjs/toolbar/EdgeToolbar.d.ts +47 -0
  121. package/dist/cjs/toolbar/EdgeToolbar.js +422 -0
  122. package/dist/cjs/toolbar/IconProvider.d.ts +54 -30
  123. package/dist/cjs/toolbar/IconProvider.js +652 -224
  124. package/dist/cjs/toolbar/constants.d.ts +1 -0
  125. package/dist/cjs/toolbar/constants.js +4 -0
  126. package/dist/cjs/toolbar/lib.d.ts +4 -2
  127. package/dist/cjs/toolbar/lib.js +10 -3
  128. package/dist/cjs/toolbar/localization.d.ts +9 -2
  129. package/dist/cjs/toolbar/localization.js +26 -19
  130. package/dist/cjs/toolbar/types.d.ts +7 -0
  131. package/dist/cjs/toolbar/widgets/ActionButtonWidget.d.ts +1 -1
  132. package/dist/cjs/toolbar/widgets/ActionButtonWidget.js +23 -39
  133. package/dist/cjs/toolbar/widgets/BaseToolWidget.d.ts +1 -1
  134. package/dist/cjs/toolbar/widgets/BaseToolWidget.js +35 -37
  135. package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +60 -5
  136. package/dist/cjs/toolbar/widgets/BaseWidget.js +232 -177
  137. package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.js +130 -117
  138. package/dist/cjs/toolbar/widgets/EraserToolWidget.d.ts +1 -3
  139. package/dist/cjs/toolbar/widgets/EraserToolWidget.js +45 -73
  140. package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  141. package/dist/cjs/toolbar/widgets/HandToolWidget.js +126 -141
  142. package/dist/cjs/toolbar/widgets/InsertImageWidget.d.ts +9 -7
  143. package/dist/cjs/toolbar/widgets/InsertImageWidget.js +147 -212
  144. package/dist/cjs/toolbar/widgets/OverflowWidget.js +33 -61
  145. package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +8 -1
  146. package/dist/cjs/toolbar/widgets/PenToolWidget.js +162 -234
  147. package/dist/cjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
  148. package/dist/cjs/toolbar/widgets/SelectionToolWidget.js +105 -177
  149. package/dist/cjs/toolbar/widgets/TextToolWidget.js +64 -87
  150. package/dist/cjs/toolbar/widgets/components/makeColorInput.d.ts +10 -0
  151. package/dist/cjs/toolbar/{makeColorInput.js → widgets/components/makeColorInput.js} +57 -34
  152. package/dist/cjs/toolbar/widgets/components/makeFileInput.d.ts +12 -0
  153. package/dist/cjs/toolbar/widgets/components/makeFileInput.js +111 -0
  154. package/dist/cjs/toolbar/widgets/components/makeGridSelector.d.ts +24 -0
  155. package/dist/cjs/toolbar/widgets/components/makeGridSelector.js +127 -0
  156. package/dist/cjs/toolbar/widgets/components/makeSeparator.d.ts +7 -0
  157. package/dist/cjs/toolbar/widgets/components/makeSeparator.js +16 -0
  158. package/dist/cjs/toolbar/widgets/components/makeThicknessSlider.d.ts +8 -0
  159. package/dist/cjs/toolbar/widgets/components/makeThicknessSlider.js +47 -0
  160. package/dist/cjs/toolbar/widgets/keybindings.js +8 -5
  161. package/dist/cjs/toolbar/widgets/layout/DropdownLayoutManager.d.ts +21 -0
  162. package/dist/cjs/toolbar/widgets/layout/DropdownLayoutManager.js +199 -0
  163. package/dist/cjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.d.ts +14 -0
  164. package/dist/cjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.js +60 -0
  165. package/dist/cjs/toolbar/widgets/layout/types.d.ts +63 -0
  166. package/dist/cjs/toolbar/widgets/layout/types.js +2 -0
  167. package/dist/cjs/toolbar/widgets/lib.d.ts +1 -1
  168. package/dist/cjs/toolbar/widgets/lib.js +15 -11
  169. package/dist/cjs/tools/BaseTool.d.ts +28 -9
  170. package/dist/cjs/tools/BaseTool.js +128 -51
  171. package/dist/cjs/tools/Eraser.d.ts +8 -1
  172. package/dist/cjs/tools/Eraser.js +82 -92
  173. package/dist/cjs/tools/FindTool.d.ts +1 -1
  174. package/dist/cjs/tools/FindTool.js +61 -77
  175. package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
  176. package/dist/cjs/tools/InputFilter/FunctionMapper.js +21 -0
  177. package/dist/cjs/tools/InputFilter/InputMapper.d.ts +23 -0
  178. package/dist/cjs/tools/InputFilter/InputMapper.js +38 -0
  179. package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +15 -0
  180. package/dist/cjs/tools/InputFilter/InputPipeline.js +54 -0
  181. package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
  182. package/dist/cjs/tools/InputFilter/InputStabilizer.js +181 -0
  183. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
  184. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +84 -0
  185. package/dist/cjs/tools/PanZoom.d.ts +4 -2
  186. package/dist/cjs/tools/PanZoom.js +186 -248
  187. package/dist/cjs/tools/PasteHandler.d.ts +1 -1
  188. package/dist/cjs/tools/PasteHandler.js +49 -148
  189. package/dist/cjs/tools/Pen.d.ts +12 -11
  190. package/dist/cjs/tools/Pen.js +123 -158
  191. package/dist/cjs/tools/PipetteTool.d.ts +11 -2
  192. package/dist/cjs/tools/PipetteTool.js +51 -48
  193. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -1
  194. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +15 -30
  195. package/dist/cjs/tools/SelectionTool/Selection.d.ts +5 -5
  196. package/dist/cjs/tools/SelectionTool/Selection.js +308 -415
  197. package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +15 -5
  198. package/dist/cjs/tools/SelectionTool/SelectionHandle.js +63 -37
  199. package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +4 -4
  200. package/dist/cjs/tools/SelectionTool/SelectionTool.js +164 -187
  201. package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +1 -1
  202. package/dist/cjs/tools/SelectionTool/TransformMode.js +65 -66
  203. package/dist/cjs/tools/SoundUITool.d.ts +2 -1
  204. package/dist/cjs/tools/SoundUITool.js +70 -84
  205. package/dist/cjs/tools/TextTool.d.ts +5 -3
  206. package/dist/cjs/tools/TextTool.js +169 -173
  207. package/dist/cjs/tools/ToolController.d.ts +16 -2
  208. package/dist/cjs/tools/ToolController.js +124 -100
  209. package/dist/cjs/tools/ToolEnabledGroup.js +6 -9
  210. package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +1 -1
  211. package/dist/cjs/tools/ToolSwitcherShortcut.js +16 -32
  212. package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +1 -1
  213. package/dist/cjs/tools/ToolbarShortcutHandler.js +17 -33
  214. package/dist/cjs/tools/UndoRedoShortcut.d.ts +1 -1
  215. package/dist/cjs/tools/UndoRedoShortcut.js +12 -27
  216. package/dist/cjs/tools/keybindings.js +21 -18
  217. package/dist/cjs/tools/lib.js +17 -14
  218. package/dist/cjs/tools/localization.d.ts +2 -1
  219. package/dist/cjs/tools/localization.js +8 -7
  220. package/dist/cjs/types.d.ts +22 -80
  221. package/dist/cjs/types.js +8 -16
  222. package/dist/cjs/util/ReactiveValue.d.ts +65 -0
  223. package/dist/cjs/util/ReactiveValue.js +166 -0
  224. package/dist/cjs/util/assertions.js +5 -8
  225. package/dist/cjs/util/fileToBase64.js +6 -6
  226. package/dist/cjs/util/guessKeyCodeFromKey.d.ts +9 -0
  227. package/dist/cjs/util/guessKeyCodeFromKey.js +32 -0
  228. package/dist/cjs/util/listPrefixMatch.d.ts +6 -0
  229. package/dist/cjs/util/listPrefixMatch.js +17 -0
  230. package/dist/cjs/util/stopPropagationOfScrollingWheelEvents.d.ts +2 -0
  231. package/dist/cjs/util/stopPropagationOfScrollingWheelEvents.js +17 -0
  232. package/dist/cjs/util/untilNextAnimationFrame.js +3 -3
  233. package/dist/cjs/util/waitForAll.js +3 -3
  234. package/dist/cjs/util/waitForTimeout.js +3 -3
  235. package/dist/cjs/version.d.ts +4 -0
  236. package/dist/cjs/version.js +5 -0
  237. package/dist/mjs/Editor.d.ts +91 -12
  238. package/dist/mjs/Editor.mjs +565 -563
  239. package/dist/mjs/EditorImage.d.ts +5 -2
  240. package/dist/mjs/EditorImage.mjs +248 -291
  241. package/dist/mjs/EventDispatcher.mjs +17 -20
  242. package/dist/mjs/Pointer.d.ts +3 -1
  243. package/dist/mjs/Pointer.mjs +40 -44
  244. package/dist/mjs/SVGLoader.d.ts +7 -1
  245. package/dist/mjs/SVGLoader.mjs +338 -466
  246. package/dist/mjs/UndoRedoHistory.mjs +27 -39
  247. package/dist/mjs/Viewport.d.ts +1 -4
  248. package/dist/mjs/Viewport.mjs +139 -187
  249. package/dist/mjs/commands/Command.mjs +21 -49
  250. package/dist/mjs/commands/Duplicate.mjs +22 -41
  251. package/dist/mjs/commands/Erase.mjs +30 -51
  252. package/dist/mjs/commands/SerializableCommand.mjs +16 -34
  253. package/dist/mjs/commands/UnresolvedCommand.mjs +10 -29
  254. package/dist/mjs/commands/invertCommand.mjs +24 -49
  255. package/dist/mjs/commands/localization.d.ts +1 -1
  256. package/dist/mjs/commands/localization.mjs +10 -10
  257. package/dist/mjs/commands/uniteCommands.mjs +52 -85
  258. package/dist/mjs/components/AbstractComponent.d.ts +11 -3
  259. package/dist/mjs/components/AbstractComponent.mjs +135 -166
  260. package/dist/mjs/components/BackgroundComponent.d.ts +3 -6
  261. package/dist/mjs/components/BackgroundComponent.mjs +107 -136
  262. package/dist/mjs/components/ImageComponent.d.ts +3 -5
  263. package/dist/mjs/components/ImageComponent.mjs +90 -174
  264. package/dist/mjs/components/RestylableComponent.d.ts +1 -1
  265. package/dist/mjs/components/RestylableComponent.mjs +35 -53
  266. package/dist/mjs/components/SVGGlobalAttributesObject.d.ts +1 -3
  267. package/dist/mjs/components/SVGGlobalAttributesObject.mjs +29 -50
  268. package/dist/mjs/components/Stroke.d.ts +4 -6
  269. package/dist/mjs/components/Stroke.mjs +89 -119
  270. package/dist/mjs/components/TextComponent.d.ts +2 -4
  271. package/dist/mjs/components/TextComponent.mjs +180 -228
  272. package/dist/mjs/components/UnknownSVGObject.d.ts +1 -3
  273. package/dist/mjs/components/UnknownSVGObject.mjs +26 -43
  274. package/dist/mjs/components/builders/ArrowBuilder.d.ts +1 -1
  275. package/dist/mjs/components/builders/ArrowBuilder.mjs +32 -35
  276. package/dist/mjs/components/builders/CircleBuilder.mjs +35 -38
  277. package/dist/mjs/components/builders/FreehandLineBuilder.d.ts +3 -2
  278. package/dist/mjs/components/builders/FreehandLineBuilder.mjs +52 -69
  279. package/dist/mjs/components/builders/LineBuilder.d.ts +1 -1
  280. package/dist/mjs/components/builders/LineBuilder.mjs +30 -32
  281. package/dist/mjs/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +1 -1
  282. package/dist/mjs/components/builders/PressureSensitiveFreehandLineBuilder.mjs +103 -115
  283. package/dist/mjs/components/builders/RectangleBuilder.d.ts +1 -1
  284. package/dist/mjs/components/builders/RectangleBuilder.mjs +27 -31
  285. package/dist/mjs/components/builders/types.d.ts +1 -1
  286. package/dist/mjs/components/lib.d.ts +3 -1
  287. package/dist/mjs/components/lib.mjs +1 -1
  288. package/dist/mjs/components/localization.mjs +5 -5
  289. package/dist/mjs/components/util/StrokeSmoother.d.ts +1 -2
  290. package/dist/mjs/components/util/StrokeSmoother.mjs +63 -69
  291. package/dist/mjs/components/util/describeComponentList.d.ts +1 -1
  292. package/dist/mjs/components/util/describeComponentList.mjs +4 -5
  293. package/dist/mjs/dialogs/makeAboutDialog.d.ts +15 -0
  294. package/dist/mjs/dialogs/makeAboutDialog.mjs +52 -0
  295. package/dist/mjs/inputEvents.d.ts +84 -0
  296. package/dist/mjs/inputEvents.mjs +34 -0
  297. package/dist/mjs/lib.d.ts +29 -13
  298. package/dist/mjs/lib.mjs +30 -13
  299. package/dist/mjs/localization.mjs +14 -13
  300. package/dist/mjs/localizations/de.mjs +116 -12
  301. package/dist/mjs/localizations/en.mjs +3 -12
  302. package/dist/mjs/localizations/es.mjs +61 -22
  303. package/dist/mjs/localizations/getLocalizationTable.mjs +12 -13
  304. package/dist/mjs/rendering/Display.d.ts +1 -2
  305. package/dist/mjs/rendering/Display.mjs +62 -79
  306. package/dist/mjs/rendering/RenderablePathSpec.d.ts +15 -0
  307. package/dist/mjs/rendering/RenderablePathSpec.mjs +64 -0
  308. package/dist/mjs/rendering/RenderingStyle.d.ts +4 -4
  309. package/dist/mjs/rendering/RenderingStyle.mjs +16 -26
  310. package/dist/mjs/rendering/TextRenderingStyle.d.ts +10 -10
  311. package/dist/mjs/rendering/TextRenderingStyle.mjs +12 -17
  312. package/dist/mjs/rendering/caching/CacheRecord.d.ts +1 -2
  313. package/dist/mjs/rendering/caching/CacheRecord.mjs +20 -23
  314. package/dist/mjs/rendering/caching/CacheRecordManager.d.ts +1 -1
  315. package/dist/mjs/rendering/caching/CacheRecordManager.mjs +13 -15
  316. package/dist/mjs/rendering/caching/RenderingCache.mjs +13 -17
  317. package/dist/mjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
  318. package/dist/mjs/rendering/caching/RenderingCacheNode.mjs +94 -115
  319. package/dist/mjs/rendering/caching/testUtils.mjs +19 -21
  320. package/dist/mjs/rendering/caching/types.d.ts +3 -3
  321. package/dist/mjs/rendering/localization.mjs +6 -6
  322. package/dist/mjs/rendering/renderers/AbstractRenderer.d.ts +2 -11
  323. package/dist/mjs/rendering/renderers/AbstractRenderer.mjs +47 -52
  324. package/dist/mjs/rendering/renderers/CanvasRenderer.d.ts +3 -5
  325. package/dist/mjs/rendering/renderers/CanvasRenderer.mjs +84 -103
  326. package/dist/mjs/rendering/renderers/DummyRenderer.d.ts +1 -4
  327. package/dist/mjs/rendering/renderers/DummyRenderer.mjs +51 -75
  328. package/dist/mjs/rendering/renderers/SVGRenderer.d.ts +5 -5
  329. package/dist/mjs/rendering/renderers/SVGRenderer.mjs +185 -171
  330. package/dist/mjs/rendering/renderers/TextOnlyRenderer.d.ts +1 -3
  331. package/dist/mjs/rendering/renderers/TextOnlyRenderer.mjs +43 -72
  332. package/dist/mjs/shortcuts/KeyBinding.d.ts +5 -0
  333. package/dist/mjs/shortcuts/KeyBinding.mjs +94 -71
  334. package/dist/mjs/shortcuts/KeyboardShortcutManager.d.ts +1 -1
  335. package/dist/mjs/shortcuts/KeyboardShortcutManager.mjs +32 -44
  336. package/dist/mjs/testing/createEditor.mjs +2 -2
  337. package/dist/mjs/testing/getUniquePointerId.mjs +4 -5
  338. package/dist/mjs/testing/sendPenEvent.d.ts +2 -2
  339. package/dist/mjs/testing/sendPenEvent.mjs +5 -5
  340. package/dist/mjs/testing/sendTouchEvent.d.ts +2 -2
  341. package/dist/mjs/testing/sendTouchEvent.mjs +8 -16
  342. package/dist/mjs/toolbar/AbstractToolbar.d.ts +166 -0
  343. package/dist/mjs/toolbar/AbstractToolbar.mjs +405 -0
  344. package/dist/mjs/toolbar/DropdownToolbar.d.ts +43 -0
  345. package/dist/mjs/toolbar/DropdownToolbar.mjs +168 -0
  346. package/dist/mjs/toolbar/EdgeToolbar.d.ts +47 -0
  347. package/dist/mjs/toolbar/EdgeToolbar.mjs +414 -0
  348. package/dist/mjs/toolbar/IconProvider.d.ts +54 -30
  349. package/dist/mjs/toolbar/IconProvider.mjs +644 -219
  350. package/dist/mjs/toolbar/constants.d.ts +1 -0
  351. package/dist/mjs/toolbar/constants.mjs +1 -0
  352. package/dist/mjs/toolbar/lib.d.ts +4 -2
  353. package/dist/mjs/toolbar/lib.mjs +3 -1
  354. package/dist/mjs/toolbar/localization.d.ts +9 -2
  355. package/dist/mjs/toolbar/localization.mjs +27 -20
  356. package/dist/mjs/toolbar/types.d.ts +7 -0
  357. package/dist/mjs/toolbar/widgets/ActionButtonWidget.d.ts +1 -1
  358. package/dist/mjs/toolbar/widgets/ActionButtonWidget.mjs +19 -39
  359. package/dist/mjs/toolbar/widgets/BaseToolWidget.d.ts +1 -1
  360. package/dist/mjs/toolbar/widgets/BaseToolWidget.mjs +30 -36
  361. package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +60 -5
  362. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +227 -176
  363. package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.mjs +98 -111
  364. package/dist/mjs/toolbar/widgets/EraserToolWidget.d.ts +1 -3
  365. package/dist/mjs/toolbar/widgets/EraserToolWidget.mjs +41 -73
  366. package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  367. package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +94 -136
  368. package/dist/mjs/toolbar/widgets/InsertImageWidget.d.ts +9 -7
  369. package/dist/mjs/toolbar/widgets/InsertImageWidget.mjs +140 -208
  370. package/dist/mjs/toolbar/widgets/OverflowWidget.mjs +30 -62
  371. package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +8 -1
  372. package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +150 -225
  373. package/dist/mjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
  374. package/dist/mjs/toolbar/widgets/SelectionToolWidget.mjs +97 -173
  375. package/dist/mjs/toolbar/widgets/TextToolWidget.mjs +59 -85
  376. package/dist/mjs/toolbar/widgets/components/makeColorInput.d.ts +10 -0
  377. package/dist/mjs/toolbar/{makeColorInput.mjs → widgets/components/makeColorInput.mjs} +53 -33
  378. package/dist/mjs/toolbar/widgets/components/makeFileInput.d.ts +12 -0
  379. package/dist/mjs/toolbar/widgets/components/makeFileInput.mjs +106 -0
  380. package/dist/mjs/toolbar/widgets/components/makeGridSelector.d.ts +24 -0
  381. package/dist/mjs/toolbar/widgets/components/makeGridSelector.mjs +122 -0
  382. package/dist/mjs/toolbar/widgets/components/makeSeparator.d.ts +7 -0
  383. package/dist/mjs/toolbar/widgets/components/makeSeparator.mjs +14 -0
  384. package/dist/mjs/toolbar/widgets/components/makeThicknessSlider.d.ts +8 -0
  385. package/dist/mjs/toolbar/widgets/components/makeThicknessSlider.mjs +45 -0
  386. package/dist/mjs/toolbar/widgets/keybindings.mjs +5 -5
  387. package/dist/mjs/toolbar/widgets/layout/DropdownLayoutManager.d.ts +21 -0
  388. package/dist/mjs/toolbar/widgets/layout/DropdownLayoutManager.mjs +193 -0
  389. package/dist/mjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.d.ts +14 -0
  390. package/dist/mjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.mjs +57 -0
  391. package/dist/mjs/toolbar/widgets/layout/types.d.ts +63 -0
  392. package/dist/mjs/toolbar/widgets/lib.d.ts +1 -1
  393. package/dist/mjs/toolbar/widgets/lib.mjs +1 -1
  394. package/dist/mjs/tools/BaseTool.d.ts +28 -9
  395. package/dist/mjs/tools/BaseTool.mjs +127 -50
  396. package/dist/mjs/tools/Eraser.d.ts +8 -1
  397. package/dist/mjs/tools/Eraser.mjs +72 -86
  398. package/dist/mjs/tools/FindTool.d.ts +1 -1
  399. package/dist/mjs/tools/FindTool.mjs +55 -75
  400. package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
  401. package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +15 -0
  402. package/dist/mjs/tools/InputFilter/InputMapper.d.ts +23 -0
  403. package/dist/mjs/tools/InputFilter/InputMapper.mjs +36 -0
  404. package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +15 -0
  405. package/dist/mjs/tools/InputFilter/InputPipeline.mjs +49 -0
  406. package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
  407. package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +175 -0
  408. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
  409. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +78 -0
  410. package/dist/mjs/tools/PanZoom.d.ts +4 -2
  411. package/dist/mjs/tools/PanZoom.mjs +169 -235
  412. package/dist/mjs/tools/PasteHandler.d.ts +1 -1
  413. package/dist/mjs/tools/PasteHandler.mjs +42 -145
  414. package/dist/mjs/tools/Pen.d.ts +12 -11
  415. package/dist/mjs/tools/Pen.mjs +115 -154
  416. package/dist/mjs/tools/PipetteTool.d.ts +11 -2
  417. package/dist/mjs/tools/PipetteTool.mjs +47 -48
  418. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -1
  419. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +9 -28
  420. package/dist/mjs/tools/SelectionTool/Selection.d.ts +5 -5
  421. package/dist/mjs/tools/SelectionTool/Selection.mjs +268 -401
  422. package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +15 -5
  423. package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +62 -37
  424. package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +4 -4
  425. package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +153 -179
  426. package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +1 -1
  427. package/dist/mjs/tools/SelectionTool/TransformMode.mjs +52 -59
  428. package/dist/mjs/tools/SoundUITool.d.ts +2 -1
  429. package/dist/mjs/tools/SoundUITool.mjs +66 -84
  430. package/dist/mjs/tools/TextTool.d.ts +5 -3
  431. package/dist/mjs/tools/TextTool.mjs +155 -163
  432. package/dist/mjs/tools/ToolController.d.ts +16 -2
  433. package/dist/mjs/tools/ToolController.mjs +81 -84
  434. package/dist/mjs/tools/ToolEnabledGroup.mjs +6 -10
  435. package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +1 -1
  436. package/dist/mjs/tools/ToolSwitcherShortcut.mjs +12 -32
  437. package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +1 -1
  438. package/dist/mjs/tools/ToolbarShortcutHandler.mjs +13 -33
  439. package/dist/mjs/tools/UndoRedoShortcut.d.ts +1 -1
  440. package/dist/mjs/tools/UndoRedoShortcut.mjs +7 -26
  441. package/dist/mjs/tools/keybindings.mjs +34 -34
  442. package/dist/mjs/tools/localization.d.ts +2 -1
  443. package/dist/mjs/tools/localization.mjs +9 -8
  444. package/dist/mjs/types.d.ts +22 -80
  445. package/dist/mjs/types.mjs +7 -15
  446. package/dist/mjs/util/ReactiveValue.d.ts +65 -0
  447. package/dist/mjs/util/ReactiveValue.mjs +161 -0
  448. package/dist/mjs/util/assertions.mjs +5 -8
  449. package/dist/mjs/util/fileToBase64.mjs +6 -6
  450. package/dist/mjs/util/guessKeyCodeFromKey.d.ts +9 -0
  451. package/dist/mjs/util/guessKeyCodeFromKey.mjs +30 -0
  452. package/dist/mjs/util/listPrefixMatch.d.ts +6 -0
  453. package/dist/mjs/util/listPrefixMatch.mjs +15 -0
  454. package/dist/mjs/util/stopPropagationOfScrollingWheelEvents.d.ts +2 -0
  455. package/dist/mjs/util/stopPropagationOfScrollingWheelEvents.mjs +15 -0
  456. package/dist/mjs/util/untilNextAnimationFrame.mjs +3 -3
  457. package/dist/mjs/util/waitForAll.mjs +3 -3
  458. package/dist/mjs/util/waitForTimeout.mjs +3 -3
  459. package/dist/mjs/version.d.ts +4 -0
  460. package/dist/mjs/version.mjs +3 -0
  461. package/dist-test/test_imports/package.json +1 -1
  462. package/dist-test/test_imports/test-imports.js +5 -11
  463. package/dist-test/test_imports/test-require.cjs +6 -11
  464. package/package.json +11 -22
  465. package/src/Coloris.css +8 -8
  466. package/src/Editor.loadFrom.test.ts +1 -1
  467. package/src/Editor.scss +148 -0
  468. package/src/Editor.test.ts +107 -0
  469. package/src/Editor.toSVG.test.ts +184 -1
  470. package/src/Editor.ts +325 -53
  471. package/src/EditorImage.test.ts +4 -7
  472. package/src/EditorImage.ts +10 -4
  473. package/src/Pointer.ts +18 -5
  474. package/src/SVGLoader.ts +77 -15
  475. package/src/UndoRedoHistory.test.ts +2 -1
  476. package/src/Viewport.ts +1 -4
  477. package/src/commands/Erase.ts +1 -0
  478. package/src/commands/localization.ts +1 -1
  479. package/src/commands/uniteCommands.test.ts +3 -3
  480. package/src/components/AbstractComponent.transformBy.test.ts +2 -1
  481. package/src/components/AbstractComponent.ts +12 -3
  482. package/src/components/BackgroundComponent.test.ts +1 -2
  483. package/src/components/BackgroundComponent.ts +3 -8
  484. package/src/components/ImageComponent.ts +1 -3
  485. package/src/components/RestylableComponent.ts +1 -1
  486. package/src/components/SVGGlobalAttributesObject.ts +1 -3
  487. package/src/components/Stroke.test.ts +4 -6
  488. package/src/components/Stroke.ts +5 -7
  489. package/src/components/TextComponent.test.ts +1 -3
  490. package/src/components/TextComponent.ts +1 -4
  491. package/src/components/UnknownSVGObject.ts +3 -3
  492. package/src/components/builders/ArrowBuilder.ts +1 -2
  493. package/src/components/builders/CircleBuilder.ts +3 -5
  494. package/src/components/builders/FreehandLineBuilder.test.ts +2 -3
  495. package/src/components/builders/FreehandLineBuilder.ts +3 -5
  496. package/src/components/builders/LineBuilder.ts +3 -3
  497. package/src/components/builders/PressureSensitiveFreehandLineBuilder.ts +3 -4
  498. package/src/components/builders/RectangleBuilder.ts +3 -4
  499. package/src/components/builders/types.ts +1 -1
  500. package/src/components/lib.ts +1 -1
  501. package/src/components/util/StrokeSmoother.ts +7 -7
  502. package/src/dialogs/dialogs.scss +36 -0
  503. package/src/dialogs/makeAboutDialog.scss +41 -0
  504. package/src/dialogs/makeAboutDialog.ts +82 -0
  505. package/src/inputEvents.ts +143 -0
  506. package/src/lib.ts +35 -13
  507. package/src/localizations/de.ts +2 -2
  508. package/src/localizations/es.ts +5 -5
  509. package/src/rendering/Display.ts +1 -2
  510. package/src/rendering/RenderablePathSpec.ts +88 -0
  511. package/src/rendering/RenderingStyle.test.ts +1 -1
  512. package/src/rendering/RenderingStyle.ts +1 -1
  513. package/src/rendering/caching/CacheRecord.test.ts +1 -2
  514. package/src/rendering/caching/CacheRecord.ts +1 -2
  515. package/src/rendering/caching/CacheRecordManager.ts +1 -1
  516. package/src/rendering/caching/RenderingCache.test.ts +3 -4
  517. package/src/rendering/caching/RenderingCache.ts +1 -1
  518. package/src/rendering/caching/RenderingCacheNode.ts +1 -2
  519. package/src/rendering/caching/testUtils.ts +1 -1
  520. package/src/rendering/caching/types.ts +3 -3
  521. package/src/rendering/renderers/AbstractRenderer.ts +4 -14
  522. package/src/rendering/renderers/CanvasRenderer.ts +17 -12
  523. package/src/rendering/renderers/DummyRenderer.test.ts +1 -2
  524. package/src/rendering/renderers/DummyRenderer.ts +1 -4
  525. package/src/rendering/renderers/SVGRenderer.ts +68 -11
  526. package/src/rendering/renderers/TextOnlyRenderer.ts +1 -4
  527. package/src/shortcuts/KeyBinding.test.ts +10 -0
  528. package/src/shortcuts/KeyBinding.ts +74 -35
  529. package/src/shortcuts/KeyboardShortcutManager.test.ts +1 -1
  530. package/src/styles.js +1 -1
  531. package/src/testing/sendPenEvent.ts +2 -2
  532. package/src/testing/sendTouchEvent.ts +2 -2
  533. package/src/toolbar/{toolbar.css → AbstractToolbar.scss} +47 -85
  534. package/src/toolbar/AbstractToolbar.ts +542 -0
  535. package/src/toolbar/DropdownToolbar.scss +46 -0
  536. package/src/toolbar/DropdownToolbar.ts +220 -0
  537. package/src/toolbar/EdgeToolbar.scss +511 -0
  538. package/src/toolbar/EdgeToolbar.test.ts +54 -0
  539. package/src/toolbar/EdgeToolbar.ts +543 -0
  540. package/src/toolbar/IconProvider.ts +189 -133
  541. package/src/toolbar/constants.ts +1 -0
  542. package/src/toolbar/lib.ts +4 -2
  543. package/src/toolbar/localization.ts +39 -17
  544. package/src/toolbar/toolbar.scss +11 -0
  545. package/src/toolbar/types.ts +8 -0
  546. package/src/toolbar/widgets/ActionButtonWidget.ts +2 -2
  547. package/src/toolbar/widgets/BaseToolWidget.ts +17 -1
  548. package/src/toolbar/widgets/BaseWidget.ts +179 -112
  549. package/src/toolbar/widgets/DocumentPropertiesWidget.scss +7 -0
  550. package/src/toolbar/widgets/DocumentPropertiesWidget.ts +26 -10
  551. package/src/toolbar/widgets/EraserToolWidget.ts +21 -22
  552. package/src/toolbar/widgets/HandToolWidget.scss +14 -0
  553. package/src/toolbar/widgets/HandToolWidget.ts +21 -32
  554. package/src/toolbar/widgets/InsertImageWidget.scss +41 -0
  555. package/src/toolbar/widgets/InsertImageWidget.ts +90 -65
  556. package/src/toolbar/widgets/PenToolWidget.css +0 -51
  557. package/src/toolbar/widgets/PenToolWidget.ts +106 -146
  558. package/src/toolbar/widgets/SelectionToolWidget.scss +6 -0
  559. package/src/toolbar/widgets/SelectionToolWidget.ts +83 -85
  560. package/src/toolbar/widgets/TextToolWidget.ts +9 -5
  561. package/src/toolbar/widgets/components/components.scss +5 -0
  562. package/src/toolbar/widgets/components/makeColorInput.scss +82 -0
  563. package/src/toolbar/{makeColorInput.ts → widgets/components/makeColorInput.ts} +39 -14
  564. package/src/toolbar/widgets/components/makeFileInput.scss +77 -0
  565. package/src/toolbar/widgets/components/makeFileInput.ts +128 -0
  566. package/src/toolbar/widgets/components/makeGridSelector.scss +60 -0
  567. package/src/toolbar/widgets/components/makeGridSelector.ts +179 -0
  568. package/src/toolbar/widgets/components/makeSeparator.scss +14 -0
  569. package/src/toolbar/widgets/components/makeSeparator.ts +17 -0
  570. package/src/toolbar/widgets/components/makeThicknessSlider.scss +9 -0
  571. package/src/toolbar/widgets/components/makeThicknessSlider.ts +62 -0
  572. package/src/toolbar/widgets/keybindings.ts +1 -3
  573. package/src/toolbar/widgets/layout/DropdownLayoutManager.ts +262 -0
  574. package/src/toolbar/widgets/layout/EdgeToolbarLayoutManager.ts +71 -0
  575. package/src/toolbar/widgets/layout/types.ts +74 -0
  576. package/src/toolbar/widgets/lib.ts +2 -2
  577. package/src/tools/BaseTool.ts +102 -30
  578. package/src/tools/Eraser.test.ts +2 -2
  579. package/src/tools/Eraser.ts +24 -11
  580. package/src/tools/FindTool.css +3 -3
  581. package/src/tools/FindTool.test.ts +67 -0
  582. package/src/tools/FindTool.ts +3 -3
  583. package/src/tools/InputFilter/FunctionMapper.ts +17 -0
  584. package/src/tools/InputFilter/InputMapper.ts +41 -0
  585. package/src/tools/InputFilter/InputPipeline.test.ts +41 -0
  586. package/src/tools/InputFilter/InputPipeline.ts +34 -0
  587. package/src/tools/InputFilter/InputStabilizer.ts +254 -0
  588. package/src/tools/InputFilter/StrokeKeyboardControl.ts +104 -0
  589. package/src/tools/PanZoom.test.ts +3 -13
  590. package/src/tools/PanZoom.ts +33 -10
  591. package/src/tools/PasteHandler.ts +2 -3
  592. package/src/tools/Pen.test.ts +2 -4
  593. package/src/tools/Pen.ts +54 -70
  594. package/src/tools/PipetteTool.ts +31 -2
  595. package/src/tools/SelectionTool/SelectAllShortcutHandler.ts +1 -1
  596. package/src/tools/SelectionTool/Selection.ts +52 -16
  597. package/src/tools/SelectionTool/SelectionHandle.ts +46 -12
  598. package/src/tools/SelectionTool/SelectionTool.css +23 -11
  599. package/src/tools/SelectionTool/SelectionTool.test.ts +130 -21
  600. package/src/tools/SelectionTool/SelectionTool.ts +62 -48
  601. package/src/tools/SelectionTool/TransformMode.ts +1 -3
  602. package/src/tools/SoundUITool.ts +13 -4
  603. package/src/tools/TextTool.ts +29 -30
  604. package/src/tools/ToolController.ts +60 -36
  605. package/src/tools/ToolSwitcherShortcut.ts +1 -1
  606. package/src/tools/ToolbarShortcutHandler.ts +1 -1
  607. package/src/tools/UndoRedoShortcut.test.ts +10 -4
  608. package/src/tools/UndoRedoShortcut.ts +1 -1
  609. package/src/tools/keybindings.ts +17 -17
  610. package/src/tools/localization.ts +4 -2
  611. package/src/tools/tools.scss +4 -0
  612. package/src/types.ts +25 -113
  613. package/src/util/ReactiveValue.test.ts +168 -0
  614. package/src/util/ReactiveValue.ts +241 -0
  615. package/src/util/guessKeyCodeFromKey.ts +36 -0
  616. package/src/util/listPrefixMatch.ts +19 -0
  617. package/src/util/stopPropagationOfScrollingWheelEvents.ts +20 -0
  618. package/src/version.test.ts +12 -0
  619. package/src/version.ts +3 -0
  620. package/tsconfig.json +1 -1
  621. package/typedoc.json +4 -0
  622. package/dist/cjs/Color4.d.ts +0 -69
  623. package/dist/cjs/Color4.js +0 -263
  624. package/dist/cjs/math/Mat33.d.ts +0 -123
  625. package/dist/cjs/math/Mat33.js +0 -340
  626. package/dist/cjs/math/Vec2.d.ts +0 -33
  627. package/dist/cjs/math/Vec2.js +0 -37
  628. package/dist/cjs/math/Vec3.d.ts +0 -106
  629. package/dist/cjs/math/Vec3.js +0 -183
  630. package/dist/cjs/math/lib.d.ts +0 -7
  631. package/dist/cjs/math/lib.js +0 -15
  632. package/dist/cjs/math/polynomial/solveQuadratic.d.ts +0 -9
  633. package/dist/cjs/math/polynomial/solveQuadratic.js +0 -39
  634. package/dist/cjs/math/rounding.d.ts +0 -4
  635. package/dist/cjs/math/rounding.js +0 -140
  636. package/dist/cjs/math/shapes/Abstract2DShape.d.ts +0 -49
  637. package/dist/cjs/math/shapes/Abstract2DShape.js +0 -42
  638. package/dist/cjs/math/shapes/BezierJSWrapper.d.ts +0 -36
  639. package/dist/cjs/math/shapes/BezierJSWrapper.js +0 -109
  640. package/dist/cjs/math/shapes/CubicBezier.d.ts +0 -17
  641. package/dist/cjs/math/shapes/CubicBezier.js +0 -50
  642. package/dist/cjs/math/shapes/LineSegment2.d.ts +0 -70
  643. package/dist/cjs/math/shapes/LineSegment2.js +0 -204
  644. package/dist/cjs/math/shapes/Path.d.ts +0 -93
  645. package/dist/cjs/math/shapes/Path.js +0 -865
  646. package/dist/cjs/math/shapes/PointShape2D.d.ts +0 -18
  647. package/dist/cjs/math/shapes/PointShape2D.js +0 -46
  648. package/dist/cjs/math/shapes/QuadraticBezier.d.ts +0 -34
  649. package/dist/cjs/math/shapes/QuadraticBezier.js +0 -133
  650. package/dist/cjs/math/shapes/Rect2.d.ts +0 -57
  651. package/dist/cjs/math/shapes/Rect2.js +0 -311
  652. package/dist/cjs/math/shapes/Triangle.d.ts +0 -46
  653. package/dist/cjs/math/shapes/Triangle.js +0 -148
  654. package/dist/cjs/toolbar/HTMLToolbar.d.ts +0 -105
  655. package/dist/cjs/toolbar/HTMLToolbar.js +0 -465
  656. package/dist/cjs/toolbar/makeColorInput.d.ts +0 -6
  657. package/dist/mjs/Color4.d.ts +0 -69
  658. package/dist/mjs/Color4.mjs +0 -260
  659. package/dist/mjs/Color4.test.d.ts +0 -1
  660. package/dist/mjs/math/Mat33.d.ts +0 -123
  661. package/dist/mjs/math/Mat33.mjs +0 -338
  662. package/dist/mjs/math/Mat33.test.d.ts +0 -1
  663. package/dist/mjs/math/Vec2.d.ts +0 -33
  664. package/dist/mjs/math/Vec2.mjs +0 -34
  665. package/dist/mjs/math/Vec2.test.d.ts +0 -1
  666. package/dist/mjs/math/Vec3.d.ts +0 -106
  667. package/dist/mjs/math/Vec3.mjs +0 -181
  668. package/dist/mjs/math/Vec3.test.d.ts +0 -1
  669. package/dist/mjs/math/lib.d.ts +0 -7
  670. package/dist/mjs/math/lib.mjs +0 -7
  671. package/dist/mjs/math/polynomial/solveQuadratic.d.ts +0 -9
  672. package/dist/mjs/math/polynomial/solveQuadratic.mjs +0 -37
  673. package/dist/mjs/math/polynomial/solveQuadratic.test.d.ts +0 -1
  674. package/dist/mjs/math/rounding.d.ts +0 -4
  675. package/dist/mjs/math/rounding.mjs +0 -133
  676. package/dist/mjs/math/rounding.test.d.ts +0 -1
  677. package/dist/mjs/math/shapes/Abstract2DShape.d.ts +0 -49
  678. package/dist/mjs/math/shapes/Abstract2DShape.mjs +0 -40
  679. package/dist/mjs/math/shapes/BezierJSWrapper.d.ts +0 -36
  680. package/dist/mjs/math/shapes/BezierJSWrapper.mjs +0 -107
  681. package/dist/mjs/math/shapes/CubicBezier.d.ts +0 -17
  682. package/dist/mjs/math/shapes/CubicBezier.mjs +0 -48
  683. package/dist/mjs/math/shapes/LineSegment2.d.ts +0 -70
  684. package/dist/mjs/math/shapes/LineSegment2.mjs +0 -202
  685. package/dist/mjs/math/shapes/LineSegment2.test.d.ts +0 -1
  686. package/dist/mjs/math/shapes/Path.d.ts +0 -93
  687. package/dist/mjs/math/shapes/Path.fromString.test.d.ts +0 -1
  688. package/dist/mjs/math/shapes/Path.mjs +0 -862
  689. package/dist/mjs/math/shapes/Path.test.d.ts +0 -1
  690. package/dist/mjs/math/shapes/Path.toString.test.d.ts +0 -1
  691. package/dist/mjs/math/shapes/PointShape2D.d.ts +0 -18
  692. package/dist/mjs/math/shapes/PointShape2D.mjs +0 -44
  693. package/dist/mjs/math/shapes/QuadraticBezier.d.ts +0 -34
  694. package/dist/mjs/math/shapes/QuadraticBezier.mjs +0 -131
  695. package/dist/mjs/math/shapes/QuadraticBezier.test.d.ts +0 -1
  696. package/dist/mjs/math/shapes/Rect2.d.ts +0 -57
  697. package/dist/mjs/math/shapes/Rect2.mjs +0 -309
  698. package/dist/mjs/math/shapes/Rect2.test.d.ts +0 -1
  699. package/dist/mjs/math/shapes/Triangle.d.ts +0 -46
  700. package/dist/mjs/math/shapes/Triangle.mjs +0 -146
  701. package/dist/mjs/math/shapes/Triangle.test.d.ts +0 -1
  702. package/dist/mjs/toolbar/HTMLToolbar.d.ts +0 -105
  703. package/dist/mjs/toolbar/HTMLToolbar.mjs +0 -462
  704. package/dist/mjs/toolbar/makeColorInput.d.ts +0 -6
  705. package/src/Color4.test.ts +0 -47
  706. package/src/Color4.ts +0 -304
  707. package/src/Editor.css +0 -98
  708. package/src/math/Mat33.test.ts +0 -244
  709. package/src/math/Mat33.ts +0 -442
  710. package/src/math/Vec2.test.ts +0 -30
  711. package/src/math/Vec2.ts +0 -40
  712. package/src/math/Vec3.test.ts +0 -44
  713. package/src/math/Vec3.ts +0 -218
  714. package/src/math/lib.ts +0 -15
  715. package/src/math/polynomial/solveQuadratic.test.ts +0 -39
  716. package/src/math/polynomial/solveQuadratic.ts +0 -43
  717. package/src/math/rounding.test.ts +0 -65
  718. package/src/math/rounding.ts +0 -156
  719. package/src/math/shapes/Abstract2DShape.ts +0 -63
  720. package/src/math/shapes/BezierJSWrapper.ts +0 -93
  721. package/src/math/shapes/CubicBezier.ts +0 -35
  722. package/src/math/shapes/LineSegment2.test.ts +0 -99
  723. package/src/math/shapes/LineSegment2.ts +0 -231
  724. package/src/math/shapes/Path.fromString.test.ts +0 -223
  725. package/src/math/shapes/Path.test.ts +0 -309
  726. package/src/math/shapes/Path.toString.test.ts +0 -77
  727. package/src/math/shapes/Path.ts +0 -1027
  728. package/src/math/shapes/PointShape2D.ts +0 -33
  729. package/src/math/shapes/QuadraticBezier.test.ts +0 -31
  730. package/src/math/shapes/QuadraticBezier.ts +0 -141
  731. package/src/math/shapes/Rect2.test.ts +0 -209
  732. package/src/math/shapes/Rect2.ts +0 -344
  733. package/src/math/shapes/Triangle.test.ts +0 -61
  734. package/src/math/shapes/Triangle.ts +0 -139
  735. package/src/toolbar/HTMLToolbar.ts +0 -567
  736. package/src/toolbar/widgets/InsertImageWidget.css +0 -44
  737. package/src/tools/tools.css +0 -4
  738. /package/dist/cjs/{Color4.test.d.ts → Editor.test.d.ts} +0 -0
  739. /package/dist/cjs/{math/Mat33.test.d.ts → toolbar/EdgeToolbar.test.d.ts} +0 -0
  740. /package/dist/cjs/{math/Vec2.test.d.ts → tools/FindTool.test.d.ts} +0 -0
  741. /package/dist/cjs/{math/Vec3.test.d.ts → tools/InputFilter/InputPipeline.test.d.ts} +0 -0
  742. /package/dist/cjs/{math/polynomial/solveQuadratic.test.d.ts → util/ReactiveValue.test.d.ts} +0 -0
  743. /package/dist/cjs/{math/rounding.test.d.ts → version.test.d.ts} +0 -0
  744. /package/dist/{cjs/math/shapes/LineSegment2.test.d.ts → mjs/Editor.test.d.ts} +0 -0
  745. /package/dist/{cjs/math/shapes/Path.fromString.test.d.ts → mjs/toolbar/EdgeToolbar.test.d.ts} +0 -0
  746. /package/dist/{cjs/math/shapes/Path.test.d.ts → mjs/toolbar/widgets/layout/types.mjs} +0 -0
  747. /package/dist/{cjs/math/shapes/Path.toString.test.d.ts → mjs/tools/FindTool.test.d.ts} +0 -0
  748. /package/dist/{cjs/math/shapes/QuadraticBezier.test.d.ts → mjs/tools/InputFilter/InputPipeline.test.d.ts} +0 -0
  749. /package/dist/{cjs/math/shapes/Rect2.test.d.ts → mjs/util/ReactiveValue.test.d.ts} +0 -0
  750. /package/dist/{cjs/math/shapes/Triangle.test.d.ts → mjs/version.test.d.ts} +0 -0
@@ -1,87 +1,58 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- if (typeof b !== "function" && b !== null)
10
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
- extendStatics(d, b);
12
- function __() { this.constructor = d; }
13
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
- };
15
- })();
16
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
17
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
18
- if (ar || !(i in from)) {
19
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
20
- ar[i] = from[i];
21
- }
22
- }
23
- return to.concat(ar || Array.prototype.slice.call(from));
24
- };
25
- import { Vec2 } from '../../math/Vec2.mjs';
1
+ import { Vec2 } from '@js-draw/math';
26
2
  import AbstractRenderer from './AbstractRenderer.mjs';
27
3
  // Outputs a description of what was rendered.
28
- var TextOnlyRenderer = /** @class */ (function (_super) {
29
- __extends(TextOnlyRenderer, _super);
30
- function TextOnlyRenderer(viewport, localizationTable) {
31
- var _this = _super.call(this, viewport) || this;
32
- _this.localizationTable = localizationTable;
33
- _this.descriptionBuilder = [];
34
- _this.pathCount = 0;
35
- _this.textNodeCount = 0;
36
- _this.imageNodeCount = 0;
37
- return _this;
4
+ export default class TextOnlyRenderer extends AbstractRenderer {
5
+ constructor(viewport, localizationTable) {
6
+ super(viewport);
7
+ this.localizationTable = localizationTable;
8
+ this.descriptionBuilder = [];
9
+ this.pathCount = 0;
10
+ this.textNodeCount = 0;
11
+ this.imageNodeCount = 0;
38
12
  }
39
- TextOnlyRenderer.prototype.displaySize = function () {
13
+ displaySize() {
40
14
  // We don't have a graphical display, export a reasonable size.
41
15
  return Vec2.of(500, 500);
42
- };
43
- TextOnlyRenderer.prototype.clear = function () {
16
+ }
17
+ clear() {
44
18
  this.descriptionBuilder = [];
45
19
  this.pathCount = 0;
46
20
  this.textNodeCount = 0;
47
21
  this.imageNodeCount = 0;
48
- };
49
- TextOnlyRenderer.prototype.getDescription = function () {
50
- return __spreadArray(__spreadArray(__spreadArray([
51
- this.localizationTable.pathNodeCount(this.pathCount)
52
- ], (this.textNodeCount > 0 ? [this.localizationTable.textNodeCount(this.textNodeCount)] : []), true), (this.imageNodeCount > 0 ? [this.localizationTable.imageNodeCount(this.imageNodeCount)] : []), true), this.descriptionBuilder, true).join('\n');
53
- };
54
- TextOnlyRenderer.prototype.beginPath = function (_startPoint) {
55
- };
56
- TextOnlyRenderer.prototype.endPath = function (_style) {
22
+ }
23
+ getDescription() {
24
+ return [
25
+ this.localizationTable.pathNodeCount(this.pathCount),
26
+ ...(this.textNodeCount > 0 ? [this.localizationTable.textNodeCount(this.textNodeCount)] : []),
27
+ ...(this.imageNodeCount > 0 ? [this.localizationTable.imageNodeCount(this.imageNodeCount)] : []),
28
+ ...this.descriptionBuilder
29
+ ].join('\n');
30
+ }
31
+ beginPath(_startPoint) {
32
+ }
33
+ endPath(_style) {
57
34
  this.pathCount++;
58
- };
59
- TextOnlyRenderer.prototype.lineTo = function (_point) {
60
- };
61
- TextOnlyRenderer.prototype.moveTo = function (_point) {
62
- };
63
- TextOnlyRenderer.prototype.traceCubicBezierCurve = function (_p1, _p2, _p3) {
64
- };
65
- TextOnlyRenderer.prototype.traceQuadraticBezierCurve = function (_controlPoint, _endPoint) {
66
- };
67
- TextOnlyRenderer.prototype.drawText = function (text, _transform, _style) {
35
+ }
36
+ lineTo(_point) {
37
+ }
38
+ moveTo(_point) {
39
+ }
40
+ traceCubicBezierCurve(_p1, _p2, _p3) {
41
+ }
42
+ traceQuadraticBezierCurve(_controlPoint, _endPoint) {
43
+ }
44
+ drawText(text, _transform, _style) {
68
45
  this.descriptionBuilder.push(this.localizationTable.textNode(text));
69
46
  this.textNodeCount++;
70
- };
71
- TextOnlyRenderer.prototype.drawImage = function (image) {
72
- var label = image.label ? this.localizationTable.imageNode(image.label) : this.localizationTable.unlabeledImageNode;
47
+ }
48
+ drawImage(image) {
49
+ const label = image.label ? this.localizationTable.imageNode(image.label) : this.localizationTable.unlabeledImageNode;
73
50
  this.descriptionBuilder.push(label);
74
51
  this.imageNodeCount++;
75
- };
76
- TextOnlyRenderer.prototype.isTooSmallToRender = function (rect) {
52
+ }
53
+ isTooSmallToRender(rect) {
77
54
  return rect.maxDimension < 15 / this.getSizeOfCanvasPixelOnScreen();
78
- };
79
- TextOnlyRenderer.prototype.drawPoints = function () {
80
- var _points = [];
81
- for (var _i = 0; _i < arguments.length; _i++) {
82
- _points[_i] = arguments[_i];
83
- }
84
- };
85
- return TextOnlyRenderer;
86
- }(AbstractRenderer));
87
- export default TextOnlyRenderer;
55
+ }
56
+ drawPoints(..._points) {
57
+ }
58
+ }
@@ -1,6 +1,11 @@
1
1
  export interface KeyCombination {
2
2
  /** A key (e.g. `a`, `b`, `control`). */
3
3
  readonly key: string;
4
+ /**
5
+ * The layout-independent name of the key being pressed. For example,
6
+ * KeyA for the `a` key.
7
+ */
8
+ readonly code?: string;
4
9
  /**
5
10
  * Whether the shift key must be pressed to trigger the shortcut.
6
11
  */
@@ -1,6 +1,16 @@
1
+ const isUppercaseLetter = (text) => {
2
+ return text.toUpperCase() === text
3
+ && text.toLowerCase() !== text
4
+ && text.length === 1;
5
+ };
6
+ const isLowercaseLetter = (text) => {
7
+ return text.toLowerCase() === text
8
+ && text.toUpperCase() !== text
9
+ && text.length === 1;
10
+ };
1
11
  /** Represents a key combination that can trigger a keyboard shortcut. */
2
- var KeyBinding = /** @class */ (function () {
3
- function KeyBinding(trigger) {
12
+ export default class KeyBinding {
13
+ constructor(trigger) {
4
14
  this.key = trigger.key;
5
15
  this.shiftKey = trigger.shiftKey;
6
16
  this.ctrlKey = trigger.ctrlKey;
@@ -9,52 +19,50 @@ var KeyBinding = /** @class */ (function () {
9
19
  this.controlOrMeta = trigger.controlOrMeta;
10
20
  }
11
21
  /** Returns true if and only if `keyEvent` should trigger this shortcut. */
12
- KeyBinding.prototype.matchesEvent = function (keyEvent) {
13
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
14
- var lowercaseKey = (_a = keyEvent.key) === null || _a === void 0 ? void 0 : _a.toLowerCase();
22
+ matchesEvent(keyEvent) {
23
+ const lowercaseKey = keyEvent.key?.toLowerCase();
15
24
  // Determine whether the input is an upper case letter or not.
16
- var isUpperCaseKey = ((_b = keyEvent.key) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === keyEvent.key
17
- && ((_c = keyEvent.key) === null || _c === void 0 ? void 0 : _c.toLowerCase()) !== keyEvent.key
18
- && ((_d = keyEvent.key) === null || _d === void 0 ? void 0 : _d.length) === 1;
19
- var isLowercaseKey = ((_e = keyEvent.key) === null || _e === void 0 ? void 0 : _e.toLowerCase()) === keyEvent.key
20
- && !isUpperCaseKey
21
- && ((_f = keyEvent.key) === null || _f === void 0 ? void 0 : _f.length) === 1;
22
- var ctrlKey = ((_g = keyEvent.ctrlKey) !== null && _g !== void 0 ? _g : false) || lowercaseKey === 'control';
23
- var altKey = ((_h = keyEvent.altKey) !== null && _h !== void 0 ? _h : false) || lowercaseKey === 'alt';
24
- var metaKey = ((_j = keyEvent.metaKey) !== null && _j !== void 0 ? _j : false) || lowercaseKey === 'meta';
25
- var shiftKey = ((_k = keyEvent.shiftKey) !== null && _k !== void 0 ? _k : isUpperCaseKey) || lowercaseKey === 'shift';
26
- var keyEventHasCtrlOrMeta = keyEvent.controlOrMeta || keyEvent.ctrlKey || keyEvent.metaKey || false;
27
- // Different keys entirely? They don't match.
28
- if (this.key.toLowerCase() !== lowercaseKey) {
29
- return false;
30
- }
31
- // If a case where the ASCII case of the given key might matter,
32
- // compare.
33
- if ((isUpperCaseKey || isLowercaseKey) && this.key !== keyEvent.key) {
34
- // this.shiftKey may be interpreted as allowing this shortcut to be uppercased.
35
- // If so, try making this.key uppercase and matching the shortcut.
36
- var uppercaseKeyMatches = this.shiftKey === true && this.key.toUpperCase() === keyEvent.key;
37
- if (!uppercaseKeyMatches) {
25
+ const isUpperCaseKey = isUppercaseLetter(keyEvent.key ?? '');
26
+ const isLowercaseKey = isLowercaseLetter(keyEvent.key ?? '');
27
+ const ctrlKey = (keyEvent.ctrlKey ?? false) || lowercaseKey === 'control';
28
+ const altKey = (keyEvent.altKey ?? false) || lowercaseKey === 'alt';
29
+ const metaKey = (keyEvent.metaKey ?? false) || lowercaseKey === 'meta';
30
+ const shiftKey = (keyEvent.shiftKey ?? isUpperCaseKey) || lowercaseKey === 'shift';
31
+ const keyEventHasCtrlOrMeta = keyEvent.controlOrMeta || keyEvent.ctrlKey || keyEvent.metaKey || false;
32
+ // If we're not working with key codes,
33
+ if (this.key !== keyEvent.code) {
34
+ // Different keys entirely? They don't match.
35
+ if (this.key.toLowerCase() !== lowercaseKey) {
38
36
  return false;
39
37
  }
38
+ // If a case where the ASCII case of the given key might matter,
39
+ // compare.
40
+ if ((isUpperCaseKey || isLowercaseKey) && this.key !== keyEvent.key) {
41
+ // this.shiftKey may be interpreted as allowing this shortcut to be uppercased.
42
+ // If so, try making this.key uppercase and matching the shortcut.
43
+ const uppercaseKeyMatches = this.shiftKey === true && this.key.toUpperCase() === keyEvent.key;
44
+ if (!uppercaseKeyMatches) {
45
+ return false;
46
+ }
47
+ }
40
48
  }
41
- var shortcutControlOrMeta = this.controlOrMeta;
49
+ const shortcutControlOrMeta = this.controlOrMeta;
42
50
  // Match ctrl/meta if the shortcut doesn't have controlOrMeta specified
43
51
  // (controlOrMeta should match either).
44
- var ctrlAndMetaMatches = ctrlKey === this.ctrlKey
52
+ const ctrlAndMetaMatches = ctrlKey === this.ctrlKey
45
53
  && metaKey === this.metaKey
46
54
  && !shortcutControlOrMeta;
47
- var matches = (ctrlAndMetaMatches || (shortcutControlOrMeta && keyEventHasCtrlOrMeta))
55
+ const matches = (ctrlAndMetaMatches || (shortcutControlOrMeta && keyEventHasCtrlOrMeta))
48
56
  && altKey === this.altKey
49
57
  && (shiftKey === this.shiftKey || this.shiftKey === undefined);
50
58
  return matches;
51
- };
59
+ }
52
60
  /**
53
61
  * Returns a string representation of this shortcut in the same format accepted by
54
62
  * {@link fromString}.
55
63
  */
56
- KeyBinding.prototype.toString = function () {
57
- var result = [];
64
+ toString() {
65
+ const result = [];
58
66
  if (this.ctrlKey && this.key !== 'control') {
59
67
  result.push('Ctrl');
60
68
  }
@@ -72,45 +80,62 @@ var KeyBinding = /** @class */ (function () {
72
80
  }
73
81
  result.push(this.key);
74
82
  return result.join('+');
75
- };
83
+ }
76
84
  /**
77
85
  * Accepts a string in the form `modifier1+modifier2+...+key` (e.g. `Ctrl+Shift+a`)
78
86
  * and returns the corresponding `KeyboardShortcut`.
79
87
  */
80
- KeyBinding.fromString = function (shortcutStr) {
81
- var _a;
82
- var hasNoModifiers = shortcutStr.search(/[-+]/) === -1 || shortcutStr.length === 1;
83
- if (hasNoModifiers) {
84
- var lowercaseKey = shortcutStr.toLowerCase();
85
- // undefined: don't require or not require shift.
86
- var shiftKey_1 = undefined;
88
+ static fromString(shortcutStr) {
89
+ const getDefaultModifiers = (key) => {
90
+ // Unless a letter, as long as the given key matches, it shouldn't matter whether
91
+ // the shift key is pressed.
92
+ let shiftKey = undefined;
93
+ if (isUppercaseLetter(key)) {
94
+ shiftKey = true;
95
+ }
96
+ else if (isLowercaseLetter(key)) {
97
+ shiftKey = false;
98
+ }
99
+ // If not just a single character (e.g. a key code like KeyA), shift must
100
+ // be specified manually.
101
+ else if (key.length > 1) {
102
+ shiftKey = false;
103
+ }
104
+ const lowercaseKey = key.toLowerCase();
87
105
  // shiftKey should always be true if the key is 'shift'
88
106
  if (lowercaseKey === 'shift') {
89
- shiftKey_1 = true;
107
+ shiftKey = true;
90
108
  }
91
- return new KeyBinding({
92
- key: shortcutStr,
93
- shiftKey: shiftKey_1,
109
+ return {
110
+ shiftKey,
94
111
  ctrlKey: lowercaseKey === 'control' || lowercaseKey === 'ctrl',
95
112
  altKey: lowercaseKey === 'alt',
96
113
  metaKey: lowercaseKey === 'meta',
97
114
  controlOrMeta: lowercaseKey === 'control or meta' || lowercaseKey === 'ctrlormeta',
115
+ };
116
+ };
117
+ const hasNoModifiers = shortcutStr.search(/[-+]/) === -1 || shortcutStr.length === 1;
118
+ if (hasNoModifiers) {
119
+ const modifiers = getDefaultModifiers(shortcutStr);
120
+ return new KeyBinding({
121
+ key: shortcutStr,
122
+ ...modifiers,
98
123
  });
99
124
  }
100
- var keyModifiersExp = /^(.*[-+])?(.+)$/g;
101
- var match = keyModifiersExp.exec(shortcutStr);
125
+ const keyModifiersExp = /^(.*[-+])?(.+)$/g;
126
+ const match = keyModifiersExp.exec(shortcutStr);
102
127
  if (!match) {
103
- throw new Error("Invalid shortcut expression, ".concat(shortcutStr, "!"));
128
+ throw new Error(`Invalid shortcut expression, ${shortcutStr}!`);
104
129
  }
105
- var key = match[2];
106
- var modifiers = ((_a = match[1]) !== null && _a !== void 0 ? _a : '').split(/[-+]/);
107
- var shiftKey = undefined;
108
- var ctrlKey = false;
109
- var altKey = false;
110
- var metaKey = false;
111
- var controlOrMeta = false;
112
- for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) {
113
- var modifier = modifiers_1[_i];
130
+ const key = match[2];
131
+ const defaultModifiers = getDefaultModifiers(key);
132
+ const modifierStrings = (match[1] ?? '').split(/[-+]/);
133
+ let shiftKey = defaultModifiers.shiftKey;
134
+ let ctrlKey = defaultModifiers.ctrlKey;
135
+ let altKey = defaultModifiers.altKey;
136
+ let metaKey = defaultModifiers.metaKey;
137
+ let controlOrMeta = defaultModifiers.controlOrMeta;
138
+ for (const modifier of modifierStrings) {
114
139
  if (modifier === '') {
115
140
  continue;
116
141
  }
@@ -118,8 +143,8 @@ var KeyBinding = /** @class */ (function () {
118
143
  case 'shift':
119
144
  shiftKey = true;
120
145
  break;
121
- case 'noshift':
122
- shiftKey = false;
146
+ case 'anyshift':
147
+ shiftKey = undefined;
123
148
  break;
124
149
  case 'ctrl':
125
150
  case 'control':
@@ -137,19 +162,17 @@ var KeyBinding = /** @class */ (function () {
137
162
  altKey = true;
138
163
  break;
139
164
  default:
140
- throw new Error("Unknown modifier: \"".concat(modifier, "\" in shortcut ").concat(shortcutStr, "."));
165
+ throw new Error(`Unknown modifier: "${modifier}" in shortcut ${shortcutStr}.`);
141
166
  }
142
167
  }
143
- var shortcut = new KeyBinding({
144
- key: key,
145
- shiftKey: shiftKey,
146
- ctrlKey: ctrlKey,
147
- altKey: altKey,
148
- metaKey: metaKey,
149
- controlOrMeta: controlOrMeta,
168
+ const shortcut = new KeyBinding({
169
+ key,
170
+ shiftKey,
171
+ ctrlKey,
172
+ altKey,
173
+ metaKey,
174
+ controlOrMeta,
150
175
  });
151
176
  return shortcut;
152
- };
153
- return KeyBinding;
154
- }());
155
- export default KeyBinding;
177
+ }
178
+ }
@@ -59,7 +59,7 @@ export default class KeyboardShortcutManager {
59
59
  *
60
60
  * @see {@link getShortcutDescription}
61
61
  */
62
- static getAllShortcutIds(): any[];
62
+ static getAllShortcutIds(): string[];
63
63
  /**
64
64
  * Get the default keybindings associated with a keyboard shortcut.
65
65
  *
@@ -1,27 +1,18 @@
1
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
- if (ar || !(i in from)) {
4
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
- ar[i] = from[i];
6
- }
7
- }
8
- return to.concat(ar || Array.prototype.slice.call(from));
9
- };
10
1
  import { matchingLocalizationTable } from '../localizations/getLocalizationTable.mjs';
11
2
  import KeyBinding from './KeyBinding.mjs';
12
3
  /**
13
4
  * Allows adding/changing keyboard shortcuts. This class provides static methods for registering
14
5
  * default shortcuts. An instance of this class must be used to access or change keyboard shortcuts.
15
6
  */
16
- var KeyboardShortcutManager = /** @class */ (function () {
7
+ class KeyboardShortcutManager {
17
8
  /**
18
9
  * Creates a new `ShortcutManager` with an initial set of shortcut overrides.
19
10
  *
20
11
  * @internal
21
12
  */
22
- function KeyboardShortcutManager(initialOverrides) {
13
+ constructor(initialOverrides) {
23
14
  this.shortcutOverrides = Object.create(null);
24
- for (var id in initialOverrides) {
15
+ for (const id in initialOverrides) {
25
16
  this.overrideShortcut(id, initialOverrides[id]);
26
17
  }
27
18
  }
@@ -29,30 +20,29 @@ var KeyboardShortcutManager = /** @class */ (function () {
29
20
  * Override an existing shortcut with a custom set of triggers.
30
21
  * @internal
31
22
  */
32
- KeyboardShortcutManager.prototype.overrideShortcut = function (shortcutId, overrideWith) {
33
- this.shortcutOverrides[shortcutId] = __spreadArray([], overrideWith, true);
34
- };
23
+ overrideShortcut(shortcutId, overrideWith) {
24
+ this.shortcutOverrides[shortcutId] = [...overrideWith];
25
+ }
35
26
  /** Returns true if `keyEvent` matches the shortcut with `shortcutId`. @internal */
36
- KeyboardShortcutManager.prototype.matchesShortcut = function (shortcutId, keyEvent) {
27
+ matchesShortcut(shortcutId, keyEvent) {
37
28
  // Get all shortcucts associated with `shortcutId`.
38
- var shortcutList = this.shortcutOverrides[shortcutId];
29
+ let shortcutList = this.shortcutOverrides[shortcutId];
39
30
  if (!shortcutList) {
40
31
  if (shortcutId in KeyboardShortcutManager.shortcuts) {
41
32
  shortcutList = KeyboardShortcutManager.shortcuts[shortcutId];
42
33
  }
43
34
  else {
44
- throw new Error("No shortcut with ID ".concat(shortcutId, " exists!"));
35
+ throw new Error(`No shortcut with ID ${shortcutId} exists!`);
45
36
  }
46
37
  }
47
38
  // return true if keyEvent matches *any* shortcuts in shortcutList
48
- for (var _i = 0, shortcutList_1 = shortcutList; _i < shortcutList_1.length; _i++) {
49
- var shortcut = shortcutList_1[_i];
39
+ for (const shortcut of shortcutList) {
50
40
  if (shortcut.matchesEvent(keyEvent)) {
51
41
  return true;
52
42
  }
53
43
  }
54
44
  return false;
55
- };
45
+ }
56
46
  /**
57
47
  * Registers a default keyboard shortcut that can be overridden by individual instances
58
48
  * of `ShortcutManager`. Note that `id` should be a globally unique identifier.
@@ -82,65 +72,63 @@ var KeyboardShortcutManager = /** @class */ (function () {
82
72
  *
83
73
  * @internal
84
74
  */
85
- KeyboardShortcutManager.registerDefaultKeyboardShortcut = function (id, shortcuts, defaultDescription) {
75
+ static registerDefaultKeyboardShortcut(id, shortcuts, defaultDescription) {
86
76
  if (id in KeyboardShortcutManager.shortcuts) {
87
77
  return false;
88
78
  }
89
79
  // Convert the strings to shortcut maps.
90
- var shortcutsAsShortcuts = shortcuts.map(function (shortcut) {
80
+ const shortcutsAsShortcuts = shortcuts.map(shortcut => {
91
81
  if (typeof (shortcut) === 'string') {
92
82
  return KeyBinding.fromString(shortcut);
93
83
  }
94
84
  return shortcut;
95
85
  });
96
- KeyboardShortcutManager.shortcuts[id] = __spreadArray([], shortcutsAsShortcuts, true);
86
+ KeyboardShortcutManager.shortcuts[id] = [...shortcutsAsShortcuts];
97
87
  KeyboardShortcutManager.shortcutDefaultDescriptions[id] = defaultDescription;
98
88
  return true;
99
- };
89
+ }
100
90
  /** Provides a localized description of a keyboard shortcut. @internal */
101
- KeyboardShortcutManager.provideShortcutDescription = function (id, locale, description) {
91
+ static provideShortcutDescription(id, locale, description) {
102
92
  if (!(locale in KeyboardShortcutManager.shortcutLocalizedDescriptions)) {
103
93
  KeyboardShortcutManager.shortcutLocalizedDescriptions[locale] = Object.create(null);
104
94
  }
105
95
  KeyboardShortcutManager.shortcutLocalizedDescriptions[locale][id] = description;
106
- };
96
+ }
107
97
  /**
108
98
  * Gets all registered keyboard shortcut IDs.
109
99
  *
110
100
  * @see {@link getShortcutDescription}
111
101
  */
112
- KeyboardShortcutManager.getAllShortcutIds = function () {
113
- var ids = [];
114
- for (var id in this.shortcuts) {
102
+ static getAllShortcutIds() {
103
+ const ids = [];
104
+ for (const id in this.shortcuts) {
115
105
  ids.push(id);
116
106
  }
117
107
  return ids;
118
- };
108
+ }
119
109
  /**
120
110
  * Get the default keybindings associated with a keyboard shortcut.
121
111
  *
122
112
  * Any keybinding in the resultant list, by default, can trigger the function associated
123
113
  * with the shortcut.
124
114
  */
125
- KeyboardShortcutManager.getShortcutDefaultKeybindings = function (shortcutId) {
115
+ static getShortcutDefaultKeybindings(shortcutId) {
126
116
  if (!(shortcutId in KeyboardShortcutManager.shortcuts)) {
127
- throw new Error("No shortcut with ID ".concat(shortcutId, " exists!"));
117
+ throw new Error(`No shortcut with ID ${shortcutId} exists!`);
128
118
  }
129
119
  return KeyboardShortcutManager.shortcuts[shortcutId];
130
- };
120
+ }
131
121
  /**
132
122
  * Get a description of a keyboard shortcut.
133
123
  *
134
124
  * `localeList`, if given, attempts to
135
125
  */
136
- KeyboardShortcutManager.getShortcutDescription = function (id, localeList) {
137
- var _a, _b;
138
- var localizationTable = matchingLocalizationTable(localeList !== null && localeList !== void 0 ? localeList : [], this.shortcutLocalizedDescriptions, this.shortcutDefaultDescriptions);
139
- return (_b = (_a = localizationTable[id]) !== null && _a !== void 0 ? _a : this.shortcutDefaultDescriptions[id]) !== null && _b !== void 0 ? _b : null;
140
- };
141
- KeyboardShortcutManager.shortcuts = Object.create(null);
142
- KeyboardShortcutManager.shortcutDefaultDescriptions = Object.create(null);
143
- KeyboardShortcutManager.shortcutLocalizedDescriptions = Object.create(null);
144
- return KeyboardShortcutManager;
145
- }());
126
+ static getShortcutDescription(id, localeList) {
127
+ const localizationTable = matchingLocalizationTable(localeList ?? [], this.shortcutLocalizedDescriptions, this.shortcutDefaultDescriptions);
128
+ return localizationTable[id] ?? this.shortcutDefaultDescriptions[id] ?? null;
129
+ }
130
+ }
131
+ KeyboardShortcutManager.shortcuts = Object.create(null);
132
+ KeyboardShortcutManager.shortcutDefaultDescriptions = Object.create(null);
133
+ KeyboardShortcutManager.shortcutLocalizedDescriptions = Object.create(null);
146
134
  export default KeyboardShortcutManager;
@@ -1,9 +1,9 @@
1
1
  import { RenderingMode } from '../rendering/Display.mjs';
2
2
  import Editor from '../Editor.mjs';
3
3
  /** Creates an editor. Should only be used in test files. */
4
- export default (function () {
4
+ export default () => {
5
5
  if (jest === undefined) {
6
6
  throw new Error('Files in the testing/ folder should only be used in tests!');
7
7
  }
8
8
  return new Editor(document.body, { renderingMode: RenderingMode.DummyRenderer });
9
- });
9
+ };
@@ -1,10 +1,9 @@
1
1
  /** Returns the smallest ID not used by the pointers in the given list. */
2
- var getUniquePointerId = function (pointers) {
3
- var ptrId = 0;
4
- var pointerIds = pointers.map(function (ptr) { return ptr.id; });
2
+ const getUniquePointerId = (pointers) => {
3
+ let ptrId = 0;
4
+ const pointerIds = pointers.map(ptr => ptr.id);
5
5
  pointerIds.sort();
6
- for (var _i = 0, pointerIds_1 = pointerIds; _i < pointerIds_1.length; _i++) {
7
- var pointerId = pointerIds_1[_i];
6
+ for (const pointerId of pointerIds) {
8
7
  if (ptrId === pointerId) {
9
8
  ptrId = pointerId + 1;
10
9
  }
@@ -1,7 +1,7 @@
1
1
  import Editor from '../Editor';
2
- import { Point2 } from '../math/Vec2';
2
+ import { Point2 } from '@js-draw/math';
3
3
  import Pointer from '../Pointer';
4
- import { InputEvtType } from '../types';
4
+ import { InputEvtType } from '../inputEvents';
5
5
  /**
6
6
  * Dispatch a pen event to the currently selected tool.
7
7
  * Intended for unit tests.
@@ -1,5 +1,5 @@
1
1
  import Pointer from '../Pointer.mjs';
2
- import { InputEvtType } from '../types.mjs';
2
+ import { InputEvtType } from '../inputEvents.mjs';
3
3
  import getUniquePointerId from './getUniquePointerId.mjs';
4
4
  /**
5
5
  * Dispatch a pen event to the currently selected tool.
@@ -7,12 +7,12 @@ import getUniquePointerId from './getUniquePointerId.mjs';
7
7
  *
8
8
  * @see {@link sendTouchEvent}
9
9
  */
10
- var sendPenEvent = function (editor, eventType, point, allPointers) {
11
- var id = getUniquePointerId(allPointers !== null && allPointers !== void 0 ? allPointers : []);
12
- var mainPointer = Pointer.ofCanvasPoint(point, eventType !== InputEvtType.PointerUpEvt, editor.viewport, id);
10
+ const sendPenEvent = (editor, eventType, point, allPointers) => {
11
+ const id = getUniquePointerId(allPointers ?? []);
12
+ const mainPointer = Pointer.ofCanvasPoint(point, eventType !== InputEvtType.PointerUpEvt, editor.viewport, id);
13
13
  editor.toolController.dispatchInputEvent({
14
14
  kind: eventType,
15
- allPointers: allPointers !== null && allPointers !== void 0 ? allPointers : [
15
+ allPointers: allPointers ?? [
16
16
  mainPointer,
17
17
  ],
18
18
  current: mainPointer,
@@ -1,7 +1,7 @@
1
1
  import Editor from '../Editor';
2
- import { Vec2 } from '../math/Vec2';
2
+ import { Vec2 } from '@js-draw/math';
3
3
  import Pointer from '../Pointer';
4
- import { InputEvtType } from '../types';
4
+ import { InputEvtType } from '../inputEvents';
5
5
  /**
6
6
  * Dispatch a touch event to the currently selected tool. Intended for unit tests.
7
7
  *