js-draw 0.17.4 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/bundle.js +9 -1
  3. package/package.json +35 -33
  4. package/tsconfig.json +3 -2
  5. package/tsconfig.mjs.json +9 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -34
  7. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  8. package/.github/ISSUE_TEMPLATE/translation.yml +0 -902
  9. package/.github/pull_request_template.md +0 -15
  10. package/.github/workflows/firebase-hosting-merge.yml +0 -32
  11. package/.github/workflows/firebase-hosting-pull-request.yml +0 -32
  12. package/.github/workflows/github-pages.yml +0 -56
  13. package/.husky/pre-commit +0 -4
  14. package/build_tools/BundledFile.ts +0 -167
  15. package/build_tools/buildTranslationTemplate.ts +0 -121
  16. package/build_tools/bundle.ts +0 -11
  17. package/dist/build_tools/BundledFile.d.ts +0 -13
  18. package/dist/build_tools/BundledFile.js +0 -157
  19. package/dist/build_tools/buildTranslationTemplate.d.ts +0 -1
  20. package/dist/build_tools/buildTranslationTemplate.js +0 -94
  21. package/dist/build_tools/bundle.d.ts +0 -1
  22. package/dist/build_tools/bundle.js +0 -5
  23. package/dist/src/Color4.d.ts +0 -60
  24. package/dist/src/Color4.js +0 -192
  25. package/dist/src/Editor.d.ts +0 -308
  26. package/dist/src/Editor.js +0 -874
  27. package/dist/src/EditorImage.d.ts +0 -97
  28. package/dist/src/EditorImage.js +0 -477
  29. package/dist/src/EventDispatcher.d.ts +0 -30
  30. package/dist/src/EventDispatcher.js +0 -54
  31. package/dist/src/Pointer.d.ts +0 -24
  32. package/dist/src/Pointer.js +0 -80
  33. package/dist/src/SVGLoader.d.ts +0 -48
  34. package/dist/src/SVGLoader.js +0 -442
  35. package/dist/src/UndoRedoHistory.d.ts +0 -19
  36. package/dist/src/UndoRedoHistory.js +0 -91
  37. package/dist/src/Viewport.d.ts +0 -71
  38. package/dist/src/Viewport.js +0 -256
  39. package/dist/src/bundle/bundled.d.ts +0 -4
  40. package/dist/src/bundle/bundled.js +0 -5
  41. package/dist/src/commands/Command.d.ts +0 -16
  42. package/dist/src/commands/Command.js +0 -30
  43. package/dist/src/commands/Duplicate.d.ts +0 -14
  44. package/dist/src/commands/Duplicate.js +0 -33
  45. package/dist/src/commands/Erase.d.ts +0 -14
  46. package/dist/src/commands/Erase.js +0 -57
  47. package/dist/src/commands/SerializableCommand.d.ts +0 -12
  48. package/dist/src/commands/SerializableCommand.js +0 -36
  49. package/dist/src/commands/UnresolvedCommand.d.ts +0 -14
  50. package/dist/src/commands/UnresolvedCommand.js +0 -22
  51. package/dist/src/commands/invertCommand.d.ts +0 -4
  52. package/dist/src/commands/invertCommand.js +0 -44
  53. package/dist/src/commands/lib.d.ts +0 -7
  54. package/dist/src/commands/lib.js +0 -7
  55. package/dist/src/commands/localization.d.ts +0 -23
  56. package/dist/src/commands/localization.js +0 -21
  57. package/dist/src/commands/uniteCommands.d.ts +0 -4
  58. package/dist/src/commands/uniteCommands.js +0 -116
  59. package/dist/src/components/AbstractComponent.d.ts +0 -73
  60. package/dist/src/components/AbstractComponent.js +0 -252
  61. package/dist/src/components/ImageBackground.d.ts +0 -42
  62. package/dist/src/components/ImageBackground.js +0 -139
  63. package/dist/src/components/ImageComponent.d.ts +0 -31
  64. package/dist/src/components/ImageComponent.js +0 -146
  65. package/dist/src/components/RestylableComponent.d.ts +0 -24
  66. package/dist/src/components/RestylableComponent.js +0 -80
  67. package/dist/src/components/SVGGlobalAttributesObject.d.ts +0 -21
  68. package/dist/src/components/SVGGlobalAttributesObject.js +0 -59
  69. package/dist/src/components/Stroke.d.ts +0 -40
  70. package/dist/src/components/Stroke.js +0 -185
  71. package/dist/src/components/TextComponent.d.ts +0 -53
  72. package/dist/src/components/TextComponent.js +0 -252
  73. package/dist/src/components/UnknownSVGObject.d.ts +0 -18
  74. package/dist/src/components/UnknownSVGObject.js +0 -44
  75. package/dist/src/components/builders/ArrowBuilder.d.ts +0 -19
  76. package/dist/src/components/builders/ArrowBuilder.js +0 -86
  77. package/dist/src/components/builders/FreehandLineBuilder.d.ts +0 -33
  78. package/dist/src/components/builders/FreehandLineBuilder.js +0 -165
  79. package/dist/src/components/builders/LineBuilder.d.ts +0 -18
  80. package/dist/src/components/builders/LineBuilder.js +0 -58
  81. package/dist/src/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +0 -36
  82. package/dist/src/components/builders/PressureSensitiveFreehandLineBuilder.js +0 -339
  83. package/dist/src/components/builders/RectangleBuilder.d.ts +0 -20
  84. package/dist/src/components/builders/RectangleBuilder.js +0 -50
  85. package/dist/src/components/builders/types.d.ts +0 -12
  86. package/dist/src/components/builders/types.js +0 -1
  87. package/dist/src/components/lib.d.ts +0 -12
  88. package/dist/src/components/lib.js +0 -12
  89. package/dist/src/components/localization.d.ts +0 -11
  90. package/dist/src/components/localization.js +0 -10
  91. package/dist/src/components/util/StrokeSmoother.d.ts +0 -35
  92. package/dist/src/components/util/StrokeSmoother.js +0 -210
  93. package/dist/src/components/util/describeComponentList.d.ts +0 -4
  94. package/dist/src/components/util/describeComponentList.js +0 -14
  95. package/dist/src/lib.d.ts +0 -34
  96. package/dist/src/lib.js +0 -34
  97. package/dist/src/localization.d.ts +0 -14
  98. package/dist/src/localization.js +0 -10
  99. package/dist/src/localizations/de.d.ts +0 -3
  100. package/dist/src/localizations/de.js +0 -4
  101. package/dist/src/localizations/en.d.ts +0 -3
  102. package/dist/src/localizations/en.js +0 -4
  103. package/dist/src/localizations/es.d.ts +0 -3
  104. package/dist/src/localizations/es.js +0 -18
  105. package/dist/src/localizations/getLocalizationTable.d.ts +0 -3
  106. package/dist/src/localizations/getLocalizationTable.js +0 -45
  107. package/dist/src/math/LineSegment2.d.ts +0 -24
  108. package/dist/src/math/LineSegment2.js +0 -125
  109. package/dist/src/math/Mat33.d.ts +0 -118
  110. package/dist/src/math/Mat33.js +0 -326
  111. package/dist/src/math/Path.d.ts +0 -71
  112. package/dist/src/math/Path.js +0 -648
  113. package/dist/src/math/Rect2.d.ts +0 -52
  114. package/dist/src/math/Rect2.js +0 -228
  115. package/dist/src/math/Triangle.d.ts +0 -11
  116. package/dist/src/math/Triangle.js +0 -19
  117. package/dist/src/math/Vec2.d.ts +0 -13
  118. package/dist/src/math/Vec2.js +0 -13
  119. package/dist/src/math/Vec3.d.ts +0 -106
  120. package/dist/src/math/Vec3.js +0 -174
  121. package/dist/src/math/lib.d.ts +0 -7
  122. package/dist/src/math/lib.js +0 -7
  123. package/dist/src/math/rounding.d.ts +0 -4
  124. package/dist/src/math/rounding.js +0 -128
  125. package/dist/src/rendering/Display.d.ts +0 -75
  126. package/dist/src/rendering/Display.js +0 -207
  127. package/dist/src/rendering/RenderingStyle.d.ts +0 -31
  128. package/dist/src/rendering/RenderingStyle.js +0 -38
  129. package/dist/src/rendering/TextRenderingStyle.d.ts +0 -36
  130. package/dist/src/rendering/TextRenderingStyle.js +0 -23
  131. package/dist/src/rendering/caching/CacheRecord.d.ts +0 -20
  132. package/dist/src/rendering/caching/CacheRecord.js +0 -55
  133. package/dist/src/rendering/caching/CacheRecordManager.d.ts +0 -12
  134. package/dist/src/rendering/caching/CacheRecordManager.js +0 -43
  135. package/dist/src/rendering/caching/RenderingCache.d.ts +0 -11
  136. package/dist/src/rendering/caching/RenderingCache.js +0 -45
  137. package/dist/src/rendering/caching/RenderingCacheNode.d.ts +0 -29
  138. package/dist/src/rendering/caching/RenderingCacheNode.js +0 -320
  139. package/dist/src/rendering/caching/testUtils.d.ts +0 -9
  140. package/dist/src/rendering/caching/testUtils.js +0 -20
  141. package/dist/src/rendering/caching/types.d.ts +0 -19
  142. package/dist/src/rendering/caching/types.js +0 -1
  143. package/dist/src/rendering/lib.d.ts +0 -5
  144. package/dist/src/rendering/lib.js +0 -5
  145. package/dist/src/rendering/localization.d.ts +0 -10
  146. package/dist/src/rendering/localization.js +0 -9
  147. package/dist/src/rendering/renderers/AbstractRenderer.d.ts +0 -68
  148. package/dist/src/rendering/renderers/AbstractRenderer.js +0 -144
  149. package/dist/src/rendering/renderers/CanvasRenderer.d.ts +0 -63
  150. package/dist/src/rendering/renderers/CanvasRenderer.js +0 -230
  151. package/dist/src/rendering/renderers/DummyRenderer.d.ts +0 -35
  152. package/dist/src/rendering/renderers/DummyRenderer.js +0 -106
  153. package/dist/src/rendering/renderers/SVGRenderer.d.ts +0 -57
  154. package/dist/src/rendering/renderers/SVGRenderer.js +0 -304
  155. package/dist/src/rendering/renderers/TextOnlyRenderer.d.ts +0 -29
  156. package/dist/src/rendering/renderers/TextOnlyRenderer.js +0 -57
  157. package/dist/src/testing/beforeEachFile.d.ts +0 -1
  158. package/dist/src/testing/beforeEachFile.js +0 -7
  159. package/dist/src/testing/createEditor.d.ts +0 -4
  160. package/dist/src/testing/createEditor.js +0 -9
  161. package/dist/src/testing/lib.d.ts +0 -2
  162. package/dist/src/testing/lib.js +0 -2
  163. package/dist/src/testing/loadExpectExtensions.d.ts +0 -2
  164. package/dist/src/testing/loadExpectExtensions.js +0 -24
  165. package/dist/src/testing/sendPenEvent.d.ts +0 -12
  166. package/dist/src/testing/sendPenEvent.js +0 -19
  167. package/dist/src/testing/sendTouchEvent.d.ts +0 -42
  168. package/dist/src/testing/sendTouchEvent.js +0 -62
  169. package/dist/src/toolbar/HTMLToolbar.d.ts +0 -103
  170. package/dist/src/toolbar/HTMLToolbar.js +0 -376
  171. package/dist/src/toolbar/IconProvider.d.ts +0 -62
  172. package/dist/src/toolbar/IconProvider.js +0 -654
  173. package/dist/src/toolbar/lib.d.ts +0 -3
  174. package/dist/src/toolbar/lib.js +0 -3
  175. package/dist/src/toolbar/localization.d.ts +0 -49
  176. package/dist/src/toolbar/localization.js +0 -48
  177. package/dist/src/toolbar/makeColorInput.d.ts +0 -6
  178. package/dist/src/toolbar/makeColorInput.js +0 -113
  179. package/dist/src/toolbar/types.d.ts +0 -4
  180. package/dist/src/toolbar/types.js +0 -1
  181. package/dist/src/toolbar/widgets/ActionButtonWidget.d.ts +0 -15
  182. package/dist/src/toolbar/widgets/ActionButtonWidget.js +0 -25
  183. package/dist/src/toolbar/widgets/BaseToolWidget.d.ts +0 -11
  184. package/dist/src/toolbar/widgets/BaseToolWidget.js +0 -44
  185. package/dist/src/toolbar/widgets/BaseWidget.d.ts +0 -72
  186. package/dist/src/toolbar/widgets/BaseWidget.js +0 -307
  187. package/dist/src/toolbar/widgets/DocumentPropertiesWidget.d.ts +0 -18
  188. package/dist/src/toolbar/widgets/DocumentPropertiesWidget.js +0 -120
  189. package/dist/src/toolbar/widgets/EraserToolWidget.d.ts +0 -17
  190. package/dist/src/toolbar/widgets/EraserToolWidget.js +0 -57
  191. package/dist/src/toolbar/widgets/HandToolWidget.d.ts +0 -17
  192. package/dist/src/toolbar/widgets/HandToolWidget.js +0 -172
  193. package/dist/src/toolbar/widgets/InsertImageWidget.d.ts +0 -19
  194. package/dist/src/toolbar/widgets/InsertImageWidget.js +0 -170
  195. package/dist/src/toolbar/widgets/OverflowWidget.d.ts +0 -25
  196. package/dist/src/toolbar/widgets/OverflowWidget.js +0 -71
  197. package/dist/src/toolbar/widgets/PenToolWidget.d.ts +0 -27
  198. package/dist/src/toolbar/widgets/PenToolWidget.js +0 -220
  199. package/dist/src/toolbar/widgets/SelectionToolWidget.d.ts +0 -13
  200. package/dist/src/toolbar/widgets/SelectionToolWidget.js +0 -147
  201. package/dist/src/toolbar/widgets/TextToolWidget.d.ts +0 -16
  202. package/dist/src/toolbar/widgets/TextToolWidget.js +0 -109
  203. package/dist/src/toolbar/widgets/lib.d.ts +0 -10
  204. package/dist/src/toolbar/widgets/lib.js +0 -10
  205. package/dist/src/tools/BaseTool.d.ts +0 -22
  206. package/dist/src/tools/BaseTool.js +0 -63
  207. package/dist/src/tools/Eraser.d.ts +0 -23
  208. package/dist/src/tools/Eraser.js +0 -106
  209. package/dist/src/tools/FindTool.d.ts +0 -21
  210. package/dist/src/tools/FindTool.js +0 -114
  211. package/dist/src/tools/PanZoom.d.ts +0 -52
  212. package/dist/src/tools/PanZoom.js +0 -414
  213. package/dist/src/tools/PasteHandler.d.ts +0 -23
  214. package/dist/src/tools/PasteHandler.js +0 -93
  215. package/dist/src/tools/Pen.d.ts +0 -39
  216. package/dist/src/tools/Pen.js +0 -173
  217. package/dist/src/tools/PipetteTool.d.ts +0 -18
  218. package/dist/src/tools/PipetteTool.js +0 -39
  219. package/dist/src/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -8
  220. package/dist/src/tools/SelectionTool/SelectAllShortcutHandler.js +0 -22
  221. package/dist/src/tools/SelectionTool/Selection.d.ts +0 -64
  222. package/dist/src/tools/SelectionTool/Selection.js +0 -459
  223. package/dist/src/tools/SelectionTool/SelectionHandle.d.ts +0 -38
  224. package/dist/src/tools/SelectionTool/SelectionHandle.js +0 -81
  225. package/dist/src/tools/SelectionTool/SelectionTool.d.ts +0 -36
  226. package/dist/src/tools/SelectionTool/SelectionTool.js +0 -398
  227. package/dist/src/tools/SelectionTool/TransformMode.d.ts +0 -34
  228. package/dist/src/tools/SelectionTool/TransformMode.js +0 -98
  229. package/dist/src/tools/SelectionTool/types.d.ts +0 -9
  230. package/dist/src/tools/SelectionTool/types.js +0 -11
  231. package/dist/src/tools/TextTool.d.ts +0 -33
  232. package/dist/src/tools/TextTool.js +0 -256
  233. package/dist/src/tools/ToolController.d.ts +0 -18
  234. package/dist/src/tools/ToolController.js +0 -158
  235. package/dist/src/tools/ToolEnabledGroup.d.ts +0 -6
  236. package/dist/src/tools/ToolEnabledGroup.js +0 -11
  237. package/dist/src/tools/ToolSwitcherShortcut.d.ts +0 -16
  238. package/dist/src/tools/ToolSwitcherShortcut.js +0 -32
  239. package/dist/src/tools/ToolbarShortcutHandler.d.ts +0 -12
  240. package/dist/src/tools/ToolbarShortcutHandler.js +0 -23
  241. package/dist/src/tools/UndoRedoShortcut.d.ts +0 -8
  242. package/dist/src/tools/UndoRedoShortcut.js +0 -22
  243. package/dist/src/tools/lib.d.ts +0 -16
  244. package/dist/src/tools/lib.js +0 -16
  245. package/dist/src/tools/localization.d.ts +0 -28
  246. package/dist/src/tools/localization.js +0 -27
  247. package/dist/src/types.d.ts +0 -151
  248. package/dist/src/types.js +0 -35
  249. package/dist/src/util/assertions.d.ts +0 -23
  250. package/dist/src/util/assertions.js +0 -45
  251. package/dist/src/util/fileToBase64.d.ts +0 -3
  252. package/dist/src/util/fileToBase64.js +0 -13
  253. package/dist/src/util/untilNextAnimationFrame.d.ts +0 -3
  254. package/dist/src/util/untilNextAnimationFrame.js +0 -7
  255. package/dist/src/util/waitForTimeout.d.ts +0 -2
  256. package/dist/src/util/waitForTimeout.js +0 -7
  257. package/src/Color4.test.ts +0 -40
  258. package/src/Color4.ts +0 -234
  259. package/src/Editor.css +0 -86
  260. package/src/Editor.loadFrom.test.ts +0 -24
  261. package/src/Editor.toSVG.test.ts +0 -111
  262. package/src/Editor.ts +0 -1122
  263. package/src/EditorImage.test.ts +0 -120
  264. package/src/EditorImage.ts +0 -603
  265. package/src/EventDispatcher.test.ts +0 -123
  266. package/src/EventDispatcher.ts +0 -71
  267. package/src/Pointer.ts +0 -127
  268. package/src/SVGLoader.test.ts +0 -114
  269. package/src/SVGLoader.ts +0 -511
  270. package/src/UndoRedoHistory.test.ts +0 -33
  271. package/src/UndoRedoHistory.ts +0 -102
  272. package/src/Viewport.ts +0 -319
  273. package/src/bundle/bundled.ts +0 -7
  274. package/src/commands/Command.ts +0 -45
  275. package/src/commands/Duplicate.ts +0 -48
  276. package/src/commands/Erase.ts +0 -74
  277. package/src/commands/SerializableCommand.ts +0 -49
  278. package/src/commands/UnresolvedCommand.ts +0 -37
  279. package/src/commands/invertCommand.ts +0 -51
  280. package/src/commands/lib.ts +0 -16
  281. package/src/commands/localization.ts +0 -47
  282. package/src/commands/uniteCommands.test.ts +0 -23
  283. package/src/commands/uniteCommands.ts +0 -135
  284. package/src/components/AbstractComponent.transformBy.test.ts +0 -22
  285. package/src/components/AbstractComponent.ts +0 -364
  286. package/src/components/ImageBackground.test.ts +0 -35
  287. package/src/components/ImageBackground.ts +0 -176
  288. package/src/components/ImageComponent.ts +0 -171
  289. package/src/components/RestylableComponent.ts +0 -142
  290. package/src/components/SVGGlobalAttributesObject.ts +0 -81
  291. package/src/components/Stroke.test.ts +0 -139
  292. package/src/components/Stroke.ts +0 -245
  293. package/src/components/TextComponent.test.ts +0 -99
  294. package/src/components/TextComponent.ts +0 -315
  295. package/src/components/UnknownSVGObject.test.ts +0 -10
  296. package/src/components/UnknownSVGObject.ts +0 -60
  297. package/src/components/builders/ArrowBuilder.ts +0 -107
  298. package/src/components/builders/FreehandLineBuilder.ts +0 -212
  299. package/src/components/builders/LineBuilder.ts +0 -77
  300. package/src/components/builders/PressureSensitiveFreehandLineBuilder.ts +0 -454
  301. package/src/components/builders/RectangleBuilder.ts +0 -74
  302. package/src/components/builders/types.ts +0 -15
  303. package/src/components/lib.ts +0 -25
  304. package/src/components/localization.ts +0 -22
  305. package/src/components/util/StrokeSmoother.ts +0 -293
  306. package/src/components/util/describeComponentList.ts +0 -18
  307. package/src/lib.ts +0 -37
  308. package/src/localization.ts +0 -34
  309. package/src/localizations/de.ts +0 -98
  310. package/src/localizations/en.ts +0 -8
  311. package/src/localizations/es.ts +0 -74
  312. package/src/localizations/getLocalizationTable.test.ts +0 -27
  313. package/src/localizations/getLocalizationTable.ts +0 -55
  314. package/src/math/LineSegment2.test.ts +0 -99
  315. package/src/math/LineSegment2.ts +0 -160
  316. package/src/math/Mat33.test.ts +0 -244
  317. package/src/math/Mat33.ts +0 -437
  318. package/src/math/Path.fromString.test.ts +0 -223
  319. package/src/math/Path.test.ts +0 -198
  320. package/src/math/Path.toString.test.ts +0 -77
  321. package/src/math/Path.ts +0 -790
  322. package/src/math/Rect2.test.ts +0 -204
  323. package/src/math/Rect2.ts +0 -315
  324. package/src/math/Triangle.ts +0 -29
  325. package/src/math/Vec2.test.ts +0 -30
  326. package/src/math/Vec2.ts +0 -18
  327. package/src/math/Vec3.test.ts +0 -44
  328. package/src/math/Vec3.ts +0 -218
  329. package/src/math/lib.ts +0 -15
  330. package/src/math/rounding.test.ts +0 -65
  331. package/src/math/rounding.ts +0 -156
  332. package/src/rendering/Display.ts +0 -249
  333. package/src/rendering/RenderingStyle.test.ts +0 -68
  334. package/src/rendering/RenderingStyle.ts +0 -55
  335. package/src/rendering/TextRenderingStyle.ts +0 -45
  336. package/src/rendering/caching/CacheRecord.test.ts +0 -49
  337. package/src/rendering/caching/CacheRecord.ts +0 -77
  338. package/src/rendering/caching/CacheRecordManager.ts +0 -71
  339. package/src/rendering/caching/RenderingCache.test.ts +0 -44
  340. package/src/rendering/caching/RenderingCache.ts +0 -66
  341. package/src/rendering/caching/RenderingCacheNode.ts +0 -405
  342. package/src/rendering/caching/testUtils.ts +0 -35
  343. package/src/rendering/caching/types.ts +0 -34
  344. package/src/rendering/lib.ts +0 -6
  345. package/src/rendering/localization.ts +0 -20
  346. package/src/rendering/renderers/AbstractRenderer.ts +0 -222
  347. package/src/rendering/renderers/CanvasRenderer.ts +0 -296
  348. package/src/rendering/renderers/DummyRenderer.test.ts +0 -42
  349. package/src/rendering/renderers/DummyRenderer.ts +0 -136
  350. package/src/rendering/renderers/SVGRenderer.ts +0 -354
  351. package/src/rendering/renderers/TextOnlyRenderer.ts +0 -70
  352. package/src/styles.js +0 -7
  353. package/src/testing/beforeEachFile.ts +0 -8
  354. package/src/testing/createEditor.ts +0 -11
  355. package/src/testing/global.d.ts +0 -17
  356. package/src/testing/lib.ts +0 -3
  357. package/src/testing/loadExpectExtensions.ts +0 -25
  358. package/src/testing/sendPenEvent.ts +0 -31
  359. package/src/testing/sendTouchEvent.ts +0 -78
  360. package/src/toolbar/HTMLToolbar.ts +0 -492
  361. package/src/toolbar/IconProvider.ts +0 -736
  362. package/src/toolbar/lib.ts +0 -4
  363. package/src/toolbar/localization.ts +0 -106
  364. package/src/toolbar/makeColorInput.ts +0 -145
  365. package/src/toolbar/toolbar.css +0 -213
  366. package/src/toolbar/types.ts +0 -5
  367. package/src/toolbar/widgets/ActionButtonWidget.ts +0 -39
  368. package/src/toolbar/widgets/BaseToolWidget.ts +0 -56
  369. package/src/toolbar/widgets/BaseWidget.ts +0 -377
  370. package/src/toolbar/widgets/DocumentPropertiesWidget.ts +0 -167
  371. package/src/toolbar/widgets/EraserToolWidget.ts +0 -85
  372. package/src/toolbar/widgets/HandToolWidget.ts +0 -250
  373. package/src/toolbar/widgets/InsertImageWidget.css +0 -44
  374. package/src/toolbar/widgets/InsertImageWidget.ts +0 -223
  375. package/src/toolbar/widgets/OverflowWidget.css +0 -27
  376. package/src/toolbar/widgets/OverflowWidget.ts +0 -92
  377. package/src/toolbar/widgets/PenToolWidget.ts +0 -288
  378. package/src/toolbar/widgets/SelectionToolWidget.ts +0 -190
  379. package/src/toolbar/widgets/TextToolWidget.ts +0 -145
  380. package/src/toolbar/widgets/lib.ts +0 -13
  381. package/src/tools/BaseTool.ts +0 -76
  382. package/src/tools/Eraser.test.ts +0 -103
  383. package/src/tools/Eraser.ts +0 -139
  384. package/src/tools/FindTool.css +0 -7
  385. package/src/tools/FindTool.ts +0 -152
  386. package/src/tools/PanZoom.test.ts +0 -310
  387. package/src/tools/PanZoom.ts +0 -520
  388. package/src/tools/PasteHandler.ts +0 -95
  389. package/src/tools/Pen.test.ts +0 -194
  390. package/src/tools/Pen.ts +0 -226
  391. package/src/tools/PipetteTool.ts +0 -55
  392. package/src/tools/SelectionTool/SelectAllShortcutHandler.ts +0 -28
  393. package/src/tools/SelectionTool/Selection.ts +0 -607
  394. package/src/tools/SelectionTool/SelectionHandle.ts +0 -108
  395. package/src/tools/SelectionTool/SelectionTool.css +0 -23
  396. package/src/tools/SelectionTool/SelectionTool.test.ts +0 -261
  397. package/src/tools/SelectionTool/SelectionTool.ts +0 -480
  398. package/src/tools/SelectionTool/TransformMode.ts +0 -114
  399. package/src/tools/SelectionTool/types.ts +0 -11
  400. package/src/tools/TextTool.ts +0 -326
  401. package/src/tools/ToolController.ts +0 -178
  402. package/src/tools/ToolEnabledGroup.ts +0 -14
  403. package/src/tools/ToolSwitcherShortcut.ts +0 -39
  404. package/src/tools/ToolbarShortcutHandler.ts +0 -34
  405. package/src/tools/UndoRedoShortcut.test.ts +0 -56
  406. package/src/tools/UndoRedoShortcut.ts +0 -25
  407. package/src/tools/lib.ts +0 -21
  408. package/src/tools/localization.ts +0 -66
  409. package/src/types.ts +0 -234
  410. package/src/util/assertions.ts +0 -55
  411. package/src/util/fileToBase64.ts +0 -18
  412. package/src/util/untilNextAnimationFrame.ts +0 -9
  413. package/src/util/waitForTimeout.ts +0 -9
@@ -1,228 +0,0 @@
1
- import LineSegment2 from './LineSegment2';
2
- import { Vec2 } from './Vec2';
3
- // invariant: w ≥ 0, h ≥ 0.
4
- export default class Rect2 {
5
- constructor(x, y, w, h) {
6
- this.x = x;
7
- this.y = y;
8
- this.w = w;
9
- this.h = h;
10
- if (w < 0) {
11
- this.x += w;
12
- this.w = Math.abs(w);
13
- }
14
- if (h < 0) {
15
- this.y += h;
16
- this.h = Math.abs(h);
17
- }
18
- // Precompute/store vector forms.
19
- this.topLeft = Vec2.of(this.x, this.y);
20
- this.size = Vec2.of(this.w, this.h);
21
- this.bottomRight = this.topLeft.plus(this.size);
22
- this.center = this.topLeft.plus(this.size.times(0.5));
23
- this.area = this.w * this.h;
24
- }
25
- translatedBy(vec) {
26
- return new Rect2(vec.x + this.x, vec.y + this.y, this.w, this.h);
27
- }
28
- // Returns a copy of this with the given size (but same top-left).
29
- resizedTo(size) {
30
- return new Rect2(this.x, this.y, size.x, size.y);
31
- }
32
- containsPoint(other) {
33
- return this.x <= other.x && this.y <= other.y
34
- && this.x + this.w >= other.x && this.y + this.h >= other.y;
35
- }
36
- containsRect(other) {
37
- return this.x <= other.x && this.y <= other.y
38
- && this.bottomRight.x >= other.bottomRight.x
39
- && this.bottomRight.y >= other.bottomRight.y;
40
- }
41
- intersects(other) {
42
- // Project along x/y axes.
43
- const thisMinX = this.x;
44
- const thisMaxX = thisMinX + this.w;
45
- const otherMinX = other.x;
46
- const otherMaxX = other.x + other.w;
47
- if (thisMaxX < otherMinX || thisMinX > otherMaxX) {
48
- return false;
49
- }
50
- const thisMinY = this.y;
51
- const thisMaxY = thisMinY + this.h;
52
- const otherMinY = other.y;
53
- const otherMaxY = other.y + other.h;
54
- if (thisMaxY < otherMinY || thisMinY > otherMaxY) {
55
- return false;
56
- }
57
- return true;
58
- }
59
- // Returns the overlap of this and [other], or null, if no such
60
- // overlap exists
61
- intersection(other) {
62
- if (!this.intersects(other)) {
63
- return null;
64
- }
65
- const topLeft = this.topLeft.zip(other.topLeft, Math.max);
66
- const bottomRight = this.bottomRight.zip(other.bottomRight, Math.min);
67
- return Rect2.fromCorners(topLeft, bottomRight);
68
- }
69
- // Returns a new rectangle containing both [this] and [other].
70
- union(other) {
71
- const topLeft = this.topLeft.zip(other.topLeft, Math.min);
72
- const bottomRight = this.bottomRight.zip(other.bottomRight, Math.max);
73
- return Rect2.fromCorners(topLeft, bottomRight);
74
- }
75
- // Returns a the subdivision of this into [columns] columns
76
- // and [rows] rows. For example,
77
- // Rect2.unitSquare.divideIntoGrid(2, 2)
78
- // -> [ Rect2(0, 0, 0.5, 0.5), Rect2(0.5, 0, 0.5, 0.5), Rect2(0, 0.5, 0.5, 0.5), Rect2(0.5, 0.5, 0.5, 0.5) ]
79
- // The rectangles are ordered in row-major order.
80
- divideIntoGrid(columns, rows) {
81
- const result = [];
82
- if (columns <= 0 || rows <= 0) {
83
- return result;
84
- }
85
- const eachRectWidth = this.w / columns;
86
- const eachRectHeight = this.h / rows;
87
- if (eachRectWidth === 0) {
88
- columns = 1;
89
- }
90
- if (eachRectHeight === 0) {
91
- rows = 1;
92
- }
93
- for (let j = 0; j < rows; j++) {
94
- for (let i = 0; i < columns; i++) {
95
- const x = eachRectWidth * i + this.x;
96
- const y = eachRectHeight * j + this.y;
97
- result.push(new Rect2(x, y, eachRectWidth, eachRectHeight));
98
- }
99
- }
100
- return result;
101
- }
102
- // Returns a rectangle containing this and [point].
103
- // [margin] is the minimum distance between the new point and the edge
104
- // of the resultant rectangle.
105
- grownToPoint(point, margin = 0) {
106
- const otherRect = new Rect2(point.x - margin, point.y - margin, margin * 2, margin * 2);
107
- return this.union(otherRect);
108
- }
109
- // Returns this grown by [margin] in both the x and y directions.
110
- grownBy(margin) {
111
- return new Rect2(this.x - margin, this.y - margin, this.w + margin * 2, this.h + margin * 2);
112
- }
113
- getClosestPointOnBoundaryTo(target) {
114
- const closestEdgePoints = this.getEdges().map(edge => {
115
- return edge.closestPointTo(target);
116
- });
117
- let closest = null;
118
- let closestDist = null;
119
- for (const point of closestEdgePoints) {
120
- const dist = point.minus(target).length();
121
- if (closestDist === null || dist < closestDist) {
122
- closest = point;
123
- closestDist = dist;
124
- }
125
- }
126
- return closest;
127
- }
128
- get corners() {
129
- return [
130
- this.bottomRight,
131
- this.topRight,
132
- this.topLeft,
133
- this.bottomLeft,
134
- ];
135
- }
136
- get maxDimension() {
137
- return Math.max(this.w, this.h);
138
- }
139
- get topRight() {
140
- return this.bottomRight.plus(Vec2.of(0, -this.h));
141
- }
142
- get bottomLeft() {
143
- return this.topLeft.plus(Vec2.of(0, this.h));
144
- }
145
- get width() {
146
- return this.w;
147
- }
148
- get height() {
149
- return this.h;
150
- }
151
- // Returns edges in the order
152
- // [ rightEdge, topEdge, leftEdge, bottomEdge ]
153
- getEdges() {
154
- const corners = this.corners;
155
- return [
156
- new LineSegment2(corners[0], corners[1]),
157
- new LineSegment2(corners[1], corners[2]),
158
- new LineSegment2(corners[2], corners[3]),
159
- new LineSegment2(corners[3], corners[0]),
160
- ];
161
- }
162
- // [affineTransform] is a transformation matrix that both scales and **translates**.
163
- // the bounding box of this' four corners after transformed by the given affine transformation.
164
- transformedBoundingBox(affineTransform) {
165
- return Rect2.bboxOf(this.corners.map(corner => affineTransform.transformVec2(corner)));
166
- }
167
- /** @return true iff this is equal to [other] ± fuzz */
168
- eq(other, fuzz = 0) {
169
- return this.topLeft.eq(other.topLeft, fuzz) && this.size.eq(other.size, fuzz);
170
- }
171
- toString() {
172
- return `Rect(point(${this.x}, ${this.y}), size(${this.w}, ${this.h}))`;
173
- }
174
- static fromCorners(corner1, corner2) {
175
- return new Rect2(Math.min(corner1.x, corner2.x), Math.min(corner1.y, corner2.y), Math.abs(corner1.x - corner2.x), Math.abs(corner1.y - corner2.y));
176
- }
177
- // Returns a box that contains all points in [points] with at least [margin]
178
- // between each point and the edge of the box.
179
- static bboxOf(points, margin = 0) {
180
- let minX = 0;
181
- let minY = 0;
182
- let maxX = 0;
183
- let maxY = 0;
184
- let isFirst = true;
185
- for (const point of points) {
186
- if (isFirst) {
187
- minX = point.x;
188
- minY = point.y;
189
- maxX = point.x;
190
- maxY = point.y;
191
- isFirst = false;
192
- }
193
- minX = Math.min(minX, point.x);
194
- minY = Math.min(minY, point.y);
195
- maxX = Math.max(maxX, point.x);
196
- maxY = Math.max(maxY, point.y);
197
- }
198
- return Rect2.fromCorners(Vec2.of(minX - margin, minY - margin), Vec2.of(maxX + margin, maxY + margin));
199
- }
200
- // @returns a rectangle that contains all of the given rectangles, the bounding box
201
- // of the given rectangles.
202
- static union(...rects) {
203
- if (rects.length === 0) {
204
- return Rect2.empty;
205
- }
206
- const firstRect = rects[0];
207
- let minX = firstRect.topLeft.x;
208
- let minY = firstRect.topLeft.y;
209
- let maxX = firstRect.bottomRight.x;
210
- let maxY = firstRect.bottomRight.y;
211
- for (let i = 1; i < rects.length; i++) {
212
- const rect = rects[i];
213
- minX = Math.min(minX, rect.topLeft.x);
214
- minY = Math.min(minY, rect.topLeft.y);
215
- maxX = Math.max(maxX, rect.bottomRight.x);
216
- maxY = Math.max(maxY, rect.bottomRight.y);
217
- }
218
- return new Rect2(minX, minY, maxX - minX, maxY - minY);
219
- }
220
- static of(template) {
221
- var _a, _b, _c, _d;
222
- const width = (_b = (_a = template.width) !== null && _a !== void 0 ? _a : template.w) !== null && _b !== void 0 ? _b : 0;
223
- const height = (_d = (_c = template.height) !== null && _c !== void 0 ? _c : template.h) !== null && _d !== void 0 ? _d : 0;
224
- return new Rect2(template.x, template.y, width, height);
225
- }
226
- }
227
- Rect2.empty = new Rect2(0, 0, 0, 0);
228
- Rect2.unitSquare = new Rect2(0, 0, 1, 1);
@@ -1,11 +0,0 @@
1
- import Mat33 from './Mat33';
2
- import Vec3 from './Vec3';
3
- export default class Triangle {
4
- readonly vertex1: Vec3;
5
- readonly vertex2: Vec3;
6
- readonly vertex3: Vec3;
7
- constructor(vertex1: Vec3, vertex2: Vec3, vertex3: Vec3);
8
- map(mapping: (vertex: Vec3) => Vec3): Triangle;
9
- transformed2DBy(affineTransform: Mat33): Triangle;
10
- transformedBy(linearTransform: Mat33): Triangle;
11
- }
@@ -1,19 +0,0 @@
1
- export default class Triangle {
2
- constructor(vertex1, vertex2, vertex3) {
3
- this.vertex1 = vertex1;
4
- this.vertex2 = vertex2;
5
- this.vertex3 = vertex3;
6
- }
7
- map(mapping) {
8
- return new Triangle(mapping(this.vertex1), mapping(this.vertex2), mapping(this.vertex3));
9
- }
10
- // Transform, treating this as composed of 2D points.
11
- transformed2DBy(affineTransform) {
12
- return this.map(affineTransform.transformVec2);
13
- }
14
- // Transforms this by a linear transform --- verticies are treated as
15
- // 3D points.
16
- transformedBy(linearTransform) {
17
- return this.map(linearTransform.transformVec3);
18
- }
19
- }
@@ -1,13 +0,0 @@
1
- import Vec3 from './Vec3';
2
- export declare namespace Vec2 {
3
- const of: (x: number, y: number) => Vec2;
4
- const ofXY: ({ x, y }: {
5
- x: number;
6
- y: number;
7
- }) => Vec2;
8
- const unitX: Vec3;
9
- const unitY: Vec3;
10
- const zero: Vec3;
11
- }
12
- export type Point2 = Vec3;
13
- export type Vec2 = Vec3;
@@ -1,13 +0,0 @@
1
- import Vec3 from './Vec3';
2
- export var Vec2;
3
- (function (Vec2) {
4
- Vec2.of = (x, y) => {
5
- return Vec3.of(x, y, 0);
6
- };
7
- Vec2.ofXY = ({ x, y }) => {
8
- return Vec3.of(x, y, 0);
9
- };
10
- Vec2.unitX = Vec2.of(1, 0);
11
- Vec2.unitY = Vec2.of(0, 1);
12
- Vec2.zero = Vec2.of(0, 0);
13
- })(Vec2 || (Vec2 = {}));
@@ -1,106 +0,0 @@
1
- /**
2
- * A vector with three components. Can also be used to represent a two-component vector.
3
- *
4
- * A `Vec3` is immutable.
5
- */
6
- export default class Vec3 {
7
- readonly x: number;
8
- readonly y: number;
9
- readonly z: number;
10
- private constructor();
11
- /** Returns the x, y components of this. */
12
- get xy(): {
13
- x: number;
14
- y: number;
15
- };
16
- static of(x: number, y: number, z: number): Vec3;
17
- /** Returns this' `idx`th component. For example, `Vec3.of(1, 2, 3).at(1) → 2`. */
18
- at(idx: number): number;
19
- /** Alias for this.magnitude. */
20
- length(): number;
21
- magnitude(): number;
22
- magnitudeSquared(): number;
23
- /**
24
- * Return this' angle in the XY plane (treats this as a Vec2).
25
- *
26
- * This is equivalent to `Math.atan2(vec.y, vec.x)`.
27
- */
28
- angle(): number;
29
- /**
30
- * Returns a unit vector in the same direction as this.
31
- *
32
- * If `this` has zero length, the resultant vector has `NaN` components.
33
- */
34
- normalized(): Vec3;
35
- /** @returns A copy of `this` multiplied by a scalar. */
36
- times(c: number): Vec3;
37
- plus(v: Vec3): Vec3;
38
- minus(v: Vec3): Vec3;
39
- dot(other: Vec3): number;
40
- cross(other: Vec3): Vec3;
41
- /**
42
- * If `other` is a `Vec3`, multiplies `this` component-wise by `other`. Otherwise,
43
- * if `other is a `number`, returns the result of scalar multiplication.
44
- *
45
- * @example
46
- * ```
47
- * Vec3.of(1, 2, 3).scale(Vec3.of(2, 4, 6)); // → Vec3(2, 8, 18)
48
- * ```
49
- */
50
- scale(other: Vec3 | number): Vec3;
51
- /**
52
- * Returns a vector orthogonal to this. If this is a Vec2, returns `this` rotated
53
- * 90 degrees counter-clockwise.
54
- */
55
- orthog(): Vec3;
56
- /** Returns this plus a vector of length `distance` in `direction`. */
57
- extend(distance: number, direction: Vec3): Vec3;
58
- /** Returns a vector `fractionTo` of the way to target from this. */
59
- lerp(target: Vec3, fractionTo: number): Vec3;
60
- /**
61
- * `zip` Maps a component of this and a corresponding component of
62
- * `other` to a component of the output vector.
63
- *
64
- * @example
65
- * ```
66
- * const a = Vec3.of(1, 2, 3);
67
- * const b = Vec3.of(0.5, 2.1, 2.9);
68
- *
69
- * const zipped = a.zip(b, (aComponent, bComponent) => {
70
- * return Math.min(aComponent, bComponent);
71
- * });
72
- *
73
- * console.log(zipped.toString()); // → Vec(0.5, 2, 2.9)
74
- * ```
75
- */
76
- zip(other: Vec3, zip: (componentInThis: number, componentInOther: number) => number): Vec3;
77
- /**
78
- * Returns a vector with each component acted on by `fn`.
79
- *
80
- * @example
81
- * ```
82
- * console.log(Vec3.of(1, 2, 3).map(val => val + 1)); // → Vec(2, 3, 4)
83
- * ```
84
- */
85
- map(fn: (component: number, index: number) => number): Vec3;
86
- asArray(): [number, number, number];
87
- /**
88
- * [fuzz] The maximum difference between two components for this and [other]
89
- * to be considered equal.
90
- *
91
- * @example
92
- * ```
93
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 100); // → true
94
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 0.1); // → false
95
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 3); // → true
96
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 3.01); // → true
97
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 2.99); // → false
98
- * ```
99
- */
100
- eq(other: Vec3, fuzz?: number): boolean;
101
- toString(): string;
102
- static unitX: Vec3;
103
- static unitY: Vec3;
104
- static unitZ: Vec3;
105
- static zero: Vec3;
106
- }
@@ -1,174 +0,0 @@
1
- /**
2
- * A vector with three components. Can also be used to represent a two-component vector.
3
- *
4
- * A `Vec3` is immutable.
5
- */
6
- export default class Vec3 {
7
- constructor(x, y, z) {
8
- this.x = x;
9
- this.y = y;
10
- this.z = z;
11
- }
12
- /** Returns the x, y components of this. */
13
- get xy() {
14
- // Useful for APIs that behave differently if .z is present.
15
- return {
16
- x: this.x,
17
- y: this.y,
18
- };
19
- }
20
- static of(x, y, z) {
21
- return new Vec3(x, y, z);
22
- }
23
- /** Returns this' `idx`th component. For example, `Vec3.of(1, 2, 3).at(1) → 2`. */
24
- at(idx) {
25
- if (idx === 0)
26
- return this.x;
27
- if (idx === 1)
28
- return this.y;
29
- if (idx === 2)
30
- return this.z;
31
- throw new Error(`${idx} out of bounds!`);
32
- }
33
- /** Alias for this.magnitude. */
34
- length() {
35
- return this.magnitude();
36
- }
37
- magnitude() {
38
- return Math.sqrt(this.dot(this));
39
- }
40
- magnitudeSquared() {
41
- return this.dot(this);
42
- }
43
- /**
44
- * Return this' angle in the XY plane (treats this as a Vec2).
45
- *
46
- * This is equivalent to `Math.atan2(vec.y, vec.x)`.
47
- */
48
- angle() {
49
- return Math.atan2(this.y, this.x);
50
- }
51
- /**
52
- * Returns a unit vector in the same direction as this.
53
- *
54
- * If `this` has zero length, the resultant vector has `NaN` components.
55
- */
56
- normalized() {
57
- const norm = this.magnitude();
58
- return Vec3.of(this.x / norm, this.y / norm, this.z / norm);
59
- }
60
- /** @returns A copy of `this` multiplied by a scalar. */
61
- times(c) {
62
- return Vec3.of(this.x * c, this.y * c, this.z * c);
63
- }
64
- plus(v) {
65
- return Vec3.of(this.x + v.x, this.y + v.y, this.z + v.z);
66
- }
67
- minus(v) {
68
- return Vec3.of(this.x - v.x, this.y - v.y, this.z - v.z);
69
- }
70
- dot(other) {
71
- return this.x * other.x + this.y * other.y + this.z * other.z;
72
- }
73
- cross(other) {
74
- // | i j k |
75
- // | x1 y1 z1| = (i)(y1z2 - y2z1) - (j)(x1z2 - x2z1) + (k)(x1y2 - x2y1)
76
- // | x2 y2 z2|
77
- return Vec3.of(this.y * other.z - other.y * this.z, other.x * this.z - this.x * other.z, this.x * other.y - other.x * this.y);
78
- }
79
- /**
80
- * If `other` is a `Vec3`, multiplies `this` component-wise by `other`. Otherwise,
81
- * if `other is a `number`, returns the result of scalar multiplication.
82
- *
83
- * @example
84
- * ```
85
- * Vec3.of(1, 2, 3).scale(Vec3.of(2, 4, 6)); // → Vec3(2, 8, 18)
86
- * ```
87
- */
88
- scale(other) {
89
- if (typeof other === 'number') {
90
- return this.times(other);
91
- }
92
- return Vec3.of(this.x * other.x, this.y * other.y, this.z * other.z);
93
- }
94
- /**
95
- * Returns a vector orthogonal to this. If this is a Vec2, returns `this` rotated
96
- * 90 degrees counter-clockwise.
97
- */
98
- orthog() {
99
- // If parallel to the z-axis
100
- if (this.dot(Vec3.unitX) === 0 && this.dot(Vec3.unitY) === 0) {
101
- return this.dot(Vec3.unitX) === 0 ? Vec3.unitX : this.cross(Vec3.unitX).normalized();
102
- }
103
- return this.cross(Vec3.unitZ.times(-1)).normalized();
104
- }
105
- /** Returns this plus a vector of length `distance` in `direction`. */
106
- extend(distance, direction) {
107
- return this.plus(direction.normalized().times(distance));
108
- }
109
- /** Returns a vector `fractionTo` of the way to target from this. */
110
- lerp(target, fractionTo) {
111
- return this.times(1 - fractionTo).plus(target.times(fractionTo));
112
- }
113
- /**
114
- * `zip` Maps a component of this and a corresponding component of
115
- * `other` to a component of the output vector.
116
- *
117
- * @example
118
- * ```
119
- * const a = Vec3.of(1, 2, 3);
120
- * const b = Vec3.of(0.5, 2.1, 2.9);
121
- *
122
- * const zipped = a.zip(b, (aComponent, bComponent) => {
123
- * return Math.min(aComponent, bComponent);
124
- * });
125
- *
126
- * console.log(zipped.toString()); // → Vec(0.5, 2, 2.9)
127
- * ```
128
- */
129
- zip(other, zip) {
130
- return Vec3.of(zip(other.x, this.x), zip(other.y, this.y), zip(other.z, this.z));
131
- }
132
- /**
133
- * Returns a vector with each component acted on by `fn`.
134
- *
135
- * @example
136
- * ```
137
- * console.log(Vec3.of(1, 2, 3).map(val => val + 1)); // → Vec(2, 3, 4)
138
- * ```
139
- */
140
- map(fn) {
141
- return Vec3.of(fn(this.x, 0), fn(this.y, 1), fn(this.z, 2));
142
- }
143
- asArray() {
144
- return [this.x, this.y, this.z];
145
- }
146
- /**
147
- * [fuzz] The maximum difference between two components for this and [other]
148
- * to be considered equal.
149
- *
150
- * @example
151
- * ```
152
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 100); // → true
153
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 0.1); // → false
154
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 3); // → true
155
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 3.01); // → true
156
- * Vec3.of(1, 2, 3).eq(Vec3.of(4, 5, 6), 2.99); // → false
157
- * ```
158
- */
159
- eq(other, fuzz = 1e-10) {
160
- for (let i = 0; i < 3; i++) {
161
- if (Math.abs(other.at(i) - this.at(i)) > fuzz) {
162
- return false;
163
- }
164
- }
165
- return true;
166
- }
167
- toString() {
168
- return `Vec(${this.x}, ${this.y}, ${this.z})`;
169
- }
170
- }
171
- Vec3.unitX = Vec3.of(1, 0, 0);
172
- Vec3.unitY = Vec3.of(0, 1, 0);
173
- Vec3.unitZ = Vec3.of(0, 0, 1);
174
- Vec3.zero = Vec3.of(0, 0, 0);
@@ -1,7 +0,0 @@
1
- import LineSegment2 from './LineSegment2';
2
- import Mat33 from './Mat33';
3
- import Path from './Path';
4
- import Rect2 from './Rect2';
5
- import { Vec2 } from './Vec2';
6
- import Vec3 from './Vec3';
7
- export { LineSegment2, Mat33, Path, Rect2, Vec3, Vec2, };
@@ -1,7 +0,0 @@
1
- import LineSegment2 from './LineSegment2';
2
- import Mat33 from './Mat33';
3
- import Path from './Path';
4
- import Rect2 from './Rect2';
5
- import { Vec2 } from './Vec2';
6
- import Vec3 from './Vec3';
7
- export { LineSegment2, Mat33, Path, Rect2, Vec3, Vec2, };
@@ -1,4 +0,0 @@
1
- export declare const cleanUpNumber: (text: string) => string;
2
- export declare const toRoundedString: (num: number) => string;
3
- export declare const getLenAfterDecimal: (numberAsString: string) => number;
4
- export declare const toStringOfSamePrecision: (num: number, ...references: string[]) => string;