js-draw 0.25.1 → 1.0.0

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 (810) hide show
  1. package/README.md +60 -20
  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/package.json +11 -22
  462. package/src/Coloris.css +8 -8
  463. package/src/Editor.scss +148 -0
  464. package/src/dialogs/dialogs.scss +36 -0
  465. package/src/dialogs/makeAboutDialog.scss +41 -0
  466. package/src/styles.js +1 -1
  467. package/src/toolbar/{toolbar.css → AbstractToolbar.scss} +47 -85
  468. package/src/toolbar/DropdownToolbar.scss +46 -0
  469. package/src/toolbar/EdgeToolbar.scss +511 -0
  470. package/src/toolbar/toolbar.scss +11 -0
  471. package/src/toolbar/widgets/DocumentPropertiesWidget.scss +7 -0
  472. package/src/toolbar/widgets/HandToolWidget.scss +14 -0
  473. package/src/toolbar/widgets/InsertImageWidget.scss +41 -0
  474. package/src/toolbar/widgets/PenToolWidget.css +0 -51
  475. package/src/toolbar/widgets/SelectionToolWidget.scss +6 -0
  476. package/src/toolbar/widgets/components/components.scss +5 -0
  477. package/src/toolbar/widgets/components/makeColorInput.scss +82 -0
  478. package/src/toolbar/widgets/components/makeFileInput.scss +77 -0
  479. package/src/toolbar/widgets/components/makeGridSelector.scss +60 -0
  480. package/src/toolbar/widgets/components/makeSeparator.scss +14 -0
  481. package/src/toolbar/widgets/components/makeThicknessSlider.scss +9 -0
  482. package/src/tools/FindTool.css +3 -3
  483. package/src/tools/SelectionTool/SelectionTool.css +23 -11
  484. package/src/tools/tools.scss +4 -0
  485. package/tsconfig.json +1 -1
  486. package/typedoc.json +4 -0
  487. package/dist/cjs/Color4.d.ts +0 -69
  488. package/dist/cjs/Color4.js +0 -263
  489. package/dist/cjs/Editor.loadFrom.test.d.ts +0 -1
  490. package/dist/cjs/Editor.toSVG.test.d.ts +0 -1
  491. package/dist/cjs/EditorImage.test.d.ts +0 -1
  492. package/dist/cjs/EventDispatcher.test.d.ts +0 -1
  493. package/dist/cjs/SVGLoader.test.d.ts +0 -1
  494. package/dist/cjs/UndoRedoHistory.test.d.ts +0 -1
  495. package/dist/cjs/commands/uniteCommands.test.d.ts +0 -1
  496. package/dist/cjs/components/AbstractComponent.transformBy.test.d.ts +0 -1
  497. package/dist/cjs/components/BackgroundComponent.test.d.ts +0 -1
  498. package/dist/cjs/components/Stroke.test.d.ts +0 -1
  499. package/dist/cjs/components/TextComponent.test.d.ts +0 -1
  500. package/dist/cjs/components/UnknownSVGObject.test.d.ts +0 -1
  501. package/dist/cjs/components/builders/FreehandLineBuilder.test.d.ts +0 -1
  502. package/dist/cjs/localizations/getLocalizationTable.test.d.ts +0 -1
  503. package/dist/cjs/math/Mat33.d.ts +0 -123
  504. package/dist/cjs/math/Mat33.js +0 -340
  505. package/dist/cjs/math/Mat33.test.d.ts +0 -1
  506. package/dist/cjs/math/Vec2.d.ts +0 -33
  507. package/dist/cjs/math/Vec2.js +0 -37
  508. package/dist/cjs/math/Vec2.test.d.ts +0 -1
  509. package/dist/cjs/math/Vec3.d.ts +0 -106
  510. package/dist/cjs/math/Vec3.js +0 -183
  511. package/dist/cjs/math/Vec3.test.d.ts +0 -1
  512. package/dist/cjs/math/lib.d.ts +0 -7
  513. package/dist/cjs/math/lib.js +0 -15
  514. package/dist/cjs/math/polynomial/solveQuadratic.d.ts +0 -9
  515. package/dist/cjs/math/polynomial/solveQuadratic.js +0 -39
  516. package/dist/cjs/math/polynomial/solveQuadratic.test.d.ts +0 -1
  517. package/dist/cjs/math/rounding.d.ts +0 -4
  518. package/dist/cjs/math/rounding.js +0 -140
  519. package/dist/cjs/math/rounding.test.d.ts +0 -1
  520. package/dist/cjs/math/shapes/Abstract2DShape.d.ts +0 -49
  521. package/dist/cjs/math/shapes/Abstract2DShape.js +0 -42
  522. package/dist/cjs/math/shapes/BezierJSWrapper.d.ts +0 -36
  523. package/dist/cjs/math/shapes/BezierJSWrapper.js +0 -109
  524. package/dist/cjs/math/shapes/CubicBezier.d.ts +0 -17
  525. package/dist/cjs/math/shapes/CubicBezier.js +0 -50
  526. package/dist/cjs/math/shapes/LineSegment2.d.ts +0 -70
  527. package/dist/cjs/math/shapes/LineSegment2.js +0 -204
  528. package/dist/cjs/math/shapes/LineSegment2.test.d.ts +0 -1
  529. package/dist/cjs/math/shapes/Path.d.ts +0 -93
  530. package/dist/cjs/math/shapes/Path.fromString.test.d.ts +0 -1
  531. package/dist/cjs/math/shapes/Path.js +0 -865
  532. package/dist/cjs/math/shapes/Path.test.d.ts +0 -1
  533. package/dist/cjs/math/shapes/Path.toString.test.d.ts +0 -1
  534. package/dist/cjs/math/shapes/PointShape2D.d.ts +0 -18
  535. package/dist/cjs/math/shapes/PointShape2D.js +0 -46
  536. package/dist/cjs/math/shapes/QuadraticBezier.d.ts +0 -34
  537. package/dist/cjs/math/shapes/QuadraticBezier.js +0 -133
  538. package/dist/cjs/math/shapes/QuadraticBezier.test.d.ts +0 -1
  539. package/dist/cjs/math/shapes/Rect2.d.ts +0 -57
  540. package/dist/cjs/math/shapes/Rect2.js +0 -311
  541. package/dist/cjs/math/shapes/Rect2.test.d.ts +0 -1
  542. package/dist/cjs/math/shapes/Triangle.d.ts +0 -46
  543. package/dist/cjs/math/shapes/Triangle.js +0 -148
  544. package/dist/cjs/math/shapes/Triangle.test.d.ts +0 -1
  545. package/dist/cjs/rendering/RenderingStyle.test.d.ts +0 -1
  546. package/dist/cjs/rendering/caching/CacheRecord.test.d.ts +0 -1
  547. package/dist/cjs/rendering/caching/RenderingCache.test.d.ts +0 -1
  548. package/dist/cjs/rendering/renderers/DummyRenderer.test.d.ts +0 -1
  549. package/dist/cjs/rendering/renderers/TextOnlyRenderer.test.d.ts +0 -1
  550. package/dist/cjs/shortcuts/KeyBinding.test.d.ts +0 -1
  551. package/dist/cjs/shortcuts/KeyboardShortcutManager.test.d.ts +0 -1
  552. package/dist/cjs/toolbar/HTMLToolbar.d.ts +0 -105
  553. package/dist/cjs/toolbar/HTMLToolbar.js +0 -465
  554. package/dist/cjs/toolbar/makeColorInput.d.ts +0 -6
  555. package/dist/cjs/tools/Eraser.test.d.ts +0 -1
  556. package/dist/cjs/tools/PanZoom.test.d.ts +0 -1
  557. package/dist/cjs/tools/Pen.test.d.ts +0 -1
  558. package/dist/cjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
  559. package/dist/cjs/tools/UndoRedoShortcut.test.d.ts +0 -1
  560. package/dist/mjs/Color4.d.ts +0 -69
  561. package/dist/mjs/Color4.mjs +0 -260
  562. package/dist/mjs/Color4.test.d.ts +0 -1
  563. package/dist/mjs/Editor.loadFrom.test.d.ts +0 -1
  564. package/dist/mjs/Editor.toSVG.test.d.ts +0 -1
  565. package/dist/mjs/EditorImage.test.d.ts +0 -1
  566. package/dist/mjs/EventDispatcher.test.d.ts +0 -1
  567. package/dist/mjs/SVGLoader.test.d.ts +0 -1
  568. package/dist/mjs/UndoRedoHistory.test.d.ts +0 -1
  569. package/dist/mjs/commands/uniteCommands.test.d.ts +0 -1
  570. package/dist/mjs/components/AbstractComponent.transformBy.test.d.ts +0 -1
  571. package/dist/mjs/components/BackgroundComponent.test.d.ts +0 -1
  572. package/dist/mjs/components/Stroke.test.d.ts +0 -1
  573. package/dist/mjs/components/TextComponent.test.d.ts +0 -1
  574. package/dist/mjs/components/UnknownSVGObject.test.d.ts +0 -1
  575. package/dist/mjs/components/builders/FreehandLineBuilder.test.d.ts +0 -1
  576. package/dist/mjs/localizations/getLocalizationTable.test.d.ts +0 -1
  577. package/dist/mjs/math/Mat33.d.ts +0 -123
  578. package/dist/mjs/math/Mat33.mjs +0 -338
  579. package/dist/mjs/math/Mat33.test.d.ts +0 -1
  580. package/dist/mjs/math/Vec2.d.ts +0 -33
  581. package/dist/mjs/math/Vec2.mjs +0 -34
  582. package/dist/mjs/math/Vec2.test.d.ts +0 -1
  583. package/dist/mjs/math/Vec3.d.ts +0 -106
  584. package/dist/mjs/math/Vec3.mjs +0 -181
  585. package/dist/mjs/math/Vec3.test.d.ts +0 -1
  586. package/dist/mjs/math/lib.d.ts +0 -7
  587. package/dist/mjs/math/lib.mjs +0 -7
  588. package/dist/mjs/math/polynomial/solveQuadratic.d.ts +0 -9
  589. package/dist/mjs/math/polynomial/solveQuadratic.mjs +0 -37
  590. package/dist/mjs/math/polynomial/solveQuadratic.test.d.ts +0 -1
  591. package/dist/mjs/math/rounding.d.ts +0 -4
  592. package/dist/mjs/math/rounding.mjs +0 -133
  593. package/dist/mjs/math/rounding.test.d.ts +0 -1
  594. package/dist/mjs/math/shapes/Abstract2DShape.d.ts +0 -49
  595. package/dist/mjs/math/shapes/Abstract2DShape.mjs +0 -40
  596. package/dist/mjs/math/shapes/BezierJSWrapper.d.ts +0 -36
  597. package/dist/mjs/math/shapes/BezierJSWrapper.mjs +0 -107
  598. package/dist/mjs/math/shapes/CubicBezier.d.ts +0 -17
  599. package/dist/mjs/math/shapes/CubicBezier.mjs +0 -48
  600. package/dist/mjs/math/shapes/LineSegment2.d.ts +0 -70
  601. package/dist/mjs/math/shapes/LineSegment2.mjs +0 -202
  602. package/dist/mjs/math/shapes/LineSegment2.test.d.ts +0 -1
  603. package/dist/mjs/math/shapes/Path.d.ts +0 -93
  604. package/dist/mjs/math/shapes/Path.fromString.test.d.ts +0 -1
  605. package/dist/mjs/math/shapes/Path.mjs +0 -862
  606. package/dist/mjs/math/shapes/Path.test.d.ts +0 -1
  607. package/dist/mjs/math/shapes/Path.toString.test.d.ts +0 -1
  608. package/dist/mjs/math/shapes/PointShape2D.d.ts +0 -18
  609. package/dist/mjs/math/shapes/PointShape2D.mjs +0 -44
  610. package/dist/mjs/math/shapes/QuadraticBezier.d.ts +0 -34
  611. package/dist/mjs/math/shapes/QuadraticBezier.mjs +0 -131
  612. package/dist/mjs/math/shapes/QuadraticBezier.test.d.ts +0 -1
  613. package/dist/mjs/math/shapes/Rect2.d.ts +0 -57
  614. package/dist/mjs/math/shapes/Rect2.mjs +0 -309
  615. package/dist/mjs/math/shapes/Rect2.test.d.ts +0 -1
  616. package/dist/mjs/math/shapes/Triangle.d.ts +0 -46
  617. package/dist/mjs/math/shapes/Triangle.mjs +0 -146
  618. package/dist/mjs/math/shapes/Triangle.test.d.ts +0 -1
  619. package/dist/mjs/rendering/RenderingStyle.test.d.ts +0 -1
  620. package/dist/mjs/rendering/caching/CacheRecord.test.d.ts +0 -1
  621. package/dist/mjs/rendering/caching/RenderingCache.test.d.ts +0 -1
  622. package/dist/mjs/rendering/renderers/DummyRenderer.test.d.ts +0 -1
  623. package/dist/mjs/rendering/renderers/TextOnlyRenderer.test.d.ts +0 -1
  624. package/dist/mjs/shortcuts/KeyBinding.test.d.ts +0 -1
  625. package/dist/mjs/shortcuts/KeyboardShortcutManager.test.d.ts +0 -1
  626. package/dist/mjs/toolbar/HTMLToolbar.d.ts +0 -105
  627. package/dist/mjs/toolbar/HTMLToolbar.mjs +0 -462
  628. package/dist/mjs/toolbar/makeColorInput.d.ts +0 -6
  629. package/dist/mjs/tools/Eraser.test.d.ts +0 -1
  630. package/dist/mjs/tools/PanZoom.test.d.ts +0 -1
  631. package/dist/mjs/tools/Pen.test.d.ts +0 -1
  632. package/dist/mjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
  633. package/dist/mjs/tools/UndoRedoShortcut.test.d.ts +0 -1
  634. package/dist-test/test_imports/package-lock.json +0 -13
  635. package/dist-test/test_imports/package.json +0 -12
  636. package/dist-test/test_imports/test-imports.js +0 -17
  637. package/dist-test/test_imports/test-require.cjs +0 -19
  638. package/src/Color4.test.ts +0 -47
  639. package/src/Color4.ts +0 -304
  640. package/src/Editor.css +0 -98
  641. package/src/Editor.loadFrom.test.ts +0 -24
  642. package/src/Editor.toSVG.test.ts +0 -111
  643. package/src/Editor.ts +0 -1171
  644. package/src/EditorImage.test.ts +0 -120
  645. package/src/EditorImage.ts +0 -603
  646. package/src/EventDispatcher.test.ts +0 -123
  647. package/src/EventDispatcher.ts +0 -72
  648. package/src/Pointer.ts +0 -170
  649. package/src/SVGLoader.test.ts +0 -114
  650. package/src/SVGLoader.ts +0 -610
  651. package/src/UndoRedoHistory.test.ts +0 -33
  652. package/src/UndoRedoHistory.ts +0 -102
  653. package/src/Viewport.ts +0 -325
  654. package/src/bundle/bundled.ts +0 -7
  655. package/src/commands/Command.ts +0 -45
  656. package/src/commands/Duplicate.ts +0 -75
  657. package/src/commands/Erase.ts +0 -94
  658. package/src/commands/SerializableCommand.ts +0 -49
  659. package/src/commands/UnresolvedCommand.ts +0 -37
  660. package/src/commands/invertCommand.ts +0 -58
  661. package/src/commands/lib.ts +0 -16
  662. package/src/commands/localization.ts +0 -47
  663. package/src/commands/uniteCommands.test.ts +0 -23
  664. package/src/commands/uniteCommands.ts +0 -140
  665. package/src/components/AbstractComponent.transformBy.test.ts +0 -22
  666. package/src/components/AbstractComponent.ts +0 -374
  667. package/src/components/BackgroundComponent.test.ts +0 -45
  668. package/src/components/BackgroundComponent.ts +0 -353
  669. package/src/components/ImageComponent.ts +0 -178
  670. package/src/components/RestylableComponent.ts +0 -161
  671. package/src/components/SVGGlobalAttributesObject.ts +0 -81
  672. package/src/components/Stroke.test.ts +0 -139
  673. package/src/components/Stroke.ts +0 -296
  674. package/src/components/TextComponent.test.ts +0 -204
  675. package/src/components/TextComponent.ts +0 -432
  676. package/src/components/UnknownSVGObject.test.ts +0 -10
  677. package/src/components/UnknownSVGObject.ts +0 -60
  678. package/src/components/builders/ArrowBuilder.ts +0 -107
  679. package/src/components/builders/CircleBuilder.ts +0 -102
  680. package/src/components/builders/FreehandLineBuilder.test.ts +0 -25
  681. package/src/components/builders/FreehandLineBuilder.ts +0 -212
  682. package/src/components/builders/LineBuilder.ts +0 -77
  683. package/src/components/builders/PressureSensitiveFreehandLineBuilder.ts +0 -454
  684. package/src/components/builders/RectangleBuilder.ts +0 -74
  685. package/src/components/builders/types.ts +0 -15
  686. package/src/components/lib.ts +0 -31
  687. package/src/components/localization.ts +0 -24
  688. package/src/components/util/StrokeSmoother.ts +0 -302
  689. package/src/components/util/describeComponentList.ts +0 -18
  690. package/src/lib.ts +0 -69
  691. package/src/localization.ts +0 -34
  692. package/src/localizations/de.ts +0 -146
  693. package/src/localizations/en.ts +0 -8
  694. package/src/localizations/es.ts +0 -74
  695. package/src/localizations/getLocalizationTable.test.ts +0 -27
  696. package/src/localizations/getLocalizationTable.ts +0 -74
  697. package/src/math/Mat33.test.ts +0 -244
  698. package/src/math/Mat33.ts +0 -442
  699. package/src/math/Vec2.test.ts +0 -30
  700. package/src/math/Vec2.ts +0 -40
  701. package/src/math/Vec3.test.ts +0 -44
  702. package/src/math/Vec3.ts +0 -218
  703. package/src/math/lib.ts +0 -15
  704. package/src/math/polynomial/solveQuadratic.test.ts +0 -39
  705. package/src/math/polynomial/solveQuadratic.ts +0 -43
  706. package/src/math/rounding.test.ts +0 -65
  707. package/src/math/rounding.ts +0 -156
  708. package/src/math/shapes/Abstract2DShape.ts +0 -63
  709. package/src/math/shapes/BezierJSWrapper.ts +0 -93
  710. package/src/math/shapes/CubicBezier.ts +0 -35
  711. package/src/math/shapes/LineSegment2.test.ts +0 -99
  712. package/src/math/shapes/LineSegment2.ts +0 -231
  713. package/src/math/shapes/Path.fromString.test.ts +0 -223
  714. package/src/math/shapes/Path.test.ts +0 -309
  715. package/src/math/shapes/Path.toString.test.ts +0 -77
  716. package/src/math/shapes/Path.ts +0 -1027
  717. package/src/math/shapes/PointShape2D.ts +0 -33
  718. package/src/math/shapes/QuadraticBezier.test.ts +0 -31
  719. package/src/math/shapes/QuadraticBezier.ts +0 -141
  720. package/src/math/shapes/Rect2.test.ts +0 -209
  721. package/src/math/shapes/Rect2.ts +0 -344
  722. package/src/math/shapes/Triangle.test.ts +0 -61
  723. package/src/math/shapes/Triangle.ts +0 -139
  724. package/src/rendering/Display.ts +0 -248
  725. package/src/rendering/RenderingStyle.test.ts +0 -68
  726. package/src/rendering/RenderingStyle.ts +0 -55
  727. package/src/rendering/TextRenderingStyle.ts +0 -55
  728. package/src/rendering/caching/CacheRecord.test.ts +0 -49
  729. package/src/rendering/caching/CacheRecord.ts +0 -77
  730. package/src/rendering/caching/CacheRecordManager.ts +0 -71
  731. package/src/rendering/caching/RenderingCache.test.ts +0 -44
  732. package/src/rendering/caching/RenderingCache.ts +0 -66
  733. package/src/rendering/caching/RenderingCacheNode.ts +0 -405
  734. package/src/rendering/caching/testUtils.ts +0 -35
  735. package/src/rendering/caching/types.ts +0 -34
  736. package/src/rendering/lib.ts +0 -8
  737. package/src/rendering/localization.ts +0 -20
  738. package/src/rendering/renderers/AbstractRenderer.ts +0 -242
  739. package/src/rendering/renderers/CanvasRenderer.ts +0 -307
  740. package/src/rendering/renderers/DummyRenderer.test.ts +0 -42
  741. package/src/rendering/renderers/DummyRenderer.ts +0 -145
  742. package/src/rendering/renderers/SVGRenderer.ts +0 -377
  743. package/src/rendering/renderers/TextOnlyRenderer.test.ts +0 -34
  744. package/src/rendering/renderers/TextOnlyRenderer.ts +0 -71
  745. package/src/shortcuts/KeyBinding.test.ts +0 -51
  746. package/src/shortcuts/KeyBinding.ts +0 -218
  747. package/src/shortcuts/KeyboardShortcutManager.test.ts +0 -95
  748. package/src/shortcuts/KeyboardShortcutManager.ts +0 -163
  749. package/src/shortcuts/lib.ts +0 -3
  750. package/src/testing/createEditor.ts +0 -11
  751. package/src/testing/getUniquePointerId.ts +0 -18
  752. package/src/testing/lib.ts +0 -3
  753. package/src/testing/sendPenEvent.ts +0 -36
  754. package/src/testing/sendTouchEvent.ts +0 -71
  755. package/src/toolbar/HTMLToolbar.ts +0 -567
  756. package/src/toolbar/IconProvider.ts +0 -805
  757. package/src/toolbar/lib.ts +0 -4
  758. package/src/toolbar/localization.ts +0 -114
  759. package/src/toolbar/makeColorInput.ts +0 -159
  760. package/src/toolbar/types.ts +0 -5
  761. package/src/toolbar/widgets/ActionButtonWidget.ts +0 -39
  762. package/src/toolbar/widgets/BaseToolWidget.ts +0 -65
  763. package/src/toolbar/widgets/BaseWidget.ts +0 -428
  764. package/src/toolbar/widgets/DocumentPropertiesWidget.ts +0 -234
  765. package/src/toolbar/widgets/EraserToolWidget.ts +0 -85
  766. package/src/toolbar/widgets/HandToolWidget.ts +0 -250
  767. package/src/toolbar/widgets/InsertImageWidget.css +0 -44
  768. package/src/toolbar/widgets/InsertImageWidget.ts +0 -223
  769. package/src/toolbar/widgets/OverflowWidget.ts +0 -92
  770. package/src/toolbar/widgets/PenToolWidget.ts +0 -409
  771. package/src/toolbar/widgets/SelectionToolWidget.ts +0 -197
  772. package/src/toolbar/widgets/TextToolWidget.ts +0 -145
  773. package/src/toolbar/widgets/keybindings.ts +0 -21
  774. package/src/toolbar/widgets/lib.ts +0 -13
  775. package/src/tools/BaseTool.ts +0 -97
  776. package/src/tools/Eraser.test.ts +0 -103
  777. package/src/tools/Eraser.ts +0 -160
  778. package/src/tools/FindTool.ts +0 -153
  779. package/src/tools/PanZoom.test.ts +0 -349
  780. package/src/tools/PanZoom.ts +0 -502
  781. package/src/tools/PasteHandler.ts +0 -95
  782. package/src/tools/Pen.test.ts +0 -262
  783. package/src/tools/Pen.ts +0 -300
  784. package/src/tools/PipetteTool.ts +0 -55
  785. package/src/tools/SelectionTool/SelectAllShortcutHandler.ts +0 -29
  786. package/src/tools/SelectionTool/Selection.ts +0 -611
  787. package/src/tools/SelectionTool/SelectionHandle.ts +0 -108
  788. package/src/tools/SelectionTool/SelectionTool.test.ts +0 -261
  789. package/src/tools/SelectionTool/SelectionTool.ts +0 -496
  790. package/src/tools/SelectionTool/TransformMode.ts +0 -114
  791. package/src/tools/SelectionTool/types.ts +0 -11
  792. package/src/tools/SoundUITool.ts +0 -212
  793. package/src/tools/TextTool.ts +0 -340
  794. package/src/tools/ToolController.ts +0 -200
  795. package/src/tools/ToolEnabledGroup.ts +0 -14
  796. package/src/tools/ToolSwitcherShortcut.ts +0 -39
  797. package/src/tools/ToolbarShortcutHandler.ts +0 -39
  798. package/src/tools/UndoRedoShortcut.test.ts +0 -56
  799. package/src/tools/UndoRedoShortcut.ts +0 -24
  800. package/src/tools/keybindings.ts +0 -85
  801. package/src/tools/lib.ts +0 -22
  802. package/src/tools/localization.ts +0 -74
  803. package/src/tools/tools.css +0 -4
  804. package/src/types.ts +0 -239
  805. package/src/util/assertions.ts +0 -55
  806. package/src/util/fileToBase64.ts +0 -18
  807. package/src/util/untilNextAnimationFrame.ts +0 -9
  808. package/src/util/waitForAll.ts +0 -18
  809. package/src/util/waitForTimeout.ts +0 -9
  810. /package/dist/{cjs/Color4.test.d.ts → mjs/toolbar/widgets/layout/types.mjs} +0 -0
@@ -1,10 +1,7 @@
1
- import { Vec2 } from '../../math/Vec2.mjs';
2
- import Rect2 from '../../math/shapes/Rect2.mjs';
3
- import LineSegment2 from '../../math/shapes/LineSegment2.mjs';
4
- import QuadraticBezier from '../../math/shapes/QuadraticBezier.mjs';
1
+ import { Vec2, Rect2, LineSegment2, QuadraticBezier } from '@js-draw/math';
5
2
  // Handles stroke smoothing
6
- var StrokeSmoother = /** @class */ (function () {
7
- function StrokeSmoother(startPoint,
3
+ export class StrokeSmoother {
4
+ constructor(startPoint,
8
5
  // Maximum distance from the actual curve (irrespective of stroke width)
9
6
  // for which a point is considered 'part of the curve'.
10
7
  // Note that the maximum will be smaller if the stroke width is less than
@@ -24,34 +21,34 @@ var StrokeSmoother = /** @class */ (function () {
24
21
  this.curveStartWidth = startPoint.width;
25
22
  this.bbox = new Rect2(this.startPoint.pos.x, this.startPoint.pos.y, 0, 0);
26
23
  }
27
- StrokeSmoother.prototype.getBBox = function () {
24
+ getBBox() {
28
25
  return this.bbox;
29
- };
30
- StrokeSmoother.prototype.preview = function () {
26
+ }
27
+ preview() {
31
28
  if (!this.currentCurve) {
32
29
  return null;
33
30
  }
34
31
  return this.currentSegmentToPath();
35
- };
32
+ }
36
33
  // Returns the distance between the start, control, and end points of the curve.
37
- StrokeSmoother.prototype.approxCurrentCurveLength = function () {
34
+ approxCurrentCurveLength() {
38
35
  if (!this.currentCurve) {
39
36
  return 0;
40
37
  }
41
- var startPt = this.currentCurve.p0;
42
- var controlPt = this.currentCurve.p1;
43
- var endPt = this.currentCurve.p2;
44
- var toControlDist = startPt.minus(controlPt).length();
45
- var toEndDist = endPt.minus(controlPt).length();
38
+ const startPt = this.currentCurve.p0;
39
+ const controlPt = this.currentCurve.p1;
40
+ const endPt = this.currentCurve.p2;
41
+ const toControlDist = startPt.minus(controlPt).length();
42
+ const toEndDist = endPt.minus(controlPt).length();
46
43
  return toControlDist + toEndDist;
47
- };
48
- StrokeSmoother.prototype.finalizeCurrentCurve = function () {
44
+ }
45
+ finalizeCurrentCurve() {
49
46
  // Case where no points have been added
50
47
  if (!this.currentCurve) {
51
48
  return;
52
49
  }
53
50
  this.onCurveAdded(this.currentSegmentToPath());
54
- var lastPoint = this.buffer[this.buffer.length - 1];
51
+ const lastPoint = this.buffer[this.buffer.length - 1];
55
52
  this.lastExitingVec = this.currentCurve.p2.minus(this.currentCurve.p1);
56
53
  console.assert(this.lastExitingVec.magnitude() !== 0, 'lastExitingVec has zero length!');
57
54
  // Use the last two points to start a new curve (the last point isn't used
@@ -61,38 +58,36 @@ var StrokeSmoother = /** @class */ (function () {
61
58
  ];
62
59
  this.currentCurve = null;
63
60
  this.isFirstSegment = false;
64
- };
61
+ }
65
62
  // Returns [upper curve, connector, lower curve]
66
- StrokeSmoother.prototype.currentSegmentToPath = function () {
63
+ currentSegmentToPath() {
67
64
  if (this.currentCurve == null) {
68
65
  throw new Error('Invalid State: currentCurve is null!');
69
66
  }
70
- var startVec = this.currentCurve.normal(0).normalized();
67
+ const startVec = this.currentCurve.normal(0).normalized();
71
68
  if (!isFinite(startVec.magnitude())) {
72
- throw new Error("startVec(".concat(startVec, ") is NaN or \u221E"));
69
+ throw new Error(`startVec(${startVec}) is NaN or ∞`);
73
70
  }
74
- var startPt = this.currentCurve.at(0);
75
- var endPt = this.currentCurve.at(1);
76
- var controlPoint = this.currentCurve.p1;
71
+ const startPt = this.currentCurve.at(0);
72
+ const endPt = this.currentCurve.at(1);
73
+ const controlPoint = this.currentCurve.p1;
77
74
  return {
78
75
  startPoint: startPt,
79
- controlPoint: controlPoint,
76
+ controlPoint,
80
77
  endPoint: endPt,
81
78
  startWidth: this.curveStartWidth,
82
79
  endWidth: this.curveEndWidth,
83
80
  };
84
- };
81
+ }
85
82
  // Compute the direction of the velocity at the end of this.buffer
86
- StrokeSmoother.prototype.computeExitingVec = function () {
83
+ computeExitingVec() {
87
84
  return this.momentum.normalized().times(this.lastPoint.width / 2);
88
- };
89
- StrokeSmoother.prototype.addPoint = function (newPoint) {
90
- var _this = this;
91
- var _a, _b;
85
+ }
86
+ addPoint(newPoint) {
92
87
  if (this.lastPoint) {
93
88
  // Ignore points that are identical
94
- var fuzzEq = 1e-10;
95
- var deltaTime = newPoint.time - this.lastPoint.time;
89
+ const fuzzEq = 1e-10;
90
+ const deltaTime = newPoint.time - this.lastPoint.time;
96
91
  if (newPoint.pos.eq(this.lastPoint.pos, fuzzEq) || deltaTime === 0) {
97
92
  return;
98
93
  }
@@ -100,8 +95,8 @@ var StrokeSmoother = /** @class */ (function () {
100
95
  console.warn('Discarding NaN point.', newPoint);
101
96
  return;
102
97
  }
103
- var threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
104
- var shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
98
+ const threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
99
+ const shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
105
100
  && this.isFirstSegment;
106
101
  // Snap to the starting point if the stroke is contained within a small ball centered
107
102
  // at the starting point.
@@ -109,22 +104,24 @@ var StrokeSmoother = /** @class */ (function () {
109
104
  if (shouldSnapToInitial) {
110
105
  return;
111
106
  }
112
- var velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / (deltaTime) * 1000);
113
- this.momentum = this.momentum.lerp(velocity, 0.9);
107
+ const deltaTimeSeconds = deltaTime / 1000;
108
+ const velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / deltaTimeSeconds);
109
+ // TODO: Do we need momentum smoothing? (this.momentum.lerp(velocity, 0.9);)
110
+ this.momentum = velocity;
114
111
  }
115
- var lastPoint = (_a = this.lastPoint) !== null && _a !== void 0 ? _a : newPoint;
112
+ const lastPoint = this.lastPoint ?? newPoint;
116
113
  this.lastPoint = newPoint;
117
114
  this.buffer.push(newPoint.pos);
118
- var pointRadius = newPoint.width;
119
- var prevEndWidth = this.curveEndWidth;
115
+ const pointRadius = newPoint.width;
116
+ const prevEndWidth = this.curveEndWidth;
120
117
  this.curveEndWidth = pointRadius;
121
118
  // recompute bbox
122
119
  this.bbox = this.bbox.grownToPoint(newPoint.pos, pointRadius);
123
120
  // If the last curve just ended or it's the first curve,
124
121
  if (this.currentCurve === null) {
125
- var p1 = lastPoint.pos;
126
- var p2 = lastPoint.pos.plus((_b = this.lastExitingVec) !== null && _b !== void 0 ? _b : Vec2.unitX);
127
- var p3 = newPoint.pos;
122
+ const p1 = lastPoint.pos;
123
+ const p2 = lastPoint.pos.plus(this.lastExitingVec ?? Vec2.unitX);
124
+ const p3 = newPoint.pos;
128
125
  // Quadratic Bézier curve
129
126
  this.currentCurve = new QuadraticBezier(p1, p2, p3);
130
127
  console.assert(!isNaN(p1.magnitude()) && !isNaN(p2.magnitude()) && !isNaN(p3.magnitude()), 'Expected !NaN');
@@ -137,21 +134,21 @@ var StrokeSmoother = /** @class */ (function () {
137
134
  }
138
135
  }
139
136
  // If there isn't an entering vector (e.g. because this.isFirstCurve), approximate it.
140
- var enteringVec = this.lastExitingVec;
137
+ let enteringVec = this.lastExitingVec;
141
138
  if (!enteringVec) {
142
- var sampleIdx = Math.ceil(this.buffer.length / 2);
139
+ let sampleIdx = Math.ceil(this.buffer.length / 2);
143
140
  if (sampleIdx === 0 || sampleIdx >= this.buffer.length) {
144
141
  sampleIdx = this.buffer.length - 1;
145
142
  }
146
143
  enteringVec = this.buffer[sampleIdx].minus(this.buffer[0]);
147
144
  }
148
- var exitingVec = this.computeExitingVec();
145
+ let exitingVec = this.computeExitingVec();
149
146
  // Find the intersection between the entering vector and the exiting vector
150
- var maxRelativeLength = 2;
151
- var segmentStart = this.buffer[0];
152
- var segmentEnd = newPoint.pos;
153
- var startEndDist = segmentEnd.minus(segmentStart).magnitude();
154
- var maxControlPointDist = maxRelativeLength * startEndDist;
147
+ const maxRelativeLength = 2.4;
148
+ const segmentStart = this.buffer[0];
149
+ const segmentEnd = newPoint.pos;
150
+ const startEndDist = segmentEnd.minus(segmentStart).magnitude();
151
+ const maxControlPointDist = maxRelativeLength * startEndDist;
155
152
  // Exit in cases where we would divide by zero
156
153
  if (maxControlPointDist === 0 || exitingVec.magnitude() === 0 || !isFinite(exitingVec.magnitude())) {
157
154
  return;
@@ -160,11 +157,11 @@ var StrokeSmoother = /** @class */ (function () {
160
157
  enteringVec = enteringVec.normalized();
161
158
  exitingVec = exitingVec.normalized();
162
159
  console.assert(isFinite(enteringVec.magnitude()), 'Normalized enteringVec has NaN or ∞ magnitude!');
163
- var lineFromStart = new LineSegment2(segmentStart, segmentStart.plus(enteringVec.times(maxControlPointDist)));
164
- var lineFromEnd = new LineSegment2(segmentEnd.minus(exitingVec.times(maxControlPointDist)), segmentEnd);
165
- var intersection = lineFromEnd.intersection(lineFromStart);
160
+ const lineFromStart = new LineSegment2(segmentStart, segmentStart.plus(enteringVec.times(maxControlPointDist)));
161
+ const lineFromEnd = new LineSegment2(segmentEnd.minus(exitingVec.times(maxControlPointDist)), segmentEnd);
162
+ const intersection = lineFromEnd.intersection(lineFromStart);
166
163
  // Position the control point at this intersection
167
- var controlPoint = null;
164
+ let controlPoint = null;
168
165
  if (intersection) {
169
166
  controlPoint = intersection.point;
170
167
  }
@@ -176,7 +173,7 @@ var StrokeSmoother = /** @class */ (function () {
176
173
  }
177
174
  console.assert(!segmentStart.eq(controlPoint, 1e-11), 'Start and control points are equal!');
178
175
  console.assert(!controlPoint.eq(segmentEnd, 1e-11), 'Control and end points are equal!');
179
- var prevCurve = this.currentCurve;
176
+ const prevCurve = this.currentCurve;
180
177
  this.currentCurve = new QuadraticBezier(segmentStart, controlPoint, segmentEnd);
181
178
  if (isNaN(this.currentCurve.normal(0).magnitude())) {
182
179
  console.error('NaN normal at 0. Curve:', this.currentCurve);
@@ -184,15 +181,14 @@ var StrokeSmoother = /** @class */ (function () {
184
181
  }
185
182
  // Should we start making a new curve? Check whether all buffer points are within
186
183
  // ±strokeWidth of the curve.
187
- var curveMatchesPoints = function (curve) {
188
- var minFit = Math.min(Math.max(Math.min(_this.curveStartWidth, _this.curveEndWidth) / 4, _this.minFitAllowed), _this.maxFitAllowed);
184
+ const curveMatchesPoints = (curve) => {
185
+ const minFit = Math.min(Math.max(Math.min(this.curveStartWidth, this.curveEndWidth) / 4, this.minFitAllowed), this.maxFitAllowed);
189
186
  // The sum of distances greater than minFit must not exceed this:
190
- var maxNonMatchingDistSum = minFit;
187
+ const maxNonMatchingDistSum = minFit;
191
188
  // Sum of distances greater than minFit.
192
- var nonMatchingDistSum = 0;
193
- for (var _i = 0, _a = _this.buffer; _i < _a.length; _i++) {
194
- var point = _a[_i];
195
- var dist = curve.approximateDistance(point);
189
+ let nonMatchingDistSum = 0;
190
+ for (const point of this.buffer) {
191
+ let dist = curve.approximateDistance(point);
196
192
  if (dist > minFit) {
197
193
  // Use the more accurate distance function
198
194
  dist = curve.distance(point);
@@ -215,8 +211,6 @@ var StrokeSmoother = /** @class */ (function () {
215
211
  return;
216
212
  }
217
213
  }
218
- };
219
- return StrokeSmoother;
220
- }());
221
- export { StrokeSmoother };
214
+ }
215
+ }
222
216
  export 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;
@@ -1,15 +1,14 @@
1
1
  // Returns the description of all given elements, if identical, otherwise,
2
2
  // returns null.
3
- export default (function (localizationTable, elems) {
3
+ export default (localizationTable, elems) => {
4
4
  if (elems.length === 0) {
5
5
  return null;
6
6
  }
7
- var description = elems[0].description(localizationTable);
8
- for (var _i = 0, elems_1 = elems; _i < elems_1.length; _i++) {
9
- var elem = elems_1[_i];
7
+ const description = elems[0].description(localizationTable);
8
+ for (const elem of elems) {
10
9
  if (elem.description(localizationTable) !== description) {
11
10
  return null;
12
11
  }
13
12
  }
14
13
  return description;
15
- });
14
+ };
@@ -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,52 @@
1
+ const makeAboutDialog = (editor, entries) => {
2
+ const overlay = document.createElement('div');
3
+ const { remove: removeOverlay } = editor.createHTMLOverlay(overlay);
4
+ overlay.classList.add('dialog-container', 'about-dialog-container');
5
+ const dialog = document.createElement('dialog');
6
+ const heading = document.createElement('h1');
7
+ heading.innerText = editor.localization.about;
8
+ heading.setAttribute('autofocus', 'true');
9
+ const closeButton = document.createElement('button');
10
+ closeButton.innerText = editor.localization.closeDialog;
11
+ closeButton.classList.add('close-button');
12
+ closeButton.onclick = () => removeOverlay();
13
+ overlay.onclick = event => {
14
+ if (event.target === overlay) {
15
+ removeOverlay();
16
+ }
17
+ };
18
+ const licenseContainer = document.createElement('div');
19
+ licenseContainer.classList.add('about-entry-container');
20
+ // Allow scrolling in the license container -- don't forward wheel events.
21
+ licenseContainer.onwheel = evt => evt.stopPropagation();
22
+ for (const entry of entries) {
23
+ const container = document.createElement(entry.minimized ? 'details' : 'div');
24
+ container.classList.add('about-entry');
25
+ const header = document.createElement(entry.minimized ? 'summary' : 'h2');
26
+ if (typeof (entry.heading) === 'string') {
27
+ header.innerText = entry.heading;
28
+ }
29
+ else {
30
+ const link = document.createElement('a');
31
+ link.href = entry.heading.href.replace(/^javascript:/i, '');
32
+ link.text = entry.heading.text;
33
+ header.appendChild(link);
34
+ }
35
+ container.appendChild(header);
36
+ if (entry.text) {
37
+ const bodyText = document.createElement('div');
38
+ bodyText.innerText = entry.text;
39
+ container.appendChild(bodyText);
40
+ }
41
+ licenseContainer.appendChild(container);
42
+ }
43
+ dialog.replaceChildren(heading, licenseContainer, closeButton);
44
+ overlay.replaceChildren(dialog);
45
+ dialog.show();
46
+ return {
47
+ close: () => {
48
+ removeOverlay();
49
+ },
50
+ };
51
+ };
52
+ export 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 {};
@@ -0,0 +1,34 @@
1
+ export var InputEvtType;
2
+ (function (InputEvtType) {
3
+ InputEvtType[InputEvtType["PointerDownEvt"] = 0] = "PointerDownEvt";
4
+ InputEvtType[InputEvtType["PointerMoveEvt"] = 1] = "PointerMoveEvt";
5
+ InputEvtType[InputEvtType["PointerUpEvt"] = 2] = "PointerUpEvt";
6
+ InputEvtType[InputEvtType["GestureCancelEvt"] = 3] = "GestureCancelEvt";
7
+ InputEvtType[InputEvtType["WheelEvt"] = 4] = "WheelEvt";
8
+ InputEvtType[InputEvtType["KeyPressEvent"] = 5] = "KeyPressEvent";
9
+ InputEvtType[InputEvtType["KeyUpEvent"] = 6] = "KeyUpEvent";
10
+ InputEvtType[InputEvtType["CopyEvent"] = 7] = "CopyEvent";
11
+ InputEvtType[InputEvtType["PasteEvent"] = 8] = "PasteEvent";
12
+ })(InputEvtType || (InputEvtType = {}));
13
+ // Constructor
14
+ const keyEventFromHTMLEvent = (kind, event) => {
15
+ return {
16
+ kind,
17
+ key: event.key,
18
+ code: event.code,
19
+ ctrlKey: event.ctrlKey || event.metaKey,
20
+ altKey: event.altKey,
21
+ shiftKey: event.shiftKey,
22
+ };
23
+ };
24
+ export const keyUpEventFromHTMLEvent = (event) => {
25
+ return keyEventFromHTMLEvent(InputEvtType.KeyUpEvent, event);
26
+ };
27
+ export const keyPressEventFromHTMLEvent = (event) => {
28
+ return keyEventFromHTMLEvent(InputEvtType.KeyPressEvent, event);
29
+ };
30
+ export const isPointerEvt = (event) => {
31
+ return event.kind === InputEvtType.PointerDownEvt
32
+ || event.kind === InputEvtType.PointerMoveEvt
33
+ || event.kind === InputEvtType.PointerUpEvt;
34
+ };
package/dist/mjs/lib.d.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  * is available through the [`js-draw` package](https://www.npmjs.com/package/js-draw).
4
4
  *
5
5
  * @example
6
- * ```
7
- * import { Editor, Vec3, Mat33 } from 'js-draw';
6
+ * ```ts,runnable
7
+ * import { Editor, Vec3, Mat33, ToolbarWidgetTag } from 'js-draw';
8
8
  *
9
9
  * // Apply js-draw CSS
10
10
  * import 'js-draw/styles';
@@ -14,8 +14,11 @@
14
14
  * (async () => {
15
15
  * const editor = new Editor(document.body);
16
16
  * const toolbar = editor.addToolbar();
17
+ *
18
+ * // Increases the minimum height of the editor
17
19
  * editor.getRootElement().style.height = '600px';
18
20
  *
21
+ * // Loads from SVG data
19
22
  * await editor.loadFromSVG(`
20
23
  * <svg viewBox="0 0 500 500" width="500" height="500" version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
21
24
  * <style id="js-draw-style-sheet">path{stroke-linecap:round;stroke-linejoin:round;}text{white-space:pre;}</style>
@@ -24,13 +27,19 @@
24
27
  * </svg>
25
28
  * `);
26
29
  *
27
- * toolbar.addActionButton({
28
- * label: 'Save',
29
- * icon: editor.icons.makeSaveIcon(),
30
- * }, () => {
31
- * const saveData = editor.toSVG().outerHTML;
30
+ * // Adding tags to a toolbar button allows different styles to be applied.
31
+ * // Also see addActionButton.
32
+ * const buttonLabels = [ ToolbarWidgetTag.Save ];
32
33
  *
33
- * // Do something with saveData
34
+ * toolbar.addSaveButton(() => {
35
+ * const saveData = editor.toSVG().outerHTML;
36
+ *
37
+ * // Do something with saveData
38
+ * });
39
+ *
40
+ * toolbar.addExitButton(() => {
41
+ * // Save/confirm exiting here?
42
+ * editor.remove();
34
43
  * });
35
44
  * })();
36
45
  * ```
@@ -38,19 +47,19 @@
38
47
  * @see
39
48
  * {@link Editor}
40
49
  * {@link Editor.loadFromSVG}
41
- * {@link HTMLToolbar.addActionButton }
50
+ * {@link AbstractToolbar.addActionButton }
42
51
  *
43
52
  * @packageDocumentation
44
53
  */
45
54
  import Editor, { EditorSettings } from './Editor';
46
55
  export { default as EditorImage } from './EditorImage';
47
56
  export * from './types';
57
+ export * from './inputEvents';
48
58
  export { default as getLocalizationTable, matchingLocalizationTable } from './localizations/getLocalizationTable';
49
59
  export * from './localization';
50
- export { default as Color4 } from './Color4';
51
60
  export { default as SVGLoader } from './SVGLoader';
52
61
  export { default as Viewport } from './Viewport';
53
- export * from './math/lib';
62
+ export * from '@js-draw/math';
54
63
  export * from './components/lib';
55
64
  export * from './commands/lib';
56
65
  export * from './tools/lib';
@@ -60,7 +69,14 @@ export * from './testing/lib';
60
69
  export * from './shortcuts/lib';
61
70
  export { default as EventDispatcher } from './EventDispatcher';
62
71
  export { default as Pointer, PointerDevice } from './Pointer';
63
- export { default as HTMLToolbar } from './toolbar/HTMLToolbar';
64
72
  export { default as UndoRedoHistory } from './UndoRedoHistory';
65
- export { Editor, EditorSettings };
73
+ export { default as __js_draw__version } from './version';
74
+ import AbstractToolbar from './toolbar/AbstractToolbar';
75
+ export { Editor, EditorSettings, AbstractToolbar,
76
+ /**
77
+ * Using the HTMLToolbar alias is deprecated. Use
78
+ * `AbstractToolbar` instead.
79
+ * @deprecated
80
+ */
81
+ AbstractToolbar as HTMLToolbar, };
66
82
  export default Editor;
package/dist/mjs/lib.mjs CHANGED
@@ -3,8 +3,8 @@
3
3
  * is available through the [`js-draw` package](https://www.npmjs.com/package/js-draw).
4
4
  *
5
5
  * @example
6
- * ```
7
- * import { Editor, Vec3, Mat33 } from 'js-draw';
6
+ * ```ts,runnable
7
+ * import { Editor, Vec3, Mat33, ToolbarWidgetTag } from 'js-draw';
8
8
  *
9
9
  * // Apply js-draw CSS
10
10
  * import 'js-draw/styles';
@@ -14,8 +14,11 @@
14
14
  * (async () => {
15
15
  * const editor = new Editor(document.body);
16
16
  * const toolbar = editor.addToolbar();
17
+ *
18
+ * // Increases the minimum height of the editor
17
19
  * editor.getRootElement().style.height = '600px';
18
20
  *
21
+ * // Loads from SVG data
19
22
  * await editor.loadFromSVG(`
20
23
  * <svg viewBox="0 0 500 500" width="500" height="500" version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
21
24
  * <style id="js-draw-style-sheet">path{stroke-linecap:round;stroke-linejoin:round;}text{white-space:pre;}</style>
@@ -24,13 +27,19 @@
24
27
  * </svg>
25
28
  * `);
26
29
  *
27
- * toolbar.addActionButton({
28
- * label: 'Save',
29
- * icon: editor.icons.makeSaveIcon(),
30
- * }, () => {
31
- * const saveData = editor.toSVG().outerHTML;
30
+ * // Adding tags to a toolbar button allows different styles to be applied.
31
+ * // Also see addActionButton.
32
+ * const buttonLabels = [ ToolbarWidgetTag.Save ];
32
33
  *
33
- * // Do something with saveData
34
+ * toolbar.addSaveButton(() => {
35
+ * const saveData = editor.toSVG().outerHTML;
36
+ *
37
+ * // Do something with saveData
38
+ * });
39
+ *
40
+ * toolbar.addExitButton(() => {
41
+ * // Save/confirm exiting here?
42
+ * editor.remove();
34
43
  * });
35
44
  * })();
36
45
  * ```
@@ -38,19 +47,19 @@
38
47
  * @see
39
48
  * {@link Editor}
40
49
  * {@link Editor.loadFromSVG}
41
- * {@link HTMLToolbar.addActionButton }
50
+ * {@link AbstractToolbar.addActionButton }
42
51
  *
43
52
  * @packageDocumentation
44
53
  */
45
54
  import Editor from './Editor.mjs';
46
55
  export { default as EditorImage } from './EditorImage.mjs';
47
56
  export * from './types.mjs';
57
+ export * from './inputEvents.mjs';
48
58
  export { default as getLocalizationTable, matchingLocalizationTable } from './localizations/getLocalizationTable.mjs';
49
59
  export * from './localization.mjs';
50
- export { default as Color4 } from './Color4.mjs';
51
60
  export { default as SVGLoader } from './SVGLoader.mjs';
52
61
  export { default as Viewport } from './Viewport.mjs';
53
- export * from './math/lib.mjs';
62
+ export * from '@js-draw/math';
54
63
  export * from './components/lib.mjs';
55
64
  export * from './commands/lib.mjs';
56
65
  export * from './tools/lib.mjs';
@@ -60,7 +69,15 @@ export * from './testing/lib.mjs';
60
69
  export * from './shortcuts/lib.mjs';
61
70
  export { default as EventDispatcher } from './EventDispatcher.mjs';
62
71
  export { default as Pointer, PointerDevice } from './Pointer.mjs';
63
- export { default as HTMLToolbar } from './toolbar/HTMLToolbar.mjs';
64
72
  export { default as UndoRedoHistory } from './UndoRedoHistory.mjs';
65
- export { Editor };
73
+ // @internal
74
+ export { default as __js_draw__version } from './version.mjs';
75
+ import AbstractToolbar from './toolbar/AbstractToolbar.mjs';
76
+ export { Editor, AbstractToolbar,
77
+ /**
78
+ * Using the HTMLToolbar alias is deprecated. Use
79
+ * `AbstractToolbar` instead.
80
+ * @deprecated
81
+ */
82
+ AbstractToolbar as HTMLToolbar, };
66
83
  export default Editor;