@xsynaptic/sonic-ui 0.17.0 → 0.19.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 +28 -0
- package/README.md +122 -19
- package/dist/default/elements/button.js +2 -5
- package/dist/default/elements/dial.js +2 -7
- package/dist/default/elements/display-element.js +9 -12
- package/dist/default/elements/envelope.js +31 -78
- package/dist/default/elements/field-gesture.js +81 -0
- package/dist/default/elements/meter.js +4 -1
- package/dist/default/elements/number.js +0 -7
- package/dist/default/elements/position-group.js +42 -26
- package/dist/default/elements/radio-group.js +59 -56
- package/dist/default/elements/scale.js +3 -3
- package/dist/default/elements/segmented.js +0 -5
- package/dist/default/elements/slider.js +11 -20
- package/dist/default/elements/sonic-element.js +3 -1
- package/dist/default/elements/split.js +14 -13
- package/dist/default/elements/switch.js +31 -47
- package/dist/default/elements/toggle.js +20 -49
- package/dist/default/elements/value-element.js +72 -94
- package/dist/default/elements/value-gestures.js +22 -22
- package/dist/default/elements/wave-element.js +16 -20
- package/dist/default/elements/waveform.js +42 -241
- package/dist/default/elements/wavestrip.js +10 -5
- package/dist/default/elements/xy.js +67 -119
- package/dist/default/index.js +2 -1
- package/dist/default/lib/canvas-surface.js +25 -0
- package/dist/default/lib/clock.js +23 -0
- package/dist/default/lib/crossfade.js +1 -0
- package/dist/default/lib/envelope-curve.js +1 -0
- package/dist/default/lib/peaks-request.js +44 -0
- package/dist/default/lib/positions.js +58 -0
- package/dist/default/lib/scrub.js +12 -0
- package/dist/default/lib/spoken-duration.js +30 -0
- package/dist/default/lib/value-model.js +62 -0
- package/dist/default/lib/waveform-buckets.js +7 -1
- package/dist/default/lib/waveform-scene.js +108 -0
- package/dist/default/lib/zoom-gesture.js +97 -1
- package/dist/dev/elements/button.d.ts +2 -0
- package/dist/dev/elements/button.js +14 -5
- package/dist/dev/elements/button.js.map +1 -1
- package/dist/dev/elements/dial.d.ts +2 -0
- package/dist/dev/elements/dial.js +16 -7
- package/dist/dev/elements/dial.js.map +1 -1
- package/dist/dev/elements/display-element.d.ts +5 -3
- package/dist/dev/elements/display-element.js +11 -9
- package/dist/dev/elements/display-element.js.map +1 -1
- package/dist/dev/elements/envelope.js +48 -78
- package/dist/dev/elements/envelope.js.map +1 -1
- package/dist/dev/elements/field-gesture.js +82 -0
- package/dist/dev/elements/field-gesture.js.map +1 -0
- package/dist/dev/elements/meter.d.ts +10 -5
- package/dist/dev/elements/meter.js +5 -1
- package/dist/dev/elements/meter.js.map +1 -1
- package/dist/dev/elements/number.js +13 -7
- package/dist/dev/elements/number.js.map +1 -1
- package/dist/dev/elements/position-group.d.ts +12 -6
- package/dist/dev/elements/position-group.js +42 -26
- package/dist/dev/elements/position-group.js.map +1 -1
- package/dist/dev/elements/radio-group.d.ts +11 -7
- package/dist/dev/elements/radio-group.js +59 -56
- package/dist/dev/elements/radio-group.js.map +1 -1
- package/dist/dev/elements/scale.js +3 -3
- package/dist/dev/elements/scale.js.map +1 -1
- package/dist/dev/elements/segmented.js +12 -5
- package/dist/dev/elements/segmented.js.map +1 -1
- package/dist/dev/elements/slider.d.ts +4 -2
- package/dist/dev/elements/slider.js +25 -20
- package/dist/dev/elements/slider.js.map +1 -1
- package/dist/dev/elements/sonic-element.d.ts +13 -2
- package/dist/dev/elements/sonic-element.js +63 -11
- package/dist/dev/elements/sonic-element.js.map +1 -1
- package/dist/dev/elements/split.d.ts +1 -0
- package/dist/dev/elements/split.js +14 -13
- package/dist/dev/elements/split.js.map +1 -1
- package/dist/dev/elements/switch.d.ts +2 -2
- package/dist/dev/elements/switch.js +38 -47
- package/dist/dev/elements/switch.js.map +1 -1
- package/dist/dev/elements/toggle.js +32 -49
- package/dist/dev/elements/toggle.js.map +1 -1
- package/dist/dev/elements/value-element.d.ts +11 -5
- package/dist/dev/elements/value-element.js +72 -94
- package/dist/dev/elements/value-element.js.map +1 -1
- package/dist/dev/elements/value-gestures.js +22 -22
- package/dist/dev/elements/value-gestures.js.map +1 -1
- package/dist/dev/elements/wave-element.d.ts +8 -5
- package/dist/dev/elements/wave-element.js +30 -20
- package/dist/dev/elements/wave-element.js.map +1 -1
- package/dist/dev/elements/waveform.d.ts +20 -22
- package/dist/dev/elements/waveform.js +42 -241
- package/dist/dev/elements/waveform.js.map +1 -1
- package/dist/dev/elements/wavestrip.d.ts +5 -1
- package/dist/dev/elements/wavestrip.js +10 -5
- package/dist/dev/elements/wavestrip.js.map +1 -1
- package/dist/dev/elements/xy.js +81 -119
- package/dist/dev/elements/xy.js.map +1 -1
- package/dist/dev/index.d.ts +5 -3
- package/dist/dev/index.js +2 -1
- package/dist/dev/lib/canvas-surface.d.ts +1 -0
- package/dist/dev/lib/canvas-surface.js +25 -0
- package/dist/dev/lib/canvas-surface.js.map +1 -1
- package/dist/dev/lib/clock.d.ts +5 -0
- package/dist/dev/lib/clock.js +24 -0
- package/dist/dev/lib/clock.js.map +1 -0
- package/dist/dev/lib/crossfade.d.ts +1 -0
- package/dist/dev/lib/crossfade.js +1 -0
- package/dist/dev/lib/crossfade.js.map +1 -1
- package/dist/dev/lib/envelope-curve.d.ts +1 -0
- package/dist/dev/lib/envelope-curve.js +1 -0
- package/dist/dev/lib/envelope-curve.js.map +1 -1
- package/dist/dev/lib/mirror-children.js.map +1 -1
- package/dist/dev/lib/owned-control.js.map +1 -1
- package/dist/dev/lib/peaks-request.d.ts +5 -0
- package/dist/dev/lib/peaks-request.js +45 -0
- package/dist/dev/lib/peaks-request.js.map +1 -0
- package/dist/dev/lib/positions.d.ts +7 -0
- package/dist/dev/lib/positions.js +59 -0
- package/dist/dev/lib/positions.js.map +1 -0
- package/dist/dev/lib/scrub.d.ts +8 -0
- package/dist/dev/lib/scrub.js +13 -0
- package/dist/dev/lib/scrub.js.map +1 -0
- package/dist/dev/lib/spoken-duration.js +31 -0
- package/dist/dev/lib/spoken-duration.js.map +1 -0
- package/dist/dev/lib/time-regions.d.ts +1 -0
- package/dist/dev/lib/time-regions.js.map +1 -1
- package/dist/dev/lib/units.d.ts +8 -0
- package/dist/dev/lib/value-model.js +63 -0
- package/dist/dev/lib/value-model.js.map +1 -0
- package/dist/dev/lib/waveform-buckets.d.ts +2 -1
- package/dist/dev/lib/waveform-buckets.js +7 -1
- package/dist/dev/lib/waveform-buckets.js.map +1 -1
- package/dist/dev/lib/waveform-scene.d.ts +11 -0
- package/dist/dev/lib/waveform-scene.js +109 -0
- package/dist/dev/lib/waveform-scene.js.map +1 -0
- package/dist/dev/lib/zoom-gesture.js +97 -1
- package/dist/dev/lib/zoom-gesture.js.map +1 -1
- package/dist/skins/amber.css +1 -0
- package/dist/skins/ivory.css +1 -0
- package/dist/skins/lime.css +1 -0
- package/dist/skins/slate.css +1 -0
- package/dist/styles/button.css +45 -11
- package/dist/styles/dial.css +10 -9
- package/dist/styles/envelope.css +10 -4
- package/dist/styles/led.css +5 -1
- package/dist/styles/material/arc.css +3 -2
- package/dist/styles/material/bracket.css +2 -2
- package/dist/styles/material/cap.css +33 -12
- package/dist/styles/material/core.css +4 -0
- package/dist/styles/material/glass.css +1 -1
- package/dist/styles/material/groove.css +4 -3
- package/dist/styles/material/keycap.css +3 -2
- package/dist/styles/material/lens.css +1 -1
- package/dist/styles/material/pane.css +5 -4
- package/dist/styles/material/readout.css +6 -6
- package/dist/styles/material/well.css +2 -2
- package/dist/styles/meter.css +2 -7
- package/dist/styles/number.css +5 -1
- package/dist/styles/panel.css +4 -3
- package/dist/styles/ring.css +1 -1
- package/dist/styles/screen.css +5 -1
- package/dist/styles/segmented.css +17 -4
- package/dist/styles/slider.css +9 -3
- package/dist/styles/spectrum.css +16 -3
- package/dist/styles/switch.css +35 -10
- package/dist/styles/toggle.css +14 -7
- package/dist/styles/waveform.css +17 -5
- package/dist/styles/wavestrip.css +11 -3
- package/dist/styles/xy.css +9 -5
- package/package.json +1 -6
- package/dist/default/dat.js +0 -51
- package/dist/default/lib/asked-value.js +0 -21
- package/dist/default/lib/fill-watch.js +0 -29
- package/dist/dev/dat.d.ts +0 -19
- package/dist/dev/dat.js +0 -52
- package/dist/dev/dat.js.map +0 -1
- package/dist/dev/lib/asked-value.js +0 -22
- package/dist/dev/lib/asked-value.js.map +0 -1
- package/dist/dev/lib/fill-watch.js +0 -30
- package/dist/dev/lib/fill-watch.js.map +0 -1
package/dist/default/dat.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { clamp } from "./lib/math.js";
|
|
2
|
-
|
|
3
|
-
//#region src/dat.ts
|
|
4
|
-
function readVersion(view) {
|
|
5
|
-
const version = view.getInt32(0, true);
|
|
6
|
-
if (version === 1 || version === 2) return version;
|
|
7
|
-
throw new Error(`A .dat file of version ${String(version)} is not one this reads`);
|
|
8
|
-
}
|
|
9
|
-
function readDatHeader(buffer) {
|
|
10
|
-
if (buffer.byteLength < 20) throw new Error("A .dat header takes at least 20 bytes");
|
|
11
|
-
const view = new DataView(buffer);
|
|
12
|
-
const version = readVersion(view);
|
|
13
|
-
const dataOffset = version === 1 ? 20 : 24;
|
|
14
|
-
if (buffer.byteLength < dataOffset) throw new Error(`A version ${String(version)} .dat header takes ${String(dataOffset)} bytes`);
|
|
15
|
-
const channels = version === 1 ? 1 : view.getInt32(20, true);
|
|
16
|
-
if (channels < 1) throw new Error("A .dat header names no channels");
|
|
17
|
-
const sampleRate = view.getInt32(8, true);
|
|
18
|
-
const samplesPerPixel = view.getInt32(12, true);
|
|
19
|
-
if (samplesPerPixel < 1) throw new Error("A .dat header names no samples per pixel");
|
|
20
|
-
return {
|
|
21
|
-
bits: (view.getUint32(4, true) & 1) === 1 ? 8 : 16,
|
|
22
|
-
channels,
|
|
23
|
-
dataOffset,
|
|
24
|
-
pairs: view.getUint32(16, true),
|
|
25
|
-
pairsPerSecond: sampleRate / samplesPerPixel,
|
|
26
|
-
sampleRate,
|
|
27
|
-
samplesPerPixel,
|
|
28
|
-
version
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function datByteRange(header, fromPair, toPair) {
|
|
32
|
-
const from = clamp(Math.floor(fromPair), 0, header.pairs);
|
|
33
|
-
const to = clamp(Math.ceil(toPair), from, header.pairs);
|
|
34
|
-
if (!(to > from)) return void 0;
|
|
35
|
-
const pairBytes = header.channels * 2 * header.bits / 8;
|
|
36
|
-
return [header.dataOffset + from * pairBytes, header.dataOffset + to * pairBytes - 1];
|
|
37
|
-
}
|
|
38
|
-
function readDatSamples(header, body, byteOffset = 0) {
|
|
39
|
-
return header.bits === 8 ? new Int8Array(body, byteOffset) : new Int16Array(body, byteOffset, Math.floor((body.byteLength - byteOffset) / 2));
|
|
40
|
-
}
|
|
41
|
-
function readDatPeaks(header, body, byteOffset = 0) {
|
|
42
|
-
return {
|
|
43
|
-
channels: header.channels,
|
|
44
|
-
fullScale: header.bits === 8 ? 128 : 32768,
|
|
45
|
-
pairsPerSecond: header.pairsPerSecond,
|
|
46
|
-
samples: readDatSamples(header, body, byteOffset)
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
//#endregion
|
|
51
|
-
export { datByteRange, readDatHeader, readDatPeaks, readDatSamples };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
//#region src/lib/asked-value.ts
|
|
2
|
-
function moveTo(cell, mapping, next) {
|
|
3
|
-
if (!Number.isFinite(next)) return false;
|
|
4
|
-
const snapped = mapping.snap(next);
|
|
5
|
-
cell.asked = snapped;
|
|
6
|
-
if (snapped === cell.value) return false;
|
|
7
|
-
cell.value = snapped;
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
function setAsked(cell, mapping, next) {
|
|
11
|
-
if (!Number.isFinite(next)) return false;
|
|
12
|
-
const hasMoved = moveTo(cell, mapping, next);
|
|
13
|
-
cell.asked = next;
|
|
14
|
-
return hasMoved;
|
|
15
|
-
}
|
|
16
|
-
function resnap(cell, mapping, fallback) {
|
|
17
|
-
cell.value = mapping.snap(cell.asked ?? fallback);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
export { moveTo, resnap, setAsked };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
//#region src/lib/fill-watch.ts
|
|
2
|
-
function bindFill(control, sizeProperty, signal) {
|
|
3
|
-
let watch;
|
|
4
|
-
const stop = () => {
|
|
5
|
-
watch?.disconnect();
|
|
6
|
-
watch = void 0;
|
|
7
|
-
};
|
|
8
|
-
signal.addEventListener("abort", stop, { once: true });
|
|
9
|
-
return (isFilling) => {
|
|
10
|
-
if (signal.aborted || isFilling === (watch !== void 0)) return;
|
|
11
|
-
stop();
|
|
12
|
-
if (!isFilling) {
|
|
13
|
-
control.style.removeProperty(sizeProperty);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const started = new ResizeObserver((entries) => {
|
|
17
|
-
const box = entries.at(-1)?.borderBoxSize[0];
|
|
18
|
-
if (!box) return;
|
|
19
|
-
requestAnimationFrame(() => {
|
|
20
|
-
if (watch === started) control.style.setProperty(sizeProperty, `${String(box.blockSize)}px`);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
watch = started;
|
|
24
|
-
started.observe(control);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { bindFill };
|
package/dist/dev/dat.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { WaveformPeaks } from "./lib/waveform-buckets.js";
|
|
2
|
-
//#region src/dat.d.ts
|
|
3
|
-
export interface DatHeader {
|
|
4
|
-
bits: 8 | 16;
|
|
5
|
-
channels: number;
|
|
6
|
-
dataOffset: number;
|
|
7
|
-
pairs: number;
|
|
8
|
-
pairsPerSecond: number;
|
|
9
|
-
sampleRate: number;
|
|
10
|
-
samplesPerPixel: number;
|
|
11
|
-
version: 1 | 2;
|
|
12
|
-
}
|
|
13
|
-
export declare function readDatHeader(buffer: ArrayBuffer): DatHeader;
|
|
14
|
-
export declare function datByteRange(header: DatHeader, fromPair: number, toPair: number): [number, number] | undefined;
|
|
15
|
-
export declare function readDatSamples(header: DatHeader, body: ArrayBuffer, byteOffset?: number): Int8Array | Int16Array;
|
|
16
|
-
export declare function readDatPeaks(header: DatHeader, body: ArrayBuffer, byteOffset?: number): WaveformPeaks;
|
|
17
|
-
//#endregion
|
|
18
|
-
export type { WaveformPeaks };
|
|
19
|
-
//# sourceMappingURL=dat.d.ts.map
|
package/dist/dev/dat.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { clamp } from "./lib/math.js";
|
|
2
|
-
|
|
3
|
-
//#region src/dat.ts
|
|
4
|
-
function readVersion(view) {
|
|
5
|
-
const version = view.getInt32(0, true);
|
|
6
|
-
if (version === 1 || version === 2) return version;
|
|
7
|
-
throw new Error(`A .dat file of version ${String(version)} is not one this reads`);
|
|
8
|
-
}
|
|
9
|
-
function readDatHeader(buffer) {
|
|
10
|
-
if (buffer.byteLength < 20) throw new Error("A .dat header takes at least 20 bytes");
|
|
11
|
-
const view = new DataView(buffer);
|
|
12
|
-
const version = readVersion(view);
|
|
13
|
-
const dataOffset = version === 1 ? 20 : 24;
|
|
14
|
-
if (buffer.byteLength < dataOffset) throw new Error(`A version ${String(version)} .dat header takes ${String(dataOffset)} bytes`);
|
|
15
|
-
const channels = version === 1 ? 1 : view.getInt32(20, true);
|
|
16
|
-
if (channels < 1) throw new Error("A .dat header names no channels");
|
|
17
|
-
const sampleRate = view.getInt32(8, true);
|
|
18
|
-
const samplesPerPixel = view.getInt32(12, true);
|
|
19
|
-
if (samplesPerPixel < 1) throw new Error("A .dat header names no samples per pixel");
|
|
20
|
-
return {
|
|
21
|
-
bits: (view.getUint32(4, true) & 1) === 1 ? 8 : 16,
|
|
22
|
-
channels,
|
|
23
|
-
dataOffset,
|
|
24
|
-
pairs: view.getUint32(16, true),
|
|
25
|
-
pairsPerSecond: sampleRate / samplesPerPixel,
|
|
26
|
-
sampleRate,
|
|
27
|
-
samplesPerPixel,
|
|
28
|
-
version
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function datByteRange(header, fromPair, toPair) {
|
|
32
|
-
const from = clamp(Math.floor(fromPair), 0, header.pairs);
|
|
33
|
-
const to = clamp(Math.ceil(toPair), from, header.pairs);
|
|
34
|
-
if (!(to > from)) return void 0;
|
|
35
|
-
const pairBytes = header.channels * 2 * header.bits / 8;
|
|
36
|
-
return [header.dataOffset + from * pairBytes, header.dataOffset + to * pairBytes - 1];
|
|
37
|
-
}
|
|
38
|
-
function readDatSamples(header, body, byteOffset = 0) {
|
|
39
|
-
return header.bits === 8 ? new Int8Array(body, byteOffset) : new Int16Array(body, byteOffset, Math.floor((body.byteLength - byteOffset) / 2));
|
|
40
|
-
}
|
|
41
|
-
function readDatPeaks(header, body, byteOffset = 0) {
|
|
42
|
-
return {
|
|
43
|
-
channels: header.channels,
|
|
44
|
-
fullScale: header.bits === 8 ? 128 : 32768,
|
|
45
|
-
pairsPerSecond: header.pairsPerSecond,
|
|
46
|
-
samples: readDatSamples(header, body, byteOffset)
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
//#endregion
|
|
51
|
-
export { datByteRange, readDatHeader, readDatPeaks, readDatSamples };
|
|
52
|
-
//# sourceMappingURL=dat.js.map
|
package/dist/dev/dat.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dat.js","names":[],"sources":["../../src/dat.ts"],"sourcesContent":["import type { WaveformPeaks } from '#lib/waveform-buckets.ts';\n\nimport { clamp } from '#lib/math.ts';\n\nexport type { WaveformPeaks } from '#lib/waveform-buckets.ts';\n\nexport interface DatHeader {\n\tbits: 8 | 16;\n\tchannels: number;\n\tdataOffset: number;\n\tpairs: number;\n\tpairsPerSecond: number;\n\tsampleRate: number;\n\tsamplesPerPixel: number;\n\tversion: 1 | 2;\n}\n\nfunction readVersion(view: DataView): 1 | 2 {\n\tconst version = view.getInt32(0, true);\n\tif (version === 1 || version === 2) return version;\n\n\tthrow new Error(`A .dat file of version ${String(version)} is not one this reads`);\n}\n\nexport function readDatHeader(buffer: ArrayBuffer): DatHeader {\n\tif (buffer.byteLength < 20) throw new Error('A .dat header takes at least 20 bytes');\n\n\tconst view = new DataView(buffer);\n\tconst version = readVersion(view);\n\tconst dataOffset = version === 1 ? 20 : 24;\n\tif (buffer.byteLength < dataOffset) {\n\t\tthrow new Error(`A version ${String(version)} .dat header takes ${String(dataOffset)} bytes`);\n\t}\n\n\tconst channels = version === 1 ? 1 : view.getInt32(20, true);\n\tif (channels < 1) throw new Error('A .dat header names no channels');\n\n\tconst sampleRate = view.getInt32(8, true);\n\tconst samplesPerPixel = view.getInt32(12, true);\n\tif (samplesPerPixel < 1) throw new Error('A .dat header names no samples per pixel');\n\n\treturn {\n\t\tbits: (view.getUint32(4, true) & 1) === 1 ? 8 : 16,\n\t\tchannels,\n\t\tdataOffset,\n\t\tpairs: view.getUint32(16, true),\n\t\tpairsPerSecond: sampleRate / samplesPerPixel,\n\t\tsampleRate,\n\t\tsamplesPerPixel,\n\t\tversion,\n\t};\n}\n\nexport function datByteRange(\n\theader: DatHeader,\n\tfromPair: number,\n\ttoPair: number,\n): [number, number] | undefined {\n\tconst from = clamp(Math.floor(fromPair), 0, header.pairs);\n\tconst to = clamp(Math.ceil(toPair), from, header.pairs);\n\t// A server ignores an inverted `Range` and sends the whole file\n\tif (!(to > from)) return undefined;\n\n\tconst pairBytes = (header.channels * 2 * header.bits) / 8;\n\n\treturn [header.dataOffset + from * pairBytes, header.dataOffset + to * pairBytes - 1];\n}\n\n// Typed arrays read the platform's byte order; every browser platform is little-endian, as the format is\n// A range response can end mid-sample; the odd byte is dropped\nexport function readDatSamples(\n\theader: DatHeader,\n\tbody: ArrayBuffer,\n\tbyteOffset = 0,\n): Int8Array | Int16Array {\n\treturn header.bits === 8\n\t\t? new Int8Array(body, byteOffset)\n\t\t: new Int16Array(body, byteOffset, Math.floor((body.byteLength - byteOffset) / 2));\n}\n\nexport function readDatPeaks(header: DatHeader, body: ArrayBuffer, byteOffset = 0): WaveformPeaks {\n\treturn {\n\t\tchannels: header.channels,\n\t\tfullScale: header.bits === 8 ? 128 : 32_768,\n\t\tpairsPerSecond: header.pairsPerSecond,\n\t\tsamples: readDatSamples(header, body, byteOffset),\n\t};\n}\n"],"mappings":";;;AAiBA,SAAS,YAAY,MAAuB;CAC3C,MAAM,UAAU,KAAK,SAAS,GAAG,IAAI;CACrC,IAAI,YAAY,KAAK,YAAY,GAAG,OAAO;CAE3C,MAAM,IAAI,MAAM,0BAA0B,OAAO,OAAO,EAAE,uBAAuB;AAClF;AAEA,SAAgB,cAAc,QAAgC;CAC7D,IAAI,OAAO,aAAa,IAAI,MAAM,IAAI,MAAM,uCAAuC;CAEnF,MAAM,OAAO,IAAI,SAAS,MAAM;CAChC,MAAM,UAAU,YAAY,IAAI;CAChC,MAAM,aAAa,YAAY,IAAI,KAAK;CACxC,IAAI,OAAO,aAAa,YACvB,MAAM,IAAI,MAAM,aAAa,OAAO,OAAO,EAAE,qBAAqB,OAAO,UAAU,EAAE,OAAO;CAG7F,MAAM,WAAW,YAAY,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI;CAC3D,IAAI,WAAW,GAAG,MAAM,IAAI,MAAM,iCAAiC;CAEnE,MAAM,aAAa,KAAK,SAAS,GAAG,IAAI;CACxC,MAAM,kBAAkB,KAAK,SAAS,IAAI,IAAI;CAC9C,IAAI,kBAAkB,GAAG,MAAM,IAAI,MAAM,0CAA0C;CAEnF,OAAO;EACN,OAAO,KAAK,UAAU,GAAG,IAAI,IAAI,OAAO,IAAI,IAAI;EAChD;EACA;EACA,OAAO,KAAK,UAAU,IAAI,IAAI;EAC9B,gBAAgB,aAAa;EAC7B;EACA;EACA;CACD;AACD;AAEA,SAAgB,aACf,QACA,UACA,QAC+B;CAC/B,MAAM,OAAO,MAAM,KAAK,MAAM,QAAQ,GAAG,GAAG,OAAO,KAAK;CACxD,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,GAAG,MAAM,OAAO,KAAK;CAEtD,IAAI,EAAE,KAAK,OAAO,OAAO;CAEzB,MAAM,YAAa,OAAO,WAAW,IAAI,OAAO,OAAQ;CAExD,OAAO,CAAC,OAAO,aAAa,OAAO,WAAW,OAAO,aAAa,KAAK,YAAY,CAAC;AACrF;AAIA,SAAgB,eACf,QACA,MACA,aAAa,GACY;CACzB,OAAO,OAAO,SAAS,IACpB,IAAI,UAAU,MAAM,UAAU,IAC9B,IAAI,WAAW,MAAM,YAAY,KAAK,OAAO,KAAK,aAAa,cAAc,CAAC,CAAC;AACnF;AAEA,SAAgB,aAAa,QAAmB,MAAmB,aAAa,GAAkB;CACjG,OAAO;EACN,UAAU,OAAO;EACjB,WAAW,OAAO,SAAS,IAAI,MAAM;EACrC,gBAAgB,OAAO;EACvB,SAAS,eAAe,QAAQ,MAAM,UAAU;CACjD;AACD"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
//#region src/lib/asked-value.ts
|
|
2
|
-
function moveTo(cell, mapping, next) {
|
|
3
|
-
if (!Number.isFinite(next)) return false;
|
|
4
|
-
const snapped = mapping.snap(next);
|
|
5
|
-
cell.asked = snapped;
|
|
6
|
-
if (snapped === cell.value) return false;
|
|
7
|
-
cell.value = snapped;
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
function setAsked(cell, mapping, next) {
|
|
11
|
-
if (!Number.isFinite(next)) return false;
|
|
12
|
-
const hasMoved = moveTo(cell, mapping, next);
|
|
13
|
-
cell.asked = next;
|
|
14
|
-
return hasMoved;
|
|
15
|
-
}
|
|
16
|
-
function resnap(cell, mapping, fallback) {
|
|
17
|
-
cell.value = mapping.snap(cell.asked ?? fallback);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
export { moveTo, resnap, setAsked };
|
|
22
|
-
//# sourceMappingURL=asked-value.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"asked-value.js","names":[],"sources":["../../../src/lib/asked-value.ts"],"sourcesContent":["import type { ValueMapping } from '#lib/value-mapping.ts';\n\nexport interface AskedValue {\n\tasked: number | undefined;\n\tvalue: number;\n}\n\n// A gesture: what was asked is the snapped value\n// eslint-disable-next-line unicorn/consistent-boolean-name -- a writer; the result says whether the value moved\nexport function moveTo(cell: AskedValue, mapping: ValueMapping, next: number): boolean {\n\tif (!Number.isFinite(next)) return false;\n\n\tconst snapped = mapping.snap(next);\n\n\tcell.asked = snapped;\n\tif (snapped === cell.value) return false;\n\n\tcell.value = snapped;\n\n\treturn true;\n}\n\n// A host write: the raw ask survives a change of range\n// eslint-disable-next-line unicorn/consistent-boolean-name -- a writer; the result says whether the value moved\nexport function setAsked(cell: AskedValue, mapping: ValueMapping, next: number): boolean {\n\tif (!Number.isFinite(next)) return false;\n\n\tconst hasMoved = moveTo(cell, mapping, next);\n\n\tcell.asked = next;\n\n\treturn hasMoved;\n}\n\nexport function resnap(cell: AskedValue, mapping: ValueMapping, fallback: number): void {\n\tcell.value = mapping.snap(cell.asked ?? fallback);\n}\n"],"mappings":";AASA,SAAgB,OAAO,MAAkB,SAAuB,MAAuB;CACtF,IAAI,CAAC,OAAO,SAAS,IAAI,GAAG,OAAO;CAEnC,MAAM,UAAU,QAAQ,KAAK,IAAI;CAEjC,KAAK,QAAQ;CACb,IAAI,YAAY,KAAK,OAAO,OAAO;CAEnC,KAAK,QAAQ;CAEb,OAAO;AACR;AAIA,SAAgB,SAAS,MAAkB,SAAuB,MAAuB;CACxF,IAAI,CAAC,OAAO,SAAS,IAAI,GAAG,OAAO;CAEnC,MAAM,WAAW,OAAO,MAAM,SAAS,IAAI;CAE3C,KAAK,QAAQ;CAEb,OAAO;AACR;AAEA,SAAgB,OAAO,MAAkB,SAAuB,UAAwB;CACvF,KAAK,QAAQ,QAAQ,KAAK,KAAK,SAAS,QAAQ;AACjD"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
//#region src/lib/fill-watch.ts
|
|
2
|
-
function bindFill(control, sizeProperty, signal) {
|
|
3
|
-
let watch;
|
|
4
|
-
const stop = () => {
|
|
5
|
-
watch?.disconnect();
|
|
6
|
-
watch = void 0;
|
|
7
|
-
};
|
|
8
|
-
signal.addEventListener("abort", stop, { once: true });
|
|
9
|
-
return (isFilling) => {
|
|
10
|
-
if (signal.aborted || isFilling === (watch !== void 0)) return;
|
|
11
|
-
stop();
|
|
12
|
-
if (!isFilling) {
|
|
13
|
-
control.style.removeProperty(sizeProperty);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
const started = new ResizeObserver((entries) => {
|
|
17
|
-
const box = entries.at(-1)?.borderBoxSize[0];
|
|
18
|
-
if (!box) return;
|
|
19
|
-
requestAnimationFrame(() => {
|
|
20
|
-
if (watch === started) control.style.setProperty(sizeProperty, `${String(box.blockSize)}px`);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
watch = started;
|
|
24
|
-
started.observe(control);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { bindFill };
|
|
30
|
-
//# sourceMappingURL=fill-watch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fill-watch.js","names":[],"sources":["../../../src/lib/fill-watch.ts"],"sourcesContent":["export function bindFill(\n\tcontrol: HTMLElement,\n\tsizeProperty: `--_sonic-${string}`,\n\tsignal: AbortSignal,\n): (isFilling: boolean) => void {\n\tlet watch: ResizeObserver | undefined;\n\n\tconst stop = (): void => {\n\t\twatch?.disconnect();\n\t\twatch = undefined;\n\t};\n\n\tsignal.addEventListener('abort', stop, { once: true });\n\n\treturn (isFilling) => {\n\t\tif (signal.aborted || isFilling === (watch !== undefined)) return;\n\n\t\tstop();\n\t\tif (!isFilling) {\n\t\t\tcontrol.style.removeProperty(sizeProperty);\n\t\t\treturn;\n\t\t}\n\n\t\tconst started = new ResizeObserver((entries) => {\n\t\t\tconst box = entries.at(-1)?.borderBoxSize[0];\n\t\t\tif (!box) return;\n\n\t\t\t// Written a frame on, or the canvas resizes inside this delivery and WebKit reports a loop\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (watch === started) {\n\t\t\t\t\tcontrol.style.setProperty(sizeProperty, `${String(box.blockSize)}px`);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\twatch = started;\n\t\tstarted.observe(control);\n\t};\n}\n"],"mappings":";AAAA,SAAgB,SACf,SACA,cACA,QAC+B;CAC/B,IAAI;CAEJ,MAAM,aAAmB;EACxB,OAAO,WAAW;EAClB,QAAQ;CACT;CAEA,OAAO,iBAAiB,SAAS,MAAM,EAAE,MAAM,KAAK,CAAC;CAErD,QAAQ,cAAc;EACrB,IAAI,OAAO,WAAW,eAAe,UAAU,SAAY;EAE3D,KAAK;EACL,IAAI,CAAC,WAAW;GACf,QAAQ,MAAM,eAAe,YAAY;GACzC;EACD;EAEA,MAAM,UAAU,IAAI,gBAAgB,YAAY;GAC/C,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,cAAc;GAC1C,IAAI,CAAC,KAAK;GAGV,4BAA4B;IAC3B,IAAI,UAAU,SACb,QAAQ,MAAM,YAAY,cAAc,GAAG,OAAO,IAAI,SAAS,EAAE,GAAG;GAEtE,CAAC;EACF,CAAC;EAED,QAAQ;EACR,QAAQ,QAAQ,OAAO;CACxB;AACD"}
|