js-draw 0.25.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -20
- 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/package.json +11 -22
- package/src/Coloris.css +8 -8
- package/src/Editor.scss +148 -0
- package/src/dialogs/dialogs.scss +36 -0
- package/src/dialogs/makeAboutDialog.scss +41 -0
- package/src/styles.js +1 -1
- package/src/toolbar/{toolbar.css → AbstractToolbar.scss} +47 -85
- package/src/toolbar/DropdownToolbar.scss +46 -0
- package/src/toolbar/EdgeToolbar.scss +511 -0
- package/src/toolbar/toolbar.scss +11 -0
- package/src/toolbar/widgets/DocumentPropertiesWidget.scss +7 -0
- package/src/toolbar/widgets/HandToolWidget.scss +14 -0
- package/src/toolbar/widgets/InsertImageWidget.scss +41 -0
- package/src/toolbar/widgets/PenToolWidget.css +0 -51
- package/src/toolbar/widgets/SelectionToolWidget.scss +6 -0
- package/src/toolbar/widgets/components/components.scss +5 -0
- package/src/toolbar/widgets/components/makeColorInput.scss +82 -0
- package/src/toolbar/widgets/components/makeFileInput.scss +77 -0
- package/src/toolbar/widgets/components/makeGridSelector.scss +60 -0
- package/src/toolbar/widgets/components/makeSeparator.scss +14 -0
- package/src/toolbar/widgets/components/makeThicknessSlider.scss +9 -0
- package/src/tools/FindTool.css +3 -3
- package/src/tools/SelectionTool/SelectionTool.css +23 -11
- package/src/tools/tools.scss +4 -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/Editor.loadFrom.test.d.ts +0 -1
- package/dist/cjs/Editor.toSVG.test.d.ts +0 -1
- package/dist/cjs/EditorImage.test.d.ts +0 -1
- package/dist/cjs/EventDispatcher.test.d.ts +0 -1
- package/dist/cjs/SVGLoader.test.d.ts +0 -1
- package/dist/cjs/UndoRedoHistory.test.d.ts +0 -1
- package/dist/cjs/commands/uniteCommands.test.d.ts +0 -1
- package/dist/cjs/components/AbstractComponent.transformBy.test.d.ts +0 -1
- package/dist/cjs/components/BackgroundComponent.test.d.ts +0 -1
- package/dist/cjs/components/Stroke.test.d.ts +0 -1
- package/dist/cjs/components/TextComponent.test.d.ts +0 -1
- package/dist/cjs/components/UnknownSVGObject.test.d.ts +0 -1
- package/dist/cjs/components/builders/FreehandLineBuilder.test.d.ts +0 -1
- package/dist/cjs/localizations/getLocalizationTable.test.d.ts +0 -1
- package/dist/cjs/math/Mat33.d.ts +0 -123
- package/dist/cjs/math/Mat33.js +0 -340
- package/dist/cjs/math/Mat33.test.d.ts +0 -1
- package/dist/cjs/math/Vec2.d.ts +0 -33
- package/dist/cjs/math/Vec2.js +0 -37
- package/dist/cjs/math/Vec2.test.d.ts +0 -1
- package/dist/cjs/math/Vec3.d.ts +0 -106
- package/dist/cjs/math/Vec3.js +0 -183
- package/dist/cjs/math/Vec3.test.d.ts +0 -1
- 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/polynomial/solveQuadratic.test.d.ts +0 -1
- package/dist/cjs/math/rounding.d.ts +0 -4
- package/dist/cjs/math/rounding.js +0 -140
- package/dist/cjs/math/rounding.test.d.ts +0 -1
- 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/LineSegment2.test.d.ts +0 -1
- package/dist/cjs/math/shapes/Path.d.ts +0 -93
- package/dist/cjs/math/shapes/Path.fromString.test.d.ts +0 -1
- package/dist/cjs/math/shapes/Path.js +0 -865
- package/dist/cjs/math/shapes/Path.test.d.ts +0 -1
- package/dist/cjs/math/shapes/Path.toString.test.d.ts +0 -1
- 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/QuadraticBezier.test.d.ts +0 -1
- package/dist/cjs/math/shapes/Rect2.d.ts +0 -57
- package/dist/cjs/math/shapes/Rect2.js +0 -311
- package/dist/cjs/math/shapes/Rect2.test.d.ts +0 -1
- package/dist/cjs/math/shapes/Triangle.d.ts +0 -46
- package/dist/cjs/math/shapes/Triangle.js +0 -148
- package/dist/cjs/math/shapes/Triangle.test.d.ts +0 -1
- package/dist/cjs/rendering/RenderingStyle.test.d.ts +0 -1
- package/dist/cjs/rendering/caching/CacheRecord.test.d.ts +0 -1
- package/dist/cjs/rendering/caching/RenderingCache.test.d.ts +0 -1
- package/dist/cjs/rendering/renderers/DummyRenderer.test.d.ts +0 -1
- package/dist/cjs/rendering/renderers/TextOnlyRenderer.test.d.ts +0 -1
- package/dist/cjs/shortcuts/KeyBinding.test.d.ts +0 -1
- package/dist/cjs/shortcuts/KeyboardShortcutManager.test.d.ts +0 -1
- 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/cjs/tools/Eraser.test.d.ts +0 -1
- package/dist/cjs/tools/PanZoom.test.d.ts +0 -1
- package/dist/cjs/tools/Pen.test.d.ts +0 -1
- package/dist/cjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
- package/dist/cjs/tools/UndoRedoShortcut.test.d.ts +0 -1
- 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/Editor.loadFrom.test.d.ts +0 -1
- package/dist/mjs/Editor.toSVG.test.d.ts +0 -1
- package/dist/mjs/EditorImage.test.d.ts +0 -1
- package/dist/mjs/EventDispatcher.test.d.ts +0 -1
- package/dist/mjs/SVGLoader.test.d.ts +0 -1
- package/dist/mjs/UndoRedoHistory.test.d.ts +0 -1
- package/dist/mjs/commands/uniteCommands.test.d.ts +0 -1
- package/dist/mjs/components/AbstractComponent.transformBy.test.d.ts +0 -1
- package/dist/mjs/components/BackgroundComponent.test.d.ts +0 -1
- package/dist/mjs/components/Stroke.test.d.ts +0 -1
- package/dist/mjs/components/TextComponent.test.d.ts +0 -1
- package/dist/mjs/components/UnknownSVGObject.test.d.ts +0 -1
- package/dist/mjs/components/builders/FreehandLineBuilder.test.d.ts +0 -1
- package/dist/mjs/localizations/getLocalizationTable.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/rendering/RenderingStyle.test.d.ts +0 -1
- package/dist/mjs/rendering/caching/CacheRecord.test.d.ts +0 -1
- package/dist/mjs/rendering/caching/RenderingCache.test.d.ts +0 -1
- package/dist/mjs/rendering/renderers/DummyRenderer.test.d.ts +0 -1
- package/dist/mjs/rendering/renderers/TextOnlyRenderer.test.d.ts +0 -1
- package/dist/mjs/shortcuts/KeyBinding.test.d.ts +0 -1
- package/dist/mjs/shortcuts/KeyboardShortcutManager.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/dist/mjs/tools/Eraser.test.d.ts +0 -1
- package/dist/mjs/tools/PanZoom.test.d.ts +0 -1
- package/dist/mjs/tools/Pen.test.d.ts +0 -1
- package/dist/mjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
- package/dist/mjs/tools/UndoRedoShortcut.test.d.ts +0 -1
- package/dist-test/test_imports/package-lock.json +0 -13
- package/dist-test/test_imports/package.json +0 -12
- package/dist-test/test_imports/test-imports.js +0 -17
- package/dist-test/test_imports/test-require.cjs +0 -19
- package/src/Color4.test.ts +0 -47
- package/src/Color4.ts +0 -304
- package/src/Editor.css +0 -98
- package/src/Editor.loadFrom.test.ts +0 -24
- package/src/Editor.toSVG.test.ts +0 -111
- package/src/Editor.ts +0 -1171
- package/src/EditorImage.test.ts +0 -120
- package/src/EditorImage.ts +0 -603
- package/src/EventDispatcher.test.ts +0 -123
- package/src/EventDispatcher.ts +0 -72
- package/src/Pointer.ts +0 -170
- package/src/SVGLoader.test.ts +0 -114
- package/src/SVGLoader.ts +0 -610
- package/src/UndoRedoHistory.test.ts +0 -33
- package/src/UndoRedoHistory.ts +0 -102
- package/src/Viewport.ts +0 -325
- package/src/bundle/bundled.ts +0 -7
- package/src/commands/Command.ts +0 -45
- package/src/commands/Duplicate.ts +0 -75
- package/src/commands/Erase.ts +0 -94
- package/src/commands/SerializableCommand.ts +0 -49
- package/src/commands/UnresolvedCommand.ts +0 -37
- package/src/commands/invertCommand.ts +0 -58
- package/src/commands/lib.ts +0 -16
- package/src/commands/localization.ts +0 -47
- package/src/commands/uniteCommands.test.ts +0 -23
- package/src/commands/uniteCommands.ts +0 -140
- package/src/components/AbstractComponent.transformBy.test.ts +0 -22
- package/src/components/AbstractComponent.ts +0 -374
- package/src/components/BackgroundComponent.test.ts +0 -45
- package/src/components/BackgroundComponent.ts +0 -353
- package/src/components/ImageComponent.ts +0 -178
- package/src/components/RestylableComponent.ts +0 -161
- package/src/components/SVGGlobalAttributesObject.ts +0 -81
- package/src/components/Stroke.test.ts +0 -139
- package/src/components/Stroke.ts +0 -296
- package/src/components/TextComponent.test.ts +0 -204
- package/src/components/TextComponent.ts +0 -432
- package/src/components/UnknownSVGObject.test.ts +0 -10
- package/src/components/UnknownSVGObject.ts +0 -60
- package/src/components/builders/ArrowBuilder.ts +0 -107
- package/src/components/builders/CircleBuilder.ts +0 -102
- package/src/components/builders/FreehandLineBuilder.test.ts +0 -25
- package/src/components/builders/FreehandLineBuilder.ts +0 -212
- package/src/components/builders/LineBuilder.ts +0 -77
- package/src/components/builders/PressureSensitiveFreehandLineBuilder.ts +0 -454
- package/src/components/builders/RectangleBuilder.ts +0 -74
- package/src/components/builders/types.ts +0 -15
- package/src/components/lib.ts +0 -31
- package/src/components/localization.ts +0 -24
- package/src/components/util/StrokeSmoother.ts +0 -302
- package/src/components/util/describeComponentList.ts +0 -18
- package/src/lib.ts +0 -69
- package/src/localization.ts +0 -34
- package/src/localizations/de.ts +0 -146
- package/src/localizations/en.ts +0 -8
- package/src/localizations/es.ts +0 -74
- package/src/localizations/getLocalizationTable.test.ts +0 -27
- package/src/localizations/getLocalizationTable.ts +0 -74
- 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/rendering/Display.ts +0 -248
- package/src/rendering/RenderingStyle.test.ts +0 -68
- package/src/rendering/RenderingStyle.ts +0 -55
- package/src/rendering/TextRenderingStyle.ts +0 -55
- package/src/rendering/caching/CacheRecord.test.ts +0 -49
- package/src/rendering/caching/CacheRecord.ts +0 -77
- package/src/rendering/caching/CacheRecordManager.ts +0 -71
- package/src/rendering/caching/RenderingCache.test.ts +0 -44
- package/src/rendering/caching/RenderingCache.ts +0 -66
- package/src/rendering/caching/RenderingCacheNode.ts +0 -405
- package/src/rendering/caching/testUtils.ts +0 -35
- package/src/rendering/caching/types.ts +0 -34
- package/src/rendering/lib.ts +0 -8
- package/src/rendering/localization.ts +0 -20
- package/src/rendering/renderers/AbstractRenderer.ts +0 -242
- package/src/rendering/renderers/CanvasRenderer.ts +0 -307
- package/src/rendering/renderers/DummyRenderer.test.ts +0 -42
- package/src/rendering/renderers/DummyRenderer.ts +0 -145
- package/src/rendering/renderers/SVGRenderer.ts +0 -377
- package/src/rendering/renderers/TextOnlyRenderer.test.ts +0 -34
- package/src/rendering/renderers/TextOnlyRenderer.ts +0 -71
- package/src/shortcuts/KeyBinding.test.ts +0 -51
- package/src/shortcuts/KeyBinding.ts +0 -218
- package/src/shortcuts/KeyboardShortcutManager.test.ts +0 -95
- package/src/shortcuts/KeyboardShortcutManager.ts +0 -163
- package/src/shortcuts/lib.ts +0 -3
- package/src/testing/createEditor.ts +0 -11
- package/src/testing/getUniquePointerId.ts +0 -18
- package/src/testing/lib.ts +0 -3
- package/src/testing/sendPenEvent.ts +0 -36
- package/src/testing/sendTouchEvent.ts +0 -71
- package/src/toolbar/HTMLToolbar.ts +0 -567
- package/src/toolbar/IconProvider.ts +0 -805
- package/src/toolbar/lib.ts +0 -4
- package/src/toolbar/localization.ts +0 -114
- package/src/toolbar/makeColorInput.ts +0 -159
- package/src/toolbar/types.ts +0 -5
- package/src/toolbar/widgets/ActionButtonWidget.ts +0 -39
- package/src/toolbar/widgets/BaseToolWidget.ts +0 -65
- package/src/toolbar/widgets/BaseWidget.ts +0 -428
- package/src/toolbar/widgets/DocumentPropertiesWidget.ts +0 -234
- package/src/toolbar/widgets/EraserToolWidget.ts +0 -85
- package/src/toolbar/widgets/HandToolWidget.ts +0 -250
- package/src/toolbar/widgets/InsertImageWidget.css +0 -44
- package/src/toolbar/widgets/InsertImageWidget.ts +0 -223
- package/src/toolbar/widgets/OverflowWidget.ts +0 -92
- package/src/toolbar/widgets/PenToolWidget.ts +0 -409
- package/src/toolbar/widgets/SelectionToolWidget.ts +0 -197
- package/src/toolbar/widgets/TextToolWidget.ts +0 -145
- package/src/toolbar/widgets/keybindings.ts +0 -21
- package/src/toolbar/widgets/lib.ts +0 -13
- package/src/tools/BaseTool.ts +0 -97
- package/src/tools/Eraser.test.ts +0 -103
- package/src/tools/Eraser.ts +0 -160
- package/src/tools/FindTool.ts +0 -153
- package/src/tools/PanZoom.test.ts +0 -349
- package/src/tools/PanZoom.ts +0 -502
- package/src/tools/PasteHandler.ts +0 -95
- package/src/tools/Pen.test.ts +0 -262
- package/src/tools/Pen.ts +0 -300
- package/src/tools/PipetteTool.ts +0 -55
- package/src/tools/SelectionTool/SelectAllShortcutHandler.ts +0 -29
- package/src/tools/SelectionTool/Selection.ts +0 -611
- package/src/tools/SelectionTool/SelectionHandle.ts +0 -108
- package/src/tools/SelectionTool/SelectionTool.test.ts +0 -261
- package/src/tools/SelectionTool/SelectionTool.ts +0 -496
- package/src/tools/SelectionTool/TransformMode.ts +0 -114
- package/src/tools/SelectionTool/types.ts +0 -11
- package/src/tools/SoundUITool.ts +0 -212
- package/src/tools/TextTool.ts +0 -340
- package/src/tools/ToolController.ts +0 -200
- package/src/tools/ToolEnabledGroup.ts +0 -14
- package/src/tools/ToolSwitcherShortcut.ts +0 -39
- package/src/tools/ToolbarShortcutHandler.ts +0 -39
- package/src/tools/UndoRedoShortcut.test.ts +0 -56
- package/src/tools/UndoRedoShortcut.ts +0 -24
- package/src/tools/keybindings.ts +0 -85
- package/src/tools/lib.ts +0 -22
- package/src/tools/localization.ts +0 -74
- package/src/tools/tools.css +0 -4
- package/src/types.ts +0 -239
- package/src/util/assertions.ts +0 -55
- package/src/util/fileToBase64.ts +0 -18
- package/src/util/untilNextAnimationFrame.ts +0 -9
- package/src/util/waitForAll.ts +0 -18
- package/src/util/waitForTimeout.ts +0 -9
- /package/dist/{cjs/Color4.test.d.ts → mjs/toolbar/widgets/layout/types.mjs} +0 -0
@@ -1,302 +0,0 @@
|
|
1
|
-
import { Point2, Vec2 } from '../../math/Vec2';
|
2
|
-
import Rect2 from '../../math/shapes/Rect2';
|
3
|
-
import LineSegment2 from '../../math/shapes/LineSegment2';
|
4
|
-
import { StrokeDataPoint } from '../../types';
|
5
|
-
import QuadraticBezier from '../../math/shapes/QuadraticBezier';
|
6
|
-
|
7
|
-
export interface Curve {
|
8
|
-
startPoint: Vec2;
|
9
|
-
startWidth: number;
|
10
|
-
|
11
|
-
controlPoint: Vec2;
|
12
|
-
|
13
|
-
endWidth: number;
|
14
|
-
endPoint: Vec2;
|
15
|
-
}
|
16
|
-
|
17
|
-
type OnCurveAddedCallback = (curve: Curve|null)=>void;
|
18
|
-
|
19
|
-
// Handles stroke smoothing
|
20
|
-
export class StrokeSmoother {
|
21
|
-
private isFirstSegment: boolean = true;
|
22
|
-
|
23
|
-
private buffer: Point2[];
|
24
|
-
private lastPoint: StrokeDataPoint;
|
25
|
-
private lastExitingVec: Vec2|null = null;
|
26
|
-
private currentCurve: QuadraticBezier|null = null;
|
27
|
-
private curveStartWidth: number;
|
28
|
-
private curveEndWidth: number;
|
29
|
-
|
30
|
-
// Stroke smoothing and tangent approximation
|
31
|
-
private momentum: Vec2;
|
32
|
-
private bbox: Rect2;
|
33
|
-
|
34
|
-
public constructor(
|
35
|
-
private startPoint: StrokeDataPoint,
|
36
|
-
|
37
|
-
// Maximum distance from the actual curve (irrespective of stroke width)
|
38
|
-
// for which a point is considered 'part of the curve'.
|
39
|
-
// Note that the maximum will be smaller if the stroke width is less than
|
40
|
-
// [maxFitAllowed].
|
41
|
-
private minFitAllowed: number,
|
42
|
-
private maxFitAllowed: number,
|
43
|
-
|
44
|
-
private onCurveAdded: OnCurveAddedCallback,
|
45
|
-
) {
|
46
|
-
this.lastPoint = this.startPoint;
|
47
|
-
|
48
|
-
this.buffer = [this.startPoint.pos];
|
49
|
-
this.momentum = Vec2.zero;
|
50
|
-
this.currentCurve = null;
|
51
|
-
this.curveStartWidth = startPoint.width;
|
52
|
-
|
53
|
-
this.bbox = new Rect2(this.startPoint.pos.x, this.startPoint.pos.y, 0, 0);
|
54
|
-
}
|
55
|
-
|
56
|
-
public getBBox(): Rect2 {
|
57
|
-
return this.bbox;
|
58
|
-
}
|
59
|
-
|
60
|
-
public preview(): Curve|null {
|
61
|
-
if (!this.currentCurve) {
|
62
|
-
return null;
|
63
|
-
}
|
64
|
-
|
65
|
-
return this.currentSegmentToPath();
|
66
|
-
}
|
67
|
-
|
68
|
-
// Returns the distance between the start, control, and end points of the curve.
|
69
|
-
private approxCurrentCurveLength() {
|
70
|
-
if (!this.currentCurve) {
|
71
|
-
return 0;
|
72
|
-
}
|
73
|
-
const startPt = this.currentCurve.p0;
|
74
|
-
const controlPt = this.currentCurve.p1;
|
75
|
-
const endPt = this.currentCurve.p2;
|
76
|
-
const toControlDist = startPt.minus(controlPt).length();
|
77
|
-
const toEndDist = endPt.minus(controlPt).length();
|
78
|
-
return toControlDist + toEndDist;
|
79
|
-
}
|
80
|
-
|
81
|
-
public finalizeCurrentCurve() {
|
82
|
-
// Case where no points have been added
|
83
|
-
if (!this.currentCurve) {
|
84
|
-
return;
|
85
|
-
}
|
86
|
-
|
87
|
-
this.onCurveAdded(this.currentSegmentToPath());
|
88
|
-
|
89
|
-
const lastPoint = this.buffer[this.buffer.length - 1];
|
90
|
-
this.lastExitingVec = this.currentCurve.p2.minus(this.currentCurve.p1);
|
91
|
-
console.assert(this.lastExitingVec.magnitude() !== 0, 'lastExitingVec has zero length!');
|
92
|
-
|
93
|
-
// Use the last two points to start a new curve (the last point isn't used
|
94
|
-
// in the current curve and we want connected curves to share end points)
|
95
|
-
this.buffer = [
|
96
|
-
this.buffer[this.buffer.length - 2], lastPoint,
|
97
|
-
];
|
98
|
-
this.currentCurve = null;
|
99
|
-
|
100
|
-
this.isFirstSegment = false;
|
101
|
-
}
|
102
|
-
|
103
|
-
// Returns [upper curve, connector, lower curve]
|
104
|
-
private currentSegmentToPath() {
|
105
|
-
if (this.currentCurve == null) {
|
106
|
-
throw new Error('Invalid State: currentCurve is null!');
|
107
|
-
}
|
108
|
-
|
109
|
-
const startVec = this.currentCurve.normal(0).normalized();
|
110
|
-
|
111
|
-
if (!isFinite(startVec.magnitude())) {
|
112
|
-
throw new Error(`startVec(${startVec}) is NaN or ∞`);
|
113
|
-
}
|
114
|
-
|
115
|
-
const startPt = this.currentCurve.at(0);
|
116
|
-
const endPt = this.currentCurve.at(1);
|
117
|
-
const controlPoint = this.currentCurve.p1;
|
118
|
-
|
119
|
-
return {
|
120
|
-
startPoint: startPt,
|
121
|
-
controlPoint,
|
122
|
-
endPoint: endPt,
|
123
|
-
startWidth: this.curveStartWidth,
|
124
|
-
endWidth: this.curveEndWidth,
|
125
|
-
};
|
126
|
-
}
|
127
|
-
|
128
|
-
// Compute the direction of the velocity at the end of this.buffer
|
129
|
-
private computeExitingVec(): Vec2 {
|
130
|
-
return this.momentum.normalized().times(this.lastPoint.width / 2);
|
131
|
-
}
|
132
|
-
|
133
|
-
public addPoint(newPoint: StrokeDataPoint) {
|
134
|
-
if (this.lastPoint) {
|
135
|
-
// Ignore points that are identical
|
136
|
-
const fuzzEq = 1e-10;
|
137
|
-
const deltaTime = newPoint.time - this.lastPoint.time;
|
138
|
-
if (newPoint.pos.eq(this.lastPoint.pos, fuzzEq) || deltaTime === 0) {
|
139
|
-
return;
|
140
|
-
} else if (isNaN(newPoint.pos.magnitude())) {
|
141
|
-
console.warn('Discarding NaN point.', newPoint);
|
142
|
-
return;
|
143
|
-
}
|
144
|
-
|
145
|
-
const threshold = Math.min(this.lastPoint.width, newPoint.width) / 3;
|
146
|
-
const shouldSnapToInitial = this.startPoint.pos.minus(newPoint.pos).magnitude() < threshold
|
147
|
-
&& this.isFirstSegment;
|
148
|
-
|
149
|
-
// Snap to the starting point if the stroke is contained within a small ball centered
|
150
|
-
// at the starting point.
|
151
|
-
// This allows us to create a circle/dot at the start of the stroke.
|
152
|
-
if (shouldSnapToInitial) {
|
153
|
-
return;
|
154
|
-
}
|
155
|
-
|
156
|
-
const velocity = newPoint.pos.minus(this.lastPoint.pos).times(1 / (deltaTime) * 1000);
|
157
|
-
this.momentum = this.momentum.lerp(velocity, 0.9);
|
158
|
-
}
|
159
|
-
|
160
|
-
const lastPoint = this.lastPoint ?? newPoint;
|
161
|
-
this.lastPoint = newPoint;
|
162
|
-
|
163
|
-
this.buffer.push(newPoint.pos);
|
164
|
-
const pointRadius = newPoint.width;
|
165
|
-
const prevEndWidth = this.curveEndWidth;
|
166
|
-
this.curveEndWidth = pointRadius;
|
167
|
-
|
168
|
-
// recompute bbox
|
169
|
-
this.bbox = this.bbox.grownToPoint(newPoint.pos, pointRadius);
|
170
|
-
|
171
|
-
// If the last curve just ended or it's the first curve,
|
172
|
-
if (this.currentCurve === null) {
|
173
|
-
const p1 = lastPoint.pos;
|
174
|
-
const p2 = lastPoint.pos.plus(this.lastExitingVec ?? Vec2.unitX);
|
175
|
-
const p3 = newPoint.pos;
|
176
|
-
|
177
|
-
// Quadratic Bézier curve
|
178
|
-
this.currentCurve = new QuadraticBezier(p1, p2, p3);
|
179
|
-
console.assert(!isNaN(p1.magnitude()) && !isNaN(p2.magnitude()) && !isNaN(p3.magnitude()), 'Expected !NaN');
|
180
|
-
|
181
|
-
if (this.isFirstSegment) {
|
182
|
-
// The start of a curve often lacks accurate pressure information. Update it.
|
183
|
-
this.curveStartWidth = (this.curveStartWidth + pointRadius) / 2;
|
184
|
-
}
|
185
|
-
else {
|
186
|
-
this.curveStartWidth = prevEndWidth;
|
187
|
-
}
|
188
|
-
}
|
189
|
-
|
190
|
-
// If there isn't an entering vector (e.g. because this.isFirstCurve), approximate it.
|
191
|
-
let enteringVec = this.lastExitingVec;
|
192
|
-
if (!enteringVec) {
|
193
|
-
let sampleIdx = Math.ceil(this.buffer.length / 2);
|
194
|
-
if (sampleIdx === 0 || sampleIdx >= this.buffer.length) {
|
195
|
-
sampleIdx = this.buffer.length - 1;
|
196
|
-
}
|
197
|
-
|
198
|
-
enteringVec = this.buffer[sampleIdx].minus(this.buffer[0]);
|
199
|
-
}
|
200
|
-
|
201
|
-
let exitingVec = this.computeExitingVec();
|
202
|
-
|
203
|
-
// Find the intersection between the entering vector and the exiting vector
|
204
|
-
const maxRelativeLength = 2;
|
205
|
-
const segmentStart = this.buffer[0];
|
206
|
-
const segmentEnd = newPoint.pos;
|
207
|
-
const startEndDist = segmentEnd.minus(segmentStart).magnitude();
|
208
|
-
const maxControlPointDist = maxRelativeLength * startEndDist;
|
209
|
-
|
210
|
-
// Exit in cases where we would divide by zero
|
211
|
-
if (maxControlPointDist === 0 || exitingVec.magnitude() === 0 || !isFinite(exitingVec.magnitude())) {
|
212
|
-
return;
|
213
|
-
}
|
214
|
-
|
215
|
-
console.assert(isFinite(enteringVec.magnitude()), 'Pre-normalized enteringVec has NaN or ∞ magnitude!');
|
216
|
-
|
217
|
-
enteringVec = enteringVec.normalized();
|
218
|
-
exitingVec = exitingVec.normalized();
|
219
|
-
|
220
|
-
console.assert(isFinite(enteringVec.magnitude()), 'Normalized enteringVec has NaN or ∞ magnitude!');
|
221
|
-
|
222
|
-
const lineFromStart = new LineSegment2(
|
223
|
-
segmentStart,
|
224
|
-
segmentStart.plus(enteringVec.times(maxControlPointDist))
|
225
|
-
);
|
226
|
-
const lineFromEnd = new LineSegment2(
|
227
|
-
segmentEnd.minus(exitingVec.times(maxControlPointDist)),
|
228
|
-
segmentEnd
|
229
|
-
);
|
230
|
-
const intersection = lineFromEnd.intersection(lineFromStart);
|
231
|
-
|
232
|
-
// Position the control point at this intersection
|
233
|
-
let controlPoint: Point2|null = null;
|
234
|
-
if (intersection) {
|
235
|
-
controlPoint = intersection.point;
|
236
|
-
}
|
237
|
-
|
238
|
-
// No intersection or the intersection is one of the end points?
|
239
|
-
if (!controlPoint || segmentStart.eq(controlPoint) || segmentEnd.eq(controlPoint)) {
|
240
|
-
// Position the control point closer to the first -- the connecting
|
241
|
-
// segment will be roughly a line.
|
242
|
-
controlPoint = segmentStart.plus(enteringVec.times(startEndDist / 4));
|
243
|
-
}
|
244
|
-
|
245
|
-
console.assert(!segmentStart.eq(controlPoint, 1e-11), 'Start and control points are equal!');
|
246
|
-
console.assert(!controlPoint.eq(segmentEnd, 1e-11), 'Control and end points are equal!');
|
247
|
-
|
248
|
-
const prevCurve = this.currentCurve;
|
249
|
-
this.currentCurve = new QuadraticBezier(segmentStart, controlPoint, segmentEnd);
|
250
|
-
|
251
|
-
if (isNaN(this.currentCurve.normal(0).magnitude())) {
|
252
|
-
console.error('NaN normal at 0. Curve:', this.currentCurve);
|
253
|
-
this.currentCurve = prevCurve;
|
254
|
-
}
|
255
|
-
|
256
|
-
// Should we start making a new curve? Check whether all buffer points are within
|
257
|
-
// ±strokeWidth of the curve.
|
258
|
-
const curveMatchesPoints = (curve: QuadraticBezier): boolean => {
|
259
|
-
const minFit = Math.min(Math.max(
|
260
|
-
Math.min(this.curveStartWidth, this.curveEndWidth) / 4,
|
261
|
-
this.minFitAllowed
|
262
|
-
), this.maxFitAllowed);
|
263
|
-
|
264
|
-
// The sum of distances greater than minFit must not exceed this:
|
265
|
-
const maxNonMatchingDistSum = minFit;
|
266
|
-
|
267
|
-
// Sum of distances greater than minFit.
|
268
|
-
let nonMatchingDistSum = 0;
|
269
|
-
|
270
|
-
for (const point of this.buffer) {
|
271
|
-
let dist = curve.approximateDistance(point);
|
272
|
-
|
273
|
-
if (dist > minFit) {
|
274
|
-
// Use the more accurate distance function
|
275
|
-
dist = curve.distance(point);
|
276
|
-
|
277
|
-
nonMatchingDistSum += Math.max(0, dist - minFit);
|
278
|
-
if (nonMatchingDistSum > maxNonMatchingDistSum) {
|
279
|
-
return false; // false: Curve doesn't match points well enough.
|
280
|
-
}
|
281
|
-
}
|
282
|
-
}
|
283
|
-
return true;
|
284
|
-
};
|
285
|
-
|
286
|
-
if (this.buffer.length > 3 && this.approxCurrentCurveLength() > this.curveStartWidth / 2) {
|
287
|
-
if (!curveMatchesPoints(this.currentCurve)) {
|
288
|
-
// Use a curve that better fits the points
|
289
|
-
this.currentCurve = prevCurve;
|
290
|
-
this.curveEndWidth = prevEndWidth;
|
291
|
-
|
292
|
-
// Reset the last point -- the current point was not added to the curve.
|
293
|
-
this.lastPoint = lastPoint;
|
294
|
-
|
295
|
-
this.finalizeCurrentCurve();
|
296
|
-
return;
|
297
|
-
}
|
298
|
-
}
|
299
|
-
}
|
300
|
-
}
|
301
|
-
|
302
|
-
export default StrokeSmoother;
|
@@ -1,18 +0,0 @@
|
|
1
|
-
import AbstractComponent from '../AbstractComponent';
|
2
|
-
import { ImageComponentLocalization } from '../localization';
|
3
|
-
|
4
|
-
// Returns the description of all given elements, if identical, otherwise,
|
5
|
-
// returns null.
|
6
|
-
export default (localizationTable: ImageComponentLocalization, elems: AbstractComponent[]) => {
|
7
|
-
if (elems.length === 0) {
|
8
|
-
return null;
|
9
|
-
}
|
10
|
-
|
11
|
-
const description = elems[0].description(localizationTable);
|
12
|
-
for (const elem of elems) {
|
13
|
-
if (elem.description(localizationTable) !== description) {
|
14
|
-
return null;
|
15
|
-
}
|
16
|
-
}
|
17
|
-
return description;
|
18
|
-
};
|
package/src/lib.ts
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* The main entrypoint for the NPM package. Everything exported by this file
|
3
|
-
* is available through the [`js-draw` package](https://www.npmjs.com/package/js-draw).
|
4
|
-
*
|
5
|
-
* @example
|
6
|
-
* ```
|
7
|
-
* import { Editor, Vec3, Mat33 } from 'js-draw';
|
8
|
-
*
|
9
|
-
* // Apply js-draw CSS
|
10
|
-
* import 'js-draw/styles';
|
11
|
-
* // If your bundler doesn't support the above, try
|
12
|
-
* // import 'js-draw/bundledStyles';
|
13
|
-
*
|
14
|
-
* (async () => {
|
15
|
-
* const editor = new Editor(document.body);
|
16
|
-
* const toolbar = editor.addToolbar();
|
17
|
-
* editor.getRootElement().style.height = '600px';
|
18
|
-
*
|
19
|
-
* await editor.loadFromSVG(`
|
20
|
-
* <svg viewBox="0 0 500 500" width="500" height="500" version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
|
21
|
-
* <style id="js-draw-style-sheet">path{stroke-linecap:round;stroke-linejoin:round;}text{white-space:pre;}</style>
|
22
|
-
* <path d="M500,500L500,0L0,0L0,500L500,500" fill="#423131bf" class="js-draw-image-background"></path>
|
23
|
-
* <text style="transform: matrix(1, 0, 0, 1, 57, 192); font-family: serif; font-size: 32px; fill: rgb(204, 102, 51);">Testing...</text>
|
24
|
-
* </svg>
|
25
|
-
* `);
|
26
|
-
*
|
27
|
-
* toolbar.addActionButton({
|
28
|
-
* label: 'Save',
|
29
|
-
* icon: editor.icons.makeSaveIcon(),
|
30
|
-
* }, () => {
|
31
|
-
* const saveData = editor.toSVG().outerHTML;
|
32
|
-
*
|
33
|
-
* // Do something with saveData
|
34
|
-
* });
|
35
|
-
* })();
|
36
|
-
* ```
|
37
|
-
*
|
38
|
-
* @see
|
39
|
-
* {@link Editor}
|
40
|
-
* {@link Editor.loadFromSVG}
|
41
|
-
* {@link HTMLToolbar.addActionButton }
|
42
|
-
*
|
43
|
-
* @packageDocumentation
|
44
|
-
*/
|
45
|
-
|
46
|
-
import Editor, { EditorSettings } from './Editor';
|
47
|
-
export { default as EditorImage } from './EditorImage';
|
48
|
-
export * from './types';
|
49
|
-
export { default as getLocalizationTable, matchingLocalizationTable } from './localizations/getLocalizationTable';
|
50
|
-
export * from './localization';
|
51
|
-
|
52
|
-
export { default as Color4 } from './Color4';
|
53
|
-
export { default as SVGLoader } from './SVGLoader';
|
54
|
-
export { default as Viewport } from './Viewport';
|
55
|
-
export * from './math/lib';
|
56
|
-
export * from './components/lib';
|
57
|
-
export * from './commands/lib';
|
58
|
-
export * from './tools/lib';
|
59
|
-
export * from './toolbar/lib';
|
60
|
-
export * from './rendering/lib';
|
61
|
-
export * from './testing/lib';
|
62
|
-
export * from './shortcuts/lib';
|
63
|
-
export { default as EventDispatcher } from './EventDispatcher';
|
64
|
-
export { default as Pointer, PointerDevice } from './Pointer';
|
65
|
-
export { default as HTMLToolbar } from './toolbar/HTMLToolbar';
|
66
|
-
export { default as UndoRedoHistory } from './UndoRedoHistory';
|
67
|
-
|
68
|
-
export { Editor, EditorSettings };
|
69
|
-
export default Editor;
|
package/src/localization.ts
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
import { CommandLocalization, defaultCommandLocalization } from './commands/localization';
|
2
|
-
import { defaultComponentLocalization, ImageComponentLocalization } from './components/localization';
|
3
|
-
import { defaultTextRendererLocalization, TextRendererLocalization } from './rendering/localization';
|
4
|
-
import { defaultToolbarLocalization, ToolbarLocalization } from './toolbar/localization';
|
5
|
-
import { defaultToolLocalization, ToolLocalization } from './tools/localization';
|
6
|
-
|
7
|
-
|
8
|
-
export interface EditorLocalization extends ToolbarLocalization, ToolLocalization, CommandLocalization, ImageComponentLocalization, TextRendererLocalization {
|
9
|
-
accessibilityInputInstructions: string;
|
10
|
-
undoAnnouncement: (actionDescription: string)=> string;
|
11
|
-
redoAnnouncement: (actionDescription: string)=> string;
|
12
|
-
doneLoading: string;
|
13
|
-
loading: (percentage: number)=>string;
|
14
|
-
imageEditor: string;
|
15
|
-
}
|
16
|
-
|
17
|
-
export const defaultEditorLocalization: EditorLocalization = {
|
18
|
-
...defaultToolbarLocalization,
|
19
|
-
...defaultToolLocalization,
|
20
|
-
...defaultCommandLocalization,
|
21
|
-
...defaultComponentLocalization,
|
22
|
-
...defaultTextRendererLocalization,
|
23
|
-
accessibilityInputInstructions: [
|
24
|
-
'Press "t" to read the contents of the viewport as text.',
|
25
|
-
'Use the arrow keys to move the viewport, click and drag to draw strokes.',
|
26
|
-
'Press "w" to zoom in and "s" to zoom out.',
|
27
|
-
].join(' '),
|
28
|
-
loading: (percentage: number) => `Loading ${percentage}%...`,
|
29
|
-
imageEditor: 'Image Editor',
|
30
|
-
doneLoading: 'Done loading',
|
31
|
-
|
32
|
-
undoAnnouncement: (commandDescription: string) => `Undid ${commandDescription}`,
|
33
|
-
redoAnnouncement: (commandDescription: string) => `Redid ${commandDescription}`,
|
34
|
-
};
|
package/src/localizations/de.ts
DELETED
@@ -1,146 +0,0 @@
|
|
1
|
-
import { defaultEditorLocalization, EditorLocalization } from '../localization';
|
2
|
-
|
3
|
-
// German localization
|
4
|
-
const localization: EditorLocalization = {
|
5
|
-
...defaultEditorLocalization,
|
6
|
-
|
7
|
-
pen: 'Stift',
|
8
|
-
eraser: 'Radierer',
|
9
|
-
select: 'Auswahl',
|
10
|
-
handTool: 'Verschieben',
|
11
|
-
|
12
|
-
zoom: 'Vergrößerung',
|
13
|
-
|
14
|
-
image: 'Bild',
|
15
|
-
inputAltText: 'Alt-Text: ',
|
16
|
-
chooseFile: 'Wähle Datei: ',
|
17
|
-
submit: 'Absenden',
|
18
|
-
cancel: 'Abbrechen',
|
19
|
-
|
20
|
-
resetView: 'Ansicht zurücksetzen',
|
21
|
-
|
22
|
-
thicknessLabel: 'Dicke: ',
|
23
|
-
colorLabel: 'Farbe: ',
|
24
|
-
fontLabel: 'Schriftart: ',
|
25
|
-
textSize: 'Größe: ',
|
26
|
-
|
27
|
-
resizeImageToSelection: 'Bildgröße an Auswahl anpassen',
|
28
|
-
deleteSelection: 'Auswahl löschen',
|
29
|
-
duplicateSelection: 'Auswahl duplizieren',
|
30
|
-
|
31
|
-
undo: 'Rückgängig',
|
32
|
-
redo: 'Wiederholen',
|
33
|
-
|
34
|
-
pickColorFromScreen: 'Farbe von Bildschirm auswählen',
|
35
|
-
clickToPickColorAnnouncement: 'Klicke auf den Bildschirm, um eine Farbe auszuwählen',
|
36
|
-
selectionToolKeyboardShortcuts: 'Auswahl-Werkzeug: Verwende die Pfeiltasten, um ausgewählte Elemente zu verschieben und ‚i‘ und ‚o‘, um ihre Größe zu ändern.',
|
37
|
-
touchPanning: 'Ansicht mit Touchscreen verschieben',
|
38
|
-
anyDevicePanning: 'Ansicht mit jedem Eingabegerät verschieben',
|
39
|
-
|
40
|
-
selectPenType: 'Objekt-Typ: ',
|
41
|
-
roundedTipPen: 'Freihand',
|
42
|
-
flatTipPen: 'Stift (druckempfindlich)',
|
43
|
-
arrowPen: 'Pfeil',
|
44
|
-
linePen: 'Linie',
|
45
|
-
outlinedRectanglePen: 'Umrissenes Rechteck',
|
46
|
-
filledRectanglePen: 'Ausgefülltes Rechteck',
|
47
|
-
|
48
|
-
lockRotation: 'Sperre Rotation',
|
49
|
-
paste: 'Einfügen',
|
50
|
-
|
51
|
-
dropdownShown: (toolName) =>`Dropdown-Menü für ${toolName} angezeigt`,
|
52
|
-
dropdownHidden: (toolName) =>`Dropdown-Menü für ${toolName} versteckt`,
|
53
|
-
zoomLevel: (zoomPercent) =>`Vergößerung: ${zoomPercent}%`,
|
54
|
-
colorChangedAnnouncement: (color) =>`Farbe zu ${color} geändert`,
|
55
|
-
|
56
|
-
imageSize: (size, units) => `Bild-Größe: ${size} ${units}`,
|
57
|
-
imageLoadError: (message) => `Fehler beim Laden des Bildes: ${message}`,
|
58
|
-
errorImageHasZeroSize: 'Fehler: Bild hat Größe Null',
|
59
|
-
|
60
|
-
penTool: (penNumber) =>`Stift ${penNumber}`,
|
61
|
-
|
62
|
-
selectionTool: 'Auswahl',
|
63
|
-
eraserTool: 'Radiergummi',
|
64
|
-
touchPanTool: 'Ansicht mit Touchscreen verschieben',
|
65
|
-
twoFingerPanZoomTool: 'Ansicht verschieben und vergrößern',
|
66
|
-
undoRedoTool: 'Rückgängig/Wiederholen',
|
67
|
-
rightClickDragPanTool: 'Rechtsklick-Ziehen',
|
68
|
-
pipetteTool: 'Farbe von Bildschirm auswählen',
|
69
|
-
keyboardPanZoom: 'Tastaturkürzel zum Verschieben/Vergrößern der Ansicht',
|
70
|
-
textTool: 'Text',
|
71
|
-
enterTextToInsert: 'Einzufügender Text',
|
72
|
-
changeTool: 'Wechsle Werkzeug',
|
73
|
-
pasteHandler: 'Copy-Paste-Handler',
|
74
|
-
findLabel: 'Finde',
|
75
|
-
toNextMatch: 'Nächstes',
|
76
|
-
closeFindDialog: 'Schließen',
|
77
|
-
findDialogShown: 'Finde-Dialog angezeigt',
|
78
|
-
findDialogHidden: 'Finde-Dialog versteckt',
|
79
|
-
focusedFoundText: (matchIdx, totalMatches) => `Sieh Treffer ${matchIdx} von ${totalMatches} an`,
|
80
|
-
|
81
|
-
toolEnabledAnnouncement: (toolName) =>`${toolName} aktiviert`,
|
82
|
-
toolDisabledAnnouncement: (toolName) =>`${toolName} deaktiviert`,
|
83
|
-
updatedViewport: 'Transformierte Ansicht',
|
84
|
-
transformedElements: (elemCount) =>`${elemCount} Element${1 === elemCount ? '' : 'e'} transformiert`,
|
85
|
-
resizeOutputCommand: (newSize) =>`Bildgröße auf ${newSize.w}x${newSize.h} geändert`,
|
86
|
-
addElementAction: (componentDescription) =>`${componentDescription} hinzugefügt`,
|
87
|
-
eraseAction: (elemDescription, countErased)=>`${countErased} ${elemDescription} gelöscht`,
|
88
|
-
duplicateAction: (elemDescription, countErased)=>`${countErased} ${elemDescription} dupliziert`,
|
89
|
-
inverseOf: (actionDescription) =>`${actionDescription} umgekehrt`,
|
90
|
-
|
91
|
-
elements: 'Elemente',
|
92
|
-
erasedNoElements: 'Nichts entfernt',
|
93
|
-
duplicatedNoElements: 'Nichts dupliziert',
|
94
|
-
rotatedBy: (degrees) =>`${Math.abs(degrees)} Grad ${degrees < 0 ? 'im Uhrzeigersinn' : 'gegen den Uhrzeigersinn'} gedreht`,
|
95
|
-
|
96
|
-
movedLeft: 'Nacht links bewegt',
|
97
|
-
movedUp: 'Nacht oben bewegt',
|
98
|
-
movedDown: 'Nacht unten bewegt',
|
99
|
-
movedRight: 'Nacht rechts bewegt',
|
100
|
-
zoomedOut: 'Ansicht verkleinert',
|
101
|
-
zoomedIn: 'Ansicht vergrößert',
|
102
|
-
|
103
|
-
selectedElements: (count) =>`${count} Element${ 1 === count ? '' : 'e' } ausgewählt`,
|
104
|
-
stroke: 'Strich',
|
105
|
-
svgObject: 'SVG-Objekt',
|
106
|
-
|
107
|
-
text: (text) =>`Text-Objekt: ${text}`,
|
108
|
-
pathNodeCount: (count) =>`Es gibt ${count} sichtbare Pfad-Objekte.`,
|
109
|
-
textNodeCount: (count) =>`Es gibt ${count} sichtbare Text-Knotenpunkte.`,
|
110
|
-
textNode: (content) =>`Text: ${content}`,
|
111
|
-
|
112
|
-
imageNodeCount: (nodeCount) => `Es gibt ${nodeCount} sichtbare Bild-Knoten.`,
|
113
|
-
imageNode: label => `Bild: ${label}`,
|
114
|
-
unlabeledImageNode: 'Bild ohne Label',
|
115
|
-
|
116
|
-
rerenderAsText: 'Als Text darstellen',
|
117
|
-
accessibilityInputInstructions: 'Drücke ‚t‘, um den Inhalt des Ansichtsfensters als Text zu lesen. Verwende die Pfeiltasten, um die Ansicht zu verschieben, und klicke und ziehe, um Striche zu zeichnen. Drücke ‚w‘ zum Vergrößern und ‚s‘ zum Verkleinern der Ansicht.',
|
118
|
-
|
119
|
-
loading: percentage =>`Laden ${percentage}%...`,
|
120
|
-
doneLoading: 'Laden fertig',
|
121
|
-
|
122
|
-
imageEditor: 'Bild-Editor',
|
123
|
-
undoAnnouncement: (commandDescription) =>`${commandDescription} rückgängig gemacht`,
|
124
|
-
redoAnnouncement: (commandDescription) =>`${commandDescription} wiederholt`,
|
125
|
-
reformatSelection: 'Formatiere Auswahl',
|
126
|
-
documentProperties: 'Seite',
|
127
|
-
backgroundColor: 'Hintergrundfarbe: ',
|
128
|
-
imageWidthOption: 'Breite: ',
|
129
|
-
imageHeightOption: 'Höhe: ',
|
130
|
-
useGridOption: 'Gitter: ',
|
131
|
-
toggleOverflow: 'Mehr',
|
132
|
-
selectAllTool: 'Alle auswählen',
|
133
|
-
soundExplorer: 'Klangbasierte Bilderkundung',
|
134
|
-
disableAccessibilityExploreTool: 'Deaktiviere klangbasierte Erkundung',
|
135
|
-
enableAccessibilityExploreTool: 'Aktiviere klangbasierte Erkundung',
|
136
|
-
copied: (count, description) => `${count} ${description} kopiert`,
|
137
|
-
pasted: (count, description) => `${count} ${description} eingefügt`,
|
138
|
-
unionOf: (actionDescription, actionCount) => `Vereinigung: ${actionCount} ${actionDescription}`,
|
139
|
-
emptyBackground: 'Leerer Hintergrund',
|
140
|
-
filledBackgroundWithColor: (color) => `Gefüllter Hintergrund (${color})`,
|
141
|
-
restyledElement: (elementDescription) => `${elementDescription} umgestaltet`,
|
142
|
-
|
143
|
-
|
144
|
-
};
|
145
|
-
|
146
|
-
export default localization;
|
package/src/localizations/en.ts
DELETED
package/src/localizations/es.ts
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
import { defaultEditorLocalization, EditorLocalization } from '../localization';
|
2
|
-
|
3
|
-
// A partial Spanish localization.
|
4
|
-
const localization: EditorLocalization = {
|
5
|
-
...defaultEditorLocalization,
|
6
|
-
|
7
|
-
// Strings for the main editor interface
|
8
|
-
// (see src/localization.ts)
|
9
|
-
loading: (percentage: number) => `Cargando: ${percentage}%...`,
|
10
|
-
imageEditor: 'Editor de dibujos',
|
11
|
-
|
12
|
-
undoAnnouncement: (commandDescription: string) => `${commandDescription} fue deshecho`,
|
13
|
-
redoAnnouncement: (commandDescription: string) => `${commandDescription} fue rehecho`,
|
14
|
-
undo: 'Deshace',
|
15
|
-
redo: 'Rehace',
|
16
|
-
|
17
|
-
// Strings for the toolbar
|
18
|
-
// (see src/toolbar/localization.ts)
|
19
|
-
pen: 'Lapiz',
|
20
|
-
eraser: 'Borrador',
|
21
|
-
select: 'Selecciona',
|
22
|
-
thicknessLabel: 'Tamaño: ',
|
23
|
-
colorLabel: 'Color: ',
|
24
|
-
doneLoading: 'El cargado terminó',
|
25
|
-
fontLabel: 'Fuente: ',
|
26
|
-
anyDevicePanning: 'Mover la pantalla con todo dispotivo',
|
27
|
-
touchPanning: 'Mover la pantalla con un dedo',
|
28
|
-
touchPanTool: 'Instrumento de mover la pantalla con un dedo',
|
29
|
-
outlinedRectanglePen: 'Rectángulo con nada más que un borde',
|
30
|
-
filledRectanglePen: 'Rectángulo sin borde',
|
31
|
-
linePen: 'Línea',
|
32
|
-
arrowPen: 'Flecha',
|
33
|
-
roundedTipPen: 'Lapiz Redondeado',
|
34
|
-
selectPenType: 'Forma de dibuja:',
|
35
|
-
handTool: 'Mover',
|
36
|
-
zoom: 'Zoom',
|
37
|
-
resetView: 'Reiniciar vista',
|
38
|
-
resizeImageToSelection: 'Redimensionar la imagen a lo que está seleccionado',
|
39
|
-
deleteSelection: 'Borra la selección',
|
40
|
-
duplicateSelection: 'Duplica la selección',
|
41
|
-
pickColorFromScreen: 'Selecciona un color de la pantalla',
|
42
|
-
clickToPickColorAnnouncement: 'Haga un clic en la pantalla para seleccionar un color',
|
43
|
-
dropdownShown(toolName: string): string {
|
44
|
-
return `Menú por ${toolName} es visible`;
|
45
|
-
},
|
46
|
-
dropdownHidden: function (toolName: string): string {
|
47
|
-
return `Menú por ${toolName} fue ocultado`;
|
48
|
-
},
|
49
|
-
colorChangedAnnouncement: function (color: string): string {
|
50
|
-
return `Color fue cambiado a ${color}`;
|
51
|
-
},
|
52
|
-
keyboardPanZoom: 'Mover la pantalla con el teclado',
|
53
|
-
penTool: function (penId: number): string {
|
54
|
-
return `Lapiz ${penId}`;
|
55
|
-
},
|
56
|
-
selectionTool: 'Selecciona',
|
57
|
-
eraserTool: 'Borrador',
|
58
|
-
textTool: 'Texto',
|
59
|
-
enterTextToInsert: 'Entra texto',
|
60
|
-
textSize: 'Tamaño',
|
61
|
-
rerenderAsText: 'Redibuja la pantalla al texto',
|
62
|
-
lockRotation: 'Bloquea rotación',
|
63
|
-
image: 'Imagen',
|
64
|
-
imageSize: (size: number, units: string) => `Tamaño del imagen: ${size} ${units}`,
|
65
|
-
imageLoadError: (message: string)=> `Error cargando imagen: ${message}`,
|
66
|
-
toggleOverflow: 'Más',
|
67
|
-
|
68
|
-
documentProperties: 'Fondo',
|
69
|
-
imageWidthOption: 'Ancho: ',
|
70
|
-
imageHeightOption: 'Alto: ',
|
71
|
-
backgroundColor: 'Color de fondo: '
|
72
|
-
};
|
73
|
-
|
74
|
-
export default localization;
|
@@ -1,27 +0,0 @@
|
|
1
|
-
|
2
|
-
import { defaultEditorLocalization } from '../localization';
|
3
|
-
import en from './en';
|
4
|
-
import es from './es';
|
5
|
-
import getLocalizationTable from './getLocalizationTable';
|
6
|
-
|
7
|
-
describe('getLocalizationTable', () => {
|
8
|
-
it('should return the en localization for es_TEST', () => {
|
9
|
-
expect(getLocalizationTable([ 'es_TEST' ]) === es).toBe(true);
|
10
|
-
});
|
11
|
-
|
12
|
-
it('should return the default localization for unsupported language', () => {
|
13
|
-
expect(getLocalizationTable([ 'test' ]) === defaultEditorLocalization).toBe(true);
|
14
|
-
});
|
15
|
-
|
16
|
-
it('should return the first localization matching a language in the list of user locales', () => {
|
17
|
-
expect(getLocalizationTable([ 'test_TEST1', 'test_TEST2', 'test_TEST3', 'en_TEST', 'notalanguage']) === en).toBe(true);
|
18
|
-
});
|
19
|
-
|
20
|
-
it('should return the default localization for unsupported language', () => {
|
21
|
-
expect(getLocalizationTable([ 'test' ]) === defaultEditorLocalization).toBe(true);
|
22
|
-
});
|
23
|
-
|
24
|
-
it('should return first of user\'s supported languages', () => {
|
25
|
-
expect(getLocalizationTable([ 'es_MX', 'es_ES', 'en_US' ]) === es).toBe(true);
|
26
|
-
});
|
27
|
-
});
|