@xsynaptic/sonic-ui 0.25.1 → 0.27.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/CHANGELOG.md +21 -0
- package/README.md +1 -1
- package/dist/default/elements/{display-element.js → analyser-element.js} +10 -12
- package/dist/default/elements/button.js +12 -6
- package/dist/default/elements/dial.js +9 -10
- package/dist/default/elements/envelope.js +26 -20
- package/dist/default/elements/field-gesture.js +49 -8
- package/dist/default/elements/meter.js +6 -5
- package/dist/default/elements/number.js +5 -11
- package/dist/default/elements/position-group.js +4 -4
- package/dist/default/elements/radio-group.js +7 -7
- package/dist/default/elements/region-layer.js +3 -1
- package/dist/default/elements/region.js +5 -1
- package/dist/default/elements/segmented.js +7 -4
- package/dist/default/elements/slider.js +12 -10
- package/dist/default/elements/sonic-element.js +10 -13
- package/dist/default/elements/spectrum.js +3 -3
- package/dist/default/elements/switch.js +11 -6
- package/dist/default/elements/toggle.js +16 -10
- package/dist/default/elements/value-element.js +26 -4
- package/dist/default/elements/wave-element.js +11 -9
- package/dist/default/elements/waveform.js +1 -4
- package/dist/default/elements/wavestrip.js +1 -1
- package/dist/default/elements/xy.js +34 -44
- package/dist/default/lib/canvas-surface.js +35 -2
- package/dist/default/lib/key-press.js +2 -2
- package/dist/default/lib/render.js +2 -2
- package/dist/dev/elements/{display-element.d.ts → analyser-element.d.ts} +3 -3
- package/dist/dev/elements/{display-element.js → analyser-element.js} +11 -14
- package/dist/dev/elements/analyser-element.js.map +1 -0
- package/dist/dev/elements/button.d.ts +4 -0
- package/dist/dev/elements/button.js +12 -11
- package/dist/dev/elements/button.js.map +1 -1
- package/dist/dev/elements/dial.d.ts +4 -1
- package/dist/dev/elements/dial.js +9 -14
- package/dist/dev/elements/dial.js.map +1 -1
- package/dist/dev/elements/envelope.d.ts +5 -0
- package/dist/dev/elements/envelope.js +26 -24
- package/dist/dev/elements/envelope.js.map +1 -1
- package/dist/dev/elements/field-gesture.js +49 -8
- package/dist/dev/elements/field-gesture.js.map +1 -1
- package/dist/dev/elements/meter.d.ts +2 -0
- package/dist/dev/elements/meter.js +6 -6
- package/dist/dev/elements/meter.js.map +1 -1
- package/dist/dev/elements/number.d.ts +2 -1
- package/dist/dev/elements/number.js +5 -12
- package/dist/dev/elements/number.js.map +1 -1
- package/dist/dev/elements/position-group.js +4 -4
- package/dist/dev/elements/position-group.js.map +1 -1
- package/dist/dev/elements/radio-group.d.ts +1 -1
- package/dist/dev/elements/radio-group.js +7 -7
- package/dist/dev/elements/radio-group.js.map +1 -1
- package/dist/dev/elements/region-layer.js +3 -1
- package/dist/dev/elements/region-layer.js.map +1 -1
- package/dist/dev/elements/region.d.ts +1 -0
- package/dist/dev/elements/region.js +5 -1
- package/dist/dev/elements/region.js.map +1 -1
- package/dist/dev/elements/segmented.d.ts +4 -2
- package/dist/dev/elements/segmented.js +7 -9
- package/dist/dev/elements/segmented.js.map +1 -1
- package/dist/dev/elements/slider.d.ts +4 -1
- package/dist/dev/elements/slider.js +12 -14
- package/dist/dev/elements/slider.js.map +1 -1
- package/dist/dev/elements/sonic-element.d.ts +6 -7
- package/dist/dev/elements/sonic-element.js +16 -91
- package/dist/dev/elements/sonic-element.js.map +1 -1
- package/dist/dev/elements/spectrum.d.ts +2 -2
- package/dist/dev/elements/spectrum.js +3 -3
- package/dist/dev/elements/spectrum.js.map +1 -1
- package/dist/dev/elements/switch.d.ts +4 -1
- package/dist/dev/elements/switch.js +11 -10
- package/dist/dev/elements/switch.js.map +1 -1
- package/dist/dev/elements/toggle.d.ts +4 -1
- package/dist/dev/elements/toggle.js +16 -15
- package/dist/dev/elements/toggle.js.map +1 -1
- package/dist/dev/elements/value-element.d.ts +4 -3
- package/dist/dev/elements/value-element.js +26 -4
- package/dist/dev/elements/value-element.js.map +1 -1
- package/dist/dev/elements/wave-element.d.ts +2 -1
- package/dist/dev/elements/wave-element.js +11 -13
- package/dist/dev/elements/wave-element.js.map +1 -1
- package/dist/dev/elements/waveform.d.ts +0 -1
- package/dist/dev/elements/waveform.js +1 -4
- package/dist/dev/elements/waveform.js.map +1 -1
- package/dist/dev/elements/wavestrip.js +1 -1
- package/dist/dev/elements/wavestrip.js.map +1 -1
- package/dist/dev/elements/xy.d.ts +4 -0
- package/dist/dev/elements/xy.js +34 -48
- package/dist/dev/elements/xy.js.map +1 -1
- package/dist/dev/index.d.ts +3 -1
- package/dist/dev/lib/canvas-surface.js +35 -2
- package/dist/dev/lib/canvas-surface.js.map +1 -1
- package/dist/dev/lib/check-styles.d.ts +8 -0
- package/dist/dev/lib/check-styles.js +87 -0
- package/dist/dev/lib/check-styles.js.map +1 -0
- package/dist/dev/lib/key-press.js +2 -2
- package/dist/dev/lib/key-press.js.map +1 -1
- package/dist/dev/lib/render.js +2 -2
- package/dist/dev/lib/render.js.map +1 -1
- package/dist/styles/button.css +11 -9
- package/dist/styles/dial.css +6 -6
- package/dist/styles/envelope.css +6 -0
- package/dist/styles/led.css +8 -8
- package/dist/styles/material/cap.css +13 -2
- package/dist/styles/material/pane.css +7 -1
- package/dist/styles/material/readout.css +10 -2
- package/dist/styles/material/reticle.css +2 -2
- package/dist/styles/meter.css +11 -11
- package/dist/styles/number.css +1 -1
- package/dist/styles/region.css +6 -0
- package/dist/styles/segmented.css +3 -3
- package/dist/styles/slider.css +12 -12
- package/dist/styles/switch.css +6 -0
- package/dist/styles/toggle.css +3 -3
- package/dist/styles/waveform.css +7 -1
- package/dist/styles/wavestrip.css +6 -0
- package/dist/styles/xy.css +15 -3
- package/package.json +1 -1
- package/dist/dev/elements/display-element.js.map +0 -1
package/dist/styles/led.css
CHANGED
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
[data-sonic-lit]:where(:not([data-sonic-lit='idle'])),
|
|
76
76
|
:where(
|
|
77
77
|
.sonic-button:is([aria-pressed='true'], [aria-expanded='true']),
|
|
78
|
-
[momentary]
|
|
78
|
+
[momentary] > .sonic-button[data-sonic-pressed],
|
|
79
79
|
.sonic-segmented-option[aria-checked='true'],
|
|
80
80
|
.sonic-toggle:has(
|
|
81
81
|
> [role='switch'][aria-checked='true'],
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
)
|
|
84
84
|
)
|
|
85
85
|
*,
|
|
86
|
-
:where(:
|
|
86
|
+
:where(:not(:disabled):has(> [data-sonic-at-origin]) > .sonic-led)
|
|
87
87
|
) {
|
|
88
88
|
background:
|
|
89
89
|
radial-gradient(
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
var(--_sonic-lens-bezel);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
.sonic-led:is([data-sonic-lit]:where(:not([data-sonic-lit='idle'])),:where(.sonic-button:is([aria-pressed='true'],[aria-expanded='true']),[momentary]
|
|
99
|
-
*,:where(:
|
|
98
|
+
.sonic-led:is([data-sonic-lit]:where(:not([data-sonic-lit='idle'])),:where(.sonic-button:is([aria-pressed='true'],[aria-expanded='true']),[momentary] > .sonic-button[data-sonic-pressed],.sonic-segmented-option[aria-checked='true'],.sonic-toggle:has( > [role='switch'][aria-checked='true'], > [aria-checked='true'] [data-sonic-lit]))
|
|
99
|
+
*,:where(:not(:disabled):has( > [data-sonic-at-origin]) > .sonic-led))::after {
|
|
100
100
|
background: radial-gradient(
|
|
101
101
|
closest-side,
|
|
102
102
|
color-mix(
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
[data-sonic-lit]:where(:not([data-sonic-lit='idle'])),
|
|
115
115
|
:where(
|
|
116
116
|
.sonic-button:is([aria-pressed='true'], [aria-expanded='true']),
|
|
117
|
-
[momentary]
|
|
117
|
+
[momentary] > .sonic-button[data-sonic-pressed],
|
|
118
118
|
.sonic-segmented-option[aria-checked='true'],
|
|
119
119
|
.sonic-toggle:has(
|
|
120
120
|
> [role='switch'][aria-checked='true'],
|
|
@@ -122,13 +122,13 @@
|
|
|
122
122
|
)
|
|
123
123
|
)
|
|
124
124
|
*,
|
|
125
|
-
:where(:
|
|
125
|
+
:where(:not(:disabled):has(> [data-sonic-at-origin]) > .sonic-led)
|
|
126
126
|
) {
|
|
127
127
|
background: none;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
.sonic-led:is([data-sonic-lit]:where(:not([data-sonic-lit='idle'])),:where(.sonic-button:is([aria-pressed='true'],[aria-expanded='true']),[momentary]
|
|
131
|
-
*,:where(:
|
|
130
|
+
.sonic-led:is([data-sonic-lit]:where(:not([data-sonic-lit='idle'])),:where(.sonic-button:is([aria-pressed='true'],[aria-expanded='true']),[momentary] > .sonic-button[data-sonic-pressed],.sonic-segmented-option[aria-checked='true'],.sonic-toggle:has( > [role='switch'][aria-checked='true'], > [aria-checked='true'] [data-sonic-lit]))
|
|
131
|
+
*,:where(:not(:disabled):has( > [data-sonic-at-origin]) > .sonic-led))::after {
|
|
132
132
|
background: var(--_sonic-lit);
|
|
133
133
|
box-shadow: 0 0 0 1px CanvasText;
|
|
134
134
|
}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
@property --_sonic-rim-width {
|
|
2
|
+
syntax: '<length>';
|
|
3
|
+
inherits: true;
|
|
4
|
+
initial-value: 1px;
|
|
5
|
+
}
|
|
6
|
+
|
|
1
7
|
@layer sonic.material {
|
|
2
8
|
:is(
|
|
3
9
|
.sonic-dial,
|
|
@@ -183,8 +189,13 @@
|
|
|
183
189
|
}
|
|
184
190
|
}
|
|
185
191
|
|
|
186
|
-
:
|
|
187
|
-
|
|
192
|
+
:is(
|
|
193
|
+
.sonic-dial,
|
|
194
|
+
.sonic-number,
|
|
195
|
+
.sonic-slider,
|
|
196
|
+
.sonic-waveform,
|
|
197
|
+
.sonic-wavestrip
|
|
198
|
+
)[data-sonic-editing] {
|
|
188
199
|
--_sonic-cap: var(--_sonic-cap-hover);
|
|
189
200
|
--_sonic-focus-shadow: var(--_sonic-focus-glow);
|
|
190
201
|
}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
@property --_sonic-glass-pitch {
|
|
2
|
+
syntax: '<length>';
|
|
3
|
+
inherits: true;
|
|
4
|
+
initial-value: 2px;
|
|
5
|
+
}
|
|
6
|
+
|
|
1
7
|
@keyframes sonic-glass-breathe {
|
|
2
8
|
to {
|
|
3
9
|
opacity: calc(0.4 * min(1, var(--_sonic-glass-texture)));
|
|
@@ -84,7 +90,7 @@
|
|
|
84
90
|
}
|
|
85
91
|
|
|
86
92
|
@media (prefers-reduced-motion: no-preference) {
|
|
87
|
-
.sonic-screen:is(:focus-visible,:focus-within)::before,.sonic-screen:has(
|
|
93
|
+
.sonic-screen:is(:focus-visible,:focus-within)::before,.sonic-screen:has([data-sonic-dragging])::before {
|
|
88
94
|
animation: sonic-glass-breathe 3s ease-in-out infinite alternate;
|
|
89
95
|
}
|
|
90
96
|
|
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
initial-value: 24px;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
@property --_sonic-readout-shine-width {
|
|
8
|
+
syntax: '<length>';
|
|
9
|
+
inherits: true;
|
|
10
|
+
initial-value: 1px;
|
|
11
|
+
}
|
|
12
|
+
|
|
7
13
|
@layer sonic.material {
|
|
8
14
|
:is(.sonic-dial, .sonic-envelope, .sonic-slider, .sonic-waveform, .sonic-wavestrip, .sonic-xy) {
|
|
9
15
|
--_sonic-readout-size: var(--sonic-readout-size, 1.5rem);
|
|
@@ -26,8 +32,10 @@
|
|
|
26
32
|
--_sonic-glass-own: var(--sonic-readout-glass);
|
|
27
33
|
--_sonic-glass-edge-colour-own: var(--sonic-readout-edge);
|
|
28
34
|
--_sonic-glass-edge-width-own: var(--sonic-readout-edge-width);
|
|
35
|
+
--_sonic-readout-shine-width: max(1px, round(var(--_sonic-unit), var(--_sonic-snap)));
|
|
29
36
|
|
|
30
37
|
box-sizing: border-box;
|
|
38
|
+
display: none;
|
|
31
39
|
place-items: center;
|
|
32
40
|
min-inline-size: calc(1.75 * var(--_sonic-readout-size));
|
|
33
41
|
block-size: var(--_sonic-readout-size);
|
|
@@ -56,7 +64,7 @@
|
|
|
56
64
|
box-shadow:
|
|
57
65
|
calc(2 * var(--_sonic-cast-x)) calc(2 * var(--_sonic-cast-y)) calc(6 * var(--_sonic-unit))
|
|
58
66
|
color-mix(in srgb, var(--_sonic-shade) calc(55% * var(--_sonic-readout-depth)), transparent),
|
|
59
|
-
inset 0 0 0
|
|
67
|
+
inset 0 0 0 var(--_sonic-readout-shine-width)
|
|
60
68
|
color-mix(in srgb, var(--_sonic-shine) calc(8% * var(--_sonic-readout-depth)), transparent);
|
|
61
69
|
opacity: 0;
|
|
62
70
|
translate: 0 calc(0.15 * var(--_sonic-readout-size));
|
|
@@ -101,7 +109,7 @@
|
|
|
101
109
|
}
|
|
102
110
|
}
|
|
103
111
|
|
|
104
|
-
|
|
112
|
+
[data-sonic-editing]:is(.sonic-dial,.sonic-slider,.sonic-waveform,.sonic-wavestrip) > :is(.sonic-dial-readout,.sonic-envelope-readout,.sonic-slider-readout,.sonic-waveform-readout,.sonic-wavestrip-readout,.sonic-xy-readout) {
|
|
105
113
|
pointer-events: auto;
|
|
106
114
|
cursor: text;
|
|
107
115
|
}
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
scale var(--_sonic-fade-duration) ease-out;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
[data-sonic-dragging] > .sonic-xy-reticle,
|
|
34
|
+
[data-sonic-dragging] > .sonic-envelope-reticle::before {
|
|
35
35
|
opacity: calc(1 - var(--_sonic-relief));
|
|
36
36
|
scale: 1;
|
|
37
37
|
}
|
package/dist/styles/meter.css
CHANGED
|
@@ -84,11 +84,11 @@
|
|
|
84
84
|
block-size: var(--_sonic-meter-size);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
:is([value]
|
|
87
|
+
:is([value] > .sonic-meter, .sonic-meter[data-sonic-ladder]) {
|
|
88
88
|
--_sonic-meter-clip-space: 0px;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
.sonic-meter[data-sonic-ladder] {
|
|
92
92
|
--_sonic-meter-gap: 0px;
|
|
93
93
|
}
|
|
94
94
|
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
mask-composite: add;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
.sonic-meter[data-sonic-ladder] > :is(.sonic-meter-segments, .sonic-meter-bar) {
|
|
177
177
|
--_sonic-meter-pitch: calc(
|
|
178
178
|
(var(--_sonic-meter-length) - 2 * var(--_sonic-meter-inset)) / var(--_sonic-meter-count, 1)
|
|
179
179
|
);
|
|
@@ -251,8 +251,8 @@
|
|
|
251
251
|
block-size: auto;
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
-
[orientation='horizontal']
|
|
255
|
-
> .sonic-meter
|
|
254
|
+
[orientation='horizontal']
|
|
255
|
+
> .sonic-meter[data-sonic-ladder]
|
|
256
256
|
> :is(.sonic-meter-segments, .sonic-meter-bar) {
|
|
257
257
|
--_sonic-meter-segment-mask: radial-gradient(
|
|
258
258
|
circle var(--_sonic-meter-ladder-radius),
|
|
@@ -262,14 +262,14 @@
|
|
|
262
262
|
0 0 / var(--_sonic-meter-pitch) 100% repeat no-repeat;
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
.sonic-meter[data-sonic-ladder] > :is(.sonic-meter-segments, .sonic-meter-bar)::after {
|
|
266
266
|
position: absolute;
|
|
267
267
|
inset: 0;
|
|
268
268
|
content: '';
|
|
269
269
|
background: var(--_sonic-lens-glint) 0 100% / 100% var(--_sonic-meter-pitch) repeat-y;
|
|
270
270
|
}
|
|
271
271
|
|
|
272
|
-
|
|
272
|
+
.sonic-meter[data-sonic-ladder] > .sonic-meter-bar::after {
|
|
273
273
|
background: radial-gradient(
|
|
274
274
|
circle var(--_sonic-meter-ladder-radius),
|
|
275
275
|
color-mix(in srgb, var(--_sonic-shine) calc(45% * var(--_sonic-relief)), transparent),
|
|
@@ -278,8 +278,8 @@
|
|
|
278
278
|
0 100% / 100% var(--_sonic-meter-pitch) repeat-y;
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
[orientation='horizontal']
|
|
282
|
-
> .sonic-meter
|
|
281
|
+
[orientation='horizontal']
|
|
282
|
+
> .sonic-meter[data-sonic-ladder]
|
|
283
283
|
> :is(.sonic-meter-segments, .sonic-meter-bar)::after {
|
|
284
284
|
background-repeat: repeat-x;
|
|
285
285
|
background-position: 0 0;
|
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
opacity: var(--_sonic-meter-clipped, 0);
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
:is([value]
|
|
371
|
+
:is([value] > .sonic-meter, .sonic-meter[data-sonic-ladder]) > .sonic-meter-clip {
|
|
372
372
|
display: none;
|
|
373
373
|
}
|
|
374
374
|
|
|
@@ -402,7 +402,7 @@
|
|
|
402
402
|
background: Mark;
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
-
|
|
405
|
+
.sonic-meter[data-sonic-ladder] > :is(.sonic-meter-segments, .sonic-meter-bar)::after {
|
|
406
406
|
display: none;
|
|
407
407
|
}
|
|
408
408
|
}
|
package/dist/styles/number.css
CHANGED
package/dist/styles/region.css
CHANGED
|
@@ -99,14 +99,14 @@
|
|
|
99
99
|
transition: color var(--_sonic-fade-duration) ease-out;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
.sonic-segmented-option:where([data-sonic-
|
|
102
|
+
.sonic-segmented-option:where([data-sonic-active]):not(:disabled),
|
|
103
103
|
.sonic-segmented-option[aria-checked='true'] {
|
|
104
104
|
--_sonic-keycap-shift: calc(var(--_sonic-keycap-depth) / 2);
|
|
105
105
|
--_sonic-keycap-scale: var(--_sonic-segmented-latched-scale);
|
|
106
106
|
--_sonic-keycap-drop: var(--_sonic-press-drop);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
.sonic-segmented-option:where([data-sonic-
|
|
109
|
+
.sonic-segmented-option:where([data-sonic-active]):not(:disabled) {
|
|
110
110
|
--_sonic-keycap-scale: var(--_sonic-segmented-press-scale);
|
|
111
111
|
}
|
|
112
112
|
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
.sonic-segmented-option:not([aria-checked='true'], :disabled):is(
|
|
129
129
|
:focus-visible,
|
|
130
130
|
:active,
|
|
131
|
-
[data-sonic-
|
|
131
|
+
[data-sonic-active]
|
|
132
132
|
) {
|
|
133
133
|
color: var(--_sonic-ink-lift);
|
|
134
134
|
}
|
package/dist/styles/slider.css
CHANGED
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
:where(:not(:disabled)) > .sonic-slider:focus-visible,
|
|
131
|
-
|
|
131
|
+
.sonic-slider[data-sonic-dragging] {
|
|
132
132
|
--_sonic-slider-groove-held: 1;
|
|
133
133
|
}
|
|
134
134
|
|
|
@@ -160,11 +160,11 @@
|
|
|
160
160
|
touch-action: var(--sonic-touch-action, pan-x);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
.sonic-slider[data-sonic-dragging] {
|
|
164
164
|
--_sonic-cap: var(--_sonic-cap-hover);
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
.sonic-slider[data-sonic-springing] {
|
|
168
168
|
/* A damped spring with 10% bounce, sampled into `linear()` */
|
|
169
169
|
transition: --_sonic-slider-value 200ms
|
|
170
170
|
linear(
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
|
|
215
215
|
@media (prefers-reduced-motion: reduce) {
|
|
216
216
|
|
|
217
|
-
|
|
217
|
+
.sonic-slider[data-sonic-springing] {
|
|
218
218
|
transition: none;
|
|
219
219
|
}
|
|
220
220
|
}
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
--_sonic-slider-scale-band: calc(var(--_sonic-slider-size) * var(--_sonic-slider-scale-ratio));
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
[groove-press='none']
|
|
235
|
+
[groove-press='none'] > .sonic-slider:not([data-sonic-dragging]) {
|
|
236
236
|
cursor: default;
|
|
237
237
|
}
|
|
238
238
|
|
|
@@ -383,7 +383,7 @@
|
|
|
383
383
|
display: none;
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
|
|
386
|
+
.sonic-slider[data-sonic-modulated] > .sonic-slider-modulation {
|
|
387
387
|
--_sonic-slider-live-low: min(
|
|
388
388
|
var(--_sonic-slider-value, 0),
|
|
389
389
|
var(--_sonic-slider-modulation-value, 0)
|
|
@@ -416,31 +416,31 @@
|
|
|
416
416
|
background: color-mix(in oklab, var(--_sonic-slider-modulation) 50%, transparent);
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
:is(
|
|
419
|
+
:is(.sonic-slider[data-sonic-modulated] > .sonic-slider-modulation)::before,:is(.sonic-slider[data-sonic-modulated] > .sonic-slider-modulation)::after {
|
|
420
420
|
position: absolute;
|
|
421
421
|
content: '';
|
|
422
422
|
}
|
|
423
423
|
|
|
424
|
-
:is(
|
|
424
|
+
:is(.sonic-slider[data-sonic-modulated] > .sonic-slider-modulation)::before {
|
|
425
425
|
inset: 0 auto 0 var(--_sonic-slider-live-start);
|
|
426
426
|
inline-size: var(--_sonic-slider-live-length);
|
|
427
427
|
background: var(--_sonic-slider-modulation);
|
|
428
428
|
border-radius: inherit;
|
|
429
429
|
}
|
|
430
430
|
|
|
431
|
-
:is(
|
|
431
|
+
:is(.sonic-slider[data-sonic-modulated] > .sonic-slider-modulation)::after {
|
|
432
432
|
inset: var(--_sonic-slider-tick-overhang) auto var(--_sonic-slider-tick-overhang)
|
|
433
433
|
var(--_sonic-slider-tick-start);
|
|
434
434
|
inline-size: var(--_sonic-unit);
|
|
435
435
|
background: var(--_sonic-slider-modulation-tick);
|
|
436
436
|
}
|
|
437
|
-
:is(:where([orientation='vertical'])
|
|
437
|
+
:is(:where([orientation='vertical']) > .sonic-slider[data-sonic-modulated] > .sonic-slider-modulation)::before {
|
|
438
438
|
inset: auto 0 var(--_sonic-slider-live-start);
|
|
439
439
|
inline-size: auto;
|
|
440
440
|
block-size: var(--_sonic-slider-live-length);
|
|
441
441
|
}
|
|
442
442
|
|
|
443
|
-
:is(:where([orientation='vertical'])
|
|
443
|
+
:is(:where([orientation='vertical']) > .sonic-slider[data-sonic-modulated] > .sonic-slider-modulation)::after {
|
|
444
444
|
inset: auto var(--_sonic-slider-tick-overhang) var(--_sonic-slider-tick-start);
|
|
445
445
|
inline-size: auto;
|
|
446
446
|
block-size: var(--_sonic-unit);
|
|
@@ -538,7 +538,7 @@
|
|
|
538
538
|
--_sonic-slider-modulation: CanvasText;
|
|
539
539
|
}
|
|
540
540
|
|
|
541
|
-
|
|
541
|
+
.sonic-slider[data-sonic-modulated] > .sonic-slider-modulation {
|
|
542
542
|
--_sonic-slider-modulation-tick: CanvasText;
|
|
543
543
|
|
|
544
544
|
background: GrayText;
|
package/dist/styles/switch.css
CHANGED
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
initial-value: 0;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
@property --_sonic-switch-outline {
|
|
16
|
+
syntax: '<length>';
|
|
17
|
+
inherits: true;
|
|
18
|
+
initial-value: 1px;
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
@layer sonic.control {
|
|
16
22
|
:is(sonic-switch, .sonic-switch) {
|
|
17
23
|
--_sonic-switch-size: var(--sonic-switch-size, 2rem);
|
package/dist/styles/toggle.css
CHANGED
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
touch-action: pan-x;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
.sonic-toggle[data-sonic-dragging] {
|
|
127
127
|
transition: --_sonic-toggle-sink var(--_sonic-press-duration) cubic-bezier(0.4, 0, 0.2, 1);
|
|
128
128
|
}
|
|
129
129
|
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
/* Held, never resting: the chosen position's cap stands as proud as any other */
|
|
182
|
-
.sonic-toggle:has(> .sonic-toggle-position[data-sonic-
|
|
182
|
+
.sonic-toggle:has(> .sonic-toggle-position[data-sonic-active]):has(
|
|
183
183
|
> .sonic-toggle-position:not(:disabled)
|
|
184
184
|
) {
|
|
185
185
|
--_sonic-toggle-sink: calc(var(--_sonic-keycap-depth) / 2);
|
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
|
|
439
439
|
@media (prefers-reduced-motion: reduce) {
|
|
440
440
|
.sonic-toggle,
|
|
441
|
-
|
|
441
|
+
.sonic-toggle[data-sonic-dragging],
|
|
442
442
|
.sonic-toggle-well,
|
|
443
443
|
.sonic-toggle-cap,
|
|
444
444
|
.sonic-toggle-legend {
|
package/dist/styles/waveform.css
CHANGED
|
@@ -108,6 +108,12 @@
|
|
|
108
108
|
initial-value: rgb(200 200 208);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
+
@property --_sonic-waveform-line {
|
|
112
|
+
syntax: '<length>';
|
|
113
|
+
inherits: true;
|
|
114
|
+
initial-value: 1px;
|
|
115
|
+
}
|
|
116
|
+
|
|
111
117
|
@layer sonic.control {
|
|
112
118
|
:is(sonic-waveform, .sonic-waveform) {
|
|
113
119
|
--_sonic-waveform-size: var(--sonic-waveform-size, 6rem);
|
|
@@ -185,7 +191,7 @@
|
|
|
185
191
|
block-size: 100%;
|
|
186
192
|
}
|
|
187
193
|
|
|
188
|
-
|
|
194
|
+
.sonic-waveform[data-sonic-dragging] {
|
|
189
195
|
cursor: grabbing;
|
|
190
196
|
}
|
|
191
197
|
|
package/dist/styles/xy.css
CHANGED
|
@@ -6,6 +6,18 @@
|
|
|
6
6
|
initial-value: 128px;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
@property --_sonic-xy-line {
|
|
10
|
+
syntax: '<length>';
|
|
11
|
+
inherits: true;
|
|
12
|
+
initial-value: 1px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@property --_sonic-xy-puck-ring-width {
|
|
16
|
+
syntax: '<length>';
|
|
17
|
+
inherits: true;
|
|
18
|
+
initial-value: 2px;
|
|
19
|
+
}
|
|
20
|
+
|
|
9
21
|
@layer sonic.control {
|
|
10
22
|
:is(sonic-xy, .sonic-xy) {
|
|
11
23
|
--_sonic-xy-size: var(--sonic-xy-size, 8rem);
|
|
@@ -165,7 +177,7 @@
|
|
|
165
177
|
}
|
|
166
178
|
|
|
167
179
|
@media (hover: hover) {
|
|
168
|
-
:not(:disabled
|
|
180
|
+
:not(:disabled) > .sonic-xy:where(:not([data-sonic-dragging])) > .sonic-xy-puck:hover {
|
|
169
181
|
--_sonic-xy-puck-fill: var(--_sonic-xy-puck-lift);
|
|
170
182
|
}
|
|
171
183
|
}
|
|
@@ -175,7 +187,7 @@
|
|
|
175
187
|
--_sonic-xy-puck-ring: var(--_sonic-focus);
|
|
176
188
|
}
|
|
177
189
|
|
|
178
|
-
|
|
190
|
+
.sonic-xy[data-sonic-dragging] > .sonic-xy-puck {
|
|
179
191
|
--_sonic-xy-puck-glow: color-mix(
|
|
180
192
|
in oklab,
|
|
181
193
|
var(--_sonic-xy-lit) calc(30% * var(--_sonic-relief)),
|
|
@@ -213,7 +225,7 @@
|
|
|
213
225
|
outline-style: none;
|
|
214
226
|
}
|
|
215
227
|
|
|
216
|
-
|
|
228
|
+
.sonic-xy[data-sonic-dragging] > .sonic-xy-puck {
|
|
217
229
|
--_sonic-xy-puck-fill: Canvas;
|
|
218
230
|
--_sonic-xy-puck-edge: var(--_sonic-xy-lit);
|
|
219
231
|
}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"display-element.js","names":[],"sources":["../../../src/elements/display-element.ts"],"sourcesContent":["import type { Surface, SurfaceFrame } from '#lib/canvas-surface.ts';\nimport type { Decibels } from '#lib/units.ts';\n\nimport { SonicElement } from '#elements/sonic-element.ts';\nimport { bindSurface } from '#lib/canvas-surface.ts';\n\ndeclare const __DEV__: boolean;\n\nexport abstract class SonicDisplayElement<\n\tColour extends string,\n\tNumeric extends string = never,\n> extends SonicElement {\n\tstatic override readonly observedAttributes = [\n\t\t...SonicElement.observedAttributes,\n\t\t'fill',\n\t\t'max',\n\t\t'min',\n\t];\n\n\tget analyser(): AnalyserNode | undefined {\n\t\treturn this.#analyser;\n\t}\n\n\tset analyser(node: AnalyserNode | null | undefined) {\n\t\tthis.#analyser = node ?? undefined;\n\t\tthis.#surface?.requestFrame();\n\t}\n\n\t// fallow-ignore-next-line code-duplication -- one accessor pair per reflected attribute\n\tget fill(): boolean {\n\t\treturn this.hasAttribute('fill');\n\t}\n\n\tset fill(isFilling: boolean) {\n\t\tthis.reflect('fill', isFilling);\n\t}\n\n\t// fallow-ignore-next-line code-duplication -- one accessor pair per reflected attribute\n\tget max(): Decibels {\n\t\treturn this.numberAttribute('max', 0);\n\t}\n\n\tset max(decibels: number | undefined) {\n\t\tthis.reflect('max', decibels);\n\t}\n\n\tget min(): Decibels {\n\t\treturn this.numberAttribute('min', -90);\n\t}\n\n\tset min(decibels: number | undefined) {\n\t\tthis.reflect('min', decibels);\n\t}\n\n\tprotected abstract readonly canvas: HTMLCanvasElement;\n\n\tprotected abstract readonly colours: Record<Colour, `--_sonic-${string}`>;\n\n\tprotected abstract readonly control: HTMLElement;\n\n\tprotected abstract readonly numbers: Record<Numeric, `--_sonic-${string}`>;\n\n\tprotected abstract readonly sheet: string;\n\n\tprotected abstract readonly sizeProperty: `--_sonic-${string}`;\n\n\t#analyser: AnalyserNode | undefined;\n\n\t#buffer = new Float32Array(0);\n\n\t#surface: Surface | undefined;\n\n\tattributeChangedCallback(name: string): void {\n\t\tif (name === 'fill') this.#surface?.setFill(this.fill);\n\t\tthis.#surface?.invalidate();\n\t}\n\n\toverride connectedCallback(): void {\n\t\tthis.upgradeProperties('analyser', 'fill', 'max', 'min');\n\t\tsuper.connectedCallback();\n\t}\n\n\t/** One level per bin, as `AnalyserNode.getFloatFrequencyData` fills it */\n\tpush(decibels: Float32Array): void {\n\t\tthis.receive(decibels);\n\t\tthis.#surface?.requestFrame();\n\t}\n\n\t// fallow-ignore-next-line code-duplication -- the wave controls keep their own copy of the surface binding\n\trepaint(): void {\n\t\tthis.#surface?.rebuild();\n\t}\n\n\tprotected connect(signal: AbortSignal): void {\n\t\tconst control = this.control;\n\n\t\tthis.keepControl(control, signal);\n\t\tthis.#surface = bindSurface({\n\t\t\tcanvas: this.canvas,\n\t\t\tcolours: this.colours,\n\t\t\tfill: { control, sizeProperty: this.sizeProperty },\n\t\t\tnumbers: this.numbers,\n\t\t\tpaint: (context, frame) => {\n\t\t\t\tthis.#paint(context, frame);\n\t\t\t},\n\t\t\tsignal,\n\t\t});\n\t\tif (__DEV__) this.checkStyles(control, this.sheet);\n\t\tthis.#surface.setFill(this.fill);\n\t}\n\n\tprotected abstract paint(\n\t\tcontext: CanvasRenderingContext2D,\n\t\tframe: SurfaceFrame<Colour, never, Numeric>,\n\t): void;\n\n\tprotected abstract pull(analyser: AnalyserNode, buffer: Float32Array<ArrayBuffer>): void;\n\n\tprotected abstract receive(frame: Float32Array): void;\n\n\tprotected surface(): Surface | undefined {\n\t\treturn this.#surface;\n\t}\n\n\t// The node never signals that sound came back, so every paint pulls\n\t#paint(context: CanvasRenderingContext2D, frame: SurfaceFrame<Colour, never, Numeric>): void {\n\t\tconst analyser = this.isDisabled() ? undefined : this.#analyser;\n\n\t\tif (analyser) {\n\t\t\tif (this.#buffer.length !== analyser.frequencyBinCount) {\n\t\t\t\tthis.#buffer = new Float32Array(analyser.frequencyBinCount);\n\t\t\t}\n\t\t\tthis.pull(analyser, this.#buffer);\n\t\t\tthis.receive(this.#buffer);\n\t\t}\n\t\tthis.paint(context, frame);\n\t\tif (analyser) this.#surface?.requestFrame();\n\t}\n}\n"],"mappings":";;;;AAQA,IAAsB,sBAAtB,cAGU,aAAa;CACtB,OAAyB,qBAAqB;EAC7C,GAAG,aAAa;EAChB;EACA;EACA;CACD;CAEA,IAAI,WAAqC;EACxC,OAAO,KAAK;CACb;CAEA,IAAI,SAAS,MAAuC;EACnD,KAAK,YAAY,QAAQ;EACzB,KAAK,UAAU,aAAa;CAC7B;CAGA,IAAI,OAAgB;EACnB,OAAO,KAAK,aAAa,MAAM;CAChC;CAEA,IAAI,KAAK,WAAoB;EAC5B,KAAK,QAAQ,QAAQ,SAAS;CAC/B;CAGA,IAAI,MAAgB;EACnB,OAAO,KAAK,gBAAgB,OAAO,CAAC;CACrC;CAEA,IAAI,IAAI,UAA8B;EACrC,KAAK,QAAQ,OAAO,QAAQ;CAC7B;CAEA,IAAI,MAAgB;EACnB,OAAO,KAAK,gBAAgB,OAAO,GAAG;CACvC;CAEA,IAAI,IAAI,UAA8B;EACrC,KAAK,QAAQ,OAAO,QAAQ;CAC7B;CAcA;CAEA,0BAAU,IAAI,aAAa,CAAC;CAE5B;CAEA,yBAAyB,MAAoB;EAC5C,IAAI,SAAS,QAAQ,KAAK,UAAU,QAAQ,KAAK,IAAI;EACrD,KAAK,UAAU,WAAW;CAC3B;CAEA,AAAS,oBAA0B;EAClC,KAAK,kBAAkB,YAAY,QAAQ,OAAO,KAAK;EACvD,MAAM,kBAAkB;CACzB;;CAGA,KAAK,UAA8B;EAClC,KAAK,QAAQ,QAAQ;EACrB,KAAK,UAAU,aAAa;CAC7B;CAGA,UAAgB;EACf,KAAK,UAAU,QAAQ;CACxB;CAEA,AAAU,QAAQ,QAA2B;EAC5C,MAAM,UAAU,KAAK;EAErB,KAAK,YAAY,SAAS,MAAM;EAChC,KAAK,WAAW,YAAY;GAC3B,QAAQ,KAAK;GACb,SAAS,KAAK;GACd,MAAM;IAAE;IAAS,cAAc,KAAK;GAAa;GACjD,SAAS,KAAK;GACd,QAAQ,SAAS,UAAU;IAC1B,KAAK,OAAO,SAAS,KAAK;GAC3B;GACA;EACD,CAAC;EACY,KAAK,YAAY,SAAS,KAAK,KAAK;EACjD,KAAK,SAAS,QAAQ,KAAK,IAAI;CAChC;CAWA,AAAU,UAA+B;EACxC,OAAO,KAAK;CACb;CAGA,OAAO,SAAmC,OAAmD;EAC5F,MAAM,WAAW,KAAK,WAAW,IAAI,SAAY,KAAK;EAEtD,IAAI,UAAU;GACb,IAAI,KAAK,QAAQ,WAAW,SAAS,mBACpC,KAAK,UAAU,IAAI,aAAa,SAAS,iBAAiB;GAE3D,KAAK,KAAK,UAAU,KAAK,OAAO;GAChC,KAAK,QAAQ,KAAK,OAAO;EAC1B;EACA,KAAK,MAAM,SAAS,KAAK;EACzB,IAAI,UAAU,KAAK,UAAU,aAAa;CAC3C;AACD"}
|