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,59 @@
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
+ exports.makeOutlinedRectangleBuilder = exports.makeFilledRectangleBuilder = void 0;
7
+ const Mat33_1 = __importDefault(require("../../math/Mat33"));
8
+ const Path_1 = __importDefault(require("../../math/Path"));
9
+ const Rect2_1 = __importDefault(require("../../math/Rect2"));
10
+ const Stroke_1 = __importDefault(require("../Stroke"));
11
+ const makeFilledRectangleBuilder = (initialPoint, viewport) => {
12
+ return new RectangleBuilder(initialPoint, true, viewport);
13
+ };
14
+ exports.makeFilledRectangleBuilder = makeFilledRectangleBuilder;
15
+ const makeOutlinedRectangleBuilder = (initialPoint, viewport) => {
16
+ return new RectangleBuilder(initialPoint, false, viewport);
17
+ };
18
+ exports.makeOutlinedRectangleBuilder = makeOutlinedRectangleBuilder;
19
+ class RectangleBuilder {
20
+ constructor(startPoint, filled, viewport) {
21
+ this.startPoint = startPoint;
22
+ this.filled = filled;
23
+ this.viewport = viewport;
24
+ // Initially, the start and end points are the same.
25
+ this.endPoint = startPoint;
26
+ }
27
+ getBBox() {
28
+ const preview = this.buildPreview();
29
+ return preview.getBBox();
30
+ }
31
+ buildPreview() {
32
+ const canvasAngle = this.viewport.getRotationAngle();
33
+ const rotationMat = Mat33_1.default.zRotation(-canvasAngle);
34
+ // Adjust startPoint and endPoint such that applying [rotationMat] to them
35
+ // brings them to this.startPoint and this.endPoint.
36
+ const startPoint = rotationMat.inverse().transformVec2(this.startPoint.pos);
37
+ const endPoint = rotationMat.inverse().transformVec2(this.endPoint.pos);
38
+ const rect = Rect2_1.default.fromCorners(startPoint, endPoint);
39
+ const path = Path_1.default.fromRect(rect, this.filled ? null : this.endPoint.width).transformedBy(
40
+ // Rotate the canvas rectangle so that its rotation matches the screen
41
+ rotationMat).mapPoints(point => this.viewport.roundPoint(point));
42
+ const preview = new Stroke_1.default([
43
+ path.toRenderable({
44
+ fill: this.endPoint.color
45
+ }),
46
+ ]);
47
+ return preview;
48
+ }
49
+ build() {
50
+ return this.buildPreview();
51
+ }
52
+ preview(renderer) {
53
+ this.buildPreview().render(renderer);
54
+ }
55
+ addPoint(point) {
56
+ this.endPoint = point;
57
+ }
58
+ }
59
+ exports.default = RectangleBuilder;
@@ -0,0 +1,12 @@
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
+ export interface ComponentBuilder {
7
+ getBBox(): Rect2;
8
+ build(): AbstractComponent;
9
+ preview(renderer: AbstractRenderer): void;
10
+ addPoint(point: StrokeDataPoint): void;
11
+ }
12
+ export type ComponentBuilderFactory = (startPoint: StrokeDataPoint, viewport: Viewport) => ComponentBuilder;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ export * from './builders/types';
2
+ export { makeFreehandLineBuilder } from './builders/FreehandLineBuilder';
3
+ export { makePressureSensitiveFreehandLineBuilder } from './builders/PressureSensitiveFreehandLineBuilder';
4
+ export { default as StrokeSmoother, Curve as StrokeSmootherCurve } from './util/StrokeSmoother';
5
+ export * from './AbstractComponent';
6
+ export { default as AbstractComponent } from './AbstractComponent';
7
+ import Stroke from './Stroke';
8
+ import TextComponent from './TextComponent';
9
+ import ImageComponent from './ImageComponent';
10
+ import RestyleableComponent from './RestylableComponent';
11
+ import { createRestyleComponentCommand, isRestylableComponent, ComponentStyle as RestyleableComponentStyle } from './RestylableComponent';
12
+ import ImageBackground from './ImageBackground';
13
+ export { Stroke, TextComponent as Text, RestyleableComponent, createRestyleComponentCommand, isRestylableComponent, RestyleableComponentStyle, TextComponent, Stroke as StrokeComponent, ImageBackground as BackgroundComponent, ImageComponent, };
@@ -0,0 +1,43 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.ImageComponent = exports.BackgroundComponent = exports.StrokeComponent = exports.TextComponent = exports.isRestylableComponent = exports.createRestyleComponentCommand = exports.Text = exports.Stroke = exports.AbstractComponent = exports.StrokeSmoother = exports.makePressureSensitiveFreehandLineBuilder = exports.makeFreehandLineBuilder = void 0;
21
+ __exportStar(require("./builders/types"), exports);
22
+ var FreehandLineBuilder_1 = require("./builders/FreehandLineBuilder");
23
+ Object.defineProperty(exports, "makeFreehandLineBuilder", { enumerable: true, get: function () { return FreehandLineBuilder_1.makeFreehandLineBuilder; } });
24
+ var PressureSensitiveFreehandLineBuilder_1 = require("./builders/PressureSensitiveFreehandLineBuilder");
25
+ Object.defineProperty(exports, "makePressureSensitiveFreehandLineBuilder", { enumerable: true, get: function () { return PressureSensitiveFreehandLineBuilder_1.makePressureSensitiveFreehandLineBuilder; } });
26
+ var StrokeSmoother_1 = require("./util/StrokeSmoother");
27
+ Object.defineProperty(exports, "StrokeSmoother", { enumerable: true, get: function () { return __importDefault(StrokeSmoother_1).default; } });
28
+ __exportStar(require("./AbstractComponent"), exports);
29
+ var AbstractComponent_1 = require("./AbstractComponent");
30
+ Object.defineProperty(exports, "AbstractComponent", { enumerable: true, get: function () { return __importDefault(AbstractComponent_1).default; } });
31
+ const Stroke_1 = __importDefault(require("./Stroke"));
32
+ exports.Stroke = Stroke_1.default;
33
+ exports.StrokeComponent = Stroke_1.default;
34
+ const TextComponent_1 = __importDefault(require("./TextComponent"));
35
+ exports.Text = TextComponent_1.default;
36
+ exports.TextComponent = TextComponent_1.default;
37
+ const ImageComponent_1 = __importDefault(require("./ImageComponent"));
38
+ exports.ImageComponent = ImageComponent_1.default;
39
+ const RestylableComponent_1 = require("./RestylableComponent");
40
+ Object.defineProperty(exports, "createRestyleComponentCommand", { enumerable: true, get: function () { return RestylableComponent_1.createRestyleComponentCommand; } });
41
+ Object.defineProperty(exports, "isRestylableComponent", { enumerable: true, get: function () { return RestylableComponent_1.isRestylableComponent; } });
42
+ const ImageBackground_1 = __importDefault(require("./ImageBackground"));
43
+ exports.BackgroundComponent = ImageBackground_1.default;
@@ -0,0 +1,11 @@
1
+ export interface ImageComponentLocalization {
2
+ unlabeledImageNode: string;
3
+ text: (text: string) => string;
4
+ imageNode: (description: string) => string;
5
+ stroke: string;
6
+ svgObject: string;
7
+ emptyBackground: string;
8
+ filledBackgroundWithColor: (color: string) => string;
9
+ restyledElement: (elementDescription: string) => string;
10
+ }
11
+ export declare const defaultComponentLocalization: ImageComponentLocalization;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultComponentLocalization = void 0;
4
+ exports.defaultComponentLocalization = {
5
+ unlabeledImageNode: 'Unlabeled image node',
6
+ stroke: 'Stroke',
7
+ svgObject: 'SVG Object',
8
+ emptyBackground: 'Empty background',
9
+ filledBackgroundWithColor: (color) => `Filled background (${color})`,
10
+ text: (text) => `Text object: ${text}`,
11
+ imageNode: (description) => `Image: ${description}`,
12
+ restyledElement: (elementDescription) => `Restyled ${elementDescription}`,
13
+ };
@@ -0,0 +1,35 @@
1
+ import { Vec2 } from '../../math/Vec2';
2
+ import Rect2 from '../../math/Rect2';
3
+ import { StrokeDataPoint } from '../../types';
4
+ export interface Curve {
5
+ startPoint: Vec2;
6
+ startWidth: number;
7
+ controlPoint: Vec2;
8
+ endWidth: number;
9
+ endPoint: Vec2;
10
+ }
11
+ type OnCurveAddedCallback = (curve: Curve | null) => void;
12
+ export declare class StrokeSmoother {
13
+ private startPoint;
14
+ private minFitAllowed;
15
+ private maxFitAllowed;
16
+ private onCurveAdded;
17
+ private isFirstSegment;
18
+ private buffer;
19
+ private lastPoint;
20
+ private lastExitingVec;
21
+ private currentCurve;
22
+ private curveStartWidth;
23
+ private curveEndWidth;
24
+ private momentum;
25
+ private bbox;
26
+ constructor(startPoint: StrokeDataPoint, minFitAllowed: number, maxFitAllowed: number, onCurveAdded: OnCurveAddedCallback);
27
+ getBBox(): Rect2;
28
+ preview(): Curve | null;
29
+ private approxCurrentCurveLength;
30
+ finalizeCurrentCurve(): void;
31
+ private currentSegmentToPath;
32
+ private computeExitingVec;
33
+ addPoint(newPoint: StrokeDataPoint): void;
34
+ }
35
+ export default StrokeSmoother;
@@ -0,0 +1,217 @@
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
+ exports.StrokeSmoother = void 0;
7
+ const bezier_js_1 = require("bezier-js");
8
+ const Vec2_1 = require("../../math/Vec2");
9
+ const Rect2_1 = __importDefault(require("../../math/Rect2"));
10
+ const LineSegment2_1 = __importDefault(require("../../math/LineSegment2"));
11
+ // Handles stroke smoothing
12
+ class StrokeSmoother {
13
+ constructor(startPoint,
14
+ // Maximum distance from the actual curve (irrespective of stroke width)
15
+ // for which a point is considered 'part of the curve'.
16
+ // Note that the maximum will be smaller if the stroke width is less than
17
+ // [maxFitAllowed].
18
+ minFitAllowed, maxFitAllowed, onCurveAdded) {
19
+ this.startPoint = startPoint;
20
+ this.minFitAllowed = minFitAllowed;
21
+ this.maxFitAllowed = maxFitAllowed;
22
+ this.onCurveAdded = onCurveAdded;
23
+ this.isFirstSegment = true;
24
+ this.lastExitingVec = null;
25
+ this.currentCurve = null;
26
+ this.lastPoint = this.startPoint;
27
+ this.buffer = [this.startPoint.pos];
28
+ this.momentum = Vec2_1.Vec2.zero;
29
+ this.currentCurve = null;
30
+ this.curveStartWidth = startPoint.width;
31
+ this.bbox = new Rect2_1.default(this.startPoint.pos.x, this.startPoint.pos.y, 0, 0);
32
+ }
33
+ getBBox() {
34
+ return this.bbox;
35
+ }
36
+ preview() {
37
+ if (!this.currentCurve) {
38
+ return null;
39
+ }
40
+ return this.currentSegmentToPath();
41
+ }
42
+ // Returns the distance between the start, control, and end points of the curve.
43
+ approxCurrentCurveLength() {
44
+ if (!this.currentCurve) {
45
+ return 0;
46
+ }
47
+ const startPt = Vec2_1.Vec2.ofXY(this.currentCurve.points[0]);
48
+ const controlPt = Vec2_1.Vec2.ofXY(this.currentCurve.points[1]);
49
+ const endPt = Vec2_1.Vec2.ofXY(this.currentCurve.points[2]);
50
+ const toControlDist = startPt.minus(controlPt).length();
51
+ const toEndDist = endPt.minus(controlPt).length();
52
+ return toControlDist + toEndDist;
53
+ }
54
+ finalizeCurrentCurve() {
55
+ // Case where no points have been added
56
+ if (!this.currentCurve) {
57
+ return;
58
+ }
59
+ this.onCurveAdded(this.currentSegmentToPath());
60
+ const lastPoint = this.buffer[this.buffer.length - 1];
61
+ this.lastExitingVec = Vec2_1.Vec2.ofXY(this.currentCurve.points[2]).minus(Vec2_1.Vec2.ofXY(this.currentCurve.points[1]));
62
+ console.assert(this.lastExitingVec.magnitude() !== 0, 'lastExitingVec has zero length!');
63
+ // Use the last two points to start a new curve (the last point isn't used
64
+ // in the current curve and we want connected curves to share end points)
65
+ this.buffer = [
66
+ this.buffer[this.buffer.length - 2], lastPoint,
67
+ ];
68
+ this.currentCurve = null;
69
+ this.isFirstSegment = false;
70
+ }
71
+ // Returns [upper curve, connector, lower curve]
72
+ currentSegmentToPath() {
73
+ if (this.currentCurve == null) {
74
+ throw new Error('Invalid State: currentCurve is null!');
75
+ }
76
+ const startVec = Vec2_1.Vec2.ofXY(this.currentCurve.normal(0)).normalized();
77
+ if (!isFinite(startVec.magnitude())) {
78
+ throw new Error(`startVec(${startVec}) is NaN or ∞`);
79
+ }
80
+ const startPt = Vec2_1.Vec2.ofXY(this.currentCurve.get(0));
81
+ const endPt = Vec2_1.Vec2.ofXY(this.currentCurve.get(1));
82
+ const controlPoint = Vec2_1.Vec2.ofXY(this.currentCurve.points[1]);
83
+ return {
84
+ startPoint: startPt,
85
+ controlPoint,
86
+ endPoint: endPt,
87
+ startWidth: this.curveStartWidth,
88
+ endWidth: this.curveEndWidth,
89
+ };
90
+ }
91
+ // Compute the direction of the velocity at the end of this.buffer
92
+ computeExitingVec() {
93
+ return this.momentum.normalized().times(this.lastPoint.width / 2);
94
+ }
95
+ addPoint(newPoint) {
96
+ var _a, _b;
97
+ if (this.lastPoint) {
98
+ // Ignore points that are identical
99
+ const fuzzEq = 1e-10;
100
+ const deltaTime = newPoint.time - this.lastPoint.time;
101
+ if (newPoint.pos.eq(this.lastPoint.pos, fuzzEq) || deltaTime === 0) {
102
+ return;
103
+ }
104
+ else if (isNaN(newPoint.pos.magnitude())) {
105
+ console.warn('Discarding NaN point.', newPoint);
106
+ return;
107
+ }
108
+ const threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
109
+ const shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
110
+ && this.isFirstSegment;
111
+ // Snap to the starting point if the stroke is contained within a small ball centered
112
+ // at the starting point.
113
+ // This allows us to create a circle/dot at the start of the stroke.
114
+ if (shouldSnapToInitial) {
115
+ return;
116
+ }
117
+ const velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / (deltaTime) * 1000);
118
+ this.momentum = this.momentum.lerp(velocity, 0.9);
119
+ }
120
+ const lastPoint = (_a = this.lastPoint) !== null && _a !== void 0 ? _a : newPoint;
121
+ this.lastPoint = newPoint;
122
+ this.buffer.push(newPoint.pos);
123
+ const pointRadius = newPoint.width;
124
+ const prevEndWidth = this.curveEndWidth;
125
+ this.curveEndWidth = pointRadius;
126
+ // recompute bbox
127
+ this.bbox = this.bbox.grownToPoint(newPoint.pos, pointRadius);
128
+ // If the last curve just ended or it's the first curve,
129
+ if (this.currentCurve === null) {
130
+ const p1 = lastPoint.pos;
131
+ const p2 = lastPoint.pos.plus((_b = this.lastExitingVec) !== null && _b !== void 0 ? _b : Vec2_1.Vec2.unitX);
132
+ const p3 = newPoint.pos;
133
+ // Quadratic Bézier curve
134
+ this.currentCurve = new bezier_js_1.Bezier(p1.xy, p2.xy, p3.xy);
135
+ console.assert(!isNaN(p1.magnitude()) && !isNaN(p2.magnitude()) && !isNaN(p3.magnitude()), 'Expected !NaN');
136
+ if (this.isFirstSegment) {
137
+ // The start of a curve often lacks accurate pressure information. Update it.
138
+ this.curveStartWidth = (this.curveStartWidth + pointRadius) / 2;
139
+ }
140
+ else {
141
+ this.curveStartWidth = prevEndWidth;
142
+ }
143
+ }
144
+ // If there isn't an entering vector (e.g. because this.isFirstCurve), approximate it.
145
+ let enteringVec = this.lastExitingVec;
146
+ if (!enteringVec) {
147
+ let sampleIdx = Math.ceil(this.buffer.length / 2);
148
+ if (sampleIdx === 0 || sampleIdx >= this.buffer.length) {
149
+ sampleIdx = this.buffer.length - 1;
150
+ }
151
+ enteringVec = this.buffer[sampleIdx].minus(this.buffer[0]);
152
+ }
153
+ let exitingVec = this.computeExitingVec();
154
+ // Find the intersection between the entering vector and the exiting vector
155
+ const maxRelativeLength = 2.2;
156
+ const segmentStart = this.buffer[0];
157
+ const segmentEnd = newPoint.pos;
158
+ const startEndDist = segmentEnd.minus(segmentStart).magnitude();
159
+ const maxControlPointDist = maxRelativeLength * startEndDist;
160
+ // Exit in cases where we would divide by zero
161
+ if (maxControlPointDist === 0 || exitingVec.magnitude() === 0 || !isFinite(exitingVec.magnitude())) {
162
+ return;
163
+ }
164
+ console.assert(isFinite(enteringVec.magnitude()), 'Pre-normalized enteringVec has NaN or ∞ magnitude!');
165
+ enteringVec = enteringVec.normalized();
166
+ exitingVec = exitingVec.normalized();
167
+ console.assert(isFinite(enteringVec.magnitude()), 'Normalized enteringVec has NaN or ∞ magnitude!');
168
+ const lineFromStart = new LineSegment2_1.default(segmentStart, segmentStart.plus(enteringVec.times(maxControlPointDist)));
169
+ const lineFromEnd = new LineSegment2_1.default(segmentEnd.minus(exitingVec.times(maxControlPointDist)), segmentEnd);
170
+ const intersection = lineFromEnd.intersection(lineFromStart);
171
+ // Position the control point at this intersection
172
+ let controlPoint = null;
173
+ if (intersection) {
174
+ controlPoint = intersection.point;
175
+ }
176
+ // No intersection or the intersection is one of the end points?
177
+ if (!controlPoint || segmentStart.eq(controlPoint) || segmentEnd.eq(controlPoint)) {
178
+ // Position the control point closer to the first -- the connecting
179
+ // segment will be roughly a line.
180
+ controlPoint = segmentStart.plus(enteringVec.times(startEndDist / 4));
181
+ }
182
+ console.assert(!segmentStart.eq(controlPoint, 1e-11), 'Start and control points are equal!');
183
+ console.assert(!controlPoint.eq(segmentEnd, 1e-11), 'Control and end points are equal!');
184
+ const prevCurve = this.currentCurve;
185
+ this.currentCurve = new bezier_js_1.Bezier(segmentStart.xy, controlPoint.xy, segmentEnd.xy);
186
+ if (isNaN(Vec2_1.Vec2.ofXY(this.currentCurve.normal(0)).magnitude())) {
187
+ console.error('NaN normal at 0. Curve:', this.currentCurve);
188
+ this.currentCurve = prevCurve;
189
+ }
190
+ // Should we start making a new curve? Check whether all buffer points are within
191
+ // ±strokeWidth of the curve.
192
+ const curveMatchesPoints = (curve) => {
193
+ for (const point of this.buffer) {
194
+ const proj = Vec2_1.Vec2.ofXY(curve.project(point.xy));
195
+ const dist = proj.minus(point).magnitude();
196
+ const minFit = Math.max(Math.min(this.curveStartWidth, this.curveEndWidth) / 3, this.minFitAllowed);
197
+ if (dist > minFit || dist > this.maxFitAllowed) {
198
+ return false;
199
+ }
200
+ }
201
+ return true;
202
+ };
203
+ if (this.buffer.length > 3 && this.approxCurrentCurveLength() > this.curveStartWidth / 2) {
204
+ if (!curveMatchesPoints(this.currentCurve)) {
205
+ // Use a curve that better fits the points
206
+ this.currentCurve = prevCurve;
207
+ this.curveEndWidth = prevEndWidth;
208
+ // Reset the last point -- the current point was not added to the curve.
209
+ this.lastPoint = lastPoint;
210
+ this.finalizeCurrentCurve();
211
+ return;
212
+ }
213
+ }
214
+ }
215
+ }
216
+ exports.StrokeSmoother = StrokeSmoother;
217
+ exports.default = StrokeSmoother;
@@ -0,0 +1,4 @@
1
+ import AbstractComponent from '../AbstractComponent';
2
+ import { ImageComponentLocalization } from '../localization';
3
+ declare const _default: (localizationTable: ImageComponentLocalization, elems: AbstractComponent[]) => string | null;
4
+ export default _default;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Returns the description of all given elements, if identical, otherwise,
4
+ // returns null.
5
+ exports.default = (localizationTable, elems) => {
6
+ if (elems.length === 0) {
7
+ return null;
8
+ }
9
+ const description = elems[0].description(localizationTable);
10
+ for (const elem of elems) {
11
+ if (elem.description(localizationTable) !== description) {
12
+ return null;
13
+ }
14
+ }
15
+ return description;
16
+ };
@@ -0,0 +1,64 @@
1
+ /**
2
+ * The main entrypoint for the NPM package. Everything exported by this file
3
+ * is available through the [`js-draw` package](https://www.npmjs.com/package/js-draw).
4
+ *
5
+ * @example
6
+ * ```
7
+ * import { Editor, Vec3, Mat33 } from 'js-draw';
8
+ *
9
+ * // Apply js-draw CSS
10
+ * import 'js-draw/styles';
11
+ * // If your bundler doesn't support the above, try
12
+ * // import 'js-draw/bundledStyles';
13
+ *
14
+ * (async () => {
15
+ * const editor = new Editor(document.body);
16
+ * const toolbar = editor.addToolbar();
17
+ * editor.getRootElement().style.height = '600px';
18
+ *
19
+ * await editor.loadFromSVG(`
20
+ * <svg viewBox="0 0 500 500" width="500" height="500" version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
21
+ * <style id="js-draw-style-sheet">path{stroke-linecap:round;stroke-linejoin:round;}text{white-space:pre;}</style>
22
+ * <path d="M500,500L500,0L0,0L0,500L500,500" fill="#423131bf" class="js-draw-image-background"></path>
23
+ * <text style="transform: matrix(1, 0, 0, 1, 57, 192); font-family: serif; font-size: 32px; fill: rgb(204, 102, 51);">Testing...</text>
24
+ * </svg>
25
+ * `);
26
+ *
27
+ * toolbar.addActionButton({
28
+ * label: 'Save',
29
+ * icon: editor.icons.makeSaveIcon(),
30
+ * }, () => {
31
+ * const saveData = editor.toSVG().outerHTML;
32
+ *
33
+ * // Do something with saveData
34
+ * });
35
+ * })();
36
+ * ```
37
+ *
38
+ * @see
39
+ * {@link Editor}
40
+ * {@link Editor.loadFromSVG}
41
+ * {@link HTMLToolbar.addActionButton }
42
+ *
43
+ * @packageDocumentation
44
+ */
45
+ import Editor, { EditorSettings } from './Editor';
46
+ export { default as EditorImage } from './EditorImage';
47
+ export * from './types';
48
+ export { default as getLocalizationTable } from './localizations/getLocalizationTable';
49
+ export * from './localization';
50
+ export { default as Color4 } from './Color4';
51
+ export { default as SVGLoader } from './SVGLoader';
52
+ export { default as Viewport } from './Viewport';
53
+ export * from './math/lib';
54
+ export * from './components/lib';
55
+ export * from './commands/lib';
56
+ export * from './tools/lib';
57
+ export * from './toolbar/lib';
58
+ export * from './rendering/lib';
59
+ export * from './testing/lib';
60
+ export { default as Pointer, PointerDevice } from './Pointer';
61
+ export { default as HTMLToolbar } from './toolbar/HTMLToolbar';
62
+ export { default as UndoRedoHistory } from './UndoRedoHistory';
63
+ export { Editor, EditorSettings };
64
+ export default Editor;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * The main entrypoint for the NPM package. Everything exported by this file
4
+ * is available through the [`js-draw` package](https://www.npmjs.com/package/js-draw).
5
+ *
6
+ * @example
7
+ * ```
8
+ * import { Editor, Vec3, Mat33 } from 'js-draw';
9
+ *
10
+ * // Apply js-draw CSS
11
+ * import 'js-draw/styles';
12
+ * // If your bundler doesn't support the above, try
13
+ * // import 'js-draw/bundledStyles';
14
+ *
15
+ * (async () => {
16
+ * const editor = new Editor(document.body);
17
+ * const toolbar = editor.addToolbar();
18
+ * editor.getRootElement().style.height = '600px';
19
+ *
20
+ * await editor.loadFromSVG(`
21
+ * <svg viewBox="0 0 500 500" width="500" height="500" version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
22
+ * <style id="js-draw-style-sheet">path{stroke-linecap:round;stroke-linejoin:round;}text{white-space:pre;}</style>
23
+ * <path d="M500,500L500,0L0,0L0,500L500,500" fill="#423131bf" class="js-draw-image-background"></path>
24
+ * <text style="transform: matrix(1, 0, 0, 1, 57, 192); font-family: serif; font-size: 32px; fill: rgb(204, 102, 51);">Testing...</text>
25
+ * </svg>
26
+ * `);
27
+ *
28
+ * toolbar.addActionButton({
29
+ * label: 'Save',
30
+ * icon: editor.icons.makeSaveIcon(),
31
+ * }, () => {
32
+ * const saveData = editor.toSVG().outerHTML;
33
+ *
34
+ * // Do something with saveData
35
+ * });
36
+ * })();
37
+ * ```
38
+ *
39
+ * @see
40
+ * {@link Editor}
41
+ * {@link Editor.loadFromSVG}
42
+ * {@link HTMLToolbar.addActionButton }
43
+ *
44
+ * @packageDocumentation
45
+ */
46
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
47
+ if (k2 === undefined) k2 = k;
48
+ var desc = Object.getOwnPropertyDescriptor(m, k);
49
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
50
+ desc = { enumerable: true, get: function() { return m[k]; } };
51
+ }
52
+ Object.defineProperty(o, k2, desc);
53
+ }) : (function(o, m, k, k2) {
54
+ if (k2 === undefined) k2 = k;
55
+ o[k2] = m[k];
56
+ }));
57
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
58
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
59
+ };
60
+ var __importDefault = (this && this.__importDefault) || function (mod) {
61
+ return (mod && mod.__esModule) ? mod : { "default": mod };
62
+ };
63
+ Object.defineProperty(exports, "__esModule", { value: true });
64
+ exports.Editor = exports.UndoRedoHistory = exports.HTMLToolbar = exports.PointerDevice = exports.Pointer = exports.Viewport = exports.SVGLoader = exports.Color4 = exports.getLocalizationTable = exports.EditorImage = void 0;
65
+ const Editor_1 = __importDefault(require("./Editor"));
66
+ exports.Editor = Editor_1.default;
67
+ var EditorImage_1 = require("./EditorImage");
68
+ Object.defineProperty(exports, "EditorImage", { enumerable: true, get: function () { return __importDefault(EditorImage_1).default; } });
69
+ __exportStar(require("./types"), exports);
70
+ var getLocalizationTable_1 = require("./localizations/getLocalizationTable");
71
+ Object.defineProperty(exports, "getLocalizationTable", { enumerable: true, get: function () { return __importDefault(getLocalizationTable_1).default; } });
72
+ __exportStar(require("./localization"), exports);
73
+ var Color4_1 = require("./Color4");
74
+ Object.defineProperty(exports, "Color4", { enumerable: true, get: function () { return __importDefault(Color4_1).default; } });
75
+ var SVGLoader_1 = require("./SVGLoader");
76
+ Object.defineProperty(exports, "SVGLoader", { enumerable: true, get: function () { return __importDefault(SVGLoader_1).default; } });
77
+ var Viewport_1 = require("./Viewport");
78
+ Object.defineProperty(exports, "Viewport", { enumerable: true, get: function () { return __importDefault(Viewport_1).default; } });
79
+ __exportStar(require("./math/lib"), exports);
80
+ __exportStar(require("./components/lib"), exports);
81
+ __exportStar(require("./commands/lib"), exports);
82
+ __exportStar(require("./tools/lib"), exports);
83
+ __exportStar(require("./toolbar/lib"), exports);
84
+ __exportStar(require("./rendering/lib"), exports);
85
+ __exportStar(require("./testing/lib"), exports);
86
+ var Pointer_1 = require("./Pointer");
87
+ Object.defineProperty(exports, "Pointer", { enumerable: true, get: function () { return __importDefault(Pointer_1).default; } });
88
+ Object.defineProperty(exports, "PointerDevice", { enumerable: true, get: function () { return Pointer_1.PointerDevice; } });
89
+ var HTMLToolbar_1 = require("./toolbar/HTMLToolbar");
90
+ Object.defineProperty(exports, "HTMLToolbar", { enumerable: true, get: function () { return __importDefault(HTMLToolbar_1).default; } });
91
+ var UndoRedoHistory_1 = require("./UndoRedoHistory");
92
+ Object.defineProperty(exports, "UndoRedoHistory", { enumerable: true, get: function () { return __importDefault(UndoRedoHistory_1).default; } });
93
+ exports.default = Editor_1.default;
@@ -0,0 +1,14 @@
1
+ import { CommandLocalization } from './commands/localization';
2
+ import { ImageComponentLocalization } from './components/localization';
3
+ import { TextRendererLocalization } from './rendering/localization';
4
+ import { ToolbarLocalization } from './toolbar/localization';
5
+ import { ToolLocalization } from './tools/localization';
6
+ export interface EditorLocalization extends ToolbarLocalization, ToolLocalization, CommandLocalization, ImageComponentLocalization, TextRendererLocalization {
7
+ accessibilityInputInstructions: string;
8
+ undoAnnouncement: (actionDescription: string) => string;
9
+ redoAnnouncement: (actionDescription: string) => string;
10
+ doneLoading: string;
11
+ loading: (percentage: number) => string;
12
+ imageEditor: string;
13
+ }
14
+ export declare const defaultEditorLocalization: EditorLocalization;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultEditorLocalization = void 0;
4
+ const localization_1 = require("./commands/localization");
5
+ const localization_2 = require("./components/localization");
6
+ const localization_3 = require("./rendering/localization");
7
+ const localization_4 = require("./toolbar/localization");
8
+ const localization_5 = require("./tools/localization");
9
+ exports.defaultEditorLocalization = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, localization_4.defaultToolbarLocalization), localization_5.defaultToolLocalization), localization_1.defaultCommandLocalization), localization_2.defaultComponentLocalization), localization_3.defaultTextRendererLocalization), { accessibilityInputInstructions: [
10
+ 'Press "t" to read the contents of the viewport as text.',
11
+ 'Use the arrow keys to move the viewport, click and drag to draw strokes.',
12
+ 'Press "w" to zoom in and "s" to zoom out.',
13
+ ].join(' '), loading: (percentage) => `Loading ${percentage}%...`, imageEditor: 'Image Editor', doneLoading: 'Done loading', undoAnnouncement: (commandDescription) => `Undid ${commandDescription}`, redoAnnouncement: (commandDescription) => `Redid ${commandDescription}` });
@@ -0,0 +1,3 @@
1
+ import { EditorLocalization } from '../localization';
2
+ declare const localization: EditorLocalization;
3
+ export default localization;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const localization_1 = require("../localization");
4
+ // German localization
5
+ const localization = Object.assign(Object.assign({}, localization_1.defaultEditorLocalization), { pen: 'Stift', eraser: 'Radierer', select: 'Auswahl', handTool: 'Verschieben', zoom: 'Vergrößerung', resetView: 'Ansicht zurücksetzen', thicknessLabel: 'Dicke: ', colorLabel: 'Farbe: ', fontLabel: 'Schriftart: ', resizeImageToSelection: 'Bildgröße an Auswahl anpassen', deleteSelection: 'Auswahl löschen', duplicateSelection: 'Auswahl duplizieren', undo: 'Rückgängig', redo: 'Wiederholen', pickColorFromScreen: 'Farbe von Bildschirm auswählen', clickToPickColorAnnouncement: 'Klicke auf den Bildschirm, um eine Farbe auszuwählen', selectionToolKeyboardShortcuts: 'Auswahl-Werkzeug: Verwende die Pfeiltasten, um ausgewählte Elemente zu verschieben und ‚i‘ und ‚o‘, um ihre Größe zu ändern.', touchPanning: 'Ansicht mit Touchscreen verschieben', anyDevicePanning: 'Ansicht mit jedem Eingabegerät verschieben', selectObjectType: 'Objekt-Typ: ', freehandPen: 'Freihand', arrowPen: 'Pfeil', linePen: 'Linie', outlinedRectanglePen: 'Umrissenes Rechteck', filledRectanglePen: 'Ausgefülltes Rechteck', dropdownShown: t => `Dropdown-Menü für ${t} angezeigt`, dropdownHidden: t => `Dropdown-Menü für ${t} versteckt`, zoomLevel: t => `Vergößerung: ${t}%`, colorChangedAnnouncement: t => `Farbe zu ${t} geändert`, penTool: t => `Stift ${t}`, selectionTool: 'Auswahl', eraserTool: 'Radiergummi', touchPanTool: 'Ansicht mit Touchscreen verschieben', twoFingerPanZoomTool: 'Ansicht verschieben und vergrößern', undoRedoTool: 'Rückgängig/Wiederholen', rightClickDragPanTool: 'Rechtsklick-Ziehen', pipetteTool: 'Farbe von Bildschirm auswählen', keyboardPanZoom: 'Tastaturkürzel zum Verschieben/Vergrößern der Ansicht', textTool: 'Text', enterTextToInsert: 'Einzufügender Text', toolEnabledAnnouncement: t => `${t} aktiviert`, toolDisabledAnnouncement: t => `${t} deaktiviert`, updatedViewport: 'Transformierte Ansicht', transformedElements: t => `${t} Element${1 === t ? '' : 'e'} transformiert`, resizeOutputCommand: t => `Bildgröße auf ${t.w}x${t.h} geändert`, addElementAction: t => `${t} hinzugefügt`, eraseAction: (t, e) => `${e} ${t} gelöscht`, duplicateAction: (t, e) => `${e} ${t} dupliziert`, inverseOf: t => `Umkehrung von ${t}`, elements: 'Elemente', erasedNoElements: 'Nichts entfernt', duplicatedNoElements: 'Nichts dupliziert', rotatedBy: t => `${Math.abs(t)} Grad ${t < 0 ? 'im Uhrzeigersinn' : 'gegen den Uhrzeigersinn'} gedreht`, movedLeft: 'Nacht links bewegt', movedUp: 'Nacht oben bewegt', movedDown: 'Nacht unten bewegt', movedRight: 'Nacht rechts bewegt', zoomedOut: 'Ansicht verkleinert', zoomedIn: 'Ansicht vergrößert', selectedElements: t => `${t} Element${1 === t ? '' : 'e'} ausgewählt`, stroke: 'Strich', svgObject: 'SVG-Objekt', text: t => `Text-Objekt: ${t}`, pathNodeCount: t => `Es gibt ${t} sichtbare Pfad-Objekte.`, textNodeCount: t => `Es gibt ${t} sichtbare Text-Knotenpunkte.`, textNode: t => `Text: ${t}`, rerenderAsText: 'Als Text darstellen', accessibilityInputInstructions: 'Drücke ‚t‘, um den Inhalt des Ansichtsfensters als Text zu lesen. Verwende die Pfeiltasten, um die Ansicht zu verschieben, und klicke und ziehe, um Striche zu zeichnen. Drücke ‚w‘ zum Vergrößern und ‚s‘ zum Verkleinern der Ansicht.', loading: t => `Laden ${t}%...`, doneLoading: 'Laden fertig', imageEditor: 'Bild-Editor', undoAnnouncement: t => `Rückgangig gemacht ${t}`, redoAnnouncement: t => `Wiederholt ${t}` });
6
+ exports.default = localization;
@@ -0,0 +1,3 @@
1
+ import { EditorLocalization } from '../localization';
2
+ declare const localization: EditorLocalization;
3
+ export default localization;