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,14 +1,17 @@
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.RenderingMode = exports.Display = exports.CanvasRenderer = exports.SVGRenderer = exports.DummyRenderer = exports.AbstractRenderer = void 0;
4
7
  var AbstractRenderer_1 = require("./renderers/AbstractRenderer");
5
- Object.defineProperty(exports, "AbstractRenderer", { enumerable: true, get: function () { return AbstractRenderer_1.default; } });
8
+ Object.defineProperty(exports, "AbstractRenderer", { enumerable: true, get: function () { return __importDefault(AbstractRenderer_1).default; } });
6
9
  var DummyRenderer_1 = require("./renderers/DummyRenderer");
7
- Object.defineProperty(exports, "DummyRenderer", { enumerable: true, get: function () { return DummyRenderer_1.default; } });
10
+ Object.defineProperty(exports, "DummyRenderer", { enumerable: true, get: function () { return __importDefault(DummyRenderer_1).default; } });
8
11
  var SVGRenderer_1 = require("./renderers/SVGRenderer");
9
- Object.defineProperty(exports, "SVGRenderer", { enumerable: true, get: function () { return SVGRenderer_1.default; } });
12
+ Object.defineProperty(exports, "SVGRenderer", { enumerable: true, get: function () { return __importDefault(SVGRenderer_1).default; } });
10
13
  var CanvasRenderer_1 = require("./renderers/CanvasRenderer");
11
- Object.defineProperty(exports, "CanvasRenderer", { enumerable: true, get: function () { return CanvasRenderer_1.default; } });
14
+ Object.defineProperty(exports, "CanvasRenderer", { enumerable: true, get: function () { return __importDefault(CanvasRenderer_1).default; } });
12
15
  var Display_1 = require("./Display");
13
- Object.defineProperty(exports, "Display", { enumerable: true, get: function () { return Display_1.default; } });
16
+ Object.defineProperty(exports, "Display", { enumerable: true, get: function () { return __importDefault(Display_1).default; } });
14
17
  Object.defineProperty(exports, "RenderingMode", { enumerable: true, get: function () { return Display_1.RenderingMode; } });
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaultTextRendererLocalization = void 0;
4
4
  exports.defaultTextRendererLocalization = {
5
- pathNodeCount: function (count) { return "There are ".concat(count, " visible path objects."); },
6
- textNodeCount: function (count) { return "There are ".concat(count, " visible text nodes."); },
7
- imageNodeCount: function (nodeCount) { return "There are ".concat(nodeCount, " visible image nodes."); },
8
- textNode: function (content) { return "Text: ".concat(content); },
9
- imageNode: function (label) { return "Image: ".concat(label); },
5
+ pathNodeCount: (count) => `There are ${count} visible path objects.`,
6
+ textNodeCount: (count) => `There are ${count} visible text nodes.`,
7
+ imageNodeCount: (nodeCount) => `There are ${nodeCount} visible image nodes.`,
8
+ textNode: (content) => `Text: ${content}`,
9
+ imageNode: (label) => `Image: ${label}`,
10
10
  unlabeledImageNode: 'Unlabeled image',
11
11
  rerenderAsText: 'Re-render as text',
12
12
  };
@@ -1,18 +1,9 @@
1
- import Color4 from '../../Color4';
1
+ import { Color4, Mat33, Point2, Vec2, Rect2 } from '@js-draw/math';
2
2
  import { LoadSaveDataTable } from '../../components/AbstractComponent';
3
- import Mat33 from '../../math/Mat33';
4
- import Path, { PathCommand } from '../../math/shapes/Path';
5
- import Rect2 from '../../math/shapes/Rect2';
6
- import { Point2, Vec2 } from '../../math/Vec2';
7
3
  import Viewport from '../../Viewport';
8
4
  import RenderingStyle from '../RenderingStyle';
9
5
  import TextRenderingStyle from '../TextRenderingStyle';
10
- export interface RenderablePathSpec {
11
- startPoint: Point2;
12
- commands: PathCommand[];
13
- style: RenderingStyle;
14
- path?: Path;
15
- }
6
+ import RenderablePathSpec from '../RenderablePathSpec';
16
7
  export interface RenderableImage {
17
8
  transform: Mat33;
18
9
  image: HTMLImageElement | HTMLCanvasElement;
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var Path_1 = require("../../math/shapes/Path");
4
- var Vec2_1 = require("../../math/Vec2");
5
- var RenderingStyle_1 = require("../RenderingStyle");
3
+ const math_1 = require("@js-draw/math");
4
+ const RenderingStyle_1 = require("../RenderingStyle");
5
+ const RenderablePathSpec_1 = require("../RenderablePathSpec");
6
6
  /**
7
7
  * Abstract base class for renderers.
8
8
  *
9
9
  * @see {@link EditorImage.render}
10
10
  */
11
- var AbstractRenderer = /** @class */ (function () {
12
- function AbstractRenderer(viewport) {
11
+ class AbstractRenderer {
12
+ constructor(viewport) {
13
13
  this.viewport = viewport;
14
14
  // If null, this' transformation is linked to the Viewport
15
15
  this.selfTransform = null;
@@ -19,16 +19,15 @@ var AbstractRenderer = /** @class */ (function () {
19
19
  }
20
20
  // this.canvasToScreen, etc. should be used instead of the corresponding
21
21
  // methods on Viewport.
22
- AbstractRenderer.prototype.getViewport = function () { return this.viewport; };
23
- AbstractRenderer.prototype.setDraftMode = function (_draftMode) { };
24
- AbstractRenderer.prototype.flushPath = function () {
22
+ getViewport() { return this.viewport; }
23
+ setDraftMode(_draftMode) { }
24
+ flushPath() {
25
25
  if (!this.currentPaths) {
26
26
  return;
27
27
  }
28
- var lastStyle = null;
29
- for (var _i = 0, _a = this.currentPaths; _i < _a.length; _i++) {
30
- var path = _a[_i];
31
- var startPoint = path.startPoint, commands = path.commands, style = path.style;
28
+ let lastStyle = null;
29
+ for (const path of this.currentPaths) {
30
+ const { startPoint, commands, style } = path;
32
31
  if (!lastStyle || !(0, RenderingStyle_1.stylesEqual)(lastStyle, style)) {
33
32
  if (lastStyle) {
34
33
  this.endPath(lastStyle);
@@ -39,18 +38,17 @@ var AbstractRenderer = /** @class */ (function () {
39
38
  else {
40
39
  this.moveTo(startPoint);
41
40
  }
42
- for (var _b = 0, commands_1 = commands; _b < commands_1.length; _b++) {
43
- var command = commands_1[_b];
44
- if (command.kind === Path_1.PathCommandType.LineTo) {
41
+ for (const command of commands) {
42
+ if (command.kind === math_1.PathCommandType.LineTo) {
45
43
  this.lineTo(command.point);
46
44
  }
47
- else if (command.kind === Path_1.PathCommandType.MoveTo) {
45
+ else if (command.kind === math_1.PathCommandType.MoveTo) {
48
46
  this.moveTo(command.point);
49
47
  }
50
- else if (command.kind === Path_1.PathCommandType.CubicBezierTo) {
48
+ else if (command.kind === math_1.PathCommandType.CubicBezierTo) {
51
49
  this.traceCubicBezierCurve(command.controlPoint1, command.controlPoint2, command.endPoint);
52
50
  }
53
- else if (command.kind === Path_1.PathCommandType.QuadraticBezierTo) {
51
+ else if (command.kind === math_1.PathCommandType.QuadraticBezierTo) {
54
52
  this.traceQuadraticBezierCurve(command.controlPoint, command.endPoint);
55
53
  }
56
54
  }
@@ -59,12 +57,12 @@ var AbstractRenderer = /** @class */ (function () {
59
57
  this.endPath(lastStyle);
60
58
  }
61
59
  this.currentPaths = [];
62
- };
60
+ }
63
61
  /**
64
62
  * Draws a styled path. If within an object started by {@link startObject},
65
63
  * the resultant path may not be visible until {@link endObject} is called.
66
64
  */
67
- AbstractRenderer.prototype.drawPath = function (path) {
65
+ drawPath(path) {
68
66
  // If we're being called outside of an object,
69
67
  // we can't delay rendering
70
68
  if (this.objectLevel === 0) {
@@ -77,18 +75,18 @@ var AbstractRenderer = /** @class */ (function () {
77
75
  // segments of the same stroke from being visible.
78
76
  this.currentPaths.push(path);
79
77
  }
80
- };
78
+ }
81
79
  // Strokes a rectangle. Boundary lines have width [lineWidth] and are filled with [lineFill].
82
80
  // This is equivalent to `drawPath(Path.fromRect(...).toRenderable(...))`.
83
- AbstractRenderer.prototype.drawRect = function (rect, lineWidth, lineFill) {
84
- var path = Path_1.default.fromRect(rect, lineWidth);
85
- this.drawPath(path.toRenderable(lineFill));
86
- };
81
+ drawRect(rect, lineWidth, lineFill) {
82
+ const path = math_1.Path.fromRect(rect, lineWidth);
83
+ this.drawPath((0, RenderablePathSpec_1.pathToRenderable)(path, lineFill));
84
+ }
87
85
  /** Draws a filled rectangle. */
88
- AbstractRenderer.prototype.fillRect = function (rect, fill) {
89
- var path = Path_1.default.fromRect(rect);
90
- this.drawPath(path.toRenderable({ fill: fill }));
91
- };
86
+ fillRect(rect, fill) {
87
+ const path = math_1.Path.fromRect(rect);
88
+ this.drawPath((0, RenderablePathSpec_1.pathToRenderable)(path, { fill }));
89
+ }
92
90
  /**
93
91
  * This should be called whenever a new object is being drawn.
94
92
  *
@@ -96,13 +94,13 @@ var AbstractRenderer = /** @class */ (function () {
96
94
  * @param _clip Whether content outside `_boundingBox` should be drawn. Renderers
97
95
  * that override this method are not required to support `_clip`.
98
96
  */
99
- AbstractRenderer.prototype.startObject = function (_boundingBox, _clip) {
97
+ startObject(_boundingBox, _clip) {
100
98
  if (this.objectLevel > 0) {
101
99
  this.flushPath();
102
100
  }
103
101
  this.currentPaths = [];
104
102
  this.objectLevel++;
105
- };
103
+ }
106
104
  /**
107
105
  * Notes the end of an object.
108
106
  * @param _loaderData - a map from strings to JSON-ifyable objects
@@ -113,7 +111,7 @@ var AbstractRenderer = /** @class */ (function () {
113
111
  * @param _objectTags - a list of labels (e.g. `className`s) to be attached to the object.
114
112
  * Renderers may ignore this.
115
113
  */
116
- AbstractRenderer.prototype.endObject = function (_loaderData, _objectTags) {
114
+ endObject(_loaderData, _objectTags) {
117
115
  // Render the paths all at once
118
116
  this.flushPath();
119
117
  this.currentPaths = null;
@@ -121,48 +119,46 @@ var AbstractRenderer = /** @class */ (function () {
121
119
  if (this.objectLevel < 0) {
122
120
  throw new Error('More objects have ended than have been started (negative object nesting level)!');
123
121
  }
124
- };
125
- AbstractRenderer.prototype.getNestingLevel = function () {
122
+ }
123
+ getNestingLevel() {
126
124
  return this.objectLevel;
127
- };
125
+ }
128
126
  // Returns true iff other can be rendered onto this without data loss.
129
- AbstractRenderer.prototype.canRenderFromWithoutDataLoss = function (_other) {
127
+ canRenderFromWithoutDataLoss(_other) {
130
128
  return false;
131
- };
129
+ }
132
130
  // MUST throw if other and this are not of the same base class.
133
- AbstractRenderer.prototype.renderFromOtherOfSameType = function (_renderTo, other) {
134
- throw new Error("Unable to render from ".concat(other, ": Not implemented"));
135
- };
131
+ renderFromOtherOfSameType(_renderTo, other) {
132
+ throw new Error(`Unable to render from ${other}: Not implemented`);
133
+ }
136
134
  // Set a transformation to apply to things before rendering,
137
135
  // replacing the viewport's transform.
138
- AbstractRenderer.prototype.setTransform = function (transform) {
136
+ setTransform(transform) {
139
137
  this.selfTransform = transform;
140
- };
141
- AbstractRenderer.prototype.pushTransform = function (transform) {
138
+ }
139
+ pushTransform(transform) {
142
140
  this.transformStack.push(this.selfTransform);
143
141
  this.setTransform(this.getCanvasToScreenTransform().rightMul(transform));
144
- };
145
- AbstractRenderer.prototype.popTransform = function () {
146
- var _a;
142
+ }
143
+ popTransform() {
147
144
  if (this.transformStack.length === 0) {
148
145
  throw new Error('Unable to pop more transforms than have been pushed!');
149
146
  }
150
- this.setTransform((_a = this.transformStack.pop()) !== null && _a !== void 0 ? _a : null);
151
- };
147
+ this.setTransform(this.transformStack.pop() ?? null);
148
+ }
152
149
  // Get the matrix that transforms a vector on the canvas to a vector on this'
153
150
  // rendering target.
154
- AbstractRenderer.prototype.getCanvasToScreenTransform = function () {
151
+ getCanvasToScreenTransform() {
155
152
  if (this.selfTransform) {
156
153
  return this.selfTransform;
157
154
  }
158
155
  return this.viewport.canvasToScreenTransform;
159
- };
160
- AbstractRenderer.prototype.canvasToScreen = function (vec) {
156
+ }
157
+ canvasToScreen(vec) {
161
158
  return this.getCanvasToScreenTransform().transformVec2(vec);
162
- };
163
- AbstractRenderer.prototype.getSizeOfCanvasPixelOnScreen = function () {
164
- return this.getCanvasToScreenTransform().transformVec3(Vec2_1.Vec2.unitX).length();
165
- };
166
- return AbstractRenderer;
167
- }());
159
+ }
160
+ getSizeOfCanvasPixelOnScreen() {
161
+ return this.getCanvasToScreenTransform().transformVec3(math_1.Vec2.unitX).length();
162
+ }
163
+ }
168
164
  exports.default = AbstractRenderer;
@@ -1,11 +1,9 @@
1
- import Mat33 from '../../math/Mat33';
2
- import Rect2 from '../../math/shapes/Rect2';
3
- import { Point2, Vec2 } from '../../math/Vec2';
4
- import Vec3 from '../../math/Vec3';
1
+ import { Mat33, Rect2, Point2, Vec2, Vec3 } from '@js-draw/math';
5
2
  import Viewport from '../../Viewport';
6
3
  import RenderingStyle from '../RenderingStyle';
7
4
  import TextRenderingStyle from '../TextRenderingStyle';
8
- import AbstractRenderer, { RenderableImage, RenderablePathSpec } from './AbstractRenderer';
5
+ import AbstractRenderer, { RenderableImage } from './AbstractRenderer';
6
+ import RenderablePathSpec from '../RenderablePathSpec';
9
7
  /**
10
8
  * Renders onto a `CanvasRenderingContext2D`.
11
9
  *
@@ -1,25 +1,12 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
17
5
  Object.defineProperty(exports, "__esModule", { value: true });
18
- var Color4_1 = require("../../Color4");
19
- var TextComponent_1 = require("../../components/TextComponent");
20
- var Path_1 = require("../../math/shapes/Path");
21
- var Vec2_1 = require("../../math/Vec2");
22
- var AbstractRenderer_1 = require("./AbstractRenderer");
6
+ const TextComponent_1 = __importDefault(require("../../components/TextComponent"));
7
+ const math_1 = require("@js-draw/math");
8
+ const AbstractRenderer_1 = __importDefault(require("./AbstractRenderer"));
9
+ const RenderablePathSpec_1 = require("../RenderablePathSpec");
23
10
  /**
24
11
  * Renders onto a `CanvasRenderingContext2D`.
25
12
  *
@@ -40,24 +27,22 @@ var AbstractRenderer_1 = require("./AbstractRenderer");
40
27
  * editor.image.render(renderer, viewport);
41
28
  * ```
42
29
  */
43
- var CanvasRenderer = /** @class */ (function (_super) {
44
- __extends(CanvasRenderer, _super);
30
+ class CanvasRenderer extends AbstractRenderer_1.default {
45
31
  /**
46
32
  * Creates a new `CanvasRenderer` that renders to the given rendering context.
47
33
  * The `viewport` is used to determine the translation/rotation/scaling of the content
48
34
  * to draw.
49
35
  */
50
- function CanvasRenderer(ctx, viewport) {
51
- var _this = _super.call(this, viewport) || this;
52
- _this.ctx = ctx;
53
- _this.ignoreObjectsAboveLevel = null;
54
- _this.ignoringObject = false;
55
- _this.currentObjectBBox = null;
56
- _this.clipLevels = [];
57
- _this.setDraftMode(false);
58
- return _this;
36
+ constructor(ctx, viewport) {
37
+ super(viewport);
38
+ this.ctx = ctx;
39
+ this.ignoreObjectsAboveLevel = null;
40
+ this.ignoringObject = false;
41
+ this.currentObjectBBox = null;
42
+ this.clipLevels = [];
43
+ this.setDraftMode(false);
59
44
  }
60
- CanvasRenderer.prototype.transformBy = function (transformBy) {
45
+ transformBy(transformBy) {
61
46
  // From MDN, transform(a,b,c,d,e,f)
62
47
  // takes input such that
63
48
  // ⎡ a c e ⎤
@@ -66,22 +51,22 @@ var CanvasRenderer = /** @class */ (function (_super) {
66
51
  this.ctx.transform(transformBy.a1, transformBy.b1, // a, b
67
52
  transformBy.a2, transformBy.b2, // c, d
68
53
  transformBy.a3, transformBy.b3);
69
- };
70
- CanvasRenderer.prototype.canRenderFromWithoutDataLoss = function (other) {
54
+ }
55
+ canRenderFromWithoutDataLoss(other) {
71
56
  return other instanceof CanvasRenderer;
72
- };
73
- CanvasRenderer.prototype.renderFromOtherOfSameType = function (transformBy, other) {
57
+ }
58
+ renderFromOtherOfSameType(transformBy, other) {
74
59
  if (!(other instanceof CanvasRenderer)) {
75
- throw new Error("".concat(other, " cannot be rendered onto ").concat(this));
60
+ throw new Error(`${other} cannot be rendered onto ${this}`);
76
61
  }
77
62
  transformBy = this.getCanvasToScreenTransform().rightMul(transformBy);
78
63
  this.ctx.save();
79
64
  this.transformBy(transformBy);
80
65
  this.ctx.drawImage(other.ctx.canvas, 0, 0);
81
66
  this.ctx.restore();
82
- };
67
+ }
83
68
  // Set parameters for lower/higher quality rendering
84
- CanvasRenderer.prototype.setDraftMode = function (draftMode) {
69
+ setDraftMode(draftMode) {
85
70
  if (draftMode) {
86
71
  this.minSquareCurveApproxDist = 9;
87
72
  this.minRenderSizeBothDimens = 2;
@@ -92,47 +77,53 @@ var CanvasRenderer = /** @class */ (function (_super) {
92
77
  this.minRenderSizeBothDimens = 0.2;
93
78
  this.minRenderSizeAnyDimen = 1e-6;
94
79
  }
95
- };
96
- CanvasRenderer.prototype.displaySize = function () {
97
- return Vec2_1.Vec2.of(this.ctx.canvas.clientWidth, this.ctx.canvas.clientHeight);
98
- };
99
- CanvasRenderer.prototype.clear = function () {
80
+ }
81
+ displaySize() {
82
+ return math_1.Vec2.of(this.ctx.canvas.clientWidth, this.ctx.canvas.clientHeight);
83
+ }
84
+ clear() {
100
85
  this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
101
- };
102
- CanvasRenderer.prototype.beginPath = function (startPoint) {
86
+ }
87
+ beginPath(startPoint) {
103
88
  startPoint = this.canvasToScreen(startPoint);
104
89
  this.ctx.beginPath();
105
90
  this.ctx.moveTo(startPoint.x, startPoint.y);
106
- };
107
- CanvasRenderer.prototype.endPath = function (style) {
108
- this.ctx.save();
109
- this.ctx.fillStyle = style.fill.toHexString();
110
- this.ctx.fill();
91
+ }
92
+ endPath(style) {
93
+ // Saving and restoring can be slow in some browsers
94
+ // (e.g. 0.50ms). Avoid.
95
+ //this.ctx.save();
96
+ // If not a transparent fill
97
+ if (style.fill.a > 0) {
98
+ this.ctx.fillStyle = style.fill.toHexString();
99
+ this.ctx.fill();
100
+ }
111
101
  if (style.stroke) {
112
102
  this.ctx.strokeStyle = style.stroke.color.toHexString();
113
103
  this.ctx.lineWidth = this.getSizeOfCanvasPixelOnScreen() * style.stroke.width;
114
104
  this.ctx.lineCap = 'round';
115
105
  this.ctx.lineJoin = 'round';
116
106
  this.ctx.stroke();
107
+ this.ctx.lineWidth = 1;
117
108
  }
118
109
  this.ctx.closePath();
119
- this.ctx.restore();
120
- };
121
- CanvasRenderer.prototype.lineTo = function (point) {
110
+ //this.ctx.restore();
111
+ }
112
+ lineTo(point) {
122
113
  point = this.canvasToScreen(point);
123
114
  this.ctx.lineTo(point.x, point.y);
124
- };
125
- CanvasRenderer.prototype.moveTo = function (point) {
115
+ }
116
+ moveTo(point) {
126
117
  point = this.canvasToScreen(point);
127
118
  this.ctx.moveTo(point.x, point.y);
128
- };
129
- CanvasRenderer.prototype.traceCubicBezierCurve = function (p1, p2, p3) {
119
+ }
120
+ traceCubicBezierCurve(p1, p2, p3) {
130
121
  p1 = this.canvasToScreen(p1);
131
122
  p2 = this.canvasToScreen(p2);
132
123
  p3 = this.canvasToScreen(p3);
133
124
  // Approximate the curve if small enough.
134
- var delta1 = p2.minus(p1);
135
- var delta2 = p3.minus(p2);
125
+ const delta1 = p2.minus(p1);
126
+ const delta2 = p3.minus(p2);
136
127
  if (delta1.magnitudeSquared() < this.minSquareCurveApproxDist
137
128
  && delta2.magnitudeSquared() < this.minSquareCurveApproxDist) {
138
129
  this.ctx.lineTo(p3.x, p3.y);
@@ -140,32 +131,31 @@ var CanvasRenderer = /** @class */ (function (_super) {
140
131
  else {
141
132
  this.ctx.bezierCurveTo(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y);
142
133
  }
143
- };
144
- CanvasRenderer.prototype.traceQuadraticBezierCurve = function (controlPoint, endPoint) {
134
+ }
135
+ traceQuadraticBezierCurve(controlPoint, endPoint) {
145
136
  controlPoint = this.canvasToScreen(controlPoint);
146
137
  endPoint = this.canvasToScreen(endPoint);
147
138
  // Approximate the curve with a line if small enough
148
- var delta = controlPoint.minus(endPoint);
139
+ const delta = controlPoint.minus(endPoint);
149
140
  if (delta.magnitudeSquared() < this.minSquareCurveApproxDist) {
150
141
  this.ctx.lineTo(endPoint.x, endPoint.y);
151
142
  }
152
143
  else {
153
144
  this.ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, endPoint.x, endPoint.y);
154
145
  }
155
- };
156
- CanvasRenderer.prototype.drawPath = function (path) {
157
- var _a;
146
+ }
147
+ drawPath(path) {
158
148
  if (this.ignoringObject) {
159
149
  return;
160
150
  }
161
151
  // If part of a huge object, it might be worth trimming the path
162
- if ((_a = this.currentObjectBBox) === null || _a === void 0 ? void 0 : _a.containsRect(this.getViewport().visibleRect)) {
152
+ if (this.currentObjectBBox?.containsRect(this.getViewport().visibleRect)) {
163
153
  // Try to trim/remove parts of the path outside of the bounding box.
164
- path = Path_1.default.visualEquivalent(path, this.getViewport().visibleRect);
154
+ path = (0, RenderablePathSpec_1.visualEquivalent)(path, this.getViewport().visibleRect);
165
155
  }
166
- _super.prototype.drawPath.call(this, path);
167
- };
168
- CanvasRenderer.prototype.drawText = function (text, transform, style) {
156
+ super.drawPath(path);
157
+ }
158
+ drawText(text, transform, style) {
169
159
  this.ctx.save();
170
160
  transform = this.getCanvasToScreenTransform().rightMul(transform);
171
161
  this.transformBy(transform);
@@ -180,43 +170,42 @@ var CanvasRenderer = /** @class */ (function (_super) {
180
170
  this.ctx.strokeText(text, 0, 0);
181
171
  }
182
172
  this.ctx.restore();
183
- };
184
- CanvasRenderer.prototype.drawImage = function (image) {
173
+ }
174
+ drawImage(image) {
185
175
  this.ctx.save();
186
- var transform = this.getCanvasToScreenTransform().rightMul(image.transform);
176
+ const transform = this.getCanvasToScreenTransform().rightMul(image.transform);
187
177
  this.transformBy(transform);
188
178
  this.ctx.drawImage(image.image, 0, 0);
189
179
  this.ctx.restore();
190
- };
191
- CanvasRenderer.prototype.startObject = function (boundingBox, clip) {
180
+ }
181
+ startObject(boundingBox, clip) {
192
182
  if (this.isTooSmallToRender(boundingBox)) {
193
183
  this.ignoreObjectsAboveLevel = this.getNestingLevel();
194
184
  this.ignoringObject = true;
195
185
  }
196
- _super.prototype.startObject.call(this, boundingBox);
186
+ super.startObject(boundingBox);
197
187
  this.currentObjectBBox = boundingBox;
198
188
  if (!this.ignoringObject && clip) {
199
189
  // Don't clip if it would only remove content already trimmed by
200
190
  // the edge of the screen.
201
- var clippedIsOutsideScreen = boundingBox.containsRect(this.getViewport().visibleRect);
191
+ const clippedIsOutsideScreen = boundingBox.containsRect(this.getViewport().visibleRect);
202
192
  if (!clippedIsOutsideScreen) {
203
193
  this.clipLevels.push(this.objectLevel);
204
194
  this.ctx.save();
205
195
  this.ctx.beginPath();
206
- for (var _i = 0, _a = boundingBox.corners; _i < _a.length; _i++) {
207
- var corner = _a[_i];
208
- var screenCorner = this.canvasToScreen(corner);
196
+ for (const corner of boundingBox.corners) {
197
+ const screenCorner = this.canvasToScreen(corner);
209
198
  this.ctx.lineTo(screenCorner.x, screenCorner.y);
210
199
  }
211
200
  this.ctx.clip();
212
201
  }
213
202
  }
214
- };
215
- CanvasRenderer.prototype.endObject = function () {
203
+ }
204
+ endObject() {
216
205
  // Cache this.objectLevel — it may be decremented by super.endObject.
217
- var objectLevel = this.objectLevel;
206
+ const objectLevel = this.objectLevel;
218
207
  this.currentObjectBBox = null;
219
- _super.prototype.endObject.call(this);
208
+ super.endObject();
220
209
  if (!this.ignoringObject && this.clipLevels.length > 0) {
221
210
  if (this.clipLevels[this.clipLevels.length - 1] === objectLevel) {
222
211
  this.ctx.restore();
@@ -228,38 +217,34 @@ var CanvasRenderer = /** @class */ (function (_super) {
228
217
  this.ignoreObjectsAboveLevel = null;
229
218
  this.ignoringObject = false;
230
219
  }
231
- };
220
+ }
232
221
  // @internal
233
- CanvasRenderer.prototype.drawPoints = function () {
234
- var points = [];
235
- for (var _i = 0; _i < arguments.length; _i++) {
236
- points[_i] = arguments[_i];
237
- }
238
- var pointRadius = 10;
239
- for (var i = 0; i < points.length; i++) {
240
- var point = this.canvasToScreen(points[i]);
222
+ drawPoints(...points) {
223
+ const pointRadius = 10;
224
+ for (let i = 0; i < points.length; i++) {
225
+ const point = this.canvasToScreen(points[i]);
241
226
  this.ctx.beginPath();
242
227
  this.ctx.arc(point.x, point.y, pointRadius, 0, Math.PI * 2);
243
- this.ctx.fillStyle = Color4_1.default.ofRGBA(0.5 + Math.sin(i) / 2, 1.0, 0.5 + Math.cos(i * 0.2) / 4, 0.5).toHexString();
228
+ this.ctx.fillStyle = math_1.Color4.ofRGBA(0.5 + Math.sin(i) / 2, 1.0, 0.5 + Math.cos(i * 0.2) / 4, 0.5).toHexString();
229
+ this.ctx.lineWidth = 2;
244
230
  this.ctx.fill();
245
231
  this.ctx.stroke();
246
232
  this.ctx.closePath();
247
233
  this.ctx.textAlign = 'center';
248
234
  this.ctx.textBaseline = 'middle';
249
235
  this.ctx.fillStyle = 'black';
250
- this.ctx.fillText("".concat(i), point.x, point.y, pointRadius * 2);
236
+ this.ctx.fillText(`${i}`, point.x, point.y, pointRadius * 2);
251
237
  }
252
- };
238
+ }
253
239
  // @internal
254
- CanvasRenderer.prototype.isTooSmallToRender = function (rect) {
240
+ isTooSmallToRender(rect) {
255
241
  // Should we ignore all objects within this object's bbox?
256
- var diagonal = this.getCanvasToScreenTransform().transformVec3(rect.size);
257
- var bothDimenMinSize = this.minRenderSizeBothDimens;
258
- var bothTooSmall = Math.abs(diagonal.x) < bothDimenMinSize && Math.abs(diagonal.y) < bothDimenMinSize;
259
- var anyDimenMinSize = this.minRenderSizeAnyDimen;
260
- var anyTooSmall = Math.abs(diagonal.x) < anyDimenMinSize || Math.abs(diagonal.y) < anyDimenMinSize;
242
+ const diagonal = this.getCanvasToScreenTransform().transformVec3(rect.size);
243
+ const bothDimenMinSize = this.minRenderSizeBothDimens;
244
+ const bothTooSmall = Math.abs(diagonal.x) < bothDimenMinSize && Math.abs(diagonal.y) < bothDimenMinSize;
245
+ const anyDimenMinSize = this.minRenderSizeAnyDimen;
246
+ const anyTooSmall = Math.abs(diagonal.x) < anyDimenMinSize || Math.abs(diagonal.y) < anyDimenMinSize;
261
247
  return bothTooSmall || anyTooSmall;
262
- };
263
- return CanvasRenderer;
264
- }(AbstractRenderer_1.default));
248
+ }
249
+ }
265
250
  exports.default = CanvasRenderer;
@@ -1,7 +1,4 @@
1
- import Mat33 from '../../math/Mat33';
2
- import Rect2 from '../../math/shapes/Rect2';
3
- import { Point2, Vec2 } from '../../math/Vec2';
4
- import Vec3 from '../../math/Vec3';
1
+ import { Mat33, Rect2, Point2, Vec2, Vec3 } from '@js-draw/math';
5
2
  import Viewport from '../../Viewport';
6
3
  import RenderingStyle from '../RenderingStyle';
7
4
  import TextRenderingStyle from '../TextRenderingStyle';