js-draw 0.17.4 → 0.18.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 (413) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/bundle.js +9 -1
  3. package/package.json +35 -33
  4. package/tsconfig.json +3 -2
  5. package/tsconfig.mjs.json +9 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -34
  7. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  8. package/.github/ISSUE_TEMPLATE/translation.yml +0 -902
  9. package/.github/pull_request_template.md +0 -15
  10. package/.github/workflows/firebase-hosting-merge.yml +0 -32
  11. package/.github/workflows/firebase-hosting-pull-request.yml +0 -32
  12. package/.github/workflows/github-pages.yml +0 -56
  13. package/.husky/pre-commit +0 -4
  14. package/build_tools/BundledFile.ts +0 -167
  15. package/build_tools/buildTranslationTemplate.ts +0 -121
  16. package/build_tools/bundle.ts +0 -11
  17. package/dist/build_tools/BundledFile.d.ts +0 -13
  18. package/dist/build_tools/BundledFile.js +0 -157
  19. package/dist/build_tools/buildTranslationTemplate.d.ts +0 -1
  20. package/dist/build_tools/buildTranslationTemplate.js +0 -94
  21. package/dist/build_tools/bundle.d.ts +0 -1
  22. package/dist/build_tools/bundle.js +0 -5
  23. package/dist/src/Color4.d.ts +0 -60
  24. package/dist/src/Color4.js +0 -192
  25. package/dist/src/Editor.d.ts +0 -308
  26. package/dist/src/Editor.js +0 -874
  27. package/dist/src/EditorImage.d.ts +0 -97
  28. package/dist/src/EditorImage.js +0 -477
  29. package/dist/src/EventDispatcher.d.ts +0 -30
  30. package/dist/src/EventDispatcher.js +0 -54
  31. package/dist/src/Pointer.d.ts +0 -24
  32. package/dist/src/Pointer.js +0 -80
  33. package/dist/src/SVGLoader.d.ts +0 -48
  34. package/dist/src/SVGLoader.js +0 -442
  35. package/dist/src/UndoRedoHistory.d.ts +0 -19
  36. package/dist/src/UndoRedoHistory.js +0 -91
  37. package/dist/src/Viewport.d.ts +0 -71
  38. package/dist/src/Viewport.js +0 -256
  39. package/dist/src/bundle/bundled.d.ts +0 -4
  40. package/dist/src/bundle/bundled.js +0 -5
  41. package/dist/src/commands/Command.d.ts +0 -16
  42. package/dist/src/commands/Command.js +0 -30
  43. package/dist/src/commands/Duplicate.d.ts +0 -14
  44. package/dist/src/commands/Duplicate.js +0 -33
  45. package/dist/src/commands/Erase.d.ts +0 -14
  46. package/dist/src/commands/Erase.js +0 -57
  47. package/dist/src/commands/SerializableCommand.d.ts +0 -12
  48. package/dist/src/commands/SerializableCommand.js +0 -36
  49. package/dist/src/commands/UnresolvedCommand.d.ts +0 -14
  50. package/dist/src/commands/UnresolvedCommand.js +0 -22
  51. package/dist/src/commands/invertCommand.d.ts +0 -4
  52. package/dist/src/commands/invertCommand.js +0 -44
  53. package/dist/src/commands/lib.d.ts +0 -7
  54. package/dist/src/commands/lib.js +0 -7
  55. package/dist/src/commands/localization.d.ts +0 -23
  56. package/dist/src/commands/localization.js +0 -21
  57. package/dist/src/commands/uniteCommands.d.ts +0 -4
  58. package/dist/src/commands/uniteCommands.js +0 -116
  59. package/dist/src/components/AbstractComponent.d.ts +0 -73
  60. package/dist/src/components/AbstractComponent.js +0 -252
  61. package/dist/src/components/ImageBackground.d.ts +0 -42
  62. package/dist/src/components/ImageBackground.js +0 -139
  63. package/dist/src/components/ImageComponent.d.ts +0 -31
  64. package/dist/src/components/ImageComponent.js +0 -146
  65. package/dist/src/components/RestylableComponent.d.ts +0 -24
  66. package/dist/src/components/RestylableComponent.js +0 -80
  67. package/dist/src/components/SVGGlobalAttributesObject.d.ts +0 -21
  68. package/dist/src/components/SVGGlobalAttributesObject.js +0 -59
  69. package/dist/src/components/Stroke.d.ts +0 -40
  70. package/dist/src/components/Stroke.js +0 -185
  71. package/dist/src/components/TextComponent.d.ts +0 -53
  72. package/dist/src/components/TextComponent.js +0 -252
  73. package/dist/src/components/UnknownSVGObject.d.ts +0 -18
  74. package/dist/src/components/UnknownSVGObject.js +0 -44
  75. package/dist/src/components/builders/ArrowBuilder.d.ts +0 -19
  76. package/dist/src/components/builders/ArrowBuilder.js +0 -86
  77. package/dist/src/components/builders/FreehandLineBuilder.d.ts +0 -33
  78. package/dist/src/components/builders/FreehandLineBuilder.js +0 -165
  79. package/dist/src/components/builders/LineBuilder.d.ts +0 -18
  80. package/dist/src/components/builders/LineBuilder.js +0 -58
  81. package/dist/src/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +0 -36
  82. package/dist/src/components/builders/PressureSensitiveFreehandLineBuilder.js +0 -339
  83. package/dist/src/components/builders/RectangleBuilder.d.ts +0 -20
  84. package/dist/src/components/builders/RectangleBuilder.js +0 -50
  85. package/dist/src/components/builders/types.d.ts +0 -12
  86. package/dist/src/components/builders/types.js +0 -1
  87. package/dist/src/components/lib.d.ts +0 -12
  88. package/dist/src/components/lib.js +0 -12
  89. package/dist/src/components/localization.d.ts +0 -11
  90. package/dist/src/components/localization.js +0 -10
  91. package/dist/src/components/util/StrokeSmoother.d.ts +0 -35
  92. package/dist/src/components/util/StrokeSmoother.js +0 -210
  93. package/dist/src/components/util/describeComponentList.d.ts +0 -4
  94. package/dist/src/components/util/describeComponentList.js +0 -14
  95. package/dist/src/lib.d.ts +0 -34
  96. package/dist/src/lib.js +0 -34
  97. package/dist/src/localization.d.ts +0 -14
  98. package/dist/src/localization.js +0 -10
  99. package/dist/src/localizations/de.d.ts +0 -3
  100. package/dist/src/localizations/de.js +0 -4
  101. package/dist/src/localizations/en.d.ts +0 -3
  102. package/dist/src/localizations/en.js +0 -4
  103. package/dist/src/localizations/es.d.ts +0 -3
  104. package/dist/src/localizations/es.js +0 -18
  105. package/dist/src/localizations/getLocalizationTable.d.ts +0 -3
  106. package/dist/src/localizations/getLocalizationTable.js +0 -45
  107. package/dist/src/math/LineSegment2.d.ts +0 -24
  108. package/dist/src/math/LineSegment2.js +0 -125
  109. package/dist/src/math/Mat33.d.ts +0 -118
  110. package/dist/src/math/Mat33.js +0 -326
  111. package/dist/src/math/Path.d.ts +0 -71
  112. package/dist/src/math/Path.js +0 -648
  113. package/dist/src/math/Rect2.d.ts +0 -52
  114. package/dist/src/math/Rect2.js +0 -228
  115. package/dist/src/math/Triangle.d.ts +0 -11
  116. package/dist/src/math/Triangle.js +0 -19
  117. package/dist/src/math/Vec2.d.ts +0 -13
  118. package/dist/src/math/Vec2.js +0 -13
  119. package/dist/src/math/Vec3.d.ts +0 -106
  120. package/dist/src/math/Vec3.js +0 -174
  121. package/dist/src/math/lib.d.ts +0 -7
  122. package/dist/src/math/lib.js +0 -7
  123. package/dist/src/math/rounding.d.ts +0 -4
  124. package/dist/src/math/rounding.js +0 -128
  125. package/dist/src/rendering/Display.d.ts +0 -75
  126. package/dist/src/rendering/Display.js +0 -207
  127. package/dist/src/rendering/RenderingStyle.d.ts +0 -31
  128. package/dist/src/rendering/RenderingStyle.js +0 -38
  129. package/dist/src/rendering/TextRenderingStyle.d.ts +0 -36
  130. package/dist/src/rendering/TextRenderingStyle.js +0 -23
  131. package/dist/src/rendering/caching/CacheRecord.d.ts +0 -20
  132. package/dist/src/rendering/caching/CacheRecord.js +0 -55
  133. package/dist/src/rendering/caching/CacheRecordManager.d.ts +0 -12
  134. package/dist/src/rendering/caching/CacheRecordManager.js +0 -43
  135. package/dist/src/rendering/caching/RenderingCache.d.ts +0 -11
  136. package/dist/src/rendering/caching/RenderingCache.js +0 -45
  137. package/dist/src/rendering/caching/RenderingCacheNode.d.ts +0 -29
  138. package/dist/src/rendering/caching/RenderingCacheNode.js +0 -320
  139. package/dist/src/rendering/caching/testUtils.d.ts +0 -9
  140. package/dist/src/rendering/caching/testUtils.js +0 -20
  141. package/dist/src/rendering/caching/types.d.ts +0 -19
  142. package/dist/src/rendering/caching/types.js +0 -1
  143. package/dist/src/rendering/lib.d.ts +0 -5
  144. package/dist/src/rendering/lib.js +0 -5
  145. package/dist/src/rendering/localization.d.ts +0 -10
  146. package/dist/src/rendering/localization.js +0 -9
  147. package/dist/src/rendering/renderers/AbstractRenderer.d.ts +0 -68
  148. package/dist/src/rendering/renderers/AbstractRenderer.js +0 -144
  149. package/dist/src/rendering/renderers/CanvasRenderer.d.ts +0 -63
  150. package/dist/src/rendering/renderers/CanvasRenderer.js +0 -230
  151. package/dist/src/rendering/renderers/DummyRenderer.d.ts +0 -35
  152. package/dist/src/rendering/renderers/DummyRenderer.js +0 -106
  153. package/dist/src/rendering/renderers/SVGRenderer.d.ts +0 -57
  154. package/dist/src/rendering/renderers/SVGRenderer.js +0 -304
  155. package/dist/src/rendering/renderers/TextOnlyRenderer.d.ts +0 -29
  156. package/dist/src/rendering/renderers/TextOnlyRenderer.js +0 -57
  157. package/dist/src/testing/beforeEachFile.d.ts +0 -1
  158. package/dist/src/testing/beforeEachFile.js +0 -7
  159. package/dist/src/testing/createEditor.d.ts +0 -4
  160. package/dist/src/testing/createEditor.js +0 -9
  161. package/dist/src/testing/lib.d.ts +0 -2
  162. package/dist/src/testing/lib.js +0 -2
  163. package/dist/src/testing/loadExpectExtensions.d.ts +0 -2
  164. package/dist/src/testing/loadExpectExtensions.js +0 -24
  165. package/dist/src/testing/sendPenEvent.d.ts +0 -12
  166. package/dist/src/testing/sendPenEvent.js +0 -19
  167. package/dist/src/testing/sendTouchEvent.d.ts +0 -42
  168. package/dist/src/testing/sendTouchEvent.js +0 -62
  169. package/dist/src/toolbar/HTMLToolbar.d.ts +0 -103
  170. package/dist/src/toolbar/HTMLToolbar.js +0 -376
  171. package/dist/src/toolbar/IconProvider.d.ts +0 -62
  172. package/dist/src/toolbar/IconProvider.js +0 -654
  173. package/dist/src/toolbar/lib.d.ts +0 -3
  174. package/dist/src/toolbar/lib.js +0 -3
  175. package/dist/src/toolbar/localization.d.ts +0 -49
  176. package/dist/src/toolbar/localization.js +0 -48
  177. package/dist/src/toolbar/makeColorInput.d.ts +0 -6
  178. package/dist/src/toolbar/makeColorInput.js +0 -113
  179. package/dist/src/toolbar/types.d.ts +0 -4
  180. package/dist/src/toolbar/types.js +0 -1
  181. package/dist/src/toolbar/widgets/ActionButtonWidget.d.ts +0 -15
  182. package/dist/src/toolbar/widgets/ActionButtonWidget.js +0 -25
  183. package/dist/src/toolbar/widgets/BaseToolWidget.d.ts +0 -11
  184. package/dist/src/toolbar/widgets/BaseToolWidget.js +0 -44
  185. package/dist/src/toolbar/widgets/BaseWidget.d.ts +0 -72
  186. package/dist/src/toolbar/widgets/BaseWidget.js +0 -307
  187. package/dist/src/toolbar/widgets/DocumentPropertiesWidget.d.ts +0 -18
  188. package/dist/src/toolbar/widgets/DocumentPropertiesWidget.js +0 -120
  189. package/dist/src/toolbar/widgets/EraserToolWidget.d.ts +0 -17
  190. package/dist/src/toolbar/widgets/EraserToolWidget.js +0 -57
  191. package/dist/src/toolbar/widgets/HandToolWidget.d.ts +0 -17
  192. package/dist/src/toolbar/widgets/HandToolWidget.js +0 -172
  193. package/dist/src/toolbar/widgets/InsertImageWidget.d.ts +0 -19
  194. package/dist/src/toolbar/widgets/InsertImageWidget.js +0 -170
  195. package/dist/src/toolbar/widgets/OverflowWidget.d.ts +0 -25
  196. package/dist/src/toolbar/widgets/OverflowWidget.js +0 -71
  197. package/dist/src/toolbar/widgets/PenToolWidget.d.ts +0 -27
  198. package/dist/src/toolbar/widgets/PenToolWidget.js +0 -220
  199. package/dist/src/toolbar/widgets/SelectionToolWidget.d.ts +0 -13
  200. package/dist/src/toolbar/widgets/SelectionToolWidget.js +0 -147
  201. package/dist/src/toolbar/widgets/TextToolWidget.d.ts +0 -16
  202. package/dist/src/toolbar/widgets/TextToolWidget.js +0 -109
  203. package/dist/src/toolbar/widgets/lib.d.ts +0 -10
  204. package/dist/src/toolbar/widgets/lib.js +0 -10
  205. package/dist/src/tools/BaseTool.d.ts +0 -22
  206. package/dist/src/tools/BaseTool.js +0 -63
  207. package/dist/src/tools/Eraser.d.ts +0 -23
  208. package/dist/src/tools/Eraser.js +0 -106
  209. package/dist/src/tools/FindTool.d.ts +0 -21
  210. package/dist/src/tools/FindTool.js +0 -114
  211. package/dist/src/tools/PanZoom.d.ts +0 -52
  212. package/dist/src/tools/PanZoom.js +0 -414
  213. package/dist/src/tools/PasteHandler.d.ts +0 -23
  214. package/dist/src/tools/PasteHandler.js +0 -93
  215. package/dist/src/tools/Pen.d.ts +0 -39
  216. package/dist/src/tools/Pen.js +0 -173
  217. package/dist/src/tools/PipetteTool.d.ts +0 -18
  218. package/dist/src/tools/PipetteTool.js +0 -39
  219. package/dist/src/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -8
  220. package/dist/src/tools/SelectionTool/SelectAllShortcutHandler.js +0 -22
  221. package/dist/src/tools/SelectionTool/Selection.d.ts +0 -64
  222. package/dist/src/tools/SelectionTool/Selection.js +0 -459
  223. package/dist/src/tools/SelectionTool/SelectionHandle.d.ts +0 -38
  224. package/dist/src/tools/SelectionTool/SelectionHandle.js +0 -81
  225. package/dist/src/tools/SelectionTool/SelectionTool.d.ts +0 -36
  226. package/dist/src/tools/SelectionTool/SelectionTool.js +0 -398
  227. package/dist/src/tools/SelectionTool/TransformMode.d.ts +0 -34
  228. package/dist/src/tools/SelectionTool/TransformMode.js +0 -98
  229. package/dist/src/tools/SelectionTool/types.d.ts +0 -9
  230. package/dist/src/tools/SelectionTool/types.js +0 -11
  231. package/dist/src/tools/TextTool.d.ts +0 -33
  232. package/dist/src/tools/TextTool.js +0 -256
  233. package/dist/src/tools/ToolController.d.ts +0 -18
  234. package/dist/src/tools/ToolController.js +0 -158
  235. package/dist/src/tools/ToolEnabledGroup.d.ts +0 -6
  236. package/dist/src/tools/ToolEnabledGroup.js +0 -11
  237. package/dist/src/tools/ToolSwitcherShortcut.d.ts +0 -16
  238. package/dist/src/tools/ToolSwitcherShortcut.js +0 -32
  239. package/dist/src/tools/ToolbarShortcutHandler.d.ts +0 -12
  240. package/dist/src/tools/ToolbarShortcutHandler.js +0 -23
  241. package/dist/src/tools/UndoRedoShortcut.d.ts +0 -8
  242. package/dist/src/tools/UndoRedoShortcut.js +0 -22
  243. package/dist/src/tools/lib.d.ts +0 -16
  244. package/dist/src/tools/lib.js +0 -16
  245. package/dist/src/tools/localization.d.ts +0 -28
  246. package/dist/src/tools/localization.js +0 -27
  247. package/dist/src/types.d.ts +0 -151
  248. package/dist/src/types.js +0 -35
  249. package/dist/src/util/assertions.d.ts +0 -23
  250. package/dist/src/util/assertions.js +0 -45
  251. package/dist/src/util/fileToBase64.d.ts +0 -3
  252. package/dist/src/util/fileToBase64.js +0 -13
  253. package/dist/src/util/untilNextAnimationFrame.d.ts +0 -3
  254. package/dist/src/util/untilNextAnimationFrame.js +0 -7
  255. package/dist/src/util/waitForTimeout.d.ts +0 -2
  256. package/dist/src/util/waitForTimeout.js +0 -7
  257. package/src/Color4.test.ts +0 -40
  258. package/src/Color4.ts +0 -234
  259. package/src/Editor.css +0 -86
  260. package/src/Editor.loadFrom.test.ts +0 -24
  261. package/src/Editor.toSVG.test.ts +0 -111
  262. package/src/Editor.ts +0 -1122
  263. package/src/EditorImage.test.ts +0 -120
  264. package/src/EditorImage.ts +0 -603
  265. package/src/EventDispatcher.test.ts +0 -123
  266. package/src/EventDispatcher.ts +0 -71
  267. package/src/Pointer.ts +0 -127
  268. package/src/SVGLoader.test.ts +0 -114
  269. package/src/SVGLoader.ts +0 -511
  270. package/src/UndoRedoHistory.test.ts +0 -33
  271. package/src/UndoRedoHistory.ts +0 -102
  272. package/src/Viewport.ts +0 -319
  273. package/src/bundle/bundled.ts +0 -7
  274. package/src/commands/Command.ts +0 -45
  275. package/src/commands/Duplicate.ts +0 -48
  276. package/src/commands/Erase.ts +0 -74
  277. package/src/commands/SerializableCommand.ts +0 -49
  278. package/src/commands/UnresolvedCommand.ts +0 -37
  279. package/src/commands/invertCommand.ts +0 -51
  280. package/src/commands/lib.ts +0 -16
  281. package/src/commands/localization.ts +0 -47
  282. package/src/commands/uniteCommands.test.ts +0 -23
  283. package/src/commands/uniteCommands.ts +0 -135
  284. package/src/components/AbstractComponent.transformBy.test.ts +0 -22
  285. package/src/components/AbstractComponent.ts +0 -364
  286. package/src/components/ImageBackground.test.ts +0 -35
  287. package/src/components/ImageBackground.ts +0 -176
  288. package/src/components/ImageComponent.ts +0 -171
  289. package/src/components/RestylableComponent.ts +0 -142
  290. package/src/components/SVGGlobalAttributesObject.ts +0 -81
  291. package/src/components/Stroke.test.ts +0 -139
  292. package/src/components/Stroke.ts +0 -245
  293. package/src/components/TextComponent.test.ts +0 -99
  294. package/src/components/TextComponent.ts +0 -315
  295. package/src/components/UnknownSVGObject.test.ts +0 -10
  296. package/src/components/UnknownSVGObject.ts +0 -60
  297. package/src/components/builders/ArrowBuilder.ts +0 -107
  298. package/src/components/builders/FreehandLineBuilder.ts +0 -212
  299. package/src/components/builders/LineBuilder.ts +0 -77
  300. package/src/components/builders/PressureSensitiveFreehandLineBuilder.ts +0 -454
  301. package/src/components/builders/RectangleBuilder.ts +0 -74
  302. package/src/components/builders/types.ts +0 -15
  303. package/src/components/lib.ts +0 -25
  304. package/src/components/localization.ts +0 -22
  305. package/src/components/util/StrokeSmoother.ts +0 -293
  306. package/src/components/util/describeComponentList.ts +0 -18
  307. package/src/lib.ts +0 -37
  308. package/src/localization.ts +0 -34
  309. package/src/localizations/de.ts +0 -98
  310. package/src/localizations/en.ts +0 -8
  311. package/src/localizations/es.ts +0 -74
  312. package/src/localizations/getLocalizationTable.test.ts +0 -27
  313. package/src/localizations/getLocalizationTable.ts +0 -55
  314. package/src/math/LineSegment2.test.ts +0 -99
  315. package/src/math/LineSegment2.ts +0 -160
  316. package/src/math/Mat33.test.ts +0 -244
  317. package/src/math/Mat33.ts +0 -437
  318. package/src/math/Path.fromString.test.ts +0 -223
  319. package/src/math/Path.test.ts +0 -198
  320. package/src/math/Path.toString.test.ts +0 -77
  321. package/src/math/Path.ts +0 -790
  322. package/src/math/Rect2.test.ts +0 -204
  323. package/src/math/Rect2.ts +0 -315
  324. package/src/math/Triangle.ts +0 -29
  325. package/src/math/Vec2.test.ts +0 -30
  326. package/src/math/Vec2.ts +0 -18
  327. package/src/math/Vec3.test.ts +0 -44
  328. package/src/math/Vec3.ts +0 -218
  329. package/src/math/lib.ts +0 -15
  330. package/src/math/rounding.test.ts +0 -65
  331. package/src/math/rounding.ts +0 -156
  332. package/src/rendering/Display.ts +0 -249
  333. package/src/rendering/RenderingStyle.test.ts +0 -68
  334. package/src/rendering/RenderingStyle.ts +0 -55
  335. package/src/rendering/TextRenderingStyle.ts +0 -45
  336. package/src/rendering/caching/CacheRecord.test.ts +0 -49
  337. package/src/rendering/caching/CacheRecord.ts +0 -77
  338. package/src/rendering/caching/CacheRecordManager.ts +0 -71
  339. package/src/rendering/caching/RenderingCache.test.ts +0 -44
  340. package/src/rendering/caching/RenderingCache.ts +0 -66
  341. package/src/rendering/caching/RenderingCacheNode.ts +0 -405
  342. package/src/rendering/caching/testUtils.ts +0 -35
  343. package/src/rendering/caching/types.ts +0 -34
  344. package/src/rendering/lib.ts +0 -6
  345. package/src/rendering/localization.ts +0 -20
  346. package/src/rendering/renderers/AbstractRenderer.ts +0 -222
  347. package/src/rendering/renderers/CanvasRenderer.ts +0 -296
  348. package/src/rendering/renderers/DummyRenderer.test.ts +0 -42
  349. package/src/rendering/renderers/DummyRenderer.ts +0 -136
  350. package/src/rendering/renderers/SVGRenderer.ts +0 -354
  351. package/src/rendering/renderers/TextOnlyRenderer.ts +0 -70
  352. package/src/styles.js +0 -7
  353. package/src/testing/beforeEachFile.ts +0 -8
  354. package/src/testing/createEditor.ts +0 -11
  355. package/src/testing/global.d.ts +0 -17
  356. package/src/testing/lib.ts +0 -3
  357. package/src/testing/loadExpectExtensions.ts +0 -25
  358. package/src/testing/sendPenEvent.ts +0 -31
  359. package/src/testing/sendTouchEvent.ts +0 -78
  360. package/src/toolbar/HTMLToolbar.ts +0 -492
  361. package/src/toolbar/IconProvider.ts +0 -736
  362. package/src/toolbar/lib.ts +0 -4
  363. package/src/toolbar/localization.ts +0 -106
  364. package/src/toolbar/makeColorInput.ts +0 -145
  365. package/src/toolbar/toolbar.css +0 -213
  366. package/src/toolbar/types.ts +0 -5
  367. package/src/toolbar/widgets/ActionButtonWidget.ts +0 -39
  368. package/src/toolbar/widgets/BaseToolWidget.ts +0 -56
  369. package/src/toolbar/widgets/BaseWidget.ts +0 -377
  370. package/src/toolbar/widgets/DocumentPropertiesWidget.ts +0 -167
  371. package/src/toolbar/widgets/EraserToolWidget.ts +0 -85
  372. package/src/toolbar/widgets/HandToolWidget.ts +0 -250
  373. package/src/toolbar/widgets/InsertImageWidget.css +0 -44
  374. package/src/toolbar/widgets/InsertImageWidget.ts +0 -223
  375. package/src/toolbar/widgets/OverflowWidget.css +0 -27
  376. package/src/toolbar/widgets/OverflowWidget.ts +0 -92
  377. package/src/toolbar/widgets/PenToolWidget.ts +0 -288
  378. package/src/toolbar/widgets/SelectionToolWidget.ts +0 -190
  379. package/src/toolbar/widgets/TextToolWidget.ts +0 -145
  380. package/src/toolbar/widgets/lib.ts +0 -13
  381. package/src/tools/BaseTool.ts +0 -76
  382. package/src/tools/Eraser.test.ts +0 -103
  383. package/src/tools/Eraser.ts +0 -139
  384. package/src/tools/FindTool.css +0 -7
  385. package/src/tools/FindTool.ts +0 -152
  386. package/src/tools/PanZoom.test.ts +0 -310
  387. package/src/tools/PanZoom.ts +0 -520
  388. package/src/tools/PasteHandler.ts +0 -95
  389. package/src/tools/Pen.test.ts +0 -194
  390. package/src/tools/Pen.ts +0 -226
  391. package/src/tools/PipetteTool.ts +0 -55
  392. package/src/tools/SelectionTool/SelectAllShortcutHandler.ts +0 -28
  393. package/src/tools/SelectionTool/Selection.ts +0 -607
  394. package/src/tools/SelectionTool/SelectionHandle.ts +0 -108
  395. package/src/tools/SelectionTool/SelectionTool.css +0 -23
  396. package/src/tools/SelectionTool/SelectionTool.test.ts +0 -261
  397. package/src/tools/SelectionTool/SelectionTool.ts +0 -480
  398. package/src/tools/SelectionTool/TransformMode.ts +0 -114
  399. package/src/tools/SelectionTool/types.ts +0 -11
  400. package/src/tools/TextTool.ts +0 -326
  401. package/src/tools/ToolController.ts +0 -178
  402. package/src/tools/ToolEnabledGroup.ts +0 -14
  403. package/src/tools/ToolSwitcherShortcut.ts +0 -39
  404. package/src/tools/ToolbarShortcutHandler.ts +0 -34
  405. package/src/tools/UndoRedoShortcut.test.ts +0 -56
  406. package/src/tools/UndoRedoShortcut.ts +0 -25
  407. package/src/tools/lib.ts +0 -21
  408. package/src/tools/localization.ts +0 -66
  409. package/src/types.ts +0 -234
  410. package/src/util/assertions.ts +0 -55
  411. package/src/util/fileToBase64.ts +0 -18
  412. package/src/util/untilNextAnimationFrame.ts +0 -9
  413. package/src/util/waitForTimeout.ts +0 -9
@@ -1,123 +0,0 @@
1
- import EventDispatcher from './EventDispatcher';
2
-
3
- enum TestKey {
4
- FooEvent,
5
- BarEvent,
6
- BazEvent,
7
- }
8
-
9
- describe('EventDispatcher', () => {
10
- it('should trigger after adding a listener', () => {
11
- const dispatcher = new EventDispatcher<TestKey, void>();
12
- let calledCount = 0;
13
- dispatcher.on(TestKey.FooEvent, () => {
14
- calledCount ++;
15
- });
16
-
17
- expect(calledCount).toBe(0);
18
- dispatcher.dispatch(TestKey.FooEvent);
19
- expect(calledCount).toBe(1);
20
- });
21
-
22
- it('should not trigger after removing a listener', () => {
23
- const dispatcher = new EventDispatcher<TestKey, void>();
24
- let calledCount = 0;
25
- const handle = dispatcher.on(TestKey.FooEvent, () => {
26
- calledCount ++;
27
- });
28
-
29
- handle.remove();
30
-
31
- expect(calledCount).toBe(0);
32
- dispatcher.dispatch(TestKey.FooEvent);
33
- expect(calledCount).toBe(0);
34
- });
35
-
36
- it('adding and removing listeners should not affect other listeners', () => {
37
- const dispatcher = new EventDispatcher<TestKey, void>();
38
-
39
- let fooCount = 0;
40
- const fooListener = dispatcher.on(TestKey.FooEvent, () => {
41
- fooCount ++;
42
- });
43
-
44
- let barCount = 0;
45
- const barListener1 = dispatcher.on(TestKey.BarEvent, () => {
46
- barCount ++;
47
- });
48
- const barListener2 = dispatcher.on(TestKey.BarEvent, () => {
49
- barCount += 3;
50
- });
51
- const barListener3 = dispatcher.on(TestKey.BarEvent, () => {
52
- barCount += 2;
53
- });
54
-
55
- dispatcher.dispatch(TestKey.BarEvent);
56
- expect(barCount).toBe(6);
57
-
58
- dispatcher.dispatch(TestKey.FooEvent);
59
- expect(barCount).toBe(6);
60
- expect(fooCount).toBe(1);
61
-
62
- fooListener.remove();
63
- barListener2.remove();
64
-
65
- // barListener2 shouldn't be fired
66
- dispatcher.dispatch(TestKey.BarEvent);
67
- expect(barCount).toBe(9);
68
-
69
- // The BazEvent shouldn't change fooCount or barCount
70
- dispatcher.dispatch(TestKey.BazEvent);
71
- expect(barCount).toBe(9);
72
- expect(fooCount).toBe(1);
73
-
74
- // Removing a listener for the first time should return true (it removed the listener)
75
- // and false all subsequent times
76
- expect(barListener1.remove()).toBe(true);
77
- expect(barListener1.remove()).toBe(false);
78
- expect(barListener3.remove()).toBe(true);
79
- });
80
-
81
- it('should fire all un-removed listeners if removing a listener in a listener', () => {
82
- const dispatcher = new EventDispatcher<TestKey, void>();
83
-
84
- let count = 0;
85
- const barListener = () => {
86
- };
87
- const bazListener = () => {
88
- count += 5;
89
- };
90
- const fooListener = () => {
91
- count ++;
92
- dispatcher.off(TestKey.FooEvent, barListener);
93
- };
94
- dispatcher.on(TestKey.FooEvent, barListener);
95
- dispatcher.on(TestKey.FooEvent, fooListener);
96
- dispatcher.on(TestKey.FooEvent, bazListener);
97
-
98
- // Removing a listener shouldn't cause other listeners to be skipped
99
- dispatcher.dispatch(TestKey.FooEvent);
100
-
101
- expect(count).toBe(6);
102
- });
103
-
104
- it('should send correct data associated with events', () => {
105
- const dispatcher = new EventDispatcher<TestKey, string>();
106
-
107
- let lastResult = '';
108
- const resultListener = (result: string) => {
109
- lastResult = result;
110
- };
111
-
112
- dispatcher.on(TestKey.BarEvent, resultListener);
113
-
114
- dispatcher.dispatch(TestKey.BazEvent, 'Testing...');
115
- expect(lastResult).toBe('');
116
-
117
- dispatcher.dispatch(TestKey.BarEvent, 'Test.');
118
- dispatcher.off(TestKey.BarEvent, resultListener);
119
-
120
- dispatcher.dispatch(TestKey.BarEvent, 'Testing.');
121
- expect(lastResult).toBe('Test.');
122
- });
123
- });
@@ -1,71 +0,0 @@
1
- /**
2
- * Handles notifying listeners of events.
3
- *
4
- * `EventKeyType` is used to distinguish events (e.g. a `ClickEvent` vs a `TouchEvent`)
5
- * while `EventMessageType` is the type of the data sent with an event (can be `void`).
6
- *
7
- * @example
8
- * ```
9
- * const dispatcher = new EventDispatcher<'event1'|'event2'|'event3', void>();
10
- * dispatcher.on('event1', () => {
11
- * console.log('Event 1 triggered.');
12
- * });
13
- * dispatcher.dispatch('event1');
14
- * ```
15
- *
16
- * @packageDocumentation
17
- */
18
-
19
- // Code shared with Joplin (js-draw was originally intended to be part of Joplin).
20
-
21
- type Listener<Value> = (data: Value)=> void;
22
- type CallbackHandler<EventType> = (data: EventType)=> void;
23
- export interface DispatcherEventListener {
24
- remove: ()=>void;
25
- }
26
-
27
- // { @inheritDoc EventDispatcher! }
28
- export default class EventDispatcher<EventKeyType extends string|symbol|number, EventMessageType> {
29
- private listeners: Partial<Record<EventKeyType, Array<Listener<EventMessageType>>>>;
30
- public constructor() {
31
- this.listeners = {};
32
- }
33
-
34
- public dispatch(eventName: EventKeyType, event: EventMessageType) {
35
- const listenerList = this.listeners[eventName];
36
-
37
- if (listenerList) {
38
- for (let i = 0; i < listenerList.length; i++) {
39
- listenerList[i](event);
40
- }
41
- }
42
- }
43
-
44
- public on(eventName: EventKeyType, callback: CallbackHandler<EventMessageType>): DispatcherEventListener {
45
- if (!this.listeners[eventName]) this.listeners[eventName] = [];
46
- this.listeners[eventName]!.push(callback);
47
-
48
- return {
49
- // Retuns false if the listener has already been removed, true otherwise.
50
- remove: (): boolean => {
51
- const originalListeners = this.listeners[eventName]!;
52
- this.off(eventName, callback);
53
-
54
- return originalListeners.length !== this.listeners[eventName]!.length;
55
- },
56
- };
57
- }
58
-
59
- /** Removes an event listener. This is equivalent to calling `.remove()` on the object returned by `.on`. */
60
- public off(eventName: EventKeyType, callback: CallbackHandler<EventMessageType>) {
61
- const listeners = this.listeners[eventName];
62
- if (!listeners) return;
63
-
64
- // Replace the current list of listeners with a new, shortened list.
65
- // This allows any iterators over this.listeners to continue iterating
66
- // without skipping elements.
67
- this.listeners[eventName] = listeners.filter(
68
- otherCallback => otherCallback !== callback
69
- );
70
- }
71
- }
package/src/Pointer.ts DELETED
@@ -1,127 +0,0 @@
1
- import { Point2, Vec2 } from './math/Vec2';
2
- import Viewport from './Viewport';
3
-
4
- export enum PointerDevice {
5
- Pen,
6
- Eraser,
7
- Touch,
8
- PrimaryButtonMouse,
9
- RightButtonMouse,
10
- Other,
11
- }
12
-
13
- // Provides a snapshot containing information about a pointer. A Pointer
14
- // object is immutable — it will not be updated when the pointer's information changes.
15
- export default class Pointer {
16
- private constructor(
17
- // The (x, y) position of the pointer relative to the top-left corner
18
- // of the visible canvas.
19
- public readonly screenPos: Point2,
20
-
21
- // Position of the pointer relative to the top left corner of the drawing
22
- // surface.
23
- public readonly canvasPos: Point2,
24
-
25
- public readonly pressure: number|null,
26
- public readonly isPrimary: boolean,
27
- public readonly down: boolean,
28
-
29
- public readonly device: PointerDevice,
30
-
31
- // Unique ID for the pointer
32
- public readonly id: number,
33
-
34
- // Numeric timestamp (milliseconds, as from `(new Date).getTime()`)
35
- public readonly timeStamp: number,
36
- ) {
37
- }
38
-
39
- // Snaps this pointer to the nearest grid point (rounds the coordinates of this
40
- // pointer based on the current zoom). Returns a new Pointer and does not modify
41
- // this.
42
- public snappedToGrid(viewport: Viewport): Pointer {
43
- const snappedCanvasPos = viewport.snapToGrid(this.canvasPos);
44
- const snappedScreenPos = viewport.canvasToScreen(snappedCanvasPos);
45
-
46
- return new Pointer(
47
- snappedScreenPos,
48
- snappedCanvasPos,
49
- this.pressure,
50
- this.isPrimary,
51
- this.down,
52
- this.device,
53
- this.id,
54
- this.timeStamp,
55
- );
56
- }
57
-
58
- // Creates a Pointer from a DOM event. If `relativeTo` is given, (0, 0) in screen coordinates is
59
- // considered the top left of `relativeTo`.
60
- public static ofEvent(evt: PointerEvent, isDown: boolean, viewport: Viewport, relativeTo?: HTMLElement): Pointer {
61
- let screenPos = Vec2.of(evt.clientX, evt.clientY);
62
- if (relativeTo) {
63
- const bbox = relativeTo.getBoundingClientRect();
64
- screenPos = screenPos.minus(Vec2.of(bbox.left, bbox.top));
65
- }
66
-
67
- const pointerTypeToDevice: Record<string, PointerDevice> = {
68
- 'mouse': PointerDevice.PrimaryButtonMouse,
69
- 'pen': PointerDevice.Pen,
70
- 'touch': PointerDevice.Touch,
71
- };
72
-
73
- let device = pointerTypeToDevice[evt.pointerType] ?? PointerDevice.Other;
74
- const eraserButtonMask = 0x20;
75
- if (device === PointerDevice.Pen && (evt.buttons & eraserButtonMask) !== 0) {
76
- device = PointerDevice.Eraser;
77
- }
78
-
79
- const timeStamp = (new Date()).getTime();
80
- const canvasPos = viewport.roundPoint(viewport.screenToCanvas(screenPos));
81
-
82
- if (device === PointerDevice.PrimaryButtonMouse) {
83
- if (evt.buttons & 0x2) {
84
- device = PointerDevice.RightButtonMouse;
85
- } else if (!(evt.buttons & 0x1)) {
86
- device = PointerDevice.Other;
87
- }
88
- }
89
-
90
- return new Pointer(
91
- screenPos,
92
- canvasPos,
93
- evt.pressure ?? null,
94
- evt.isPrimary,
95
- isDown,
96
- device,
97
- evt.pointerId,
98
- timeStamp,
99
- );
100
- }
101
-
102
- // Create a new Pointer from a point on the canvas.
103
- // Intended for unit tests.
104
- public static ofCanvasPoint(
105
- canvasPos: Point2,
106
- isDown: boolean,
107
- viewport: Viewport,
108
- id: number = 0,
109
- device: PointerDevice = PointerDevice.Pen,
110
- isPrimary: boolean = true,
111
- pressure: number|null = null
112
- ): Pointer {
113
- const screenPos = viewport.canvasToScreen(canvasPos);
114
- const timeStamp = (new Date()).getTime();
115
-
116
- return new Pointer(
117
- screenPos,
118
- canvasPos,
119
- pressure,
120
- isPrimary,
121
- isDown,
122
- device,
123
- id,
124
- timeStamp
125
- );
126
- }
127
- }
@@ -1,114 +0,0 @@
1
- import { Rect2, TextComponent, Vec2 } from './lib';
2
- import SVGLoader from './SVGLoader';
3
- import createEditor from './testing/createEditor';
4
-
5
- describe('SVGLoader', () => {
6
- it('should correctly load x/y-positioned text nodes', async () => {
7
- const editor = createEditor();
8
- await editor.loadFrom(SVGLoader.fromString(`
9
- <svg>
10
- <text>Testing...</text>
11
- <text y=100>Test 2...</text>
12
- <text x=100>Test 3...</text>
13
- <text x=100 y=100>Test 3...</text>
14
-
15
- <!-- Transform matrix: translate by (100,0) -->
16
- <text style='transform: matrix(1,0,0,1,100,0);'>Test 3...</text>
17
- </svg>
18
- `, true));
19
- const elems = editor.image
20
- .getElementsIntersectingRegion(new Rect2(-1000, -1000, 10000, 10000))
21
- .filter(elem => elem instanceof TextComponent);
22
- expect(elems).toHaveLength(5);
23
- const topLefts = elems.map(elem => elem.getBBox().topLeft);
24
-
25
- // Top-left of Testing... should be (0, 0) ± 10 pixels (objects are aligned based on baseline)
26
- expect(topLefts[0]).objEq(Vec2.of(0, 0), 10);
27
-
28
- expect(topLefts[1].y - topLefts[0].y).toBe(100);
29
- expect(topLefts[1].x - topLefts[0].x).toBe(0);
30
-
31
- expect(topLefts[2].y - topLefts[0].y).toBe(0);
32
- expect(topLefts[2].x - topLefts[0].x).toBe(100);
33
-
34
- expect(topLefts[4].x - topLefts[0].x).toBe(100);
35
- expect(topLefts[4].y - topLefts[0].y).toBe(0);
36
- });
37
-
38
- it('should correctly load tspans within texts nodes', async () => {
39
- const editor = createEditor();
40
- await editor.loadFrom(SVGLoader.fromString(`
41
- <svg>
42
- <text>
43
- Testing...
44
- <tspan x=0 y=100>Test 2...</tspan>
45
- <tspan x=0 y=200>Test 2...</tspan>
46
- </text>
47
- </svg>
48
- `, true));
49
- const elem = editor.image
50
- .getElementsIntersectingRegion(new Rect2(-1000, -1000, 10000, 10000))
51
- .filter(elem => elem instanceof TextComponent)[0];
52
- expect(elem).not.toBeNull();
53
- expect(elem.getBBox().topLeft.y).toBeLessThan(0);
54
- expect(elem.getBBox().topLeft.x).toBe(0);
55
- expect(elem.getBBox().h).toBeGreaterThan(200);
56
- });
57
-
58
- it('tspans without specified font-sizes should inherit their font size from their parent element', async () => {
59
- const editor = createEditor();
60
- await editor.loadFrom(SVGLoader.fromString(`
61
- <svg>
62
- <text style='font-size: 22px;'>
63
- Testing...
64
- <tspan>Test 2...</tspan>
65
- <tspan>Test 3...</tspan>
66
- <tspan style='font-size: 3px;'>Test 4...</tspan>
67
- </text>
68
- </svg>
69
- `, true));
70
- const elem = editor.image
71
- .getAllElements()
72
- .filter(elem => elem instanceof TextComponent)[0] as TextComponent;
73
- expect(elem).not.toBeNull();
74
-
75
- // Ensure each child object has the correct size
76
- expect(elem.serialize().data).toMatchObject({
77
- 'textObjects': [
78
- { },
79
- {
80
- 'json':
81
- {
82
- 'textObjects': [{ 'text': 'Test 2...' }],
83
- 'style': {
84
- 'size': 22,
85
- }
86
- }
87
- },
88
- { },
89
- {
90
- 'json': {
91
- 'textObjects': [{ 'text': 'Test 3...' }],
92
- 'style': {
93
- 'size': 22
94
- }
95
- }
96
- },
97
- { },
98
- {
99
- 'json': {
100
- 'textObjects': [{ 'text': 'Test 4...' }],
101
- 'style': {
102
- 'size': 3,
103
- }
104
- }
105
- },
106
- { }
107
- ],
108
-
109
- 'style': {
110
- 'size': 22,
111
- }
112
- });
113
- });
114
- });