js-draw 1.2.2 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +29 -29
  2. package/dist/Editor.css +65 -4
  3. package/dist/bundle.js +2 -2
  4. package/dist/bundledStyles.js +1 -1
  5. package/dist/cjs/Editor.d.ts +73 -40
  6. package/dist/cjs/Editor.js +90 -24
  7. package/dist/cjs/EditorImage.d.ts +58 -6
  8. package/dist/cjs/EditorImage.js +336 -60
  9. package/dist/cjs/SVGLoader.d.ts +10 -4
  10. package/dist/cjs/SVGLoader.js +67 -32
  11. package/dist/cjs/UndoRedoHistory.d.ts +2 -2
  12. package/dist/cjs/UndoRedoHistory.js +4 -2
  13. package/dist/cjs/Viewport.d.ts +2 -1
  14. package/dist/cjs/Viewport.js +12 -3
  15. package/dist/cjs/commands/Command.d.ts +1 -0
  16. package/dist/cjs/commands/Command.js +1 -0
  17. package/dist/cjs/commands/Erase.js +1 -1
  18. package/dist/cjs/commands/SerializableCommand.d.ts +1 -1
  19. package/dist/cjs/commands/SerializableCommand.js +16 -2
  20. package/dist/cjs/commands/localization.d.ts +2 -0
  21. package/dist/cjs/commands/localization.js +2 -0
  22. package/dist/cjs/components/AbstractComponent.d.ts +38 -0
  23. package/dist/cjs/components/AbstractComponent.js +31 -0
  24. package/dist/cjs/components/BackgroundComponent.d.ts +10 -1
  25. package/dist/cjs/components/BackgroundComponent.js +61 -6
  26. package/dist/cjs/components/SVGGlobalAttributesObject.d.ts +2 -1
  27. package/dist/cjs/components/SVGGlobalAttributesObject.js +30 -1
  28. package/dist/cjs/components/Stroke.d.ts +1 -0
  29. package/dist/cjs/components/Stroke.js +44 -0
  30. package/dist/cjs/components/UnknownSVGObject.d.ts +2 -1
  31. package/dist/cjs/components/UnknownSVGObject.js +30 -1
  32. package/dist/cjs/lib.d.ts +2 -45
  33. package/dist/cjs/lib.js +2 -45
  34. package/dist/cjs/rendering/RenderingStyle.d.ts +1 -0
  35. package/dist/cjs/rendering/renderers/AbstractRenderer.js +1 -1
  36. package/dist/cjs/rendering/renderers/SVGRenderer.js +8 -19
  37. package/dist/cjs/rendering/renderers/SVGRenderer.test.d.ts +1 -0
  38. package/dist/cjs/shortcuts/KeyboardShortcutManager.d.ts +2 -2
  39. package/dist/cjs/shortcuts/KeyboardShortcutManager.js +2 -2
  40. package/dist/cjs/toolbar/localization.d.ts +1 -0
  41. package/dist/cjs/toolbar/localization.js +1 -0
  42. package/dist/cjs/toolbar/widgets/BaseWidget.js +5 -0
  43. package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.js +54 -25
  44. package/dist/cjs/toolbar/widgets/components/makeGridSelector.js +8 -0
  45. package/dist/cjs/tools/PanZoom.js +13 -8
  46. package/dist/cjs/tools/ScrollbarTool.d.ts +18 -0
  47. package/dist/cjs/tools/ScrollbarTool.js +85 -0
  48. package/dist/cjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +1 -0
  49. package/dist/cjs/tools/ToolController.js +2 -0
  50. package/dist/cjs/types.d.ts +3 -1
  51. package/dist/cjs/util/assertions.d.ts +4 -0
  52. package/dist/cjs/util/assertions.js +12 -1
  53. package/dist/cjs/version.js +1 -1
  54. package/dist/mjs/Editor.d.ts +73 -40
  55. package/dist/mjs/Editor.mjs +90 -24
  56. package/dist/mjs/EditorImage.d.ts +58 -6
  57. package/dist/mjs/EditorImage.mjs +313 -61
  58. package/dist/mjs/SVGLoader.d.ts +10 -4
  59. package/dist/mjs/SVGLoader.mjs +66 -31
  60. package/dist/mjs/UndoRedoHistory.d.ts +2 -2
  61. package/dist/mjs/UndoRedoHistory.mjs +4 -2
  62. package/dist/mjs/Viewport.d.ts +2 -1
  63. package/dist/mjs/Viewport.mjs +12 -3
  64. package/dist/mjs/commands/Command.d.ts +1 -0
  65. package/dist/mjs/commands/Command.mjs +1 -0
  66. package/dist/mjs/commands/Erase.mjs +1 -1
  67. package/dist/mjs/commands/SerializableCommand.d.ts +1 -1
  68. package/dist/mjs/commands/SerializableCommand.mjs +16 -2
  69. package/dist/mjs/commands/localization.d.ts +2 -0
  70. package/dist/mjs/commands/localization.mjs +2 -0
  71. package/dist/mjs/components/AbstractComponent.d.ts +38 -0
  72. package/dist/mjs/components/AbstractComponent.mjs +30 -0
  73. package/dist/mjs/components/BackgroundComponent.d.ts +10 -1
  74. package/dist/mjs/components/BackgroundComponent.mjs +38 -6
  75. package/dist/mjs/components/SVGGlobalAttributesObject.d.ts +2 -1
  76. package/dist/mjs/components/SVGGlobalAttributesObject.mjs +7 -1
  77. package/dist/mjs/components/Stroke.d.ts +1 -0
  78. package/dist/mjs/components/Stroke.mjs +44 -0
  79. package/dist/mjs/components/UnknownSVGObject.d.ts +2 -1
  80. package/dist/mjs/components/UnknownSVGObject.mjs +7 -1
  81. package/dist/mjs/lib.d.ts +2 -45
  82. package/dist/mjs/lib.mjs +2 -45
  83. package/dist/mjs/rendering/RenderingStyle.d.ts +1 -0
  84. package/dist/mjs/rendering/renderers/AbstractRenderer.mjs +1 -1
  85. package/dist/mjs/rendering/renderers/SVGRenderer.mjs +8 -19
  86. package/dist/mjs/rendering/renderers/SVGRenderer.test.d.ts +1 -0
  87. package/dist/mjs/shortcuts/KeyboardShortcutManager.d.ts +2 -2
  88. package/dist/mjs/shortcuts/KeyboardShortcutManager.mjs +2 -2
  89. package/dist/mjs/toolbar/localization.d.ts +1 -0
  90. package/dist/mjs/toolbar/localization.mjs +1 -0
  91. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +5 -0
  92. package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.mjs +54 -25
  93. package/dist/mjs/toolbar/widgets/components/makeGridSelector.mjs +8 -0
  94. package/dist/mjs/tools/PanZoom.mjs +13 -8
  95. package/dist/mjs/tools/ScrollbarTool.d.ts +18 -0
  96. package/dist/mjs/tools/ScrollbarTool.mjs +79 -0
  97. package/dist/mjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +1 -0
  98. package/dist/mjs/tools/ToolController.mjs +2 -0
  99. package/dist/mjs/types.d.ts +3 -1
  100. package/dist/mjs/util/assertions.d.ts +4 -0
  101. package/dist/mjs/util/assertions.mjs +10 -0
  102. package/dist/mjs/version.mjs +1 -1
  103. package/package.json +3 -4
  104. package/src/Editor.scss +8 -0
  105. package/src/dialogs/dialogs.scss +2 -1
  106. package/src/toolbar/EdgeToolbar.scss +4 -1
  107. package/src/toolbar/widgets/DocumentPropertiesWidget.scss +12 -0
  108. package/src/toolbar/widgets/components/makeGridSelector.scss +1 -1
  109. package/src/tools/ScrollbarTool.scss +57 -0
  110. package/src/tools/{SoundUITool.css → SoundUITool.scss} +4 -0
  111. package/src/tools/tools.scss +2 -1
package/README.md CHANGED
@@ -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
- --background-color-1: white;
203
- --foreground-color-1: black;
202
+ --background-color-1: white;
203
+ --foreground-color-1: black;
204
204
 
205
- /* Used for some menu/toolbar backgrounds. */
206
- --background-color-2: #f5f5f5;
207
- --foreground-color-2: #2c303a;
205
+ /* Used for some menu/toolbar backgrounds. */
206
+ --background-color-2: #f5f5f5;
207
+ --foreground-color-2: #2c303a;
208
208
 
209
- /* Used for other menu/toolbar backgrounds. */
210
- --background-color-3: #e5e5e5;
211
- --foreground-color-3: #1c202a;
209
+ /* Used for other menu/toolbar backgrounds. */
210
+ --background-color-3: #e5e5e5;
211
+ --foreground-color-3: #1c202a;
212
212
 
213
- /* Used for selected buttons. */
214
- --selection-background-color: #cbdaf1;
215
- --selection-foreground-color: #2c303a;
213
+ /* Used for selected buttons. */
214
+ --selection-background-color: #cbdaf1;
215
+ --selection-foreground-color: #2c303a;
216
216
 
217
- /* Used for dialog backgrounds */
218
- --background-color-transparent: rgba(105, 100, 100, 0.5);
217
+ /* Used for dialog backgrounds */
218
+ --background-color-transparent: rgba(105, 100, 100, 0.5);
219
219
 
220
- /* Used for shadows */
221
- --shadow-color: rgba(0, 0, 0, 0.5);
220
+ /* Used for shadows */
221
+ --shadow-color: rgba(0, 0, 0, 0.5);
222
222
 
223
- /* Color used for some button/input foregrounds */
224
- --primary-action-foreground-color: #15b;
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
- --background-color-1: #151515;
231
- --foreground-color-1: white;
230
+ --background-color-1: #151515;
231
+ --foreground-color-1: white;
232
232
 
233
- --background-color-2: #222;
234
- --foreground-color-2: #efefef;
233
+ --background-color-2: #222;
234
+ --foreground-color-2: #efefef;
235
235
 
236
- --background-color-3: #272627;
237
- --foreground-color-3: #eee;
236
+ --background-color-3: #272627;
237
+ --foreground-color-3: #eee;
238
238
 
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);
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
- --primary-action-foreground-color: #7ae;
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
- --shadow-color: rgba(0, 0, 0, 0.5);
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:focus-within {
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 {
@@ -963,6 +972,7 @@
963
972
  }
964
973
  .toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList {
965
974
  box-sizing: border-box;
975
+ --align-items-to-x: 105px;
966
976
  }
967
977
  .toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div {
968
978
  display: flex;
@@ -972,13 +982,14 @@
972
982
  }
973
983
  .toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div > label {
974
984
  padding-right: 35px;
975
- min-width: 105px;
985
+ min-width: var(--align-items-to-x);
976
986
  flex-shrink: 1;
977
987
  box-sizing: border-box;
978
988
  }
979
989
  .toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div > input[type=checkbox] {
980
990
  width: 20px;
981
991
  height: 20px;
992
+ margin-left: 0;
982
993
  }
983
994
  .toolbar-edgemenu-container .toolbar-edgemenu .toolbar-spacedList > div > input:not([type=checkbox]) {
984
995
  flex-grow: 1;
@@ -1013,6 +1024,52 @@
1013
1024
  display: inline-block;
1014
1025
  }
1015
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
+
1016
1073
  .selection-tool-selection-background {
1017
1074
  background-color: var(--selection-background-color);
1018
1075
  opacity: 0.5;
@@ -1063,6 +1120,10 @@
1063
1120
  overflow: hidden;
1064
1121
  }
1065
1122
 
1123
+ .js-draw-sound-ui-toggle button {
1124
+ margin-top: 1px;
1125
+ }
1126
+
1066
1127
  .js-draw-sound-ui-toggle:focus-within, .js-draw-sound-ui-toggle.sound-ui-tool-enabled {
1067
1128
  overflow: visible;
1068
1129
  z-index: 5;
@@ -1102,7 +1163,7 @@
1102
1163
  text-decoration: underline;
1103
1164
  }
1104
1165
 
1105
- .dialog-container {
1166
+ .dialog-container.dialog-container {
1106
1167
  background-color: var(--background-color-transparent);
1107
1168
  backdrop-filter: blur(5px);
1108
1169
  -webkit-backdrop-filter: blur(5px);
@@ -1115,7 +1176,7 @@
1115
1176
  align-items: center;
1116
1177
  justify-content: center;
1117
1178
  }
1118
- .dialog-container dialog {
1179
+ .dialog-container.dialog-container dialog {
1119
1180
  background-color: var(--background-color-1);
1120
1181
  color: var(--foreground-color-1);
1121
1182
  border: none;