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,58 +1,58 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.makeOutlinedRectangleBuilder = exports.makeFilledRectangleBuilder = void 0;
4
- var Mat33_1 = require("../../math/Mat33");
5
- var Path_1 = require("../../math/shapes/Path");
6
- var Rect2_1 = require("../../math/shapes/Rect2");
7
- var Stroke_1 = require("../Stroke");
8
- var makeFilledRectangleBuilder = function (initialPoint, viewport) {
7
+ const math_1 = require("@js-draw/math");
8
+ const RenderablePathSpec_1 = require("../../rendering/RenderablePathSpec");
9
+ const Stroke_1 = __importDefault(require("../Stroke"));
10
+ const makeFilledRectangleBuilder = (initialPoint, viewport) => {
9
11
  return new RectangleBuilder(initialPoint, true, viewport);
10
12
  };
11
13
  exports.makeFilledRectangleBuilder = makeFilledRectangleBuilder;
12
- var makeOutlinedRectangleBuilder = function (initialPoint, viewport) {
14
+ const makeOutlinedRectangleBuilder = (initialPoint, viewport) => {
13
15
  return new RectangleBuilder(initialPoint, false, viewport);
14
16
  };
15
17
  exports.makeOutlinedRectangleBuilder = makeOutlinedRectangleBuilder;
16
- var RectangleBuilder = /** @class */ (function () {
17
- function RectangleBuilder(startPoint, filled, viewport) {
18
+ class RectangleBuilder {
19
+ constructor(startPoint, filled, viewport) {
18
20
  this.startPoint = startPoint;
19
21
  this.filled = filled;
20
22
  this.viewport = viewport;
21
23
  // Initially, the start and end points are the same.
22
24
  this.endPoint = startPoint;
23
25
  }
24
- RectangleBuilder.prototype.getBBox = function () {
25
- var preview = this.buildPreview();
26
+ getBBox() {
27
+ const preview = this.buildPreview();
26
28
  return preview.getBBox();
27
- };
28
- RectangleBuilder.prototype.buildPreview = function () {
29
- var _this = this;
30
- var canvasAngle = this.viewport.getRotationAngle();
31
- var rotationMat = Mat33_1.default.zRotation(-canvasAngle);
29
+ }
30
+ buildPreview() {
31
+ const canvasAngle = this.viewport.getRotationAngle();
32
+ const rotationMat = math_1.Mat33.zRotation(-canvasAngle);
32
33
  // Adjust startPoint and endPoint such that applying [rotationMat] to them
33
34
  // brings them to this.startPoint and this.endPoint.
34
- var startPoint = rotationMat.inverse().transformVec2(this.startPoint.pos);
35
- var endPoint = rotationMat.inverse().transformVec2(this.endPoint.pos);
36
- var rect = Rect2_1.default.fromCorners(startPoint, endPoint);
37
- var path = Path_1.default.fromRect(rect, this.filled ? null : this.endPoint.width).transformedBy(
35
+ const startPoint = rotationMat.inverse().transformVec2(this.startPoint.pos);
36
+ const endPoint = rotationMat.inverse().transformVec2(this.endPoint.pos);
37
+ const rect = math_1.Rect2.fromCorners(startPoint, endPoint);
38
+ const path = math_1.Path.fromRect(rect, this.filled ? null : this.endPoint.width).transformedBy(
38
39
  // Rotate the canvas rectangle so that its rotation matches the screen
39
- rotationMat).mapPoints(function (point) { return _this.viewport.roundPoint(point); });
40
- var preview = new Stroke_1.default([
41
- path.toRenderable({
40
+ rotationMat).mapPoints(point => this.viewport.roundPoint(point));
41
+ const preview = new Stroke_1.default([
42
+ (0, RenderablePathSpec_1.pathToRenderable)(path, {
42
43
  fill: this.endPoint.color
43
44
  }),
44
45
  ]);
45
46
  return preview;
46
- };
47
- RectangleBuilder.prototype.build = function () {
47
+ }
48
+ build() {
48
49
  return this.buildPreview();
49
- };
50
- RectangleBuilder.prototype.preview = function (renderer) {
50
+ }
51
+ preview(renderer) {
51
52
  this.buildPreview().render(renderer);
52
- };
53
- RectangleBuilder.prototype.addPoint = function (point) {
53
+ }
54
+ addPoint(point) {
54
55
  this.endPoint = point;
55
- };
56
- return RectangleBuilder;
57
- }());
56
+ }
57
+ }
58
58
  exports.default = RectangleBuilder;
@@ -1,4 +1,4 @@
1
- import Rect2 from '../../math/shapes/Rect2';
1
+ import { Rect2 } from '@js-draw/math';
2
2
  import AbstractRenderer from '../../rendering/renderers/AbstractRenderer';
3
3
  import { StrokeDataPoint } from '../../types';
4
4
  import Viewport from '../../Viewport';
@@ -11,4 +11,6 @@ import ImageComponent from './ImageComponent';
11
11
  import RestyleableComponent from './RestylableComponent';
12
12
  import { createRestyleComponentCommand, isRestylableComponent, ComponentStyle as RestyleableComponentStyle } from './RestylableComponent';
13
13
  import BackgroundComponent from './BackgroundComponent';
14
- export { Stroke, RestyleableComponent, createRestyleComponentCommand, isRestylableComponent, RestyleableComponentStyle, TextComponent, TextComponent as Text, Stroke as StrokeComponent, BackgroundComponent, ImageComponent, };
14
+ export { Stroke, RestyleableComponent, createRestyleComponentCommand, isRestylableComponent, RestyleableComponentStyle, TextComponent,
15
+ /** @deprecated use {@link TextComponent} */
16
+ TextComponent as Text, Stroke as StrokeComponent, BackgroundComponent, ImageComponent, };
@@ -13,6 +13,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
16
19
  Object.defineProperty(exports, "__esModule", { value: true });
17
20
  exports.ImageComponent = exports.BackgroundComponent = exports.StrokeComponent = exports.Text = exports.TextComponent = exports.isRestylableComponent = exports.createRestyleComponentCommand = exports.Stroke = exports.AbstractComponent = exports.StrokeSmoother = exports.makeOutlinedCircleBuilder = exports.makePressureSensitiveFreehandLineBuilder = exports.makeFreehandLineBuilder = void 0;
18
21
  __exportStar(require("./builders/types"), exports);
@@ -23,20 +26,20 @@ Object.defineProperty(exports, "makePressureSensitiveFreehandLineBuilder", { enu
23
26
  var CircleBuilder_1 = require("./builders/CircleBuilder");
24
27
  Object.defineProperty(exports, "makeOutlinedCircleBuilder", { enumerable: true, get: function () { return CircleBuilder_1.makeOutlinedCircleBuilder; } });
25
28
  var StrokeSmoother_1 = require("./util/StrokeSmoother");
26
- Object.defineProperty(exports, "StrokeSmoother", { enumerable: true, get: function () { return StrokeSmoother_1.default; } });
29
+ Object.defineProperty(exports, "StrokeSmoother", { enumerable: true, get: function () { return __importDefault(StrokeSmoother_1).default; } });
27
30
  __exportStar(require("./AbstractComponent"), exports);
28
31
  var AbstractComponent_1 = require("./AbstractComponent");
29
- Object.defineProperty(exports, "AbstractComponent", { enumerable: true, get: function () { return AbstractComponent_1.default; } });
30
- var Stroke_1 = require("./Stroke");
32
+ Object.defineProperty(exports, "AbstractComponent", { enumerable: true, get: function () { return __importDefault(AbstractComponent_1).default; } });
33
+ const Stroke_1 = __importDefault(require("./Stroke"));
31
34
  exports.Stroke = Stroke_1.default;
32
35
  exports.StrokeComponent = Stroke_1.default;
33
- var TextComponent_1 = require("./TextComponent");
36
+ const TextComponent_1 = __importDefault(require("./TextComponent"));
34
37
  exports.TextComponent = TextComponent_1.default;
35
38
  exports.Text = TextComponent_1.default;
36
- var ImageComponent_1 = require("./ImageComponent");
39
+ const ImageComponent_1 = __importDefault(require("./ImageComponent"));
37
40
  exports.ImageComponent = ImageComponent_1.default;
38
- var RestylableComponent_1 = require("./RestylableComponent");
41
+ const RestylableComponent_1 = require("./RestylableComponent");
39
42
  Object.defineProperty(exports, "createRestyleComponentCommand", { enumerable: true, get: function () { return RestylableComponent_1.createRestyleComponentCommand; } });
40
43
  Object.defineProperty(exports, "isRestylableComponent", { enumerable: true, get: function () { return RestylableComponent_1.isRestylableComponent; } });
41
- var BackgroundComponent_1 = require("./BackgroundComponent");
44
+ const BackgroundComponent_1 = __importDefault(require("./BackgroundComponent"));
42
45
  exports.BackgroundComponent = BackgroundComponent_1.default;
@@ -7,8 +7,8 @@ exports.defaultComponentLocalization = {
7
7
  svgObject: 'SVG Object',
8
8
  emptyBackground: 'Empty background',
9
9
  gridBackground: 'Grid background',
10
- filledBackgroundWithColor: function (color) { return "Filled background (".concat(color, ")"); },
11
- text: function (text) { return "Text object: ".concat(text); },
12
- imageNode: function (description) { return "Image: ".concat(description); },
13
- restyledElement: function (elementDescription) { return "Restyled ".concat(elementDescription); },
10
+ filledBackgroundWithColor: (color) => `Filled background (${color})`,
11
+ text: (text) => `Text object: ${text}`,
12
+ imageNode: (description) => `Image: ${description}`,
13
+ restyledElement: (elementDescription) => `Restyled ${elementDescription}`,
14
14
  };
@@ -1,5 +1,4 @@
1
- import { Vec2 } from '../../math/Vec2';
2
- import Rect2 from '../../math/shapes/Rect2';
1
+ import { Vec2, Rect2 } from '@js-draw/math';
3
2
  import { StrokeDataPoint } from '../../types';
4
3
  export interface Curve {
5
4
  startPoint: Vec2;
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StrokeSmoother = void 0;
4
- var Vec2_1 = require("../../math/Vec2");
5
- var Rect2_1 = require("../../math/shapes/Rect2");
6
- var LineSegment2_1 = require("../../math/shapes/LineSegment2");
7
- var QuadraticBezier_1 = require("../../math/shapes/QuadraticBezier");
4
+ const math_1 = require("@js-draw/math");
8
5
  // Handles stroke smoothing
9
- var StrokeSmoother = /** @class */ (function () {
10
- function StrokeSmoother(startPoint,
6
+ class StrokeSmoother {
7
+ constructor(startPoint,
11
8
  // Maximum distance from the actual curve (irrespective of stroke width)
12
9
  // for which a point is considered 'part of the curve'.
13
10
  // Note that the maximum will be smaller if the stroke width is less than
@@ -22,39 +19,39 @@ var StrokeSmoother = /** @class */ (function () {
22
19
  this.currentCurve = null;
23
20
  this.lastPoint = this.startPoint;
24
21
  this.buffer = [this.startPoint.pos];
25
- this.momentum = Vec2_1.Vec2.zero;
22
+ this.momentum = math_1.Vec2.zero;
26
23
  this.currentCurve = null;
27
24
  this.curveStartWidth = startPoint.width;
28
- this.bbox = new Rect2_1.default(this.startPoint.pos.x, this.startPoint.pos.y, 0, 0);
25
+ this.bbox = new math_1.Rect2(this.startPoint.pos.x, this.startPoint.pos.y, 0, 0);
29
26
  }
30
- StrokeSmoother.prototype.getBBox = function () {
27
+ getBBox() {
31
28
  return this.bbox;
32
- };
33
- StrokeSmoother.prototype.preview = function () {
29
+ }
30
+ preview() {
34
31
  if (!this.currentCurve) {
35
32
  return null;
36
33
  }
37
34
  return this.currentSegmentToPath();
38
- };
35
+ }
39
36
  // Returns the distance between the start, control, and end points of the curve.
40
- StrokeSmoother.prototype.approxCurrentCurveLength = function () {
37
+ approxCurrentCurveLength() {
41
38
  if (!this.currentCurve) {
42
39
  return 0;
43
40
  }
44
- var startPt = this.currentCurve.p0;
45
- var controlPt = this.currentCurve.p1;
46
- var endPt = this.currentCurve.p2;
47
- var toControlDist = startPt.minus(controlPt).length();
48
- var toEndDist = endPt.minus(controlPt).length();
41
+ const startPt = this.currentCurve.p0;
42
+ const controlPt = this.currentCurve.p1;
43
+ const endPt = this.currentCurve.p2;
44
+ const toControlDist = startPt.minus(controlPt).length();
45
+ const toEndDist = endPt.minus(controlPt).length();
49
46
  return toControlDist + toEndDist;
50
- };
51
- StrokeSmoother.prototype.finalizeCurrentCurve = function () {
47
+ }
48
+ finalizeCurrentCurve() {
52
49
  // Case where no points have been added
53
50
  if (!this.currentCurve) {
54
51
  return;
55
52
  }
56
53
  this.onCurveAdded(this.currentSegmentToPath());
57
- var lastPoint = this.buffer[this.buffer.length - 1];
54
+ const lastPoint = this.buffer[this.buffer.length - 1];
58
55
  this.lastExitingVec = this.currentCurve.p2.minus(this.currentCurve.p1);
59
56
  console.assert(this.lastExitingVec.magnitude() !== 0, 'lastExitingVec has zero length!');
60
57
  // Use the last two points to start a new curve (the last point isn't used
@@ -64,38 +61,36 @@ var StrokeSmoother = /** @class */ (function () {
64
61
  ];
65
62
  this.currentCurve = null;
66
63
  this.isFirstSegment = false;
67
- };
64
+ }
68
65
  // Returns [upper curve, connector, lower curve]
69
- StrokeSmoother.prototype.currentSegmentToPath = function () {
66
+ currentSegmentToPath() {
70
67
  if (this.currentCurve == null) {
71
68
  throw new Error('Invalid State: currentCurve is null!');
72
69
  }
73
- var startVec = this.currentCurve.normal(0).normalized();
70
+ const startVec = this.currentCurve.normal(0).normalized();
74
71
  if (!isFinite(startVec.magnitude())) {
75
- throw new Error("startVec(".concat(startVec, ") is NaN or \u221E"));
72
+ throw new Error(`startVec(${startVec}) is NaN or ∞`);
76
73
  }
77
- var startPt = this.currentCurve.at(0);
78
- var endPt = this.currentCurve.at(1);
79
- var controlPoint = this.currentCurve.p1;
74
+ const startPt = this.currentCurve.at(0);
75
+ const endPt = this.currentCurve.at(1);
76
+ const controlPoint = this.currentCurve.p1;
80
77
  return {
81
78
  startPoint: startPt,
82
- controlPoint: controlPoint,
79
+ controlPoint,
83
80
  endPoint: endPt,
84
81
  startWidth: this.curveStartWidth,
85
82
  endWidth: this.curveEndWidth,
86
83
  };
87
- };
84
+ }
88
85
  // Compute the direction of the velocity at the end of this.buffer
89
- StrokeSmoother.prototype.computeExitingVec = function () {
86
+ computeExitingVec() {
90
87
  return this.momentum.normalized().times(this.lastPoint.width / 2);
91
- };
92
- StrokeSmoother.prototype.addPoint = function (newPoint) {
93
- var _this = this;
94
- var _a, _b;
88
+ }
89
+ addPoint(newPoint) {
95
90
  if (this.lastPoint) {
96
91
  // Ignore points that are identical
97
- var fuzzEq = 1e-10;
98
- var deltaTime = newPoint.time - this.lastPoint.time;
92
+ const fuzzEq = 1e-10;
93
+ const deltaTime = newPoint.time - this.lastPoint.time;
99
94
  if (newPoint.pos.eq(this.lastPoint.pos, fuzzEq) || deltaTime === 0) {
100
95
  return;
101
96
  }
@@ -103,8 +98,8 @@ var StrokeSmoother = /** @class */ (function () {
103
98
  console.warn('Discarding NaN point.', newPoint);
104
99
  return;
105
100
  }
106
- var threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
107
- var shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
101
+ const threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
102
+ const shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
108
103
  && this.isFirstSegment;
109
104
  // Snap to the starting point if the stroke is contained within a small ball centered
110
105
  // at the starting point.
@@ -112,24 +107,26 @@ var StrokeSmoother = /** @class */ (function () {
112
107
  if (shouldSnapToInitial) {
113
108
  return;
114
109
  }
115
- var velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / (deltaTime) * 1000);
116
- this.momentum = this.momentum.lerp(velocity, 0.9);
110
+ const deltaTimeSeconds = deltaTime / 1000;
111
+ const velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / deltaTimeSeconds);
112
+ // TODO: Do we need momentum smoothing? (this.momentum.lerp(velocity, 0.9);)
113
+ this.momentum = velocity;
117
114
  }
118
- var lastPoint = (_a = this.lastPoint) !== null && _a !== void 0 ? _a : newPoint;
115
+ const lastPoint = this.lastPoint ?? newPoint;
119
116
  this.lastPoint = newPoint;
120
117
  this.buffer.push(newPoint.pos);
121
- var pointRadius = newPoint.width;
122
- var prevEndWidth = this.curveEndWidth;
118
+ const pointRadius = newPoint.width;
119
+ const prevEndWidth = this.curveEndWidth;
123
120
  this.curveEndWidth = pointRadius;
124
121
  // recompute bbox
125
122
  this.bbox = this.bbox.grownToPoint(newPoint.pos, pointRadius);
126
123
  // If the last curve just ended or it's the first curve,
127
124
  if (this.currentCurve === null) {
128
- var p1 = lastPoint.pos;
129
- var p2 = lastPoint.pos.plus((_b = this.lastExitingVec) !== null && _b !== void 0 ? _b : Vec2_1.Vec2.unitX);
130
- var p3 = newPoint.pos;
125
+ const p1 = lastPoint.pos;
126
+ const p2 = lastPoint.pos.plus(this.lastExitingVec ?? math_1.Vec2.unitX);
127
+ const p3 = newPoint.pos;
131
128
  // Quadratic Bézier curve
132
- this.currentCurve = new QuadraticBezier_1.default(p1, p2, p3);
129
+ this.currentCurve = new math_1.QuadraticBezier(p1, p2, p3);
133
130
  console.assert(!isNaN(p1.magnitude()) && !isNaN(p2.magnitude()) && !isNaN(p3.magnitude()), 'Expected !NaN');
134
131
  if (this.isFirstSegment) {
135
132
  // The start of a curve often lacks accurate pressure information. Update it.
@@ -140,21 +137,21 @@ var StrokeSmoother = /** @class */ (function () {
140
137
  }
141
138
  }
142
139
  // If there isn't an entering vector (e.g. because this.isFirstCurve), approximate it.
143
- var enteringVec = this.lastExitingVec;
140
+ let enteringVec = this.lastExitingVec;
144
141
  if (!enteringVec) {
145
- var sampleIdx = Math.ceil(this.buffer.length / 2);
142
+ let sampleIdx = Math.ceil(this.buffer.length / 2);
146
143
  if (sampleIdx === 0 || sampleIdx >= this.buffer.length) {
147
144
  sampleIdx = this.buffer.length - 1;
148
145
  }
149
146
  enteringVec = this.buffer[sampleIdx].minus(this.buffer[0]);
150
147
  }
151
- var exitingVec = this.computeExitingVec();
148
+ let exitingVec = this.computeExitingVec();
152
149
  // Find the intersection between the entering vector and the exiting vector
153
- var maxRelativeLength = 2;
154
- var segmentStart = this.buffer[0];
155
- var segmentEnd = newPoint.pos;
156
- var startEndDist = segmentEnd.minus(segmentStart).magnitude();
157
- var maxControlPointDist = maxRelativeLength * startEndDist;
150
+ const maxRelativeLength = 2.4;
151
+ const segmentStart = this.buffer[0];
152
+ const segmentEnd = newPoint.pos;
153
+ const startEndDist = segmentEnd.minus(segmentStart).magnitude();
154
+ const maxControlPointDist = maxRelativeLength * startEndDist;
158
155
  // Exit in cases where we would divide by zero
159
156
  if (maxControlPointDist === 0 || exitingVec.magnitude() === 0 || !isFinite(exitingVec.magnitude())) {
160
157
  return;
@@ -163,11 +160,11 @@ var StrokeSmoother = /** @class */ (function () {
163
160
  enteringVec = enteringVec.normalized();
164
161
  exitingVec = exitingVec.normalized();
165
162
  console.assert(isFinite(enteringVec.magnitude()), 'Normalized enteringVec has NaN or ∞ magnitude!');
166
- var lineFromStart = new LineSegment2_1.default(segmentStart, segmentStart.plus(enteringVec.times(maxControlPointDist)));
167
- var lineFromEnd = new LineSegment2_1.default(segmentEnd.minus(exitingVec.times(maxControlPointDist)), segmentEnd);
168
- var intersection = lineFromEnd.intersection(lineFromStart);
163
+ const lineFromStart = new math_1.LineSegment2(segmentStart, segmentStart.plus(enteringVec.times(maxControlPointDist)));
164
+ const lineFromEnd = new math_1.LineSegment2(segmentEnd.minus(exitingVec.times(maxControlPointDist)), segmentEnd);
165
+ const intersection = lineFromEnd.intersection(lineFromStart);
169
166
  // Position the control point at this intersection
170
- var controlPoint = null;
167
+ let controlPoint = null;
171
168
  if (intersection) {
172
169
  controlPoint = intersection.point;
173
170
  }
@@ -179,23 +176,22 @@ var StrokeSmoother = /** @class */ (function () {
179
176
  }
180
177
  console.assert(!segmentStart.eq(controlPoint, 1e-11), 'Start and control points are equal!');
181
178
  console.assert(!controlPoint.eq(segmentEnd, 1e-11), 'Control and end points are equal!');
182
- var prevCurve = this.currentCurve;
183
- this.currentCurve = new QuadraticBezier_1.default(segmentStart, controlPoint, segmentEnd);
179
+ const prevCurve = this.currentCurve;
180
+ this.currentCurve = new math_1.QuadraticBezier(segmentStart, controlPoint, segmentEnd);
184
181
  if (isNaN(this.currentCurve.normal(0).magnitude())) {
185
182
  console.error('NaN normal at 0. Curve:', this.currentCurve);
186
183
  this.currentCurve = prevCurve;
187
184
  }
188
185
  // Should we start making a new curve? Check whether all buffer points are within
189
186
  // ±strokeWidth of the curve.
190
- var curveMatchesPoints = function (curve) {
191
- var minFit = Math.min(Math.max(Math.min(_this.curveStartWidth, _this.curveEndWidth) / 4, _this.minFitAllowed), _this.maxFitAllowed);
187
+ const curveMatchesPoints = (curve) => {
188
+ const minFit = Math.min(Math.max(Math.min(this.curveStartWidth, this.curveEndWidth) / 4, this.minFitAllowed), this.maxFitAllowed);
192
189
  // The sum of distances greater than minFit must not exceed this:
193
- var maxNonMatchingDistSum = minFit;
190
+ const maxNonMatchingDistSum = minFit;
194
191
  // Sum of distances greater than minFit.
195
- var nonMatchingDistSum = 0;
196
- for (var _i = 0, _a = _this.buffer; _i < _a.length; _i++) {
197
- var point = _a[_i];
198
- var dist = curve.approximateDistance(point);
192
+ let nonMatchingDistSum = 0;
193
+ for (const point of this.buffer) {
194
+ let dist = curve.approximateDistance(point);
199
195
  if (dist > minFit) {
200
196
  // Use the more accurate distance function
201
197
  dist = curve.distance(point);
@@ -218,8 +214,7 @@ var StrokeSmoother = /** @class */ (function () {
218
214
  return;
219
215
  }
220
216
  }
221
- };
222
- return StrokeSmoother;
223
- }());
217
+ }
218
+ }
224
219
  exports.StrokeSmoother = StrokeSmoother;
225
220
  exports.default = StrokeSmoother;
@@ -1,4 +1,4 @@
1
1
  import AbstractComponent from '../AbstractComponent';
2
2
  import { ImageComponentLocalization } from '../localization';
3
- declare const _default: (localizationTable: ImageComponentLocalization, elems: AbstractComponent[]) => string;
3
+ declare const _default: (localizationTable: ImageComponentLocalization, elems: AbstractComponent[]) => string | null;
4
4
  export default _default;
@@ -2,16 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // Returns the description of all given elements, if identical, otherwise,
4
4
  // returns null.
5
- exports.default = (function (localizationTable, elems) {
5
+ exports.default = (localizationTable, elems) => {
6
6
  if (elems.length === 0) {
7
7
  return null;
8
8
  }
9
- var description = elems[0].description(localizationTable);
10
- for (var _i = 0, elems_1 = elems; _i < elems_1.length; _i++) {
11
- var elem = elems_1[_i];
9
+ const description = elems[0].description(localizationTable);
10
+ for (const elem of elems) {
12
11
  if (elem.description(localizationTable) !== description) {
13
12
  return null;
14
13
  }
15
14
  }
16
15
  return description;
17
- });
16
+ };
@@ -0,0 +1,15 @@
1
+ import type Editor from '../Editor';
2
+ export interface AboutDialogLink {
3
+ kind: 'link';
4
+ text: string;
5
+ href: string;
6
+ }
7
+ export interface AboutDialogEntry {
8
+ heading: string | AboutDialogLink;
9
+ text?: string;
10
+ minimized?: boolean;
11
+ }
12
+ declare const makeAboutDialog: (editor: Editor, entries: AboutDialogEntry[]) => {
13
+ close: () => void;
14
+ };
15
+ export default makeAboutDialog;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const makeAboutDialog = (editor, entries) => {
4
+ const overlay = document.createElement('div');
5
+ const { remove: removeOverlay } = editor.createHTMLOverlay(overlay);
6
+ overlay.classList.add('dialog-container', 'about-dialog-container');
7
+ const dialog = document.createElement('dialog');
8
+ const heading = document.createElement('h1');
9
+ heading.innerText = editor.localization.about;
10
+ heading.setAttribute('autofocus', 'true');
11
+ const closeButton = document.createElement('button');
12
+ closeButton.innerText = editor.localization.closeDialog;
13
+ closeButton.classList.add('close-button');
14
+ closeButton.onclick = () => removeOverlay();
15
+ overlay.onclick = event => {
16
+ if (event.target === overlay) {
17
+ removeOverlay();
18
+ }
19
+ };
20
+ const licenseContainer = document.createElement('div');
21
+ licenseContainer.classList.add('about-entry-container');
22
+ // Allow scrolling in the license container -- don't forward wheel events.
23
+ licenseContainer.onwheel = evt => evt.stopPropagation();
24
+ for (const entry of entries) {
25
+ const container = document.createElement(entry.minimized ? 'details' : 'div');
26
+ container.classList.add('about-entry');
27
+ const header = document.createElement(entry.minimized ? 'summary' : 'h2');
28
+ if (typeof (entry.heading) === 'string') {
29
+ header.innerText = entry.heading;
30
+ }
31
+ else {
32
+ const link = document.createElement('a');
33
+ link.href = entry.heading.href.replace(/^javascript:/i, '');
34
+ link.text = entry.heading.text;
35
+ header.appendChild(link);
36
+ }
37
+ container.appendChild(header);
38
+ if (entry.text) {
39
+ const bodyText = document.createElement('div');
40
+ bodyText.innerText = entry.text;
41
+ container.appendChild(bodyText);
42
+ }
43
+ licenseContainer.appendChild(container);
44
+ }
45
+ dialog.replaceChildren(heading, licenseContainer, closeButton);
46
+ overlay.replaceChildren(dialog);
47
+ dialog.show();
48
+ return {
49
+ close: () => {
50
+ removeOverlay();
51
+ },
52
+ };
53
+ };
54
+ exports.default = makeAboutDialog;
@@ -0,0 +1,84 @@
1
+ import Pointer from './Pointer';
2
+ import { Point2, Vec3 } from '@js-draw/math';
3
+ export type HTMLPointerEventName = 'pointerdown' | 'pointermove' | 'pointerup' | 'pointercancel';
4
+ export type HTMLPointerEventFilter = (eventName: HTMLPointerEventName, event: PointerEvent) => boolean;
5
+ export interface PointerEvtListener {
6
+ onPointerDown(event: PointerEvt): boolean;
7
+ onPointerMove(event: PointerEvt): void;
8
+ onPointerUp(event: PointerEvt): void;
9
+ onGestureCancel(): void;
10
+ }
11
+ export declare enum InputEvtType {
12
+ PointerDownEvt = 0,
13
+ PointerMoveEvt = 1,
14
+ PointerUpEvt = 2,
15
+ GestureCancelEvt = 3,
16
+ WheelEvt = 4,
17
+ KeyPressEvent = 5,
18
+ KeyUpEvent = 6,
19
+ CopyEvent = 7,
20
+ PasteEvent = 8
21
+ }
22
+ export interface WheelEvt {
23
+ readonly kind: InputEvtType.WheelEvt;
24
+ readonly delta: Vec3;
25
+ readonly screenPos: Point2;
26
+ }
27
+ interface BaseKeyEvent {
28
+ readonly key: string;
29
+ readonly code: string;
30
+ readonly ctrlKey: boolean | undefined;
31
+ readonly altKey: boolean | undefined;
32
+ readonly shiftKey: boolean | undefined;
33
+ }
34
+ /**
35
+ * Represents a keydown or auto-repeated keydown event.
36
+ *
37
+ * Use {@link keyPressEventFromHTMLEvent} where possible rather than
38
+ * constructing directly (required properties may change between minor
39
+ * releases).
40
+ */
41
+ export interface KeyPressEvent extends BaseKeyEvent {
42
+ readonly kind: InputEvtType.KeyPressEvent;
43
+ }
44
+ /**
45
+ * Represents a key release or auto-repeated key releae event.
46
+ *
47
+ * Use {@link keyUpEventFromHTMLEvent} where possible rather than
48
+ * constructing directly (required properties may change between minor
49
+ * releases).
50
+ */
51
+ export interface KeyUpEvent extends BaseKeyEvent {
52
+ readonly kind: InputEvtType.KeyUpEvent;
53
+ }
54
+ export interface CopyEvent {
55
+ readonly kind: InputEvtType.CopyEvent;
56
+ setData(mime: string, data: string): void;
57
+ }
58
+ export interface PasteEvent {
59
+ readonly kind: InputEvtType.PasteEvent;
60
+ readonly data: string;
61
+ readonly mime: string;
62
+ }
63
+ export interface GestureCancelEvt {
64
+ readonly kind: InputEvtType.GestureCancelEvt;
65
+ }
66
+ interface PointerEvtBase {
67
+ readonly current: Pointer;
68
+ readonly allPointers: Pointer[];
69
+ }
70
+ export interface PointerDownEvt extends PointerEvtBase {
71
+ readonly kind: InputEvtType.PointerDownEvt;
72
+ }
73
+ export interface PointerMoveEvt extends PointerEvtBase {
74
+ readonly kind: InputEvtType.PointerMoveEvt;
75
+ }
76
+ export interface PointerUpEvt extends PointerEvtBase {
77
+ readonly kind: InputEvtType.PointerUpEvt;
78
+ }
79
+ export type PointerEvt = PointerDownEvt | PointerMoveEvt | PointerUpEvt;
80
+ export type InputEvt = KeyPressEvent | KeyUpEvent | WheelEvt | GestureCancelEvt | PointerEvt | CopyEvent | PasteEvent;
81
+ export declare const keyUpEventFromHTMLEvent: (event: KeyboardEvent) => KeyUpEvent;
82
+ export declare const keyPressEventFromHTMLEvent: (event: KeyboardEvent) => KeyPressEvent;
83
+ export declare const isPointerEvt: (event: InputEvt) => event is PointerEvt;
84
+ export {};