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,76 +0,0 @@
1
- import { PointerEvtListener, WheelEvt, PointerEvt, EditorNotifier, EditorEventType, KeyPressEvent, KeyUpEvent, PasteEvent, CopyEvent } from '../types';
2
- import ToolEnabledGroup from './ToolEnabledGroup';
3
-
4
- export default abstract class BaseTool implements PointerEvtListener {
5
- private enabled: boolean = true;
6
- private group: ToolEnabledGroup|null = null;
7
-
8
- public onPointerDown(_event: PointerEvt): boolean { return false; }
9
- public onPointerMove(_event: PointerEvt) { }
10
- public onPointerUp(_event: PointerEvt) { }
11
- public onGestureCancel() { }
12
-
13
- protected constructor(private notifier: EditorNotifier, public readonly description: string) {
14
- }
15
-
16
- public onWheel(_event: WheelEvt): boolean {
17
- return false;
18
- }
19
-
20
- public onCopy(_event: CopyEvent): boolean {
21
- return false;
22
- }
23
-
24
- public onPaste(_event: PasteEvent): boolean {
25
- return false;
26
- }
27
-
28
- public onKeyPress(_event: KeyPressEvent): boolean {
29
- return false;
30
- }
31
-
32
- public onKeyUp(_event: KeyUpEvent): boolean {
33
- return false;
34
- }
35
-
36
- public setEnabled(enabled: boolean) {
37
- this.enabled = enabled;
38
-
39
- // Ensure that at most one tool in the group is enabled.
40
- if (enabled) {
41
- this.group?.notifyEnabled(this);
42
- this.notifier.dispatch(EditorEventType.ToolEnabled, {
43
- kind: EditorEventType.ToolEnabled,
44
- tool: this,
45
- });
46
- } else {
47
- this.notifier.dispatch(EditorEventType.ToolDisabled, {
48
- kind: EditorEventType.ToolDisabled,
49
- tool: this,
50
- });
51
- }
52
- }
53
-
54
- public isEnabled(): boolean {
55
- return this.enabled;
56
- }
57
-
58
- // Connect this tool to a set of other tools, ensuring that at most one
59
- // of the tools in the group is enabled.
60
- public setToolGroup(group: ToolEnabledGroup) {
61
- if (this.isEnabled()) {
62
- group.notifyEnabled(this);
63
- }
64
-
65
- this.group = group;
66
- }
67
-
68
- public getToolGroup(): ToolEnabledGroup|null {
69
- if (this.group) {
70
- return this.group;
71
- }
72
-
73
- return null;
74
- }
75
- }
76
-
@@ -1,103 +0,0 @@
1
- import UnknownSVGObject from '../components/UnknownSVGObject';
2
- import Editor from '../Editor';
3
- import { EditorImage, Rect2, StrokeComponent } from '../lib';
4
- import { Vec2 } from '../math/Vec2';
5
- import createEditor from '../testing/createEditor';
6
- import sendPenEvent from '../testing/sendPenEvent';
7
- import { InputEvtType } from '../types';
8
- import Eraser from './Eraser';
9
-
10
- const selectEraser = (editor: Editor) => {
11
- const tools = editor.toolController;
12
- const eraser = tools.getMatchingTools(Eraser)[0];
13
- eraser.setEnabled(true);
14
-
15
- return eraser;
16
- };
17
-
18
- const getAllStrokes = (editor: Editor) => {
19
- return editor.image.getAllElements().filter(elem => elem instanceof StrokeComponent);
20
- };
21
-
22
- describe('Eraser', () => {
23
- it('should erase object between locations of events', () => {
24
- const editor = createEditor();
25
-
26
- // Draw a line
27
- sendPenEvent(editor, InputEvtType.PointerDownEvt, Vec2.of(0, 0));
28
- jest.advanceTimersByTime(100);
29
- sendPenEvent(editor, InputEvtType.PointerUpEvt, Vec2.of(200, 200));
30
-
31
- // Should have drawn a line
32
- const strokes = getAllStrokes(editor);
33
- expect(strokes).toHaveLength(1);
34
- expect(strokes[0].getBBox().area).toBeGreaterThanOrEqual(200 * 200);
35
-
36
- selectEraser(editor);
37
-
38
- // Erase the line.
39
- sendPenEvent(editor, InputEvtType.PointerDownEvt, Vec2.of(200, 0));
40
- jest.advanceTimersByTime(400);
41
- sendPenEvent(editor, InputEvtType.PointerUpEvt, Vec2.of(0, 200));
42
-
43
- // Should have erased the line
44
- expect(getAllStrokes(editor)).toHaveLength(0);
45
- });
46
-
47
- it('should erase objects within eraser.thickness of an event when not zoomed', async () => {
48
- const editor = createEditor();
49
-
50
- await editor.loadFromSVG(`
51
- <svg>
52
- <path d='m0,0 l2,0 l0,2 l-2,0 z' fill="#ff0000"/>
53
- <path d='m50,50 l2,0 l0,2 l-2,0 z' fill="#ff0000"/>
54
- </svg>
55
- `, true);
56
-
57
- editor.viewport.resetTransform();
58
-
59
- const allStrokes = getAllStrokes(editor);
60
- expect(allStrokes).toHaveLength(2);
61
- expect(allStrokes[0].getBBox()).objEq(new Rect2(0, 0, 2, 2));
62
- expect(allStrokes[1].getBBox()).objEq(new Rect2(50, 50, 2, 2));
63
-
64
- const eraser = selectEraser(editor);
65
- eraser.setThickness(10);
66
-
67
- // Erase the first stroke
68
- sendPenEvent(editor, InputEvtType.PointerDownEvt, Vec2.of(3, 0));
69
- jest.advanceTimersByTime(100);
70
- sendPenEvent(editor, InputEvtType.PointerUpEvt, Vec2.of(3, 0));
71
-
72
- expect(getAllStrokes(editor)).toHaveLength(1);
73
-
74
- // Erase the remaining stroke
75
- sendPenEvent(editor, InputEvtType.PointerDownEvt, Vec2.of(47, 47));
76
- jest.advanceTimersByTime(100);
77
- sendPenEvent(editor, InputEvtType.PointerUpEvt, Vec2.of(47, 47));
78
-
79
- expect(getAllStrokes(editor)).toHaveLength(0);
80
- });
81
-
82
- it('should not erase unselectable objects', () => {
83
- const editor = createEditor();
84
- const unerasableObj = new UnknownSVGObject(document.createElementNS('http://www.w3.org/2000/svg', 'arc'));
85
-
86
- // Add to the image
87
- expect(editor.image.getAllElements()).toHaveLength(0);
88
- editor.dispatch(EditorImage.addElement(unerasableObj));
89
- expect(editor.image.getAllElements()).toHaveLength(1);
90
-
91
-
92
- const eraser = selectEraser(editor);
93
- eraser.setThickness(100);
94
-
95
- // Try to erase it.
96
- sendPenEvent(editor, InputEvtType.PointerDownEvt, Vec2.of(0, 0));
97
- jest.advanceTimersByTime(100);
98
- sendPenEvent(editor, InputEvtType.PointerUpEvt, Vec2.of(3, 0));
99
-
100
- // Should not have been erased
101
- expect(editor.image.getAllElements()).toHaveLength(1);
102
- });
103
- });
@@ -1,139 +0,0 @@
1
- import { EditorEventType, PointerEvt } from '../types';
2
- import BaseTool from './BaseTool';
3
- import Editor from '../Editor';
4
- import { Point2, Vec2 } from '../math/Vec2';
5
- import LineSegment2 from '../math/LineSegment2';
6
- import Erase from '../commands/Erase';
7
- import AbstractComponent from '../components/AbstractComponent';
8
- import { PointerDevice } from '../Pointer';
9
- import Color4 from '../Color4';
10
- import Rect2 from '../math/Rect2';
11
- import RenderingStyle from '../rendering/RenderingStyle';
12
-
13
- export default class Eraser extends BaseTool {
14
- private lastPoint: Point2|null = null;
15
- private isFirstEraseEvt: boolean = true;
16
- private toRemove: AbstractComponent[];
17
- private thickness: number = 10;
18
-
19
- // Commands that each remove one element
20
- private partialCommands: Erase[] = [];
21
-
22
- public constructor(private editor: Editor, description: string) {
23
- super(editor.notifier, description);
24
- }
25
-
26
- private clearPreview() {
27
- this.editor.clearWetInk();
28
- }
29
-
30
- private getSizeOnCanvas() {
31
- return this.thickness / this.editor.viewport.getScaleFactor();
32
- }
33
-
34
- private drawPreviewAt(point: Point2) {
35
- this.clearPreview();
36
-
37
- const size = this.getSizeOnCanvas();
38
-
39
- const renderer = this.editor.display.getWetInkRenderer();
40
- const rect = this.getEraserRect(point);
41
- const fill: RenderingStyle = {
42
- fill: Color4.gray,
43
- };
44
- renderer.drawRect(rect, size / 4, fill);
45
- }
46
-
47
- private getEraserRect(centerPoint: Point2) {
48
- const size = this.getSizeOnCanvas();
49
- const halfSize = Vec2.of(size / 2, size / 2);
50
- return Rect2.fromCorners(centerPoint.minus(halfSize), centerPoint.plus(halfSize));
51
- }
52
-
53
- private eraseTo(currentPoint: Point2) {
54
- if (!this.isFirstEraseEvt && currentPoint.minus(this.lastPoint!).magnitude() === 0) {
55
- return;
56
- }
57
- this.isFirstEraseEvt = false;
58
-
59
- // Currently only objects within eraserRect or that intersect a straight line
60
- // from the center of the current rect to the previous are erased. TODO: Erase
61
- // all objects as if there were pointerMove events between the two points.
62
- const eraserRect = this.getEraserRect(currentPoint);
63
- const line = new LineSegment2(this.lastPoint!, currentPoint);
64
- const region = Rect2.union(line.bbox, eraserRect);
65
-
66
- const intersectingElems = this.editor.image.getElementsIntersectingRegion(region).filter(component => {
67
- return component.intersects(line) || component.intersectsRect(eraserRect);
68
- });
69
-
70
- // Only erase components that could be selected (and thus interacted with)
71
- // by the user.
72
- const toErase = intersectingElems.filter(elem => elem.isSelectable());
73
-
74
- // Remove any intersecting elements.
75
- this.toRemove.push(...toErase);
76
-
77
- // Create new Erase commands for the now-to-be-erased elements and apply them.
78
- const newPartialCommands = toErase.map(elem => new Erase([ elem ]));
79
- newPartialCommands.forEach(cmd => cmd.apply(this.editor));
80
-
81
- this.partialCommands.push(...newPartialCommands);
82
-
83
- this.drawPreviewAt(currentPoint);
84
- this.lastPoint = currentPoint;
85
- }
86
-
87
- public onPointerDown(event: PointerEvt): boolean {
88
- if (event.allPointers.length === 1 || event.current.device === PointerDevice.Eraser) {
89
- this.lastPoint = event.current.canvasPos;
90
- this.toRemove = [];
91
- this.isFirstEraseEvt = true;
92
-
93
- this.drawPreviewAt(event.current.canvasPos);
94
- return true;
95
- }
96
-
97
- return false;
98
- }
99
-
100
- public onPointerMove(event: PointerEvt): void {
101
- const currentPoint = event.current.canvasPos;
102
-
103
- this.eraseTo(currentPoint);
104
- }
105
-
106
- public onPointerUp(event: PointerEvt): void {
107
- this.eraseTo(event.current.canvasPos);
108
-
109
- if (this.toRemove.length > 0) {
110
- // Undo commands for each individual component and unite into a single command.
111
- this.partialCommands.forEach(cmd => cmd.unapply(this.editor));
112
- this.partialCommands = [];
113
-
114
- const command = new Erase(this.toRemove);
115
- this.editor.dispatch(command); // dispatch: Makes undo-able.
116
- }
117
-
118
- this.clearPreview();
119
- }
120
-
121
- public onGestureCancel(): void {
122
- this.partialCommands.forEach(cmd => cmd.unapply(this.editor));
123
- this.partialCommands = [];
124
- this.clearPreview();
125
- }
126
-
127
- public getThickness() {
128
- return this.thickness;
129
- }
130
-
131
- public setThickness(thickness: number) {
132
- this.thickness = thickness;
133
-
134
- this.editor.notifier.dispatch(EditorEventType.ToolUpdated, {
135
- kind: EditorEventType.ToolUpdated,
136
- tool: this,
137
- });
138
- }
139
- }
@@ -1,7 +0,0 @@
1
-
2
- .find-tool-overlay {
3
- /* Show at the bottom of the screen. */
4
- order: -1;
5
-
6
- position: absolute;
7
- }
@@ -1,152 +0,0 @@
1
- // Displays a find dialog that allows the user to search for and focus text.
2
- //
3
- // @packageDocumentation
4
-
5
- import Editor from '../Editor';
6
- import TextComponent from '../components/TextComponent';
7
- import Rect2 from '../math/Rect2';
8
- import { KeyPressEvent } from '../types';
9
- import BaseTool from './BaseTool';
10
-
11
- export const cssPrefix = 'find-tool';
12
-
13
- export default class FindTool extends BaseTool {
14
- private overlay: HTMLElement;
15
- private searchInput: HTMLInputElement;
16
- private currentMatchIdx: number = 0;
17
-
18
- public constructor(private editor: Editor) {
19
- super(editor.notifier, editor.localization.findLabel);
20
-
21
- this.overlay = document.createElement('div');
22
- this.fillOverlay();
23
- editor.createHTMLOverlay(this.overlay);
24
-
25
- this.overlay.style.display = 'none';
26
- this.overlay.classList.add(`${cssPrefix}-overlay`);
27
- }
28
-
29
- private getMatches(searchFor: string): Rect2[] {
30
- searchFor = searchFor.toLocaleLowerCase();
31
- const allTextComponents = this.editor.image.getAllElements()
32
- .filter(
33
- elem => elem instanceof TextComponent
34
- ) as TextComponent[];
35
-
36
- const matches = allTextComponents.filter(
37
- text => text.getText().toLocaleLowerCase().indexOf(searchFor) !== -1
38
- );
39
-
40
- return matches.map(match => match.getBBox());
41
- }
42
-
43
- private focusCurrentMatch() {
44
- const matches = this.getMatches(this.searchInput.value);
45
- let matchIdx = this.currentMatchIdx % matches.length;
46
-
47
- if (matchIdx < 0) {
48
- matchIdx = matches.length + matchIdx;
49
- }
50
-
51
- if (matchIdx < matches.length) {
52
- const undoable = false;
53
- this.editor.dispatch(this.editor.viewport.zoomTo(matches[matchIdx], true, true), undoable);
54
- this.editor.announceForAccessibility(
55
- this.editor.localization.focusedFoundText(matchIdx + 1, matches.length)
56
- );
57
- }
58
- }
59
-
60
- private toNextMatch() {
61
- this.currentMatchIdx ++;
62
- this.focusCurrentMatch();
63
- }
64
-
65
- private toPrevMatch() {
66
- this.currentMatchIdx --;
67
- this.focusCurrentMatch();
68
- }
69
-
70
- private fillOverlay() {
71
- const label = document.createElement('label');
72
- this.searchInput = document.createElement('input');
73
- const nextBtn = document.createElement('button');
74
- const closeBtn = document.createElement('button');
75
-
76
- // Math.random() ensures that the ID is unique (to allow us to refer to it
77
- // with an htmlFor).
78
- this.searchInput.setAttribute('id', `${cssPrefix}-searchInput-${Math.random()}`);
79
- label.htmlFor = this.searchInput.getAttribute('id')!;
80
-
81
- label.innerText = this.editor.localization.findLabel;
82
- nextBtn.innerText = this.editor.localization.toNextMatch;
83
- closeBtn.innerText = this.editor.localization.closeFindDialog;
84
-
85
- this.searchInput.onkeydown = (ev: KeyboardEvent) => {
86
- if (ev.key === 'Enter') {
87
- if (ev.shiftKey) {
88
- this.toPrevMatch();
89
- } else {
90
- this.toNextMatch();
91
- }
92
- }
93
- else if (ev.key === 'Escape') {
94
- this.setVisible(false);
95
- }
96
- else if (ev.key === 'f' && ev.ctrlKey) {
97
- ev.preventDefault();
98
- this.toggleVisible();
99
- }
100
- };
101
-
102
- nextBtn.onclick = () => {
103
- this.toNextMatch();
104
- };
105
-
106
- closeBtn.onclick = () => {
107
- this.setVisible(false);
108
- };
109
-
110
- this.overlay.replaceChildren(label, this.searchInput, nextBtn, closeBtn);
111
- }
112
-
113
- private isVisible() {
114
- return this.overlay.style.display !== 'none';
115
- }
116
-
117
- private setVisible(visible: boolean) {
118
- if (visible !== this.isVisible()) {
119
- this.overlay.style.display = visible ? 'block' : 'none';
120
-
121
- if (visible) {
122
- this.searchInput.focus();
123
- this.editor.announceForAccessibility(this.editor.localization.findDialogShown);
124
- } else {
125
- this.editor.focus();
126
- this.editor.announceForAccessibility(this.editor.localization.findDialogHidden);
127
- }
128
- }
129
- }
130
-
131
- private toggleVisible() {
132
- this.setVisible(!this.isVisible());
133
- }
134
-
135
- public onKeyPress(event: KeyPressEvent): boolean {
136
- if (event.ctrlKey && event.key === 'f') {
137
- this.toggleVisible();
138
-
139
- return true;
140
- }
141
-
142
- return false;
143
- }
144
-
145
- public setEnabled(enabled: boolean) {
146
- super.setEnabled(enabled);
147
-
148
- if (enabled) {
149
- this.setVisible(false);
150
- }
151
- }
152
- }