js-draw 0.25.1 → 1.0.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.
- package/README.md +80 -26
- package/build-config.json +22 -21
- package/dist/Editor.css +1281 -0
- package/dist/bundle.js +3 -3
- package/dist/bundledStyles.js +1 -1
- package/dist/cjs/Editor.d.ts +91 -12
- package/dist/cjs/Editor.js +619 -590
- package/dist/cjs/EditorImage.d.ts +5 -2
- package/dist/cjs/EditorImage.js +258 -297
- package/dist/cjs/EventDispatcher.js +17 -19
- package/dist/cjs/Pointer.d.ts +3 -1
- package/dist/cjs/Pointer.js +41 -44
- package/dist/cjs/SVGLoader.d.ts +7 -1
- package/dist/cjs/SVGLoader.js +373 -474
- package/dist/cjs/UndoRedoHistory.js +28 -40
- package/dist/cjs/Viewport.d.ts +1 -4
- package/dist/cjs/Viewport.js +150 -193
- package/dist/cjs/bundle/bundled.js +4 -1
- package/dist/cjs/commands/Command.js +22 -49
- package/dist/cjs/commands/Duplicate.js +28 -44
- package/dist/cjs/commands/Erase.js +36 -54
- package/dist/cjs/commands/SerializableCommand.js +20 -35
- package/dist/cjs/commands/UnresolvedCommand.js +14 -29
- package/dist/cjs/commands/invertCommand.js +29 -51
- package/dist/cjs/commands/lib.js +9 -6
- package/dist/cjs/commands/localization.d.ts +1 -1
- package/dist/cjs/commands/localization.js +9 -9
- package/dist/cjs/commands/uniteCommands.js +57 -87
- package/dist/cjs/components/AbstractComponent.d.ts +11 -3
- package/dist/cjs/components/AbstractComponent.js +141 -169
- package/dist/cjs/components/BackgroundComponent.d.ts +3 -6
- package/dist/cjs/components/BackgroundComponent.js +124 -149
- package/dist/cjs/components/ImageComponent.d.ts +3 -5
- package/dist/cjs/components/ImageComponent.js +95 -175
- package/dist/cjs/components/RestylableComponent.d.ts +1 -1
- package/dist/cjs/components/RestylableComponent.js +41 -56
- package/dist/cjs/components/SVGGlobalAttributesObject.d.ts +1 -3
- package/dist/cjs/components/SVGGlobalAttributesObject.js +34 -51
- package/dist/cjs/components/Stroke.d.ts +4 -6
- package/dist/cjs/components/Stroke.js +95 -121
- package/dist/cjs/components/TextComponent.d.ts +2 -4
- package/dist/cjs/components/TextComponent.js +189 -234
- package/dist/cjs/components/UnknownSVGObject.d.ts +1 -3
- package/dist/cjs/components/UnknownSVGObject.js +30 -43
- package/dist/cjs/components/builders/ArrowBuilder.d.ts +1 -1
- package/dist/cjs/components/builders/ArrowBuilder.js +43 -42
- package/dist/cjs/components/builders/CircleBuilder.js +43 -43
- package/dist/cjs/components/builders/FreehandLineBuilder.d.ts +3 -2
- package/dist/cjs/components/builders/FreehandLineBuilder.js +73 -86
- package/dist/cjs/components/builders/LineBuilder.d.ts +1 -1
- package/dist/cjs/components/builders/LineBuilder.js +38 -36
- package/dist/cjs/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +1 -1
- package/dist/cjs/components/builders/PressureSensitiveFreehandLineBuilder.js +131 -139
- package/dist/cjs/components/builders/RectangleBuilder.d.ts +1 -1
- package/dist/cjs/components/builders/RectangleBuilder.js +31 -31
- package/dist/cjs/components/builders/types.d.ts +1 -1
- package/dist/cjs/components/lib.d.ts +3 -1
- package/dist/cjs/components/lib.js +10 -7
- package/dist/cjs/components/localization.js +4 -4
- package/dist/cjs/components/util/StrokeSmoother.d.ts +1 -2
- package/dist/cjs/components/util/StrokeSmoother.js +67 -72
- package/dist/cjs/components/util/describeComponentList.d.ts +1 -1
- package/dist/cjs/components/util/describeComponentList.js +4 -5
- package/dist/cjs/dialogs/makeAboutDialog.d.ts +15 -0
- package/dist/cjs/dialogs/makeAboutDialog.js +54 -0
- package/dist/cjs/inputEvents.d.ts +84 -0
- package/dist/cjs/inputEvents.js +40 -0
- package/dist/cjs/lib.d.ts +29 -13
- package/dist/cjs/lib.js +38 -23
- package/dist/cjs/localization.js +19 -18
- package/dist/cjs/localizations/de.js +117 -13
- package/dist/cjs/localizations/en.js +4 -13
- package/dist/cjs/localizations/es.js +62 -23
- package/dist/cjs/localizations/getLocalizationTable.js +15 -13
- package/dist/cjs/rendering/Display.d.ts +1 -2
- package/dist/cjs/rendering/Display.js +70 -83
- package/dist/cjs/rendering/RenderablePathSpec.d.ts +15 -0
- package/dist/cjs/rendering/RenderablePathSpec.js +70 -0
- package/dist/cjs/rendering/RenderingStyle.d.ts +4 -4
- package/dist/cjs/rendering/RenderingStyle.js +18 -28
- package/dist/cjs/rendering/TextRenderingStyle.d.ts +10 -10
- package/dist/cjs/rendering/TextRenderingStyle.js +13 -18
- package/dist/cjs/rendering/caching/CacheRecord.d.ts +1 -2
- package/dist/cjs/rendering/caching/CacheRecord.js +20 -22
- package/dist/cjs/rendering/caching/CacheRecordManager.d.ts +1 -1
- package/dist/cjs/rendering/caching/CacheRecordManager.js +17 -15
- package/dist/cjs/rendering/caching/RenderingCache.js +19 -19
- package/dist/cjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
- package/dist/cjs/rendering/caching/RenderingCacheNode.js +98 -118
- package/dist/cjs/rendering/caching/testUtils.js +24 -23
- package/dist/cjs/rendering/caching/types.d.ts +3 -3
- package/dist/cjs/rendering/lib.js +8 -5
- package/dist/cjs/rendering/localization.js +5 -5
- package/dist/cjs/rendering/renderers/AbstractRenderer.d.ts +2 -11
- package/dist/cjs/rendering/renderers/AbstractRenderer.js +53 -57
- package/dist/cjs/rendering/renderers/CanvasRenderer.d.ts +3 -5
- package/dist/cjs/rendering/renderers/CanvasRenderer.js +91 -106
- package/dist/cjs/rendering/renderers/DummyRenderer.d.ts +1 -4
- package/dist/cjs/rendering/renderers/DummyRenderer.js +56 -76
- package/dist/cjs/rendering/renderers/SVGRenderer.d.ts +5 -5
- package/dist/cjs/rendering/renderers/SVGRenderer.js +194 -176
- package/dist/cjs/rendering/renderers/TextOnlyRenderer.d.ts +1 -3
- package/dist/cjs/rendering/renderers/TextOnlyRenderer.js +47 -72
- package/dist/cjs/shortcuts/KeyBinding.d.ts +5 -0
- package/dist/cjs/shortcuts/KeyBinding.js +94 -70
- package/dist/cjs/shortcuts/KeyboardShortcutManager.d.ts +1 -1
- package/dist/cjs/shortcuts/KeyboardShortcutManager.js +36 -45
- package/dist/cjs/shortcuts/lib.js +5 -2
- package/dist/cjs/testing/createEditor.js +7 -4
- package/dist/cjs/testing/getUniquePointerId.js +4 -5
- package/dist/cjs/testing/lib.js +5 -2
- package/dist/cjs/testing/sendPenEvent.d.ts +2 -2
- package/dist/cjs/testing/sendPenEvent.js +10 -7
- package/dist/cjs/testing/sendTouchEvent.d.ts +2 -2
- package/dist/cjs/testing/sendTouchEvent.js +34 -16
- package/dist/cjs/toolbar/AbstractToolbar.d.ts +166 -0
- package/dist/cjs/toolbar/AbstractToolbar.js +410 -0
- package/dist/cjs/toolbar/DropdownToolbar.d.ts +43 -0
- package/dist/cjs/toolbar/DropdownToolbar.js +176 -0
- package/dist/cjs/toolbar/EdgeToolbar.d.ts +47 -0
- package/dist/cjs/toolbar/EdgeToolbar.js +422 -0
- package/dist/cjs/toolbar/IconProvider.d.ts +54 -30
- package/dist/cjs/toolbar/IconProvider.js +652 -224
- package/dist/cjs/toolbar/constants.d.ts +1 -0
- package/dist/cjs/toolbar/constants.js +4 -0
- package/dist/cjs/toolbar/lib.d.ts +4 -2
- package/dist/cjs/toolbar/lib.js +10 -3
- package/dist/cjs/toolbar/localization.d.ts +9 -2
- package/dist/cjs/toolbar/localization.js +26 -19
- package/dist/cjs/toolbar/types.d.ts +7 -0
- package/dist/cjs/toolbar/widgets/ActionButtonWidget.d.ts +1 -1
- package/dist/cjs/toolbar/widgets/ActionButtonWidget.js +23 -39
- package/dist/cjs/toolbar/widgets/BaseToolWidget.d.ts +1 -1
- package/dist/cjs/toolbar/widgets/BaseToolWidget.js +35 -37
- package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +60 -5
- package/dist/cjs/toolbar/widgets/BaseWidget.js +232 -177
- package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.js +130 -117
- package/dist/cjs/toolbar/widgets/EraserToolWidget.d.ts +1 -3
- package/dist/cjs/toolbar/widgets/EraserToolWidget.js +45 -73
- package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
- package/dist/cjs/toolbar/widgets/HandToolWidget.js +126 -141
- package/dist/cjs/toolbar/widgets/InsertImageWidget.d.ts +9 -7
- package/dist/cjs/toolbar/widgets/InsertImageWidget.js +147 -212
- package/dist/cjs/toolbar/widgets/OverflowWidget.js +33 -61
- package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +8 -1
- package/dist/cjs/toolbar/widgets/PenToolWidget.js +162 -234
- package/dist/cjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
- package/dist/cjs/toolbar/widgets/SelectionToolWidget.js +105 -177
- package/dist/cjs/toolbar/widgets/TextToolWidget.js +64 -87
- package/dist/cjs/toolbar/widgets/components/makeColorInput.d.ts +10 -0
- package/dist/cjs/toolbar/{makeColorInput.js → widgets/components/makeColorInput.js} +57 -34
- package/dist/cjs/toolbar/widgets/components/makeFileInput.d.ts +12 -0
- package/dist/cjs/toolbar/widgets/components/makeFileInput.js +111 -0
- package/dist/cjs/toolbar/widgets/components/makeGridSelector.d.ts +24 -0
- package/dist/cjs/toolbar/widgets/components/makeGridSelector.js +127 -0
- package/dist/cjs/toolbar/widgets/components/makeSeparator.d.ts +7 -0
- package/dist/cjs/toolbar/widgets/components/makeSeparator.js +16 -0
- package/dist/cjs/toolbar/widgets/components/makeThicknessSlider.d.ts +8 -0
- package/dist/cjs/toolbar/widgets/components/makeThicknessSlider.js +47 -0
- package/dist/cjs/toolbar/widgets/keybindings.js +8 -5
- package/dist/cjs/toolbar/widgets/layout/DropdownLayoutManager.d.ts +21 -0
- package/dist/cjs/toolbar/widgets/layout/DropdownLayoutManager.js +199 -0
- package/dist/cjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.d.ts +14 -0
- package/dist/cjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.js +60 -0
- package/dist/cjs/toolbar/widgets/layout/types.d.ts +63 -0
- package/dist/cjs/toolbar/widgets/layout/types.js +2 -0
- package/dist/cjs/toolbar/widgets/lib.d.ts +1 -1
- package/dist/cjs/toolbar/widgets/lib.js +15 -11
- package/dist/cjs/tools/BaseTool.d.ts +28 -9
- package/dist/cjs/tools/BaseTool.js +128 -51
- package/dist/cjs/tools/Eraser.d.ts +8 -1
- package/dist/cjs/tools/Eraser.js +82 -92
- package/dist/cjs/tools/FindTool.d.ts +1 -1
- package/dist/cjs/tools/FindTool.js +61 -77
- package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
- package/dist/cjs/tools/InputFilter/FunctionMapper.js +21 -0
- package/dist/cjs/tools/InputFilter/InputMapper.d.ts +23 -0
- package/dist/cjs/tools/InputFilter/InputMapper.js +38 -0
- package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +15 -0
- package/dist/cjs/tools/InputFilter/InputPipeline.js +54 -0
- package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
- package/dist/cjs/tools/InputFilter/InputStabilizer.js +181 -0
- package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
- package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +84 -0
- package/dist/cjs/tools/PanZoom.d.ts +4 -2
- package/dist/cjs/tools/PanZoom.js +186 -248
- package/dist/cjs/tools/PasteHandler.d.ts +1 -1
- package/dist/cjs/tools/PasteHandler.js +49 -148
- package/dist/cjs/tools/Pen.d.ts +12 -11
- package/dist/cjs/tools/Pen.js +123 -158
- package/dist/cjs/tools/PipetteTool.d.ts +11 -2
- package/dist/cjs/tools/PipetteTool.js +51 -48
- package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -1
- package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +15 -30
- package/dist/cjs/tools/SelectionTool/Selection.d.ts +5 -5
- package/dist/cjs/tools/SelectionTool/Selection.js +308 -415
- package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +15 -5
- package/dist/cjs/tools/SelectionTool/SelectionHandle.js +63 -37
- package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +4 -4
- package/dist/cjs/tools/SelectionTool/SelectionTool.js +164 -187
- package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +1 -1
- package/dist/cjs/tools/SelectionTool/TransformMode.js +65 -66
- package/dist/cjs/tools/SoundUITool.d.ts +2 -1
- package/dist/cjs/tools/SoundUITool.js +70 -84
- package/dist/cjs/tools/TextTool.d.ts +5 -3
- package/dist/cjs/tools/TextTool.js +169 -173
- package/dist/cjs/tools/ToolController.d.ts +16 -2
- package/dist/cjs/tools/ToolController.js +124 -100
- package/dist/cjs/tools/ToolEnabledGroup.js +6 -9
- package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +1 -1
- package/dist/cjs/tools/ToolSwitcherShortcut.js +16 -32
- package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +1 -1
- package/dist/cjs/tools/ToolbarShortcutHandler.js +17 -33
- package/dist/cjs/tools/UndoRedoShortcut.d.ts +1 -1
- package/dist/cjs/tools/UndoRedoShortcut.js +12 -27
- package/dist/cjs/tools/keybindings.js +21 -18
- package/dist/cjs/tools/lib.js +17 -14
- package/dist/cjs/tools/localization.d.ts +2 -1
- package/dist/cjs/tools/localization.js +8 -7
- package/dist/cjs/types.d.ts +22 -80
- package/dist/cjs/types.js +8 -16
- package/dist/cjs/util/ReactiveValue.d.ts +65 -0
- package/dist/cjs/util/ReactiveValue.js +166 -0
- package/dist/cjs/util/assertions.js +5 -8
- package/dist/cjs/util/fileToBase64.js +6 -6
- package/dist/cjs/util/guessKeyCodeFromKey.d.ts +9 -0
- package/dist/cjs/util/guessKeyCodeFromKey.js +32 -0
- package/dist/cjs/util/listPrefixMatch.d.ts +6 -0
- package/dist/cjs/util/listPrefixMatch.js +17 -0
- package/dist/cjs/util/stopPropagationOfScrollingWheelEvents.d.ts +2 -0
- package/dist/cjs/util/stopPropagationOfScrollingWheelEvents.js +17 -0
- package/dist/cjs/util/untilNextAnimationFrame.js +3 -3
- package/dist/cjs/util/waitForAll.js +3 -3
- package/dist/cjs/util/waitForTimeout.js +3 -3
- package/dist/cjs/version.d.ts +4 -0
- package/dist/cjs/version.js +5 -0
- package/dist/mjs/Editor.d.ts +91 -12
- package/dist/mjs/Editor.mjs +565 -563
- package/dist/mjs/EditorImage.d.ts +5 -2
- package/dist/mjs/EditorImage.mjs +248 -291
- package/dist/mjs/EventDispatcher.mjs +17 -20
- package/dist/mjs/Pointer.d.ts +3 -1
- package/dist/mjs/Pointer.mjs +40 -44
- package/dist/mjs/SVGLoader.d.ts +7 -1
- package/dist/mjs/SVGLoader.mjs +338 -466
- package/dist/mjs/UndoRedoHistory.mjs +27 -39
- package/dist/mjs/Viewport.d.ts +1 -4
- package/dist/mjs/Viewport.mjs +139 -187
- package/dist/mjs/commands/Command.mjs +21 -49
- package/dist/mjs/commands/Duplicate.mjs +22 -41
- package/dist/mjs/commands/Erase.mjs +30 -51
- package/dist/mjs/commands/SerializableCommand.mjs +16 -34
- package/dist/mjs/commands/UnresolvedCommand.mjs +10 -29
- package/dist/mjs/commands/invertCommand.mjs +24 -49
- package/dist/mjs/commands/localization.d.ts +1 -1
- package/dist/mjs/commands/localization.mjs +10 -10
- package/dist/mjs/commands/uniteCommands.mjs +52 -85
- package/dist/mjs/components/AbstractComponent.d.ts +11 -3
- package/dist/mjs/components/AbstractComponent.mjs +135 -166
- package/dist/mjs/components/BackgroundComponent.d.ts +3 -6
- package/dist/mjs/components/BackgroundComponent.mjs +107 -136
- package/dist/mjs/components/ImageComponent.d.ts +3 -5
- package/dist/mjs/components/ImageComponent.mjs +90 -174
- package/dist/mjs/components/RestylableComponent.d.ts +1 -1
- package/dist/mjs/components/RestylableComponent.mjs +35 -53
- package/dist/mjs/components/SVGGlobalAttributesObject.d.ts +1 -3
- package/dist/mjs/components/SVGGlobalAttributesObject.mjs +29 -50
- package/dist/mjs/components/Stroke.d.ts +4 -6
- package/dist/mjs/components/Stroke.mjs +89 -119
- package/dist/mjs/components/TextComponent.d.ts +2 -4
- package/dist/mjs/components/TextComponent.mjs +180 -228
- package/dist/mjs/components/UnknownSVGObject.d.ts +1 -3
- package/dist/mjs/components/UnknownSVGObject.mjs +26 -43
- package/dist/mjs/components/builders/ArrowBuilder.d.ts +1 -1
- package/dist/mjs/components/builders/ArrowBuilder.mjs +32 -35
- package/dist/mjs/components/builders/CircleBuilder.mjs +35 -38
- package/dist/mjs/components/builders/FreehandLineBuilder.d.ts +3 -2
- package/dist/mjs/components/builders/FreehandLineBuilder.mjs +52 -69
- package/dist/mjs/components/builders/LineBuilder.d.ts +1 -1
- package/dist/mjs/components/builders/LineBuilder.mjs +30 -32
- package/dist/mjs/components/builders/PressureSensitiveFreehandLineBuilder.d.ts +1 -1
- package/dist/mjs/components/builders/PressureSensitiveFreehandLineBuilder.mjs +103 -115
- package/dist/mjs/components/builders/RectangleBuilder.d.ts +1 -1
- package/dist/mjs/components/builders/RectangleBuilder.mjs +27 -31
- package/dist/mjs/components/builders/types.d.ts +1 -1
- package/dist/mjs/components/lib.d.ts +3 -1
- package/dist/mjs/components/lib.mjs +1 -1
- package/dist/mjs/components/localization.mjs +5 -5
- package/dist/mjs/components/util/StrokeSmoother.d.ts +1 -2
- package/dist/mjs/components/util/StrokeSmoother.mjs +63 -69
- package/dist/mjs/components/util/describeComponentList.d.ts +1 -1
- package/dist/mjs/components/util/describeComponentList.mjs +4 -5
- package/dist/mjs/dialogs/makeAboutDialog.d.ts +15 -0
- package/dist/mjs/dialogs/makeAboutDialog.mjs +52 -0
- package/dist/mjs/inputEvents.d.ts +84 -0
- package/dist/mjs/inputEvents.mjs +34 -0
- package/dist/mjs/lib.d.ts +29 -13
- package/dist/mjs/lib.mjs +30 -13
- package/dist/mjs/localization.mjs +14 -13
- package/dist/mjs/localizations/de.mjs +116 -12
- package/dist/mjs/localizations/en.mjs +3 -12
- package/dist/mjs/localizations/es.mjs +61 -22
- package/dist/mjs/localizations/getLocalizationTable.mjs +12 -13
- package/dist/mjs/rendering/Display.d.ts +1 -2
- package/dist/mjs/rendering/Display.mjs +62 -79
- package/dist/mjs/rendering/RenderablePathSpec.d.ts +15 -0
- package/dist/mjs/rendering/RenderablePathSpec.mjs +64 -0
- package/dist/mjs/rendering/RenderingStyle.d.ts +4 -4
- package/dist/mjs/rendering/RenderingStyle.mjs +16 -26
- package/dist/mjs/rendering/TextRenderingStyle.d.ts +10 -10
- package/dist/mjs/rendering/TextRenderingStyle.mjs +12 -17
- package/dist/mjs/rendering/caching/CacheRecord.d.ts +1 -2
- package/dist/mjs/rendering/caching/CacheRecord.mjs +20 -23
- package/dist/mjs/rendering/caching/CacheRecordManager.d.ts +1 -1
- package/dist/mjs/rendering/caching/CacheRecordManager.mjs +13 -15
- package/dist/mjs/rendering/caching/RenderingCache.mjs +13 -17
- package/dist/mjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
- package/dist/mjs/rendering/caching/RenderingCacheNode.mjs +94 -115
- package/dist/mjs/rendering/caching/testUtils.mjs +19 -21
- package/dist/mjs/rendering/caching/types.d.ts +3 -3
- package/dist/mjs/rendering/localization.mjs +6 -6
- package/dist/mjs/rendering/renderers/AbstractRenderer.d.ts +2 -11
- package/dist/mjs/rendering/renderers/AbstractRenderer.mjs +47 -52
- package/dist/mjs/rendering/renderers/CanvasRenderer.d.ts +3 -5
- package/dist/mjs/rendering/renderers/CanvasRenderer.mjs +84 -103
- package/dist/mjs/rendering/renderers/DummyRenderer.d.ts +1 -4
- package/dist/mjs/rendering/renderers/DummyRenderer.mjs +51 -75
- package/dist/mjs/rendering/renderers/SVGRenderer.d.ts +5 -5
- package/dist/mjs/rendering/renderers/SVGRenderer.mjs +185 -171
- package/dist/mjs/rendering/renderers/TextOnlyRenderer.d.ts +1 -3
- package/dist/mjs/rendering/renderers/TextOnlyRenderer.mjs +43 -72
- package/dist/mjs/shortcuts/KeyBinding.d.ts +5 -0
- package/dist/mjs/shortcuts/KeyBinding.mjs +94 -71
- package/dist/mjs/shortcuts/KeyboardShortcutManager.d.ts +1 -1
- package/dist/mjs/shortcuts/KeyboardShortcutManager.mjs +32 -44
- package/dist/mjs/testing/createEditor.mjs +2 -2
- package/dist/mjs/testing/getUniquePointerId.mjs +4 -5
- package/dist/mjs/testing/sendPenEvent.d.ts +2 -2
- package/dist/mjs/testing/sendPenEvent.mjs +5 -5
- package/dist/mjs/testing/sendTouchEvent.d.ts +2 -2
- package/dist/mjs/testing/sendTouchEvent.mjs +8 -16
- package/dist/mjs/toolbar/AbstractToolbar.d.ts +166 -0
- package/dist/mjs/toolbar/AbstractToolbar.mjs +405 -0
- package/dist/mjs/toolbar/DropdownToolbar.d.ts +43 -0
- package/dist/mjs/toolbar/DropdownToolbar.mjs +168 -0
- package/dist/mjs/toolbar/EdgeToolbar.d.ts +47 -0
- package/dist/mjs/toolbar/EdgeToolbar.mjs +414 -0
- package/dist/mjs/toolbar/IconProvider.d.ts +54 -30
- package/dist/mjs/toolbar/IconProvider.mjs +644 -219
- package/dist/mjs/toolbar/constants.d.ts +1 -0
- package/dist/mjs/toolbar/constants.mjs +1 -0
- package/dist/mjs/toolbar/lib.d.ts +4 -2
- package/dist/mjs/toolbar/lib.mjs +3 -1
- package/dist/mjs/toolbar/localization.d.ts +9 -2
- package/dist/mjs/toolbar/localization.mjs +27 -20
- package/dist/mjs/toolbar/types.d.ts +7 -0
- package/dist/mjs/toolbar/widgets/ActionButtonWidget.d.ts +1 -1
- package/dist/mjs/toolbar/widgets/ActionButtonWidget.mjs +19 -39
- package/dist/mjs/toolbar/widgets/BaseToolWidget.d.ts +1 -1
- package/dist/mjs/toolbar/widgets/BaseToolWidget.mjs +30 -36
- package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +60 -5
- package/dist/mjs/toolbar/widgets/BaseWidget.mjs +227 -176
- package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.mjs +98 -111
- package/dist/mjs/toolbar/widgets/EraserToolWidget.d.ts +1 -3
- package/dist/mjs/toolbar/widgets/EraserToolWidget.mjs +41 -73
- package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
- package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +94 -136
- package/dist/mjs/toolbar/widgets/InsertImageWidget.d.ts +9 -7
- package/dist/mjs/toolbar/widgets/InsertImageWidget.mjs +140 -208
- package/dist/mjs/toolbar/widgets/OverflowWidget.mjs +30 -62
- package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +8 -1
- package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +150 -225
- package/dist/mjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
- package/dist/mjs/toolbar/widgets/SelectionToolWidget.mjs +97 -173
- package/dist/mjs/toolbar/widgets/TextToolWidget.mjs +59 -85
- package/dist/mjs/toolbar/widgets/components/makeColorInput.d.ts +10 -0
- package/dist/mjs/toolbar/{makeColorInput.mjs → widgets/components/makeColorInput.mjs} +53 -33
- package/dist/mjs/toolbar/widgets/components/makeFileInput.d.ts +12 -0
- package/dist/mjs/toolbar/widgets/components/makeFileInput.mjs +106 -0
- package/dist/mjs/toolbar/widgets/components/makeGridSelector.d.ts +24 -0
- package/dist/mjs/toolbar/widgets/components/makeGridSelector.mjs +122 -0
- package/dist/mjs/toolbar/widgets/components/makeSeparator.d.ts +7 -0
- package/dist/mjs/toolbar/widgets/components/makeSeparator.mjs +14 -0
- package/dist/mjs/toolbar/widgets/components/makeThicknessSlider.d.ts +8 -0
- package/dist/mjs/toolbar/widgets/components/makeThicknessSlider.mjs +45 -0
- package/dist/mjs/toolbar/widgets/keybindings.mjs +5 -5
- package/dist/mjs/toolbar/widgets/layout/DropdownLayoutManager.d.ts +21 -0
- package/dist/mjs/toolbar/widgets/layout/DropdownLayoutManager.mjs +193 -0
- package/dist/mjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.d.ts +14 -0
- package/dist/mjs/toolbar/widgets/layout/EdgeToolbarLayoutManager.mjs +57 -0
- package/dist/mjs/toolbar/widgets/layout/types.d.ts +63 -0
- package/dist/mjs/toolbar/widgets/lib.d.ts +1 -1
- package/dist/mjs/toolbar/widgets/lib.mjs +1 -1
- package/dist/mjs/tools/BaseTool.d.ts +28 -9
- package/dist/mjs/tools/BaseTool.mjs +127 -50
- package/dist/mjs/tools/Eraser.d.ts +8 -1
- package/dist/mjs/tools/Eraser.mjs +72 -86
- package/dist/mjs/tools/FindTool.d.ts +1 -1
- package/dist/mjs/tools/FindTool.mjs +55 -75
- package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
- package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +15 -0
- package/dist/mjs/tools/InputFilter/InputMapper.d.ts +23 -0
- package/dist/mjs/tools/InputFilter/InputMapper.mjs +36 -0
- package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +15 -0
- package/dist/mjs/tools/InputFilter/InputPipeline.mjs +49 -0
- package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
- package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +175 -0
- package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
- package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +78 -0
- package/dist/mjs/tools/PanZoom.d.ts +4 -2
- package/dist/mjs/tools/PanZoom.mjs +169 -235
- package/dist/mjs/tools/PasteHandler.d.ts +1 -1
- package/dist/mjs/tools/PasteHandler.mjs +42 -145
- package/dist/mjs/tools/Pen.d.ts +12 -11
- package/dist/mjs/tools/Pen.mjs +115 -154
- package/dist/mjs/tools/PipetteTool.d.ts +11 -2
- package/dist/mjs/tools/PipetteTool.mjs +47 -48
- package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -1
- package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +9 -28
- package/dist/mjs/tools/SelectionTool/Selection.d.ts +5 -5
- package/dist/mjs/tools/SelectionTool/Selection.mjs +268 -401
- package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +15 -5
- package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +62 -37
- package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +4 -4
- package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +153 -179
- package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +1 -1
- package/dist/mjs/tools/SelectionTool/TransformMode.mjs +52 -59
- package/dist/mjs/tools/SoundUITool.d.ts +2 -1
- package/dist/mjs/tools/SoundUITool.mjs +66 -84
- package/dist/mjs/tools/TextTool.d.ts +5 -3
- package/dist/mjs/tools/TextTool.mjs +155 -163
- package/dist/mjs/tools/ToolController.d.ts +16 -2
- package/dist/mjs/tools/ToolController.mjs +81 -84
- package/dist/mjs/tools/ToolEnabledGroup.mjs +6 -10
- package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +1 -1
- package/dist/mjs/tools/ToolSwitcherShortcut.mjs +12 -32
- package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +1 -1
- package/dist/mjs/tools/ToolbarShortcutHandler.mjs +13 -33
- package/dist/mjs/tools/UndoRedoShortcut.d.ts +1 -1
- package/dist/mjs/tools/UndoRedoShortcut.mjs +7 -26
- package/dist/mjs/tools/keybindings.mjs +34 -34
- package/dist/mjs/tools/localization.d.ts +2 -1
- package/dist/mjs/tools/localization.mjs +9 -8
- package/dist/mjs/types.d.ts +22 -80
- package/dist/mjs/types.mjs +7 -15
- package/dist/mjs/util/ReactiveValue.d.ts +65 -0
- package/dist/mjs/util/ReactiveValue.mjs +161 -0
- package/dist/mjs/util/assertions.mjs +5 -8
- package/dist/mjs/util/fileToBase64.mjs +6 -6
- package/dist/mjs/util/guessKeyCodeFromKey.d.ts +9 -0
- package/dist/mjs/util/guessKeyCodeFromKey.mjs +30 -0
- package/dist/mjs/util/listPrefixMatch.d.ts +6 -0
- package/dist/mjs/util/listPrefixMatch.mjs +15 -0
- package/dist/mjs/util/stopPropagationOfScrollingWheelEvents.d.ts +2 -0
- package/dist/mjs/util/stopPropagationOfScrollingWheelEvents.mjs +15 -0
- package/dist/mjs/util/untilNextAnimationFrame.mjs +3 -3
- package/dist/mjs/util/waitForAll.mjs +3 -3
- package/dist/mjs/util/waitForTimeout.mjs +3 -3
- package/dist/mjs/version.d.ts +4 -0
- package/dist/mjs/version.mjs +3 -0
- package/dist-test/test_imports/package.json +1 -1
- package/dist-test/test_imports/test-imports.js +5 -11
- package/dist-test/test_imports/test-require.cjs +6 -11
- package/package.json +11 -22
- package/src/Coloris.css +8 -8
- package/src/Editor.loadFrom.test.ts +1 -1
- package/src/Editor.scss +148 -0
- package/src/Editor.test.ts +107 -0
- package/src/Editor.toSVG.test.ts +184 -1
- package/src/Editor.ts +325 -53
- package/src/EditorImage.test.ts +4 -7
- package/src/EditorImage.ts +10 -4
- package/src/Pointer.ts +18 -5
- package/src/SVGLoader.ts +77 -15
- package/src/UndoRedoHistory.test.ts +2 -1
- package/src/Viewport.ts +1 -4
- package/src/commands/Erase.ts +1 -0
- package/src/commands/localization.ts +1 -1
- package/src/commands/uniteCommands.test.ts +3 -3
- package/src/components/AbstractComponent.transformBy.test.ts +2 -1
- package/src/components/AbstractComponent.ts +12 -3
- package/src/components/BackgroundComponent.test.ts +1 -2
- package/src/components/BackgroundComponent.ts +3 -8
- package/src/components/ImageComponent.ts +1 -3
- package/src/components/RestylableComponent.ts +1 -1
- package/src/components/SVGGlobalAttributesObject.ts +1 -3
- package/src/components/Stroke.test.ts +4 -6
- package/src/components/Stroke.ts +5 -7
- package/src/components/TextComponent.test.ts +1 -3
- package/src/components/TextComponent.ts +1 -4
- package/src/components/UnknownSVGObject.ts +3 -3
- package/src/components/builders/ArrowBuilder.ts +1 -2
- package/src/components/builders/CircleBuilder.ts +3 -5
- package/src/components/builders/FreehandLineBuilder.test.ts +2 -3
- package/src/components/builders/FreehandLineBuilder.ts +3 -5
- package/src/components/builders/LineBuilder.ts +3 -3
- package/src/components/builders/PressureSensitiveFreehandLineBuilder.ts +3 -4
- package/src/components/builders/RectangleBuilder.ts +3 -4
- package/src/components/builders/types.ts +1 -1
- package/src/components/lib.ts +1 -1
- package/src/components/util/StrokeSmoother.ts +7 -7
- package/src/dialogs/dialogs.scss +36 -0
- package/src/dialogs/makeAboutDialog.scss +41 -0
- package/src/dialogs/makeAboutDialog.ts +82 -0
- package/src/inputEvents.ts +143 -0
- package/src/lib.ts +35 -13
- package/src/localizations/de.ts +2 -2
- package/src/localizations/es.ts +5 -5
- package/src/rendering/Display.ts +1 -2
- package/src/rendering/RenderablePathSpec.ts +88 -0
- package/src/rendering/RenderingStyle.test.ts +1 -1
- package/src/rendering/RenderingStyle.ts +1 -1
- package/src/rendering/caching/CacheRecord.test.ts +1 -2
- package/src/rendering/caching/CacheRecord.ts +1 -2
- package/src/rendering/caching/CacheRecordManager.ts +1 -1
- package/src/rendering/caching/RenderingCache.test.ts +3 -4
- package/src/rendering/caching/RenderingCache.ts +1 -1
- package/src/rendering/caching/RenderingCacheNode.ts +1 -2
- package/src/rendering/caching/testUtils.ts +1 -1
- package/src/rendering/caching/types.ts +3 -3
- package/src/rendering/renderers/AbstractRenderer.ts +4 -14
- package/src/rendering/renderers/CanvasRenderer.ts +17 -12
- package/src/rendering/renderers/DummyRenderer.test.ts +1 -2
- package/src/rendering/renderers/DummyRenderer.ts +1 -4
- package/src/rendering/renderers/SVGRenderer.ts +68 -11
- package/src/rendering/renderers/TextOnlyRenderer.ts +1 -4
- package/src/shortcuts/KeyBinding.test.ts +10 -0
- package/src/shortcuts/KeyBinding.ts +74 -35
- package/src/shortcuts/KeyboardShortcutManager.test.ts +1 -1
- package/src/styles.js +1 -1
- package/src/testing/sendPenEvent.ts +2 -2
- package/src/testing/sendTouchEvent.ts +2 -2
- package/src/toolbar/{toolbar.css → AbstractToolbar.scss} +47 -85
- package/src/toolbar/AbstractToolbar.ts +542 -0
- package/src/toolbar/DropdownToolbar.scss +46 -0
- package/src/toolbar/DropdownToolbar.ts +220 -0
- package/src/toolbar/EdgeToolbar.scss +511 -0
- package/src/toolbar/EdgeToolbar.test.ts +54 -0
- package/src/toolbar/EdgeToolbar.ts +543 -0
- package/src/toolbar/IconProvider.ts +189 -133
- package/src/toolbar/constants.ts +1 -0
- package/src/toolbar/lib.ts +4 -2
- package/src/toolbar/localization.ts +39 -17
- package/src/toolbar/toolbar.scss +11 -0
- package/src/toolbar/types.ts +8 -0
- package/src/toolbar/widgets/ActionButtonWidget.ts +2 -2
- package/src/toolbar/widgets/BaseToolWidget.ts +17 -1
- package/src/toolbar/widgets/BaseWidget.ts +179 -112
- package/src/toolbar/widgets/DocumentPropertiesWidget.scss +7 -0
- package/src/toolbar/widgets/DocumentPropertiesWidget.ts +26 -10
- package/src/toolbar/widgets/EraserToolWidget.ts +21 -22
- package/src/toolbar/widgets/HandToolWidget.scss +14 -0
- package/src/toolbar/widgets/HandToolWidget.ts +21 -32
- package/src/toolbar/widgets/InsertImageWidget.scss +41 -0
- package/src/toolbar/widgets/InsertImageWidget.ts +90 -65
- package/src/toolbar/widgets/PenToolWidget.css +0 -51
- package/src/toolbar/widgets/PenToolWidget.ts +106 -146
- package/src/toolbar/widgets/SelectionToolWidget.scss +6 -0
- package/src/toolbar/widgets/SelectionToolWidget.ts +83 -85
- package/src/toolbar/widgets/TextToolWidget.ts +9 -5
- package/src/toolbar/widgets/components/components.scss +5 -0
- package/src/toolbar/widgets/components/makeColorInput.scss +82 -0
- package/src/toolbar/{makeColorInput.ts → widgets/components/makeColorInput.ts} +39 -14
- package/src/toolbar/widgets/components/makeFileInput.scss +77 -0
- package/src/toolbar/widgets/components/makeFileInput.ts +128 -0
- package/src/toolbar/widgets/components/makeGridSelector.scss +60 -0
- package/src/toolbar/widgets/components/makeGridSelector.ts +179 -0
- package/src/toolbar/widgets/components/makeSeparator.scss +14 -0
- package/src/toolbar/widgets/components/makeSeparator.ts +17 -0
- package/src/toolbar/widgets/components/makeThicknessSlider.scss +9 -0
- package/src/toolbar/widgets/components/makeThicknessSlider.ts +62 -0
- package/src/toolbar/widgets/keybindings.ts +1 -3
- package/src/toolbar/widgets/layout/DropdownLayoutManager.ts +262 -0
- package/src/toolbar/widgets/layout/EdgeToolbarLayoutManager.ts +71 -0
- package/src/toolbar/widgets/layout/types.ts +74 -0
- package/src/toolbar/widgets/lib.ts +2 -2
- package/src/tools/BaseTool.ts +102 -30
- package/src/tools/Eraser.test.ts +2 -2
- package/src/tools/Eraser.ts +24 -11
- package/src/tools/FindTool.css +3 -3
- package/src/tools/FindTool.test.ts +67 -0
- package/src/tools/FindTool.ts +3 -3
- package/src/tools/InputFilter/FunctionMapper.ts +17 -0
- package/src/tools/InputFilter/InputMapper.ts +41 -0
- package/src/tools/InputFilter/InputPipeline.test.ts +41 -0
- package/src/tools/InputFilter/InputPipeline.ts +34 -0
- package/src/tools/InputFilter/InputStabilizer.ts +254 -0
- package/src/tools/InputFilter/StrokeKeyboardControl.ts +104 -0
- package/src/tools/PanZoom.test.ts +3 -13
- package/src/tools/PanZoom.ts +33 -10
- package/src/tools/PasteHandler.ts +2 -3
- package/src/tools/Pen.test.ts +2 -4
- package/src/tools/Pen.ts +54 -70
- package/src/tools/PipetteTool.ts +31 -2
- package/src/tools/SelectionTool/SelectAllShortcutHandler.ts +1 -1
- package/src/tools/SelectionTool/Selection.ts +52 -16
- package/src/tools/SelectionTool/SelectionHandle.ts +46 -12
- package/src/tools/SelectionTool/SelectionTool.css +23 -11
- package/src/tools/SelectionTool/SelectionTool.test.ts +130 -21
- package/src/tools/SelectionTool/SelectionTool.ts +62 -48
- package/src/tools/SelectionTool/TransformMode.ts +1 -3
- package/src/tools/SoundUITool.ts +13 -4
- package/src/tools/TextTool.ts +29 -30
- package/src/tools/ToolController.ts +60 -36
- package/src/tools/ToolSwitcherShortcut.ts +1 -1
- package/src/tools/ToolbarShortcutHandler.ts +1 -1
- package/src/tools/UndoRedoShortcut.test.ts +10 -4
- package/src/tools/UndoRedoShortcut.ts +1 -1
- package/src/tools/keybindings.ts +17 -17
- package/src/tools/localization.ts +4 -2
- package/src/tools/tools.scss +4 -0
- package/src/types.ts +25 -113
- package/src/util/ReactiveValue.test.ts +168 -0
- package/src/util/ReactiveValue.ts +241 -0
- package/src/util/guessKeyCodeFromKey.ts +36 -0
- package/src/util/listPrefixMatch.ts +19 -0
- package/src/util/stopPropagationOfScrollingWheelEvents.ts +20 -0
- package/src/version.test.ts +12 -0
- package/src/version.ts +3 -0
- package/tsconfig.json +1 -1
- package/typedoc.json +4 -0
- package/dist/cjs/Color4.d.ts +0 -69
- package/dist/cjs/Color4.js +0 -263
- package/dist/cjs/math/Mat33.d.ts +0 -123
- package/dist/cjs/math/Mat33.js +0 -340
- package/dist/cjs/math/Vec2.d.ts +0 -33
- package/dist/cjs/math/Vec2.js +0 -37
- package/dist/cjs/math/Vec3.d.ts +0 -106
- package/dist/cjs/math/Vec3.js +0 -183
- package/dist/cjs/math/lib.d.ts +0 -7
- package/dist/cjs/math/lib.js +0 -15
- package/dist/cjs/math/polynomial/solveQuadratic.d.ts +0 -9
- package/dist/cjs/math/polynomial/solveQuadratic.js +0 -39
- package/dist/cjs/math/rounding.d.ts +0 -4
- package/dist/cjs/math/rounding.js +0 -140
- package/dist/cjs/math/shapes/Abstract2DShape.d.ts +0 -49
- package/dist/cjs/math/shapes/Abstract2DShape.js +0 -42
- package/dist/cjs/math/shapes/BezierJSWrapper.d.ts +0 -36
- package/dist/cjs/math/shapes/BezierJSWrapper.js +0 -109
- package/dist/cjs/math/shapes/CubicBezier.d.ts +0 -17
- package/dist/cjs/math/shapes/CubicBezier.js +0 -50
- package/dist/cjs/math/shapes/LineSegment2.d.ts +0 -70
- package/dist/cjs/math/shapes/LineSegment2.js +0 -204
- package/dist/cjs/math/shapes/Path.d.ts +0 -93
- package/dist/cjs/math/shapes/Path.js +0 -865
- package/dist/cjs/math/shapes/PointShape2D.d.ts +0 -18
- package/dist/cjs/math/shapes/PointShape2D.js +0 -46
- package/dist/cjs/math/shapes/QuadraticBezier.d.ts +0 -34
- package/dist/cjs/math/shapes/QuadraticBezier.js +0 -133
- package/dist/cjs/math/shapes/Rect2.d.ts +0 -57
- package/dist/cjs/math/shapes/Rect2.js +0 -311
- package/dist/cjs/math/shapes/Triangle.d.ts +0 -46
- package/dist/cjs/math/shapes/Triangle.js +0 -148
- package/dist/cjs/toolbar/HTMLToolbar.d.ts +0 -105
- package/dist/cjs/toolbar/HTMLToolbar.js +0 -465
- package/dist/cjs/toolbar/makeColorInput.d.ts +0 -6
- package/dist/mjs/Color4.d.ts +0 -69
- package/dist/mjs/Color4.mjs +0 -260
- package/dist/mjs/Color4.test.d.ts +0 -1
- package/dist/mjs/math/Mat33.d.ts +0 -123
- package/dist/mjs/math/Mat33.mjs +0 -338
- package/dist/mjs/math/Mat33.test.d.ts +0 -1
- package/dist/mjs/math/Vec2.d.ts +0 -33
- package/dist/mjs/math/Vec2.mjs +0 -34
- package/dist/mjs/math/Vec2.test.d.ts +0 -1
- package/dist/mjs/math/Vec3.d.ts +0 -106
- package/dist/mjs/math/Vec3.mjs +0 -181
- package/dist/mjs/math/Vec3.test.d.ts +0 -1
- package/dist/mjs/math/lib.d.ts +0 -7
- package/dist/mjs/math/lib.mjs +0 -7
- package/dist/mjs/math/polynomial/solveQuadratic.d.ts +0 -9
- package/dist/mjs/math/polynomial/solveQuadratic.mjs +0 -37
- package/dist/mjs/math/polynomial/solveQuadratic.test.d.ts +0 -1
- package/dist/mjs/math/rounding.d.ts +0 -4
- package/dist/mjs/math/rounding.mjs +0 -133
- package/dist/mjs/math/rounding.test.d.ts +0 -1
- package/dist/mjs/math/shapes/Abstract2DShape.d.ts +0 -49
- package/dist/mjs/math/shapes/Abstract2DShape.mjs +0 -40
- package/dist/mjs/math/shapes/BezierJSWrapper.d.ts +0 -36
- package/dist/mjs/math/shapes/BezierJSWrapper.mjs +0 -107
- package/dist/mjs/math/shapes/CubicBezier.d.ts +0 -17
- package/dist/mjs/math/shapes/CubicBezier.mjs +0 -48
- package/dist/mjs/math/shapes/LineSegment2.d.ts +0 -70
- package/dist/mjs/math/shapes/LineSegment2.mjs +0 -202
- package/dist/mjs/math/shapes/LineSegment2.test.d.ts +0 -1
- package/dist/mjs/math/shapes/Path.d.ts +0 -93
- package/dist/mjs/math/shapes/Path.fromString.test.d.ts +0 -1
- package/dist/mjs/math/shapes/Path.mjs +0 -862
- package/dist/mjs/math/shapes/Path.test.d.ts +0 -1
- package/dist/mjs/math/shapes/Path.toString.test.d.ts +0 -1
- package/dist/mjs/math/shapes/PointShape2D.d.ts +0 -18
- package/dist/mjs/math/shapes/PointShape2D.mjs +0 -44
- package/dist/mjs/math/shapes/QuadraticBezier.d.ts +0 -34
- package/dist/mjs/math/shapes/QuadraticBezier.mjs +0 -131
- package/dist/mjs/math/shapes/QuadraticBezier.test.d.ts +0 -1
- package/dist/mjs/math/shapes/Rect2.d.ts +0 -57
- package/dist/mjs/math/shapes/Rect2.mjs +0 -309
- package/dist/mjs/math/shapes/Rect2.test.d.ts +0 -1
- package/dist/mjs/math/shapes/Triangle.d.ts +0 -46
- package/dist/mjs/math/shapes/Triangle.mjs +0 -146
- package/dist/mjs/math/shapes/Triangle.test.d.ts +0 -1
- package/dist/mjs/toolbar/HTMLToolbar.d.ts +0 -105
- package/dist/mjs/toolbar/HTMLToolbar.mjs +0 -462
- package/dist/mjs/toolbar/makeColorInput.d.ts +0 -6
- package/src/Color4.test.ts +0 -47
- package/src/Color4.ts +0 -304
- package/src/Editor.css +0 -98
- package/src/math/Mat33.test.ts +0 -244
- package/src/math/Mat33.ts +0 -442
- package/src/math/Vec2.test.ts +0 -30
- package/src/math/Vec2.ts +0 -40
- package/src/math/Vec3.test.ts +0 -44
- package/src/math/Vec3.ts +0 -218
- package/src/math/lib.ts +0 -15
- package/src/math/polynomial/solveQuadratic.test.ts +0 -39
- package/src/math/polynomial/solveQuadratic.ts +0 -43
- package/src/math/rounding.test.ts +0 -65
- package/src/math/rounding.ts +0 -156
- package/src/math/shapes/Abstract2DShape.ts +0 -63
- package/src/math/shapes/BezierJSWrapper.ts +0 -93
- package/src/math/shapes/CubicBezier.ts +0 -35
- package/src/math/shapes/LineSegment2.test.ts +0 -99
- package/src/math/shapes/LineSegment2.ts +0 -231
- package/src/math/shapes/Path.fromString.test.ts +0 -223
- package/src/math/shapes/Path.test.ts +0 -309
- package/src/math/shapes/Path.toString.test.ts +0 -77
- package/src/math/shapes/Path.ts +0 -1027
- package/src/math/shapes/PointShape2D.ts +0 -33
- package/src/math/shapes/QuadraticBezier.test.ts +0 -31
- package/src/math/shapes/QuadraticBezier.ts +0 -141
- package/src/math/shapes/Rect2.test.ts +0 -209
- package/src/math/shapes/Rect2.ts +0 -344
- package/src/math/shapes/Triangle.test.ts +0 -61
- package/src/math/shapes/Triangle.ts +0 -139
- package/src/toolbar/HTMLToolbar.ts +0 -567
- package/src/toolbar/widgets/InsertImageWidget.css +0 -44
- package/src/tools/tools.css +0 -4
- /package/dist/cjs/{Color4.test.d.ts → Editor.test.d.ts} +0 -0
- /package/dist/cjs/{math/Mat33.test.d.ts → toolbar/EdgeToolbar.test.d.ts} +0 -0
- /package/dist/cjs/{math/Vec2.test.d.ts → tools/FindTool.test.d.ts} +0 -0
- /package/dist/cjs/{math/Vec3.test.d.ts → tools/InputFilter/InputPipeline.test.d.ts} +0 -0
- /package/dist/cjs/{math/polynomial/solveQuadratic.test.d.ts → util/ReactiveValue.test.d.ts} +0 -0
- /package/dist/cjs/{math/rounding.test.d.ts → version.test.d.ts} +0 -0
- /package/dist/{cjs/math/shapes/LineSegment2.test.d.ts → mjs/Editor.test.d.ts} +0 -0
- /package/dist/{cjs/math/shapes/Path.fromString.test.d.ts → mjs/toolbar/EdgeToolbar.test.d.ts} +0 -0
- /package/dist/{cjs/math/shapes/Path.test.d.ts → mjs/toolbar/widgets/layout/types.mjs} +0 -0
- /package/dist/{cjs/math/shapes/Path.toString.test.d.ts → mjs/tools/FindTool.test.d.ts} +0 -0
- /package/dist/{cjs/math/shapes/QuadraticBezier.test.d.ts → mjs/tools/InputFilter/InputPipeline.test.d.ts} +0 -0
- /package/dist/{cjs/math/shapes/Rect2.test.d.ts → mjs/util/ReactiveValue.test.d.ts} +0 -0
- /package/dist/{cjs/math/shapes/Triangle.test.d.ts → mjs/version.test.d.ts} +0 -0
@@ -1,58 +1,58 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
6
|
exports.makeOutlinedRectangleBuilder = exports.makeFilledRectangleBuilder = void 0;
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
var makeFilledRectangleBuilder = function (initialPoint, viewport) {
|
7
|
+
const math_1 = require("@js-draw/math");
|
8
|
+
const RenderablePathSpec_1 = require("../../rendering/RenderablePathSpec");
|
9
|
+
const Stroke_1 = __importDefault(require("../Stroke"));
|
10
|
+
const makeFilledRectangleBuilder = (initialPoint, viewport) => {
|
9
11
|
return new RectangleBuilder(initialPoint, true, viewport);
|
10
12
|
};
|
11
13
|
exports.makeFilledRectangleBuilder = makeFilledRectangleBuilder;
|
12
|
-
|
14
|
+
const makeOutlinedRectangleBuilder = (initialPoint, viewport) => {
|
13
15
|
return new RectangleBuilder(initialPoint, false, viewport);
|
14
16
|
};
|
15
17
|
exports.makeOutlinedRectangleBuilder = makeOutlinedRectangleBuilder;
|
16
|
-
|
17
|
-
|
18
|
+
class RectangleBuilder {
|
19
|
+
constructor(startPoint, filled, viewport) {
|
18
20
|
this.startPoint = startPoint;
|
19
21
|
this.filled = filled;
|
20
22
|
this.viewport = viewport;
|
21
23
|
// Initially, the start and end points are the same.
|
22
24
|
this.endPoint = startPoint;
|
23
25
|
}
|
24
|
-
|
25
|
-
|
26
|
+
getBBox() {
|
27
|
+
const preview = this.buildPreview();
|
26
28
|
return preview.getBBox();
|
27
|
-
}
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
var rotationMat = Mat33_1.default.zRotation(-canvasAngle);
|
29
|
+
}
|
30
|
+
buildPreview() {
|
31
|
+
const canvasAngle = this.viewport.getRotationAngle();
|
32
|
+
const rotationMat = math_1.Mat33.zRotation(-canvasAngle);
|
32
33
|
// Adjust startPoint and endPoint such that applying [rotationMat] to them
|
33
34
|
// brings them to this.startPoint and this.endPoint.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
const startPoint = rotationMat.inverse().transformVec2(this.startPoint.pos);
|
36
|
+
const endPoint = rotationMat.inverse().transformVec2(this.endPoint.pos);
|
37
|
+
const rect = math_1.Rect2.fromCorners(startPoint, endPoint);
|
38
|
+
const path = math_1.Path.fromRect(rect, this.filled ? null : this.endPoint.width).transformedBy(
|
38
39
|
// Rotate the canvas rectangle so that its rotation matches the screen
|
39
|
-
rotationMat).mapPoints(
|
40
|
-
|
41
|
-
|
40
|
+
rotationMat).mapPoints(point => this.viewport.roundPoint(point));
|
41
|
+
const preview = new Stroke_1.default([
|
42
|
+
(0, RenderablePathSpec_1.pathToRenderable)(path, {
|
42
43
|
fill: this.endPoint.color
|
43
44
|
}),
|
44
45
|
]);
|
45
46
|
return preview;
|
46
|
-
}
|
47
|
-
|
47
|
+
}
|
48
|
+
build() {
|
48
49
|
return this.buildPreview();
|
49
|
-
}
|
50
|
-
|
50
|
+
}
|
51
|
+
preview(renderer) {
|
51
52
|
this.buildPreview().render(renderer);
|
52
|
-
}
|
53
|
-
|
53
|
+
}
|
54
|
+
addPoint(point) {
|
54
55
|
this.endPoint = point;
|
55
|
-
}
|
56
|
-
|
57
|
-
}());
|
56
|
+
}
|
57
|
+
}
|
58
58
|
exports.default = RectangleBuilder;
|
@@ -11,4 +11,6 @@ import ImageComponent from './ImageComponent';
|
|
11
11
|
import RestyleableComponent from './RestylableComponent';
|
12
12
|
import { createRestyleComponentCommand, isRestylableComponent, ComponentStyle as RestyleableComponentStyle } from './RestylableComponent';
|
13
13
|
import BackgroundComponent from './BackgroundComponent';
|
14
|
-
export { Stroke, RestyleableComponent, createRestyleComponentCommand, isRestylableComponent, RestyleableComponentStyle, TextComponent,
|
14
|
+
export { Stroke, RestyleableComponent, createRestyleComponentCommand, isRestylableComponent, RestyleableComponentStyle, TextComponent,
|
15
|
+
/** @deprecated use {@link TextComponent} */
|
16
|
+
TextComponent as Text, Stroke as StrokeComponent, BackgroundComponent, ImageComponent, };
|
@@ -13,6 +13,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
13
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
18
|
+
};
|
16
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
20
|
exports.ImageComponent = exports.BackgroundComponent = exports.StrokeComponent = exports.Text = exports.TextComponent = exports.isRestylableComponent = exports.createRestyleComponentCommand = exports.Stroke = exports.AbstractComponent = exports.StrokeSmoother = exports.makeOutlinedCircleBuilder = exports.makePressureSensitiveFreehandLineBuilder = exports.makeFreehandLineBuilder = void 0;
|
18
21
|
__exportStar(require("./builders/types"), exports);
|
@@ -23,20 +26,20 @@ Object.defineProperty(exports, "makePressureSensitiveFreehandLineBuilder", { enu
|
|
23
26
|
var CircleBuilder_1 = require("./builders/CircleBuilder");
|
24
27
|
Object.defineProperty(exports, "makeOutlinedCircleBuilder", { enumerable: true, get: function () { return CircleBuilder_1.makeOutlinedCircleBuilder; } });
|
25
28
|
var StrokeSmoother_1 = require("./util/StrokeSmoother");
|
26
|
-
Object.defineProperty(exports, "StrokeSmoother", { enumerable: true, get: function () { return StrokeSmoother_1.default; } });
|
29
|
+
Object.defineProperty(exports, "StrokeSmoother", { enumerable: true, get: function () { return __importDefault(StrokeSmoother_1).default; } });
|
27
30
|
__exportStar(require("./AbstractComponent"), exports);
|
28
31
|
var AbstractComponent_1 = require("./AbstractComponent");
|
29
|
-
Object.defineProperty(exports, "AbstractComponent", { enumerable: true, get: function () { return AbstractComponent_1.default; } });
|
30
|
-
|
32
|
+
Object.defineProperty(exports, "AbstractComponent", { enumerable: true, get: function () { return __importDefault(AbstractComponent_1).default; } });
|
33
|
+
const Stroke_1 = __importDefault(require("./Stroke"));
|
31
34
|
exports.Stroke = Stroke_1.default;
|
32
35
|
exports.StrokeComponent = Stroke_1.default;
|
33
|
-
|
36
|
+
const TextComponent_1 = __importDefault(require("./TextComponent"));
|
34
37
|
exports.TextComponent = TextComponent_1.default;
|
35
38
|
exports.Text = TextComponent_1.default;
|
36
|
-
|
39
|
+
const ImageComponent_1 = __importDefault(require("./ImageComponent"));
|
37
40
|
exports.ImageComponent = ImageComponent_1.default;
|
38
|
-
|
41
|
+
const RestylableComponent_1 = require("./RestylableComponent");
|
39
42
|
Object.defineProperty(exports, "createRestyleComponentCommand", { enumerable: true, get: function () { return RestylableComponent_1.createRestyleComponentCommand; } });
|
40
43
|
Object.defineProperty(exports, "isRestylableComponent", { enumerable: true, get: function () { return RestylableComponent_1.isRestylableComponent; } });
|
41
|
-
|
44
|
+
const BackgroundComponent_1 = __importDefault(require("./BackgroundComponent"));
|
42
45
|
exports.BackgroundComponent = BackgroundComponent_1.default;
|
@@ -7,8 +7,8 @@ exports.defaultComponentLocalization = {
|
|
7
7
|
svgObject: 'SVG Object',
|
8
8
|
emptyBackground: 'Empty background',
|
9
9
|
gridBackground: 'Grid background',
|
10
|
-
filledBackgroundWithColor:
|
11
|
-
text:
|
12
|
-
imageNode:
|
13
|
-
restyledElement:
|
10
|
+
filledBackgroundWithColor: (color) => `Filled background (${color})`,
|
11
|
+
text: (text) => `Text object: ${text}`,
|
12
|
+
imageNode: (description) => `Image: ${description}`,
|
13
|
+
restyledElement: (elementDescription) => `Restyled ${elementDescription}`,
|
14
14
|
};
|
@@ -1,13 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.StrokeSmoother = void 0;
|
4
|
-
|
5
|
-
var Rect2_1 = require("../../math/shapes/Rect2");
|
6
|
-
var LineSegment2_1 = require("../../math/shapes/LineSegment2");
|
7
|
-
var QuadraticBezier_1 = require("../../math/shapes/QuadraticBezier");
|
4
|
+
const math_1 = require("@js-draw/math");
|
8
5
|
// Handles stroke smoothing
|
9
|
-
|
10
|
-
|
6
|
+
class StrokeSmoother {
|
7
|
+
constructor(startPoint,
|
11
8
|
// Maximum distance from the actual curve (irrespective of stroke width)
|
12
9
|
// for which a point is considered 'part of the curve'.
|
13
10
|
// Note that the maximum will be smaller if the stroke width is less than
|
@@ -22,39 +19,39 @@ var StrokeSmoother = /** @class */ (function () {
|
|
22
19
|
this.currentCurve = null;
|
23
20
|
this.lastPoint = this.startPoint;
|
24
21
|
this.buffer = [this.startPoint.pos];
|
25
|
-
this.momentum =
|
22
|
+
this.momentum = math_1.Vec2.zero;
|
26
23
|
this.currentCurve = null;
|
27
24
|
this.curveStartWidth = startPoint.width;
|
28
|
-
this.bbox = new
|
25
|
+
this.bbox = new math_1.Rect2(this.startPoint.pos.x, this.startPoint.pos.y, 0, 0);
|
29
26
|
}
|
30
|
-
|
27
|
+
getBBox() {
|
31
28
|
return this.bbox;
|
32
|
-
}
|
33
|
-
|
29
|
+
}
|
30
|
+
preview() {
|
34
31
|
if (!this.currentCurve) {
|
35
32
|
return null;
|
36
33
|
}
|
37
34
|
return this.currentSegmentToPath();
|
38
|
-
}
|
35
|
+
}
|
39
36
|
// Returns the distance between the start, control, and end points of the curve.
|
40
|
-
|
37
|
+
approxCurrentCurveLength() {
|
41
38
|
if (!this.currentCurve) {
|
42
39
|
return 0;
|
43
40
|
}
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
41
|
+
const startPt = this.currentCurve.p0;
|
42
|
+
const controlPt = this.currentCurve.p1;
|
43
|
+
const endPt = this.currentCurve.p2;
|
44
|
+
const toControlDist = startPt.minus(controlPt).length();
|
45
|
+
const toEndDist = endPt.minus(controlPt).length();
|
49
46
|
return toControlDist + toEndDist;
|
50
|
-
}
|
51
|
-
|
47
|
+
}
|
48
|
+
finalizeCurrentCurve() {
|
52
49
|
// Case where no points have been added
|
53
50
|
if (!this.currentCurve) {
|
54
51
|
return;
|
55
52
|
}
|
56
53
|
this.onCurveAdded(this.currentSegmentToPath());
|
57
|
-
|
54
|
+
const lastPoint = this.buffer[this.buffer.length - 1];
|
58
55
|
this.lastExitingVec = this.currentCurve.p2.minus(this.currentCurve.p1);
|
59
56
|
console.assert(this.lastExitingVec.magnitude() !== 0, 'lastExitingVec has zero length!');
|
60
57
|
// Use the last two points to start a new curve (the last point isn't used
|
@@ -64,38 +61,36 @@ var StrokeSmoother = /** @class */ (function () {
|
|
64
61
|
];
|
65
62
|
this.currentCurve = null;
|
66
63
|
this.isFirstSegment = false;
|
67
|
-
}
|
64
|
+
}
|
68
65
|
// Returns [upper curve, connector, lower curve]
|
69
|
-
|
66
|
+
currentSegmentToPath() {
|
70
67
|
if (this.currentCurve == null) {
|
71
68
|
throw new Error('Invalid State: currentCurve is null!');
|
72
69
|
}
|
73
|
-
|
70
|
+
const startVec = this.currentCurve.normal(0).normalized();
|
74
71
|
if (!isFinite(startVec.magnitude())) {
|
75
|
-
throw new Error(
|
72
|
+
throw new Error(`startVec(${startVec}) is NaN or ∞`);
|
76
73
|
}
|
77
|
-
|
78
|
-
|
79
|
-
|
74
|
+
const startPt = this.currentCurve.at(0);
|
75
|
+
const endPt = this.currentCurve.at(1);
|
76
|
+
const controlPoint = this.currentCurve.p1;
|
80
77
|
return {
|
81
78
|
startPoint: startPt,
|
82
|
-
controlPoint
|
79
|
+
controlPoint,
|
83
80
|
endPoint: endPt,
|
84
81
|
startWidth: this.curveStartWidth,
|
85
82
|
endWidth: this.curveEndWidth,
|
86
83
|
};
|
87
|
-
}
|
84
|
+
}
|
88
85
|
// Compute the direction of the velocity at the end of this.buffer
|
89
|
-
|
86
|
+
computeExitingVec() {
|
90
87
|
return this.momentum.normalized().times(this.lastPoint.width / 2);
|
91
|
-
}
|
92
|
-
|
93
|
-
var _this = this;
|
94
|
-
var _a, _b;
|
88
|
+
}
|
89
|
+
addPoint(newPoint) {
|
95
90
|
if (this.lastPoint) {
|
96
91
|
// Ignore points that are identical
|
97
|
-
|
98
|
-
|
92
|
+
const fuzzEq = 1e-10;
|
93
|
+
const deltaTime = newPoint.time - this.lastPoint.time;
|
99
94
|
if (newPoint.pos.eq(this.lastPoint.pos, fuzzEq) || deltaTime === 0) {
|
100
95
|
return;
|
101
96
|
}
|
@@ -103,8 +98,8 @@ var StrokeSmoother = /** @class */ (function () {
|
|
103
98
|
console.warn('Discarding NaN point.', newPoint);
|
104
99
|
return;
|
105
100
|
}
|
106
|
-
|
107
|
-
|
101
|
+
const threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
|
102
|
+
const shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
|
108
103
|
&& this.isFirstSegment;
|
109
104
|
// Snap to the starting point if the stroke is contained within a small ball centered
|
110
105
|
// at the starting point.
|
@@ -112,24 +107,26 @@ var StrokeSmoother = /** @class */ (function () {
|
|
112
107
|
if (shouldSnapToInitial) {
|
113
108
|
return;
|
114
109
|
}
|
115
|
-
|
116
|
-
|
110
|
+
const deltaTimeSeconds = deltaTime / 1000;
|
111
|
+
const velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / deltaTimeSeconds);
|
112
|
+
// TODO: Do we need momentum smoothing? (this.momentum.lerp(velocity, 0.9);)
|
113
|
+
this.momentum = velocity;
|
117
114
|
}
|
118
|
-
|
115
|
+
const lastPoint = this.lastPoint ?? newPoint;
|
119
116
|
this.lastPoint = newPoint;
|
120
117
|
this.buffer.push(newPoint.pos);
|
121
|
-
|
122
|
-
|
118
|
+
const pointRadius = newPoint.width;
|
119
|
+
const prevEndWidth = this.curveEndWidth;
|
123
120
|
this.curveEndWidth = pointRadius;
|
124
121
|
// recompute bbox
|
125
122
|
this.bbox = this.bbox.grownToPoint(newPoint.pos, pointRadius);
|
126
123
|
// If the last curve just ended or it's the first curve,
|
127
124
|
if (this.currentCurve === null) {
|
128
|
-
|
129
|
-
|
130
|
-
|
125
|
+
const p1 = lastPoint.pos;
|
126
|
+
const p2 = lastPoint.pos.plus(this.lastExitingVec ?? math_1.Vec2.unitX);
|
127
|
+
const p3 = newPoint.pos;
|
131
128
|
// Quadratic Bézier curve
|
132
|
-
this.currentCurve = new
|
129
|
+
this.currentCurve = new math_1.QuadraticBezier(p1, p2, p3);
|
133
130
|
console.assert(!isNaN(p1.magnitude()) && !isNaN(p2.magnitude()) && !isNaN(p3.magnitude()), 'Expected !NaN');
|
134
131
|
if (this.isFirstSegment) {
|
135
132
|
// The start of a curve often lacks accurate pressure information. Update it.
|
@@ -140,21 +137,21 @@ var StrokeSmoother = /** @class */ (function () {
|
|
140
137
|
}
|
141
138
|
}
|
142
139
|
// If there isn't an entering vector (e.g. because this.isFirstCurve), approximate it.
|
143
|
-
|
140
|
+
let enteringVec = this.lastExitingVec;
|
144
141
|
if (!enteringVec) {
|
145
|
-
|
142
|
+
let sampleIdx = Math.ceil(this.buffer.length / 2);
|
146
143
|
if (sampleIdx === 0 || sampleIdx >= this.buffer.length) {
|
147
144
|
sampleIdx = this.buffer.length - 1;
|
148
145
|
}
|
149
146
|
enteringVec = this.buffer[sampleIdx].minus(this.buffer[0]);
|
150
147
|
}
|
151
|
-
|
148
|
+
let exitingVec = this.computeExitingVec();
|
152
149
|
// Find the intersection between the entering vector and the exiting vector
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
150
|
+
const maxRelativeLength = 2.4;
|
151
|
+
const segmentStart = this.buffer[0];
|
152
|
+
const segmentEnd = newPoint.pos;
|
153
|
+
const startEndDist = segmentEnd.minus(segmentStart).magnitude();
|
154
|
+
const maxControlPointDist = maxRelativeLength * startEndDist;
|
158
155
|
// Exit in cases where we would divide by zero
|
159
156
|
if (maxControlPointDist === 0 || exitingVec.magnitude() === 0 || !isFinite(exitingVec.magnitude())) {
|
160
157
|
return;
|
@@ -163,11 +160,11 @@ var StrokeSmoother = /** @class */ (function () {
|
|
163
160
|
enteringVec = enteringVec.normalized();
|
164
161
|
exitingVec = exitingVec.normalized();
|
165
162
|
console.assert(isFinite(enteringVec.magnitude()), 'Normalized enteringVec has NaN or ∞ magnitude!');
|
166
|
-
|
167
|
-
|
168
|
-
|
163
|
+
const lineFromStart = new math_1.LineSegment2(segmentStart, segmentStart.plus(enteringVec.times(maxControlPointDist)));
|
164
|
+
const lineFromEnd = new math_1.LineSegment2(segmentEnd.minus(exitingVec.times(maxControlPointDist)), segmentEnd);
|
165
|
+
const intersection = lineFromEnd.intersection(lineFromStart);
|
169
166
|
// Position the control point at this intersection
|
170
|
-
|
167
|
+
let controlPoint = null;
|
171
168
|
if (intersection) {
|
172
169
|
controlPoint = intersection.point;
|
173
170
|
}
|
@@ -179,23 +176,22 @@ var StrokeSmoother = /** @class */ (function () {
|
|
179
176
|
}
|
180
177
|
console.assert(!segmentStart.eq(controlPoint, 1e-11), 'Start and control points are equal!');
|
181
178
|
console.assert(!controlPoint.eq(segmentEnd, 1e-11), 'Control and end points are equal!');
|
182
|
-
|
183
|
-
this.currentCurve = new
|
179
|
+
const prevCurve = this.currentCurve;
|
180
|
+
this.currentCurve = new math_1.QuadraticBezier(segmentStart, controlPoint, segmentEnd);
|
184
181
|
if (isNaN(this.currentCurve.normal(0).magnitude())) {
|
185
182
|
console.error('NaN normal at 0. Curve:', this.currentCurve);
|
186
183
|
this.currentCurve = prevCurve;
|
187
184
|
}
|
188
185
|
// Should we start making a new curve? Check whether all buffer points are within
|
189
186
|
// ±strokeWidth of the curve.
|
190
|
-
|
191
|
-
|
187
|
+
const curveMatchesPoints = (curve) => {
|
188
|
+
const minFit = Math.min(Math.max(Math.min(this.curveStartWidth, this.curveEndWidth) / 4, this.minFitAllowed), this.maxFitAllowed);
|
192
189
|
// The sum of distances greater than minFit must not exceed this:
|
193
|
-
|
190
|
+
const maxNonMatchingDistSum = minFit;
|
194
191
|
// Sum of distances greater than minFit.
|
195
|
-
|
196
|
-
for (
|
197
|
-
|
198
|
-
var dist = curve.approximateDistance(point);
|
192
|
+
let nonMatchingDistSum = 0;
|
193
|
+
for (const point of this.buffer) {
|
194
|
+
let dist = curve.approximateDistance(point);
|
199
195
|
if (dist > minFit) {
|
200
196
|
// Use the more accurate distance function
|
201
197
|
dist = curve.distance(point);
|
@@ -218,8 +214,7 @@ var StrokeSmoother = /** @class */ (function () {
|
|
218
214
|
return;
|
219
215
|
}
|
220
216
|
}
|
221
|
-
}
|
222
|
-
|
223
|
-
}());
|
217
|
+
}
|
218
|
+
}
|
224
219
|
exports.StrokeSmoother = StrokeSmoother;
|
225
220
|
exports.default = StrokeSmoother;
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import AbstractComponent from '../AbstractComponent';
|
2
2
|
import { ImageComponentLocalization } from '../localization';
|
3
|
-
declare const _default: (localizationTable: ImageComponentLocalization, elems: AbstractComponent[]) => string;
|
3
|
+
declare const _default: (localizationTable: ImageComponentLocalization, elems: AbstractComponent[]) => string | null;
|
4
4
|
export default _default;
|
@@ -2,16 +2,15 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
// Returns the description of all given elements, if identical, otherwise,
|
4
4
|
// returns null.
|
5
|
-
exports.default = (
|
5
|
+
exports.default = (localizationTable, elems) => {
|
6
6
|
if (elems.length === 0) {
|
7
7
|
return null;
|
8
8
|
}
|
9
|
-
|
10
|
-
for (
|
11
|
-
var elem = elems_1[_i];
|
9
|
+
const description = elems[0].description(localizationTable);
|
10
|
+
for (const elem of elems) {
|
12
11
|
if (elem.description(localizationTable) !== description) {
|
13
12
|
return null;
|
14
13
|
}
|
15
14
|
}
|
16
15
|
return description;
|
17
|
-
}
|
16
|
+
};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import type Editor from '../Editor';
|
2
|
+
export interface AboutDialogLink {
|
3
|
+
kind: 'link';
|
4
|
+
text: string;
|
5
|
+
href: string;
|
6
|
+
}
|
7
|
+
export interface AboutDialogEntry {
|
8
|
+
heading: string | AboutDialogLink;
|
9
|
+
text?: string;
|
10
|
+
minimized?: boolean;
|
11
|
+
}
|
12
|
+
declare const makeAboutDialog: (editor: Editor, entries: AboutDialogEntry[]) => {
|
13
|
+
close: () => void;
|
14
|
+
};
|
15
|
+
export default makeAboutDialog;
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const makeAboutDialog = (editor, entries) => {
|
4
|
+
const overlay = document.createElement('div');
|
5
|
+
const { remove: removeOverlay } = editor.createHTMLOverlay(overlay);
|
6
|
+
overlay.classList.add('dialog-container', 'about-dialog-container');
|
7
|
+
const dialog = document.createElement('dialog');
|
8
|
+
const heading = document.createElement('h1');
|
9
|
+
heading.innerText = editor.localization.about;
|
10
|
+
heading.setAttribute('autofocus', 'true');
|
11
|
+
const closeButton = document.createElement('button');
|
12
|
+
closeButton.innerText = editor.localization.closeDialog;
|
13
|
+
closeButton.classList.add('close-button');
|
14
|
+
closeButton.onclick = () => removeOverlay();
|
15
|
+
overlay.onclick = event => {
|
16
|
+
if (event.target === overlay) {
|
17
|
+
removeOverlay();
|
18
|
+
}
|
19
|
+
};
|
20
|
+
const licenseContainer = document.createElement('div');
|
21
|
+
licenseContainer.classList.add('about-entry-container');
|
22
|
+
// Allow scrolling in the license container -- don't forward wheel events.
|
23
|
+
licenseContainer.onwheel = evt => evt.stopPropagation();
|
24
|
+
for (const entry of entries) {
|
25
|
+
const container = document.createElement(entry.minimized ? 'details' : 'div');
|
26
|
+
container.classList.add('about-entry');
|
27
|
+
const header = document.createElement(entry.minimized ? 'summary' : 'h2');
|
28
|
+
if (typeof (entry.heading) === 'string') {
|
29
|
+
header.innerText = entry.heading;
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
const link = document.createElement('a');
|
33
|
+
link.href = entry.heading.href.replace(/^javascript:/i, '');
|
34
|
+
link.text = entry.heading.text;
|
35
|
+
header.appendChild(link);
|
36
|
+
}
|
37
|
+
container.appendChild(header);
|
38
|
+
if (entry.text) {
|
39
|
+
const bodyText = document.createElement('div');
|
40
|
+
bodyText.innerText = entry.text;
|
41
|
+
container.appendChild(bodyText);
|
42
|
+
}
|
43
|
+
licenseContainer.appendChild(container);
|
44
|
+
}
|
45
|
+
dialog.replaceChildren(heading, licenseContainer, closeButton);
|
46
|
+
overlay.replaceChildren(dialog);
|
47
|
+
dialog.show();
|
48
|
+
return {
|
49
|
+
close: () => {
|
50
|
+
removeOverlay();
|
51
|
+
},
|
52
|
+
};
|
53
|
+
};
|
54
|
+
exports.default = makeAboutDialog;
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import Pointer from './Pointer';
|
2
|
+
import { Point2, Vec3 } from '@js-draw/math';
|
3
|
+
export type HTMLPointerEventName = 'pointerdown' | 'pointermove' | 'pointerup' | 'pointercancel';
|
4
|
+
export type HTMLPointerEventFilter = (eventName: HTMLPointerEventName, event: PointerEvent) => boolean;
|
5
|
+
export interface PointerEvtListener {
|
6
|
+
onPointerDown(event: PointerEvt): boolean;
|
7
|
+
onPointerMove(event: PointerEvt): void;
|
8
|
+
onPointerUp(event: PointerEvt): void;
|
9
|
+
onGestureCancel(): void;
|
10
|
+
}
|
11
|
+
export declare enum InputEvtType {
|
12
|
+
PointerDownEvt = 0,
|
13
|
+
PointerMoveEvt = 1,
|
14
|
+
PointerUpEvt = 2,
|
15
|
+
GestureCancelEvt = 3,
|
16
|
+
WheelEvt = 4,
|
17
|
+
KeyPressEvent = 5,
|
18
|
+
KeyUpEvent = 6,
|
19
|
+
CopyEvent = 7,
|
20
|
+
PasteEvent = 8
|
21
|
+
}
|
22
|
+
export interface WheelEvt {
|
23
|
+
readonly kind: InputEvtType.WheelEvt;
|
24
|
+
readonly delta: Vec3;
|
25
|
+
readonly screenPos: Point2;
|
26
|
+
}
|
27
|
+
interface BaseKeyEvent {
|
28
|
+
readonly key: string;
|
29
|
+
readonly code: string;
|
30
|
+
readonly ctrlKey: boolean | undefined;
|
31
|
+
readonly altKey: boolean | undefined;
|
32
|
+
readonly shiftKey: boolean | undefined;
|
33
|
+
}
|
34
|
+
/**
|
35
|
+
* Represents a keydown or auto-repeated keydown event.
|
36
|
+
*
|
37
|
+
* Use {@link keyPressEventFromHTMLEvent} where possible rather than
|
38
|
+
* constructing directly (required properties may change between minor
|
39
|
+
* releases).
|
40
|
+
*/
|
41
|
+
export interface KeyPressEvent extends BaseKeyEvent {
|
42
|
+
readonly kind: InputEvtType.KeyPressEvent;
|
43
|
+
}
|
44
|
+
/**
|
45
|
+
* Represents a key release or auto-repeated key releae event.
|
46
|
+
*
|
47
|
+
* Use {@link keyUpEventFromHTMLEvent} where possible rather than
|
48
|
+
* constructing directly (required properties may change between minor
|
49
|
+
* releases).
|
50
|
+
*/
|
51
|
+
export interface KeyUpEvent extends BaseKeyEvent {
|
52
|
+
readonly kind: InputEvtType.KeyUpEvent;
|
53
|
+
}
|
54
|
+
export interface CopyEvent {
|
55
|
+
readonly kind: InputEvtType.CopyEvent;
|
56
|
+
setData(mime: string, data: string): void;
|
57
|
+
}
|
58
|
+
export interface PasteEvent {
|
59
|
+
readonly kind: InputEvtType.PasteEvent;
|
60
|
+
readonly data: string;
|
61
|
+
readonly mime: string;
|
62
|
+
}
|
63
|
+
export interface GestureCancelEvt {
|
64
|
+
readonly kind: InputEvtType.GestureCancelEvt;
|
65
|
+
}
|
66
|
+
interface PointerEvtBase {
|
67
|
+
readonly current: Pointer;
|
68
|
+
readonly allPointers: Pointer[];
|
69
|
+
}
|
70
|
+
export interface PointerDownEvt extends PointerEvtBase {
|
71
|
+
readonly kind: InputEvtType.PointerDownEvt;
|
72
|
+
}
|
73
|
+
export interface PointerMoveEvt extends PointerEvtBase {
|
74
|
+
readonly kind: InputEvtType.PointerMoveEvt;
|
75
|
+
}
|
76
|
+
export interface PointerUpEvt extends PointerEvtBase {
|
77
|
+
readonly kind: InputEvtType.PointerUpEvt;
|
78
|
+
}
|
79
|
+
export type PointerEvt = PointerDownEvt | PointerMoveEvt | PointerUpEvt;
|
80
|
+
export type InputEvt = KeyPressEvent | KeyUpEvent | WheelEvt | GestureCancelEvt | PointerEvt | CopyEvent | PasteEvent;
|
81
|
+
export declare const keyUpEventFromHTMLEvent: (event: KeyboardEvent) => KeyUpEvent;
|
82
|
+
export declare const keyPressEventFromHTMLEvent: (event: KeyboardEvent) => KeyPressEvent;
|
83
|
+
export declare const isPointerEvt: (event: InputEvt) => event is PointerEvt;
|
84
|
+
export {};
|