js-draw 0.25.0 → 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 +44 -45
- 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 +43 -45
- 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 -167
- 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,13 +1,15 @@
|
|
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.RenderingMode = void 0;
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
var Color4_1 = require("../Color4");
|
7
|
+
const CanvasRenderer_1 = __importDefault(require("./renderers/CanvasRenderer"));
|
8
|
+
const types_1 = require("../types");
|
9
|
+
const DummyRenderer_1 = __importDefault(require("./renderers/DummyRenderer"));
|
10
|
+
const math_1 = require("@js-draw/math");
|
11
|
+
const RenderingCache_1 = __importDefault(require("./caching/RenderingCache"));
|
12
|
+
const TextOnlyRenderer_1 = __importDefault(require("./renderers/TextOnlyRenderer"));
|
11
13
|
var RenderingMode;
|
12
14
|
(function (RenderingMode) {
|
13
15
|
RenderingMode[RenderingMode["DummyRenderer"] = 0] = "DummyRenderer";
|
@@ -26,10 +28,9 @@ var RenderingMode;
|
|
26
28
|
* const colorAtCenter = editor.display.getColorAt(center);
|
27
29
|
* ```
|
28
30
|
*/
|
29
|
-
|
31
|
+
class Display {
|
30
32
|
/** @internal */
|
31
|
-
|
32
|
-
var _this = this;
|
33
|
+
constructor(editor, mode, parent) {
|
33
34
|
this.editor = editor;
|
34
35
|
this.parent = parent;
|
35
36
|
this.textRerenderOutput = null;
|
@@ -37,7 +38,7 @@ var Display = /** @class */ (function () {
|
|
37
38
|
* @returns the color at the given point on the dry ink renderer, or `null` if `screenPos`
|
38
39
|
* is not on the display.
|
39
40
|
*/
|
40
|
-
this.getColorAt =
|
41
|
+
this.getColorAt = (_screenPos) => {
|
41
42
|
return null;
|
42
43
|
};
|
43
44
|
if (mode === RenderingMode.CanvasRenderer) {
|
@@ -48,13 +49,13 @@ var Display = /** @class */ (function () {
|
|
48
49
|
this.wetInkRenderer = new DummyRenderer_1.default(editor.viewport);
|
49
50
|
}
|
50
51
|
else {
|
51
|
-
throw new Error(
|
52
|
+
throw new Error(`Unknown rendering mode, ${mode}!`);
|
52
53
|
}
|
53
54
|
this.textRenderer = new TextOnlyRenderer_1.default(editor.viewport, editor.localization);
|
54
55
|
this.initializeTextRendering();
|
55
|
-
|
56
|
+
const cacheBlockResolution = math_1.Vec2.of(600, 600);
|
56
57
|
this.cache = new RenderingCache_1.default({
|
57
|
-
createRenderer:
|
58
|
+
createRenderer: () => {
|
58
59
|
if (mode === RenderingMode.DummyRenderer) {
|
59
60
|
return new DummyRenderer_1.default(editor.viewport);
|
60
61
|
}
|
@@ -63,14 +64,14 @@ var Display = /** @class */ (function () {
|
|
63
64
|
}
|
64
65
|
// Make the canvas slightly larger than each cache block to prevent
|
65
66
|
// seams.
|
66
|
-
|
67
|
+
const canvas = document.createElement('canvas');
|
67
68
|
canvas.width = cacheBlockResolution.x + 1;
|
68
69
|
canvas.height = cacheBlockResolution.y + 1;
|
69
|
-
|
70
|
+
const ctx = canvas.getContext('2d');
|
70
71
|
return new CanvasRenderer_1.default(ctx, editor.viewport);
|
71
72
|
},
|
72
|
-
isOfCorrectType:
|
73
|
-
return
|
73
|
+
isOfCorrectType: (renderer) => {
|
74
|
+
return this.dryInkRenderer.canRenderFromWithoutDataLoss(renderer);
|
74
75
|
},
|
75
76
|
blockResolution: cacheBlockResolution,
|
76
77
|
cacheSize: 600 * 600 * 4 * 90,
|
@@ -81,43 +82,33 @@ var Display = /** @class */ (function () {
|
|
81
82
|
// Require about 105 strokes with 4 parts each to use the cache at all.
|
82
83
|
minProportionalRenderTimeToUseCache: 105 * 4,
|
83
84
|
});
|
84
|
-
this.editor.notifier.on(types_1.EditorEventType.DisplayResized,
|
85
|
-
var _a;
|
85
|
+
this.editor.notifier.on(types_1.EditorEventType.DisplayResized, event => {
|
86
86
|
if (event.kind !== types_1.EditorEventType.DisplayResized) {
|
87
87
|
throw new Error('Mismatched event.kinds!');
|
88
88
|
}
|
89
|
-
|
89
|
+
this.resizeSurfacesCallback?.();
|
90
90
|
});
|
91
91
|
}
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
});
|
104
|
-
Object.defineProperty(Display.prototype, "height", {
|
105
|
-
get: function () {
|
106
|
-
return this.dryInkRenderer.displaySize().y;
|
107
|
-
},
|
108
|
-
enumerable: false,
|
109
|
-
configurable: true
|
110
|
-
});
|
92
|
+
/**
|
93
|
+
* @returns the visible width of the display (e.g. how much
|
94
|
+
* space the display's element takes up in the x direction
|
95
|
+
* in the DOM).
|
96
|
+
*/
|
97
|
+
get width() {
|
98
|
+
return this.dryInkRenderer.displaySize().x;
|
99
|
+
}
|
100
|
+
get height() {
|
101
|
+
return this.dryInkRenderer.displaySize().y;
|
102
|
+
}
|
111
103
|
/** @internal */
|
112
|
-
|
104
|
+
getCache() {
|
113
105
|
return this.cache;
|
114
|
-
}
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
var wetInkCtx = wetInkCanvas.getContext('2d');
|
106
|
+
}
|
107
|
+
initializeCanvasRendering() {
|
108
|
+
const dryInkCanvas = document.createElement('canvas');
|
109
|
+
const wetInkCanvas = document.createElement('canvas');
|
110
|
+
const dryInkCtx = dryInkCanvas.getContext('2d');
|
111
|
+
const wetInkCtx = wetInkCanvas.getContext('2d');
|
121
112
|
this.dryInkRenderer = new CanvasRenderer_1.default(dryInkCtx, this.editor.viewport);
|
122
113
|
this.wetInkRenderer = new CanvasRenderer_1.default(wetInkCtx, this.editor.viewport);
|
123
114
|
dryInkCanvas.className = 'dryInkCanvas';
|
@@ -126,8 +117,8 @@ var Display = /** @class */ (function () {
|
|
126
117
|
this.parent.appendChild(dryInkCanvas);
|
127
118
|
this.parent.appendChild(wetInkCanvas);
|
128
119
|
}
|
129
|
-
this.resizeSurfacesCallback =
|
130
|
-
|
120
|
+
this.resizeSurfacesCallback = () => {
|
121
|
+
const hasSizeMismatch = (canvas) => {
|
131
122
|
return canvas.clientHeight !== canvas.height || canvas.clientWidth !== canvas.width;
|
132
123
|
};
|
133
124
|
// Ensure that the drawing surfaces sizes match the
|
@@ -137,86 +128,82 @@ var Display = /** @class */ (function () {
|
|
137
128
|
dryInkCanvas.height = dryInkCanvas.clientHeight;
|
138
129
|
wetInkCanvas.width = wetInkCanvas.clientWidth;
|
139
130
|
wetInkCanvas.height = wetInkCanvas.clientHeight;
|
140
|
-
|
131
|
+
this.editor.notifier.dispatch(types_1.EditorEventType.DisplayResized, {
|
141
132
|
kind: types_1.EditorEventType.DisplayResized,
|
142
|
-
newSize:
|
133
|
+
newSize: math_1.Vec2.of(this.width, this.height),
|
143
134
|
});
|
144
135
|
}
|
145
136
|
};
|
146
137
|
this.resizeSurfacesCallback();
|
147
|
-
this.flattenCallback =
|
138
|
+
this.flattenCallback = () => {
|
148
139
|
dryInkCtx.drawImage(wetInkCanvas, 0, 0);
|
149
140
|
};
|
150
|
-
this.getColorAt =
|
151
|
-
|
152
|
-
|
141
|
+
this.getColorAt = (screenPos) => {
|
142
|
+
const pixel = dryInkCtx.getImageData(screenPos.x, screenPos.y, 1, 1);
|
143
|
+
const data = pixel?.data;
|
153
144
|
if (data) {
|
154
|
-
|
145
|
+
const color = math_1.Color4.ofRGBA(data[0] / 255, data[1] / 255, data[2] / 255, data[3] / 255);
|
155
146
|
return color;
|
156
147
|
}
|
157
148
|
return null;
|
158
149
|
};
|
159
|
-
}
|
160
|
-
|
161
|
-
|
162
|
-
var textRendererOutputContainer = document.createElement('div');
|
150
|
+
}
|
151
|
+
initializeTextRendering() {
|
152
|
+
const textRendererOutputContainer = document.createElement('div');
|
163
153
|
textRendererOutputContainer.classList.add('textRendererOutputContainer');
|
164
|
-
|
154
|
+
const rerenderButton = document.createElement('button');
|
165
155
|
rerenderButton.classList.add('rerenderButton');
|
166
156
|
rerenderButton.innerText = this.editor.localization.rerenderAsText;
|
167
157
|
this.textRerenderOutput = document.createElement('div');
|
168
158
|
this.textRerenderOutput.setAttribute('aria-live', 'polite');
|
169
|
-
rerenderButton.onclick =
|
170
|
-
|
159
|
+
rerenderButton.onclick = () => {
|
160
|
+
this.rerenderAsText();
|
171
161
|
};
|
172
162
|
textRendererOutputContainer.replaceChildren(rerenderButton, this.textRerenderOutput);
|
173
163
|
this.editor.createHTMLOverlay(textRendererOutputContainer);
|
174
|
-
}
|
164
|
+
}
|
175
165
|
/**
|
176
166
|
* Rerenders the text-based display.
|
177
167
|
* The text-based display is intended for screen readers and can be navigated to by pressing `tab`.
|
178
168
|
*/
|
179
|
-
|
169
|
+
rerenderAsText() {
|
180
170
|
this.textRenderer.clear();
|
181
171
|
this.editor.image.render(this.textRenderer, this.editor.viewport);
|
182
172
|
if (this.textRerenderOutput) {
|
183
173
|
this.textRerenderOutput.innerText = this.textRenderer.getDescription();
|
184
174
|
}
|
185
|
-
}
|
175
|
+
}
|
186
176
|
/**
|
187
177
|
* Clears the main drawing surface and otherwise prepares for a rerender.
|
188
178
|
*
|
189
179
|
* @returns the dry ink renderer.
|
190
180
|
*/
|
191
|
-
|
192
|
-
|
193
|
-
(_a = this.resizeSurfacesCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
181
|
+
startRerender() {
|
182
|
+
this.resizeSurfacesCallback?.();
|
194
183
|
this.dryInkRenderer.clear();
|
195
184
|
return this.dryInkRenderer;
|
196
|
-
}
|
185
|
+
}
|
197
186
|
/**
|
198
187
|
* If `draftMode`, the dry ink renderer is configured to render
|
199
188
|
* low-quality output.
|
200
189
|
*/
|
201
|
-
|
190
|
+
setDraftMode(draftMode) {
|
202
191
|
this.dryInkRenderer.setDraftMode(draftMode);
|
203
|
-
}
|
192
|
+
}
|
204
193
|
/** @internal */
|
205
|
-
|
194
|
+
getDryInkRenderer() {
|
206
195
|
return this.dryInkRenderer;
|
207
|
-
}
|
196
|
+
}
|
208
197
|
/**
|
209
198
|
* @returns The renderer used for showing action previews (e.g. an unfinished stroke).
|
210
199
|
* The `wetInkRenderer`'s surface is stacked above the `dryInkRenderer`'s.
|
211
200
|
*/
|
212
|
-
|
201
|
+
getWetInkRenderer() {
|
213
202
|
return this.wetInkRenderer;
|
214
|
-
}
|
203
|
+
}
|
215
204
|
/** Re-renders the contents of the wetInkRenderer onto the dryInkRenderer. */
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
return Display;
|
221
|
-
}());
|
205
|
+
flatten() {
|
206
|
+
this.flattenCallback?.();
|
207
|
+
}
|
208
|
+
}
|
222
209
|
exports.default = Display;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { Path, PathCommand, Point2, Rect2 } from '@js-draw/math';
|
2
|
+
import RenderingStyle from './RenderingStyle';
|
3
|
+
interface RenderablePathSpec {
|
4
|
+
startPoint: Point2;
|
5
|
+
commands: PathCommand[];
|
6
|
+
style: RenderingStyle;
|
7
|
+
path?: Path;
|
8
|
+
}
|
9
|
+
export declare const pathFromRenderable: (renderable: RenderablePathSpec) => Path;
|
10
|
+
export declare const pathToRenderable: (path: Path, style: RenderingStyle) => RenderablePathSpec;
|
11
|
+
/**
|
12
|
+
* @returns a Path that, when rendered, looks roughly equivalent to the given path.
|
13
|
+
*/
|
14
|
+
export declare const visualEquivalent: (renderablePath: RenderablePathSpec, visibleRect: Rect2) => RenderablePathSpec;
|
15
|
+
export default RenderablePathSpec;
|
@@ -0,0 +1,70 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.visualEquivalent = exports.pathToRenderable = exports.pathFromRenderable = void 0;
|
4
|
+
const math_1 = require("@js-draw/math");
|
5
|
+
const pathFromRenderable = (renderable) => {
|
6
|
+
if (renderable.path) {
|
7
|
+
return renderable.path;
|
8
|
+
}
|
9
|
+
return new math_1.Path(renderable.startPoint, renderable.commands);
|
10
|
+
};
|
11
|
+
exports.pathFromRenderable = pathFromRenderable;
|
12
|
+
const pathToRenderable = (path, style) => {
|
13
|
+
return {
|
14
|
+
startPoint: path.startPoint,
|
15
|
+
style,
|
16
|
+
commands: path.parts,
|
17
|
+
path,
|
18
|
+
};
|
19
|
+
};
|
20
|
+
exports.pathToRenderable = pathToRenderable;
|
21
|
+
/**
|
22
|
+
* @returns a Path that, when rendered, looks roughly equivalent to the given path.
|
23
|
+
*/
|
24
|
+
const visualEquivalent = (renderablePath, visibleRect) => {
|
25
|
+
const path = (0, exports.pathFromRenderable)(renderablePath);
|
26
|
+
const strokeWidth = renderablePath.style.stroke?.width ?? 0;
|
27
|
+
const onlyStroked = strokeWidth > 0 && renderablePath.style.fill.a === 0;
|
28
|
+
// Scale the expanded rect --- the visual equivalent is only close for huge strokes.
|
29
|
+
const expandedRect = visibleRect.grownBy(strokeWidth)
|
30
|
+
.transformedBoundingBox(math_1.Mat33.scaling2D(4, visibleRect.center));
|
31
|
+
// TODO: Handle simplifying very small paths.
|
32
|
+
if (expandedRect.containsRect(path.bbox.grownBy(strokeWidth))) {
|
33
|
+
return renderablePath;
|
34
|
+
}
|
35
|
+
const parts = [];
|
36
|
+
let startPoint = path.startPoint;
|
37
|
+
for (const part of path.parts) {
|
38
|
+
const partBBox = math_1.Path.computeBBoxForSegment(startPoint, part).grownBy(strokeWidth);
|
39
|
+
let endPoint;
|
40
|
+
if (part.kind === math_1.PathCommandType.LineTo || part.kind === math_1.PathCommandType.MoveTo) {
|
41
|
+
endPoint = part.point;
|
42
|
+
}
|
43
|
+
else {
|
44
|
+
endPoint = part.endPoint;
|
45
|
+
}
|
46
|
+
const intersectsVisible = partBBox.intersects(visibleRect);
|
47
|
+
if (intersectsVisible) {
|
48
|
+
// TODO: Can we trim parts of paths that intersect the visible rectangle?
|
49
|
+
parts.push(part);
|
50
|
+
}
|
51
|
+
else if (onlyStroked || part.kind === math_1.PathCommandType.MoveTo) {
|
52
|
+
// We're stroking (not filling) and the path doesn't intersect the bounding box.
|
53
|
+
// Don't draw it, but preserve the endpoints.
|
54
|
+
parts.push({
|
55
|
+
kind: math_1.PathCommandType.MoveTo,
|
56
|
+
point: endPoint,
|
57
|
+
});
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
// Otherwise, we may be filling. Try to roughly preserve the filled region.
|
61
|
+
parts.push({
|
62
|
+
kind: math_1.PathCommandType.LineTo,
|
63
|
+
point: endPoint,
|
64
|
+
});
|
65
|
+
}
|
66
|
+
startPoint = endPoint;
|
67
|
+
}
|
68
|
+
return (0, exports.pathToRenderable)(new math_1.Path(path.startPoint, parts), renderablePath.style);
|
69
|
+
};
|
70
|
+
exports.visualEquivalent = visualEquivalent;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import Color4 from '
|
1
|
+
import { Color4 } from '@js-draw/math';
|
2
2
|
interface RenderingStyle {
|
3
3
|
readonly fill: Color4;
|
4
4
|
readonly stroke?: {
|
@@ -12,7 +12,7 @@ export declare const cloneStyle: (style: RenderingStyle) => {
|
|
12
12
|
stroke: {
|
13
13
|
color: Color4;
|
14
14
|
width: number;
|
15
|
-
};
|
15
|
+
} | undefined;
|
16
16
|
};
|
17
17
|
export declare const stylesEqual: (a: RenderingStyle, b: RenderingStyle) => boolean;
|
18
18
|
export declare const styleToJSON: (style: RenderingStyle) => {
|
@@ -20,12 +20,12 @@ export declare const styleToJSON: (style: RenderingStyle) => {
|
|
20
20
|
stroke: {
|
21
21
|
color: string;
|
22
22
|
width: number;
|
23
|
-
};
|
23
|
+
} | undefined;
|
24
24
|
};
|
25
25
|
export declare const styleFromJSON: (json: Record<string, any>) => {
|
26
26
|
fill: Color4;
|
27
27
|
stroke: {
|
28
28
|
color: Color4;
|
29
29
|
width: any;
|
30
|
-
};
|
30
|
+
} | undefined;
|
31
31
|
};
|
@@ -1,56 +1,46 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
3
|
-
__assign = Object.assign || function(t) {
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
-
s = arguments[i];
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
-
t[p] = s[p];
|
8
|
-
}
|
9
|
-
return t;
|
10
|
-
};
|
11
|
-
return __assign.apply(this, arguments);
|
12
|
-
};
|
13
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
14
3
|
exports.styleFromJSON = exports.styleToJSON = exports.stylesEqual = exports.cloneStyle = void 0;
|
15
|
-
|
16
|
-
|
4
|
+
const math_1 = require("@js-draw/math");
|
5
|
+
const cloneStyle = (style) => {
|
17
6
|
return {
|
18
7
|
fill: style.fill,
|
19
|
-
stroke: style.stroke ?
|
8
|
+
stroke: style.stroke ? {
|
9
|
+
...style.stroke
|
10
|
+
} : undefined,
|
20
11
|
};
|
21
12
|
};
|
22
13
|
exports.cloneStyle = cloneStyle;
|
23
|
-
|
24
|
-
|
25
|
-
var result = a === b || (a.fill.eq(b.fill)
|
14
|
+
const stylesEqual = (a, b) => {
|
15
|
+
const result = a === b || (a.fill.eq(b.fill)
|
26
16
|
&& (a.stroke == undefined) === (b.stroke == undefined)
|
27
|
-
&& (
|
28
|
-
&&
|
17
|
+
&& (a.stroke?.color?.eq(b.stroke?.color) ?? true)
|
18
|
+
&& a.stroke?.width === b.stroke?.width);
|
29
19
|
// Map undefined/null -> false
|
30
|
-
return result
|
20
|
+
return result ?? false;
|
31
21
|
};
|
32
22
|
exports.stylesEqual = stylesEqual;
|
33
23
|
// Returns an object that can be converted to a JSON string with
|
34
24
|
// JSON.stringify.
|
35
|
-
|
36
|
-
|
25
|
+
const styleToJSON = (style) => {
|
26
|
+
const stroke = !style.stroke ? undefined : {
|
37
27
|
color: style.stroke.color.toHexString(),
|
38
28
|
width: style.stroke.width,
|
39
29
|
};
|
40
30
|
return {
|
41
31
|
fill: style.fill.toHexString(),
|
42
|
-
stroke
|
32
|
+
stroke,
|
43
33
|
};
|
44
34
|
};
|
45
35
|
exports.styleToJSON = styleToJSON;
|
46
|
-
|
47
|
-
|
48
|
-
color:
|
36
|
+
const styleFromJSON = (json) => {
|
37
|
+
const stroke = json.stroke ? {
|
38
|
+
color: math_1.Color4.fromHex(json.stroke.color),
|
49
39
|
width: json.stroke.width,
|
50
40
|
} : undefined;
|
51
41
|
return {
|
52
|
-
fill:
|
53
|
-
stroke
|
42
|
+
fill: math_1.Color4.fromHex(json.fill),
|
43
|
+
stroke,
|
54
44
|
};
|
55
45
|
};
|
56
46
|
exports.styleFromJSON = styleFromJSON;
|
@@ -14,17 +14,17 @@ export interface TextRenderingStyle {
|
|
14
14
|
export default TextRenderingStyle;
|
15
15
|
export declare const cloneTextStyle: (style: TextRenderingStyle) => {
|
16
16
|
renderingStyle: {
|
17
|
-
fill: import("
|
17
|
+
fill: import("@js-draw/math").Color4;
|
18
18
|
stroke: {
|
19
|
-
color: import("
|
19
|
+
color: import("@js-draw/math").Color4;
|
20
20
|
width: number;
|
21
|
-
};
|
21
|
+
} | undefined;
|
22
22
|
};
|
23
23
|
size: number;
|
24
24
|
fontFamily: string;
|
25
|
-
fontWeight?: string;
|
26
|
-
fontStyle?: string;
|
27
|
-
fontVariant?: string;
|
25
|
+
fontWeight?: string | undefined;
|
26
|
+
fontStyle?: string | undefined;
|
27
|
+
fontVariant?: string | undefined;
|
28
28
|
};
|
29
29
|
export declare const textStyleFromJSON: (json: any) => TextRenderingStyle;
|
30
30
|
export declare const textStyleToJSON: (style: TextRenderingStyle) => {
|
@@ -33,11 +33,11 @@ export declare const textStyleToJSON: (style: TextRenderingStyle) => {
|
|
33
33
|
stroke: {
|
34
34
|
color: string;
|
35
35
|
width: number;
|
36
|
-
};
|
36
|
+
} | undefined;
|
37
37
|
};
|
38
38
|
size: number;
|
39
39
|
fontFamily: string;
|
40
|
-
fontWeight?: string;
|
41
|
-
fontStyle?: string;
|
42
|
-
fontVariant?: string;
|
40
|
+
fontWeight?: string | undefined;
|
41
|
+
fontStyle?: string | undefined;
|
42
|
+
fontVariant?: string | undefined;
|
43
43
|
};
|
@@ -1,30 +1,22 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
3
|
-
__assign = Object.assign || function(t) {
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
-
s = arguments[i];
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
-
t[p] = s[p];
|
8
|
-
}
|
9
|
-
return t;
|
10
|
-
};
|
11
|
-
return __assign.apply(this, arguments);
|
12
|
-
};
|
13
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
14
3
|
exports.textStyleToJSON = exports.textStyleFromJSON = exports.cloneTextStyle = void 0;
|
15
|
-
|
16
|
-
|
17
|
-
return
|
4
|
+
const RenderingStyle_1 = require("./RenderingStyle");
|
5
|
+
const cloneTextStyle = (style) => {
|
6
|
+
return {
|
7
|
+
...style,
|
8
|
+
renderingStyle: (0, RenderingStyle_1.cloneStyle)(style.renderingStyle),
|
9
|
+
};
|
18
10
|
};
|
19
11
|
exports.cloneTextStyle = cloneTextStyle;
|
20
|
-
|
12
|
+
const textStyleFromJSON = (json) => {
|
21
13
|
if (typeof json === 'string') {
|
22
14
|
json = JSON.parse(json);
|
23
15
|
}
|
24
16
|
if (typeof (json.fontFamily) !== 'string') {
|
25
17
|
throw new Error('Serialized textStyle missing string fontFamily attribute!');
|
26
18
|
}
|
27
|
-
|
19
|
+
const style = {
|
28
20
|
renderingStyle: (0, RenderingStyle_1.styleFromJSON)(json.renderingStyle),
|
29
21
|
size: json.size,
|
30
22
|
fontWeight: json.fontWeight,
|
@@ -34,7 +26,10 @@ var textStyleFromJSON = function (json) {
|
|
34
26
|
return style;
|
35
27
|
};
|
36
28
|
exports.textStyleFromJSON = textStyleFromJSON;
|
37
|
-
|
38
|
-
return
|
29
|
+
const textStyleToJSON = (style) => {
|
30
|
+
return {
|
31
|
+
...style,
|
32
|
+
renderingStyle: (0, RenderingStyle_1.styleToJSON)(style.renderingStyle),
|
33
|
+
};
|
39
34
|
};
|
40
35
|
exports.textStyleToJSON = textStyleToJSON;
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import Mat33 from '
|
2
|
-
import Rect2 from '../../math/shapes/Rect2';
|
1
|
+
import { Mat33, Rect2 } from '@js-draw/math';
|
3
2
|
import AbstractRenderer from '../renderers/AbstractRenderer';
|
4
3
|
import { BeforeDeallocCallback, CacheState } from './types';
|
5
4
|
export default class CacheRecord {
|
@@ -1,10 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
3
|
+
const math_1 = require("@js-draw/math");
|
4
4
|
// Represents a cached renderer/canvas
|
5
5
|
// This is not a [CacheNode] -- it handles cached renderers and does not have sub-renderers.
|
6
|
-
|
7
|
-
|
6
|
+
class CacheRecord {
|
7
|
+
constructor(onBeforeDeallocCallback, cacheState) {
|
8
8
|
this.onBeforeDeallocCallback = onBeforeDeallocCallback;
|
9
9
|
this.cacheState = cacheState;
|
10
10
|
this.allocd = false;
|
@@ -14,24 +14,23 @@ var CacheRecord = /** @class */ (function () {
|
|
14
14
|
this.lastUsedCycle = -1;
|
15
15
|
this.allocd = true;
|
16
16
|
}
|
17
|
-
|
17
|
+
startRender() {
|
18
18
|
this.lastUsedCycle = this.cacheState.currentRenderingCycle;
|
19
19
|
if (!this.allocd) {
|
20
20
|
throw new Error('Only alloc\'d canvases can be rendered to');
|
21
21
|
}
|
22
22
|
return this.renderer;
|
23
|
-
}
|
24
|
-
|
25
|
-
|
26
|
-
(_a = this.onBeforeDeallocCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
23
|
+
}
|
24
|
+
dealloc() {
|
25
|
+
this.onBeforeDeallocCallback?.();
|
27
26
|
this.allocd = false;
|
28
27
|
this.onBeforeDeallocCallback = null;
|
29
28
|
this.lastUsedCycle = 0;
|
30
|
-
}
|
31
|
-
|
29
|
+
}
|
30
|
+
isAllocd() {
|
32
31
|
return this.allocd;
|
33
|
-
}
|
34
|
-
|
32
|
+
}
|
33
|
+
realloc(newDeallocCallback) {
|
35
34
|
if (this.allocd) {
|
36
35
|
this.dealloc();
|
37
36
|
}
|
@@ -39,21 +38,20 @@ var CacheRecord = /** @class */ (function () {
|
|
39
38
|
this.onBeforeDeallocCallback = newDeallocCallback;
|
40
39
|
this.lastUsedCycle = this.cacheState.currentRenderingCycle;
|
41
40
|
this.allocCount++;
|
42
|
-
}
|
43
|
-
|
41
|
+
}
|
42
|
+
getLastUsedCycle() {
|
44
43
|
return this.lastUsedCycle;
|
45
|
-
}
|
44
|
+
}
|
46
45
|
// Returns the transformation that maps [drawTo] to this' renderable region
|
47
46
|
// (i.e. a [cacheProps.blockResolution]-sized rectangle with top left at (0, 0))
|
48
|
-
|
49
|
-
|
47
|
+
getTransform(drawTo) {
|
48
|
+
const transform = math_1.Mat33.scaling2D(this.cacheState.props.blockResolution.x / drawTo.size.x).rightMul(math_1.Mat33.translation(drawTo.topLeft.times(-1)));
|
50
49
|
return transform;
|
51
|
-
}
|
52
|
-
|
50
|
+
}
|
51
|
+
setRenderingRegion(drawTo) {
|
53
52
|
this.renderer.setTransform(
|
54
53
|
// Invert to map objects instead of the viewport
|
55
54
|
this.getTransform(drawTo));
|
56
|
-
}
|
57
|
-
|
58
|
-
}());
|
55
|
+
}
|
56
|
+
}
|
59
57
|
exports.default = CacheRecord;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { BeforeDeallocCallback, CacheProps, CacheState } from './types';
|
2
2
|
import CacheRecord from './CacheRecord';
|
3
|
-
import Rect2 from '
|
3
|
+
import { Rect2 } from '@js-draw/math';
|
4
4
|
export declare class CacheRecordManager {
|
5
5
|
private cacheRecords;
|
6
6
|
private maxCanvases;
|