js-draw 0.25.0 → 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 +44 -45
  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 +43 -45
  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 -167
  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,302 +0,0 @@
1
- import { Point2, Vec2 } from '../../math/Vec2';
2
- import Rect2 from '../../math/shapes/Rect2';
3
- import LineSegment2 from '../../math/shapes/LineSegment2';
4
- import { StrokeDataPoint } from '../../types';
5
- import QuadraticBezier from '../../math/shapes/QuadraticBezier';
6
-
7
- export interface Curve {
8
- startPoint: Vec2;
9
- startWidth: number;
10
-
11
- controlPoint: Vec2;
12
-
13
- endWidth: number;
14
- endPoint: Vec2;
15
- }
16
-
17
- type OnCurveAddedCallback = (curve: Curve|null)=>void;
18
-
19
- // Handles stroke smoothing
20
- export class StrokeSmoother {
21
- private isFirstSegment: boolean = true;
22
-
23
- private buffer: Point2[];
24
- private lastPoint: StrokeDataPoint;
25
- private lastExitingVec: Vec2|null = null;
26
- private currentCurve: QuadraticBezier|null = null;
27
- private curveStartWidth: number;
28
- private curveEndWidth: number;
29
-
30
- // Stroke smoothing and tangent approximation
31
- private momentum: Vec2;
32
- private bbox: Rect2;
33
-
34
- public constructor(
35
- private startPoint: StrokeDataPoint,
36
-
37
- // Maximum distance from the actual curve (irrespective of stroke width)
38
- // for which a point is considered 'part of the curve'.
39
- // Note that the maximum will be smaller if the stroke width is less than
40
- // [maxFitAllowed].
41
- private minFitAllowed: number,
42
- private maxFitAllowed: number,
43
-
44
- private onCurveAdded: OnCurveAddedCallback,
45
- ) {
46
- this.lastPoint = this.startPoint;
47
-
48
- this.buffer = [this.startPoint.pos];
49
- this.momentum = Vec2.zero;
50
- this.currentCurve = null;
51
- this.curveStartWidth = startPoint.width;
52
-
53
- this.bbox = new Rect2(this.startPoint.pos.x, this.startPoint.pos.y, 0, 0);
54
- }
55
-
56
- public getBBox(): Rect2 {
57
- return this.bbox;
58
- }
59
-
60
- public preview(): Curve|null {
61
- if (!this.currentCurve) {
62
- return null;
63
- }
64
-
65
- return this.currentSegmentToPath();
66
- }
67
-
68
- // Returns the distance between the start, control, and end points of the curve.
69
- private approxCurrentCurveLength() {
70
- if (!this.currentCurve) {
71
- return 0;
72
- }
73
- const startPt = this.currentCurve.p0;
74
- const controlPt = this.currentCurve.p1;
75
- const endPt = this.currentCurve.p2;
76
- const toControlDist = startPt.minus(controlPt).length();
77
- const toEndDist = endPt.minus(controlPt).length();
78
- return toControlDist + toEndDist;
79
- }
80
-
81
- public finalizeCurrentCurve() {
82
- // Case where no points have been added
83
- if (!this.currentCurve) {
84
- return;
85
- }
86
-
87
- this.onCurveAdded(this.currentSegmentToPath());
88
-
89
- const lastPoint = this.buffer[this.buffer.length - 1];
90
- this.lastExitingVec = this.currentCurve.p2.minus(this.currentCurve.p1);
91
- console.assert(this.lastExitingVec.magnitude() !== 0, 'lastExitingVec has zero length!');
92
-
93
- // Use the last two points to start a new curve (the last point isn't used
94
- // in the current curve and we want connected curves to share end points)
95
- this.buffer = [
96
- this.buffer[this.buffer.length - 2], lastPoint,
97
- ];
98
- this.currentCurve = null;
99
-
100
- this.isFirstSegment = false;
101
- }
102
-
103
- // Returns [upper curve, connector, lower curve]
104
- private currentSegmentToPath() {
105
- if (this.currentCurve == null) {
106
- throw new Error('Invalid State: currentCurve is null!');
107
- }
108
-
109
- const startVec = this.currentCurve.normal(0).normalized();
110
-
111
- if (!isFinite(startVec.magnitude())) {
112
- throw new Error(`startVec(${startVec}) is NaN or ∞`);
113
- }
114
-
115
- const startPt = this.currentCurve.at(0);
116
- const endPt = this.currentCurve.at(1);
117
- const controlPoint = this.currentCurve.p1;
118
-
119
- return {
120
- startPoint: startPt,
121
- controlPoint,
122
- endPoint: endPt,
123
- startWidth: this.curveStartWidth,
124
- endWidth: this.curveEndWidth,
125
- };
126
- }
127
-
128
- // Compute the direction of the velocity at the end of this.buffer
129
- private computeExitingVec(): Vec2 {
130
- return this.momentum.normalized().times(this.lastPoint.width / 2);
131
- }
132
-
133
- public addPoint(newPoint: StrokeDataPoint) {
134
- if (this.lastPoint) {
135
- // Ignore points that are identical
136
- const fuzzEq = 1e-10;
137
- const deltaTime = newPoint.time - this.lastPoint.time;
138
- if (newPoint.pos.eq(this.lastPoint.pos, fuzzEq) || deltaTime === 0) {
139
- return;
140
- } else if (isNaN(newPoint.pos.magnitude())) {
141
- console.warn('Discarding NaN point.', newPoint);
142
- return;
143
- }
144
-
145
- const threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
146
- const shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
147
- && this.isFirstSegment;
148
-
149
- // Snap to the starting point if the stroke is contained within a small ball centered
150
- // at the starting point.
151
- // This allows us to create a circle/dot at the start of the stroke.
152
- if (shouldSnapToInitial) {
153
- return;
154
- }
155
-
156
- const velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / (deltaTime) * 1000);
157
- this.momentum = this.momentum.lerp(velocity, 0.9);
158
- }
159
-
160
- const lastPoint = this.lastPoint ?? newPoint;
161
- this.lastPoint = newPoint;
162
-
163
- this.buffer.push(newPoint.pos);
164
- const pointRadius = newPoint.width;
165
- const prevEndWidth = this.curveEndWidth;
166
- this.curveEndWidth = pointRadius;
167
-
168
- // recompute bbox
169
- this.bbox = this.bbox.grownToPoint(newPoint.pos, pointRadius);
170
-
171
- // If the last curve just ended or it's the first curve,
172
- if (this.currentCurve === null) {
173
- const p1 = lastPoint.pos;
174
- const p2 = lastPoint.pos.plus(this.lastExitingVec ?? Vec2.unitX);
175
- const p3 = newPoint.pos;
176
-
177
- // Quadratic Bézier curve
178
- this.currentCurve = new QuadraticBezier(p1, p2, p3);
179
- console.assert(!isNaN(p1.magnitude()) && !isNaN(p2.magnitude()) && !isNaN(p3.magnitude()), 'Expected !NaN');
180
-
181
- if (this.isFirstSegment) {
182
- // The start of a curve often lacks accurate pressure information. Update it.
183
- this.curveStartWidth = (this.curveStartWidth + pointRadius) / 2;
184
- }
185
- else {
186
- this.curveStartWidth = prevEndWidth;
187
- }
188
- }
189
-
190
- // If there isn't an entering vector (e.g. because this.isFirstCurve), approximate it.
191
- let enteringVec = this.lastExitingVec;
192
- if (!enteringVec) {
193
- let sampleIdx = Math.ceil(this.buffer.length / 2);
194
- if (sampleIdx === 0 || sampleIdx >= this.buffer.length) {
195
- sampleIdx = this.buffer.length - 1;
196
- }
197
-
198
- enteringVec = this.buffer[sampleIdx].minus(this.buffer[0]);
199
- }
200
-
201
- let exitingVec = this.computeExitingVec();
202
-
203
- // Find the intersection between the entering vector and the exiting vector
204
- const maxRelativeLength = 2;
205
- const segmentStart = this.buffer[0];
206
- const segmentEnd = newPoint.pos;
207
- const startEndDist = segmentEnd.minus(segmentStart).magnitude();
208
- const maxControlPointDist = maxRelativeLength * startEndDist;
209
-
210
- // Exit in cases where we would divide by zero
211
- if (maxControlPointDist === 0 || exitingVec.magnitude() === 0 || !isFinite(exitingVec.magnitude())) {
212
- return;
213
- }
214
-
215
- console.assert(isFinite(enteringVec.magnitude()), 'Pre-normalized enteringVec has NaN or ∞ magnitude!');
216
-
217
- enteringVec = enteringVec.normalized();
218
- exitingVec = exitingVec.normalized();
219
-
220
- console.assert(isFinite(enteringVec.magnitude()), 'Normalized enteringVec has NaN or ∞ magnitude!');
221
-
222
- const lineFromStart = new LineSegment2(
223
- segmentStart,
224
- segmentStart.plus(enteringVec.times(maxControlPointDist))
225
- );
226
- const lineFromEnd = new LineSegment2(
227
- segmentEnd.minus(exitingVec.times(maxControlPointDist)),
228
- segmentEnd
229
- );
230
- const intersection = lineFromEnd.intersection(lineFromStart);
231
-
232
- // Position the control point at this intersection
233
- let controlPoint: Point2|null = null;
234
- if (intersection) {
235
- controlPoint = intersection.point;
236
- }
237
-
238
- // No intersection or the intersection is one of the end points?
239
- if (!controlPoint || segmentStart.eq(controlPoint) || segmentEnd.eq(controlPoint)) {
240
- // Position the control point closer to the first -- the connecting
241
- // segment will be roughly a line.
242
- controlPoint = segmentStart.plus(enteringVec.times(startEndDist / 4));
243
- }
244
-
245
- console.assert(!segmentStart.eq(controlPoint, 1e-11), 'Start and control points are equal!');
246
- console.assert(!controlPoint.eq(segmentEnd, 1e-11), 'Control and end points are equal!');
247
-
248
- const prevCurve = this.currentCurve;
249
- this.currentCurve = new QuadraticBezier(segmentStart, controlPoint, segmentEnd);
250
-
251
- if (isNaN(this.currentCurve.normal(0).magnitude())) {
252
- console.error('NaN normal at 0. Curve:', this.currentCurve);
253
- this.currentCurve = prevCurve;
254
- }
255
-
256
- // Should we start making a new curve? Check whether all buffer points are within
257
- // ±strokeWidth of the curve.
258
- const curveMatchesPoints = (curve: QuadraticBezier): boolean => {
259
- const minFit = Math.min(Math.max(
260
- Math.min(this.curveStartWidth, this.curveEndWidth) / 4,
261
- this.minFitAllowed
262
- ), this.maxFitAllowed);
263
-
264
- // The sum of distances greater than minFit must not exceed this:
265
- const maxNonMatchingDistSum = minFit;
266
-
267
- // Sum of distances greater than minFit.
268
- let nonMatchingDistSum = 0;
269
-
270
- for (const point of this.buffer) {
271
- let dist = curve.approximateDistance(point);
272
-
273
- if (dist > minFit) {
274
- // Use the more accurate distance function
275
- dist = curve.distance(point);
276
-
277
- nonMatchingDistSum += Math.max(0, dist - minFit);
278
- if (nonMatchingDistSum > maxNonMatchingDistSum) {
279
- return false; // false: Curve doesn't match points well enough.
280
- }
281
- }
282
- }
283
- return true;
284
- };
285
-
286
- if (this.buffer.length > 3 && this.approxCurrentCurveLength() > this.curveStartWidth / 2) {
287
- if (!curveMatchesPoints(this.currentCurve)) {
288
- // Use a curve that better fits the points
289
- this.currentCurve = prevCurve;
290
- this.curveEndWidth = prevEndWidth;
291
-
292
- // Reset the last point -- the current point was not added to the curve.
293
- this.lastPoint = lastPoint;
294
-
295
- this.finalizeCurrentCurve();
296
- return;
297
- }
298
- }
299
- }
300
- }
301
-
302
- export default StrokeSmoother;
@@ -1,18 +0,0 @@
1
- import AbstractComponent from '../AbstractComponent';
2
- import { ImageComponentLocalization } from '../localization';
3
-
4
- // Returns the description of all given elements, if identical, otherwise,
5
- // returns null.
6
- export default (localizationTable: ImageComponentLocalization, elems: AbstractComponent[]) => {
7
- if (elems.length === 0) {
8
- return null;
9
- }
10
-
11
- const description = elems[0].description(localizationTable);
12
- for (const elem of elems) {
13
- if (elem.description(localizationTable) !== description) {
14
- return null;
15
- }
16
- }
17
- return description;
18
- };
package/src/lib.ts DELETED
@@ -1,69 +0,0 @@
1
- /**
2
- * The main entrypoint for the NPM package. Everything exported by this file
3
- * is available through the [`js-draw` package](https://www.npmjs.com/package/js-draw).
4
- *
5
- * @example
6
- * ```
7
- * import { Editor, Vec3, Mat33 } from 'js-draw';
8
- *
9
- * // Apply js-draw CSS
10
- * import 'js-draw/styles';
11
- * // If your bundler doesn't support the above, try
12
- * // import 'js-draw/bundledStyles';
13
- *
14
- * (async () => {
15
- * const editor = new Editor(document.body);
16
- * const toolbar = editor.addToolbar();
17
- * editor.getRootElement().style.height = '600px';
18
- *
19
- * await editor.loadFromSVG(`
20
- * <svg viewBox="0 0 500 500" width="500" height="500" version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
21
- * <style id="js-draw-style-sheet">path{stroke-linecap:round;stroke-linejoin:round;}text{white-space:pre;}</style>
22
- * <path d="M500,500L500,0L0,0L0,500L500,500" fill="#423131bf" class="js-draw-image-background"></path>
23
- * <text style="transform: matrix(1, 0, 0, 1, 57, 192); font-family: serif; font-size: 32px; fill: rgb(204, 102, 51);">Testing...</text>
24
- * </svg>
25
- * `);
26
- *
27
- * toolbar.addActionButton({
28
- * label: 'Save',
29
- * icon: editor.icons.makeSaveIcon(),
30
- * }, () => {
31
- * const saveData = editor.toSVG().outerHTML;
32
- *
33
- * // Do something with saveData
34
- * });
35
- * })();
36
- * ```
37
- *
38
- * @see
39
- * {@link Editor}
40
- * {@link Editor.loadFromSVG}
41
- * {@link HTMLToolbar.addActionButton }
42
- *
43
- * @packageDocumentation
44
- */
45
-
46
- import Editor, { EditorSettings } from './Editor';
47
- export { default as EditorImage } from './EditorImage';
48
- export * from './types';
49
- export { default as getLocalizationTable, matchingLocalizationTable } from './localizations/getLocalizationTable';
50
- export * from './localization';
51
-
52
- export { default as Color4 } from './Color4';
53
- export { default as SVGLoader } from './SVGLoader';
54
- export { default as Viewport } from './Viewport';
55
- export * from './math/lib';
56
- export * from './components/lib';
57
- export * from './commands/lib';
58
- export * from './tools/lib';
59
- export * from './toolbar/lib';
60
- export * from './rendering/lib';
61
- export * from './testing/lib';
62
- export * from './shortcuts/lib';
63
- export { default as EventDispatcher } from './EventDispatcher';
64
- export { default as Pointer, PointerDevice } from './Pointer';
65
- export { default as HTMLToolbar } from './toolbar/HTMLToolbar';
66
- export { default as UndoRedoHistory } from './UndoRedoHistory';
67
-
68
- export { Editor, EditorSettings };
69
- export default Editor;
@@ -1,34 +0,0 @@
1
- import { CommandLocalization, defaultCommandLocalization } from './commands/localization';
2
- import { defaultComponentLocalization, ImageComponentLocalization } from './components/localization';
3
- import { defaultTextRendererLocalization, TextRendererLocalization } from './rendering/localization';
4
- import { defaultToolbarLocalization, ToolbarLocalization } from './toolbar/localization';
5
- import { defaultToolLocalization, ToolLocalization } from './tools/localization';
6
-
7
-
8
- export interface EditorLocalization extends ToolbarLocalization, ToolLocalization, CommandLocalization, ImageComponentLocalization, TextRendererLocalization {
9
- accessibilityInputInstructions: string;
10
- undoAnnouncement: (actionDescription: string)=> string;
11
- redoAnnouncement: (actionDescription: string)=> string;
12
- doneLoading: string;
13
- loading: (percentage: number)=>string;
14
- imageEditor: string;
15
- }
16
-
17
- export const defaultEditorLocalization: EditorLocalization = {
18
- ...defaultToolbarLocalization,
19
- ...defaultToolLocalization,
20
- ...defaultCommandLocalization,
21
- ...defaultComponentLocalization,
22
- ...defaultTextRendererLocalization,
23
- accessibilityInputInstructions: [
24
- 'Press "t" to read the contents of the viewport as text.',
25
- 'Use the arrow keys to move the viewport, click and drag to draw strokes.',
26
- 'Press "w" to zoom in and "s" to zoom out.',
27
- ].join(' '),
28
- loading: (percentage: number) => `Loading ${percentage}%...`,
29
- imageEditor: 'Image Editor',
30
- doneLoading: 'Done loading',
31
-
32
- undoAnnouncement: (commandDescription: string) => `Undid ${commandDescription}`,
33
- redoAnnouncement: (commandDescription: string) => `Redid ${commandDescription}`,
34
- };
@@ -1,146 +0,0 @@
1
- import { defaultEditorLocalization, EditorLocalization } from '../localization';
2
-
3
- // German localization
4
- const localization: EditorLocalization = {
5
- ...defaultEditorLocalization,
6
-
7
- pen: 'Stift',
8
- eraser: 'Radierer',
9
- select: 'Auswahl',
10
- handTool: 'Verschieben',
11
-
12
- zoom: 'Vergrößerung',
13
-
14
- image: 'Bild',
15
- inputAltText: 'Alt-Text: ',
16
- chooseFile: 'Wähle Datei: ',
17
- submit: 'Absenden',
18
- cancel: 'Abbrechen',
19
-
20
- resetView: 'Ansicht zurücksetzen',
21
-
22
- thicknessLabel: 'Dicke: ',
23
- colorLabel: 'Farbe: ',
24
- fontLabel: 'Schriftart: ',
25
- textSize: 'Größe: ',
26
-
27
- resizeImageToSelection: 'Bildgröße an Auswahl anpassen',
28
- deleteSelection: 'Auswahl löschen',
29
- duplicateSelection: 'Auswahl duplizieren',
30
-
31
- undo: 'Rückgängig',
32
- redo: 'Wiederholen',
33
-
34
- pickColorFromScreen: 'Farbe von Bildschirm auswählen',
35
- clickToPickColorAnnouncement: 'Klicke auf den Bildschirm, um eine Farbe auszuwählen',
36
- selectionToolKeyboardShortcuts: 'Auswahl-Werkzeug: Verwende die Pfeiltasten, um ausgewählte Elemente zu verschieben und ‚i‘ und ‚o‘, um ihre Größe zu ändern.',
37
- touchPanning: 'Ansicht mit Touchscreen verschieben',
38
- anyDevicePanning: 'Ansicht mit jedem Eingabegerät verschieben',
39
-
40
- selectPenType: 'Objekt-Typ: ',
41
- roundedTipPen: 'Freihand',
42
- flatTipPen: 'Stift (druckempfindlich)',
43
- arrowPen: 'Pfeil',
44
- linePen: 'Linie',
45
- outlinedRectanglePen: 'Umrissenes Rechteck',
46
- filledRectanglePen: 'Ausgefülltes Rechteck',
47
-
48
- lockRotation: 'Sperre Rotation',
49
- paste: 'Einfügen',
50
-
51
- dropdownShown: (toolName) =>`Dropdown-Menü für ${toolName} angezeigt`,
52
- dropdownHidden: (toolName) =>`Dropdown-Menü für ${toolName} versteckt`,
53
- zoomLevel: (zoomPercent) =>`Vergößerung: ${zoomPercent}%`,
54
- colorChangedAnnouncement: (color) =>`Farbe zu ${color} geändert`,
55
-
56
- imageSize: (size, units) => `Bild-Größe: ${size} ${units}`,
57
- imageLoadError: (message) => `Fehler beim Laden des Bildes: ${message}`,
58
- errorImageHasZeroSize: 'Fehler: Bild hat Größe Null',
59
-
60
- penTool: (penNumber) =>`Stift ${penNumber}`,
61
-
62
- selectionTool: 'Auswahl',
63
- eraserTool: 'Radiergummi',
64
- touchPanTool: 'Ansicht mit Touchscreen verschieben',
65
- twoFingerPanZoomTool: 'Ansicht verschieben und vergrößern',
66
- undoRedoTool: 'Rückgängig/Wiederholen',
67
- rightClickDragPanTool: 'Rechtsklick-Ziehen',
68
- pipetteTool: 'Farbe von Bildschirm auswählen',
69
- keyboardPanZoom: 'Tastaturkürzel zum Verschieben/Vergrößern der Ansicht',
70
- textTool: 'Text',
71
- enterTextToInsert: 'Einzufügender Text',
72
- changeTool: 'Wechsle Werkzeug',
73
- pasteHandler: 'Copy-Paste-Handler',
74
- findLabel: 'Finde',
75
- toNextMatch: 'Nächstes',
76
- closeFindDialog: 'Schließen',
77
- findDialogShown: 'Finde-Dialog angezeigt',
78
- findDialogHidden: 'Finde-Dialog versteckt',
79
- focusedFoundText: (matchIdx, totalMatches) => `Sieh Treffer ${matchIdx} von ${totalMatches} an`,
80
-
81
- toolEnabledAnnouncement: (toolName) =>`${toolName} aktiviert`,
82
- toolDisabledAnnouncement: (toolName) =>`${toolName} deaktiviert`,
83
- updatedViewport: 'Transformierte Ansicht',
84
- transformedElements: (elemCount) =>`${elemCount} Element${1 === elemCount ? '' : 'e'} transformiert`,
85
- resizeOutputCommand: (newSize) =>`Bildgröße auf ${newSize.w}x${newSize.h} geändert`,
86
- addElementAction: (componentDescription) =>`${componentDescription} hinzugefügt`,
87
- eraseAction: (elemDescription, countErased)=>`${countErased} ${elemDescription} gelöscht`,
88
- duplicateAction: (elemDescription, countErased)=>`${countErased} ${elemDescription} dupliziert`,
89
- inverseOf: (actionDescription) =>`${actionDescription} umgekehrt`,
90
-
91
- elements: 'Elemente',
92
- erasedNoElements: 'Nichts entfernt',
93
- duplicatedNoElements: 'Nichts dupliziert',
94
- rotatedBy: (degrees) =>`${Math.abs(degrees)} Grad ${degrees < 0 ? 'im Uhrzeigersinn' : 'gegen den Uhrzeigersinn'} gedreht`,
95
-
96
- movedLeft: 'Nacht links bewegt',
97
- movedUp: 'Nacht oben bewegt',
98
- movedDown: 'Nacht unten bewegt',
99
- movedRight: 'Nacht rechts bewegt',
100
- zoomedOut: 'Ansicht verkleinert',
101
- zoomedIn: 'Ansicht vergrößert',
102
-
103
- selectedElements: (count) =>`${count} Element${ 1 === count ? '' : 'e' } ausgewählt`,
104
- stroke: 'Strich',
105
- svgObject: 'SVG-Objekt',
106
-
107
- text: (text) =>`Text-Objekt: ${text}`,
108
- pathNodeCount: (count) =>`Es gibt ${count} sichtbare Pfad-Objekte.`,
109
- textNodeCount: (count) =>`Es gibt ${count} sichtbare Text-Knotenpunkte.`,
110
- textNode: (content) =>`Text: ${content}`,
111
-
112
- imageNodeCount: (nodeCount) => `Es gibt ${nodeCount} sichtbare Bild-Knoten.`,
113
- imageNode: label => `Bild: ${label}`,
114
- unlabeledImageNode: 'Bild ohne Label',
115
-
116
- rerenderAsText: 'Als Text darstellen',
117
- accessibilityInputInstructions: 'Drücke ‚t‘, um den Inhalt des Ansichtsfensters als Text zu lesen. Verwende die Pfeiltasten, um die Ansicht zu verschieben, und klicke und ziehe, um Striche zu zeichnen. Drücke ‚w‘ zum Vergrößern und ‚s‘ zum Verkleinern der Ansicht.',
118
-
119
- loading: percentage =>`Laden ${percentage}%...`,
120
- doneLoading: 'Laden fertig',
121
-
122
- imageEditor: 'Bild-Editor',
123
- undoAnnouncement: (commandDescription) =>`${commandDescription} rückgängig gemacht`,
124
- redoAnnouncement: (commandDescription) =>`${commandDescription} wiederholt`,
125
- reformatSelection: 'Formatiere Auswahl',
126
- documentProperties: 'Seite',
127
- backgroundColor: 'Hintergrundfarbe: ',
128
- imageWidthOption: 'Breite: ',
129
- imageHeightOption: 'Höhe: ',
130
- useGridOption: 'Gitter: ',
131
- toggleOverflow: 'Mehr',
132
- selectAllTool: 'Alle auswählen',
133
- soundExplorer: 'Klangbasierte Bilderkundung',
134
- disableAccessibilityExploreTool: 'Deaktiviere klangbasierte Erkundung',
135
- enableAccessibilityExploreTool: 'Aktiviere klangbasierte Erkundung',
136
- copied: (count, description) => `${count} ${description} kopiert`,
137
- pasted: (count, description) => `${count} ${description} eingefügt`,
138
- unionOf: (actionDescription, actionCount) => `Vereinigung: ${actionCount} ${actionDescription}`,
139
- emptyBackground: 'Leerer Hintergrund',
140
- filledBackgroundWithColor: (color) => `Gefüllter Hintergrund (${color})`,
141
- restyledElement: (elementDescription) => `${elementDescription} umgestaltet`,
142
-
143
-
144
- };
145
-
146
- export default localization;
@@ -1,8 +0,0 @@
1
- import { defaultEditorLocalization, EditorLocalization } from '../localization';
2
-
3
- // Default localizations are already in English.
4
- const localization: EditorLocalization = {
5
- ...defaultEditorLocalization,
6
- };
7
-
8
- export default localization;
@@ -1,74 +0,0 @@
1
- import { defaultEditorLocalization, EditorLocalization } from '../localization';
2
-
3
- // A partial Spanish localization.
4
- const localization: EditorLocalization = {
5
- ...defaultEditorLocalization,
6
-
7
- // Strings for the main editor interface
8
- // (see src/localization.ts)
9
- loading: (percentage: number) => `Cargando: ${percentage}%...`,
10
- imageEditor: 'Editor de dibujos',
11
-
12
- undoAnnouncement: (commandDescription: string) => `${commandDescription} fue deshecho`,
13
- redoAnnouncement: (commandDescription: string) => `${commandDescription} fue rehecho`,
14
- undo: 'Deshace',
15
- redo: 'Rehace',
16
-
17
- // Strings for the toolbar
18
- // (see src/toolbar/localization.ts)
19
- pen: 'Lapiz',
20
- eraser: 'Borrador',
21
- select: 'Selecciona',
22
- thicknessLabel: 'Tamaño: ',
23
- colorLabel: 'Color: ',
24
- doneLoading: 'El cargado terminó',
25
- fontLabel: 'Fuente: ',
26
- anyDevicePanning: 'Mover la pantalla con todo dispotivo',
27
- touchPanning: 'Mover la pantalla con un dedo',
28
- touchPanTool: 'Instrumento de mover la pantalla con un dedo',
29
- outlinedRectanglePen: 'Rectángulo con nada más que un borde',
30
- filledRectanglePen: 'Rectángulo sin borde',
31
- linePen: 'Línea',
32
- arrowPen: 'Flecha',
33
- roundedTipPen: 'Lapiz Redondeado',
34
- selectPenType: 'Forma de dibuja:',
35
- handTool: 'Mover',
36
- zoom: 'Zoom',
37
- resetView: 'Reiniciar vista',
38
- resizeImageToSelection: 'Redimensionar la imagen a lo que está seleccionado',
39
- deleteSelection: 'Borra la selección',
40
- duplicateSelection: 'Duplica la selección',
41
- pickColorFromScreen: 'Selecciona un color de la pantalla',
42
- clickToPickColorAnnouncement: 'Haga un clic en la pantalla para seleccionar un color',
43
- dropdownShown(toolName: string): string {
44
- return `Menú por ${toolName} es visible`;
45
- },
46
- dropdownHidden: function (toolName: string): string {
47
- return `Menú por ${toolName} fue ocultado`;
48
- },
49
- colorChangedAnnouncement: function (color: string): string {
50
- return `Color fue cambiado a ${color}`;
51
- },
52
- keyboardPanZoom: 'Mover la pantalla con el teclado',
53
- penTool: function (penId: number): string {
54
- return `Lapiz ${penId}`;
55
- },
56
- selectionTool: 'Selecciona',
57
- eraserTool: 'Borrador',
58
- textTool: 'Texto',
59
- enterTextToInsert: 'Entra texto',
60
- textSize: 'Tamaño',
61
- rerenderAsText: 'Redibuja la pantalla al texto',
62
- lockRotation: 'Bloquea rotación',
63
- image: 'Imagen',
64
- imageSize: (size: number, units: string) => `Tamaño del imagen: ${size} ${units}`,
65
- imageLoadError: (message: string)=> `Error cargando imagen: ${message}`,
66
- toggleOverflow: 'Más',
67
-
68
- documentProperties: 'Fondo',
69
- imageWidthOption: 'Ancho: ',
70
- imageHeightOption: 'Alto: ',
71
- backgroundColor: 'Color de fondo: '
72
- };
73
-
74
- export default localization;
@@ -1,27 +0,0 @@
1
-
2
- import { defaultEditorLocalization } from '../localization';
3
- import en from './en';
4
- import es from './es';
5
- import getLocalizationTable from './getLocalizationTable';
6
-
7
- describe('getLocalizationTable', () => {
8
- it('should return the en localization for es_TEST', () => {
9
- expect(getLocalizationTable([ 'es_TEST' ]) === es).toBe(true);
10
- });
11
-
12
- it('should return the default localization for unsupported language', () => {
13
- expect(getLocalizationTable([ 'test' ]) === defaultEditorLocalization).toBe(true);
14
- });
15
-
16
- it('should return the first localization matching a language in the list of user locales', () => {
17
- expect(getLocalizationTable([ 'test_TEST1', 'test_TEST2', 'test_TEST3', 'en_TEST', 'notalanguage']) === en).toBe(true);
18
- });
19
-
20
- it('should return the default localization for unsupported language', () => {
21
- expect(getLocalizationTable([ 'test' ]) === defaultEditorLocalization).toBe(true);
22
- });
23
-
24
- it('should return first of user\'s supported languages', () => {
25
- expect(getLocalizationTable([ 'es_MX', 'es_ES', 'en_US' ]) === es).toBe(true);
26
- });
27
- });