js-draw 1.2.1 → 1.3.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 +30 -30
- package/dist/Editor.css +70 -4
- package/dist/bundle.js +2 -2
- package/dist/bundledStyles.js +1 -1
- package/dist/cjs/Editor.d.ts +73 -40
- package/dist/cjs/Editor.js +90 -24
- package/dist/cjs/EditorImage.d.ts +58 -6
- package/dist/cjs/EditorImage.js +336 -60
- package/dist/cjs/SVGLoader.d.ts +10 -4
- package/dist/cjs/SVGLoader.js +30 -10
- package/dist/cjs/UndoRedoHistory.d.ts +2 -2
- package/dist/cjs/UndoRedoHistory.js +4 -2
- package/dist/cjs/Viewport.d.ts +2 -1
- package/dist/cjs/Viewport.js +12 -3
- package/dist/cjs/commands/Command.d.ts +1 -0
- package/dist/cjs/commands/Command.js +1 -0
- package/dist/cjs/commands/Erase.js +1 -1
- package/dist/cjs/commands/SerializableCommand.d.ts +1 -1
- package/dist/cjs/commands/SerializableCommand.js +16 -2
- package/dist/cjs/commands/localization.d.ts +2 -0
- package/dist/cjs/commands/localization.js +2 -0
- package/dist/cjs/components/AbstractComponent.d.ts +38 -0
- package/dist/cjs/components/AbstractComponent.js +31 -0
- package/dist/cjs/components/BackgroundComponent.d.ts +10 -1
- package/dist/cjs/components/BackgroundComponent.js +60 -6
- package/dist/cjs/components/SVGGlobalAttributesObject.d.ts +2 -1
- package/dist/cjs/components/SVGGlobalAttributesObject.js +30 -1
- package/dist/cjs/components/Stroke.d.ts +1 -0
- package/dist/cjs/components/Stroke.js +44 -0
- package/dist/cjs/components/UnknownSVGObject.d.ts +2 -1
- package/dist/cjs/components/UnknownSVGObject.js +30 -1
- package/dist/cjs/components/lib.d.ts +2 -2
- package/dist/cjs/components/lib.js +15 -2
- package/dist/cjs/lib.d.ts +2 -45
- package/dist/cjs/lib.js +2 -45
- package/dist/cjs/rendering/RenderablePathSpec.d.ts +1 -0
- package/dist/cjs/rendering/RenderablePathSpec.js +1 -0
- package/dist/cjs/rendering/RenderingStyle.d.ts +1 -0
- package/dist/cjs/rendering/lib.d.ts +1 -0
- package/dist/cjs/rendering/lib.js +5 -1
- package/dist/cjs/rendering/renderers/AbstractRenderer.js +1 -1
- package/dist/cjs/shortcuts/KeyboardShortcutManager.d.ts +2 -2
- package/dist/cjs/shortcuts/KeyboardShortcutManager.js +2 -2
- package/dist/cjs/toolbar/localization.d.ts +1 -0
- package/dist/cjs/toolbar/localization.js +1 -0
- package/dist/cjs/toolbar/widgets/BaseWidget.js +5 -0
- package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.js +54 -25
- package/dist/cjs/toolbar/widgets/components/makeGridSelector.js +8 -0
- package/dist/cjs/tools/PanZoom.js +13 -8
- package/dist/cjs/tools/ScrollbarTool.d.ts +18 -0
- package/dist/cjs/tools/ScrollbarTool.js +85 -0
- package/dist/cjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +1 -0
- package/dist/cjs/tools/ToolController.js +2 -0
- package/dist/cjs/types.d.ts +3 -1
- package/dist/cjs/util/adjustEditorThemeForContrast.js +1 -0
- package/dist/cjs/util/assertions.d.ts +4 -0
- package/dist/cjs/util/assertions.js +12 -1
- package/dist/cjs/version.js +1 -1
- package/dist/mjs/Editor.d.ts +73 -40
- package/dist/mjs/Editor.mjs +90 -24
- package/dist/mjs/EditorImage.d.ts +58 -6
- package/dist/mjs/EditorImage.mjs +313 -61
- package/dist/mjs/SVGLoader.d.ts +10 -4
- package/dist/mjs/SVGLoader.mjs +29 -9
- package/dist/mjs/UndoRedoHistory.d.ts +2 -2
- package/dist/mjs/UndoRedoHistory.mjs +4 -2
- package/dist/mjs/Viewport.d.ts +2 -1
- package/dist/mjs/Viewport.mjs +12 -3
- package/dist/mjs/commands/Command.d.ts +1 -0
- package/dist/mjs/commands/Command.mjs +1 -0
- package/dist/mjs/commands/Erase.mjs +1 -1
- package/dist/mjs/commands/SerializableCommand.d.ts +1 -1
- package/dist/mjs/commands/SerializableCommand.mjs +16 -2
- package/dist/mjs/commands/localization.d.ts +2 -0
- package/dist/mjs/commands/localization.mjs +2 -0
- package/dist/mjs/components/AbstractComponent.d.ts +38 -0
- package/dist/mjs/components/AbstractComponent.mjs +30 -0
- package/dist/mjs/components/BackgroundComponent.d.ts +10 -1
- package/dist/mjs/components/BackgroundComponent.mjs +37 -6
- package/dist/mjs/components/SVGGlobalAttributesObject.d.ts +2 -1
- package/dist/mjs/components/SVGGlobalAttributesObject.mjs +7 -1
- package/dist/mjs/components/Stroke.d.ts +1 -0
- package/dist/mjs/components/Stroke.mjs +44 -0
- package/dist/mjs/components/UnknownSVGObject.d.ts +2 -1
- package/dist/mjs/components/UnknownSVGObject.mjs +7 -1
- package/dist/mjs/components/lib.d.ts +2 -2
- package/dist/mjs/components/lib.mjs +2 -2
- package/dist/mjs/lib.d.ts +2 -45
- package/dist/mjs/lib.mjs +2 -45
- package/dist/mjs/rendering/RenderablePathSpec.d.ts +1 -0
- package/dist/mjs/rendering/RenderablePathSpec.mjs +1 -0
- package/dist/mjs/rendering/RenderingStyle.d.ts +1 -0
- package/dist/mjs/rendering/lib.d.ts +1 -0
- package/dist/mjs/rendering/lib.mjs +1 -0
- package/dist/mjs/rendering/renderers/AbstractRenderer.mjs +1 -1
- package/dist/mjs/shortcuts/KeyboardShortcutManager.d.ts +2 -2
- package/dist/mjs/shortcuts/KeyboardShortcutManager.mjs +2 -2
- package/dist/mjs/toolbar/localization.d.ts +1 -0
- package/dist/mjs/toolbar/localization.mjs +1 -0
- package/dist/mjs/toolbar/widgets/BaseWidget.mjs +5 -0
- package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.mjs +54 -25
- package/dist/mjs/toolbar/widgets/components/makeGridSelector.mjs +8 -0
- package/dist/mjs/tools/PanZoom.mjs +13 -8
- package/dist/mjs/tools/ScrollbarTool.d.ts +18 -0
- package/dist/mjs/tools/ScrollbarTool.mjs +79 -0
- package/dist/mjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +1 -0
- package/dist/mjs/tools/ToolController.mjs +2 -0
- package/dist/mjs/types.d.ts +3 -1
- package/dist/mjs/util/adjustEditorThemeForContrast.mjs +1 -0
- package/dist/mjs/util/assertions.d.ts +4 -0
- package/dist/mjs/util/assertions.mjs +10 -0
- package/dist/mjs/version.mjs +1 -1
- package/package.json +3 -4
- package/src/Editor.scss +8 -0
- package/src/dialogs/dialogs.scss +2 -1
- package/src/toolbar/AbstractToolbar.scss +3 -0
- package/src/toolbar/EdgeToolbar.scss +4 -1
- package/src/toolbar/widgets/DocumentPropertiesWidget.scss +12 -0
- package/src/toolbar/widgets/components/makeGridSelector.scss +6 -1
- package/src/tools/ScrollbarTool.scss +57 -0
- package/src/tools/{SoundUITool.css → SoundUITool.scss} +4 -0
- package/src/tools/tools.scss +2 -1
package/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# js-draw
|
2
2
|
|
3
|
-
[NPM package](https://www.npmjs.com/package/js-draw) | [GitHub](https://github.com/personalizedrefrigerator/js-draw) | [Documentation](https://personalizedrefrigerator.github.io/js-draw/typedoc/) | [Try it!](https://personalizedrefrigerator.github.io/js-draw/example/example.html)
|
3
|
+
[NPM package](https://www.npmjs.com/package/js-draw) | [GitHub](https://github.com/personalizedrefrigerator/js-draw) | [Documentation](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/js_draw.html) | [Try it!](https://personalizedrefrigerator.github.io/js-draw/example/example.html)
|
4
4
|
|
5
5
|

|
6
6
|
|
@@ -199,49 +199,49 @@ The editor's color theme is specified using CSS. Its default theme looks like th
|
|
199
199
|
/* Deafult colors for the editor -- light mode */
|
200
200
|
|
201
201
|
/* Used for unselected buttons and dialog text. */
|
202
|
-
|
203
|
-
|
202
|
+
--background-color-1: white;
|
203
|
+
--foreground-color-1: black;
|
204
204
|
|
205
|
-
|
206
|
-
|
207
|
-
|
205
|
+
/* Used for some menu/toolbar backgrounds. */
|
206
|
+
--background-color-2: #f5f5f5;
|
207
|
+
--foreground-color-2: #2c303a;
|
208
208
|
|
209
|
-
|
210
|
-
|
211
|
-
|
209
|
+
/* Used for other menu/toolbar backgrounds. */
|
210
|
+
--background-color-3: #e5e5e5;
|
211
|
+
--foreground-color-3: #1c202a;
|
212
212
|
|
213
|
-
|
214
|
-
|
215
|
-
|
213
|
+
/* Used for selected buttons. */
|
214
|
+
--selection-background-color: #cbdaf1;
|
215
|
+
--selection-foreground-color: #2c303a;
|
216
216
|
|
217
|
-
|
218
|
-
|
217
|
+
/* Used for dialog backgrounds */
|
218
|
+
--background-color-transparent: rgba(105, 100, 100, 0.5);
|
219
219
|
|
220
|
-
|
221
|
-
|
220
|
+
/* Used for shadows */
|
221
|
+
--shadow-color: rgba(0, 0, 0, 0.5);
|
222
222
|
|
223
|
-
|
224
|
-
|
223
|
+
/* Color used for some button/input foregrounds */
|
224
|
+
--primary-action-foreground-color: #15b;
|
225
225
|
}
|
226
226
|
|
227
227
|
@media (prefers-color-scheme: dark) {
|
228
228
|
.imageEditorContainer {
|
229
229
|
/* Default colors for the editor -- dark mode */
|
230
|
-
|
231
|
-
|
230
|
+
--background-color-1: #151515;
|
231
|
+
--foreground-color-1: white;
|
232
232
|
|
233
|
-
|
234
|
-
|
233
|
+
--background-color-2: #222;
|
234
|
+
--foreground-color-2: #efefef;
|
235
235
|
|
236
|
-
|
237
|
-
|
236
|
+
--background-color-3: #272627;
|
237
|
+
--foreground-color-3: #eee;
|
238
238
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
239
|
+
--selection-background-color: #607;
|
240
|
+
--selection-foreground-color: white;
|
241
|
+
--shadow-color: rgba(250, 250, 250, 0.5);
|
242
|
+
--background-color-transparent: rgba(50, 50, 50, 0.5);
|
243
243
|
|
244
|
-
|
244
|
+
--primary-action-foreground-color: #7ae;
|
245
245
|
}
|
246
246
|
}
|
247
247
|
```
|
@@ -261,7 +261,7 @@ body .imageEditorContainer {
|
|
261
261
|
--foreground-color-3: black;
|
262
262
|
|
263
263
|
--background-color-transparent: rgba(255, 240, 200, 0.5);
|
264
|
-
|
264
|
+
--shadow-color: rgba(0, 0, 0, 0.5);
|
265
265
|
|
266
266
|
--selection-background-color: yellow;
|
267
267
|
--selection-foreground-color: black;
|
package/dist/Editor.css
CHANGED
@@ -79,6 +79,15 @@
|
|
79
79
|
width: 100%;
|
80
80
|
text-align: end;
|
81
81
|
}
|
82
|
+
.toolbar-document-properties-widget > * {
|
83
|
+
--align-items-to-x: 120px;
|
84
|
+
}
|
85
|
+
.toolbar-document-properties-widget .js-draw-size-input-row.js-draw-size-input-row {
|
86
|
+
display: flex;
|
87
|
+
}
|
88
|
+
.toolbar-document-properties-widget .js-draw-size-input-row.js-draw-size-input-row.size-input-row--automatic-size {
|
89
|
+
display: none;
|
90
|
+
}
|
82
91
|
|
83
92
|
.toolbar-thicknessSliderContainer {
|
84
93
|
display: flex;
|
@@ -229,7 +238,7 @@
|
|
229
238
|
flex-shrink: 1;
|
230
239
|
margin: 2px;
|
231
240
|
}
|
232
|
-
.toolbar-grid-selector .choice-button
|
241
|
+
.toolbar-grid-selector .choice-button.focus-visible {
|
233
242
|
outline: 2px solid var(--foreground-color-1);
|
234
243
|
}
|
235
244
|
.toolbar-grid-selector .choice-button input {
|
@@ -246,6 +255,8 @@
|
|
246
255
|
align-items: center;
|
247
256
|
justify-content: center;
|
248
257
|
padding: 4px;
|
258
|
+
user-select: none;
|
259
|
+
-webkit-user-select: none;
|
249
260
|
}
|
250
261
|
.toolbar-grid-selector .choice-button .icon {
|
251
262
|
flex-grow: 1;
|
@@ -255,6 +266,7 @@
|
|
255
266
|
.toolbar-grid-selector .choice-button.checked {
|
256
267
|
background-color: var(--selection-background-color);
|
257
268
|
color: var(--selection-foreground-color);
|
269
|
+
--icon-color: var(--selection-foreground-color);
|
258
270
|
}
|
259
271
|
|
260
272
|
/* The *main* root toolbar element */
|
@@ -303,6 +315,8 @@
|
|
303
315
|
border-radius: 6px;
|
304
316
|
border: none;
|
305
317
|
box-shadow: 0px 0px 2px var(--shadow-color);
|
318
|
+
user-select: none;
|
319
|
+
-webkit-user-select: none;
|
306
320
|
transition: background-color 0.15s ease, box-shadow 0.25s ease, opacity 0.2s ease;
|
307
321
|
}
|
308
322
|
|
@@ -958,6 +972,7 @@
|
|
958
972
|
}
|
959
973
|
.toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList {
|
960
974
|
box-sizing: border-box;
|
975
|
+
--align-items-to-x: 105px;
|
961
976
|
}
|
962
977
|
.toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div {
|
963
978
|
display: flex;
|
@@ -967,13 +982,14 @@
|
|
967
982
|
}
|
968
983
|
.toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div > label {
|
969
984
|
padding-right: 35px;
|
970
|
-
min-width:
|
985
|
+
min-width: var(--align-items-to-x);
|
971
986
|
flex-shrink: 1;
|
972
987
|
box-sizing: border-box;
|
973
988
|
}
|
974
989
|
.toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div > input[type=checkbox] {
|
975
990
|
width: 20px;
|
976
991
|
height: 20px;
|
992
|
+
margin-left: 0;
|
977
993
|
}
|
978
994
|
.toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div > input:not([type=checkbox]) {
|
979
995
|
flex-grow: 1;
|
@@ -1008,6 +1024,52 @@
|
|
1008
1024
|
display: inline-block;
|
1009
1025
|
}
|
1010
1026
|
|
1027
|
+
.ScrollbarTool-overlay {
|
1028
|
+
width: 0;
|
1029
|
+
height: 0;
|
1030
|
+
overflow: visible;
|
1031
|
+
opacity: 0.2;
|
1032
|
+
pointer-events: none;
|
1033
|
+
--fade-out-animation: 1s ease 0s fade-out;
|
1034
|
+
--scrollbar-size: 3px;
|
1035
|
+
}
|
1036
|
+
@media (prefers-reduced-motion: reduce) {
|
1037
|
+
.ScrollbarTool-overlay {
|
1038
|
+
--fade-out-animation: none !important;
|
1039
|
+
}
|
1040
|
+
}
|
1041
|
+
@keyframes fade-out {
|
1042
|
+
from {
|
1043
|
+
opacity: 0.2;
|
1044
|
+
}
|
1045
|
+
to {
|
1046
|
+
opacity: 0;
|
1047
|
+
}
|
1048
|
+
}
|
1049
|
+
.ScrollbarTool-overlay:not(.just-updated) {
|
1050
|
+
animation: var(--fade-out-animation);
|
1051
|
+
opacity: 0;
|
1052
|
+
}
|
1053
|
+
.ScrollbarTool-overlay .vertical-scrollbar, .ScrollbarTool-overlay .horizontal-scrollbar {
|
1054
|
+
width: var(--scrollbar-size);
|
1055
|
+
height: var(--scrollbar-size);
|
1056
|
+
min-width: var(--scrollbar-size);
|
1057
|
+
min-height: var(--scrollbar-size);
|
1058
|
+
background-color: var(--foreground-color-1);
|
1059
|
+
border-radius: var(--scrollbar-size);
|
1060
|
+
position: absolute;
|
1061
|
+
}
|
1062
|
+
.ScrollbarTool-overlay .vertical-scrollbar.represents-no-scroll, .ScrollbarTool-overlay .horizontal-scrollbar.represents-no-scroll {
|
1063
|
+
animation: var(--fade-out-animation);
|
1064
|
+
opacity: 0;
|
1065
|
+
}
|
1066
|
+
.ScrollbarTool-overlay:not(.scrollbar-left) .vertical-scrollbar {
|
1067
|
+
margin-left: calc(var(--editor-current-display-width-px) - var(--scrollbar-size));
|
1068
|
+
}
|
1069
|
+
.ScrollbarTool-overlay:not(.scrollbar-top) .horizontal-scrollbar {
|
1070
|
+
margin-top: calc(var(--editor-current-display-height-px) - var(--scrollbar-size));
|
1071
|
+
}
|
1072
|
+
|
1011
1073
|
.selection-tool-selection-background {
|
1012
1074
|
background-color: var(--selection-background-color);
|
1013
1075
|
opacity: 0.5;
|
@@ -1058,6 +1120,10 @@
|
|
1058
1120
|
overflow: hidden;
|
1059
1121
|
}
|
1060
1122
|
|
1123
|
+
.js-draw-sound-ui-toggle button {
|
1124
|
+
margin-top: 1px;
|
1125
|
+
}
|
1126
|
+
|
1061
1127
|
.js-draw-sound-ui-toggle:focus-within, .js-draw-sound-ui-toggle.sound-ui-tool-enabled {
|
1062
1128
|
overflow: visible;
|
1063
1129
|
z-index: 5;
|
@@ -1097,7 +1163,7 @@
|
|
1097
1163
|
text-decoration: underline;
|
1098
1164
|
}
|
1099
1165
|
|
1100
|
-
.dialog-container {
|
1166
|
+
.dialog-container.dialog-container {
|
1101
1167
|
background-color: var(--background-color-transparent);
|
1102
1168
|
backdrop-filter: blur(5px);
|
1103
1169
|
-webkit-backdrop-filter: blur(5px);
|
@@ -1110,7 +1176,7 @@
|
|
1110
1176
|
align-items: center;
|
1111
1177
|
justify-content: center;
|
1112
1178
|
}
|
1113
|
-
.dialog-container dialog {
|
1179
|
+
.dialog-container.dialog-container dialog {
|
1114
1180
|
background-color: var(--background-color-1);
|
1115
1181
|
color: var(--foreground-color-1);
|
1116
1182
|
border: none;
|