js-draw 0.25.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/README.md +80 -26
  2. package/build-config.json +22 -21
  3. package/dist/Editor.css +1281 -0
  4. package/dist/bundle.js +3 -3
  5. package/dist/bundledStyles.js +1 -1
  6. package/dist/cjs/Editor.d.ts +91 -12
  7. package/dist/cjs/Editor.js +619 -590
  8. package/dist/cjs/EditorImage.d.ts +5 -2
  9. package/dist/cjs/EditorImage.js +258 -297
  10. package/dist/cjs/EventDispatcher.js +17 -19
  11. package/dist/cjs/Pointer.d.ts +3 -1
  12. package/dist/cjs/Pointer.js +41 -44
  13. package/dist/cjs/SVGLoader.d.ts +7 -1
  14. package/dist/cjs/SVGLoader.js +373 -474
  15. package/dist/cjs/UndoRedoHistory.js +28 -40
  16. package/dist/cjs/Viewport.d.ts +1 -4
  17. package/dist/cjs/Viewport.js +150 -193
  18. package/dist/cjs/bundle/bundled.js +4 -1
  19. package/dist/cjs/commands/Command.js +22 -49
  20. package/dist/cjs/commands/Duplicate.js +28 -44
  21. package/dist/cjs/commands/Erase.js +36 -54
  22. package/dist/cjs/commands/SerializableCommand.js +20 -35
  23. package/dist/cjs/commands/UnresolvedCommand.js +14 -29
  24. package/dist/cjs/commands/invertCommand.js +29 -51
  25. package/dist/cjs/commands/lib.js +9 -6
  26. package/dist/cjs/commands/localization.d.ts +1 -1
  27. package/dist/cjs/commands/localization.js +9 -9
  28. package/dist/cjs/commands/uniteCommands.js +57 -87
  29. package/dist/cjs/components/AbstractComponent.d.ts +11 -3
  30. package/dist/cjs/components/AbstractComponent.js +141 -169
  31. package/dist/cjs/components/BackgroundComponent.d.ts +3 -6
  32. package/dist/cjs/components/BackgroundComponent.js +124 -149
  33. package/dist/cjs/components/ImageComponent.d.ts +3 -5
  34. package/dist/cjs/components/ImageComponent.js +95 -175
  35. package/dist/cjs/components/RestylableComponent.d.ts +1 -1
  36. package/dist/cjs/components/RestylableComponent.js +41 -56
  37. package/dist/cjs/components/SVGGlobalAttributesObject.d.ts +1 -3
  38. package/dist/cjs/components/SVGGlobalAttributesObject.js +34 -51
  39. package/dist/cjs/components/Stroke.d.ts +4 -6
  40. package/dist/cjs/components/Stroke.js +95 -121
  41. package/dist/cjs/components/TextComponent.d.ts +2 -4
  42. package/dist/cjs/components/TextComponent.js +189 -234
  43. package/dist/cjs/components/UnknownSVGObject.d.ts +1 -3
  44. package/dist/cjs/components/UnknownSVGObject.js +30 -43
  45. package/dist/cjs/components/builders/ArrowBuilder.d.ts +1 -1
  46. package/dist/cjs/components/builders/ArrowBuilder.js +43 -42
  47. package/dist/cjs/components/builders/CircleBuilder.js +43 -43
  48. package/dist/cjs/components/builders/FreehandLineBuilder.d.ts +3 -2
  49. package/dist/cjs/components/builders/FreehandLineBuilder.js +73 -86
  50. package/dist/cjs/components/builders/LineBuilder.d.ts +1 -1
  51. package/dist/cjs/components/builders/LineBuilder.js +38 -36
  52. package/dist/cjs/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +1 -1
  53. package/dist/cjs/components/builders/PressureSensitiveFreehandLineBuilder.js +131 -139
  54. package/dist/cjs/components/builders/RectangleBuilder.d.ts +1 -1
  55. package/dist/cjs/components/builders/RectangleBuilder.js +31 -31
  56. package/dist/cjs/components/builders/types.d.ts +1 -1
  57. package/dist/cjs/components/lib.d.ts +3 -1
  58. package/dist/cjs/components/lib.js +10 -7
  59. package/dist/cjs/components/localization.js +4 -4
  60. package/dist/cjs/components/util/StrokeSmoother.d.ts +1 -2
  61. package/dist/cjs/components/util/StrokeSmoother.js +67 -72
  62. package/dist/cjs/components/util/describeComponentList.d.ts +1 -1
  63. package/dist/cjs/components/util/describeComponentList.js +4 -5
  64. package/dist/cjs/dialogs/makeAboutDialog.d.ts +15 -0
  65. package/dist/cjs/dialogs/makeAboutDialog.js +54 -0
  66. package/dist/cjs/inputEvents.d.ts +84 -0
  67. package/dist/cjs/inputEvents.js +40 -0
  68. package/dist/cjs/lib.d.ts +29 -13
  69. package/dist/cjs/lib.js +38 -23
  70. package/dist/cjs/localization.js +19 -18
  71. package/dist/cjs/localizations/de.js +117 -13
  72. package/dist/cjs/localizations/en.js +4 -13
  73. package/dist/cjs/localizations/es.js +62 -23
  74. package/dist/cjs/localizations/getLocalizationTable.js +15 -13
  75. package/dist/cjs/rendering/Display.d.ts +1 -2
  76. package/dist/cjs/rendering/Display.js +70 -83
  77. package/dist/cjs/rendering/RenderablePathSpec.d.ts +15 -0
  78. package/dist/cjs/rendering/RenderablePathSpec.js +70 -0
  79. package/dist/cjs/rendering/RenderingStyle.d.ts +4 -4
  80. package/dist/cjs/rendering/RenderingStyle.js +18 -28
  81. package/dist/cjs/rendering/TextRenderingStyle.d.ts +10 -10
  82. package/dist/cjs/rendering/TextRenderingStyle.js +13 -18
  83. package/dist/cjs/rendering/caching/CacheRecord.d.ts +1 -2
  84. package/dist/cjs/rendering/caching/CacheRecord.js +20 -22
  85. package/dist/cjs/rendering/caching/CacheRecordManager.d.ts +1 -1
  86. package/dist/cjs/rendering/caching/CacheRecordManager.js +17 -15
  87. package/dist/cjs/rendering/caching/RenderingCache.js +19 -19
  88. package/dist/cjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
  89. package/dist/cjs/rendering/caching/RenderingCacheNode.js +98 -118
  90. package/dist/cjs/rendering/caching/testUtils.js +24 -23
  91. package/dist/cjs/rendering/caching/types.d.ts +3 -3
  92. package/dist/cjs/rendering/lib.js +8 -5
  93. package/dist/cjs/rendering/localization.js +5 -5
  94. package/dist/cjs/rendering/renderers/AbstractRenderer.d.ts +2 -11
  95. package/dist/cjs/rendering/renderers/AbstractRenderer.js +53 -57
  96. package/dist/cjs/rendering/renderers/CanvasRenderer.d.ts +3 -5
  97. package/dist/cjs/rendering/renderers/CanvasRenderer.js +91 -106
  98. package/dist/cjs/rendering/renderers/DummyRenderer.d.ts +1 -4
  99. package/dist/cjs/rendering/renderers/DummyRenderer.js +56 -76
  100. package/dist/cjs/rendering/renderers/SVGRenderer.d.ts +5 -5
  101. package/dist/cjs/rendering/renderers/SVGRenderer.js +194 -176
  102. package/dist/cjs/rendering/renderers/TextOnlyRenderer.d.ts +1 -3
  103. package/dist/cjs/rendering/renderers/TextOnlyRenderer.js +47 -72
  104. package/dist/cjs/shortcuts/KeyBinding.d.ts +5 -0
  105. package/dist/cjs/shortcuts/KeyBinding.js +94 -70
  106. package/dist/cjs/shortcuts/KeyboardShortcutManager.d.ts +1 -1
  107. package/dist/cjs/shortcuts/KeyboardShortcutManager.js +36 -45
  108. package/dist/cjs/shortcuts/lib.js +5 -2
  109. package/dist/cjs/testing/createEditor.js +7 -4
  110. package/dist/cjs/testing/getUniquePointerId.js +4 -5
  111. package/dist/cjs/testing/lib.js +5 -2
  112. package/dist/cjs/testing/sendPenEvent.d.ts +2 -2
  113. package/dist/cjs/testing/sendPenEvent.js +10 -7
  114. package/dist/cjs/testing/sendTouchEvent.d.ts +2 -2
  115. package/dist/cjs/testing/sendTouchEvent.js +34 -16
  116. package/dist/cjs/toolbar/AbstractToolbar.d.ts +166 -0
  117. package/dist/cjs/toolbar/AbstractToolbar.js +410 -0
  118. package/dist/cjs/toolbar/DropdownToolbar.d.ts +43 -0
  119. package/dist/cjs/toolbar/DropdownToolbar.js +176 -0
  120. package/dist/cjs/toolbar/EdgeToolbar.d.ts +47 -0
  121. package/dist/cjs/toolbar/EdgeToolbar.js +422 -0
  122. package/dist/cjs/toolbar/IconProvider.d.ts +54 -30
  123. package/dist/cjs/toolbar/IconProvider.js +652 -224
  124. package/dist/cjs/toolbar/constants.d.ts +1 -0
  125. package/dist/cjs/toolbar/constants.js +4 -0
  126. package/dist/cjs/toolbar/lib.d.ts +4 -2
  127. package/dist/cjs/toolbar/lib.js +10 -3
  128. package/dist/cjs/toolbar/localization.d.ts +9 -2
  129. package/dist/cjs/toolbar/localization.js +26 -19
  130. package/dist/cjs/toolbar/types.d.ts +7 -0
  131. package/dist/cjs/toolbar/widgets/ActionButtonWidget.d.ts +1 -1
  132. package/dist/cjs/toolbar/widgets/ActionButtonWidget.js +23 -39
  133. package/dist/cjs/toolbar/widgets/BaseToolWidget.d.ts +1 -1
  134. package/dist/cjs/toolbar/widgets/BaseToolWidget.js +35 -37
  135. package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +60 -5
  136. package/dist/cjs/toolbar/widgets/BaseWidget.js +232 -177
  137. package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.js +130 -117
  138. package/dist/cjs/toolbar/widgets/EraserToolWidget.d.ts +1 -3
  139. package/dist/cjs/toolbar/widgets/EraserToolWidget.js +45 -73
  140. package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  141. package/dist/cjs/toolbar/widgets/HandToolWidget.js +126 -141
  142. package/dist/cjs/toolbar/widgets/InsertImageWidget.d.ts +9 -7
  143. package/dist/cjs/toolbar/widgets/InsertImageWidget.js +147 -212
  144. package/dist/cjs/toolbar/widgets/OverflowWidget.js +33 -61
  145. package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +8 -1
  146. package/dist/cjs/toolbar/widgets/PenToolWidget.js +162 -234
  147. package/dist/cjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
  148. package/dist/cjs/toolbar/widgets/SelectionToolWidget.js +105 -177
  149. package/dist/cjs/toolbar/widgets/TextToolWidget.js +64 -87
  150. package/dist/cjs/toolbar/widgets/components/makeColorInput.d.ts +10 -0
  151. package/dist/cjs/toolbar/{makeColorInput.js → widgets/components/makeColorInput.js} +57 -34
  152. package/dist/cjs/toolbar/widgets/components/makeFileInput.d.ts +12 -0
  153. package/dist/cjs/toolbar/widgets/components/makeFileInput.js +111 -0
  154. package/dist/cjs/toolbar/widgets/components/makeGridSelector.d.ts +24 -0
  155. package/dist/cjs/toolbar/widgets/components/makeGridSelector.js +127 -0
  156. package/dist/cjs/toolbar/widgets/components/makeSeparator.d.ts +7 -0
  157. package/dist/cjs/toolbar/widgets/components/makeSeparator.js +16 -0
  158. package/dist/cjs/toolbar/widgets/components/makeThicknessSlider.d.ts +8 -0
  159. package/dist/cjs/toolbar/widgets/components/makeThicknessSlider.js +47 -0
  160. package/dist/cjs/toolbar/widgets/keybindings.js +8 -5
  161. package/dist/cjs/toolbar/widgets/layout/DropdownLayoutManager.d.ts +21 -0
  162. package/dist/cjs/toolbar/widgets/layout/DropdownLayoutManager.js +199 -0
  163. package/dist/cjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.d.ts +14 -0
  164. package/dist/cjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.js +60 -0
  165. package/dist/cjs/toolbar/widgets/layout/types.d.ts +63 -0
  166. package/dist/cjs/toolbar/widgets/layout/types.js +2 -0
  167. package/dist/cjs/toolbar/widgets/lib.d.ts +1 -1
  168. package/dist/cjs/toolbar/widgets/lib.js +15 -11
  169. package/dist/cjs/tools/BaseTool.d.ts +28 -9
  170. package/dist/cjs/tools/BaseTool.js +128 -51
  171. package/dist/cjs/tools/Eraser.d.ts +8 -1
  172. package/dist/cjs/tools/Eraser.js +82 -92
  173. package/dist/cjs/tools/FindTool.d.ts +1 -1
  174. package/dist/cjs/tools/FindTool.js +61 -77
  175. package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
  176. package/dist/cjs/tools/InputFilter/FunctionMapper.js +21 -0
  177. package/dist/cjs/tools/InputFilter/InputMapper.d.ts +23 -0
  178. package/dist/cjs/tools/InputFilter/InputMapper.js +38 -0
  179. package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +15 -0
  180. package/dist/cjs/tools/InputFilter/InputPipeline.js +54 -0
  181. package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
  182. package/dist/cjs/tools/InputFilter/InputStabilizer.js +181 -0
  183. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
  184. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +84 -0
  185. package/dist/cjs/tools/PanZoom.d.ts +4 -2
  186. package/dist/cjs/tools/PanZoom.js +186 -248
  187. package/dist/cjs/tools/PasteHandler.d.ts +1 -1
  188. package/dist/cjs/tools/PasteHandler.js +49 -148
  189. package/dist/cjs/tools/Pen.d.ts +12 -11
  190. package/dist/cjs/tools/Pen.js +123 -158
  191. package/dist/cjs/tools/PipetteTool.d.ts +11 -2
  192. package/dist/cjs/tools/PipetteTool.js +51 -48
  193. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -1
  194. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +15 -30
  195. package/dist/cjs/tools/SelectionTool/Selection.d.ts +5 -5
  196. package/dist/cjs/tools/SelectionTool/Selection.js +308 -415
  197. package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +15 -5
  198. package/dist/cjs/tools/SelectionTool/SelectionHandle.js +63 -37
  199. package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +4 -4
  200. package/dist/cjs/tools/SelectionTool/SelectionTool.js +164 -187
  201. package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +1 -1
  202. package/dist/cjs/tools/SelectionTool/TransformMode.js +65 -66
  203. package/dist/cjs/tools/SoundUITool.d.ts +2 -1
  204. package/dist/cjs/tools/SoundUITool.js +70 -84
  205. package/dist/cjs/tools/TextTool.d.ts +5 -3
  206. package/dist/cjs/tools/TextTool.js +169 -173
  207. package/dist/cjs/tools/ToolController.d.ts +16 -2
  208. package/dist/cjs/tools/ToolController.js +124 -100
  209. package/dist/cjs/tools/ToolEnabledGroup.js +6 -9
  210. package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +1 -1
  211. package/dist/cjs/tools/ToolSwitcherShortcut.js +16 -32
  212. package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +1 -1
  213. package/dist/cjs/tools/ToolbarShortcutHandler.js +17 -33
  214. package/dist/cjs/tools/UndoRedoShortcut.d.ts +1 -1
  215. package/dist/cjs/tools/UndoRedoShortcut.js +12 -27
  216. package/dist/cjs/tools/keybindings.js +21 -18
  217. package/dist/cjs/tools/lib.js +17 -14
  218. package/dist/cjs/tools/localization.d.ts +2 -1
  219. package/dist/cjs/tools/localization.js +8 -7
  220. package/dist/cjs/types.d.ts +22 -80
  221. package/dist/cjs/types.js +8 -16
  222. package/dist/cjs/util/ReactiveValue.d.ts +65 -0
  223. package/dist/cjs/util/ReactiveValue.js +166 -0
  224. package/dist/cjs/util/assertions.js +5 -8
  225. package/dist/cjs/util/fileToBase64.js +6 -6
  226. package/dist/cjs/util/guessKeyCodeFromKey.d.ts +9 -0
  227. package/dist/cjs/util/guessKeyCodeFromKey.js +32 -0
  228. package/dist/cjs/util/listPrefixMatch.d.ts +6 -0
  229. package/dist/cjs/util/listPrefixMatch.js +17 -0
  230. package/dist/cjs/util/stopPropagationOfScrollingWheelEvents.d.ts +2 -0
  231. package/dist/cjs/util/stopPropagationOfScrollingWheelEvents.js +17 -0
  232. package/dist/cjs/util/untilNextAnimationFrame.js +3 -3
  233. package/dist/cjs/util/waitForAll.js +3 -3
  234. package/dist/cjs/util/waitForTimeout.js +3 -3
  235. package/dist/cjs/version.d.ts +4 -0
  236. package/dist/cjs/version.js +5 -0
  237. package/dist/mjs/Editor.d.ts +91 -12
  238. package/dist/mjs/Editor.mjs +565 -563
  239. package/dist/mjs/EditorImage.d.ts +5 -2
  240. package/dist/mjs/EditorImage.mjs +248 -291
  241. package/dist/mjs/EventDispatcher.mjs +17 -20
  242. package/dist/mjs/Pointer.d.ts +3 -1
  243. package/dist/mjs/Pointer.mjs +40 -44
  244. package/dist/mjs/SVGLoader.d.ts +7 -1
  245. package/dist/mjs/SVGLoader.mjs +338 -466
  246. package/dist/mjs/UndoRedoHistory.mjs +27 -39
  247. package/dist/mjs/Viewport.d.ts +1 -4
  248. package/dist/mjs/Viewport.mjs +139 -187
  249. package/dist/mjs/commands/Command.mjs +21 -49
  250. package/dist/mjs/commands/Duplicate.mjs +22 -41
  251. package/dist/mjs/commands/Erase.mjs +30 -51
  252. package/dist/mjs/commands/SerializableCommand.mjs +16 -34
  253. package/dist/mjs/commands/UnresolvedCommand.mjs +10 -29
  254. package/dist/mjs/commands/invertCommand.mjs +24 -49
  255. package/dist/mjs/commands/localization.d.ts +1 -1
  256. package/dist/mjs/commands/localization.mjs +10 -10
  257. package/dist/mjs/commands/uniteCommands.mjs +52 -85
  258. package/dist/mjs/components/AbstractComponent.d.ts +11 -3
  259. package/dist/mjs/components/AbstractComponent.mjs +135 -166
  260. package/dist/mjs/components/BackgroundComponent.d.ts +3 -6
  261. package/dist/mjs/components/BackgroundComponent.mjs +107 -136
  262. package/dist/mjs/components/ImageComponent.d.ts +3 -5
  263. package/dist/mjs/components/ImageComponent.mjs +90 -174
  264. package/dist/mjs/components/RestylableComponent.d.ts +1 -1
  265. package/dist/mjs/components/RestylableComponent.mjs +35 -53
  266. package/dist/mjs/components/SVGGlobalAttributesObject.d.ts +1 -3
  267. package/dist/mjs/components/SVGGlobalAttributesObject.mjs +29 -50
  268. package/dist/mjs/components/Stroke.d.ts +4 -6
  269. package/dist/mjs/components/Stroke.mjs +89 -119
  270. package/dist/mjs/components/TextComponent.d.ts +2 -4
  271. package/dist/mjs/components/TextComponent.mjs +180 -228
  272. package/dist/mjs/components/UnknownSVGObject.d.ts +1 -3
  273. package/dist/mjs/components/UnknownSVGObject.mjs +26 -43
  274. package/dist/mjs/components/builders/ArrowBuilder.d.ts +1 -1
  275. package/dist/mjs/components/builders/ArrowBuilder.mjs +32 -35
  276. package/dist/mjs/components/builders/CircleBuilder.mjs +35 -38
  277. package/dist/mjs/components/builders/FreehandLineBuilder.d.ts +3 -2
  278. package/dist/mjs/components/builders/FreehandLineBuilder.mjs +52 -69
  279. package/dist/mjs/components/builders/LineBuilder.d.ts +1 -1
  280. package/dist/mjs/components/builders/LineBuilder.mjs +30 -32
  281. package/dist/mjs/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +1 -1
  282. package/dist/mjs/components/builders/PressureSensitiveFreehandLineBuilder.mjs +103 -115
  283. package/dist/mjs/components/builders/RectangleBuilder.d.ts +1 -1
  284. package/dist/mjs/components/builders/RectangleBuilder.mjs +27 -31
  285. package/dist/mjs/components/builders/types.d.ts +1 -1
  286. package/dist/mjs/components/lib.d.ts +3 -1
  287. package/dist/mjs/components/lib.mjs +1 -1
  288. package/dist/mjs/components/localization.mjs +5 -5
  289. package/dist/mjs/components/util/StrokeSmoother.d.ts +1 -2
  290. package/dist/mjs/components/util/StrokeSmoother.mjs +63 -69
  291. package/dist/mjs/components/util/describeComponentList.d.ts +1 -1
  292. package/dist/mjs/components/util/describeComponentList.mjs +4 -5
  293. package/dist/mjs/dialogs/makeAboutDialog.d.ts +15 -0
  294. package/dist/mjs/dialogs/makeAboutDialog.mjs +52 -0
  295. package/dist/mjs/inputEvents.d.ts +84 -0
  296. package/dist/mjs/inputEvents.mjs +34 -0
  297. package/dist/mjs/lib.d.ts +29 -13
  298. package/dist/mjs/lib.mjs +30 -13
  299. package/dist/mjs/localization.mjs +14 -13
  300. package/dist/mjs/localizations/de.mjs +116 -12
  301. package/dist/mjs/localizations/en.mjs +3 -12
  302. package/dist/mjs/localizations/es.mjs +61 -22
  303. package/dist/mjs/localizations/getLocalizationTable.mjs +12 -13
  304. package/dist/mjs/rendering/Display.d.ts +1 -2
  305. package/dist/mjs/rendering/Display.mjs +62 -79
  306. package/dist/mjs/rendering/RenderablePathSpec.d.ts +15 -0
  307. package/dist/mjs/rendering/RenderablePathSpec.mjs +64 -0
  308. package/dist/mjs/rendering/RenderingStyle.d.ts +4 -4
  309. package/dist/mjs/rendering/RenderingStyle.mjs +16 -26
  310. package/dist/mjs/rendering/TextRenderingStyle.d.ts +10 -10
  311. package/dist/mjs/rendering/TextRenderingStyle.mjs +12 -17
  312. package/dist/mjs/rendering/caching/CacheRecord.d.ts +1 -2
  313. package/dist/mjs/rendering/caching/CacheRecord.mjs +20 -23
  314. package/dist/mjs/rendering/caching/CacheRecordManager.d.ts +1 -1
  315. package/dist/mjs/rendering/caching/CacheRecordManager.mjs +13 -15
  316. package/dist/mjs/rendering/caching/RenderingCache.mjs +13 -17
  317. package/dist/mjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
  318. package/dist/mjs/rendering/caching/RenderingCacheNode.mjs +94 -115
  319. package/dist/mjs/rendering/caching/testUtils.mjs +19 -21
  320. package/dist/mjs/rendering/caching/types.d.ts +3 -3
  321. package/dist/mjs/rendering/localization.mjs +6 -6
  322. package/dist/mjs/rendering/renderers/AbstractRenderer.d.ts +2 -11
  323. package/dist/mjs/rendering/renderers/AbstractRenderer.mjs +47 -52
  324. package/dist/mjs/rendering/renderers/CanvasRenderer.d.ts +3 -5
  325. package/dist/mjs/rendering/renderers/CanvasRenderer.mjs +84 -103
  326. package/dist/mjs/rendering/renderers/DummyRenderer.d.ts +1 -4
  327. package/dist/mjs/rendering/renderers/DummyRenderer.mjs +51 -75
  328. package/dist/mjs/rendering/renderers/SVGRenderer.d.ts +5 -5
  329. package/dist/mjs/rendering/renderers/SVGRenderer.mjs +185 -171
  330. package/dist/mjs/rendering/renderers/TextOnlyRenderer.d.ts +1 -3
  331. package/dist/mjs/rendering/renderers/TextOnlyRenderer.mjs +43 -72
  332. package/dist/mjs/shortcuts/KeyBinding.d.ts +5 -0
  333. package/dist/mjs/shortcuts/KeyBinding.mjs +94 -71
  334. package/dist/mjs/shortcuts/KeyboardShortcutManager.d.ts +1 -1
  335. package/dist/mjs/shortcuts/KeyboardShortcutManager.mjs +32 -44
  336. package/dist/mjs/testing/createEditor.mjs +2 -2
  337. package/dist/mjs/testing/getUniquePointerId.mjs +4 -5
  338. package/dist/mjs/testing/sendPenEvent.d.ts +2 -2
  339. package/dist/mjs/testing/sendPenEvent.mjs +5 -5
  340. package/dist/mjs/testing/sendTouchEvent.d.ts +2 -2
  341. package/dist/mjs/testing/sendTouchEvent.mjs +8 -16
  342. package/dist/mjs/toolbar/AbstractToolbar.d.ts +166 -0
  343. package/dist/mjs/toolbar/AbstractToolbar.mjs +405 -0
  344. package/dist/mjs/toolbar/DropdownToolbar.d.ts +43 -0
  345. package/dist/mjs/toolbar/DropdownToolbar.mjs +168 -0
  346. package/dist/mjs/toolbar/EdgeToolbar.d.ts +47 -0
  347. package/dist/mjs/toolbar/EdgeToolbar.mjs +414 -0
  348. package/dist/mjs/toolbar/IconProvider.d.ts +54 -30
  349. package/dist/mjs/toolbar/IconProvider.mjs +644 -219
  350. package/dist/mjs/toolbar/constants.d.ts +1 -0
  351. package/dist/mjs/toolbar/constants.mjs +1 -0
  352. package/dist/mjs/toolbar/lib.d.ts +4 -2
  353. package/dist/mjs/toolbar/lib.mjs +3 -1
  354. package/dist/mjs/toolbar/localization.d.ts +9 -2
  355. package/dist/mjs/toolbar/localization.mjs +27 -20
  356. package/dist/mjs/toolbar/types.d.ts +7 -0
  357. package/dist/mjs/toolbar/widgets/ActionButtonWidget.d.ts +1 -1
  358. package/dist/mjs/toolbar/widgets/ActionButtonWidget.mjs +19 -39
  359. package/dist/mjs/toolbar/widgets/BaseToolWidget.d.ts +1 -1
  360. package/dist/mjs/toolbar/widgets/BaseToolWidget.mjs +30 -36
  361. package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +60 -5
  362. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +227 -176
  363. package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.mjs +98 -111
  364. package/dist/mjs/toolbar/widgets/EraserToolWidget.d.ts +1 -3
  365. package/dist/mjs/toolbar/widgets/EraserToolWidget.mjs +41 -73
  366. package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  367. package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +94 -136
  368. package/dist/mjs/toolbar/widgets/InsertImageWidget.d.ts +9 -7
  369. package/dist/mjs/toolbar/widgets/InsertImageWidget.mjs +140 -208
  370. package/dist/mjs/toolbar/widgets/OverflowWidget.mjs +30 -62
  371. package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +8 -1
  372. package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +150 -225
  373. package/dist/mjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
  374. package/dist/mjs/toolbar/widgets/SelectionToolWidget.mjs +97 -173
  375. package/dist/mjs/toolbar/widgets/TextToolWidget.mjs +59 -85
  376. package/dist/mjs/toolbar/widgets/components/makeColorInput.d.ts +10 -0
  377. package/dist/mjs/toolbar/{makeColorInput.mjs → widgets/components/makeColorInput.mjs} +53 -33
  378. package/dist/mjs/toolbar/widgets/components/makeFileInput.d.ts +12 -0
  379. package/dist/mjs/toolbar/widgets/components/makeFileInput.mjs +106 -0
  380. package/dist/mjs/toolbar/widgets/components/makeGridSelector.d.ts +24 -0
  381. package/dist/mjs/toolbar/widgets/components/makeGridSelector.mjs +122 -0
  382. package/dist/mjs/toolbar/widgets/components/makeSeparator.d.ts +7 -0
  383. package/dist/mjs/toolbar/widgets/components/makeSeparator.mjs +14 -0
  384. package/dist/mjs/toolbar/widgets/components/makeThicknessSlider.d.ts +8 -0
  385. package/dist/mjs/toolbar/widgets/components/makeThicknessSlider.mjs +45 -0
  386. package/dist/mjs/toolbar/widgets/keybindings.mjs +5 -5
  387. package/dist/mjs/toolbar/widgets/layout/DropdownLayoutManager.d.ts +21 -0
  388. package/dist/mjs/toolbar/widgets/layout/DropdownLayoutManager.mjs +193 -0
  389. package/dist/mjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.d.ts +14 -0
  390. package/dist/mjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.mjs +57 -0
  391. package/dist/mjs/toolbar/widgets/layout/types.d.ts +63 -0
  392. package/dist/mjs/toolbar/widgets/lib.d.ts +1 -1
  393. package/dist/mjs/toolbar/widgets/lib.mjs +1 -1
  394. package/dist/mjs/tools/BaseTool.d.ts +28 -9
  395. package/dist/mjs/tools/BaseTool.mjs +127 -50
  396. package/dist/mjs/tools/Eraser.d.ts +8 -1
  397. package/dist/mjs/tools/Eraser.mjs +72 -86
  398. package/dist/mjs/tools/FindTool.d.ts +1 -1
  399. package/dist/mjs/tools/FindTool.mjs +55 -75
  400. package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
  401. package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +15 -0
  402. package/dist/mjs/tools/InputFilter/InputMapper.d.ts +23 -0
  403. package/dist/mjs/tools/InputFilter/InputMapper.mjs +36 -0
  404. package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +15 -0
  405. package/dist/mjs/tools/InputFilter/InputPipeline.mjs +49 -0
  406. package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
  407. package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +175 -0
  408. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
  409. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +78 -0
  410. package/dist/mjs/tools/PanZoom.d.ts +4 -2
  411. package/dist/mjs/tools/PanZoom.mjs +169 -235
  412. package/dist/mjs/tools/PasteHandler.d.ts +1 -1
  413. package/dist/mjs/tools/PasteHandler.mjs +42 -145
  414. package/dist/mjs/tools/Pen.d.ts +12 -11
  415. package/dist/mjs/tools/Pen.mjs +115 -154
  416. package/dist/mjs/tools/PipetteTool.d.ts +11 -2
  417. package/dist/mjs/tools/PipetteTool.mjs +47 -48
  418. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -1
  419. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +9 -28
  420. package/dist/mjs/tools/SelectionTool/Selection.d.ts +5 -5
  421. package/dist/mjs/tools/SelectionTool/Selection.mjs +268 -401
  422. package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +15 -5
  423. package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +62 -37
  424. package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +4 -4
  425. package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +153 -179
  426. package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +1 -1
  427. package/dist/mjs/tools/SelectionTool/TransformMode.mjs +52 -59
  428. package/dist/mjs/tools/SoundUITool.d.ts +2 -1
  429. package/dist/mjs/tools/SoundUITool.mjs +66 -84
  430. package/dist/mjs/tools/TextTool.d.ts +5 -3
  431. package/dist/mjs/tools/TextTool.mjs +155 -163
  432. package/dist/mjs/tools/ToolController.d.ts +16 -2
  433. package/dist/mjs/tools/ToolController.mjs +81 -84
  434. package/dist/mjs/tools/ToolEnabledGroup.mjs +6 -10
  435. package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +1 -1
  436. package/dist/mjs/tools/ToolSwitcherShortcut.mjs +12 -32
  437. package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +1 -1
  438. package/dist/mjs/tools/ToolbarShortcutHandler.mjs +13 -33
  439. package/dist/mjs/tools/UndoRedoShortcut.d.ts +1 -1
  440. package/dist/mjs/tools/UndoRedoShortcut.mjs +7 -26
  441. package/dist/mjs/tools/keybindings.mjs +34 -34
  442. package/dist/mjs/tools/localization.d.ts +2 -1
  443. package/dist/mjs/tools/localization.mjs +9 -8
  444. package/dist/mjs/types.d.ts +22 -80
  445. package/dist/mjs/types.mjs +7 -15
  446. package/dist/mjs/util/ReactiveValue.d.ts +65 -0
  447. package/dist/mjs/util/ReactiveValue.mjs +161 -0
  448. package/dist/mjs/util/assertions.mjs +5 -8
  449. package/dist/mjs/util/fileToBase64.mjs +6 -6
  450. package/dist/mjs/util/guessKeyCodeFromKey.d.ts +9 -0
  451. package/dist/mjs/util/guessKeyCodeFromKey.mjs +30 -0
  452. package/dist/mjs/util/listPrefixMatch.d.ts +6 -0
  453. package/dist/mjs/util/listPrefixMatch.mjs +15 -0
  454. package/dist/mjs/util/stopPropagationOfScrollingWheelEvents.d.ts +2 -0
  455. package/dist/mjs/util/stopPropagationOfScrollingWheelEvents.mjs +15 -0
  456. package/dist/mjs/util/untilNextAnimationFrame.mjs +3 -3
  457. package/dist/mjs/util/waitForAll.mjs +3 -3
  458. package/dist/mjs/util/waitForTimeout.mjs +3 -3
  459. package/dist/mjs/version.d.ts +4 -0
  460. package/dist/mjs/version.mjs +3 -0
  461. package/dist-test/test_imports/package.json +1 -1
  462. package/dist-test/test_imports/test-imports.js +5 -11
  463. package/dist-test/test_imports/test-require.cjs +6 -11
  464. package/package.json +11 -22
  465. package/src/Coloris.css +8 -8
  466. package/src/Editor.loadFrom.test.ts +1 -1
  467. package/src/Editor.scss +148 -0
  468. package/src/Editor.test.ts +107 -0
  469. package/src/Editor.toSVG.test.ts +184 -1
  470. package/src/Editor.ts +325 -53
  471. package/src/EditorImage.test.ts +4 -7
  472. package/src/EditorImage.ts +10 -4
  473. package/src/Pointer.ts +18 -5
  474. package/src/SVGLoader.ts +77 -15
  475. package/src/UndoRedoHistory.test.ts +2 -1
  476. package/src/Viewport.ts +1 -4
  477. package/src/commands/Erase.ts +1 -0
  478. package/src/commands/localization.ts +1 -1
  479. package/src/commands/uniteCommands.test.ts +3 -3
  480. package/src/components/AbstractComponent.transformBy.test.ts +2 -1
  481. package/src/components/AbstractComponent.ts +12 -3
  482. package/src/components/BackgroundComponent.test.ts +1 -2
  483. package/src/components/BackgroundComponent.ts +3 -8
  484. package/src/components/ImageComponent.ts +1 -3
  485. package/src/components/RestylableComponent.ts +1 -1
  486. package/src/components/SVGGlobalAttributesObject.ts +1 -3
  487. package/src/components/Stroke.test.ts +4 -6
  488. package/src/components/Stroke.ts +5 -7
  489. package/src/components/TextComponent.test.ts +1 -3
  490. package/src/components/TextComponent.ts +1 -4
  491. package/src/components/UnknownSVGObject.ts +3 -3
  492. package/src/components/builders/ArrowBuilder.ts +1 -2
  493. package/src/components/builders/CircleBuilder.ts +3 -5
  494. package/src/components/builders/FreehandLineBuilder.test.ts +2 -3
  495. package/src/components/builders/FreehandLineBuilder.ts +3 -5
  496. package/src/components/builders/LineBuilder.ts +3 -3
  497. package/src/components/builders/PressureSensitiveFreehandLineBuilder.ts +3 -4
  498. package/src/components/builders/RectangleBuilder.ts +3 -4
  499. package/src/components/builders/types.ts +1 -1
  500. package/src/components/lib.ts +1 -1
  501. package/src/components/util/StrokeSmoother.ts +7 -7
  502. package/src/dialogs/dialogs.scss +36 -0
  503. package/src/dialogs/makeAboutDialog.scss +41 -0
  504. package/src/dialogs/makeAboutDialog.ts +82 -0
  505. package/src/inputEvents.ts +143 -0
  506. package/src/lib.ts +35 -13
  507. package/src/localizations/de.ts +2 -2
  508. package/src/localizations/es.ts +5 -5
  509. package/src/rendering/Display.ts +1 -2
  510. package/src/rendering/RenderablePathSpec.ts +88 -0
  511. package/src/rendering/RenderingStyle.test.ts +1 -1
  512. package/src/rendering/RenderingStyle.ts +1 -1
  513. package/src/rendering/caching/CacheRecord.test.ts +1 -2
  514. package/src/rendering/caching/CacheRecord.ts +1 -2
  515. package/src/rendering/caching/CacheRecordManager.ts +1 -1
  516. package/src/rendering/caching/RenderingCache.test.ts +3 -4
  517. package/src/rendering/caching/RenderingCache.ts +1 -1
  518. package/src/rendering/caching/RenderingCacheNode.ts +1 -2
  519. package/src/rendering/caching/testUtils.ts +1 -1
  520. package/src/rendering/caching/types.ts +3 -3
  521. package/src/rendering/renderers/AbstractRenderer.ts +4 -14
  522. package/src/rendering/renderers/CanvasRenderer.ts +17 -12
  523. package/src/rendering/renderers/DummyRenderer.test.ts +1 -2
  524. package/src/rendering/renderers/DummyRenderer.ts +1 -4
  525. package/src/rendering/renderers/SVGRenderer.ts +68 -11
  526. package/src/rendering/renderers/TextOnlyRenderer.ts +1 -4
  527. package/src/shortcuts/KeyBinding.test.ts +10 -0
  528. package/src/shortcuts/KeyBinding.ts +74 -35
  529. package/src/shortcuts/KeyboardShortcutManager.test.ts +1 -1
  530. package/src/styles.js +1 -1
  531. package/src/testing/sendPenEvent.ts +2 -2
  532. package/src/testing/sendTouchEvent.ts +2 -2
  533. package/src/toolbar/{toolbar.css → AbstractToolbar.scss} +47 -85
  534. package/src/toolbar/AbstractToolbar.ts +542 -0
  535. package/src/toolbar/DropdownToolbar.scss +46 -0
  536. package/src/toolbar/DropdownToolbar.ts +220 -0
  537. package/src/toolbar/EdgeToolbar.scss +511 -0
  538. package/src/toolbar/EdgeToolbar.test.ts +54 -0
  539. package/src/toolbar/EdgeToolbar.ts +543 -0
  540. package/src/toolbar/IconProvider.ts +189 -133
  541. package/src/toolbar/constants.ts +1 -0
  542. package/src/toolbar/lib.ts +4 -2
  543. package/src/toolbar/localization.ts +39 -17
  544. package/src/toolbar/toolbar.scss +11 -0
  545. package/src/toolbar/types.ts +8 -0
  546. package/src/toolbar/widgets/ActionButtonWidget.ts +2 -2
  547. package/src/toolbar/widgets/BaseToolWidget.ts +17 -1
  548. package/src/toolbar/widgets/BaseWidget.ts +179 -112
  549. package/src/toolbar/widgets/DocumentPropertiesWidget.scss +7 -0
  550. package/src/toolbar/widgets/DocumentPropertiesWidget.ts +26 -10
  551. package/src/toolbar/widgets/EraserToolWidget.ts +21 -22
  552. package/src/toolbar/widgets/HandToolWidget.scss +14 -0
  553. package/src/toolbar/widgets/HandToolWidget.ts +21 -32
  554. package/src/toolbar/widgets/InsertImageWidget.scss +41 -0
  555. package/src/toolbar/widgets/InsertImageWidget.ts +90 -65
  556. package/src/toolbar/widgets/PenToolWidget.css +0 -51
  557. package/src/toolbar/widgets/PenToolWidget.ts +106 -146
  558. package/src/toolbar/widgets/SelectionToolWidget.scss +6 -0
  559. package/src/toolbar/widgets/SelectionToolWidget.ts +83 -85
  560. package/src/toolbar/widgets/TextToolWidget.ts +9 -5
  561. package/src/toolbar/widgets/components/components.scss +5 -0
  562. package/src/toolbar/widgets/components/makeColorInput.scss +82 -0
  563. package/src/toolbar/{makeColorInput.ts → widgets/components/makeColorInput.ts} +39 -14
  564. package/src/toolbar/widgets/components/makeFileInput.scss +77 -0
  565. package/src/toolbar/widgets/components/makeFileInput.ts +128 -0
  566. package/src/toolbar/widgets/components/makeGridSelector.scss +60 -0
  567. package/src/toolbar/widgets/components/makeGridSelector.ts +179 -0
  568. package/src/toolbar/widgets/components/makeSeparator.scss +14 -0
  569. package/src/toolbar/widgets/components/makeSeparator.ts +17 -0
  570. package/src/toolbar/widgets/components/makeThicknessSlider.scss +9 -0
  571. package/src/toolbar/widgets/components/makeThicknessSlider.ts +62 -0
  572. package/src/toolbar/widgets/keybindings.ts +1 -3
  573. package/src/toolbar/widgets/layout/DropdownLayoutManager.ts +262 -0
  574. package/src/toolbar/widgets/layout/EdgeToolbarLayoutManager.ts +71 -0
  575. package/src/toolbar/widgets/layout/types.ts +74 -0
  576. package/src/toolbar/widgets/lib.ts +2 -2
  577. package/src/tools/BaseTool.ts +102 -30
  578. package/src/tools/Eraser.test.ts +2 -2
  579. package/src/tools/Eraser.ts +24 -11
  580. package/src/tools/FindTool.css +3 -3
  581. package/src/tools/FindTool.test.ts +67 -0
  582. package/src/tools/FindTool.ts +3 -3
  583. package/src/tools/InputFilter/FunctionMapper.ts +17 -0
  584. package/src/tools/InputFilter/InputMapper.ts +41 -0
  585. package/src/tools/InputFilter/InputPipeline.test.ts +41 -0
  586. package/src/tools/InputFilter/InputPipeline.ts +34 -0
  587. package/src/tools/InputFilter/InputStabilizer.ts +254 -0
  588. package/src/tools/InputFilter/StrokeKeyboardControl.ts +104 -0
  589. package/src/tools/PanZoom.test.ts +3 -13
  590. package/src/tools/PanZoom.ts +33 -10
  591. package/src/tools/PasteHandler.ts +2 -3
  592. package/src/tools/Pen.test.ts +2 -4
  593. package/src/tools/Pen.ts +54 -70
  594. package/src/tools/PipetteTool.ts +31 -2
  595. package/src/tools/SelectionTool/SelectAllShortcutHandler.ts +1 -1
  596. package/src/tools/SelectionTool/Selection.ts +52 -16
  597. package/src/tools/SelectionTool/SelectionHandle.ts +46 -12
  598. package/src/tools/SelectionTool/SelectionTool.css +23 -11
  599. package/src/tools/SelectionTool/SelectionTool.test.ts +130 -21
  600. package/src/tools/SelectionTool/SelectionTool.ts +62 -48
  601. package/src/tools/SelectionTool/TransformMode.ts +1 -3
  602. package/src/tools/SoundUITool.ts +13 -4
  603. package/src/tools/TextTool.ts +29 -30
  604. package/src/tools/ToolController.ts +60 -36
  605. package/src/tools/ToolSwitcherShortcut.ts +1 -1
  606. package/src/tools/ToolbarShortcutHandler.ts +1 -1
  607. package/src/tools/UndoRedoShortcut.test.ts +10 -4
  608. package/src/tools/UndoRedoShortcut.ts +1 -1
  609. package/src/tools/keybindings.ts +17 -17
  610. package/src/tools/localization.ts +4 -2
  611. package/src/tools/tools.scss +4 -0
  612. package/src/types.ts +25 -113
  613. package/src/util/ReactiveValue.test.ts +168 -0
  614. package/src/util/ReactiveValue.ts +241 -0
  615. package/src/util/guessKeyCodeFromKey.ts +36 -0
  616. package/src/util/listPrefixMatch.ts +19 -0
  617. package/src/util/stopPropagationOfScrollingWheelEvents.ts +20 -0
  618. package/src/version.test.ts +12 -0
  619. package/src/version.ts +3 -0
  620. package/tsconfig.json +1 -1
  621. package/typedoc.json +4 -0
  622. package/dist/cjs/Color4.d.ts +0 -69
  623. package/dist/cjs/Color4.js +0 -263
  624. package/dist/cjs/math/Mat33.d.ts +0 -123
  625. package/dist/cjs/math/Mat33.js +0 -340
  626. package/dist/cjs/math/Vec2.d.ts +0 -33
  627. package/dist/cjs/math/Vec2.js +0 -37
  628. package/dist/cjs/math/Vec3.d.ts +0 -106
  629. package/dist/cjs/math/Vec3.js +0 -183
  630. package/dist/cjs/math/lib.d.ts +0 -7
  631. package/dist/cjs/math/lib.js +0 -15
  632. package/dist/cjs/math/polynomial/solveQuadratic.d.ts +0 -9
  633. package/dist/cjs/math/polynomial/solveQuadratic.js +0 -39
  634. package/dist/cjs/math/rounding.d.ts +0 -4
  635. package/dist/cjs/math/rounding.js +0 -140
  636. package/dist/cjs/math/shapes/Abstract2DShape.d.ts +0 -49
  637. package/dist/cjs/math/shapes/Abstract2DShape.js +0 -42
  638. package/dist/cjs/math/shapes/BezierJSWrapper.d.ts +0 -36
  639. package/dist/cjs/math/shapes/BezierJSWrapper.js +0 -109
  640. package/dist/cjs/math/shapes/CubicBezier.d.ts +0 -17
  641. package/dist/cjs/math/shapes/CubicBezier.js +0 -50
  642. package/dist/cjs/math/shapes/LineSegment2.d.ts +0 -70
  643. package/dist/cjs/math/shapes/LineSegment2.js +0 -204
  644. package/dist/cjs/math/shapes/Path.d.ts +0 -93
  645. package/dist/cjs/math/shapes/Path.js +0 -865
  646. package/dist/cjs/math/shapes/PointShape2D.d.ts +0 -18
  647. package/dist/cjs/math/shapes/PointShape2D.js +0 -46
  648. package/dist/cjs/math/shapes/QuadraticBezier.d.ts +0 -34
  649. package/dist/cjs/math/shapes/QuadraticBezier.js +0 -133
  650. package/dist/cjs/math/shapes/Rect2.d.ts +0 -57
  651. package/dist/cjs/math/shapes/Rect2.js +0 -311
  652. package/dist/cjs/math/shapes/Triangle.d.ts +0 -46
  653. package/dist/cjs/math/shapes/Triangle.js +0 -148
  654. package/dist/cjs/toolbar/HTMLToolbar.d.ts +0 -105
  655. package/dist/cjs/toolbar/HTMLToolbar.js +0 -465
  656. package/dist/cjs/toolbar/makeColorInput.d.ts +0 -6
  657. package/dist/mjs/Color4.d.ts +0 -69
  658. package/dist/mjs/Color4.mjs +0 -260
  659. package/dist/mjs/Color4.test.d.ts +0 -1
  660. package/dist/mjs/math/Mat33.d.ts +0 -123
  661. package/dist/mjs/math/Mat33.mjs +0 -338
  662. package/dist/mjs/math/Mat33.test.d.ts +0 -1
  663. package/dist/mjs/math/Vec2.d.ts +0 -33
  664. package/dist/mjs/math/Vec2.mjs +0 -34
  665. package/dist/mjs/math/Vec2.test.d.ts +0 -1
  666. package/dist/mjs/math/Vec3.d.ts +0 -106
  667. package/dist/mjs/math/Vec3.mjs +0 -181
  668. package/dist/mjs/math/Vec3.test.d.ts +0 -1
  669. package/dist/mjs/math/lib.d.ts +0 -7
  670. package/dist/mjs/math/lib.mjs +0 -7
  671. package/dist/mjs/math/polynomial/solveQuadratic.d.ts +0 -9
  672. package/dist/mjs/math/polynomial/solveQuadratic.mjs +0 -37
  673. package/dist/mjs/math/polynomial/solveQuadratic.test.d.ts +0 -1
  674. package/dist/mjs/math/rounding.d.ts +0 -4
  675. package/dist/mjs/math/rounding.mjs +0 -133
  676. package/dist/mjs/math/rounding.test.d.ts +0 -1
  677. package/dist/mjs/math/shapes/Abstract2DShape.d.ts +0 -49
  678. package/dist/mjs/math/shapes/Abstract2DShape.mjs +0 -40
  679. package/dist/mjs/math/shapes/BezierJSWrapper.d.ts +0 -36
  680. package/dist/mjs/math/shapes/BezierJSWrapper.mjs +0 -107
  681. package/dist/mjs/math/shapes/CubicBezier.d.ts +0 -17
  682. package/dist/mjs/math/shapes/CubicBezier.mjs +0 -48
  683. package/dist/mjs/math/shapes/LineSegment2.d.ts +0 -70
  684. package/dist/mjs/math/shapes/LineSegment2.mjs +0 -202
  685. package/dist/mjs/math/shapes/LineSegment2.test.d.ts +0 -1
  686. package/dist/mjs/math/shapes/Path.d.ts +0 -93
  687. package/dist/mjs/math/shapes/Path.fromString.test.d.ts +0 -1
  688. package/dist/mjs/math/shapes/Path.mjs +0 -862
  689. package/dist/mjs/math/shapes/Path.test.d.ts +0 -1
  690. package/dist/mjs/math/shapes/Path.toString.test.d.ts +0 -1
  691. package/dist/mjs/math/shapes/PointShape2D.d.ts +0 -18
  692. package/dist/mjs/math/shapes/PointShape2D.mjs +0 -44
  693. package/dist/mjs/math/shapes/QuadraticBezier.d.ts +0 -34
  694. package/dist/mjs/math/shapes/QuadraticBezier.mjs +0 -131
  695. package/dist/mjs/math/shapes/QuadraticBezier.test.d.ts +0 -1
  696. package/dist/mjs/math/shapes/Rect2.d.ts +0 -57
  697. package/dist/mjs/math/shapes/Rect2.mjs +0 -309
  698. package/dist/mjs/math/shapes/Rect2.test.d.ts +0 -1
  699. package/dist/mjs/math/shapes/Triangle.d.ts +0 -46
  700. package/dist/mjs/math/shapes/Triangle.mjs +0 -146
  701. package/dist/mjs/math/shapes/Triangle.test.d.ts +0 -1
  702. package/dist/mjs/toolbar/HTMLToolbar.d.ts +0 -105
  703. package/dist/mjs/toolbar/HTMLToolbar.mjs +0 -462
  704. package/dist/mjs/toolbar/makeColorInput.d.ts +0 -6
  705. package/src/Color4.test.ts +0 -47
  706. package/src/Color4.ts +0 -304
  707. package/src/Editor.css +0 -98
  708. package/src/math/Mat33.test.ts +0 -244
  709. package/src/math/Mat33.ts +0 -442
  710. package/src/math/Vec2.test.ts +0 -30
  711. package/src/math/Vec2.ts +0 -40
  712. package/src/math/Vec3.test.ts +0 -44
  713. package/src/math/Vec3.ts +0 -218
  714. package/src/math/lib.ts +0 -15
  715. package/src/math/polynomial/solveQuadratic.test.ts +0 -39
  716. package/src/math/polynomial/solveQuadratic.ts +0 -43
  717. package/src/math/rounding.test.ts +0 -65
  718. package/src/math/rounding.ts +0 -156
  719. package/src/math/shapes/Abstract2DShape.ts +0 -63
  720. package/src/math/shapes/BezierJSWrapper.ts +0 -93
  721. package/src/math/shapes/CubicBezier.ts +0 -35
  722. package/src/math/shapes/LineSegment2.test.ts +0 -99
  723. package/src/math/shapes/LineSegment2.ts +0 -231
  724. package/src/math/shapes/Path.fromString.test.ts +0 -223
  725. package/src/math/shapes/Path.test.ts +0 -309
  726. package/src/math/shapes/Path.toString.test.ts +0 -77
  727. package/src/math/shapes/Path.ts +0 -1027
  728. package/src/math/shapes/PointShape2D.ts +0 -33
  729. package/src/math/shapes/QuadraticBezier.test.ts +0 -31
  730. package/src/math/shapes/QuadraticBezier.ts +0 -141
  731. package/src/math/shapes/Rect2.test.ts +0 -209
  732. package/src/math/shapes/Rect2.ts +0 -344
  733. package/src/math/shapes/Triangle.test.ts +0 -61
  734. package/src/math/shapes/Triangle.ts +0 -139
  735. package/src/toolbar/HTMLToolbar.ts +0 -567
  736. package/src/toolbar/widgets/InsertImageWidget.css +0 -44
  737. package/src/tools/tools.css +0 -4
  738. /package/dist/cjs/{Color4.test.d.ts → Editor.test.d.ts} +0 -0
  739. /package/dist/cjs/{math/Mat33.test.d.ts → toolbar/EdgeToolbar.test.d.ts} +0 -0
  740. /package/dist/cjs/{math/Vec2.test.d.ts → tools/FindTool.test.d.ts} +0 -0
  741. /package/dist/cjs/{math/Vec3.test.d.ts → tools/InputFilter/InputPipeline.test.d.ts} +0 -0
  742. /package/dist/cjs/{math/polynomial/solveQuadratic.test.d.ts → util/ReactiveValue.test.d.ts} +0 -0
  743. /package/dist/cjs/{math/rounding.test.d.ts → version.test.d.ts} +0 -0
  744. /package/dist/{cjs/math/shapes/LineSegment2.test.d.ts → mjs/Editor.test.d.ts} +0 -0
  745. /package/dist/{cjs/math/shapes/Path.fromString.test.d.ts → mjs/toolbar/EdgeToolbar.test.d.ts} +0 -0
  746. /package/dist/{cjs/math/shapes/Path.test.d.ts → mjs/toolbar/widgets/layout/types.mjs} +0 -0
  747. /package/dist/{cjs/math/shapes/Path.toString.test.d.ts → mjs/tools/FindTool.test.d.ts} +0 -0
  748. /package/dist/{cjs/math/shapes/QuadraticBezier.test.d.ts → mjs/tools/InputFilter/InputPipeline.test.d.ts} +0 -0
  749. /package/dist/{cjs/math/shapes/Rect2.test.d.ts → mjs/util/ReactiveValue.test.d.ts} +0 -0
  750. /package/dist/{cjs/math/shapes/Triangle.test.d.ts → mjs/version.test.d.ts} +0 -0
@@ -1,22 +1,25 @@
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.CacheRecordManager = void 0;
4
- var CacheRecord_1 = require("./CacheRecord");
5
- var debugMode = false;
6
- var CacheRecordManager = /** @class */ (function () {
7
- function CacheRecordManager(cacheProps) {
7
+ const CacheRecord_1 = __importDefault(require("./CacheRecord"));
8
+ const debugMode = false;
9
+ class CacheRecordManager {
10
+ constructor(cacheProps) {
8
11
  // Fixed-size array: Cache blocks are assigned indicies into [cachedCanvases].
9
12
  this.cacheRecords = [];
10
13
  this.maxCanvases = Math.ceil(
11
14
  // Assuming four components per pixel:
12
15
  cacheProps.cacheSize / 4 / cacheProps.blockResolution.x / cacheProps.blockResolution.y);
13
16
  }
14
- CacheRecordManager.prototype.setSharedState = function (state) {
17
+ setSharedState(state) {
15
18
  this.cacheState = state;
16
- };
17
- CacheRecordManager.prototype.allocCanvas = function (drawTo, onDealloc) {
19
+ }
20
+ allocCanvas(drawTo, onDealloc) {
18
21
  if (this.cacheRecords.length < this.maxCanvases) {
19
- var record = new CacheRecord_1.default(onDealloc, this.cacheState);
22
+ const record = new CacheRecord_1.default(onDealloc, this.cacheState);
20
23
  record.setRenderingRegion(drawTo);
21
24
  this.cacheRecords.push(record);
22
25
  if (debugMode) {
@@ -25,7 +28,7 @@ var CacheRecordManager = /** @class */ (function () {
25
28
  return record;
26
29
  }
27
30
  else {
28
- var lru = this.getLeastRecentlyUsedRecord();
31
+ const lru = this.getLeastRecentlyUsedRecord();
29
32
  if (debugMode) {
30
33
  console.log('[Cache] Re-alloc. Times allocated: ', lru.allocCount, '\nLast used cycle: ', lru.getLastUsedCycle(), '\nCurrent cycle: ', this.cacheState.currentRenderingCycle);
31
34
  }
@@ -37,12 +40,11 @@ var CacheRecordManager = /** @class */ (function () {
37
40
  }
38
41
  return lru;
39
42
  }
40
- };
43
+ }
41
44
  // Returns null if there are no cache records. Returns an unalloc'd record if one exists.
42
- CacheRecordManager.prototype.getLeastRecentlyUsedRecord = function () {
43
- this.cacheRecords.sort(function (a, b) { return a.getLastUsedCycle() - b.getLastUsedCycle(); });
45
+ getLeastRecentlyUsedRecord() {
46
+ this.cacheRecords.sort((a, b) => a.getLastUsedCycle() - b.getLastUsedCycle());
44
47
  return this.cacheRecords[0];
45
- };
46
- return CacheRecordManager;
47
- }());
48
+ }
49
+ }
48
50
  exports.CacheRecordManager = CacheRecordManager;
@@ -1,10 +1,13 @@
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
- var Rect2_1 = require("../../math/shapes/Rect2");
4
- var RenderingCacheNode_1 = require("./RenderingCacheNode");
5
- var CacheRecordManager_1 = require("./CacheRecordManager");
6
- var RenderingCache = /** @class */ (function () {
7
- function RenderingCache(cacheProps) {
6
+ const math_1 = require("@js-draw/math");
7
+ const RenderingCacheNode_1 = __importDefault(require("./RenderingCacheNode"));
8
+ const CacheRecordManager_1 = require("./CacheRecordManager");
9
+ class RenderingCache {
10
+ constructor(cacheProps) {
8
11
  this.recordManager = new CacheRecordManager_1.CacheRecordManager(cacheProps);
9
12
  this.sharedState = {
10
13
  props: cacheProps,
@@ -13,9 +16,8 @@ var RenderingCache = /** @class */ (function () {
13
16
  };
14
17
  this.recordManager.setSharedState(this.sharedState);
15
18
  }
16
- RenderingCache.prototype.render = function (screenRenderer, image, viewport) {
17
- var _a;
18
- var visibleRect = viewport.visibleRect;
19
+ render(screenRenderer, image, viewport) {
20
+ const visibleRect = viewport.visibleRect;
19
21
  this.sharedState.currentRenderingCycle++;
20
22
  // If we can't use the cache,
21
23
  if (!this.sharedState.props.isOfCorrectType(screenRenderer)) {
@@ -24,18 +26,17 @@ var RenderingCache = /** @class */ (function () {
24
26
  }
25
27
  if (!this.rootNode) {
26
28
  // Adjust the node so that it has the correct aspect ratio
27
- var res = this.sharedState.props.blockResolution;
28
- var topLeft = visibleRect.topLeft;
29
- this.rootNode = new RenderingCacheNode_1.default(new Rect2_1.default(topLeft.x, topLeft.y, res.x, res.y), this.sharedState);
29
+ const res = this.sharedState.props.blockResolution;
30
+ const topLeft = visibleRect.topLeft;
31
+ this.rootNode = new RenderingCacheNode_1.default(new math_1.Rect2(topLeft.x, topLeft.y, res.x, res.y), this.sharedState);
30
32
  }
31
33
  while (!this.rootNode.region.containsRect(visibleRect)) {
32
34
  this.rootNode = this.rootNode.generateParent();
33
35
  }
34
- this.rootNode = (_a = this.rootNode.smallestChildContaining(visibleRect)) !== null && _a !== void 0 ? _a : this.rootNode;
35
- var visibleLeaves = image.getLeavesIntersectingRegion(viewport.visibleRect, function (rect) { return screenRenderer.isTooSmallToRender(rect); });
36
- var approxVisibleRenderTime = 0;
37
- for (var _i = 0, visibleLeaves_1 = visibleLeaves; _i < visibleLeaves_1.length; _i++) {
38
- var leaf = visibleLeaves_1[_i];
36
+ this.rootNode = this.rootNode.smallestChildContaining(visibleRect) ?? this.rootNode;
37
+ const visibleLeaves = image.getLeavesIntersectingRegion(viewport.visibleRect, rect => screenRenderer.isTooSmallToRender(rect));
38
+ let approxVisibleRenderTime = 0;
39
+ for (const leaf of visibleLeaves) {
39
40
  approxVisibleRenderTime += leaf.getContent().getProportionalRenderingTime();
40
41
  }
41
42
  if (approxVisibleRenderTime > this.sharedState.props.minProportionalRenderTimeToUseCache) {
@@ -44,7 +45,6 @@ var RenderingCache = /** @class */ (function () {
44
45
  else {
45
46
  image.render(screenRenderer, visibleRect);
46
47
  }
47
- };
48
- return RenderingCache;
49
- }());
48
+ }
49
+ }
50
50
  exports.default = RenderingCache;
@@ -1,5 +1,5 @@
1
1
  import { ImageNode } from '../../EditorImage';
2
- import Rect2 from '../../math/shapes/Rect2';
2
+ import { Rect2 } from '@js-draw/math';
3
3
  import Viewport from '../../Viewport';
4
4
  import AbstractRenderer from '../renderers/AbstractRenderer';
5
5
  import { CacheState } from './types';
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
  // A cache record with sub-nodes.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- var Color4_1 = require("../../Color4");
5
- var EditorImage_1 = require("../../EditorImage");
6
- var Rect2_1 = require("../../math/shapes/Rect2");
4
+ const EditorImage_1 = require("../../EditorImage");
5
+ const math_1 = require("@js-draw/math");
7
6
  // 3x3 divisions for each node.
8
- var cacheDivisionSize = 3;
7
+ const cacheDivisionSize = 3;
9
8
  // True: Show rendering updates.
10
- var debugMode = false;
11
- var RenderingCacheNode = /** @class */ (function () {
12
- function RenderingCacheNode(region, cacheState) {
9
+ const debugMode = false;
10
+ class RenderingCacheNode {
11
+ constructor(region, cacheState) {
13
12
  this.region = region;
14
13
  this.cacheState = cacheState;
15
14
  // invariant: instantiatedChildren.length === 9
@@ -23,16 +22,16 @@ var RenderingCacheNode = /** @class */ (function () {
23
22
  // Creates a previous layer of the cache tree and adds this as a child near the
24
23
  // center of the previous layer's children.
25
24
  // Returns this' parent if it already exists.
26
- RenderingCacheNode.prototype.generateParent = function () {
25
+ generateParent() {
27
26
  if (this.parent) {
28
27
  return this.parent;
29
28
  }
30
- var parentRegion = Rect2_1.default.fromCorners(this.region.topLeft.minus(this.region.size), this.region.bottomRight.plus(this.region.size));
31
- var parent = new RenderingCacheNode(parentRegion, this.cacheState);
29
+ const parentRegion = math_1.Rect2.fromCorners(this.region.topLeft.minus(this.region.size), this.region.bottomRight.plus(this.region.size));
30
+ const parent = new RenderingCacheNode(parentRegion, this.cacheState);
32
31
  parent.generateChildren();
33
32
  // Ensure the new node is matches the middle child's region.
34
- var checkTolerance = this.region.maxDimension / 100;
35
- var middleChildIdx = (parent.instantiatedChildren.length - 1) / 2;
33
+ const checkTolerance = this.region.maxDimension / 100;
34
+ const middleChildIdx = (parent.instantiatedChildren.length - 1) / 2;
36
35
  if (!parent.instantiatedChildren[middleChildIdx].region.eq(this.region, checkTolerance)) {
37
36
  console.error(parent.instantiatedChildren[middleChildIdx].region, '≠', this.region);
38
37
  throw new Error('Logic error: [this] is not contained within its parent\'s center child');
@@ -41,62 +40,58 @@ var RenderingCacheNode = /** @class */ (function () {
41
40
  parent.instantiatedChildren[middleChildIdx] = this;
42
41
  this.parent = parent;
43
42
  return parent;
44
- };
43
+ }
45
44
  // Generates children, if missing.
46
- RenderingCacheNode.prototype.generateChildren = function () {
45
+ generateChildren() {
47
46
  if (this.instantiatedChildren.length === 0) {
48
- var childRects = this.region.divideIntoGrid(cacheDivisionSize, cacheDivisionSize);
47
+ const childRects = this.region.divideIntoGrid(cacheDivisionSize, cacheDivisionSize);
49
48
  if (this.region.size.x === 0 || this.region.size.y === 0) {
50
49
  console.warn('Cache element has zero size! Not generating children.');
51
50
  return;
52
51
  }
53
- for (var _i = 0, childRects_1 = childRects; _i < childRects_1.length; _i++) {
54
- var rect = childRects_1[_i];
55
- var child = new RenderingCacheNode(rect, this.cacheState);
52
+ for (const rect of childRects) {
53
+ const child = new RenderingCacheNode(rect, this.cacheState);
56
54
  child.parent = this;
57
55
  this.instantiatedChildren.push(child);
58
56
  }
59
57
  }
60
58
  this.checkRep();
61
- };
59
+ }
62
60
  // Returns CacheNodes directly contained within this.
63
- RenderingCacheNode.prototype.getChildren = function () {
61
+ getChildren() {
64
62
  this.checkRep();
65
63
  this.generateChildren();
66
64
  return this.instantiatedChildren;
67
- };
68
- RenderingCacheNode.prototype.smallestChildContaining = function (rect) {
69
- var _a;
70
- var largerThanChildren = rect.maxDimension > this.region.maxDimension / cacheDivisionSize;
65
+ }
66
+ smallestChildContaining(rect) {
67
+ const largerThanChildren = rect.maxDimension > this.region.maxDimension / cacheDivisionSize;
71
68
  if (!this.region.containsRect(rect) || largerThanChildren) {
72
69
  return null;
73
70
  }
74
- for (var _i = 0, _b = this.getChildren(); _i < _b.length; _i++) {
75
- var child = _b[_i];
71
+ for (const child of this.getChildren()) {
76
72
  if (child.region.containsRect(rect)) {
77
- return (_a = child.smallestChildContaining(rect)) !== null && _a !== void 0 ? _a : child;
73
+ return child.smallestChildContaining(rect) ?? child;
78
74
  }
79
75
  }
80
76
  return null;
81
- };
77
+ }
82
78
  // => [true] iff [this] can be rendered without too much scaling
83
- RenderingCacheNode.prototype.renderingWouldBeHighEnoughResolution = function (viewport) {
79
+ renderingWouldBeHighEnoughResolution(viewport) {
84
80
  // Determine how 1px in this corresponds to 1px on the canvas.
85
81
  // this.region.w is in canvas units. Thus,
86
- var sizeOfThisPixelOnCanvas = this.region.w / this.cacheState.props.blockResolution.x;
87
- var sizeOfThisPixelOnScreen = viewport.getScaleFactor() * sizeOfThisPixelOnCanvas;
82
+ const sizeOfThisPixelOnCanvas = this.region.w / this.cacheState.props.blockResolution.x;
83
+ const sizeOfThisPixelOnScreen = viewport.getScaleFactor() * sizeOfThisPixelOnCanvas;
88
84
  if (sizeOfThisPixelOnScreen > this.cacheState.props.maxScale) {
89
85
  return false;
90
86
  }
91
87
  return true;
92
- };
88
+ }
93
89
  // => [true] if all children of this can be rendered from their caches.
94
- RenderingCacheNode.prototype.allChildrenCanRender = function (viewport, leavesSortedById) {
90
+ allChildrenCanRender(viewport, leavesSortedById) {
95
91
  if (this.instantiatedChildren.length === 0) {
96
92
  return false;
97
93
  }
98
- for (var _i = 0, _a = this.instantiatedChildren; _i < _a.length; _i++) {
99
- var child = _a[_i];
94
+ for (const child of this.instantiatedChildren) {
100
95
  if (!child.region.intersects(viewport.visibleRect)) {
101
96
  continue;
102
97
  }
@@ -105,61 +100,57 @@ var RenderingCacheNode = /** @class */ (function () {
105
100
  }
106
101
  }
107
102
  return true;
108
- };
109
- RenderingCacheNode.prototype.computeSortedByLeafIds = function (leaves) {
110
- var ids = leaves.slice();
111
- ids.sort(function (a, b) { return a.getId() - b.getId(); });
103
+ }
104
+ computeSortedByLeafIds(leaves) {
105
+ const ids = leaves.slice();
106
+ ids.sort((a, b) => a.getId() - b.getId());
112
107
  return ids;
113
- };
108
+ }
114
109
  // Returns a list of the ids of the nodes intersecting this
115
- RenderingCacheNode.prototype.idsOfIntersecting = function (nodes) {
116
- var result = [];
117
- for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
118
- var node = nodes_1[_i];
110
+ idsOfIntersecting(nodes) {
111
+ const result = [];
112
+ for (const node of nodes) {
119
113
  if (node.getBBox().intersects(this.region)) {
120
114
  result.push(node.getId());
121
115
  }
122
116
  }
123
117
  return result;
124
- };
118
+ }
125
119
  // Returns true iff all elems of this.renderedIds are in sortedIds.
126
120
  // sortedIds should be sorted by z-index (or some other order, so long as they are
127
121
  // sorted by the same thing as this.renderedIds.)
128
- RenderingCacheNode.prototype.allRenderedIdsIn = function (sortedIds) {
122
+ allRenderedIdsIn(sortedIds) {
129
123
  if (this.renderedIds.length > sortedIds.length) {
130
124
  return false;
131
125
  }
132
- for (var i = 0; i < this.renderedIds.length; i++) {
126
+ for (let i = 0; i < this.renderedIds.length; i++) {
133
127
  if (sortedIds[i] !== this.renderedIds[i]) {
134
128
  return false;
135
129
  }
136
130
  }
137
131
  return true;
138
- };
139
- RenderingCacheNode.prototype.renderingIsUpToDate = function (sortedIds) {
132
+ }
133
+ renderingIsUpToDate(sortedIds) {
140
134
  if (this.cachedRenderer === null || sortedIds.length !== this.renderedIds.length) {
141
135
  return false;
142
136
  }
143
137
  return this.allRenderedIdsIn(sortedIds);
144
- };
138
+ }
145
139
  // Render all [items] within [viewport]
146
- RenderingCacheNode.prototype.renderItems = function (screenRenderer, items, viewport) {
147
- var _this = this;
148
- var _a, _b;
140
+ renderItems(screenRenderer, items, viewport) {
149
141
  if (!viewport.visibleRect.intersects(this.region)
150
142
  || items.length === 0) {
151
143
  return;
152
144
  }
153
- var newItems = [];
145
+ const newItems = [];
154
146
  // Divide [items] until nodes are leaves or smaller than this
155
- for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {
156
- var item = items_1[_i];
157
- var bbox = item.getBBox();
147
+ for (const item of items) {
148
+ const bbox = item.getBBox();
158
149
  if (!bbox.intersects(this.region)) {
159
150
  continue;
160
151
  }
161
152
  if (bbox.maxDimension >= this.region.maxDimension) {
162
- newItems.push.apply(newItems, item.getChildrenOrSelfIntersectingRegion(this.region));
153
+ newItems.push(...item.getChildrenOrSelfIntersectingRegion(this.region));
163
154
  }
164
155
  else {
165
156
  newItems.push(item);
@@ -168,69 +159,62 @@ var RenderingCacheNode = /** @class */ (function () {
168
159
  items = newItems;
169
160
  // Can we cache at all?
170
161
  if (!this.cacheState.props.isOfCorrectType(screenRenderer)) {
171
- items.forEach(function (item) { return item.render(screenRenderer, viewport.visibleRect); });
162
+ items.forEach(item => item.render(screenRenderer, viewport.visibleRect));
172
163
  return;
173
164
  }
174
165
  if (debugMode) {
175
- screenRenderer.drawRect(this.region, 0.5 * viewport.getSizeOfPixelOnCanvas(), { fill: Color4_1.default.yellow });
166
+ screenRenderer.drawRect(this.region, 0.5 * viewport.getSizeOfPixelOnCanvas(), { fill: math_1.Color4.yellow });
176
167
  }
177
168
  // Could we render direclty from [this] or do we need to recurse?
178
- var couldRender = this.renderingWouldBeHighEnoughResolution(viewport);
169
+ const couldRender = this.renderingWouldBeHighEnoughResolution(viewport);
179
170
  if (!couldRender) {
180
- var _loop_1 = function (child) {
181
- child.renderItems(screenRenderer, items.filter(function (item) {
171
+ for (const child of this.getChildren()) {
172
+ child.renderItems(screenRenderer, items.filter(item => {
182
173
  return item.getBBox().intersects(child.region);
183
174
  }), viewport);
184
- };
185
- for (var _c = 0, _d = this.getChildren(); _c < _d.length; _c++) {
186
- var child = _d[_c];
187
- _loop_1(child);
188
175
  }
189
176
  }
190
177
  else {
191
178
  // Determine whether we already have rendered the items
192
- var tooSmallToRender = function (rect) { return rect.w / _this.region.w < 1 / _this.cacheState.props.blockResolution.x; };
193
- var leaves = [];
194
- for (var _e = 0, items_2 = items; _e < items_2.length; _e++) {
195
- var item = items_2[_e];
196
- leaves.push.apply(leaves, item.getLeavesIntersectingRegion(this.region, tooSmallToRender));
179
+ const tooSmallToRender = (rect) => rect.w / this.region.w < 1 / this.cacheState.props.blockResolution.x;
180
+ const leaves = [];
181
+ for (const item of items) {
182
+ leaves.push(...item.getLeavesIntersectingRegion(this.region, tooSmallToRender));
197
183
  }
198
184
  (0, EditorImage_1.sortLeavesByZIndex)(leaves);
199
- var leavesByIds = this.computeSortedByLeafIds(leaves);
185
+ const leavesByIds = this.computeSortedByLeafIds(leaves);
200
186
  // No intersecting leaves? No need to render
201
187
  if (leavesByIds.length === 0) {
202
188
  return;
203
189
  }
204
- var leafIds = leavesByIds.map(function (leaf) { return leaf.getId(); });
205
- var thisRenderer = void 0;
190
+ const leafIds = leavesByIds.map(leaf => leaf.getId());
191
+ let thisRenderer;
206
192
  if (!this.renderingIsUpToDate(leafIds)) {
207
193
  if (this.allChildrenCanRender(viewport, leavesByIds)) {
208
- for (var _f = 0, _g = this.getChildren(); _f < _g.length; _f++) {
209
- var child = _g[_f];
194
+ for (const child of this.getChildren()) {
210
195
  child.renderItems(screenRenderer, items, viewport);
211
196
  }
212
197
  return;
213
198
  }
214
- var leafApproxRenderTime = 0;
215
- for (var _h = 0, leavesByIds_1 = leavesByIds; _h < leavesByIds_1.length; _h++) {
216
- var leaf = leavesByIds_1[_h];
199
+ let leafApproxRenderTime = 0;
200
+ for (const leaf of leavesByIds) {
217
201
  leafApproxRenderTime += leaf.getContent().getProportionalRenderingTime();
218
202
  }
219
203
  // Is it worth it to render the items?
220
204
  if (leafApproxRenderTime > this.cacheState.props.minProportionalRenderTimePerCache) {
221
- var fullRerenderNeeded = true;
205
+ let fullRerenderNeeded = true;
222
206
  if (!this.cachedRenderer) {
223
- this.cachedRenderer = this.cacheState.recordManager.allocCanvas(this.region, function () { return _this.onRegionDealloc(); });
207
+ this.cachedRenderer = this.cacheState.recordManager.allocCanvas(this.region, () => this.onRegionDealloc());
224
208
  }
225
209
  else if (leavesByIds.length > this.renderedIds.length && this.allRenderedIdsIn(leafIds) && this.renderedMaxZIndex !== null) {
226
210
  // We often don't need to do a full re-render even if something's changed.
227
211
  // Check whether we can just draw on top of the existing cache.
228
- var newLeaves = [];
229
- var minNewZIndex = null;
230
- for (var i = 0; i < leavesByIds.length; i++) {
231
- var leaf = leavesByIds[i];
232
- var content = leaf.getContent();
233
- var zIndex = content.getZIndex();
212
+ const newLeaves = [];
213
+ let minNewZIndex = null;
214
+ for (let i = 0; i < leavesByIds.length; i++) {
215
+ const leaf = leavesByIds[i];
216
+ const content = leaf.getContent();
217
+ const zIndex = content.getZIndex();
234
218
  if (i >= this.renderedIds.length || leaf.getId() !== this.renderedIds[i]) {
235
219
  newLeaves.push(leaf);
236
220
  if (minNewZIndex === null || zIndex < minNewZIndex) {
@@ -242,16 +226,16 @@ var RenderingCacheNode = /** @class */ (function () {
242
226
  fullRerenderNeeded = false;
243
227
  thisRenderer = this.cachedRenderer.startRender();
244
228
  // Looping is faster than re-sorting.
245
- for (var i = 0; i < leaves.length; i++) {
246
- var leaf = leaves[i];
247
- var zIndex = leaf.getContent().getZIndex();
229
+ for (let i = 0; i < leaves.length; i++) {
230
+ const leaf = leaves[i];
231
+ const zIndex = leaf.getContent().getZIndex();
248
232
  if (zIndex > this.renderedMaxZIndex) {
249
233
  leaf.render(thisRenderer, this.region);
250
234
  this.renderedMaxZIndex = zIndex;
251
235
  }
252
236
  }
253
237
  if (debugMode) {
254
- screenRenderer.drawRect(this.region, viewport.getSizeOfPixelOnCanvas(), { fill: Color4_1.default.clay });
238
+ screenRenderer.drawRect(this.region, viewport.getSizeOfPixelOnCanvas(), { fill: math_1.Color4.clay });
255
239
  }
256
240
  }
257
241
  }
@@ -262,29 +246,27 @@ var RenderingCacheNode = /** @class */ (function () {
262
246
  thisRenderer = this.cachedRenderer.startRender();
263
247
  thisRenderer.clear();
264
248
  this.renderedMaxZIndex = null;
265
- for (var _j = 0, leaves_1 = leaves; _j < leaves_1.length; _j++) {
266
- var leaf = leaves_1[_j];
267
- var content = leaf.getContent();
268
- (_a = this.renderedMaxZIndex) !== null && _a !== void 0 ? _a : (this.renderedMaxZIndex = content.getZIndex());
249
+ for (const leaf of leaves) {
250
+ const content = leaf.getContent();
251
+ this.renderedMaxZIndex ??= content.getZIndex();
269
252
  this.renderedMaxZIndex = Math.max(this.renderedMaxZIndex, content.getZIndex());
270
253
  leaf.render(thisRenderer, this.region);
271
254
  }
272
255
  if (debugMode) {
273
- screenRenderer.drawRect(this.region, viewport.getSizeOfPixelOnCanvas(), { fill: Color4_1.default.red });
256
+ screenRenderer.drawRect(this.region, viewport.getSizeOfPixelOnCanvas(), { fill: math_1.Color4.red });
274
257
  }
275
258
  }
276
259
  this.renderedIds = leafIds;
277
260
  }
278
261
  else {
279
- (_b = this.cachedRenderer) === null || _b === void 0 ? void 0 : _b.dealloc();
262
+ this.cachedRenderer?.dealloc();
280
263
  // Slightly increase the clip region to prevent seams.
281
264
  // Divide by two because grownBy expands the rectangle on all sides.
282
- var pixelSize = viewport.getSizeOfPixelOnCanvas();
283
- var expandedRegion = new Rect2_1.default(this.region.x, this.region.y, this.region.w + pixelSize, this.region.h + pixelSize);
284
- var clip = true;
265
+ const pixelSize = viewport.getSizeOfPixelOnCanvas();
266
+ const expandedRegion = new math_1.Rect2(this.region.x, this.region.y, this.region.w + pixelSize, this.region.h + pixelSize);
267
+ const clip = true;
285
268
  screenRenderer.startObject(expandedRegion, clip);
286
- for (var _k = 0, leaves_2 = leaves; _k < leaves_2.length; _k++) {
287
- var leaf = leaves_2[_k];
269
+ for (const leaf of leaves) {
288
270
  leaf.render(screenRenderer, this.region.intersection(viewport.visibleRect));
289
271
  }
290
272
  screenRenderer.endObject();
@@ -294,39 +276,38 @@ var RenderingCacheNode = /** @class */ (function () {
294
276
  thisRenderer = this.cachedRenderer.startRender();
295
277
  }
296
278
  if (thisRenderer) {
297
- var transformMat = this.cachedRenderer.getTransform(this.region).inverse();
279
+ const transformMat = this.cachedRenderer.getTransform(this.region).inverse();
298
280
  screenRenderer.renderFromOtherOfSameType(transformMat, thisRenderer);
299
281
  }
300
282
  // Can we clean up this' children? (Are they unused?)
301
- if (this.instantiatedChildren.every(function (child) { return child.isEmpty(); })) {
283
+ if (this.instantiatedChildren.every(child => child.isEmpty())) {
302
284
  this.instantiatedChildren = [];
303
285
  }
304
286
  }
305
287
  this.checkRep();
306
- };
288
+ }
307
289
  // Returns true iff this/its children have no cached state.
308
- RenderingCacheNode.prototype.isEmpty = function () {
290
+ isEmpty() {
309
291
  if (this.cachedRenderer !== null) {
310
292
  return false;
311
293
  }
312
- return this.instantiatedChildren.every(function (child) { return child.isEmpty(); });
313
- };
314
- RenderingCacheNode.prototype.onRegionDealloc = function () {
294
+ return this.instantiatedChildren.every(child => child.isEmpty());
295
+ }
296
+ onRegionDealloc() {
315
297
  this.cachedRenderer = null;
316
298
  if (this.isEmpty()) {
317
299
  this.instantiatedChildren = [];
318
300
  }
319
- };
320
- RenderingCacheNode.prototype.checkRep = function () {
301
+ }
302
+ checkRep() {
321
303
  if (this.instantiatedChildren.length !== cacheDivisionSize * cacheDivisionSize && this.instantiatedChildren.length !== 0) {
322
- throw new Error("Repcheck: Wrong number of children. Got ".concat(this.instantiatedChildren.length));
304
+ throw new Error(`Repcheck: Wrong number of children. Got ${this.instantiatedChildren.length}`);
323
305
  }
324
306
  if (this.renderedIds[1] !== undefined && this.renderedIds[0] >= this.renderedIds[1]) {
325
307
  console.error(this.renderedIds);
326
308
  throw new Error('Repcheck: First two ids are not in ascending order!');
327
309
  }
328
- for (var _i = 0, _a = this.instantiatedChildren; _i < _a.length; _i++) {
329
- var child = _a[_i];
310
+ for (const child of this.instantiatedChildren) {
330
311
  if (child.parent !== this) {
331
312
  throw new Error('Children should be linked to their parents!');
332
313
  }
@@ -334,7 +315,6 @@ var RenderingCacheNode = /** @class */ (function () {
334
315
  if (this.cachedRenderer && !this.cachedRenderer.isAllocd()) {
335
316
  throw new Error('this\' cachedRenderer != null, but is dealloc\'d');
336
317
  }
337
- };
338
- return RenderingCacheNode;
339
- }());
318
+ }
319
+ }
340
320
  exports.default = RenderingCacheNode;
@@ -1,34 +1,35 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
4
  };
13
5
  Object.defineProperty(exports, "__esModule", { value: true });
14
6
  exports.createCache = void 0;
15
- var Vec2_1 = require("../../math/Vec2");
16
- var DummyRenderer_1 = require("../renderers/DummyRenderer");
17
- var createEditor_1 = require("../../testing/createEditor");
18
- var RenderingCache_1 = require("./RenderingCache");
7
+ const math_1 = require("@js-draw/math");
8
+ const DummyRenderer_1 = __importDefault(require("../renderers/DummyRenderer"));
9
+ const createEditor_1 = __importDefault(require("../../testing/createEditor"));
10
+ const RenderingCache_1 = __importDefault(require("./RenderingCache"));
19
11
  // Override any default test options with [cacheOptions]
20
- var createCache = function (onRenderAlloc, cacheOptions) {
21
- var editor = (0, createEditor_1.default)();
22
- var cache = new RenderingCache_1.default(__assign({ createRenderer: function () {
23
- var renderer = new DummyRenderer_1.default(editor.viewport);
24
- onRenderAlloc === null || onRenderAlloc === void 0 ? void 0 : onRenderAlloc(renderer);
12
+ const createCache = (onRenderAlloc, cacheOptions) => {
13
+ const editor = (0, createEditor_1.default)();
14
+ const cache = new RenderingCache_1.default({
15
+ createRenderer() {
16
+ const renderer = new DummyRenderer_1.default(editor.viewport);
17
+ onRenderAlloc?.(renderer);
25
18
  return renderer;
26
- }, isOfCorrectType: function (renderer) {
19
+ },
20
+ isOfCorrectType(renderer) {
27
21
  return renderer instanceof DummyRenderer_1.default;
28
- }, blockResolution: Vec2_1.Vec2.of(500, 500), cacheSize: 500 * 10 * 4, maxScale: 2, minProportionalRenderTimePerCache: 0, minProportionalRenderTimeToUseCache: 0 }, cacheOptions));
22
+ },
23
+ blockResolution: math_1.Vec2.of(500, 500),
24
+ cacheSize: 500 * 10 * 4,
25
+ maxScale: 2,
26
+ minProportionalRenderTimePerCache: 0,
27
+ minProportionalRenderTimeToUseCache: 0,
28
+ ...cacheOptions
29
+ });
29
30
  return {
30
- cache: cache,
31
- editor: editor
31
+ cache,
32
+ editor
32
33
  };
33
34
  };
34
35
  exports.createCache = createCache;
@@ -1,6 +1,6 @@
1
- import { Vec2 } from '../../math/Vec2';
2
- import AbstractRenderer from '../renderers/AbstractRenderer';
3
- import { CacheRecordManager } from './CacheRecordManager';
1
+ import type { Vec2 } from '@js-draw/math';
2
+ import type AbstractRenderer from '../renderers/AbstractRenderer';
3
+ import type { CacheRecordManager } from './CacheRecordManager';
4
4
  export type CacheAddress = number;
5
5
  export type BeforeDeallocCallback = () => void;
6
6
  export interface CacheProps {