js-draw 0.17.3 → 0.18.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 (516) hide show
  1. package/.github/workflows/firebase-hosting-merge.yml +2 -0
  2. package/.github/workflows/firebase-hosting-pull-request.yml +2 -0
  3. package/.github/workflows/github-pages.yml +2 -0
  4. package/CHANGELOG.md +10 -1
  5. package/README.md +17 -8
  6. package/build_tools/postDist.ts +71 -0
  7. package/dist/bundle.js +9 -1
  8. package/dist/cjs/build_tools/BundledFile.js +163 -0
  9. package/dist/cjs/build_tools/buildTranslationTemplate.js +119 -0
  10. package/dist/cjs/build_tools/bundle.js +10 -0
  11. package/dist/cjs/build_tools/postDist.js +72 -0
  12. package/dist/{src → cjs/src}/Color4.d.ts +1 -0
  13. package/dist/cjs/src/Color4.js +197 -0
  14. package/dist/{src → cjs/src}/Editor.d.ts +57 -1
  15. package/dist/cjs/src/Editor.js +904 -0
  16. package/dist/{src → cjs/src}/EditorImage.d.ts +4 -2
  17. package/dist/cjs/src/EditorImage.js +486 -0
  18. package/dist/cjs/src/EventDispatcher.js +57 -0
  19. package/dist/cjs/src/Pointer.js +84 -0
  20. package/dist/{src → cjs/src}/SVGLoader.d.ts +4 -0
  21. package/dist/cjs/src/SVGLoader.js +472 -0
  22. package/dist/cjs/src/UndoRedoHistory.js +93 -0
  23. package/dist/cjs/src/Viewport.js +264 -0
  24. package/dist/cjs/src/bundle/bundled.js +24 -0
  25. package/dist/cjs/src/commands/Command.js +34 -0
  26. package/dist/cjs/src/commands/Duplicate.js +39 -0
  27. package/dist/cjs/src/commands/Erase.js +63 -0
  28. package/dist/cjs/src/commands/SerializableCommand.js +42 -0
  29. package/dist/cjs/src/commands/UnresolvedCommand.js +28 -0
  30. package/dist/cjs/src/commands/invertCommand.js +49 -0
  31. package/dist/cjs/src/commands/lib.js +18 -0
  32. package/dist/cjs/src/commands/localization.js +24 -0
  33. package/dist/cjs/src/commands/uniteCommands.js +121 -0
  34. package/dist/cjs/src/components/AbstractComponent.js +258 -0
  35. package/dist/cjs/src/components/ImageBackground.js +146 -0
  36. package/dist/cjs/src/components/ImageComponent.js +152 -0
  37. package/dist/cjs/src/components/RestylableComponent.js +88 -0
  38. package/dist/cjs/src/components/SVGGlobalAttributesObject.js +65 -0
  39. package/dist/cjs/src/components/Stroke.js +191 -0
  40. package/dist/cjs/src/components/TextComponent.js +258 -0
  41. package/dist/cjs/src/components/UnknownSVGObject.js +50 -0
  42. package/dist/cjs/src/components/builders/ArrowBuilder.js +117 -0
  43. package/dist/cjs/src/components/builders/FreehandLineBuilder.js +173 -0
  44. package/dist/cjs/src/components/builders/LineBuilder.js +89 -0
  45. package/dist/cjs/src/components/builders/PressureSensitiveFreehandLineBuilder.js +347 -0
  46. package/dist/cjs/src/components/builders/RectangleBuilder.js +59 -0
  47. package/dist/cjs/src/components/builders/types.js +2 -0
  48. package/dist/cjs/src/components/lib.js +43 -0
  49. package/dist/cjs/src/components/localization.js +13 -0
  50. package/dist/cjs/src/components/util/StrokeSmoother.js +217 -0
  51. package/dist/cjs/src/components/util/describeComponentList.js +16 -0
  52. package/dist/{src → cjs/src}/lib.d.ts +2 -1
  53. package/dist/cjs/src/lib.js +63 -0
  54. package/dist/cjs/src/localization.js +13 -0
  55. package/dist/cjs/src/localizations/de.js +6 -0
  56. package/dist/cjs/src/localizations/en.js +6 -0
  57. package/dist/cjs/src/localizations/es.js +20 -0
  58. package/dist/cjs/src/localizations/getLocalizationTable.js +50 -0
  59. package/dist/cjs/src/math/LineSegment2.js +131 -0
  60. package/dist/cjs/src/math/Mat33.js +332 -0
  61. package/dist/cjs/src/math/Path.js +655 -0
  62. package/dist/cjs/src/math/Rect2.js +234 -0
  63. package/dist/cjs/src/math/Triangle.js +22 -0
  64. package/dist/cjs/src/math/Vec2.js +19 -0
  65. package/dist/cjs/src/math/Vec3.js +177 -0
  66. package/dist/cjs/src/math/lib.js +18 -0
  67. package/dist/cjs/src/math/rounding.js +135 -0
  68. package/dist/cjs/src/rendering/Display.js +214 -0
  69. package/dist/cjs/src/rendering/RenderingStyle.js +48 -0
  70. package/dist/cjs/src/rendering/TextRenderingStyle.js +29 -0
  71. package/dist/cjs/src/rendering/caching/CacheRecord.js +61 -0
  72. package/dist/cjs/src/rendering/caching/CacheRecordManager.js +50 -0
  73. package/dist/cjs/src/rendering/caching/RenderingCache.js +51 -0
  74. package/dist/cjs/src/rendering/caching/RenderingCacheNode.js +326 -0
  75. package/dist/cjs/src/rendering/caching/testUtils.js +27 -0
  76. package/dist/cjs/src/rendering/caching/types.js +2 -0
  77. package/dist/{src → cjs/src}/rendering/lib.d.ts +2 -0
  78. package/dist/cjs/src/rendering/lib.js +16 -0
  79. package/dist/cjs/src/rendering/localization.js +12 -0
  80. package/dist/cjs/src/rendering/renderers/AbstractRenderer.js +170 -0
  81. package/dist/{src → cjs/src}/rendering/renderers/CanvasRenderer.d.ts +25 -0
  82. package/dist/cjs/src/rendering/renderers/CanvasRenderer.js +236 -0
  83. package/dist/cjs/src/rendering/renderers/DummyRenderer.js +112 -0
  84. package/dist/{src → cjs/src}/rendering/renderers/SVGRenderer.d.ts +15 -0
  85. package/dist/cjs/src/rendering/renderers/SVGRenderer.js +311 -0
  86. package/dist/cjs/src/rendering/renderers/TextOnlyRenderer.js +63 -0
  87. package/dist/cjs/src/testing/beforeEachFile.js +12 -0
  88. package/dist/cjs/src/testing/createEditor.js +14 -0
  89. package/dist/cjs/src/testing/lib.d.ts +2 -0
  90. package/dist/cjs/src/testing/lib.js +10 -0
  91. package/dist/cjs/src/testing/loadExpectExtensions.js +28 -0
  92. package/dist/cjs/src/testing/sendPenEvent.d.ts +12 -0
  93. package/dist/cjs/src/testing/sendPenEvent.js +24 -0
  94. package/dist/cjs/src/testing/sendTouchEvent.d.ts +42 -0
  95. package/dist/cjs/src/testing/sendTouchEvent.js +87 -0
  96. package/dist/cjs/src/toolbar/HTMLToolbar.js +383 -0
  97. package/dist/cjs/src/toolbar/IconProvider.js +660 -0
  98. package/dist/cjs/src/toolbar/lib.js +24 -0
  99. package/dist/cjs/src/toolbar/localization.js +51 -0
  100. package/dist/cjs/src/toolbar/makeColorInput.js +120 -0
  101. package/dist/cjs/src/toolbar/types.js +2 -0
  102. package/dist/cjs/src/toolbar/widgets/ActionButtonWidget.js +31 -0
  103. package/dist/cjs/src/toolbar/widgets/BaseToolWidget.js +50 -0
  104. package/dist/cjs/src/toolbar/widgets/BaseWidget.js +313 -0
  105. package/dist/cjs/src/toolbar/widgets/DocumentPropertiesWidget.js +126 -0
  106. package/dist/cjs/src/toolbar/widgets/EraserToolWidget.js +63 -0
  107. package/dist/cjs/src/toolbar/widgets/HandToolWidget.js +201 -0
  108. package/dist/cjs/src/toolbar/widgets/InsertImageWidget.js +176 -0
  109. package/dist/cjs/src/toolbar/widgets/OverflowWidget.js +77 -0
  110. package/dist/cjs/src/toolbar/widgets/PenToolWidget.js +226 -0
  111. package/dist/cjs/src/toolbar/widgets/SelectionToolWidget.js +153 -0
  112. package/dist/cjs/src/toolbar/widgets/TextToolWidget.js +115 -0
  113. package/dist/cjs/src/toolbar/widgets/lib.js +26 -0
  114. package/dist/cjs/src/tools/BaseTool.js +66 -0
  115. package/dist/cjs/src/tools/Eraser.js +112 -0
  116. package/dist/cjs/src/tools/FindTool.js +121 -0
  117. package/dist/cjs/src/tools/PanZoom.js +421 -0
  118. package/dist/cjs/src/tools/PasteHandler.js +99 -0
  119. package/dist/cjs/src/tools/Pen.js +179 -0
  120. package/dist/cjs/src/tools/PipetteTool.js +45 -0
  121. package/dist/cjs/src/tools/SelectionTool/SelectAllShortcutHandler.js +28 -0
  122. package/dist/cjs/src/tools/SelectionTool/Selection.js +488 -0
  123. package/dist/cjs/src/tools/SelectionTool/SelectionHandle.js +85 -0
  124. package/dist/cjs/src/tools/SelectionTool/SelectionTool.js +405 -0
  125. package/dist/cjs/src/tools/SelectionTool/TransformMode.js +107 -0
  126. package/dist/cjs/src/tools/SelectionTool/types.js +14 -0
  127. package/dist/cjs/src/tools/TextTool.js +262 -0
  128. package/dist/cjs/src/tools/ToolController.js +187 -0
  129. package/dist/cjs/src/tools/ToolEnabledGroup.js +14 -0
  130. package/dist/cjs/src/tools/ToolSwitcherShortcut.js +38 -0
  131. package/dist/cjs/src/tools/ToolbarShortcutHandler.js +29 -0
  132. package/dist/cjs/src/tools/UndoRedoShortcut.js +28 -0
  133. package/dist/cjs/src/tools/lib.js +36 -0
  134. package/dist/cjs/src/tools/localization.js +30 -0
  135. package/dist/cjs/src/types.js +38 -0
  136. package/dist/cjs/src/util/assertions.js +51 -0
  137. package/dist/cjs/src/util/fileToBase64.js +15 -0
  138. package/dist/cjs/src/util/untilNextAnimationFrame.js +9 -0
  139. package/dist/cjs/src/util/waitForTimeout.js +9 -0
  140. package/dist/mjs/build_tools/BundledFile.d.ts +13 -0
  141. package/dist/{build_tools/buildTranslationTemplate.js → mjs/build_tools/buildTranslationTemplate.mjs} +1 -1
  142. package/dist/{build_tools/bundle.js → mjs/build_tools/bundle.mjs} +1 -1
  143. package/dist/mjs/build_tools/postDist.d.ts +1 -0
  144. package/dist/mjs/build_tools/postDist.mjs +67 -0
  145. package/dist/mjs/src/Color4.d.ts +61 -0
  146. package/dist/{src/Color4.js → mjs/src/Color4.mjs} +1 -0
  147. package/dist/mjs/src/Editor.d.ts +308 -0
  148. package/dist/{src/Editor.js → mjs/src/Editor.mjs} +86 -49
  149. package/dist/mjs/src/EditorImage.d.ts +97 -0
  150. package/dist/{src/EditorImage.js → mjs/src/EditorImage.mjs} +12 -10
  151. package/dist/mjs/src/EventDispatcher.d.ts +30 -0
  152. package/dist/mjs/src/Pointer.d.ts +24 -0
  153. package/dist/{src/Pointer.js → mjs/src/Pointer.mjs} +1 -1
  154. package/dist/mjs/src/SVGLoader.d.ts +48 -0
  155. package/dist/{src/SVGLoader.js → mjs/src/SVGLoader.mjs} +15 -11
  156. package/dist/mjs/src/UndoRedoHistory.d.ts +19 -0
  157. package/dist/{src/UndoRedoHistory.js → mjs/src/UndoRedoHistory.mjs} +1 -1
  158. package/dist/mjs/src/Viewport.d.ts +71 -0
  159. package/dist/{src/Viewport.js → mjs/src/Viewport.mjs} +5 -5
  160. package/dist/mjs/src/bundle/bundled.d.ts +4 -0
  161. package/dist/{src/bundle/bundled.js → mjs/src/bundle/bundled.mjs} +2 -2
  162. package/dist/mjs/src/commands/Command.d.ts +16 -0
  163. package/dist/mjs/src/commands/Duplicate.d.ts +14 -0
  164. package/dist/{src/commands/Duplicate.js → mjs/src/commands/Duplicate.mjs} +3 -3
  165. package/dist/mjs/src/commands/Erase.d.ts +14 -0
  166. package/dist/{src/commands/Erase.js → mjs/src/commands/Erase.mjs} +3 -3
  167. package/dist/mjs/src/commands/SerializableCommand.d.ts +12 -0
  168. package/dist/{src/commands/SerializableCommand.js → mjs/src/commands/SerializableCommand.mjs} +1 -1
  169. package/dist/mjs/src/commands/UnresolvedCommand.d.ts +14 -0
  170. package/dist/{src/commands/UnresolvedCommand.js → mjs/src/commands/UnresolvedCommand.mjs} +1 -1
  171. package/dist/mjs/src/commands/invertCommand.d.ts +4 -0
  172. package/dist/{src/commands/invertCommand.js → mjs/src/commands/invertCommand.mjs} +2 -2
  173. package/dist/mjs/src/commands/lib.mjs +7 -0
  174. package/dist/mjs/src/commands/localization.d.ts +23 -0
  175. package/dist/mjs/src/commands/uniteCommands.d.ts +4 -0
  176. package/dist/{src/commands/uniteCommands.js → mjs/src/commands/uniteCommands.mjs} +2 -2
  177. package/dist/mjs/src/components/AbstractComponent.d.ts +73 -0
  178. package/dist/{src/components/AbstractComponent.js → mjs/src/components/AbstractComponent.mjs} +4 -4
  179. package/dist/mjs/src/components/ImageBackground.d.ts +42 -0
  180. package/dist/{src/components/ImageBackground.js → mjs/src/components/ImageBackground.mjs} +5 -5
  181. package/dist/mjs/src/components/ImageComponent.d.ts +31 -0
  182. package/dist/{src/components/ImageComponent.js → mjs/src/components/ImageComponent.mjs} +3 -3
  183. package/dist/mjs/src/components/RestylableComponent.d.ts +24 -0
  184. package/dist/{src/components/RestylableComponent.js → mjs/src/components/RestylableComponent.mjs} +4 -4
  185. package/dist/mjs/src/components/SVGGlobalAttributesObject.d.ts +21 -0
  186. package/dist/{src/components/SVGGlobalAttributesObject.js → mjs/src/components/SVGGlobalAttributesObject.mjs} +3 -3
  187. package/dist/mjs/src/components/Stroke.d.ts +40 -0
  188. package/dist/{src/components/Stroke.js → mjs/src/components/Stroke.mjs} +5 -5
  189. package/dist/mjs/src/components/TextComponent.d.ts +53 -0
  190. package/dist/{src/components/TextComponent.js → mjs/src/components/TextComponent.mjs} +7 -7
  191. package/dist/mjs/src/components/UnknownSVGObject.d.ts +18 -0
  192. package/dist/{src/components/UnknownSVGObject.js → mjs/src/components/UnknownSVGObject.mjs} +3 -3
  193. package/dist/mjs/src/components/builders/ArrowBuilder.d.ts +19 -0
  194. package/dist/{src/components/builders/ArrowBuilder.js → mjs/src/components/builders/ArrowBuilder.mjs} +2 -2
  195. package/dist/mjs/src/components/builders/FreehandLineBuilder.d.ts +33 -0
  196. package/dist/{src/components/builders/FreehandLineBuilder.js → mjs/src/components/builders/FreehandLineBuilder.mjs} +7 -7
  197. package/dist/mjs/src/components/builders/LineBuilder.d.ts +18 -0
  198. package/dist/{src/components/builders/LineBuilder.js → mjs/src/components/builders/LineBuilder.mjs} +2 -2
  199. package/dist/mjs/src/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +36 -0
  200. package/dist/{src/components/builders/PressureSensitiveFreehandLineBuilder.js → mjs/src/components/builders/PressureSensitiveFreehandLineBuilder.mjs} +6 -6
  201. package/dist/mjs/src/components/builders/RectangleBuilder.d.ts +20 -0
  202. package/dist/{src/components/builders/RectangleBuilder.js → mjs/src/components/builders/RectangleBuilder.mjs} +4 -4
  203. package/dist/mjs/src/components/builders/types.d.ts +12 -0
  204. package/dist/mjs/src/components/builders/types.mjs +1 -0
  205. package/dist/{src/components/lib.js → mjs/src/components/lib.d.ts} +3 -3
  206. package/dist/mjs/src/components/lib.mjs +12 -0
  207. package/dist/mjs/src/components/localization.d.ts +11 -0
  208. package/dist/mjs/src/components/util/StrokeSmoother.d.ts +35 -0
  209. package/dist/{src/components/util/StrokeSmoother.js → mjs/src/components/util/StrokeSmoother.mjs} +3 -3
  210. package/dist/mjs/src/components/util/describeComponentList.d.ts +4 -0
  211. package/dist/{src/lib.js → mjs/src/lib.d.ts} +4 -3
  212. package/dist/mjs/src/lib.mjs +34 -0
  213. package/dist/mjs/src/localization.d.ts +14 -0
  214. package/dist/{src/localization.js → mjs/src/localization.mjs} +5 -5
  215. package/dist/mjs/src/localizations/de.d.ts +3 -0
  216. package/dist/{src/localizations/de.js → mjs/src/localizations/de.mjs} +1 -1
  217. package/dist/mjs/src/localizations/en.d.ts +3 -0
  218. package/dist/{src/localizations/en.js → mjs/src/localizations/en.mjs} +1 -1
  219. package/dist/mjs/src/localizations/es.d.ts +3 -0
  220. package/dist/{src/localizations/es.js → mjs/src/localizations/es.mjs} +1 -1
  221. package/dist/mjs/src/localizations/getLocalizationTable.d.ts +3 -0
  222. package/dist/{src/localizations/getLocalizationTable.js → mjs/src/localizations/getLocalizationTable.mjs} +4 -4
  223. package/dist/mjs/src/math/LineSegment2.d.ts +24 -0
  224. package/dist/{src/math/LineSegment2.js → mjs/src/math/LineSegment2.mjs} +2 -2
  225. package/dist/mjs/src/math/Mat33.d.ts +118 -0
  226. package/dist/{src/math/Mat33.js → mjs/src/math/Mat33.mjs} +2 -2
  227. package/dist/mjs/src/math/Path.d.ts +71 -0
  228. package/dist/{src/math/Path.js → mjs/src/math/Path.mjs} +5 -5
  229. package/dist/mjs/src/math/Rect2.d.ts +52 -0
  230. package/dist/{src/math/Rect2.js → mjs/src/math/Rect2.mjs} +2 -2
  231. package/dist/mjs/src/math/Triangle.d.ts +11 -0
  232. package/dist/mjs/src/math/Vec2.d.ts +13 -0
  233. package/dist/{src/math/Vec2.js → mjs/src/math/Vec2.mjs} +1 -1
  234. package/dist/mjs/src/math/Vec3.d.ts +106 -0
  235. package/dist/mjs/src/math/lib.mjs +7 -0
  236. package/dist/mjs/src/math/rounding.d.ts +4 -0
  237. package/dist/mjs/src/rendering/Display.d.ts +75 -0
  238. package/dist/{src/rendering/Display.js → mjs/src/rendering/Display.mjs} +7 -7
  239. package/dist/mjs/src/rendering/RenderingStyle.d.ts +31 -0
  240. package/dist/{src/rendering/RenderingStyle.js → mjs/src/rendering/RenderingStyle.mjs} +1 -1
  241. package/dist/mjs/src/rendering/TextRenderingStyle.d.ts +36 -0
  242. package/dist/{src/rendering/TextRenderingStyle.js → mjs/src/rendering/TextRenderingStyle.mjs} +1 -1
  243. package/dist/mjs/src/rendering/caching/CacheRecord.d.ts +20 -0
  244. package/dist/{src/rendering/caching/CacheRecord.js → mjs/src/rendering/caching/CacheRecord.mjs} +1 -1
  245. package/dist/mjs/src/rendering/caching/CacheRecordManager.d.ts +12 -0
  246. package/dist/{src/rendering/caching/CacheRecordManager.js → mjs/src/rendering/caching/CacheRecordManager.mjs} +1 -1
  247. package/dist/mjs/src/rendering/caching/RenderingCache.d.ts +11 -0
  248. package/dist/{src/rendering/caching/RenderingCache.js → mjs/src/rendering/caching/RenderingCache.mjs} +3 -3
  249. package/dist/mjs/src/rendering/caching/RenderingCacheNode.d.ts +29 -0
  250. package/dist/{src/rendering/caching/RenderingCacheNode.js → mjs/src/rendering/caching/RenderingCacheNode.mjs} +3 -3
  251. package/dist/mjs/src/rendering/caching/testUtils.d.ts +9 -0
  252. package/dist/{src/rendering/caching/testUtils.js → mjs/src/rendering/caching/testUtils.mjs} +4 -4
  253. package/dist/mjs/src/rendering/caching/types.d.ts +19 -0
  254. package/dist/mjs/src/rendering/caching/types.mjs +1 -0
  255. package/dist/{src/rendering/lib.js → mjs/src/rendering/lib.d.ts} +2 -0
  256. package/dist/mjs/src/rendering/lib.mjs +5 -0
  257. package/dist/mjs/src/rendering/localization.d.ts +10 -0
  258. package/dist/mjs/src/rendering/renderers/AbstractRenderer.d.ts +68 -0
  259. package/dist/{src/rendering/renderers/AbstractRenderer.js → mjs/src/rendering/renderers/AbstractRenderer.mjs} +3 -3
  260. package/dist/mjs/src/rendering/renderers/CanvasRenderer.d.ts +63 -0
  261. package/dist/{src/rendering/renderers/CanvasRenderer.js → mjs/src/rendering/renderers/CanvasRenderer.mjs} +32 -5
  262. package/dist/mjs/src/rendering/renderers/DummyRenderer.d.ts +35 -0
  263. package/dist/{src/rendering/renderers/DummyRenderer.js → mjs/src/rendering/renderers/DummyRenderer.mjs} +2 -2
  264. package/dist/mjs/src/rendering/renderers/SVGRenderer.d.ts +57 -0
  265. package/dist/{src/rendering/renderers/SVGRenderer.js → mjs/src/rendering/renderers/SVGRenderer.mjs} +33 -7
  266. package/dist/mjs/src/rendering/renderers/TextOnlyRenderer.d.ts +29 -0
  267. package/dist/{src/rendering/renderers/TextOnlyRenderer.js → mjs/src/rendering/renderers/TextOnlyRenderer.mjs} +2 -2
  268. package/dist/mjs/src/testing/beforeEachFile.d.ts +1 -0
  269. package/dist/{src/testing/beforeEachFile.js → mjs/src/testing/beforeEachFile.mjs} +1 -1
  270. package/dist/mjs/src/testing/createEditor.d.ts +4 -0
  271. package/dist/{src/testing/createEditor.js → mjs/src/testing/createEditor.mjs} +2 -2
  272. package/dist/mjs/src/testing/lib.d.ts +2 -0
  273. package/dist/mjs/src/testing/lib.mjs +2 -0
  274. package/dist/mjs/src/testing/loadExpectExtensions.d.ts +2 -0
  275. package/dist/mjs/src/testing/sendPenEvent.d.ts +12 -0
  276. package/dist/mjs/src/testing/sendPenEvent.mjs +19 -0
  277. package/dist/mjs/src/testing/sendTouchEvent.d.ts +42 -0
  278. package/dist/mjs/src/testing/sendTouchEvent.mjs +62 -0
  279. package/dist/mjs/src/toolbar/HTMLToolbar.d.ts +103 -0
  280. package/dist/{src/toolbar/HTMLToolbar.js → mjs/src/toolbar/HTMLToolbar.mjs} +17 -17
  281. package/dist/mjs/src/toolbar/IconProvider.d.ts +62 -0
  282. package/dist/{src/toolbar/IconProvider.js → mjs/src/toolbar/IconProvider.mjs} +4 -4
  283. package/dist/mjs/src/toolbar/lib.mjs +3 -0
  284. package/dist/mjs/src/toolbar/localization.d.ts +49 -0
  285. package/dist/mjs/src/toolbar/makeColorInput.d.ts +6 -0
  286. package/dist/{src/toolbar/makeColorInput.js → mjs/src/toolbar/makeColorInput.mjs} +3 -3
  287. package/dist/mjs/src/toolbar/types.d.ts +4 -0
  288. package/dist/mjs/src/toolbar/types.mjs +1 -0
  289. package/dist/mjs/src/toolbar/widgets/ActionButtonWidget.d.ts +15 -0
  290. package/dist/{src/toolbar/widgets/ActionButtonWidget.js → mjs/src/toolbar/widgets/ActionButtonWidget.mjs} +1 -1
  291. package/dist/mjs/src/toolbar/widgets/BaseToolWidget.d.ts +11 -0
  292. package/dist/{src/toolbar/widgets/BaseToolWidget.js → mjs/src/toolbar/widgets/BaseToolWidget.mjs} +2 -2
  293. package/dist/mjs/src/toolbar/widgets/BaseWidget.d.ts +72 -0
  294. package/dist/{src/toolbar/widgets/BaseWidget.js → mjs/src/toolbar/widgets/BaseWidget.mjs} +3 -3
  295. package/dist/mjs/src/toolbar/widgets/DocumentPropertiesWidget.d.ts +18 -0
  296. package/dist/{src/toolbar/widgets/DocumentPropertiesWidget.js → mjs/src/toolbar/widgets/DocumentPropertiesWidget.mjs} +9 -7
  297. package/dist/mjs/src/toolbar/widgets/EraserToolWidget.d.ts +17 -0
  298. package/dist/{src/toolbar/widgets/EraserToolWidget.js → mjs/src/toolbar/widgets/EraserToolWidget.mjs} +3 -3
  299. package/dist/mjs/src/toolbar/widgets/HandToolWidget.d.ts +17 -0
  300. package/dist/{src/toolbar/widgets/HandToolWidget.js → mjs/src/toolbar/widgets/HandToolWidget.mjs} +7 -7
  301. package/dist/mjs/src/toolbar/widgets/InsertImageWidget.d.ts +19 -0
  302. package/dist/{src/toolbar/widgets/InsertImageWidget.js → mjs/src/toolbar/widgets/InsertImageWidget.mjs} +8 -8
  303. package/dist/mjs/src/toolbar/widgets/OverflowWidget.d.ts +25 -0
  304. package/dist/{src/toolbar/widgets/OverflowWidget.js → mjs/src/toolbar/widgets/OverflowWidget.mjs} +1 -1
  305. package/dist/mjs/src/toolbar/widgets/PenToolWidget.d.ts +27 -0
  306. package/dist/{src/toolbar/widgets/PenToolWidget.js → mjs/src/toolbar/widgets/PenToolWidget.mjs} +11 -10
  307. package/dist/mjs/src/toolbar/widgets/SelectionToolWidget.d.ts +13 -0
  308. package/dist/{src/toolbar/widgets/SelectionToolWidget.js → mjs/src/toolbar/widgets/SelectionToolWidget.mjs} +8 -8
  309. package/dist/mjs/src/toolbar/widgets/TextToolWidget.d.ts +16 -0
  310. package/dist/{src/toolbar/widgets/TextToolWidget.js → mjs/src/toolbar/widgets/TextToolWidget.mjs} +9 -6
  311. package/dist/mjs/src/toolbar/widgets/lib.mjs +10 -0
  312. package/dist/mjs/src/tools/BaseTool.d.ts +22 -0
  313. package/dist/{src/tools/BaseTool.js → mjs/src/tools/BaseTool.mjs} +1 -1
  314. package/dist/mjs/src/tools/Eraser.d.ts +23 -0
  315. package/dist/{src/tools/Eraser.js → mjs/src/tools/Eraser.mjs} +8 -8
  316. package/dist/mjs/src/tools/FindTool.d.ts +21 -0
  317. package/dist/{src/tools/FindTool.js → mjs/src/tools/FindTool.mjs} +2 -2
  318. package/dist/mjs/src/tools/PanZoom.d.ts +52 -0
  319. package/dist/{src/tools/PanZoom.js → mjs/src/tools/PanZoom.mjs} +8 -8
  320. package/dist/mjs/src/tools/PasteHandler.d.ts +23 -0
  321. package/dist/{src/tools/PasteHandler.js → mjs/src/tools/PasteHandler.mjs} +7 -7
  322. package/dist/mjs/src/tools/Pen.d.ts +39 -0
  323. package/dist/{src/tools/Pen.js → mjs/src/tools/Pen.mjs} +5 -5
  324. package/dist/mjs/src/tools/PipetteTool.d.ts +18 -0
  325. package/dist/{src/tools/PipetteTool.js → mjs/src/tools/PipetteTool.mjs} +1 -1
  326. package/dist/mjs/src/tools/SelectionTool/SelectAllShortcutHandler.d.ts +8 -0
  327. package/dist/{src/tools/SelectionTool/SelectAllShortcutHandler.js → mjs/src/tools/SelectionTool/SelectAllShortcutHandler.mjs} +2 -2
  328. package/dist/mjs/src/tools/SelectionTool/Selection.d.ts +64 -0
  329. package/dist/{src/tools/SelectionTool/Selection.js → mjs/src/tools/SelectionTool/Selection.mjs} +12 -12
  330. package/dist/mjs/src/tools/SelectionTool/SelectionHandle.d.ts +38 -0
  331. package/dist/{src/tools/SelectionTool/SelectionHandle.js → mjs/src/tools/SelectionTool/SelectionHandle.mjs} +3 -3
  332. package/dist/mjs/src/tools/SelectionTool/SelectionTool.d.ts +36 -0
  333. package/dist/{src/tools/SelectionTool/SelectionTool.js → mjs/src/tools/SelectionTool/SelectionTool.mjs} +13 -14
  334. package/dist/mjs/src/tools/SelectionTool/TransformMode.d.ts +34 -0
  335. package/dist/{src/tools/SelectionTool/TransformMode.js → mjs/src/tools/SelectionTool/TransformMode.mjs} +4 -4
  336. package/dist/mjs/src/tools/SelectionTool/types.d.ts +9 -0
  337. package/dist/mjs/src/tools/TextTool.d.ts +33 -0
  338. package/dist/{src/tools/TextTool.js → mjs/src/tools/TextTool.mjs} +11 -11
  339. package/dist/mjs/src/tools/ToolController.d.ts +18 -0
  340. package/dist/{src/tools/ToolController.js → mjs/src/tools/ToolController.mjs} +16 -16
  341. package/dist/mjs/src/tools/ToolEnabledGroup.d.ts +6 -0
  342. package/dist/mjs/src/tools/ToolSwitcherShortcut.d.ts +16 -0
  343. package/dist/{src/tools/ToolSwitcherShortcut.js → mjs/src/tools/ToolSwitcherShortcut.mjs} +1 -1
  344. package/dist/mjs/src/tools/ToolbarShortcutHandler.d.ts +12 -0
  345. package/dist/{src/tools/ToolbarShortcutHandler.js → mjs/src/tools/ToolbarShortcutHandler.mjs} +1 -1
  346. package/dist/mjs/src/tools/UndoRedoShortcut.d.ts +8 -0
  347. package/dist/{src/tools/UndoRedoShortcut.js → mjs/src/tools/UndoRedoShortcut.mjs} +1 -1
  348. package/dist/{src/tools/lib.js → mjs/src/tools/lib.d.ts} +1 -1
  349. package/dist/mjs/src/tools/lib.mjs +16 -0
  350. package/dist/mjs/src/tools/localization.d.ts +28 -0
  351. package/dist/mjs/src/types.d.ts +151 -0
  352. package/dist/mjs/src/util/assertions.d.ts +23 -0
  353. package/dist/mjs/src/util/fileToBase64.d.ts +3 -0
  354. package/dist/mjs/src/util/untilNextAnimationFrame.d.ts +3 -0
  355. package/dist/mjs/src/util/waitForTimeout.d.ts +2 -0
  356. package/package.json +34 -33
  357. package/src/Color4.ts +2 -0
  358. package/src/Editor.ts +62 -28
  359. package/src/EditorImage.ts +4 -2
  360. package/src/SVGLoader.ts +4 -0
  361. package/src/lib.ts +2 -1
  362. package/src/rendering/lib.ts +2 -0
  363. package/src/rendering/renderers/CanvasRenderer.ts +27 -0
  364. package/src/rendering/renderers/SVGRenderer.ts +32 -1
  365. package/src/testing/lib.ts +3 -0
  366. package/src/testing/sendPenEvent.ts +31 -0
  367. package/src/testing/sendTouchEvent.ts +36 -1
  368. package/src/toolbar/toolbar.css +5 -0
  369. package/src/toolbar/widgets/DocumentPropertiesWidget.ts +4 -2
  370. package/src/toolbar/widgets/PenToolWidget.ts +1 -0
  371. package/src/toolbar/widgets/TextToolWidget.ts +4 -1
  372. package/src/tools/Eraser.test.ts +11 -10
  373. package/src/tools/PanZoom.test.ts +1 -1
  374. package/src/tools/Pen.test.ts +63 -62
  375. package/src/tools/SelectionTool/SelectionTool.test.ts +15 -14
  376. package/src/tools/SelectionTool/SelectionTool.ts +5 -7
  377. package/tsconfig.json +3 -2
  378. package/tsconfig.mjs.json +9 -0
  379. package/dist/src/testing/sendTouchEvent.d.ts +0 -6
  380. package/dist/src/testing/sendTouchEvent.js +0 -26
  381. /package/dist/{build_tools → cjs/build_tools}/BundledFile.d.ts +0 -0
  382. /package/dist/{build_tools → cjs/build_tools}/buildTranslationTemplate.d.ts +0 -0
  383. /package/dist/{build_tools → cjs/build_tools}/bundle.d.ts +0 -0
  384. /package/dist/{src/components/builders/types.js → cjs/build_tools/postDist.d.ts} +0 -0
  385. /package/dist/{src → cjs/src}/EventDispatcher.d.ts +0 -0
  386. /package/dist/{src → cjs/src}/Pointer.d.ts +0 -0
  387. /package/dist/{src → cjs/src}/UndoRedoHistory.d.ts +0 -0
  388. /package/dist/{src → cjs/src}/Viewport.d.ts +0 -0
  389. /package/dist/{src → cjs/src}/bundle/bundled.d.ts +0 -0
  390. /package/dist/{src → cjs/src}/commands/Command.d.ts +0 -0
  391. /package/dist/{src → cjs/src}/commands/Duplicate.d.ts +0 -0
  392. /package/dist/{src → cjs/src}/commands/Erase.d.ts +0 -0
  393. /package/dist/{src → cjs/src}/commands/SerializableCommand.d.ts +0 -0
  394. /package/dist/{src → cjs/src}/commands/UnresolvedCommand.d.ts +0 -0
  395. /package/dist/{src → cjs/src}/commands/invertCommand.d.ts +0 -0
  396. /package/dist/{src → cjs/src}/commands/lib.d.ts +0 -0
  397. /package/dist/{src → cjs/src}/commands/localization.d.ts +0 -0
  398. /package/dist/{src → cjs/src}/commands/uniteCommands.d.ts +0 -0
  399. /package/dist/{src → cjs/src}/components/AbstractComponent.d.ts +0 -0
  400. /package/dist/{src → cjs/src}/components/ImageBackground.d.ts +0 -0
  401. /package/dist/{src → cjs/src}/components/ImageComponent.d.ts +0 -0
  402. /package/dist/{src → cjs/src}/components/RestylableComponent.d.ts +0 -0
  403. /package/dist/{src → cjs/src}/components/SVGGlobalAttributesObject.d.ts +0 -0
  404. /package/dist/{src → cjs/src}/components/Stroke.d.ts +0 -0
  405. /package/dist/{src → cjs/src}/components/TextComponent.d.ts +0 -0
  406. /package/dist/{src → cjs/src}/components/UnknownSVGObject.d.ts +0 -0
  407. /package/dist/{src → cjs/src}/components/builders/ArrowBuilder.d.ts +0 -0
  408. /package/dist/{src → cjs/src}/components/builders/FreehandLineBuilder.d.ts +0 -0
  409. /package/dist/{src → cjs/src}/components/builders/LineBuilder.d.ts +0 -0
  410. /package/dist/{src → cjs/src}/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +0 -0
  411. /package/dist/{src → cjs/src}/components/builders/RectangleBuilder.d.ts +0 -0
  412. /package/dist/{src → cjs/src}/components/builders/types.d.ts +0 -0
  413. /package/dist/{src → cjs/src}/components/lib.d.ts +0 -0
  414. /package/dist/{src → cjs/src}/components/localization.d.ts +0 -0
  415. /package/dist/{src → cjs/src}/components/util/StrokeSmoother.d.ts +0 -0
  416. /package/dist/{src → cjs/src}/components/util/describeComponentList.d.ts +0 -0
  417. /package/dist/{src → cjs/src}/localization.d.ts +0 -0
  418. /package/dist/{src → cjs/src}/localizations/de.d.ts +0 -0
  419. /package/dist/{src → cjs/src}/localizations/en.d.ts +0 -0
  420. /package/dist/{src → cjs/src}/localizations/es.d.ts +0 -0
  421. /package/dist/{src → cjs/src}/localizations/getLocalizationTable.d.ts +0 -0
  422. /package/dist/{src → cjs/src}/math/LineSegment2.d.ts +0 -0
  423. /package/dist/{src → cjs/src}/math/Mat33.d.ts +0 -0
  424. /package/dist/{src → cjs/src}/math/Path.d.ts +0 -0
  425. /package/dist/{src → cjs/src}/math/Rect2.d.ts +0 -0
  426. /package/dist/{src → cjs/src}/math/Triangle.d.ts +0 -0
  427. /package/dist/{src → cjs/src}/math/Vec2.d.ts +0 -0
  428. /package/dist/{src → cjs/src}/math/Vec3.d.ts +0 -0
  429. /package/dist/{src → cjs/src}/math/lib.d.ts +0 -0
  430. /package/dist/{src → cjs/src}/math/rounding.d.ts +0 -0
  431. /package/dist/{src → cjs/src}/rendering/Display.d.ts +0 -0
  432. /package/dist/{src → cjs/src}/rendering/RenderingStyle.d.ts +0 -0
  433. /package/dist/{src → cjs/src}/rendering/TextRenderingStyle.d.ts +0 -0
  434. /package/dist/{src → cjs/src}/rendering/caching/CacheRecord.d.ts +0 -0
  435. /package/dist/{src → cjs/src}/rendering/caching/CacheRecordManager.d.ts +0 -0
  436. /package/dist/{src → cjs/src}/rendering/caching/RenderingCache.d.ts +0 -0
  437. /package/dist/{src → cjs/src}/rendering/caching/RenderingCacheNode.d.ts +0 -0
  438. /package/dist/{src → cjs/src}/rendering/caching/testUtils.d.ts +0 -0
  439. /package/dist/{src → cjs/src}/rendering/caching/types.d.ts +0 -0
  440. /package/dist/{src → cjs/src}/rendering/localization.d.ts +0 -0
  441. /package/dist/{src → cjs/src}/rendering/renderers/AbstractRenderer.d.ts +0 -0
  442. /package/dist/{src → cjs/src}/rendering/renderers/DummyRenderer.d.ts +0 -0
  443. /package/dist/{src → cjs/src}/rendering/renderers/TextOnlyRenderer.d.ts +0 -0
  444. /package/dist/{src → cjs/src}/testing/beforeEachFile.d.ts +0 -0
  445. /package/dist/{src → cjs/src}/testing/createEditor.d.ts +0 -0
  446. /package/dist/{src → cjs/src}/testing/loadExpectExtensions.d.ts +0 -0
  447. /package/dist/{src → cjs/src}/toolbar/HTMLToolbar.d.ts +0 -0
  448. /package/dist/{src → cjs/src}/toolbar/IconProvider.d.ts +0 -0
  449. /package/dist/{src → cjs/src}/toolbar/lib.d.ts +0 -0
  450. /package/dist/{src → cjs/src}/toolbar/localization.d.ts +0 -0
  451. /package/dist/{src → cjs/src}/toolbar/makeColorInput.d.ts +0 -0
  452. /package/dist/{src → cjs/src}/toolbar/types.d.ts +0 -0
  453. /package/dist/{src → cjs/src}/toolbar/widgets/ActionButtonWidget.d.ts +0 -0
  454. /package/dist/{src → cjs/src}/toolbar/widgets/BaseToolWidget.d.ts +0 -0
  455. /package/dist/{src → cjs/src}/toolbar/widgets/BaseWidget.d.ts +0 -0
  456. /package/dist/{src → cjs/src}/toolbar/widgets/DocumentPropertiesWidget.d.ts +0 -0
  457. /package/dist/{src → cjs/src}/toolbar/widgets/EraserToolWidget.d.ts +0 -0
  458. /package/dist/{src → cjs/src}/toolbar/widgets/HandToolWidget.d.ts +0 -0
  459. /package/dist/{src → cjs/src}/toolbar/widgets/InsertImageWidget.d.ts +0 -0
  460. /package/dist/{src → cjs/src}/toolbar/widgets/OverflowWidget.d.ts +0 -0
  461. /package/dist/{src → cjs/src}/toolbar/widgets/PenToolWidget.d.ts +0 -0
  462. /package/dist/{src → cjs/src}/toolbar/widgets/SelectionToolWidget.d.ts +0 -0
  463. /package/dist/{src → cjs/src}/toolbar/widgets/TextToolWidget.d.ts +0 -0
  464. /package/dist/{src → cjs/src}/toolbar/widgets/lib.d.ts +0 -0
  465. /package/dist/{src → cjs/src}/tools/BaseTool.d.ts +0 -0
  466. /package/dist/{src → cjs/src}/tools/Eraser.d.ts +0 -0
  467. /package/dist/{src → cjs/src}/tools/FindTool.d.ts +0 -0
  468. /package/dist/{src → cjs/src}/tools/PanZoom.d.ts +0 -0
  469. /package/dist/{src → cjs/src}/tools/PasteHandler.d.ts +0 -0
  470. /package/dist/{src → cjs/src}/tools/Pen.d.ts +0 -0
  471. /package/dist/{src → cjs/src}/tools/PipetteTool.d.ts +0 -0
  472. /package/dist/{src → cjs/src}/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -0
  473. /package/dist/{src → cjs/src}/tools/SelectionTool/Selection.d.ts +0 -0
  474. /package/dist/{src → cjs/src}/tools/SelectionTool/SelectionHandle.d.ts +0 -0
  475. /package/dist/{src → cjs/src}/tools/SelectionTool/SelectionTool.d.ts +0 -0
  476. /package/dist/{src → cjs/src}/tools/SelectionTool/TransformMode.d.ts +0 -0
  477. /package/dist/{src → cjs/src}/tools/SelectionTool/types.d.ts +0 -0
  478. /package/dist/{src → cjs/src}/tools/TextTool.d.ts +0 -0
  479. /package/dist/{src → cjs/src}/tools/ToolController.d.ts +0 -0
  480. /package/dist/{src → cjs/src}/tools/ToolEnabledGroup.d.ts +0 -0
  481. /package/dist/{src → cjs/src}/tools/ToolSwitcherShortcut.d.ts +0 -0
  482. /package/dist/{src → cjs/src}/tools/ToolbarShortcutHandler.d.ts +0 -0
  483. /package/dist/{src → cjs/src}/tools/UndoRedoShortcut.d.ts +0 -0
  484. /package/dist/{src → cjs/src}/tools/lib.d.ts +0 -0
  485. /package/dist/{src → cjs/src}/tools/localization.d.ts +0 -0
  486. /package/dist/{src → cjs/src}/types.d.ts +0 -0
  487. /package/dist/{src → cjs/src}/util/assertions.d.ts +0 -0
  488. /package/dist/{src → cjs/src}/util/fileToBase64.d.ts +0 -0
  489. /package/dist/{src → cjs/src}/util/untilNextAnimationFrame.d.ts +0 -0
  490. /package/dist/{src → cjs/src}/util/waitForTimeout.d.ts +0 -0
  491. /package/dist/{build_tools/BundledFile.js → mjs/build_tools/BundledFile.mjs} +0 -0
  492. /package/dist/{src/rendering/caching/types.js → mjs/build_tools/buildTranslationTemplate.d.ts} +0 -0
  493. /package/dist/{src/toolbar/types.js → mjs/build_tools/bundle.d.ts} +0 -0
  494. /package/dist/{src/EventDispatcher.js → mjs/src/EventDispatcher.mjs} +0 -0
  495. /package/dist/{src/commands/Command.js → mjs/src/commands/Command.mjs} +0 -0
  496. /package/dist/{src/commands/lib.js → mjs/src/commands/lib.d.ts} +0 -0
  497. /package/dist/{src/commands/localization.js → mjs/src/commands/localization.mjs} +0 -0
  498. /package/dist/{src/components/localization.js → mjs/src/components/localization.mjs} +0 -0
  499. /package/dist/{src/components/util/describeComponentList.js → mjs/src/components/util/describeComponentList.mjs} +0 -0
  500. /package/dist/{src/math/Triangle.js → mjs/src/math/Triangle.mjs} +0 -0
  501. /package/dist/{src/math/Vec3.js → mjs/src/math/Vec3.mjs} +0 -0
  502. /package/dist/{src/math/lib.js → mjs/src/math/lib.d.ts} +0 -0
  503. /package/dist/{src/math/rounding.js → mjs/src/math/rounding.mjs} +0 -0
  504. /package/dist/{src/rendering/localization.js → mjs/src/rendering/localization.mjs} +0 -0
  505. /package/dist/{src/testing/loadExpectExtensions.js → mjs/src/testing/loadExpectExtensions.mjs} +0 -0
  506. /package/dist/{src/toolbar/lib.js → mjs/src/toolbar/lib.d.ts} +0 -0
  507. /package/dist/{src/toolbar/localization.js → mjs/src/toolbar/localization.mjs} +0 -0
  508. /package/dist/{src/toolbar/widgets/lib.js → mjs/src/toolbar/widgets/lib.d.ts} +0 -0
  509. /package/dist/{src/tools/SelectionTool/types.js → mjs/src/tools/SelectionTool/types.mjs} +0 -0
  510. /package/dist/{src/tools/ToolEnabledGroup.js → mjs/src/tools/ToolEnabledGroup.mjs} +0 -0
  511. /package/dist/{src/tools/localization.js → mjs/src/tools/localization.mjs} +0 -0
  512. /package/dist/{src/types.js → mjs/src/types.mjs} +0 -0
  513. /package/dist/{src/util/assertions.js → mjs/src/util/assertions.mjs} +0 -0
  514. /package/dist/{src/util/fileToBase64.js → mjs/src/util/fileToBase64.mjs} +0 -0
  515. /package/dist/{src/util/untilNextAnimationFrame.js → mjs/src/util/untilNextAnimationFrame.mjs} +0 -0
  516. /package/dist/{src/util/waitForTimeout.js → mjs/src/util/waitForTimeout.mjs} +0 -0
@@ -7,31 +7,32 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import EditorImage from './EditorImage';
11
- import ToolController from './tools/ToolController';
12
- import { InputEvtType, EditorEventType } from './types';
13
- import UndoRedoHistory from './UndoRedoHistory';
14
- import Viewport from './Viewport';
15
- import EventDispatcher from './EventDispatcher';
16
- import { Vec2 } from './math/Vec2';
17
- import Vec3 from './math/Vec3';
18
- import HTMLToolbar from './toolbar/HTMLToolbar';
19
- import Display, { RenderingMode } from './rendering/Display';
20
- import SVGRenderer from './rendering/renderers/SVGRenderer';
21
- import Color4 from './Color4';
22
- import SVGLoader from './SVGLoader';
23
- import Pointer from './Pointer';
24
- import Mat33 from './math/Mat33';
25
- import getLocalizationTable from './localizations/getLocalizationTable';
26
- import IconProvider from './toolbar/IconProvider';
27
- import { toRoundedString } from './math/rounding';
28
- import CanvasRenderer from './rendering/renderers/CanvasRenderer';
29
- import untilNextAnimationFrame from './util/untilNextAnimationFrame';
30
- import fileToBase64 from './util/fileToBase64';
31
- import uniteCommands from './commands/uniteCommands';
32
- import SelectionTool from './tools/SelectionTool/SelectionTool';
33
- import Erase from './commands/Erase';
34
- import ImageBackground, { BackgroundType } from './components/ImageBackground';
10
+ import EditorImage from './EditorImage.mjs';
11
+ import ToolController from './tools/ToolController.mjs';
12
+ import { InputEvtType, EditorEventType } from './types.mjs';
13
+ import UndoRedoHistory from './UndoRedoHistory.mjs';
14
+ import Viewport from './Viewport.mjs';
15
+ import EventDispatcher from './EventDispatcher.mjs';
16
+ import { Vec2 } from './math/Vec2.mjs';
17
+ import Vec3 from './math/Vec3.mjs';
18
+ import HTMLToolbar from './toolbar/HTMLToolbar.mjs';
19
+ import Display, { RenderingMode } from './rendering/Display.mjs';
20
+ import SVGRenderer from './rendering/renderers/SVGRenderer.mjs';
21
+ import Color4 from './Color4.mjs';
22
+ import SVGLoader from './SVGLoader.mjs';
23
+ import Pointer from './Pointer.mjs';
24
+ import Mat33 from './math/Mat33.mjs';
25
+ import getLocalizationTable from './localizations/getLocalizationTable.mjs';
26
+ import IconProvider from './toolbar/IconProvider.mjs';
27
+ import { toRoundedString } from './math/rounding.mjs';
28
+ import CanvasRenderer from './rendering/renderers/CanvasRenderer.mjs';
29
+ import untilNextAnimationFrame from './util/untilNextAnimationFrame.mjs';
30
+ import fileToBase64 from './util/fileToBase64.mjs';
31
+ import uniteCommands from './commands/uniteCommands.mjs';
32
+ import SelectionTool from './tools/SelectionTool/SelectionTool.mjs';
33
+ import Erase from './commands/Erase.mjs';
34
+ import ImageBackground, { BackgroundType } from './components/ImageBackground.mjs';
35
+ import sendPenEvent from './testing/sendPenEvent.mjs';
35
36
  /**
36
37
  * The main entrypoint for the full editor.
37
38
  *
@@ -46,6 +47,9 @@ import ImageBackground, { BackgroundType } from './components/ImageBackground';
46
47
  * // Do something with saveData...
47
48
  * });
48
49
  * ```
50
+ *
51
+ * See also
52
+ * [`docs/example/example.ts`](https://github.com/personalizedrefrigerator/js-draw/blob/main/docs/example/example.ts#L15).
49
53
  */
50
54
  export class Editor {
51
55
  /**
@@ -62,6 +66,8 @@ export class Editor {
62
66
  *
63
67
  * // Add the default toolbar
64
68
  * const toolbar = editor.addToolbar();
69
+ *
70
+ * // Add a save button
65
71
  * toolbar.addActionButton({
66
72
  * label: 'Save'
67
73
  * icon: createSaveIcon(),
@@ -156,6 +162,7 @@ export class Editor {
156
162
  *
157
163
  * @example
158
164
  * ```
165
+ * // Set the editor's height to 500px
159
166
  * editor.getRootElement().style.height = '500px';
160
167
  * ```
161
168
  */
@@ -172,8 +179,10 @@ export class Editor {
172
179
  this.loadingWarning.style.display = 'none';
173
180
  this.announceForAccessibility(this.localization.doneLoading);
174
181
  }
175
- // Announce `message` for screen readers. If `message` is the same as the previous
176
- // message, it is re-announced.
182
+ /**
183
+ * Announce `message` for screen readers. If `message` is the same as the previous
184
+ * message, it is re-announced.
185
+ */
177
186
  announceForAccessibility(message) {
178
187
  // Force re-announcing an announcement if announced again.
179
188
  if (message === this.previousAccessibilityAnnouncement) {
@@ -424,6 +433,25 @@ export class Editor {
424
433
  }
425
434
  });
426
435
  }
436
+ /**
437
+ * Forward pointer events from `elem` to this editor. Such that right-click/right-click drag
438
+ * events are also forwarded, `elem`'s contextmenu is disabled.
439
+ *
440
+ * @example
441
+ * ```ts
442
+ * const overlay = document.createElement('div');
443
+ * editor.createHTMLOverlay(overlay);
444
+ *
445
+ * // Send all pointer events that don't have the control key pressed
446
+ * // to the editor.
447
+ * editor.handlePointerEventsFrom(overlay, (event) => {
448
+ * if (event.ctrlKey) {
449
+ * return false;
450
+ * }
451
+ * return true;
452
+ * });
453
+ * ```
454
+ */
427
455
  handlePointerEventsFrom(elem, filter) {
428
456
  // May be required to prevent text selection on iOS/Safari:
429
457
  // See https://stackoverflow.com/a/70992717/17055750
@@ -560,7 +588,7 @@ export class Editor {
560
588
  * Schedule a re-render for some time in the near future. Does not schedule an additional
561
589
  * re-render if a re-render is already queued.
562
590
  *
563
- * @returns a promise that resolves when
591
+ * @returns a promise that resolves when re-rendering has completed.
564
592
  */
565
593
  queueRerender() {
566
594
  if (!this.rerenderQueued) {
@@ -582,6 +610,11 @@ export class Editor {
582
610
  isRerenderQueued() {
583
611
  return this.rerenderQueued;
584
612
  }
613
+ /**
614
+ * Re-renders the entire image.
615
+ *
616
+ * @see {@link Editor.queueRerender}
617
+ */
585
618
  rerender(showImageBounds = true) {
586
619
  this.display.startRerender();
587
620
  // Don't render if the display has zero size.
@@ -601,6 +634,9 @@ export class Editor {
601
634
  this.nextRerenderListeners = [];
602
635
  }
603
636
  /**
637
+ * Draws the given path onto the wet ink renderer. The given path will
638
+ * be displayed on top of the main image.
639
+ *
604
640
  * @see {@link Display.getWetInkRenderer} {@link Display.flatten}
605
641
  */
606
642
  drawWetInk(...path) {
@@ -609,17 +645,26 @@ export class Editor {
609
645
  }
610
646
  }
611
647
  /**
648
+ * Clears the wet ink display.
649
+ *
612
650
  * @see {@link Display.getWetInkRenderer}
613
651
  */
614
652
  clearWetInk() {
615
653
  this.display.getWetInkRenderer().clear();
616
654
  }
617
- // Focuses the region used for text input/key commands.
655
+ /**
656
+ * Focuses the region used for text input/key commands.
657
+ */
618
658
  focus() {
619
659
  this.renderingRegion.focus();
620
660
  }
621
- // Creates an element that will be positioned on top of the dry/wet ink
622
- // renderers.
661
+ /**
662
+ * Creates an element that will be positioned on top of the dry/wet ink
663
+ * renderers.
664
+ *
665
+ * This is useful for displaying content on top of the rendered content
666
+ * (e.g. a selection box).
667
+ */
623
668
  createHTMLOverlay(overlay) {
624
669
  overlay.classList.add('overlay');
625
670
  this.container.appendChild(overlay);
@@ -643,19 +688,17 @@ export class Editor {
643
688
  altKey,
644
689
  });
645
690
  }
646
- // Dispatch a pen event to the currently selected tool.
647
- // Intended primarially for unit tests.
691
+ /**
692
+ * Dispatch a pen event to the currently selected tool.
693
+ * Intended primarially for unit tests.
694
+ *
695
+ * @deprecated
696
+ * @see {@link sendPenEvent} {@link sendTouchEvent}
697
+ */
648
698
  sendPenEvent(eventType, point,
649
699
  // @deprecated
650
700
  allPointers) {
651
- const mainPointer = Pointer.ofCanvasPoint(point, eventType !== InputEvtType.PointerUpEvt, this.viewport);
652
- this.toolController.dispatchInputEvent({
653
- kind: eventType,
654
- allPointers: allPointers !== null && allPointers !== void 0 ? allPointers : [
655
- mainPointer,
656
- ],
657
- current: mainPointer,
658
- });
701
+ sendPenEvent(this, eventType, point, allPointers);
659
702
  }
660
703
  addAndCenterComponents(components, selectComponents = true) {
661
704
  return __awaiter(this, void 0, void 0, function* () {
@@ -717,9 +760,8 @@ export class Editor {
717
760
  }
718
761
  toSVG() {
719
762
  const importExportViewport = this.image.getImportExportViewport().getTemporaryClone();
720
- const svgNameSpace = 'http://www.w3.org/2000/svg';
721
- const result = document.createElementNS(svgNameSpace, 'svg');
722
- const renderer = new SVGRenderer(result, importExportViewport);
763
+ const sanitize = false;
764
+ const { element: result, renderer } = SVGRenderer.fromViewport(importExportViewport, sanitize);
723
765
  const origTransform = importExportViewport.canvasToScreenTransform;
724
766
  // Render with (0,0) at (0,0) — we'll handle translation with
725
767
  // the viewBox property.
@@ -731,11 +773,6 @@ export class Editor {
731
773
  result.setAttribute('viewBox', [rect.x, rect.y, rect.w, rect.h].map(part => toRoundedString(part)).join(' '));
732
774
  result.setAttribute('width', toRoundedString(rect.w));
733
775
  result.setAttribute('height', toRoundedString(rect.h));
734
- // Ensure the image can be identified as an SVG if downloaded.
735
- // See https://jwatt.org/svg/authoring/
736
- result.setAttribute('version', '1.1');
737
- result.setAttribute('baseProfile', 'full');
738
- result.setAttribute('xmlns', svgNameSpace);
739
776
  return result;
740
777
  }
741
778
  /**
@@ -0,0 +1,97 @@
1
+ import AbstractRenderer from './rendering/renderers/AbstractRenderer';
2
+ import Viewport from './Viewport';
3
+ import AbstractComponent from './components/AbstractComponent';
4
+ import Rect2 from './math/Rect2';
5
+ import RenderingCache from './rendering/caching/RenderingCache';
6
+ import SerializableCommand from './commands/SerializableCommand';
7
+ import EventDispatcher from './EventDispatcher';
8
+ export declare const sortLeavesByZIndex: (leaves: Array<ImageNode>) => void;
9
+ export declare enum EditorImageEventType {
10
+ ExportViewportChanged = 0
11
+ }
12
+ export type EditorImageNotifier = EventDispatcher<EditorImageEventType, {
13
+ image: EditorImage;
14
+ }>;
15
+ export default class EditorImage {
16
+ private root;
17
+ private background;
18
+ private componentsById;
19
+ /** Viewport for the exported/imported image. */
20
+ private importExportViewport;
21
+ readonly notifier: EditorImageNotifier;
22
+ constructor();
23
+ getBackgroundComponents(): AbstractComponent[];
24
+ findParent(elem: AbstractComponent): ImageNode | null;
25
+ queueRerenderOf(elem: AbstractComponent): void;
26
+ /** @internal */
27
+ renderWithCache(screenRenderer: AbstractRenderer, cache: RenderingCache, viewport: Viewport): void;
28
+ /**
29
+ * Renders all nodes visible from `viewport` (or all nodes if `viewport = null`).
30
+ *
31
+ * `viewport` is used to improve rendering performance. If given, it must match
32
+ * the viewport used by the `renderer` (if any).
33
+ */
34
+ render(renderer: AbstractRenderer, viewport: Viewport | null): void;
35
+ /** Renders all nodes, even ones not within the viewport. @internal */
36
+ renderAll(renderer: AbstractRenderer): void;
37
+ /** @returns all elements in the image, sorted by z-index. This can be slow for large images. */
38
+ getAllElements(): AbstractComponent[];
39
+ /** @returns a list of `AbstractComponent`s intersecting `region`, sorted by z-index. */
40
+ getElementsIntersectingRegion(region: Rect2): AbstractComponent[];
41
+ /** @internal */
42
+ onDestroyElement(elem: AbstractComponent): void;
43
+ /**
44
+ * @returns the AbstractComponent with `id`, if it exists.
45
+ *
46
+ * @see {@link AbstractComponent.getId}
47
+ */
48
+ lookupElement(id: string): AbstractComponent | null;
49
+ private addElementDirectly;
50
+ private removeElementDirectly;
51
+ /**
52
+ * Returns a command that adds the given element to the `EditorImage`.
53
+ * If `applyByFlattening` is true, the content of the wet ink renderer is
54
+ * rendered onto the main rendering canvas instead of doing a full re-render.
55
+ *
56
+ * @see {@link Display.flatten}
57
+ */
58
+ static addElement(elem: AbstractComponent, applyByFlattening?: boolean): SerializableCommand;
59
+ /** @see EditorImage.addElement */
60
+ addElement(elem: AbstractComponent, applyByFlattening?: boolean): SerializableCommand;
61
+ private static AddElementCommand;
62
+ /**
63
+ * @returns a `Viewport` for rendering the image when importing/exporting.
64
+ */
65
+ getImportExportViewport(): Viewport;
66
+ setImportExportRect(imageRect: Rect2): SerializableCommand;
67
+ private static SetImportExportRectCommand;
68
+ }
69
+ type TooSmallToRenderCheck = (rect: Rect2) => boolean;
70
+ /** Part of the Editor's image. @internal */
71
+ export declare class ImageNode {
72
+ private parent;
73
+ private content;
74
+ private bbox;
75
+ private children;
76
+ private targetChildCount;
77
+ private id;
78
+ private static idCounter;
79
+ constructor(parent?: ImageNode | null);
80
+ getId(): number;
81
+ onContentChange(): void;
82
+ getContent(): AbstractComponent | null;
83
+ getParent(): ImageNode | null;
84
+ private getChildrenIntersectingRegion;
85
+ getChildrenOrSelfIntersectingRegion(region: Rect2): ImageNode[];
86
+ getLeavesIntersectingRegion(region: Rect2, isTooSmall?: TooSmallToRenderCheck): ImageNode[];
87
+ getChildWithContent(target: AbstractComponent): ImageNode | null;
88
+ getLeaves(): ImageNode[];
89
+ addLeaf(leaf: AbstractComponent): ImageNode;
90
+ getBBox(): Rect2;
91
+ recomputeBBox(bubbleUp: boolean): void;
92
+ private updateParents;
93
+ private rebalance;
94
+ remove(): void;
95
+ render(renderer: AbstractRenderer, visibleRect?: Rect2): void;
96
+ }
97
+ export {};
@@ -1,12 +1,12 @@
1
1
  var _a, _b, _c;
2
- import Viewport from './Viewport';
3
- import AbstractComponent from './components/AbstractComponent';
4
- import Rect2 from './math/Rect2';
5
- import SerializableCommand from './commands/SerializableCommand';
6
- import EventDispatcher from './EventDispatcher';
7
- import { Vec2 } from './math/Vec2';
8
- import Mat33 from './math/Mat33';
9
- import { assertIsNumber, assertIsNumberArray } from './util/assertions';
2
+ import Viewport from './Viewport.mjs';
3
+ import AbstractComponent from './components/AbstractComponent.mjs';
4
+ import Rect2 from './math/Rect2.mjs';
5
+ import SerializableCommand from './commands/SerializableCommand.mjs';
6
+ import EventDispatcher from './EventDispatcher.mjs';
7
+ import { Vec2 } from './math/Vec2.mjs';
8
+ import Mat33 from './math/Mat33.mjs';
9
+ import { assertIsNumber, assertIsNumberArray } from './util/assertions.mjs';
10
10
  // @internal Sort by z-index, low to high
11
11
  export const sortLeavesByZIndex = (leaves) => {
12
12
  leaves.sort((a, b) => a.getContent().getZIndex() - b.getContent().getZIndex());
@@ -67,8 +67,10 @@ export default class EditorImage {
67
67
  cache.render(screenRenderer, this.root, viewport);
68
68
  }
69
69
  /**
70
- * Renders all nodes visible from `viewport` (or all nodes if `viewport = null`)
71
- * @internal
70
+ * Renders all nodes visible from `viewport` (or all nodes if `viewport = null`).
71
+ *
72
+ * `viewport` is used to improve rendering performance. If given, it must match
73
+ * the viewport used by the `renderer` (if any).
72
74
  */
73
75
  render(renderer, viewport) {
74
76
  this.background.render(renderer, viewport === null || viewport === void 0 ? void 0 : viewport.visibleRect);
@@ -0,0 +1,30 @@
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
+ type CallbackHandler<EventType> = (data: EventType) => void;
19
+ export interface DispatcherEventListener {
20
+ remove: () => void;
21
+ }
22
+ export default class EventDispatcher<EventKeyType extends string | symbol | number, EventMessageType> {
23
+ private listeners;
24
+ constructor();
25
+ dispatch(eventName: EventKeyType, event: EventMessageType): void;
26
+ on(eventName: EventKeyType, callback: CallbackHandler<EventMessageType>): DispatcherEventListener;
27
+ /** Removes an event listener. This is equivalent to calling `.remove()` on the object returned by `.on`. */
28
+ off(eventName: EventKeyType, callback: CallbackHandler<EventMessageType>): void;
29
+ }
30
+ export {};
@@ -0,0 +1,24 @@
1
+ import { Point2 } from './math/Vec2';
2
+ import Viewport from './Viewport';
3
+ export declare enum PointerDevice {
4
+ Pen = 0,
5
+ Eraser = 1,
6
+ Touch = 2,
7
+ PrimaryButtonMouse = 3,
8
+ RightButtonMouse = 4,
9
+ Other = 5
10
+ }
11
+ export default class Pointer {
12
+ readonly screenPos: Point2;
13
+ readonly canvasPos: Point2;
14
+ readonly pressure: number | null;
15
+ readonly isPrimary: boolean;
16
+ readonly down: boolean;
17
+ readonly device: PointerDevice;
18
+ readonly id: number;
19
+ readonly timeStamp: number;
20
+ private constructor();
21
+ snappedToGrid(viewport: Viewport): Pointer;
22
+ static ofEvent(evt: PointerEvent, isDown: boolean, viewport: Viewport, relativeTo?: HTMLElement): Pointer;
23
+ static ofCanvasPoint(canvasPos: Point2, isDown: boolean, viewport: Viewport, id?: number, device?: PointerDevice, isPrimary?: boolean, pressure?: number | null): Pointer;
24
+ }
@@ -1,4 +1,4 @@
1
- import { Vec2 } from './math/Vec2';
1
+ import { Vec2 } from './math/Vec2.mjs';
2
2
  export var PointerDevice;
3
3
  (function (PointerDevice) {
4
4
  PointerDevice[PointerDevice["Pen"] = 0] = "Pen";
@@ -0,0 +1,48 @@
1
+ import Rect2 from './math/Rect2';
2
+ import { ComponentAddedListener, ImageLoader, OnDetermineExportRectListener, OnProgressListener } from './types';
3
+ export declare const defaultSVGViewRect: Rect2;
4
+ export declare const svgAttributesDataKey = "svgAttrs";
5
+ export declare const svgStyleAttributesDataKey = "svgStyleAttrs";
6
+ export type SVGLoaderUnknownAttribute = [string, string];
7
+ export type SVGLoaderUnknownStyleAttribute = {
8
+ key: string;
9
+ value: string;
10
+ priority?: string;
11
+ };
12
+ export default class SVGLoader implements ImageLoader {
13
+ private source;
14
+ private onFinish?;
15
+ private readonly storeUnknown;
16
+ private onAddComponent;
17
+ private onProgress;
18
+ private onDetermineExportRect;
19
+ private processedCount;
20
+ private totalToProcess;
21
+ private rootViewBox;
22
+ private constructor();
23
+ private getStyle;
24
+ private strokeDataFromElem;
25
+ private attachUnrecognisedAttrs;
26
+ private addPath;
27
+ private addBackground;
28
+ private getTransform;
29
+ private makeText;
30
+ private addText;
31
+ private addImage;
32
+ private addUnknownNode;
33
+ private updateViewBox;
34
+ private updateSVGAttrs;
35
+ private visit;
36
+ private getSourceAttrs;
37
+ start(onAddComponent: ComponentAddedListener, onProgress: OnProgressListener, onDetermineExportRect?: OnDetermineExportRectListener | null): Promise<void>;
38
+ /**
39
+ * Create an `SVGLoader` from the content of an SVG image. SVGs are loaded within a sandboxed
40
+ * iframe with `sandbox="allow-same-origin"`
41
+ * [thereby disabling JavaScript](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#sandbox).
42
+ *
43
+ * @see {@link Editor.loadFrom}
44
+ * @param text - Textual representation of the SVG (e.g. `<svg viewbox='...'>...</svg>`).
45
+ * @param sanitize - if `true`, don't store unknown attributes.
46
+ */
47
+ static fromString(text: string, sanitize?: boolean): SVGLoader;
48
+ }
@@ -7,17 +7,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import Color4 from './Color4';
11
- import ImageBackground, { BackgroundType, imageBackgroundCSSClassName } from './components/ImageBackground';
12
- import ImageComponent from './components/ImageComponent';
13
- import Stroke from './components/Stroke';
14
- import SVGGlobalAttributesObject from './components/SVGGlobalAttributesObject';
15
- import TextComponent from './components/TextComponent';
16
- import UnknownSVGObject from './components/UnknownSVGObject';
17
- import Mat33 from './math/Mat33';
18
- import Path from './math/Path';
19
- import Rect2 from './math/Rect2';
20
- import { Vec2 } from './math/Vec2';
10
+ import Color4 from './Color4.mjs';
11
+ import ImageBackground, { BackgroundType, imageBackgroundCSSClassName } from './components/ImageBackground.mjs';
12
+ import ImageComponent from './components/ImageComponent.mjs';
13
+ import Stroke from './components/Stroke.mjs';
14
+ import SVGGlobalAttributesObject from './components/SVGGlobalAttributesObject.mjs';
15
+ import TextComponent from './components/TextComponent.mjs';
16
+ import UnknownSVGObject from './components/UnknownSVGObject.mjs';
17
+ import Mat33 from './math/Mat33.mjs';
18
+ import Path from './math/Path.mjs';
19
+ import Rect2 from './math/Rect2.mjs';
20
+ import { Vec2 } from './math/Vec2.mjs';
21
21
  // Size of a loaded image if no size is specified.
22
22
  export const defaultSVGViewRect = new Rect2(0, 0, 500, 500);
23
23
  // Key to retrieve unrecognised attributes from an AbstractComponent
@@ -387,6 +387,10 @@ export default class SVGLoader {
387
387
  });
388
388
  }
389
389
  /**
390
+ * Create an `SVGLoader` from the content of an SVG image. SVGs are loaded within a sandboxed
391
+ * iframe with `sandbox="allow-same-origin"`
392
+ * [thereby disabling JavaScript](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#sandbox).
393
+ *
390
394
  * @see {@link Editor.loadFrom}
391
395
  * @param text - Textual representation of the SVG (e.g. `<svg viewbox='...'>...</svg>`).
392
396
  * @param sanitize - if `true`, don't store unknown attributes.
@@ -0,0 +1,19 @@
1
+ import Editor from './Editor';
2
+ import Command from './commands/Command';
3
+ type AnnounceRedoCallback = (command: Command) => void;
4
+ type AnnounceUndoCallback = (command: Command) => void;
5
+ declare class UndoRedoHistory {
6
+ #private;
7
+ private readonly editor;
8
+ private announceRedoCallback;
9
+ private announceUndoCallback;
10
+ private readonly maxUndoRedoStackSize;
11
+ constructor(editor: Editor, announceRedoCallback: AnnounceRedoCallback, announceUndoCallback: AnnounceUndoCallback);
12
+ private fireUpdateEvent;
13
+ push(command: Command, apply?: boolean): void;
14
+ undo(): void;
15
+ redo(): void;
16
+ get undoStackSize(): number;
17
+ get redoStackSize(): number;
18
+ }
19
+ export default UndoRedoHistory;
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _UndoRedoHistory_undoStack, _UndoRedoHistory_redoStack;
13
- import { EditorEventType, UndoEventType } from './types';
13
+ import { EditorEventType, UndoEventType } from './types.mjs';
14
14
  class UndoRedoHistory {
15
15
  // @internal
16
16
  constructor(editor, announceRedoCallback, announceUndoCallback) {
@@ -0,0 +1,71 @@
1
+ import Command from './commands/Command';
2
+ import Mat33 from './math/Mat33';
3
+ import Rect2 from './math/Rect2';
4
+ import { Point2, Vec2 } from './math/Vec2';
5
+ import Vec3 from './math/Vec3';
6
+ import { StrokeDataPoint } from './types';
7
+ type PointDataType<T extends Point2 | StrokeDataPoint | number> = T extends Point2 ? Point2 : number;
8
+ export declare abstract class ViewportTransform extends Command {
9
+ abstract readonly transform: Mat33;
10
+ }
11
+ type TransformChangeCallback = (oldTransform: Mat33, newTransform: Mat33) => void;
12
+ export declare class Viewport {
13
+ private onTransformChangeCallback;
14
+ private static ViewportTransform;
15
+ private transform;
16
+ private inverseTransform;
17
+ private screenRect;
18
+ constructor(onTransformChangeCallback: TransformChangeCallback);
19
+ /**
20
+ * @returns a temporary copy of `this` that does not notify when modified. This is
21
+ * useful when rendering with a temporarily different viewport.
22
+ */
23
+ getTemporaryClone(): Viewport;
24
+ updateScreenSize(screenSize: Vec2): void;
25
+ /** Get the screen's visible region transformed into canvas space. */
26
+ get visibleRect(): Rect2;
27
+ /** @returns the given point, but in canvas coordinates */
28
+ screenToCanvas(screenPoint: Point2): Point2;
29
+ /** @returns the given point transformed into screen coordinates. */
30
+ canvasToScreen(canvasPoint: Point2): Point2;
31
+ /** @returns a command that transforms the canvas by `transform`. */
32
+ static transformBy(transform: Mat33): ViewportTransform;
33
+ /**
34
+ * Updates the transformation directly. Using `transformBy` is preferred.
35
+ * @param newTransform - should map from canvas coordinates to screen coordinates.
36
+ */
37
+ resetTransform(newTransform?: Mat33): void;
38
+ get screenToCanvasTransform(): Mat33;
39
+ get canvasToScreenTransform(): Mat33;
40
+ /** @returns the size of the visible region in pixels. */
41
+ getScreenRectSize(): Vec2;
42
+ /** Alias for `getScreenRectSize`. @deprecated */
43
+ getResolution(): Vec3;
44
+ /** @returns the amount a vector on the canvas is scaled to become a vector on the screen. */
45
+ getScaleFactor(): number;
46
+ /**
47
+ * @returns `getScaleFactor()` rounded to the nearest power of 10.
48
+ * For example, if `getScaleFactor()` returns 101, `getScaleFactorToNearestPowerOfTen()`
49
+ * should return `100` because `100` is the nearest power of 10 to 101.
50
+ */
51
+ getScaleFactorToNearestPowerOfTen(): number;
52
+ private getScaleFactorToNearestPowerOf;
53
+ snapToGrid(canvasPos: Point2): Vec3;
54
+ /** Returns the size of one screen pixel in canvas units. */
55
+ getSizeOfPixelOnCanvas(): number;
56
+ /**
57
+ * @returns the angle of the canvas in radians.
58
+ * This is the angle by which the canvas is rotated relative to the screen.
59
+ */
60
+ getRotationAngle(): number;
61
+ /**
62
+ * Rounds the given `point` to a multiple of 10 such that it is within `tolerance` of
63
+ * its original location. This is useful for preparing data for base-10 conversion.
64
+ */
65
+ static roundPoint<T extends Point2 | number>(point: T, tolerance: number): PointDataType<T>;
66
+ roundPoint(point: Point2): Point2;
67
+ static roundScaleRatio(scaleRatio: number, roundAmount?: number): number;
68
+ computeZoomToTransform(toMakeVisible: Rect2, allowZoomIn?: boolean, allowZoomOut?: boolean): Mat33;
69
+ zoomTo(toMakeVisible: Rect2, allowZoomIn?: boolean, allowZoomOut?: boolean): Command;
70
+ }
71
+ export default Viewport;
@@ -10,11 +10,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _inverseTransform, _a;
13
- import Command from './commands/Command';
14
- import Mat33 from './math/Mat33';
15
- import Rect2 from './math/Rect2';
16
- import { Vec2 } from './math/Vec2';
17
- import Vec3 from './math/Vec3';
13
+ import Command from './commands/Command.mjs';
14
+ import Mat33 from './math/Mat33.mjs';
15
+ import Rect2 from './math/Rect2.mjs';
16
+ import { Vec2 } from './math/Vec2.mjs';
17
+ import Vec3 from './math/Vec3.mjs';
18
18
  export class ViewportTransform extends Command {
19
19
  }
20
20
  export class Viewport {
@@ -0,0 +1,4 @@
1
+ import '../styles';
2
+ import Editor from '../Editor';
3
+ export * from '../lib';
4
+ export default Editor;
@@ -1,5 +1,5 @@
1
1
  // Main entrypoint for Webpack when building a bundle for release.
2
2
  import '../styles';
3
- import Editor from '../Editor';
4
- export * from '../lib';
3
+ import Editor from '../Editor.mjs';
4
+ export * from '../lib.mjs';
5
5
  export default Editor;