js-draw 0.18.1 → 0.19.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 (485) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/bundle.js +2 -2
  3. package/dist/bundledStyles.js +1 -0
  4. package/dist/cjs/src/Color4.d.ts +69 -0
  5. package/dist/cjs/src/Color4.js +264 -0
  6. package/dist/cjs/src/Editor.d.ts +308 -0
  7. package/dist/cjs/src/Editor.js +904 -0
  8. package/dist/cjs/src/EditorImage.d.ts +97 -0
  9. package/dist/cjs/src/EditorImage.js +486 -0
  10. package/dist/cjs/src/EventDispatcher.d.ts +30 -0
  11. package/dist/cjs/src/EventDispatcher.js +57 -0
  12. package/dist/cjs/src/Pointer.d.ts +24 -0
  13. package/dist/cjs/src/Pointer.js +84 -0
  14. package/dist/cjs/src/SVGLoader.d.ts +48 -0
  15. package/dist/cjs/src/SVGLoader.js +475 -0
  16. package/dist/cjs/src/UndoRedoHistory.d.ts +19 -0
  17. package/dist/cjs/src/UndoRedoHistory.js +93 -0
  18. package/dist/cjs/src/Viewport.d.ts +71 -0
  19. package/dist/cjs/src/Viewport.js +264 -0
  20. package/dist/cjs/src/bundle/bundled.d.ts +4 -0
  21. package/dist/cjs/src/bundle/bundled.js +24 -0
  22. package/dist/cjs/src/commands/Command.d.ts +16 -0
  23. package/dist/cjs/src/commands/Command.js +34 -0
  24. package/dist/cjs/src/commands/Duplicate.d.ts +14 -0
  25. package/dist/cjs/src/commands/Duplicate.js +39 -0
  26. package/dist/cjs/src/commands/Erase.d.ts +14 -0
  27. package/dist/cjs/src/commands/Erase.js +63 -0
  28. package/dist/cjs/src/commands/SerializableCommand.d.ts +12 -0
  29. package/dist/cjs/src/commands/SerializableCommand.js +42 -0
  30. package/dist/cjs/src/commands/UnresolvedCommand.d.ts +14 -0
  31. package/dist/cjs/src/commands/UnresolvedCommand.js +28 -0
  32. package/dist/cjs/src/commands/invertCommand.d.ts +4 -0
  33. package/dist/cjs/src/commands/invertCommand.js +49 -0
  34. package/dist/cjs/src/commands/lib.d.ts +7 -0
  35. package/dist/cjs/src/commands/lib.js +18 -0
  36. package/dist/cjs/src/commands/localization.d.ts +23 -0
  37. package/dist/cjs/src/commands/localization.js +24 -0
  38. package/dist/cjs/src/commands/uniteCommands.d.ts +4 -0
  39. package/dist/cjs/src/commands/uniteCommands.js +121 -0
  40. package/dist/cjs/src/components/AbstractComponent.d.ts +73 -0
  41. package/dist/cjs/src/components/AbstractComponent.js +258 -0
  42. package/dist/cjs/src/components/ImageBackground.d.ts +42 -0
  43. package/dist/cjs/src/components/ImageBackground.js +146 -0
  44. package/dist/cjs/src/components/ImageComponent.d.ts +31 -0
  45. package/dist/cjs/src/components/ImageComponent.js +152 -0
  46. package/dist/cjs/src/components/RestylableComponent.d.ts +43 -0
  47. package/dist/cjs/src/components/RestylableComponent.js +88 -0
  48. package/dist/cjs/src/components/SVGGlobalAttributesObject.d.ts +21 -0
  49. package/dist/cjs/src/components/SVGGlobalAttributesObject.js +65 -0
  50. package/dist/cjs/src/components/Stroke.d.ts +75 -0
  51. package/dist/cjs/src/components/Stroke.js +225 -0
  52. package/dist/cjs/src/components/TextComponent.d.ts +75 -0
  53. package/dist/cjs/src/components/TextComponent.js +280 -0
  54. package/dist/cjs/src/components/UnknownSVGObject.d.ts +18 -0
  55. package/dist/cjs/src/components/UnknownSVGObject.js +50 -0
  56. package/dist/cjs/src/components/builders/ArrowBuilder.d.ts +19 -0
  57. package/dist/cjs/src/components/builders/ArrowBuilder.js +117 -0
  58. package/dist/cjs/src/components/builders/FreehandLineBuilder.d.ts +33 -0
  59. package/dist/cjs/src/components/builders/FreehandLineBuilder.js +173 -0
  60. package/dist/cjs/src/components/builders/LineBuilder.d.ts +18 -0
  61. package/dist/cjs/src/components/builders/LineBuilder.js +89 -0
  62. package/dist/cjs/src/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +36 -0
  63. package/dist/cjs/src/components/builders/PressureSensitiveFreehandLineBuilder.js +347 -0
  64. package/dist/cjs/src/components/builders/RectangleBuilder.d.ts +20 -0
  65. package/dist/cjs/src/components/builders/RectangleBuilder.js +59 -0
  66. package/dist/cjs/src/components/builders/types.d.ts +12 -0
  67. package/dist/cjs/src/components/builders/types.js +2 -0
  68. package/dist/cjs/src/components/lib.d.ts +13 -0
  69. package/dist/cjs/src/components/lib.js +43 -0
  70. package/dist/cjs/src/components/localization.d.ts +11 -0
  71. package/dist/cjs/src/components/localization.js +13 -0
  72. package/dist/cjs/src/components/util/StrokeSmoother.d.ts +35 -0
  73. package/dist/cjs/src/components/util/StrokeSmoother.js +217 -0
  74. package/dist/cjs/src/components/util/describeComponentList.d.ts +4 -0
  75. package/dist/cjs/src/components/util/describeComponentList.js +16 -0
  76. package/dist/cjs/src/lib.d.ts +64 -0
  77. package/dist/cjs/src/lib.js +93 -0
  78. package/dist/cjs/src/localization.d.ts +14 -0
  79. package/dist/cjs/src/localization.js +13 -0
  80. package/dist/cjs/src/localizations/de.d.ts +3 -0
  81. package/dist/cjs/src/localizations/de.js +6 -0
  82. package/dist/cjs/src/localizations/en.d.ts +3 -0
  83. package/dist/cjs/src/localizations/en.js +6 -0
  84. package/dist/cjs/src/localizations/es.d.ts +3 -0
  85. package/dist/cjs/src/localizations/es.js +20 -0
  86. package/dist/cjs/src/localizations/getLocalizationTable.d.ts +3 -0
  87. package/dist/cjs/src/localizations/getLocalizationTable.js +50 -0
  88. package/dist/cjs/src/math/LineSegment2.d.ts +24 -0
  89. package/dist/cjs/src/math/LineSegment2.js +131 -0
  90. package/dist/cjs/src/math/Mat33.d.ts +118 -0
  91. package/dist/cjs/src/math/Mat33.js +332 -0
  92. package/dist/cjs/src/math/Path.d.ts +71 -0
  93. package/dist/cjs/src/math/Path.js +655 -0
  94. package/dist/cjs/src/math/Rect2.d.ts +52 -0
  95. package/dist/cjs/src/math/Rect2.js +234 -0
  96. package/dist/cjs/src/math/Triangle.d.ts +11 -0
  97. package/dist/cjs/src/math/Triangle.js +22 -0
  98. package/dist/cjs/src/math/Vec2.d.ts +13 -0
  99. package/dist/cjs/src/math/Vec2.js +19 -0
  100. package/dist/cjs/src/math/Vec3.d.ts +106 -0
  101. package/dist/cjs/src/math/Vec3.js +177 -0
  102. package/dist/cjs/src/math/lib.d.ts +7 -0
  103. package/dist/cjs/src/math/lib.js +18 -0
  104. package/dist/cjs/src/math/rounding.d.ts +4 -0
  105. package/dist/cjs/src/math/rounding.js +135 -0
  106. package/dist/cjs/src/rendering/Display.d.ts +75 -0
  107. package/dist/cjs/src/rendering/Display.js +214 -0
  108. package/dist/cjs/src/rendering/RenderingStyle.d.ts +31 -0
  109. package/dist/cjs/src/rendering/RenderingStyle.js +48 -0
  110. package/dist/cjs/src/rendering/TextRenderingStyle.d.ts +36 -0
  111. package/dist/cjs/src/rendering/TextRenderingStyle.js +29 -0
  112. package/dist/cjs/src/rendering/caching/CacheRecord.d.ts +20 -0
  113. package/dist/cjs/src/rendering/caching/CacheRecord.js +61 -0
  114. package/dist/cjs/src/rendering/caching/CacheRecordManager.d.ts +12 -0
  115. package/dist/cjs/src/rendering/caching/CacheRecordManager.js +50 -0
  116. package/dist/cjs/src/rendering/caching/RenderingCache.d.ts +11 -0
  117. package/dist/cjs/src/rendering/caching/RenderingCache.js +51 -0
  118. package/dist/cjs/src/rendering/caching/RenderingCacheNode.d.ts +29 -0
  119. package/dist/cjs/src/rendering/caching/RenderingCacheNode.js +326 -0
  120. package/dist/cjs/src/rendering/caching/testUtils.d.ts +9 -0
  121. package/dist/cjs/src/rendering/caching/testUtils.js +27 -0
  122. package/dist/cjs/src/rendering/caching/types.d.ts +19 -0
  123. package/dist/cjs/src/rendering/caching/types.js +2 -0
  124. package/dist/cjs/src/rendering/lib.d.ts +7 -0
  125. package/dist/cjs/src/rendering/lib.js +17 -0
  126. package/dist/cjs/src/rendering/localization.d.ts +10 -0
  127. package/dist/cjs/src/rendering/localization.js +12 -0
  128. package/dist/cjs/src/rendering/renderers/AbstractRenderer.d.ts +68 -0
  129. package/dist/cjs/src/rendering/renderers/AbstractRenderer.js +170 -0
  130. package/dist/cjs/src/rendering/renderers/CanvasRenderer.d.ts +63 -0
  131. package/dist/cjs/src/rendering/renderers/CanvasRenderer.js +236 -0
  132. package/dist/cjs/src/rendering/renderers/DummyRenderer.d.ts +35 -0
  133. package/dist/cjs/src/rendering/renderers/DummyRenderer.js +112 -0
  134. package/dist/cjs/src/rendering/renderers/SVGRenderer.d.ts +57 -0
  135. package/dist/cjs/src/rendering/renderers/SVGRenderer.js +311 -0
  136. package/dist/cjs/src/rendering/renderers/TextOnlyRenderer.d.ts +29 -0
  137. package/dist/cjs/src/rendering/renderers/TextOnlyRenderer.js +63 -0
  138. package/dist/cjs/src/testing/beforeEachFile.d.ts +1 -0
  139. package/dist/cjs/src/testing/beforeEachFile.js +12 -0
  140. package/dist/cjs/src/testing/createEditor.d.ts +4 -0
  141. package/dist/cjs/src/testing/createEditor.js +14 -0
  142. package/dist/cjs/src/testing/lib.d.ts +2 -0
  143. package/dist/cjs/src/testing/lib.js +10 -0
  144. package/dist/cjs/src/testing/loadExpectExtensions.d.ts +2 -0
  145. package/dist/cjs/src/testing/loadExpectExtensions.js +28 -0
  146. package/dist/cjs/src/testing/sendPenEvent.d.ts +12 -0
  147. package/dist/cjs/src/testing/sendPenEvent.js +24 -0
  148. package/dist/cjs/src/testing/sendTouchEvent.d.ts +42 -0
  149. package/dist/cjs/src/testing/sendTouchEvent.js +87 -0
  150. package/dist/cjs/src/toolbar/HTMLToolbar.d.ts +103 -0
  151. package/dist/cjs/src/toolbar/HTMLToolbar.js +383 -0
  152. package/dist/cjs/src/toolbar/IconProvider.d.ts +62 -0
  153. package/dist/cjs/src/toolbar/IconProvider.js +660 -0
  154. package/dist/cjs/src/toolbar/lib.d.ts +3 -0
  155. package/dist/cjs/src/toolbar/lib.js +24 -0
  156. package/dist/cjs/src/toolbar/localization.d.ts +49 -0
  157. package/dist/cjs/src/toolbar/localization.js +51 -0
  158. package/dist/cjs/src/toolbar/makeColorInput.d.ts +6 -0
  159. package/dist/cjs/src/toolbar/makeColorInput.js +120 -0
  160. package/dist/cjs/src/toolbar/types.d.ts +4 -0
  161. package/dist/cjs/src/toolbar/types.js +2 -0
  162. package/dist/cjs/src/toolbar/widgets/ActionButtonWidget.d.ts +15 -0
  163. package/dist/cjs/src/toolbar/widgets/ActionButtonWidget.js +31 -0
  164. package/dist/cjs/src/toolbar/widgets/BaseToolWidget.d.ts +11 -0
  165. package/dist/cjs/src/toolbar/widgets/BaseToolWidget.js +50 -0
  166. package/dist/cjs/src/toolbar/widgets/BaseWidget.d.ts +72 -0
  167. package/dist/cjs/src/toolbar/widgets/BaseWidget.js +313 -0
  168. package/dist/cjs/src/toolbar/widgets/DocumentPropertiesWidget.d.ts +18 -0
  169. package/dist/cjs/src/toolbar/widgets/DocumentPropertiesWidget.js +126 -0
  170. package/dist/cjs/src/toolbar/widgets/EraserToolWidget.d.ts +17 -0
  171. package/dist/cjs/src/toolbar/widgets/EraserToolWidget.js +63 -0
  172. package/dist/cjs/src/toolbar/widgets/HandToolWidget.d.ts +17 -0
  173. package/dist/cjs/src/toolbar/widgets/HandToolWidget.js +201 -0
  174. package/dist/cjs/src/toolbar/widgets/InsertImageWidget.d.ts +19 -0
  175. package/dist/cjs/src/toolbar/widgets/InsertImageWidget.js +176 -0
  176. package/dist/cjs/src/toolbar/widgets/OverflowWidget.d.ts +25 -0
  177. package/dist/cjs/src/toolbar/widgets/OverflowWidget.js +77 -0
  178. package/dist/cjs/src/toolbar/widgets/PenToolWidget.d.ts +27 -0
  179. package/dist/cjs/src/toolbar/widgets/PenToolWidget.js +226 -0
  180. package/dist/cjs/src/toolbar/widgets/SelectionToolWidget.d.ts +13 -0
  181. package/dist/cjs/src/toolbar/widgets/SelectionToolWidget.js +153 -0
  182. package/dist/cjs/src/toolbar/widgets/TextToolWidget.d.ts +16 -0
  183. package/dist/cjs/src/toolbar/widgets/TextToolWidget.js +115 -0
  184. package/dist/cjs/src/toolbar/widgets/lib.d.ts +10 -0
  185. package/dist/cjs/src/toolbar/widgets/lib.js +26 -0
  186. package/dist/cjs/src/tools/BaseTool.d.ts +22 -0
  187. package/dist/cjs/src/tools/BaseTool.js +66 -0
  188. package/dist/cjs/src/tools/Eraser.d.ts +23 -0
  189. package/dist/cjs/src/tools/Eraser.js +112 -0
  190. package/dist/cjs/src/tools/FindTool.d.ts +21 -0
  191. package/dist/cjs/src/tools/FindTool.js +121 -0
  192. package/dist/cjs/src/tools/PanZoom.d.ts +52 -0
  193. package/dist/cjs/src/tools/PanZoom.js +421 -0
  194. package/dist/cjs/src/tools/PasteHandler.d.ts +23 -0
  195. package/dist/cjs/src/tools/PasteHandler.js +99 -0
  196. package/dist/cjs/src/tools/Pen.d.ts +39 -0
  197. package/dist/cjs/src/tools/Pen.js +179 -0
  198. package/dist/cjs/src/tools/PipetteTool.d.ts +18 -0
  199. package/dist/cjs/src/tools/PipetteTool.js +45 -0
  200. package/dist/cjs/src/tools/SelectionTool/SelectAllShortcutHandler.d.ts +8 -0
  201. package/dist/cjs/src/tools/SelectionTool/SelectAllShortcutHandler.js +28 -0
  202. package/dist/cjs/src/tools/SelectionTool/Selection.d.ts +64 -0
  203. package/dist/cjs/src/tools/SelectionTool/Selection.js +488 -0
  204. package/dist/cjs/src/tools/SelectionTool/SelectionHandle.d.ts +38 -0
  205. package/dist/cjs/src/tools/SelectionTool/SelectionHandle.js +85 -0
  206. package/dist/cjs/src/tools/SelectionTool/SelectionTool.d.ts +36 -0
  207. package/dist/cjs/src/tools/SelectionTool/SelectionTool.js +405 -0
  208. package/dist/cjs/src/tools/SelectionTool/TransformMode.d.ts +34 -0
  209. package/dist/cjs/src/tools/SelectionTool/TransformMode.js +107 -0
  210. package/dist/cjs/src/tools/SelectionTool/types.d.ts +9 -0
  211. package/dist/cjs/src/tools/SelectionTool/types.js +14 -0
  212. package/dist/cjs/src/tools/SoundUITool.d.ts +24 -0
  213. package/dist/cjs/src/tools/SoundUITool.js +164 -0
  214. package/dist/cjs/src/tools/TextTool.d.ts +33 -0
  215. package/dist/cjs/src/tools/TextTool.js +262 -0
  216. package/dist/cjs/src/tools/ToolController.d.ts +18 -0
  217. package/dist/cjs/src/tools/ToolController.js +192 -0
  218. package/dist/cjs/src/tools/ToolEnabledGroup.d.ts +6 -0
  219. package/dist/cjs/src/tools/ToolEnabledGroup.js +14 -0
  220. package/dist/cjs/src/tools/ToolSwitcherShortcut.d.ts +16 -0
  221. package/dist/cjs/src/tools/ToolSwitcherShortcut.js +38 -0
  222. package/dist/cjs/src/tools/ToolbarShortcutHandler.d.ts +12 -0
  223. package/dist/cjs/src/tools/ToolbarShortcutHandler.js +29 -0
  224. package/dist/cjs/src/tools/UndoRedoShortcut.d.ts +8 -0
  225. package/dist/cjs/src/tools/UndoRedoShortcut.js +28 -0
  226. package/dist/cjs/src/tools/lib.d.ts +17 -0
  227. package/dist/cjs/src/tools/lib.js +38 -0
  228. package/dist/cjs/src/tools/localization.d.ts +31 -0
  229. package/dist/cjs/src/tools/localization.js +33 -0
  230. package/dist/cjs/src/types.d.ts +151 -0
  231. package/dist/cjs/src/types.js +38 -0
  232. package/dist/cjs/src/util/assertions.d.ts +23 -0
  233. package/dist/cjs/src/util/assertions.js +51 -0
  234. package/dist/cjs/src/util/fileToBase64.d.ts +3 -0
  235. package/dist/cjs/src/util/fileToBase64.js +15 -0
  236. package/dist/cjs/src/util/untilNextAnimationFrame.d.ts +3 -0
  237. package/dist/cjs/src/util/untilNextAnimationFrame.js +9 -0
  238. package/dist/cjs/src/util/waitForTimeout.d.ts +2 -0
  239. package/dist/cjs/src/util/waitForTimeout.js +9 -0
  240. package/dist/mjs/src/Color4.d.ts +69 -0
  241. package/dist/mjs/src/Color4.mjs +257 -0
  242. package/dist/mjs/src/Editor.d.ts +308 -0
  243. package/dist/mjs/src/Editor.mjs +874 -0
  244. package/dist/mjs/src/EditorImage.d.ts +97 -0
  245. package/dist/mjs/src/EditorImage.mjs +477 -0
  246. package/dist/mjs/src/EventDispatcher.d.ts +30 -0
  247. package/dist/mjs/src/EventDispatcher.mjs +54 -0
  248. package/dist/mjs/src/Pointer.d.ts +24 -0
  249. package/dist/mjs/src/Pointer.mjs +80 -0
  250. package/dist/mjs/src/SVGLoader.d.ts +48 -0
  251. package/dist/mjs/src/SVGLoader.mjs +445 -0
  252. package/dist/mjs/src/UndoRedoHistory.d.ts +19 -0
  253. package/dist/mjs/src/UndoRedoHistory.mjs +91 -0
  254. package/dist/mjs/src/Viewport.d.ts +71 -0
  255. package/dist/mjs/src/Viewport.mjs +256 -0
  256. package/dist/mjs/src/bundle/bundled.d.ts +4 -0
  257. package/dist/mjs/src/bundle/bundled.mjs +5 -0
  258. package/dist/mjs/src/commands/Command.d.ts +16 -0
  259. package/dist/mjs/src/commands/Command.mjs +30 -0
  260. package/dist/mjs/src/commands/Duplicate.d.ts +14 -0
  261. package/dist/mjs/src/commands/Duplicate.mjs +33 -0
  262. package/dist/mjs/src/commands/Erase.d.ts +14 -0
  263. package/dist/mjs/src/commands/Erase.mjs +57 -0
  264. package/dist/mjs/src/commands/SerializableCommand.d.ts +12 -0
  265. package/dist/mjs/src/commands/SerializableCommand.mjs +36 -0
  266. package/dist/mjs/src/commands/UnresolvedCommand.d.ts +14 -0
  267. package/dist/mjs/src/commands/UnresolvedCommand.mjs +22 -0
  268. package/dist/mjs/src/commands/invertCommand.d.ts +4 -0
  269. package/dist/mjs/src/commands/invertCommand.mjs +44 -0
  270. package/dist/mjs/src/commands/lib.d.ts +7 -0
  271. package/dist/mjs/src/commands/lib.mjs +7 -0
  272. package/dist/mjs/src/commands/localization.d.ts +23 -0
  273. package/dist/mjs/src/commands/localization.mjs +21 -0
  274. package/dist/mjs/src/commands/uniteCommands.d.ts +4 -0
  275. package/dist/mjs/src/commands/uniteCommands.mjs +116 -0
  276. package/dist/mjs/src/components/AbstractComponent.d.ts +73 -0
  277. package/dist/mjs/src/components/AbstractComponent.mjs +252 -0
  278. package/dist/mjs/src/components/ImageBackground.d.ts +42 -0
  279. package/dist/mjs/src/components/ImageBackground.mjs +139 -0
  280. package/dist/mjs/src/components/ImageComponent.d.ts +31 -0
  281. package/dist/mjs/src/components/ImageComponent.mjs +146 -0
  282. package/dist/mjs/src/components/RestylableComponent.d.ts +43 -0
  283. package/dist/mjs/src/components/RestylableComponent.mjs +80 -0
  284. package/dist/mjs/src/components/SVGGlobalAttributesObject.d.ts +21 -0
  285. package/dist/mjs/src/components/SVGGlobalAttributesObject.mjs +59 -0
  286. package/dist/mjs/src/components/Stroke.d.ts +75 -0
  287. package/dist/mjs/src/components/Stroke.mjs +219 -0
  288. package/dist/mjs/src/components/TextComponent.d.ts +75 -0
  289. package/dist/mjs/src/components/TextComponent.mjs +274 -0
  290. package/dist/mjs/src/components/UnknownSVGObject.d.ts +18 -0
  291. package/dist/mjs/src/components/UnknownSVGObject.mjs +44 -0
  292. package/dist/mjs/src/components/builders/ArrowBuilder.d.ts +19 -0
  293. package/dist/mjs/src/components/builders/ArrowBuilder.mjs +86 -0
  294. package/dist/mjs/src/components/builders/FreehandLineBuilder.d.ts +33 -0
  295. package/dist/mjs/src/components/builders/FreehandLineBuilder.mjs +165 -0
  296. package/dist/mjs/src/components/builders/LineBuilder.d.ts +18 -0
  297. package/dist/mjs/src/components/builders/LineBuilder.mjs +58 -0
  298. package/dist/mjs/src/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +36 -0
  299. package/dist/mjs/src/components/builders/PressureSensitiveFreehandLineBuilder.mjs +339 -0
  300. package/dist/mjs/src/components/builders/RectangleBuilder.d.ts +20 -0
  301. package/dist/mjs/src/components/builders/RectangleBuilder.mjs +50 -0
  302. package/dist/mjs/src/components/builders/types.d.ts +12 -0
  303. package/dist/mjs/src/components/builders/types.mjs +1 -0
  304. package/dist/mjs/src/components/lib.d.ts +13 -0
  305. package/dist/mjs/src/components/lib.mjs +12 -0
  306. package/dist/mjs/src/components/localization.d.ts +11 -0
  307. package/dist/mjs/src/components/localization.mjs +10 -0
  308. package/dist/mjs/src/components/util/StrokeSmoother.d.ts +35 -0
  309. package/dist/mjs/src/components/util/StrokeSmoother.mjs +210 -0
  310. package/dist/mjs/src/components/util/describeComponentList.d.ts +4 -0
  311. package/dist/mjs/src/components/util/describeComponentList.mjs +14 -0
  312. package/dist/mjs/src/lib.d.ts +64 -0
  313. package/dist/mjs/src/lib.mjs +64 -0
  314. package/dist/mjs/src/localization.d.ts +14 -0
  315. package/dist/mjs/src/localization.mjs +10 -0
  316. package/dist/mjs/src/localizations/de.d.ts +3 -0
  317. package/dist/mjs/src/localizations/de.mjs +4 -0
  318. package/dist/mjs/src/localizations/en.d.ts +3 -0
  319. package/dist/mjs/src/localizations/en.mjs +4 -0
  320. package/dist/mjs/src/localizations/es.d.ts +3 -0
  321. package/dist/mjs/src/localizations/es.mjs +18 -0
  322. package/dist/mjs/src/localizations/getLocalizationTable.d.ts +3 -0
  323. package/dist/mjs/src/localizations/getLocalizationTable.mjs +45 -0
  324. package/dist/mjs/src/math/LineSegment2.d.ts +24 -0
  325. package/dist/mjs/src/math/LineSegment2.mjs +125 -0
  326. package/dist/mjs/src/math/Mat33.d.ts +118 -0
  327. package/dist/mjs/src/math/Mat33.mjs +326 -0
  328. package/dist/mjs/src/math/Path.d.ts +71 -0
  329. package/dist/mjs/src/math/Path.mjs +648 -0
  330. package/dist/mjs/src/math/Rect2.d.ts +52 -0
  331. package/dist/mjs/src/math/Rect2.mjs +228 -0
  332. package/dist/mjs/src/math/Triangle.d.ts +11 -0
  333. package/dist/mjs/src/math/Triangle.mjs +19 -0
  334. package/dist/mjs/src/math/Vec2.d.ts +13 -0
  335. package/dist/mjs/src/math/Vec2.mjs +13 -0
  336. package/dist/mjs/src/math/Vec3.d.ts +106 -0
  337. package/dist/mjs/src/math/Vec3.mjs +174 -0
  338. package/dist/mjs/src/math/lib.d.ts +7 -0
  339. package/dist/mjs/src/math/lib.mjs +7 -0
  340. package/dist/mjs/src/math/rounding.d.ts +4 -0
  341. package/dist/mjs/src/math/rounding.mjs +128 -0
  342. package/dist/mjs/src/rendering/Display.d.ts +75 -0
  343. package/dist/mjs/src/rendering/Display.mjs +207 -0
  344. package/dist/mjs/src/rendering/RenderingStyle.d.ts +31 -0
  345. package/dist/mjs/src/rendering/RenderingStyle.mjs +38 -0
  346. package/dist/mjs/src/rendering/TextRenderingStyle.d.ts +36 -0
  347. package/dist/mjs/src/rendering/TextRenderingStyle.mjs +23 -0
  348. package/dist/mjs/src/rendering/caching/CacheRecord.d.ts +20 -0
  349. package/dist/mjs/src/rendering/caching/CacheRecord.mjs +55 -0
  350. package/dist/mjs/src/rendering/caching/CacheRecordManager.d.ts +12 -0
  351. package/dist/mjs/src/rendering/caching/CacheRecordManager.mjs +43 -0
  352. package/dist/mjs/src/rendering/caching/RenderingCache.d.ts +11 -0
  353. package/dist/mjs/src/rendering/caching/RenderingCache.mjs +45 -0
  354. package/dist/mjs/src/rendering/caching/RenderingCacheNode.d.ts +29 -0
  355. package/dist/mjs/src/rendering/caching/RenderingCacheNode.mjs +320 -0
  356. package/dist/mjs/src/rendering/caching/testUtils.d.ts +9 -0
  357. package/dist/mjs/src/rendering/caching/testUtils.mjs +20 -0
  358. package/dist/mjs/src/rendering/caching/types.d.ts +19 -0
  359. package/dist/mjs/src/rendering/caching/types.mjs +1 -0
  360. package/dist/mjs/src/rendering/lib.d.ts +7 -0
  361. package/dist/mjs/src/rendering/lib.mjs +5 -0
  362. package/dist/mjs/src/rendering/localization.d.ts +10 -0
  363. package/dist/mjs/src/rendering/localization.mjs +9 -0
  364. package/dist/mjs/src/rendering/renderers/AbstractRenderer.d.ts +68 -0
  365. package/dist/mjs/src/rendering/renderers/AbstractRenderer.mjs +144 -0
  366. package/dist/mjs/src/rendering/renderers/CanvasRenderer.d.ts +63 -0
  367. package/dist/mjs/src/rendering/renderers/CanvasRenderer.mjs +230 -0
  368. package/dist/mjs/src/rendering/renderers/DummyRenderer.d.ts +35 -0
  369. package/dist/mjs/src/rendering/renderers/DummyRenderer.mjs +106 -0
  370. package/dist/mjs/src/rendering/renderers/SVGRenderer.d.ts +57 -0
  371. package/dist/mjs/src/rendering/renderers/SVGRenderer.mjs +304 -0
  372. package/dist/mjs/src/rendering/renderers/TextOnlyRenderer.d.ts +29 -0
  373. package/dist/mjs/src/rendering/renderers/TextOnlyRenderer.mjs +57 -0
  374. package/dist/mjs/src/testing/beforeEachFile.d.ts +1 -0
  375. package/dist/mjs/src/testing/beforeEachFile.mjs +7 -0
  376. package/dist/mjs/src/testing/createEditor.d.ts +4 -0
  377. package/dist/mjs/src/testing/createEditor.mjs +9 -0
  378. package/dist/mjs/src/testing/lib.d.ts +2 -0
  379. package/dist/mjs/src/testing/lib.mjs +2 -0
  380. package/dist/mjs/src/testing/loadExpectExtensions.d.ts +2 -0
  381. package/dist/mjs/src/testing/loadExpectExtensions.mjs +24 -0
  382. package/dist/mjs/src/testing/sendPenEvent.d.ts +12 -0
  383. package/dist/mjs/src/testing/sendPenEvent.mjs +19 -0
  384. package/dist/mjs/src/testing/sendTouchEvent.d.ts +42 -0
  385. package/dist/mjs/src/testing/sendTouchEvent.mjs +62 -0
  386. package/dist/mjs/src/toolbar/HTMLToolbar.d.ts +103 -0
  387. package/dist/mjs/src/toolbar/HTMLToolbar.mjs +376 -0
  388. package/dist/mjs/src/toolbar/IconProvider.d.ts +62 -0
  389. package/dist/mjs/src/toolbar/IconProvider.mjs +654 -0
  390. package/dist/mjs/src/toolbar/lib.d.ts +3 -0
  391. package/dist/mjs/src/toolbar/lib.mjs +3 -0
  392. package/dist/mjs/src/toolbar/localization.d.ts +49 -0
  393. package/dist/mjs/src/toolbar/localization.mjs +48 -0
  394. package/dist/mjs/src/toolbar/makeColorInput.d.ts +6 -0
  395. package/dist/mjs/src/toolbar/makeColorInput.mjs +113 -0
  396. package/dist/mjs/src/toolbar/types.d.ts +4 -0
  397. package/dist/mjs/src/toolbar/types.mjs +1 -0
  398. package/dist/mjs/src/toolbar/widgets/ActionButtonWidget.d.ts +15 -0
  399. package/dist/mjs/src/toolbar/widgets/ActionButtonWidget.mjs +25 -0
  400. package/dist/mjs/src/toolbar/widgets/BaseToolWidget.d.ts +11 -0
  401. package/dist/mjs/src/toolbar/widgets/BaseToolWidget.mjs +44 -0
  402. package/dist/mjs/src/toolbar/widgets/BaseWidget.d.ts +72 -0
  403. package/dist/mjs/src/toolbar/widgets/BaseWidget.mjs +307 -0
  404. package/dist/mjs/src/toolbar/widgets/DocumentPropertiesWidget.d.ts +18 -0
  405. package/dist/mjs/src/toolbar/widgets/DocumentPropertiesWidget.mjs +120 -0
  406. package/dist/mjs/src/toolbar/widgets/EraserToolWidget.d.ts +17 -0
  407. package/dist/mjs/src/toolbar/widgets/EraserToolWidget.mjs +57 -0
  408. package/dist/mjs/src/toolbar/widgets/HandToolWidget.d.ts +17 -0
  409. package/dist/mjs/src/toolbar/widgets/HandToolWidget.mjs +172 -0
  410. package/dist/mjs/src/toolbar/widgets/InsertImageWidget.d.ts +19 -0
  411. package/dist/mjs/src/toolbar/widgets/InsertImageWidget.mjs +170 -0
  412. package/dist/mjs/src/toolbar/widgets/OverflowWidget.d.ts +25 -0
  413. package/dist/mjs/src/toolbar/widgets/OverflowWidget.mjs +71 -0
  414. package/dist/mjs/src/toolbar/widgets/PenToolWidget.d.ts +27 -0
  415. package/dist/mjs/src/toolbar/widgets/PenToolWidget.mjs +220 -0
  416. package/dist/mjs/src/toolbar/widgets/SelectionToolWidget.d.ts +13 -0
  417. package/dist/mjs/src/toolbar/widgets/SelectionToolWidget.mjs +147 -0
  418. package/dist/mjs/src/toolbar/widgets/TextToolWidget.d.ts +16 -0
  419. package/dist/mjs/src/toolbar/widgets/TextToolWidget.mjs +109 -0
  420. package/dist/mjs/src/toolbar/widgets/lib.d.ts +10 -0
  421. package/dist/mjs/src/toolbar/widgets/lib.mjs +10 -0
  422. package/dist/mjs/src/tools/BaseTool.d.ts +22 -0
  423. package/dist/mjs/src/tools/BaseTool.mjs +63 -0
  424. package/dist/mjs/src/tools/Eraser.d.ts +23 -0
  425. package/dist/mjs/src/tools/Eraser.mjs +106 -0
  426. package/dist/mjs/src/tools/FindTool.d.ts +21 -0
  427. package/dist/mjs/src/tools/FindTool.mjs +114 -0
  428. package/dist/mjs/src/tools/PanZoom.d.ts +52 -0
  429. package/dist/mjs/src/tools/PanZoom.mjs +414 -0
  430. package/dist/mjs/src/tools/PasteHandler.d.ts +23 -0
  431. package/dist/mjs/src/tools/PasteHandler.mjs +93 -0
  432. package/dist/mjs/src/tools/Pen.d.ts +39 -0
  433. package/dist/mjs/src/tools/Pen.mjs +173 -0
  434. package/dist/mjs/src/tools/PipetteTool.d.ts +18 -0
  435. package/dist/mjs/src/tools/PipetteTool.mjs +39 -0
  436. package/dist/mjs/src/tools/SelectionTool/SelectAllShortcutHandler.d.ts +8 -0
  437. package/dist/mjs/src/tools/SelectionTool/SelectAllShortcutHandler.mjs +22 -0
  438. package/dist/mjs/src/tools/SelectionTool/Selection.d.ts +64 -0
  439. package/dist/mjs/src/tools/SelectionTool/Selection.mjs +459 -0
  440. package/dist/mjs/src/tools/SelectionTool/SelectionHandle.d.ts +38 -0
  441. package/dist/mjs/src/tools/SelectionTool/SelectionHandle.mjs +81 -0
  442. package/dist/mjs/src/tools/SelectionTool/SelectionTool.d.ts +36 -0
  443. package/dist/mjs/src/tools/SelectionTool/SelectionTool.mjs +398 -0
  444. package/dist/mjs/src/tools/SelectionTool/TransformMode.d.ts +34 -0
  445. package/dist/mjs/src/tools/SelectionTool/TransformMode.mjs +98 -0
  446. package/dist/mjs/src/tools/SelectionTool/types.d.ts +9 -0
  447. package/dist/mjs/src/tools/SelectionTool/types.mjs +11 -0
  448. package/dist/mjs/src/tools/SoundUITool.d.ts +24 -0
  449. package/dist/mjs/src/tools/SoundUITool.mjs +158 -0
  450. package/dist/mjs/src/tools/TextTool.d.ts +33 -0
  451. package/dist/mjs/src/tools/TextTool.mjs +256 -0
  452. package/dist/mjs/src/tools/ToolController.d.ts +18 -0
  453. package/dist/mjs/src/tools/ToolController.mjs +163 -0
  454. package/dist/mjs/src/tools/ToolEnabledGroup.d.ts +6 -0
  455. package/dist/mjs/src/tools/ToolEnabledGroup.mjs +11 -0
  456. package/dist/mjs/src/tools/ToolSwitcherShortcut.d.ts +16 -0
  457. package/dist/mjs/src/tools/ToolSwitcherShortcut.mjs +32 -0
  458. package/dist/mjs/src/tools/ToolbarShortcutHandler.d.ts +12 -0
  459. package/dist/mjs/src/tools/ToolbarShortcutHandler.mjs +23 -0
  460. package/dist/mjs/src/tools/UndoRedoShortcut.d.ts +8 -0
  461. package/dist/mjs/src/tools/UndoRedoShortcut.mjs +22 -0
  462. package/dist/mjs/src/tools/lib.d.ts +17 -0
  463. package/dist/mjs/src/tools/lib.mjs +17 -0
  464. package/dist/mjs/src/tools/localization.d.ts +31 -0
  465. package/dist/mjs/src/tools/localization.mjs +30 -0
  466. package/dist/mjs/src/types.d.ts +151 -0
  467. package/dist/mjs/src/types.mjs +35 -0
  468. package/dist/mjs/src/util/assertions.d.ts +23 -0
  469. package/dist/mjs/src/util/assertions.mjs +45 -0
  470. package/dist/mjs/src/util/fileToBase64.d.ts +3 -0
  471. package/dist/mjs/src/util/fileToBase64.mjs +13 -0
  472. package/dist/mjs/src/util/untilNextAnimationFrame.d.ts +3 -0
  473. package/dist/mjs/src/util/untilNextAnimationFrame.mjs +7 -0
  474. package/dist/mjs/src/util/waitForTimeout.d.ts +2 -0
  475. package/dist/mjs/src/util/waitForTimeout.mjs +7 -0
  476. package/package.json +6 -4
  477. package/src/Editor.css +86 -0
  478. package/src/styles.js +7 -0
  479. package/src/toolbar/toolbar.css +213 -0
  480. package/src/toolbar/widgets/InsertImageWidget.css +44 -0
  481. package/src/toolbar/widgets/OverflowWidget.css +27 -0
  482. package/src/tools/FindTool.css +7 -0
  483. package/src/tools/SelectionTool/SelectionTool.css +23 -0
  484. package/src/tools/SoundUITool.css +15 -0
  485. package/src/tools/tools.css +4 -0
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const LineSegment2_1 = __importDefault(require("../math/LineSegment2"));
7
+ const Mat33_1 = __importDefault(require("../math/Mat33"));
8
+ const Rect2_1 = __importDefault(require("../math/Rect2"));
9
+ const Vec2_1 = require("../math/Vec2");
10
+ const TextRenderingStyle_1 = require("../rendering/TextRenderingStyle");
11
+ const AbstractComponent_1 = __importDefault(require("./AbstractComponent"));
12
+ const RestylableComponent_1 = require("./RestylableComponent");
13
+ const componentTypeId = 'text';
14
+ /**
15
+ * Displays text.
16
+ */
17
+ class TextComponent extends AbstractComponent_1.default {
18
+ /**
19
+ * Creates a new text object from a list of component text or child TextComponents.
20
+ *
21
+ * @see {@link fromLines}
22
+ */
23
+ constructor(textObjects, transform, style) {
24
+ super(componentTypeId);
25
+ this.textObjects = textObjects;
26
+ this.transform = transform;
27
+ this.style = style;
28
+ // eslint-disable-next-line @typescript-eslint/prefer-as-const
29
+ this.isRestylableComponent = true;
30
+ this.recomputeBBox();
31
+ // If this has no direct children, choose a style representative of this' content
32
+ // (useful for estimating the style of the TextComponent).
33
+ const hasDirectContent = textObjects.some(obj => typeof obj === 'string');
34
+ if (!hasDirectContent && textObjects.length > 0) {
35
+ this.style = textObjects[0].getTextStyle();
36
+ }
37
+ }
38
+ static applyTextStyles(ctx, style) {
39
+ var _a, _b;
40
+ // Quote the font family if necessary.
41
+ const fontFamily = style.fontFamily.match(/\s/) ? style.fontFamily.replace(/["]/g, '\\"') : style.fontFamily;
42
+ ctx.font = [
43
+ ((_a = style.size) !== null && _a !== void 0 ? _a : 12) + 'px',
44
+ (_b = style.fontWeight) !== null && _b !== void 0 ? _b : '',
45
+ `${fontFamily}`,
46
+ style.fontWeight
47
+ ].join(' ');
48
+ ctx.textAlign = 'left';
49
+ }
50
+ // Roughly estimate the bounding box of `text`. Use if no CanvasRenderingContext2D is available.
51
+ static estimateTextDimens(text, style) {
52
+ const widthEst = text.length * style.size;
53
+ const heightEst = style.size;
54
+ // Text is drawn with (0, 0) as its baseline. As such, the majority of the text's height should
55
+ // be above (0, 0).
56
+ return new Rect2_1.default(0, -heightEst * 2 / 3, widthEst, heightEst);
57
+ }
58
+ // Returns the bounding box of `text`. This is approximate if no Canvas is available.
59
+ static getTextDimens(text, style) {
60
+ var _a, _b;
61
+ (_a = TextComponent.textMeasuringCtx) !== null && _a !== void 0 ? _a : (TextComponent.textMeasuringCtx = (_b = document.createElement('canvas').getContext('2d')) !== null && _b !== void 0 ? _b : null);
62
+ if (!TextComponent.textMeasuringCtx) {
63
+ return this.estimateTextDimens(text, style);
64
+ }
65
+ const ctx = TextComponent.textMeasuringCtx;
66
+ TextComponent.applyTextStyles(ctx, style);
67
+ const measure = ctx.measureText(text);
68
+ // Text is drawn with (0,0) at the bottom left of the baseline.
69
+ const textY = -measure.actualBoundingBoxAscent;
70
+ const textHeight = measure.actualBoundingBoxAscent + measure.actualBoundingBoxDescent;
71
+ return new Rect2_1.default(0, textY, measure.width, textHeight);
72
+ }
73
+ computeBBoxOfPart(part) {
74
+ if (typeof part === 'string') {
75
+ const textBBox = TextComponent.getTextDimens(part, this.style);
76
+ return textBBox.transformedBoundingBox(this.transform);
77
+ }
78
+ else {
79
+ const bbox = part.contentBBox.transformedBoundingBox(this.transform);
80
+ return bbox;
81
+ }
82
+ }
83
+ recomputeBBox() {
84
+ let bbox = null;
85
+ for (const textObject of this.textObjects) {
86
+ const currentBBox = this.computeBBoxOfPart(textObject);
87
+ bbox !== null && bbox !== void 0 ? bbox : (bbox = currentBBox);
88
+ bbox = bbox.union(currentBBox);
89
+ }
90
+ this.contentBBox = bbox !== null && bbox !== void 0 ? bbox : Rect2_1.default.empty;
91
+ }
92
+ renderInternal(canvas) {
93
+ const cursor = this.transform;
94
+ for (const textObject of this.textObjects) {
95
+ if (typeof textObject === 'string') {
96
+ canvas.drawText(textObject, cursor, this.style);
97
+ }
98
+ else {
99
+ canvas.pushTransform(cursor);
100
+ textObject.renderInternal(canvas);
101
+ canvas.popTransform();
102
+ }
103
+ }
104
+ }
105
+ render(canvas, _visibleRect) {
106
+ canvas.startObject(this.contentBBox);
107
+ this.renderInternal(canvas);
108
+ canvas.endObject(this.getLoadSaveData());
109
+ }
110
+ getProportionalRenderingTime() {
111
+ return this.textObjects.length;
112
+ }
113
+ intersects(lineSegment) {
114
+ // Convert canvas space to internal space.
115
+ const invTransform = this.transform.inverse();
116
+ const p1InThisSpace = invTransform.transformVec2(lineSegment.p1);
117
+ const p2InThisSpace = invTransform.transformVec2(lineSegment.p2);
118
+ lineSegment = new LineSegment2_1.default(p1InThisSpace, p2InThisSpace);
119
+ for (const subObject of this.textObjects) {
120
+ if (typeof subObject === 'string') {
121
+ const textBBox = TextComponent.getTextDimens(subObject, this.style);
122
+ // TODO: Use a better intersection check. Perhaps draw the text onto a CanvasElement and
123
+ // use pixel-testing to check for intersection with its contour.
124
+ if (textBBox.getEdges().some(edge => lineSegment.intersection(edge) !== null)) {
125
+ return true;
126
+ }
127
+ }
128
+ else {
129
+ if (subObject.intersects(lineSegment)) {
130
+ return true;
131
+ }
132
+ }
133
+ }
134
+ return false;
135
+ }
136
+ getStyle() {
137
+ return {
138
+ color: this.style.renderingStyle.fill,
139
+ // Make a copy
140
+ textStyle: Object.assign(Object.assign({}, this.style), { renderingStyle: Object.assign({}, this.style.renderingStyle) }),
141
+ };
142
+ }
143
+ updateStyle(style) {
144
+ return (0, RestylableComponent_1.createRestyleComponentCommand)(this.getStyle(), style, this);
145
+ }
146
+ forceStyle(style, editor) {
147
+ if (style.textStyle) {
148
+ this.style = (0, TextRenderingStyle_1.cloneTextStyle)(style.textStyle);
149
+ }
150
+ else if (style.color) {
151
+ this.style = Object.assign(Object.assign({}, this.style), { renderingStyle: Object.assign(Object.assign({}, this.style.renderingStyle), { fill: style.color }) });
152
+ }
153
+ else {
154
+ return;
155
+ }
156
+ for (const child of this.textObjects) {
157
+ if (child instanceof TextComponent) {
158
+ child.forceStyle(style, editor);
159
+ }
160
+ }
161
+ if (editor) {
162
+ editor.image.queueRerenderOf(this);
163
+ editor.queueRerender();
164
+ }
165
+ }
166
+ // See this.getStyle
167
+ getTextStyle() {
168
+ return (0, TextRenderingStyle_1.cloneTextStyle)(this.style);
169
+ }
170
+ getBaselinePos() {
171
+ return this.transform.transformVec2(Vec2_1.Vec2.zero);
172
+ }
173
+ getTransform() {
174
+ return this.transform;
175
+ }
176
+ applyTransformation(affineTransfm) {
177
+ this.transform = affineTransfm.rightMul(this.transform);
178
+ this.recomputeBBox();
179
+ }
180
+ createClone() {
181
+ const clonedTextObjects = this.textObjects.map(obj => {
182
+ if (typeof obj === 'string') {
183
+ return obj;
184
+ }
185
+ else {
186
+ return obj.createClone();
187
+ }
188
+ });
189
+ return new TextComponent(clonedTextObjects, this.transform, this.style);
190
+ }
191
+ getText() {
192
+ const result = [];
193
+ for (const textObject of this.textObjects) {
194
+ if (typeof textObject === 'string') {
195
+ result.push(textObject);
196
+ }
197
+ else {
198
+ result.push(textObject.getText());
199
+ }
200
+ }
201
+ return result.join('\n');
202
+ }
203
+ description(localizationTable) {
204
+ return localizationTable.text(this.getText());
205
+ }
206
+ // Do not rely on the output of `serializeToJSON` taking any particular format.
207
+ serializeToJSON() {
208
+ const serializableStyle = (0, TextRenderingStyle_1.textStyleToJSON)(this.style);
209
+ const serializedTextObjects = this.textObjects.map(text => {
210
+ if (typeof text === 'string') {
211
+ return {
212
+ text,
213
+ };
214
+ }
215
+ else {
216
+ return {
217
+ json: text.serializeToJSON(),
218
+ };
219
+ }
220
+ });
221
+ return {
222
+ textObjects: serializedTextObjects,
223
+ transform: this.transform.toArray(),
224
+ style: serializableStyle,
225
+ };
226
+ }
227
+ // @internal
228
+ static deserializeFromString(json) {
229
+ if (typeof json === 'string') {
230
+ json = JSON.parse(json);
231
+ }
232
+ const style = (0, TextRenderingStyle_1.textStyleFromJSON)(json.style);
233
+ const textObjects = json.textObjects.map((data) => {
234
+ var _a;
235
+ if (((_a = data.text) !== null && _a !== void 0 ? _a : null) !== null) {
236
+ return data.text;
237
+ }
238
+ return TextComponent.deserializeFromString(data.json);
239
+ });
240
+ json.transform = json.transform.filter((elem) => typeof elem === 'number');
241
+ if (json.transform.length !== 9) {
242
+ throw new Error(`Unable to deserialize transform, ${json.transform}.`);
243
+ }
244
+ const transformData = json.transform;
245
+ const transform = new Mat33_1.default(...transformData);
246
+ return new TextComponent(textObjects, transform, style);
247
+ }
248
+ /**
249
+ * Creates a `TextComponent` from `lines`.
250
+ *
251
+ * @example
252
+ * ```ts
253
+ * const textStyle = {
254
+ * size: 12,
255
+ * fontFamily: 'serif',
256
+ * renderingStyle: { fill: Color4.black },
257
+ * };
258
+ *
259
+ * const text = TextComponent.fromLines('foo\nbar'.split('\n'), Mat33.identity, textStyle);
260
+ * ```
261
+ */
262
+ static fromLines(lines, transform, style) {
263
+ let lastComponent = null;
264
+ const components = [];
265
+ for (const line of lines) {
266
+ let position = Vec2_1.Vec2.zero;
267
+ if (lastComponent) {
268
+ const lineMargin = Math.floor(style.size);
269
+ position = lastComponent.getBBox().bottomLeft.plus(Vec2_1.Vec2.unitY.times(lineMargin));
270
+ }
271
+ const component = new TextComponent([line], Mat33_1.default.translation(position), style);
272
+ components.push(component);
273
+ lastComponent = component;
274
+ }
275
+ return new TextComponent(components, transform, style);
276
+ }
277
+ }
278
+ exports.default = TextComponent;
279
+ TextComponent.textMeasuringCtx = null;
280
+ AbstractComponent_1.default.registerComponent(componentTypeId, (data) => TextComponent.deserializeFromString(data));
@@ -0,0 +1,18 @@
1
+ import LineSegment2 from '../math/LineSegment2';
2
+ import Mat33 from '../math/Mat33';
3
+ import Rect2 from '../math/Rect2';
4
+ import AbstractRenderer from '../rendering/renderers/AbstractRenderer';
5
+ import AbstractComponent from './AbstractComponent';
6
+ import { ImageComponentLocalization } from './localization';
7
+ export default class UnknownSVGObject extends AbstractComponent {
8
+ private svgObject;
9
+ protected contentBBox: Rect2;
10
+ constructor(svgObject: SVGElement);
11
+ render(canvas: AbstractRenderer, _visibleRect?: Rect2): void;
12
+ intersects(lineSegment: LineSegment2): boolean;
13
+ protected applyTransformation(_affineTransfm: Mat33): void;
14
+ isSelectable(): boolean;
15
+ protected createClone(): AbstractComponent;
16
+ description(localization: ImageComponentLocalization): string;
17
+ protected serializeToJSON(): string | null;
18
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ //
3
+ // Stores objects loaded from an SVG that aren't recognised by the editor.
4
+ // @internal
5
+ // @packageDocumentation
6
+ //
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const Rect2_1 = __importDefault(require("../math/Rect2"));
12
+ const SVGRenderer_1 = __importDefault(require("../rendering/renderers/SVGRenderer"));
13
+ const AbstractComponent_1 = __importDefault(require("./AbstractComponent"));
14
+ const componentId = 'unknown-svg-object';
15
+ class UnknownSVGObject extends AbstractComponent_1.default {
16
+ constructor(svgObject) {
17
+ super(componentId);
18
+ this.svgObject = svgObject;
19
+ this.contentBBox = Rect2_1.default.of(svgObject.getBoundingClientRect());
20
+ }
21
+ render(canvas, _visibleRect) {
22
+ if (!(canvas instanceof SVGRenderer_1.default)) {
23
+ // Don't draw unrenderable objects if we can't
24
+ return;
25
+ }
26
+ canvas.drawSVGElem(this.svgObject);
27
+ }
28
+ intersects(lineSegment) {
29
+ return this.contentBBox.getEdges().some(edge => edge.intersection(lineSegment) !== null);
30
+ }
31
+ applyTransformation(_affineTransfm) {
32
+ }
33
+ isSelectable() {
34
+ return false;
35
+ }
36
+ createClone() {
37
+ return new UnknownSVGObject(this.svgObject.cloneNode(true));
38
+ }
39
+ description(localization) {
40
+ return localization.svgObject;
41
+ }
42
+ serializeToJSON() {
43
+ return JSON.stringify({
44
+ html: this.svgObject.outerHTML,
45
+ });
46
+ }
47
+ }
48
+ exports.default = UnknownSVGObject;
49
+ // null: Do not deserialize UnknownSVGObjects.
50
+ AbstractComponent_1.default.registerComponent(componentId, null);
@@ -0,0 +1,19 @@
1
+ import Rect2 from '../../math/Rect2';
2
+ import AbstractRenderer from '../../rendering/renderers/AbstractRenderer';
3
+ import { StrokeDataPoint } from '../../types';
4
+ import Viewport from '../../Viewport';
5
+ import AbstractComponent from '../AbstractComponent';
6
+ import { ComponentBuilder, ComponentBuilderFactory } from './types';
7
+ export declare const makeArrowBuilder: ComponentBuilderFactory;
8
+ export default class ArrowBuilder implements ComponentBuilder {
9
+ private readonly startPoint;
10
+ private readonly viewport;
11
+ private endPoint;
12
+ constructor(startPoint: StrokeDataPoint, viewport: Viewport);
13
+ private getLineWidth;
14
+ getBBox(): Rect2;
15
+ private buildPreview;
16
+ build(): AbstractComponent;
17
+ preview(renderer: AbstractRenderer): void;
18
+ addPoint(point: StrokeDataPoint): void;
19
+ }
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.makeArrowBuilder = void 0;
30
+ const Path_1 = __importStar(require("../../math/Path"));
31
+ const Stroke_1 = __importDefault(require("../Stroke"));
32
+ const makeArrowBuilder = (initialPoint, viewport) => {
33
+ return new ArrowBuilder(initialPoint, viewport);
34
+ };
35
+ exports.makeArrowBuilder = makeArrowBuilder;
36
+ class ArrowBuilder {
37
+ constructor(startPoint, viewport) {
38
+ this.startPoint = startPoint;
39
+ this.viewport = viewport;
40
+ this.endPoint = startPoint;
41
+ }
42
+ getLineWidth() {
43
+ return Math.max(this.endPoint.width, this.startPoint.width);
44
+ }
45
+ getBBox() {
46
+ const preview = this.buildPreview();
47
+ return preview.getBBox();
48
+ }
49
+ buildPreview() {
50
+ const lineStartPoint = this.startPoint.pos;
51
+ const endPoint = this.endPoint.pos;
52
+ const toEnd = endPoint.minus(lineStartPoint).normalized();
53
+ const arrowLength = endPoint.minus(lineStartPoint).length();
54
+ // Ensure that the arrow tip is smaller than the arrow.
55
+ const arrowTipSize = Math.min(this.getLineWidth(), arrowLength / 2);
56
+ const startSize = this.startPoint.width / 2;
57
+ const endSize = this.endPoint.width / 2;
58
+ const arrowTipBase = endPoint.minus(toEnd.times(arrowTipSize));
59
+ // Scaled normal vectors.
60
+ const lineNormal = toEnd.orthog();
61
+ const scaledStartNormal = lineNormal.times(startSize);
62
+ const scaledBaseNormal = lineNormal.times(endSize);
63
+ const path = new Path_1.default(arrowTipBase.minus(scaledBaseNormal), [
64
+ // Stem
65
+ {
66
+ kind: Path_1.PathCommandType.LineTo,
67
+ point: lineStartPoint.minus(scaledStartNormal),
68
+ },
69
+ {
70
+ kind: Path_1.PathCommandType.LineTo,
71
+ point: lineStartPoint.plus(scaledStartNormal),
72
+ },
73
+ {
74
+ kind: Path_1.PathCommandType.LineTo,
75
+ point: arrowTipBase.plus(scaledBaseNormal),
76
+ },
77
+ // Head
78
+ {
79
+ kind: Path_1.PathCommandType.LineTo,
80
+ point: arrowTipBase.plus(lineNormal.times(arrowTipSize).plus(scaledBaseNormal)),
81
+ },
82
+ {
83
+ kind: Path_1.PathCommandType.LineTo,
84
+ point: endPoint.plus(toEnd.times(endSize)),
85
+ },
86
+ {
87
+ kind: Path_1.PathCommandType.LineTo,
88
+ point: arrowTipBase.plus(lineNormal.times(-arrowTipSize).minus(scaledBaseNormal)),
89
+ },
90
+ {
91
+ kind: Path_1.PathCommandType.LineTo,
92
+ point: arrowTipBase.minus(scaledBaseNormal),
93
+ },
94
+ // Round all points in the arrow (to remove unnecessary decimal places)
95
+ ]).mapPoints(point => this.viewport.roundPoint(point));
96
+ const preview = new Stroke_1.default([
97
+ {
98
+ startPoint: path.startPoint,
99
+ commands: path.parts,
100
+ style: {
101
+ fill: this.startPoint.color,
102
+ }
103
+ }
104
+ ]);
105
+ return preview;
106
+ }
107
+ build() {
108
+ return this.buildPreview();
109
+ }
110
+ preview(renderer) {
111
+ this.buildPreview().render(renderer);
112
+ }
113
+ addPoint(point) {
114
+ this.endPoint = point;
115
+ }
116
+ }
117
+ exports.default = ArrowBuilder;
@@ -0,0 +1,33 @@
1
+ import AbstractRenderer, { RenderablePathSpec } from '../../rendering/renderers/AbstractRenderer';
2
+ import Rect2 from '../../math/Rect2';
3
+ import Stroke from '../Stroke';
4
+ import Viewport from '../../Viewport';
5
+ import { StrokeDataPoint } from '../../types';
6
+ import { ComponentBuilder, ComponentBuilderFactory } from './types';
7
+ import RenderingStyle from '../../rendering/RenderingStyle';
8
+ export declare const makeFreehandLineBuilder: ComponentBuilderFactory;
9
+ export default class FreehandLineBuilder implements ComponentBuilder {
10
+ private startPoint;
11
+ private minFitAllowed;
12
+ private viewport;
13
+ private isFirstSegment;
14
+ private parts;
15
+ private curveFitter;
16
+ private bbox;
17
+ private averageWidth;
18
+ private widthAverageNumSamples;
19
+ constructor(startPoint: StrokeDataPoint, minFitAllowed: number, maxFitAllowed: number, viewport: Viewport);
20
+ getBBox(): Rect2;
21
+ protected getRenderingStyle(): RenderingStyle;
22
+ protected previewCurrentPath(): RenderablePathSpec | null;
23
+ protected previewFullPath(): RenderablePathSpec[] | null;
24
+ private previewStroke;
25
+ preview(renderer: AbstractRenderer): void;
26
+ build(): Stroke;
27
+ private getMinFit;
28
+ private roundPoint;
29
+ private roundDistance;
30
+ private curveToPathCommands;
31
+ private addCurve;
32
+ addPoint(newPoint: StrokeDataPoint): void;
33
+ }