js-draw 1.20.3 → 1.21.1
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +1 -1
- package/dist/Editor.css +134 -26
- package/dist/bundle.js +2 -2
- package/dist/bundledStyles.js +1 -1
- package/dist/cjs/Editor.d.ts +27 -6
- package/dist/cjs/Editor.js +30 -8
- package/dist/cjs/SVGLoader/SVGLoader.js +2 -2
- package/dist/cjs/Viewport.d.ts +2 -2
- package/dist/cjs/commands/Command.d.ts +5 -0
- package/dist/cjs/commands/Command.js +5 -0
- package/dist/cjs/commands/SerializableCommand.d.ts +7 -0
- package/dist/cjs/commands/SerializableCommand.js +9 -0
- package/dist/cjs/dialogs/makeAboutDialog.d.ts +1 -1
- package/dist/cjs/dialogs/makeAboutDialog.js +10 -25
- package/dist/cjs/dialogs/makeMessageDialog.d.ts +11 -0
- package/dist/cjs/dialogs/makeMessageDialog.js +56 -0
- package/dist/cjs/image/EditorImage.d.ts +15 -1
- package/dist/cjs/image/EditorImage.js +15 -5
- package/dist/cjs/inputEvents.d.ts +10 -2
- package/dist/cjs/inputEvents.js +1 -0
- package/dist/cjs/localizations/es.js +3 -0
- package/dist/cjs/rendering/Display.d.ts +1 -0
- package/dist/cjs/rendering/Display.js +1 -0
- package/dist/cjs/rendering/TextRenderingStyle.d.ts +7 -6
- package/dist/cjs/rendering/TextRenderingStyle.js +1 -0
- package/dist/cjs/rendering/renderers/CanvasRenderer.d.ts +12 -3
- package/dist/cjs/rendering/renderers/CanvasRenderer.js +15 -2
- package/dist/cjs/rendering/renderers/DummyRenderer.d.ts +1 -1
- package/dist/cjs/testing/firstElementAncestorOfNode.d.ts +1 -1
- package/dist/cjs/testing/firstElementAncestorOfNode.js +1 -1
- package/dist/cjs/testing/sendPenEvent.d.ts +2 -2
- package/dist/cjs/testing/sendTouchEvent.d.ts +2 -2
- package/dist/cjs/toolbar/AbstractToolbar.d.ts +6 -1
- package/dist/cjs/toolbar/AbstractToolbar.js +6 -1
- package/dist/cjs/toolbar/IconProvider.d.ts +1 -1
- package/dist/cjs/toolbar/IconProvider.js +6 -1
- package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +8 -0
- package/dist/cjs/toolbar/widgets/BaseWidget.js +8 -0
- package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
- package/dist/cjs/toolbar/widgets/HandToolWidget.js +1 -0
- package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
- package/dist/cjs/toolbar/widgets/PenToolWidget.js +5 -0
- package/dist/cjs/types.d.ts +5 -0
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/util/ClipboardHandler.d.ts +9 -1
- package/dist/cjs/util/ClipboardHandler.js +82 -24
- package/dist/cjs/version.js +1 -1
- package/dist/mjs/Editor.d.ts +27 -6
- package/dist/mjs/Editor.mjs +31 -9
- package/dist/mjs/SVGLoader/SVGLoader.mjs +2 -2
- package/dist/mjs/Viewport.d.ts +2 -2
- package/dist/mjs/commands/Command.d.ts +5 -0
- package/dist/mjs/commands/Command.mjs +5 -0
- package/dist/mjs/commands/SerializableCommand.d.ts +7 -0
- package/dist/mjs/commands/SerializableCommand.mjs +9 -0
- package/dist/mjs/dialogs/makeAboutDialog.d.ts +1 -1
- package/dist/mjs/dialogs/makeAboutDialog.mjs +7 -25
- package/dist/mjs/dialogs/makeMessageDialog.d.ts +11 -0
- package/dist/mjs/dialogs/makeMessageDialog.mjs +51 -0
- package/dist/mjs/image/EditorImage.d.ts +15 -1
- package/dist/mjs/image/EditorImage.mjs +15 -5
- package/dist/mjs/inputEvents.d.ts +10 -2
- package/dist/mjs/inputEvents.mjs +1 -0
- package/dist/mjs/localizations/es.mjs +3 -0
- package/dist/mjs/rendering/Display.d.ts +1 -0
- package/dist/mjs/rendering/Display.mjs +1 -0
- package/dist/mjs/rendering/TextRenderingStyle.d.ts +7 -6
- package/dist/mjs/rendering/TextRenderingStyle.mjs +1 -0
- package/dist/mjs/rendering/renderers/CanvasRenderer.d.ts +12 -3
- package/dist/mjs/rendering/renderers/CanvasRenderer.mjs +15 -2
- package/dist/mjs/rendering/renderers/DummyRenderer.d.ts +1 -1
- package/dist/mjs/testing/firstElementAncestorOfNode.d.ts +1 -1
- package/dist/mjs/testing/firstElementAncestorOfNode.mjs +1 -1
- package/dist/mjs/testing/sendPenEvent.d.ts +2 -2
- package/dist/mjs/testing/sendTouchEvent.d.ts +2 -2
- package/dist/mjs/toolbar/AbstractToolbar.d.ts +6 -1
- package/dist/mjs/toolbar/AbstractToolbar.mjs +6 -1
- package/dist/mjs/toolbar/IconProvider.d.ts +1 -1
- package/dist/mjs/toolbar/IconProvider.mjs +6 -1
- package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +8 -0
- package/dist/mjs/toolbar/widgets/BaseWidget.mjs +8 -0
- package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
- package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +1 -0
- package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +6 -0
- package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +5 -0
- package/dist/mjs/types.d.ts +5 -0
- package/dist/mjs/types.mjs +1 -0
- package/dist/mjs/util/ClipboardHandler.d.ts +9 -1
- package/dist/mjs/util/ClipboardHandler.mjs +82 -24
- package/dist/mjs/version.mjs +1 -1
- package/package.json +8 -9
- package/src/dialogs/dialogs.scss +9 -21
- package/src/dialogs/makeAboutDialog.scss +13 -33
- package/src/dialogs/makeMessageDialog.scss +46 -0
- package/dist/cjs/tools/BaseTool.d.ts +0 -60
- package/dist/cjs/tools/BaseTool.js +0 -174
- package/dist/cjs/tools/Eraser.d.ts +0 -56
- package/dist/cjs/tools/Eraser.js +0 -295
- package/dist/cjs/tools/Eraser.test.d.ts +0 -1
- package/dist/cjs/tools/FindTool.d.ts +0 -21
- package/dist/cjs/tools/FindTool.js +0 -137
- package/dist/cjs/tools/FindTool.test.d.ts +0 -1
- package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
- package/dist/cjs/tools/InputFilter/FunctionMapper.js +0 -21
- package/dist/cjs/tools/InputFilter/InputMapper.d.ts +0 -23
- package/dist/cjs/tools/InputFilter/InputMapper.js +0 -38
- package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +0 -15
- package/dist/cjs/tools/InputFilter/InputPipeline.js +0 -54
- package/dist/cjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
- package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
- package/dist/cjs/tools/InputFilter/InputStabilizer.js +0 -181
- package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
- package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +0 -84
- package/dist/cjs/tools/PanZoom.d.ts +0 -119
- package/dist/cjs/tools/PanZoom.js +0 -508
- package/dist/cjs/tools/PanZoom.test.d.ts +0 -1
- package/dist/cjs/tools/PasteHandler.d.ts +0 -23
- package/dist/cjs/tools/PasteHandler.js +0 -109
- package/dist/cjs/tools/Pen.d.ts +0 -53
- package/dist/cjs/tools/Pen.js +0 -318
- package/dist/cjs/tools/Pen.test.d.ts +0 -1
- package/dist/cjs/tools/PipetteTool.d.ts +0 -28
- package/dist/cjs/tools/PipetteTool.js +0 -69
- package/dist/cjs/tools/ScrollbarTool.d.ts +0 -18
- package/dist/cjs/tools/ScrollbarTool.js +0 -85
- package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
- package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +0 -32
- package/dist/cjs/tools/SelectionTool/Selection.d.ts +0 -71
- package/dist/cjs/tools/SelectionTool/Selection.js +0 -620
- package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
- package/dist/cjs/tools/SelectionTool/SelectionHandle.js +0 -141
- package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
- package/dist/cjs/tools/SelectionTool/SelectionTool.js +0 -494
- package/dist/cjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
- package/dist/cjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
- package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
- package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.js +0 -83
- package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +0 -42
- package/dist/cjs/tools/SelectionTool/TransformMode.js +0 -155
- package/dist/cjs/tools/SelectionTool/types.d.ts +0 -28
- package/dist/cjs/tools/SelectionTool/types.js +0 -14
- package/dist/cjs/tools/SoundUITool.d.ts +0 -26
- package/dist/cjs/tools/SoundUITool.js +0 -171
- package/dist/cjs/tools/TextTool.d.ts +0 -36
- package/dist/cjs/tools/TextTool.js +0 -285
- package/dist/cjs/tools/TextTool.test.d.ts +0 -1
- package/dist/cjs/tools/ToolController.d.ts +0 -73
- package/dist/cjs/tools/ToolController.js +0 -304
- package/dist/cjs/tools/ToolController.test.d.ts +0 -1
- package/dist/cjs/tools/ToolEnabledGroup.d.ts +0 -6
- package/dist/cjs/tools/ToolEnabledGroup.js +0 -13
- package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +0 -16
- package/dist/cjs/tools/ToolSwitcherShortcut.js +0 -40
- package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +0 -12
- package/dist/cjs/tools/ToolbarShortcutHandler.js +0 -34
- package/dist/cjs/tools/UndoRedoShortcut.d.ts +0 -8
- package/dist/cjs/tools/UndoRedoShortcut.js +0 -27
- package/dist/cjs/tools/UndoRedoShortcut.test.d.ts +0 -1
- package/dist/cjs/tools/keybindings.d.ts +0 -18
- package/dist/cjs/tools/keybindings.js +0 -49
- package/dist/cjs/tools/lib.d.ts +0 -14
- package/dist/cjs/tools/lib.js +0 -36
- package/dist/cjs/tools/localization.d.ts +0 -34
- package/dist/cjs/tools/localization.js +0 -36
- package/dist/cjs/tools/util/StationaryPenDetector.d.ts +0 -22
- package/dist/cjs/tools/util/StationaryPenDetector.js +0 -95
- package/dist/mjs/tools/BaseTool.d.ts +0 -60
- package/dist/mjs/tools/BaseTool.mjs +0 -172
- package/dist/mjs/tools/Eraser.d.ts +0 -56
- package/dist/mjs/tools/Eraser.mjs +0 -288
- package/dist/mjs/tools/Eraser.test.d.ts +0 -1
- package/dist/mjs/tools/FindTool.d.ts +0 -21
- package/dist/mjs/tools/FindTool.mjs +0 -131
- package/dist/mjs/tools/FindTool.test.d.ts +0 -1
- package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +0 -12
- package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +0 -15
- package/dist/mjs/tools/InputFilter/InputMapper.d.ts +0 -23
- package/dist/mjs/tools/InputFilter/InputMapper.mjs +0 -36
- package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +0 -15
- package/dist/mjs/tools/InputFilter/InputPipeline.mjs +0 -49
- package/dist/mjs/tools/InputFilter/InputPipeline.test.d.ts +0 -1
- package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +0 -29
- package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +0 -175
- package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +0 -21
- package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +0 -78
- package/dist/mjs/tools/PanZoom.d.ts +0 -119
- package/dist/mjs/tools/PanZoom.mjs +0 -501
- package/dist/mjs/tools/PanZoom.test.d.ts +0 -1
- package/dist/mjs/tools/PasteHandler.d.ts +0 -23
- package/dist/mjs/tools/PasteHandler.mjs +0 -103
- package/dist/mjs/tools/Pen.d.ts +0 -53
- package/dist/mjs/tools/Pen.mjs +0 -312
- package/dist/mjs/tools/Pen.test.d.ts +0 -1
- package/dist/mjs/tools/PipetteTool.d.ts +0 -28
- package/dist/mjs/tools/PipetteTool.mjs +0 -63
- package/dist/mjs/tools/ScrollbarTool.d.ts +0 -18
- package/dist/mjs/tools/ScrollbarTool.mjs +0 -79
- package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +0 -9
- package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +0 -26
- package/dist/mjs/tools/SelectionTool/Selection.d.ts +0 -71
- package/dist/mjs/tools/SelectionTool/Selection.mjs +0 -592
- package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +0 -62
- package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +0 -137
- package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +0 -40
- package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +0 -488
- package/dist/mjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +0 -1
- package/dist/mjs/tools/SelectionTool/SelectionTool.test.d.ts +0 -1
- package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +0 -23
- package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.mjs +0 -77
- package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +0 -42
- package/dist/mjs/tools/SelectionTool/TransformMode.mjs +0 -146
- package/dist/mjs/tools/SelectionTool/types.d.ts +0 -28
- package/dist/mjs/tools/SelectionTool/types.mjs +0 -11
- package/dist/mjs/tools/SoundUITool.d.ts +0 -26
- package/dist/mjs/tools/SoundUITool.mjs +0 -165
- package/dist/mjs/tools/TextTool.d.ts +0 -36
- package/dist/mjs/tools/TextTool.mjs +0 -279
- package/dist/mjs/tools/TextTool.test.d.ts +0 -1
- package/dist/mjs/tools/ToolController.d.ts +0 -73
- package/dist/mjs/tools/ToolController.mjs +0 -275
- package/dist/mjs/tools/ToolController.test.d.ts +0 -1
- package/dist/mjs/tools/ToolEnabledGroup.d.ts +0 -6
- package/dist/mjs/tools/ToolEnabledGroup.mjs +0 -10
- package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +0 -16
- package/dist/mjs/tools/ToolSwitcherShortcut.mjs +0 -34
- package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +0 -12
- package/dist/mjs/tools/ToolbarShortcutHandler.mjs +0 -28
- package/dist/mjs/tools/UndoRedoShortcut.d.ts +0 -8
- package/dist/mjs/tools/UndoRedoShortcut.mjs +0 -21
- package/dist/mjs/tools/UndoRedoShortcut.test.d.ts +0 -1
- package/dist/mjs/tools/keybindings.d.ts +0 -18
- package/dist/mjs/tools/keybindings.mjs +0 -43
- package/dist/mjs/tools/lib.d.ts +0 -14
- package/dist/mjs/tools/lib.mjs +0 -14
- package/dist/mjs/tools/localization.d.ts +0 -34
- package/dist/mjs/tools/localization.mjs +0 -33
- package/dist/mjs/tools/util/StationaryPenDetector.d.ts +0 -22
- package/dist/mjs/tools/util/StationaryPenDetector.mjs +0 -92
- package/src/tools/FindTool.css +0 -7
- package/src/tools/ScrollbarTool.scss +0 -57
- package/src/tools/SelectionTool/SelectionTool.scss +0 -137
- package/src/tools/SoundUITool.scss +0 -22
- package/src/tools/tools.scss +0 -5
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "js-draw",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.21.1",
|
4
4
|
"description": "Draw pictures using a pen, touchscreen, or mouse! JS-draw is a drawing library for JavaScript and TypeScript. ",
|
5
5
|
"types": "./dist/mjs/lib.d.ts",
|
6
6
|
"main": "./dist/cjs/lib.js",
|
@@ -54,22 +54,21 @@
|
|
54
54
|
},
|
55
55
|
"author": "Henry Heino",
|
56
56
|
"license": "MIT",
|
57
|
-
"private": false,
|
58
57
|
"scripts": {
|
59
|
-
"dist-test": "cd dist-test/test_imports &&
|
60
|
-
"dist": "
|
61
|
-
"build": "
|
58
|
+
"dist-test": "cd dist-test/test_imports && yarn install && yarn run test",
|
59
|
+
"dist": "yarn run build && yarn run dist-test",
|
60
|
+
"build": "build-tool build",
|
62
61
|
"watch": "build-tool watch",
|
63
62
|
"build-translation-templates": "build-tool build-translation-templates",
|
64
|
-
"prepack": "
|
63
|
+
"prepack": "yarn run dist && cd ../../ && yarn run test && cd packages/js-draw && ts-node tools/copyREADME.ts copy",
|
65
64
|
"postpack": "ts-node tools/copyREADME.ts revert"
|
66
65
|
},
|
67
66
|
"dependencies": {
|
68
|
-
"@js-draw/math": "^1.
|
67
|
+
"@js-draw/math": "^1.21.1",
|
69
68
|
"@melloware/coloris": "0.22.0"
|
70
69
|
},
|
71
70
|
"devDependencies": {
|
72
|
-
"@js-draw/build-tool": "^1.
|
71
|
+
"@js-draw/build-tool": "^1.21.1",
|
73
72
|
"@types/jest": "29.5.5",
|
74
73
|
"@types/jsdom": "21.1.3"
|
75
74
|
},
|
@@ -87,5 +86,5 @@
|
|
87
86
|
"freehand",
|
88
87
|
"svg"
|
89
88
|
],
|
90
|
-
"gitHead": "
|
89
|
+
"gitHead": "a46f0e1c3586e4b3019152eea87cd2784b00282f"
|
91
90
|
}
|
package/src/dialogs/dialogs.scss
CHANGED
@@ -1,27 +1,9 @@
|
|
1
1
|
|
2
2
|
@use './makeAboutDialog.scss';
|
3
|
+
@use './makeMessageDialog.scss';
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
background-color: var( --background-color-transparent);
|
7
|
-
|
8
|
-
backdrop-filter: blur(5px);
|
9
|
-
-webkit-backdrop-filter: blur(5px);
|
10
|
-
|
11
|
-
// Show above other items
|
12
|
-
position: absolute;
|
13
|
-
z-index: 3;
|
14
|
-
|
15
|
-
// Fill the editor
|
16
|
-
width: var(--editor-current-width-px);
|
17
|
-
height: var(--editor-current-height-px);
|
18
|
-
|
19
|
-
display: flex;
|
20
|
-
flex-direction: column-reverse;
|
21
|
-
align-items: center;
|
22
|
-
justify-content: center;
|
23
|
-
|
24
|
-
dialog {
|
5
|
+
.dialog-container {
|
6
|
+
> dialog {
|
25
7
|
background-color: var(--background-color-1);
|
26
8
|
color: var(--foreground-color-1);
|
27
9
|
border: none;
|
@@ -33,5 +15,11 @@
|
|
33
15
|
max-height: 90vh;
|
34
16
|
width: min(100%, 500px);
|
35
17
|
box-sizing: border-box;
|
18
|
+
|
19
|
+
&::backdrop {
|
20
|
+
backdrop-filter: blur(5px);
|
21
|
+
-webkit-backdrop-filter: blur(5px);
|
22
|
+
background-color: var( --background-color-transparent);
|
23
|
+
}
|
36
24
|
}
|
37
25
|
}
|
@@ -1,41 +1,21 @@
|
|
1
1
|
|
2
|
-
.about-dialog-
|
3
|
-
|
4
|
-
|
2
|
+
.about-dialog-content > .scroll {
|
3
|
+
white-space: pre-wrap;
|
4
|
+
font-family: monospace;
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
display: block;
|
9
|
-
margin-left: auto;
|
10
|
-
margin-right: auto;
|
6
|
+
& > details > summary {
|
7
|
+
cursor: pointer;
|
11
8
|
}
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
flex-shrink: 1;
|
16
|
-
overflow-y: auto;
|
10
|
+
& > h2, & > details > summary {
|
11
|
+
margin-top: 15px;
|
17
12
|
|
18
|
-
|
19
|
-
|
13
|
+
font-size: 1.2em;
|
14
|
+
font-weight: bold;
|
20
15
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
font-family: monospace;
|
25
|
-
|
26
|
-
& > h2, & > details > summary {
|
27
|
-
cursor: pointer;
|
28
|
-
margin-top: 15px;
|
29
|
-
|
30
|
-
font-size: 1.2em;
|
31
|
-
font-weight: bold;
|
32
|
-
|
33
|
-
a {
|
34
|
-
color: var(--foreground-color-1);
|
35
|
-
text-decoration: underline;
|
36
|
-
}
|
16
|
+
a {
|
17
|
+
color: var(--foreground-color-1);
|
18
|
+
text-decoration: underline;
|
37
19
|
}
|
38
20
|
}
|
39
|
-
|
40
|
-
|
41
|
-
}
|
21
|
+
}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
@keyframes fade-in {
|
3
|
+
from { opacity: 0; }
|
4
|
+
to { opacity: 1; }
|
5
|
+
}
|
6
|
+
|
7
|
+
.message-dialog-container dialog {
|
8
|
+
display: flex;
|
9
|
+
|
10
|
+
&.-closing {
|
11
|
+
opacity: 0;
|
12
|
+
|
13
|
+
&::backdrop {
|
14
|
+
opacity: 0;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
&, &::backdrop {
|
19
|
+
transition: opacity 0.2s ease;
|
20
|
+
animation: fade-in 0.2s ease;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
.message-dialog-content {
|
25
|
+
display: flex;
|
26
|
+
flex-direction: column;
|
27
|
+
flex-grow: 1;
|
28
|
+
|
29
|
+
> .close {
|
30
|
+
// Center the close button
|
31
|
+
display: block;
|
32
|
+
margin-left: auto;
|
33
|
+
margin-right: auto;
|
34
|
+
}
|
35
|
+
|
36
|
+
> .scroll {
|
37
|
+
flex-grow: 1;
|
38
|
+
flex-shrink: 1;
|
39
|
+
overflow-y: auto;
|
40
|
+
|
41
|
+
margin-left: 20px;
|
42
|
+
margin-right: 20px;
|
43
|
+
|
44
|
+
padding-bottom: 20px;
|
45
|
+
}
|
46
|
+
}
|
@@ -1,60 +0,0 @@
|
|
1
|
-
import { EditorNotifier } from '../types';
|
2
|
-
import { WheelEvt, PointerEvt, KeyPressEvent, KeyUpEvent, PasteEvent, CopyEvent, InputEvt, GestureCancelEvt, PointerDownEvt, PointerMoveEvt, PointerUpEvt } from '../inputEvents';
|
3
|
-
import ToolEnabledGroup from './ToolEnabledGroup';
|
4
|
-
import InputMapper, { InputEventListener } from './InputFilter/InputMapper';
|
5
|
-
import { ReactiveValue } from '../util/ReactiveValue';
|
6
|
-
export default abstract class BaseTool implements InputEventListener {
|
7
|
-
#private;
|
8
|
-
private notifier;
|
9
|
-
readonly description: string;
|
10
|
-
protected constructor(notifier: EditorNotifier, description: string);
|
11
|
-
/** Override this to allow this tool to be enabled in a read-only editor */
|
12
|
-
canReceiveInputInReadOnlyEditor(): boolean;
|
13
|
-
setInputMapper(mapper: InputMapper | null): void;
|
14
|
-
getInputMapper(): InputMapper | null;
|
15
|
-
private dispatchEventToCallback;
|
16
|
-
onEvent(event: InputEvt): boolean;
|
17
|
-
/**
|
18
|
-
* Returns true iff the tool handled the event and thus should receive additional
|
19
|
-
* events.
|
20
|
-
*/
|
21
|
-
onPointerDown(_event: PointerDownEvt): boolean;
|
22
|
-
onPointerMove(_event: PointerMoveEvt): void;
|
23
|
-
/**
|
24
|
-
* Returns true iff there are additional pointers down and the tool should
|
25
|
-
* remain active to handle the additional events.
|
26
|
-
*
|
27
|
-
* For most purposes, this should return `false` or nothing.
|
28
|
-
*/
|
29
|
-
onPointerUp(_event: PointerUpEvt): boolean | void;
|
30
|
-
onGestureCancel(_event: GestureCancelEvt): void;
|
31
|
-
onWheel(_event: WheelEvt): boolean;
|
32
|
-
onCopy(_event: CopyEvent): boolean;
|
33
|
-
onPaste(_event: PasteEvent): boolean;
|
34
|
-
onKeyPress(_event: KeyPressEvent): boolean;
|
35
|
-
onKeyUp(_event: KeyUpEvent): boolean;
|
36
|
-
/**
|
37
|
-
* Return true if, while this tool is active, `_event` can be delivered to
|
38
|
-
* another tool that is higher priority than this.
|
39
|
-
* @internal May be renamed
|
40
|
-
*/
|
41
|
-
eventCanBeDeliveredToNonActiveTool(_event: PointerEvt): boolean;
|
42
|
-
setEnabled(enabled: boolean): void;
|
43
|
-
isEnabled(): boolean;
|
44
|
-
/**
|
45
|
-
* Returns a {@link ReactiveValue} that updates based on whether this tool is
|
46
|
-
* enabled.
|
47
|
-
*
|
48
|
-
* @example
|
49
|
-
* ```ts
|
50
|
-
* const tool = new SomeTool();
|
51
|
-
*
|
52
|
-
* // Watch for changes in enabled status
|
53
|
-
* tool.enabledValue().onUpdate(enabled => doSomething(enabled));
|
54
|
-
* ```
|
55
|
-
*/
|
56
|
-
enabledValue(): ReactiveValue<boolean>;
|
57
|
-
setToolGroup(group: ToolEnabledGroup): void;
|
58
|
-
getToolGroup(): ToolEnabledGroup | null;
|
59
|
-
onDestroy(): void;
|
60
|
-
}
|
@@ -1,174 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
7
|
-
};
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
12
|
-
};
|
13
|
-
var _BaseTool_enabled, _BaseTool_group, _BaseTool_inputMapper, _BaseTool_readOnlyEditorChangeListener;
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
const types_1 = require("../types");
|
16
|
-
const inputEvents_1 = require("../inputEvents");
|
17
|
-
const ReactiveValue_1 = require("../util/ReactiveValue");
|
18
|
-
class BaseTool {
|
19
|
-
constructor(notifier, description) {
|
20
|
-
this.notifier = notifier;
|
21
|
-
this.description = description;
|
22
|
-
_BaseTool_enabled.set(this, void 0);
|
23
|
-
_BaseTool_group.set(this, null);
|
24
|
-
_BaseTool_inputMapper.set(this, null);
|
25
|
-
_BaseTool_readOnlyEditorChangeListener.set(this, null);
|
26
|
-
__classPrivateFieldSet(this, _BaseTool_enabled, ReactiveValue_1.ReactiveValue.fromInitialValue(true), "f");
|
27
|
-
__classPrivateFieldGet(this, _BaseTool_enabled, "f").onUpdate(enabled => {
|
28
|
-
// Ensure that at most one tool in the group is enabled.
|
29
|
-
if (enabled) {
|
30
|
-
__classPrivateFieldGet(this, _BaseTool_group, "f")?.notifyEnabled(this);
|
31
|
-
this.notifier.dispatch(types_1.EditorEventType.ToolEnabled, {
|
32
|
-
kind: types_1.EditorEventType.ToolEnabled,
|
33
|
-
tool: this,
|
34
|
-
});
|
35
|
-
}
|
36
|
-
else {
|
37
|
-
this.notifier.dispatch(types_1.EditorEventType.ToolDisabled, {
|
38
|
-
kind: types_1.EditorEventType.ToolDisabled,
|
39
|
-
tool: this,
|
40
|
-
});
|
41
|
-
}
|
42
|
-
});
|
43
|
-
}
|
44
|
-
/** Override this to allow this tool to be enabled in a read-only editor */
|
45
|
-
canReceiveInputInReadOnlyEditor() {
|
46
|
-
return false;
|
47
|
-
}
|
48
|
-
setInputMapper(mapper) {
|
49
|
-
__classPrivateFieldSet(this, _BaseTool_inputMapper, mapper, "f");
|
50
|
-
if (mapper) {
|
51
|
-
mapper.setEmitListener(event => this.dispatchEventToCallback(event));
|
52
|
-
}
|
53
|
-
}
|
54
|
-
getInputMapper() {
|
55
|
-
return __classPrivateFieldGet(this, _BaseTool_inputMapper, "f");
|
56
|
-
}
|
57
|
-
dispatchEventToCallback(event) {
|
58
|
-
let exhaustivenessCheck;
|
59
|
-
switch (event.kind) {
|
60
|
-
case inputEvents_1.InputEvtType.PointerDownEvt:
|
61
|
-
return this.onPointerDown(event);
|
62
|
-
case inputEvents_1.InputEvtType.PointerMoveEvt:
|
63
|
-
this.onPointerMove(event);
|
64
|
-
break;
|
65
|
-
case inputEvents_1.InputEvtType.PointerUpEvt:
|
66
|
-
return this.onPointerUp(event) ?? false;
|
67
|
-
case inputEvents_1.InputEvtType.GestureCancelEvt:
|
68
|
-
this.onGestureCancel(event);
|
69
|
-
break;
|
70
|
-
case inputEvents_1.InputEvtType.WheelEvt:
|
71
|
-
return this.onWheel(event);
|
72
|
-
case inputEvents_1.InputEvtType.KeyPressEvent:
|
73
|
-
return this.onKeyPress(event);
|
74
|
-
case inputEvents_1.InputEvtType.KeyUpEvent:
|
75
|
-
return this.onKeyUp(event);
|
76
|
-
case inputEvents_1.InputEvtType.CopyEvent:
|
77
|
-
return this.onCopy(event);
|
78
|
-
case inputEvents_1.InputEvtType.PasteEvent:
|
79
|
-
return this.onPaste(event);
|
80
|
-
default:
|
81
|
-
exhaustivenessCheck = event;
|
82
|
-
return exhaustivenessCheck;
|
83
|
-
}
|
84
|
-
return true;
|
85
|
-
}
|
86
|
-
// @internal
|
87
|
-
onEvent(event) {
|
88
|
-
if (__classPrivateFieldGet(this, _BaseTool_inputMapper, "f")) {
|
89
|
-
return __classPrivateFieldGet(this, _BaseTool_inputMapper, "f").onEvent(event);
|
90
|
-
}
|
91
|
-
return this.dispatchEventToCallback(event);
|
92
|
-
}
|
93
|
-
/**
|
94
|
-
* Returns true iff the tool handled the event and thus should receive additional
|
95
|
-
* events.
|
96
|
-
*/
|
97
|
-
onPointerDown(_event) { return false; }
|
98
|
-
onPointerMove(_event) { }
|
99
|
-
/**
|
100
|
-
* Returns true iff there are additional pointers down and the tool should
|
101
|
-
* remain active to handle the additional events.
|
102
|
-
*
|
103
|
-
* For most purposes, this should return `false` or nothing.
|
104
|
-
*/
|
105
|
-
onPointerUp(_event) { }
|
106
|
-
onGestureCancel(_event) { }
|
107
|
-
onWheel(_event) {
|
108
|
-
return false;
|
109
|
-
}
|
110
|
-
onCopy(_event) {
|
111
|
-
return false;
|
112
|
-
}
|
113
|
-
onPaste(_event) {
|
114
|
-
return false;
|
115
|
-
}
|
116
|
-
onKeyPress(_event) {
|
117
|
-
return false;
|
118
|
-
}
|
119
|
-
onKeyUp(_event) {
|
120
|
-
return false;
|
121
|
-
}
|
122
|
-
/**
|
123
|
-
* Return true if, while this tool is active, `_event` can be delivered to
|
124
|
-
* another tool that is higher priority than this.
|
125
|
-
* @internal May be renamed
|
126
|
-
*/
|
127
|
-
eventCanBeDeliveredToNonActiveTool(_event) {
|
128
|
-
return true;
|
129
|
-
}
|
130
|
-
setEnabled(enabled) {
|
131
|
-
__classPrivateFieldGet(this, _BaseTool_enabled, "f").set(enabled);
|
132
|
-
}
|
133
|
-
isEnabled() {
|
134
|
-
return __classPrivateFieldGet(this, _BaseTool_enabled, "f").get();
|
135
|
-
}
|
136
|
-
/**
|
137
|
-
* Returns a {@link ReactiveValue} that updates based on whether this tool is
|
138
|
-
* enabled.
|
139
|
-
*
|
140
|
-
* @example
|
141
|
-
* ```ts
|
142
|
-
* const tool = new SomeTool();
|
143
|
-
*
|
144
|
-
* // Watch for changes in enabled status
|
145
|
-
* tool.enabledValue().onUpdate(enabled => doSomething(enabled));
|
146
|
-
* ```
|
147
|
-
*/
|
148
|
-
enabledValue() {
|
149
|
-
return __classPrivateFieldGet(this, _BaseTool_enabled, "f");
|
150
|
-
}
|
151
|
-
// Connect this tool to a set of other tools, ensuring that at most one
|
152
|
-
// of the tools in the group is enabled.
|
153
|
-
setToolGroup(group) {
|
154
|
-
if (this.isEnabled()) {
|
155
|
-
group.notifyEnabled(this);
|
156
|
-
}
|
157
|
-
__classPrivateFieldSet(this, _BaseTool_group, group, "f");
|
158
|
-
}
|
159
|
-
getToolGroup() {
|
160
|
-
if (__classPrivateFieldGet(this, _BaseTool_group, "f")) {
|
161
|
-
return __classPrivateFieldGet(this, _BaseTool_group, "f");
|
162
|
-
}
|
163
|
-
return null;
|
164
|
-
}
|
165
|
-
// Called when the tool is removed/when the editor is destroyed.
|
166
|
-
// Subclasses that override this method **must call super.onDestroy()**.
|
167
|
-
onDestroy() {
|
168
|
-
__classPrivateFieldGet(this, _BaseTool_readOnlyEditorChangeListener, "f")?.remove();
|
169
|
-
__classPrivateFieldSet(this, _BaseTool_readOnlyEditorChangeListener, null, "f");
|
170
|
-
__classPrivateFieldSet(this, _BaseTool_group, null, "f");
|
171
|
-
}
|
172
|
-
}
|
173
|
-
_BaseTool_enabled = new WeakMap(), _BaseTool_group = new WeakMap(), _BaseTool_inputMapper = new WeakMap(), _BaseTool_readOnlyEditorChangeListener = new WeakMap();
|
174
|
-
exports.default = BaseTool;
|
@@ -1,56 +0,0 @@
|
|
1
|
-
import { GestureCancelEvt, KeyPressEvent, PointerEvt } from '../inputEvents';
|
2
|
-
import BaseTool from './BaseTool';
|
3
|
-
import Editor from '../Editor';
|
4
|
-
import { MutableReactiveValue } from '../util/ReactiveValue';
|
5
|
-
export declare enum EraserMode {
|
6
|
-
PartialStroke = "partial-stroke",
|
7
|
-
FullStroke = "full-stroke"
|
8
|
-
}
|
9
|
-
export interface InitialEraserOptions {
|
10
|
-
thickness?: number;
|
11
|
-
mode?: EraserMode;
|
12
|
-
}
|
13
|
-
export default class Eraser extends BaseTool {
|
14
|
-
private editor;
|
15
|
-
private lastPoint;
|
16
|
-
private isFirstEraseEvt;
|
17
|
-
private thickness;
|
18
|
-
private thicknessValue;
|
19
|
-
private modeValue;
|
20
|
-
private toRemove;
|
21
|
-
private toAdd;
|
22
|
-
private eraseCommands;
|
23
|
-
private addCommands;
|
24
|
-
constructor(editor: Editor, description: string, options?: InitialEraserOptions);
|
25
|
-
/**
|
26
|
-
* @returns a tool that briefly enables the eraser when a physical eraser is used.
|
27
|
-
* This tool should be added to the tool list after the primary tools.
|
28
|
-
*/
|
29
|
-
makeEraserSwitcherTool(): BaseTool;
|
30
|
-
private clearPreview;
|
31
|
-
private getSizeOnCanvas;
|
32
|
-
private drawPreviewAt;
|
33
|
-
/**
|
34
|
-
* @returns the eraser rectangle in canvas coordinates.
|
35
|
-
*
|
36
|
-
* For now, all erasers are rectangles or points.
|
37
|
-
*/
|
38
|
-
private getEraserRect;
|
39
|
-
/** Erases in a line from the last point to the current. */
|
40
|
-
private eraseTo;
|
41
|
-
onPointerDown(event: PointerEvt): boolean;
|
42
|
-
onPointerMove(event: PointerEvt): void;
|
43
|
-
onPointerUp(event: PointerEvt): void;
|
44
|
-
onGestureCancel(_event: GestureCancelEvt): void;
|
45
|
-
onKeyPress(event: KeyPressEvent): boolean;
|
46
|
-
/** Returns the side-length of the tip of this eraser. */
|
47
|
-
getThickness(): number;
|
48
|
-
/** Sets the side-length of this' tip. */
|
49
|
-
setThickness(thickness: number): void;
|
50
|
-
/**
|
51
|
-
* Returns a {@link MutableReactiveValue} that can be used to watch
|
52
|
-
* this tool's thickness.
|
53
|
-
*/
|
54
|
-
getThicknessValue(): MutableReactiveValue<number>;
|
55
|
-
getModeValue(): MutableReactiveValue<EraserMode>;
|
56
|
-
}
|