js-draw 1.13.2 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. package/dist/Editor.css +285 -1
  2. package/dist/bundle.js +2 -2
  3. package/dist/bundledStyles.js +1 -1
  4. package/dist/cjs/Editor.js +5 -0
  5. package/dist/cjs/components/util/StrokeSmoother.js +2 -2
  6. package/dist/cjs/rendering/caching/CacheRecordManager.js +1 -1
  7. package/dist/cjs/testing/sendHtmlSwipe.d.ts +4 -0
  8. package/dist/cjs/testing/sendHtmlSwipe.js +14 -0
  9. package/dist/cjs/toolbar/EdgeToolbar.d.ts +1 -0
  10. package/dist/cjs/toolbar/EdgeToolbar.js +30 -110
  11. package/dist/cjs/toolbar/IconProvider.d.ts +1 -0
  12. package/dist/cjs/toolbar/IconProvider.js +27 -0
  13. package/dist/cjs/toolbar/localization.d.ts +28 -1
  14. package/dist/cjs/toolbar/localization.js +30 -1
  15. package/dist/cjs/toolbar/utils/HelpDisplay.d.ts +37 -0
  16. package/dist/cjs/toolbar/utils/HelpDisplay.js +442 -0
  17. package/dist/cjs/toolbar/utils/HelpDisplay.test.d.ts +1 -0
  18. package/dist/cjs/toolbar/utils/localization.d.ts +9 -0
  19. package/dist/cjs/toolbar/utils/localization.js +11 -0
  20. package/dist/cjs/toolbar/utils/makeDraggable.d.ts +16 -0
  21. package/dist/cjs/toolbar/utils/makeDraggable.js +130 -0
  22. package/dist/cjs/toolbar/widgets/ActionButtonWidget.d.ts +7 -0
  23. package/dist/cjs/toolbar/widgets/ActionButtonWidget.js +14 -2
  24. package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +8 -1
  25. package/dist/cjs/toolbar/widgets/BaseWidget.js +25 -3
  26. package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.d.ts +3 -1
  27. package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.js +19 -4
  28. package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +3 -1
  29. package/dist/cjs/toolbar/widgets/HandToolWidget.js +19 -7
  30. package/dist/cjs/toolbar/widgets/InsertImageWidget.js +1 -0
  31. package/dist/cjs/toolbar/widgets/PenToolWidget.d.ts +4 -2
  32. package/dist/cjs/toolbar/widgets/PenToolWidget.js +27 -8
  33. package/dist/cjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
  34. package/dist/cjs/toolbar/widgets/SelectionToolWidget.js +19 -5
  35. package/dist/cjs/toolbar/widgets/components/makeColorInput.d.ts +2 -0
  36. package/dist/cjs/toolbar/widgets/components/makeColorInput.js +17 -7
  37. package/dist/cjs/toolbar/widgets/components/makeGridSelector.d.ts +6 -0
  38. package/dist/cjs/toolbar/widgets/components/makeGridSelector.js +3 -0
  39. package/dist/cjs/tools/FindTool.js +18 -5
  40. package/dist/cjs/util/addLongPressOrHoverCssClasses.d.ts +3 -1
  41. package/dist/cjs/util/addLongPressOrHoverCssClasses.js +2 -1
  42. package/dist/cjs/util/cloneElementWithStyles.d.ts +6 -0
  43. package/dist/cjs/util/cloneElementWithStyles.js +32 -0
  44. package/dist/cjs/version.js +1 -1
  45. package/dist/mjs/Editor.mjs +5 -0
  46. package/dist/mjs/components/util/StrokeSmoother.mjs +2 -2
  47. package/dist/mjs/rendering/caching/CacheRecordManager.mjs +1 -1
  48. package/dist/mjs/testing/sendHtmlSwipe.d.ts +4 -0
  49. package/dist/mjs/testing/sendHtmlSwipe.mjs +12 -0
  50. package/dist/mjs/toolbar/EdgeToolbar.d.ts +1 -0
  51. package/dist/mjs/toolbar/EdgeToolbar.mjs +30 -110
  52. package/dist/mjs/toolbar/IconProvider.d.ts +1 -0
  53. package/dist/mjs/toolbar/IconProvider.mjs +27 -0
  54. package/dist/mjs/toolbar/localization.d.ts +28 -1
  55. package/dist/mjs/toolbar/localization.mjs +30 -1
  56. package/dist/mjs/toolbar/utils/HelpDisplay.d.ts +37 -0
  57. package/dist/mjs/toolbar/utils/HelpDisplay.mjs +437 -0
  58. package/dist/mjs/toolbar/utils/HelpDisplay.test.d.ts +1 -0
  59. package/dist/mjs/toolbar/utils/localization.d.ts +9 -0
  60. package/dist/mjs/toolbar/utils/localization.mjs +8 -0
  61. package/dist/mjs/toolbar/utils/makeDraggable.d.ts +16 -0
  62. package/dist/mjs/toolbar/utils/makeDraggable.mjs +128 -0
  63. package/dist/mjs/toolbar/widgets/ActionButtonWidget.d.ts +7 -0
  64. package/dist/mjs/toolbar/widgets/ActionButtonWidget.mjs +14 -2
  65. package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +8 -1
  66. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +25 -3
  67. package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.d.ts +3 -1
  68. package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.mjs +19 -4
  69. package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +3 -1
  70. package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +19 -7
  71. package/dist/mjs/toolbar/widgets/InsertImageWidget.mjs +1 -0
  72. package/dist/mjs/toolbar/widgets/PenToolWidget.d.ts +4 -2
  73. package/dist/mjs/toolbar/widgets/PenToolWidget.mjs +27 -8
  74. package/dist/mjs/toolbar/widgets/SelectionToolWidget.d.ts +3 -1
  75. package/dist/mjs/toolbar/widgets/SelectionToolWidget.mjs +19 -5
  76. package/dist/mjs/toolbar/widgets/components/makeColorInput.d.ts +2 -0
  77. package/dist/mjs/toolbar/widgets/components/makeColorInput.mjs +17 -7
  78. package/dist/mjs/toolbar/widgets/components/makeGridSelector.d.ts +6 -0
  79. package/dist/mjs/toolbar/widgets/components/makeGridSelector.mjs +3 -0
  80. package/dist/mjs/tools/FindTool.mjs +18 -5
  81. package/dist/mjs/util/addLongPressOrHoverCssClasses.d.ts +3 -1
  82. package/dist/mjs/util/addLongPressOrHoverCssClasses.mjs +2 -1
  83. package/dist/mjs/util/cloneElementWithStyles.d.ts +6 -0
  84. package/dist/mjs/util/cloneElementWithStyles.mjs +30 -0
  85. package/dist/mjs/version.mjs +1 -1
  86. package/package.json +2 -2
  87. package/src/toolbar/EdgeToolbar.scss +23 -2
  88. package/src/toolbar/toolbar.scss +2 -0
  89. package/src/toolbar/utils/HelpDisplay.scss +315 -0
  90. package/src/toolbar/widgets/components/makeColorInput.scss +7 -0
@@ -0,0 +1,315 @@
1
+
2
+ .toolbar-help-overlay {
3
+ width: 100%;
4
+ height: 100%;
5
+ max-width: none;
6
+ max-height: none;
7
+ border: none;
8
+ margin: 0;
9
+ padding: 0;
10
+ z-index: 5;
11
+ touch-action: none;
12
+ overflow: hidden;
13
+
14
+ // TODO: Use theme colors
15
+ $help-overlay-foreground: white;
16
+ $help-overlay-background: rgba(0, 0, 0, 0.8);
17
+
18
+ color: $help-overlay-foreground;
19
+ --icon-color: #{$help-overlay-foreground};
20
+
21
+ // We use ::backdrop for background styling
22
+ background-color: transparent;
23
+
24
+ &::backdrop {
25
+ background-color: $help-overlay-background;
26
+
27
+ backdrop-filter: blur(1px);
28
+ -webkit-backdrop-filter: blur(1px);
29
+ }
30
+
31
+ display: flex;
32
+ flex-direction: column;
33
+
34
+ // Show/hide animations
35
+ &, &::backdrop {
36
+ @keyframes transition-in {
37
+ 0% { opacity: 0; }
38
+ 100% { opacity: 1; }
39
+ }
40
+ animation: 0.25s ease transition-in;
41
+ }
42
+
43
+ &.-hiding {
44
+ @keyframes transition-out {
45
+ 0% { opacity: 1; }
46
+ 100% { opacity: 0; }
47
+ }
48
+
49
+ &, &::backdrop {
50
+ animation: 0.25s ease transition-out;
51
+ opacity: 0;
52
+ }
53
+ }
54
+
55
+
56
+ // For drag transitions
57
+ transition: 0.3s ease transform;
58
+ &.-dragging {
59
+ transition: none;
60
+ }
61
+
62
+ @media (prefers-reduced-motion: reduce) {
63
+ transition: none;
64
+ }
65
+
66
+
67
+ @media screen and (min-width: 800px) {
68
+ // Move the navigation buttons to the bottom of the screen
69
+ > .navigation-buttons {
70
+ order: 1;
71
+ margin-top: auto;
72
+ }
73
+ }
74
+
75
+ // -- sub-components --
76
+
77
+ .with-text-shadow {
78
+ text-shadow: 0 0 3px rgba(20, 20, 20, 0.9);
79
+ filter: drop-shadow(0px 0px 2px rgba(0, 0, 0, 0.5));
80
+ }
81
+
82
+ button:not(:disabled) {
83
+ cursor: pointer;
84
+ }
85
+
86
+ button {
87
+ @extend .with-text-shadow;
88
+
89
+ background: transparent;
90
+ border: none;
91
+ color: var(--help-overlay-foreground);
92
+
93
+ border-radius: 15px;
94
+ }
95
+
96
+ .close-button {
97
+ align-self: flex-start;
98
+ width: 48px;
99
+ height: 48px;
100
+ z-index: 1;
101
+
102
+ > svg {
103
+ width: 100%;
104
+ }
105
+ }
106
+
107
+ .navigation-content {
108
+ flex-grow: 1;
109
+ display: flex;
110
+ }
111
+
112
+ .help-page-container {
113
+ display: flex;
114
+ align-items: center;
115
+ flex-grow: 1;
116
+ touch-action: none;
117
+
118
+ > .label {
119
+ @extend .with-text-shadow;
120
+
121
+ flex-grow: 1;
122
+ text-align: center;
123
+ font-size: 18.5pt;
124
+ margin-left: 15px;
125
+ margin-right: 15px;
126
+ margin-top: 0px;
127
+
128
+ z-index: 1;
129
+
130
+ &.-large-space-below {
131
+ margin-top: 0;
132
+ margin-bottom: auto;
133
+ }
134
+
135
+ &.-small-space-above {
136
+ margin-top: 40px;
137
+ margin-bottom: auto;
138
+ }
139
+
140
+ &.-large-space-above {
141
+ margin-top: auto;
142
+ margin-bottom: 10px;
143
+ }
144
+
145
+ transition: 0.5s ease margin-top;
146
+
147
+ @media (prefers-reduced-motion: reduce) {
148
+ transition: none;
149
+ }
150
+ }
151
+
152
+ > .cloned-element-container {
153
+ position: absolute;
154
+ z-index: 0;
155
+
156
+ // Prevent selecton on long-press
157
+ user-select: none;
158
+ -webkit-user-select: none;
159
+
160
+ border-radius: 10px;
161
+
162
+ * {
163
+ pointer-events: none !important;
164
+ }
165
+
166
+ > * {
167
+ margin: 0;
168
+ opacity: 0.01 !important;
169
+ transition: 0.3s ease opacity !important;
170
+ }
171
+
172
+ &:not(.-clickable) * {
173
+ cursor: unset !important;
174
+ }
175
+
176
+ &.-clickable, &.-background {
177
+ z-index: 1;
178
+ touch-action: none;
179
+ }
180
+
181
+ &.-clickable {
182
+ cursor: pointer;
183
+
184
+ z-index: 2;
185
+
186
+ &.has-long-press-or-hover {
187
+ opacity: 0.5 !important;
188
+ }
189
+ }
190
+
191
+ &.-clickable.has-long-press-or-hover, &.-active {
192
+ background-color: var(--background-color-1);
193
+ }
194
+
195
+ opacity: 0.01;
196
+ background-color: rgba(100, 100, 100, 0.01);
197
+ box-shadow: none;
198
+
199
+ &.-active {
200
+ opacity: 1;
201
+ background-color: var(--background-color-1);
202
+ box-shadow: 0 0 3px rgba(100, 100, 100, 0.5);
203
+
204
+ > * {
205
+ opacity: 1 !important;
206
+ }
207
+ }
208
+
209
+ transition: 0.5s ease opacity, 0.5s ease background-color;
210
+ }
211
+ }
212
+
213
+ .navigation-buttons {
214
+ display: flex;
215
+ flex-direction: row;
216
+ justify-content: space-between;
217
+
218
+ // Enforce left-to-right (enforces consistency with drag)
219
+ direction: ltr;
220
+
221
+ > button:disabled {
222
+ opacity: 0.5;
223
+ }
224
+
225
+ > .next, > .previous {
226
+ font-size: 1em;
227
+ padding: 10px;
228
+ transition: 0.2s ease font-size;
229
+ z-index: 3;
230
+
231
+ @media (prefers-reduced-motion: reduce) {
232
+ transition: none;
233
+ }
234
+ }
235
+
236
+ &:not(.-has-previous) > .next:not(:disabled) {
237
+ @keyframes highlight-button {
238
+ 0% { transform: scale(1); }
239
+ 50% { transform: scale(1.2); }
240
+ 55% { transform: scale(1.2) rotate(2deg); }
241
+ 65% { transform: scale(1.2) rotate(-2deg); }
242
+ 100% { transform: scale(1); }
243
+ }
244
+ animation: 0.5s ease highlight-button 0.5s;
245
+
246
+ @media (prefers-reduced-motion: reduce) {
247
+ animation: none;
248
+ }
249
+ }
250
+
251
+ > .next::after {
252
+ content: "❯";
253
+ margin-left: 3px;
254
+ }
255
+
256
+ > .previous::before {
257
+ content: "❮";
258
+ margin-right: 3px;
259
+ }
260
+
261
+ &.-has-next > .next {
262
+ font-size: 1.4em;
263
+ }
264
+
265
+ &.-has-previous > .previous {
266
+ font-size: 1.4em;
267
+ }
268
+
269
+ &.-highlight-next > .next, &.-highlight-previous > .previous {
270
+ font-weight: bold;
271
+ background-color: rgba(200, 200, 200, 0.1);
272
+ font-size: 1.4em;
273
+ }
274
+ }
275
+
276
+ .navigation-help {
277
+ margin-top: 1em;
278
+ font-size: 0.7em;
279
+ }
280
+ }
281
+
282
+
283
+ .toolbar-element .toolbar-help-overlay-button {
284
+ height: 0;
285
+ position: relative;
286
+
287
+ // Use flex so that items reverse in RTL
288
+ display: flex;
289
+ justify-content: end;
290
+
291
+ > .button {
292
+ margin: 0;
293
+ padding: 5px;
294
+ padding-top: 0;
295
+ padding-bottom: 0;
296
+
297
+ box-shadow: none;
298
+
299
+ text-align: center;
300
+ opacity: 0.5;
301
+
302
+ > .icon {
303
+ width: 1.18em;
304
+ height: 1.18em;
305
+
306
+ transition: 0.2s ease filter;
307
+ }
308
+
309
+ &:focus-visible, &:hover {
310
+ > .icon {
311
+ filter: drop-shadow(0px 0px 1px var(--shadow-color));
312
+ }
313
+ }
314
+ }
315
+ }
@@ -53,6 +53,13 @@ $pipette-button-size: 30px;
53
53
  display: inline-flex;
54
54
  }
55
55
 
56
+ .color-input-container {
57
+ > .color-input-wrapper {
58
+ display: flex;
59
+ justify-content: stretch;
60
+ }
61
+ }
62
+
56
63
  .color-input-container .pipetteButton > svg {
57
64
  width: 100%;
58
65
  }