@opendaw/studio-core 0.0.101 → 0.0.102
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/dist/AssetService.js +2 -2
- package/dist/EffectFactories.d.ts +2 -0
- package/dist/EffectFactories.d.ts.map +1 -1
- package/dist/EffectFactories.js +5 -0
- package/dist/Engine.d.ts +3 -0
- package/dist/Engine.d.ts.map +1 -1
- package/dist/EngineFacade.d.ts +3 -0
- package/dist/EngineFacade.d.ts.map +1 -1
- package/dist/EngineFacade.js +20 -2
- package/dist/EngineWorklet.d.ts +3 -0
- package/dist/EngineWorklet.d.ts.map +1 -1
- package/dist/EngineWorklet.js +97 -9
- package/dist/OfflineEngineRenderer.d.ts.map +1 -1
- package/dist/OfflineEngineRenderer.js +1 -0
- package/dist/StudioPreferences.d.ts +1 -0
- package/dist/StudioPreferences.d.ts.map +1 -1
- package/dist/StudioSettings.d.ts +1 -0
- package/dist/StudioSettings.d.ts.map +1 -1
- package/dist/StudioSettings.js +4 -2
- package/dist/capture/CaptureAudio.d.ts +3 -1
- package/dist/capture/CaptureAudio.d.ts.map +1 -1
- package/dist/capture/CaptureAudio.js +43 -18
- package/dist/capture/MonitoringMode.d.ts +2 -0
- package/dist/capture/MonitoringMode.d.ts.map +1 -0
- package/dist/capture/MonitoringMode.js +1 -0
- package/dist/capture/index.d.ts +1 -0
- package/dist/capture/index.d.ts.map +1 -1
- package/dist/capture/index.js +1 -0
- package/dist/dawproject/DawProjectImporter.d.ts.map +1 -1
- package/dist/dawproject/DawProjectImporter.js +4 -0
- package/dist/processors.js +9 -9
- package/dist/processors.js.map +4 -4
- package/dist/project/Project.d.ts +1 -0
- package/dist/project/Project.d.ts.map +1 -1
- package/dist/project/Project.js +25 -7
- package/dist/project/ProjectApi.d.ts +1 -1
- package/dist/project/ProjectApi.d.ts.map +1 -1
- package/dist/project/ProjectApi.js +5 -2
- package/dist/project/ProjectMigration.d.ts.map +1 -1
- package/dist/project/ProjectMigration.js +3 -2
- package/dist/project/migration/MigrateNeuralAmpDeviceBox.d.ts +4 -0
- package/dist/project/migration/MigrateNeuralAmpDeviceBox.d.ts.map +1 -0
- package/dist/project/migration/MigrateNeuralAmpDeviceBox.js +29 -0
- package/dist/project/migration/index.d.ts +1 -0
- package/dist/project/migration/index.d.ts.map +1 -1
- package/dist/project/migration/index.js +1 -0
- package/dist/ui/clipboard/ClipboardManager.d.ts.map +1 -1
- package/dist/ui/clipboard/ClipboardManager.js +20 -6
- package/dist/ui/clipboard/ClipboardUtils.js +3 -3
- package/dist/ui/clipboard/types/DevicesClipboardHandler.js +1 -1
- package/dist/workers-main.js +1 -1
- package/dist/workers-main.js.map +3 -3
- package/package.json +15 -15
|
@@ -48,6 +48,7 @@ export declare class Project implements BoxAdaptersContext, Terminable, Terminab
|
|
|
48
48
|
readonly engine: EngineFacade;
|
|
49
49
|
private constructor();
|
|
50
50
|
startAudioWorklet(restart?: RestartWorklet, options?: ProcessorOptions): EngineWorklet;
|
|
51
|
+
handleCpuOverload(): void;
|
|
51
52
|
startRecording(countIn?: boolean): void;
|
|
52
53
|
follow(box: UserInterfaceBox): void;
|
|
53
54
|
own<T extends Terminable>(terminable: T): T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../src/project/Project.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Project.d.ts","sourceRoot":"","sources":["../../src/project/Project.ts"],"names":[],"mappings":"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"}
|
package/dist/project/Project.js
CHANGED
|
@@ -14,7 +14,7 @@ import { TimeBase } from "@opendaw/lib-dsp";
|
|
|
14
14
|
import { MidiData } from "@opendaw/lib-midi";
|
|
15
15
|
import { StudioPreferences } from "../StudioPreferences";
|
|
16
16
|
import { RegionOverlapResolver, TimelineFocus } from "../ui";
|
|
17
|
-
import { SampleStorage } from "../samples
|
|
17
|
+
import { SampleStorage } from "../samples";
|
|
18
18
|
// Main Entry Point for a Project
|
|
19
19
|
export class Project {
|
|
20
20
|
static new(env, options) {
|
|
@@ -72,6 +72,8 @@ export class Project {
|
|
|
72
72
|
overlapResolver;
|
|
73
73
|
timelineFocus;
|
|
74
74
|
engine = new EngineFacade();
|
|
75
|
+
#rootBoxAdapter;
|
|
76
|
+
#timelineBoxAdapter;
|
|
75
77
|
constructor(env, boxGraph, { rootBox, userInterfaceBoxes, primaryAudioBus, primaryAudioOutputUnit, timelineBox }) {
|
|
76
78
|
this.#env = env;
|
|
77
79
|
this.boxGraph = boxGraph;
|
|
@@ -89,12 +91,14 @@ export class Project {
|
|
|
89
91
|
fx: (adapter) => adapter.box,
|
|
90
92
|
fy: vertex => this.boxAdapters.adapterFor(vertex.box, Devices.isAny)
|
|
91
93
|
}));
|
|
92
|
-
this
|
|
94
|
+
this.#timelineBoxAdapter = this.boxAdapters.adapterFor(this.timelineBox, TimelineBoxAdapter);
|
|
95
|
+
this.tempoMap = this.#terminator.own(new VaryingTempoMap(this.#timelineBoxAdapter));
|
|
93
96
|
this.userEditingManager = new UserEditingManager(this.editing);
|
|
94
97
|
this.liveStreamReceiver = this.#terminator.own(new LiveStreamReceiver());
|
|
95
98
|
this.midiLearning = this.#terminator.own(new MIDILearning(this));
|
|
96
99
|
this.captureDevices = this.#terminator.own(new CaptureDevices(this));
|
|
97
|
-
this
|
|
100
|
+
this.#rootBoxAdapter = this.boxAdapters.adapterFor(this.rootBox, RootBoxAdapter);
|
|
101
|
+
this.mixer = new Mixer(this.#rootBoxAdapter.audioUnits);
|
|
98
102
|
this.overlapResolver = new RegionOverlapResolver(this.editing, this.api, this.boxAdapters);
|
|
99
103
|
this.timelineFocus = this.#terminator.own(new TimelineFocus());
|
|
100
104
|
console.debug(`Project was created on ${this.rootBoxAdapter.created.toString()}`);
|
|
@@ -135,6 +139,16 @@ export class Project {
|
|
|
135
139
|
this.engine.setWorklet(worklet);
|
|
136
140
|
return worklet;
|
|
137
141
|
}
|
|
142
|
+
handleCpuOverload() {
|
|
143
|
+
if (!StudioPreferences.settings.engine["stop-playback-when-overloading"]) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this.engine.sleep();
|
|
147
|
+
RuntimeNotifier.info({
|
|
148
|
+
headline: "CPU Overload Detected",
|
|
149
|
+
message: "Playback has been stopped. Try removing heavy plugins or effects."
|
|
150
|
+
}).finally();
|
|
151
|
+
}
|
|
138
152
|
startRecording(countIn = true) {
|
|
139
153
|
this.engine.assertWorklet();
|
|
140
154
|
if (Recording.isRecording) {
|
|
@@ -151,8 +165,8 @@ export class Project {
|
|
|
151
165
|
ownAll(...terminables) { return this.#terminator.ownAll(...terminables); }
|
|
152
166
|
spawn() { return this.#terminator.spawn(); }
|
|
153
167
|
get env() { return this.#env; }
|
|
154
|
-
get rootBoxAdapter() { return this
|
|
155
|
-
get timelineBoxAdapter() { return this
|
|
168
|
+
get rootBoxAdapter() { return this.#rootBoxAdapter; }
|
|
169
|
+
get timelineBoxAdapter() { return this.#timelineBoxAdapter; }
|
|
156
170
|
get sampleManager() { return this.#env.sampleManager; }
|
|
157
171
|
get soundfontManager() { return this.#env.soundfontManager; }
|
|
158
172
|
get clipSequencing() { return panic("Only available in audio context"); }
|
|
@@ -217,8 +231,8 @@ export class Project {
|
|
|
217
231
|
return Project.load({ ...this.#env, ...env }, this.toArrayBuffer());
|
|
218
232
|
}
|
|
219
233
|
invalid() {
|
|
220
|
-
|
|
221
|
-
|
|
234
|
+
const now = performance.now();
|
|
235
|
+
const result = this.boxGraph.boxes().some(box => box.accept({
|
|
222
236
|
visitTrackBox: (box) => {
|
|
223
237
|
for (const [current, next] of Arrays.iterateAdjacent(box.regions.pointerHub.incoming()
|
|
224
238
|
.map(({ box }) => UnionBoxTypes.asRegionBox(box))
|
|
@@ -233,6 +247,10 @@ export class Project {
|
|
|
233
247
|
return false;
|
|
234
248
|
}
|
|
235
249
|
}) ?? false);
|
|
250
|
+
if (performance.now() - now > 5) {
|
|
251
|
+
console.warn("Evaluation of invalid project takes more than 5ms");
|
|
252
|
+
}
|
|
253
|
+
return result;
|
|
236
254
|
}
|
|
237
255
|
lastRegionAction() {
|
|
238
256
|
return this.rootBoxAdapter.audioUnits.adapters()
|
|
@@ -59,7 +59,7 @@ export declare class ProjectApi {
|
|
|
59
59
|
createNotStretchedClip(props: AudioContentFactory.NotStretchedProps & AudioContentFactory.Clip): AudioClipBox;
|
|
60
60
|
createNotStretchedRegion(props: AudioContentFactory.NotStretchedProps & AudioContentFactory.Region): AudioRegionBox;
|
|
61
61
|
createNoteClip(trackBox: TrackBox, clipIndex: int, { name, hue }?: ClipRegionOptions): NoteClipBox;
|
|
62
|
-
duplicateRegion<R extends AnyRegionBoxAdapter>(region: R): R
|
|
62
|
+
duplicateRegion<R extends AnyRegionBoxAdapter>(region: R): Option<R>;
|
|
63
63
|
quantiseNotes(collection: NoteEventCollectionBox, { positionQuantisation, durationQuantisation }: QuantiseNotesOptions): void;
|
|
64
64
|
createValueClip(trackBox: TrackBox, clipIndex: int, { name, hue }?: ClipRegionOptions): ValueClipBox;
|
|
65
65
|
createNoteRegion({ trackBox, position, duration, loopOffset, loopDuration, eventOffset, eventCollection, mute, name, hue }: NoteRegionParams): NoteRegionBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectApi.d.ts","sourceRoot":"","sources":["../../src/project/ProjectApi.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ProjectApi.d.ts","sourceRoot":"","sources":["../../src/project/ProjectApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,7 +110,10 @@ export class ProjectApi {
|
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
duplicateRegion(region) {
|
|
113
|
-
|
|
113
|
+
if (region.trackBoxAdapter.isEmpty()) {
|
|
114
|
+
return Option.None;
|
|
115
|
+
}
|
|
116
|
+
const track = region.trackBoxAdapter.unwrap();
|
|
114
117
|
const clearFrom = region.position + region.duration;
|
|
115
118
|
const clearTo = region.complete + region.duration;
|
|
116
119
|
// Resolve target track (for keep-existing mode)
|
|
@@ -125,7 +128,7 @@ export class ProjectApi {
|
|
|
125
128
|
});
|
|
126
129
|
// Apply overlap resolution
|
|
127
130
|
solver();
|
|
128
|
-
return duplicate;
|
|
131
|
+
return Option.wrap(duplicate);
|
|
129
132
|
}
|
|
130
133
|
quantiseNotes(collection, { positionQuantisation, durationQuantisation }) {
|
|
131
134
|
if (isAbsent(positionQuantisation) && isAbsent(durationQuantisation)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectMigration.d.ts","sourceRoot":"","sources":["../../src/project/ProjectMigration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectMigration.d.ts","sourceRoot":"","sources":["../../src/project/ProjectMigration.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAA;AAExD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAiBvC,qBAAa,gBAAgB;WACZ,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,EAAC,QAAQ,EAAE,cAAc,EAAC,EAAE,eAAe;CA8DpF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GrooveShuffleBox } from "@opendaw/studio-boxes";
|
|
2
2
|
import { asInstanceOf, UUID } from "@opendaw/lib-std";
|
|
3
|
-
import { migrateAudioClipBox, migrateAudioFileBox, migrateAudioRegionBox, migrateAudioUnitBox, migrateDelayDeviceBox, migrateMIDIOutputDeviceBox, migrateRevampDeviceBox, migrateTimelineBox, migrateValueEventBox, migrateValueEventCollection, migrateVaporisateurDeviceBox, migrateZeitgeistDeviceBox } from "./migration";
|
|
3
|
+
import { migrateAudioClipBox, migrateAudioFileBox, migrateAudioRegionBox, migrateAudioUnitBox, migrateDelayDeviceBox, migrateMIDIOutputDeviceBox, migrateNeuralAmpDeviceBox, migrateRevampDeviceBox, migrateTimelineBox, migrateValueEventBox, migrateValueEventCollection, migrateVaporisateurDeviceBox, migrateZeitgeistDeviceBox } from "./migration";
|
|
4
4
|
export class ProjectMigration {
|
|
5
5
|
static async migrate(env, { boxGraph, mandatoryBoxes }) {
|
|
6
6
|
const { rootBox, timelineBox: { bpm } } = mandatoryBoxes;
|
|
@@ -46,7 +46,8 @@ export class ProjectMigration {
|
|
|
46
46
|
// 1st pass (2nd pass might rely on those changes)
|
|
47
47
|
for (const box of boxGraph.boxes()) {
|
|
48
48
|
await box.accept({
|
|
49
|
-
visitAudioFileBox: (box) => migrateAudioFileBox(boxGraph, box, loadAudioData)
|
|
49
|
+
visitAudioFileBox: (box) => migrateAudioFileBox(boxGraph, box, loadAudioData),
|
|
50
|
+
visitNeuralAmpDeviceBox: (box) => migrateNeuralAmpDeviceBox(boxGraph, box)
|
|
50
51
|
});
|
|
51
52
|
}
|
|
52
53
|
// 2nd pass. We need to run on a copy, because we might add more boxes during the migration
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { BoxGraph } from "@opendaw/lib-box";
|
|
2
|
+
import { BoxIO, NeuralAmpDeviceBox } from "@opendaw/studio-boxes";
|
|
3
|
+
export declare const migrateNeuralAmpDeviceBox: (boxGraph: BoxGraph<BoxIO.TypeMap>, box: NeuralAmpDeviceBox) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=MigrateNeuralAmpDeviceBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateNeuralAmpDeviceBox.d.ts","sourceRoot":"","sources":["../../../src/project/migration/MigrateNeuralAmpDeviceBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAC,KAAK,EAAE,kBAAkB,EAAoB,MAAM,uBAAuB,CAAA;AAElF,eAAO,MAAM,yBAAyB,GAAU,UAAU,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAsBxH,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { UUID } from "@opendaw/lib-std";
|
|
2
|
+
import { NeuralAmpModelBox } from "@opendaw/studio-boxes";
|
|
3
|
+
export const migrateNeuralAmpDeviceBox = async (boxGraph, box) => {
|
|
4
|
+
const oldJson = box.modelJson.getValue();
|
|
5
|
+
if (oldJson.length === 0) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
if (box.model.targetVertex.nonEmpty()) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const jsonBuffer = new TextEncoder().encode(oldJson);
|
|
12
|
+
const uuid = await UUID.sha256(jsonBuffer.buffer);
|
|
13
|
+
let modelBox = null;
|
|
14
|
+
for (const existing of boxGraph.boxes()) {
|
|
15
|
+
if (existing instanceof NeuralAmpModelBox && UUID.equals(existing.address.uuid, uuid)) {
|
|
16
|
+
modelBox = existing;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
boxGraph.beginTransaction();
|
|
21
|
+
if (modelBox === null) {
|
|
22
|
+
modelBox = NeuralAmpModelBox.create(boxGraph, uuid);
|
|
23
|
+
modelBox.label.setValue("Imported Model");
|
|
24
|
+
modelBox.model.setValue(oldJson);
|
|
25
|
+
}
|
|
26
|
+
box.model.refer(modelBox);
|
|
27
|
+
boxGraph.endTransaction();
|
|
28
|
+
console.debug(`Migrated NeuralAmpDeviceBox to use NeuralAmpModelBox (${UUID.toString(uuid).slice(0, 8)})`);
|
|
29
|
+
};
|
|
@@ -4,6 +4,7 @@ export { migrateAudioRegionBox } from "./MigrateAudioRegionBox";
|
|
|
4
4
|
export { migrateAudioUnitBox } from "./MigrateAudioUnitBox";
|
|
5
5
|
export { migrateDelayDeviceBox } from "./MigrateDelayDeviceBox";
|
|
6
6
|
export { migrateMIDIOutputDeviceBox } from "./MigrateMIDIOutputDeviceBox";
|
|
7
|
+
export { migrateNeuralAmpDeviceBox } from "./MigrateNeuralAmpDeviceBox";
|
|
7
8
|
export { migrateRevampDeviceBox } from "./MigrateRevampDeviceBox";
|
|
8
9
|
export { migrateTimelineBox } from "./MigrateTimelineBox";
|
|
9
10
|
export { migrateValueEventBox } from "./MigrateValueEventBox";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/project/migration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAA;AAC3E,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/project/migration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,0BAA0B,EAAC,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAA;AAC3E,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAA"}
|
|
@@ -4,6 +4,7 @@ export { migrateAudioRegionBox } from "./MigrateAudioRegionBox";
|
|
|
4
4
|
export { migrateAudioUnitBox } from "./MigrateAudioUnitBox";
|
|
5
5
|
export { migrateDelayDeviceBox } from "./MigrateDelayDeviceBox";
|
|
6
6
|
export { migrateMIDIOutputDeviceBox } from "./MigrateMIDIOutputDeviceBox";
|
|
7
|
+
export { migrateNeuralAmpDeviceBox } from "./MigrateNeuralAmpDeviceBox";
|
|
7
8
|
export { migrateRevampDeviceBox } from "./MigrateRevampDeviceBox";
|
|
8
9
|
export { migrateTimelineBox } from "./MigrateTimelineBox";
|
|
9
10
|
export { migrateValueEventBox } from "./MigrateValueEventBox";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipboardManager.d.ts","sourceRoot":"","sources":["../../../src/ui/clipboard/ClipboardManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAa,MAAM,kBAAkB,CAAA;AASzE,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACpD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CACjC,CAAA;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,cAAc;IACtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IAChC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IACxD,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IACjB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IAChB,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CACrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAK,QAAQ,GAAG,cAAc,CAAA;IA0B9B,MAAM,CAAC,MAAM,OAAO,GAAI,CAAC,SAAS,QAAQ,EAAE,SAAS,WAAW,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,KAAG,
|
|
1
|
+
{"version":3,"file":"ClipboardManager.d.ts","sourceRoot":"","sources":["../../../src/ui/clipboard/ClipboardManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAa,MAAM,kBAAkB,CAAA;AASzE,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACpD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CACjC,CAAA;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,cAAc;IACtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IAChC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IACxD,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IACjB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IAChB,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CACrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAK,QAAQ,GAAG,cAAc,CAAA;IA0B9B,MAAM,CAAC,MAAM,OAAO,GAAI,CAAC,SAAS,QAAQ,EAAE,SAAS,WAAW,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,KAAG,YAwGhG,CAAA;;CACJ"}
|
|
@@ -41,8 +41,16 @@ export var ClipboardManager;
|
|
|
41
41
|
fallbackEntry = Option.wrap(entry);
|
|
42
42
|
navigator.clipboard?.writeText(encode(entry)).catch(() => { });
|
|
43
43
|
};
|
|
44
|
-
const performCopy = () =>
|
|
45
|
-
|
|
44
|
+
const performCopy = () => {
|
|
45
|
+
const entry = handler.copy();
|
|
46
|
+
entry.ifSome(writeEntry);
|
|
47
|
+
return entry.nonEmpty();
|
|
48
|
+
};
|
|
49
|
+
const performCut = () => {
|
|
50
|
+
const entry = handler.cut();
|
|
51
|
+
entry.ifSome(writeEntry);
|
|
52
|
+
return entry.nonEmpty();
|
|
53
|
+
};
|
|
46
54
|
const performPaste = async () => {
|
|
47
55
|
try {
|
|
48
56
|
const rawText = await navigator.clipboard.readText();
|
|
@@ -62,6 +70,7 @@ export var ClipboardManager;
|
|
|
62
70
|
return Terminable.many(Events.subscribe(element, "copy", (event) => {
|
|
63
71
|
handler.copy().ifSome(entry => {
|
|
64
72
|
event.preventDefault();
|
|
73
|
+
event.stopPropagation();
|
|
65
74
|
const encoded = encode(entry);
|
|
66
75
|
fallbackEntry = Option.wrap(entry);
|
|
67
76
|
event.clipboardData?.setData("text/plain", encoded);
|
|
@@ -69,6 +78,7 @@ export var ClipboardManager;
|
|
|
69
78
|
}), Events.subscribe(element, "cut", (event) => {
|
|
70
79
|
handler.cut().ifSome(entry => {
|
|
71
80
|
event.preventDefault();
|
|
81
|
+
event.stopPropagation();
|
|
72
82
|
const encoded = encode(entry);
|
|
73
83
|
fallbackEntry = Option.wrap(entry);
|
|
74
84
|
event.clipboardData?.setData("text/plain", encoded);
|
|
@@ -98,12 +108,16 @@ export var ClipboardManager;
|
|
|
98
108
|
return;
|
|
99
109
|
}
|
|
100
110
|
if (event.key === "c") {
|
|
101
|
-
|
|
102
|
-
|
|
111
|
+
if (performCopy()) {
|
|
112
|
+
event.preventDefault();
|
|
113
|
+
event.stopImmediatePropagation();
|
|
114
|
+
}
|
|
103
115
|
}
|
|
104
116
|
else if (event.key === "x") {
|
|
105
|
-
|
|
106
|
-
|
|
117
|
+
if (performCut()) {
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
event.stopImmediatePropagation();
|
|
120
|
+
}
|
|
107
121
|
}
|
|
108
122
|
}), ContextMenu.subscribe(element, async (collector) => {
|
|
109
123
|
if (!StudioPreferences.settings.editing["show-clipboard-menu"]) {
|
|
@@ -43,7 +43,7 @@ export var ClipboardUtils;
|
|
|
43
43
|
clipboardGraph.fromArrayBuffer(graphData.buffer);
|
|
44
44
|
const skippedExternalUuids = UUID.newSet(uuid => uuid);
|
|
45
45
|
clipboardGraph.boxes().forEach(box => {
|
|
46
|
-
if (box.resource === "
|
|
46
|
+
if (box.resource === "preserved" && targetGraph.findBox(box.address.uuid).nonEmpty()) {
|
|
47
47
|
skippedExternalUuids.add(box.address.uuid);
|
|
48
48
|
}
|
|
49
49
|
});
|
|
@@ -51,7 +51,7 @@ export var ClipboardUtils;
|
|
|
51
51
|
if (options.excludeBox?.(box)) {
|
|
52
52
|
return true;
|
|
53
53
|
}
|
|
54
|
-
if (box.resource === "
|
|
54
|
+
if (box.resource === "preserved" && skippedExternalUuids.hasKey(box.address.uuid)) {
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
57
57
|
for (const [, targetAddress] of box.outgoingEdges()) {
|
|
@@ -67,7 +67,7 @@ export var ClipboardUtils;
|
|
|
67
67
|
console.debug("Clipboard paste:", [...typeCounts.entries()].map(([type, count]) => `${type}: ${count}`).join(", "));
|
|
68
68
|
const uuidMap = UUID.newSet(({ source }) => source);
|
|
69
69
|
sourceBoxes.forEach(box => {
|
|
70
|
-
const isExternal = box.resource === "
|
|
70
|
+
const isExternal = box.resource === "preserved";
|
|
71
71
|
uuidMap.add({ source: box.address.uuid, target: isExternal ? box.address.uuid : UUID.generate() });
|
|
72
72
|
});
|
|
73
73
|
skippedExternalUuids.forEach(uuid => uuidMap.add({ source: uuid, target: uuid }));
|
|
@@ -66,7 +66,7 @@ export var DevicesClipboard;
|
|
|
66
66
|
const dependencies = deviceBoxes.flatMap(box => Array.from(boxGraph.dependenciesOf(box, {
|
|
67
67
|
alwaysFollowMandatory: true,
|
|
68
68
|
excludeBox: (dep) => dep.ephemeral || DeviceBoxUtils.isDeviceBox(dep)
|
|
69
|
-
}).boxes).filter(dep => dep.resource === "
|
|
69
|
+
}).boxes).filter(dep => dep.resource === "preserved"));
|
|
70
70
|
const allBoxes = [...deviceBoxes, ...dependencies];
|
|
71
71
|
const instrumentContent = instrument !== null
|
|
72
72
|
? instrument.box.tags.content ?? ""
|
package/dist/workers-main.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var y=i=>i!=null,ut=i=>i===null;var mt=i=>i!==void 0;var x=(i,t="asDefined failed")=>i??p(R(t));var R=i=>i instanceof Function?i():i;var dt=(i,...t)=>i?.apply(null,t);var H=i=>{throw new Error(`Unhandled ${i}`)},p=i=>{throw typeof i=="string"?new Error(i):i},S=(i,t)=>i?void 0:p(R(t));var L=i=>new Proxy({},{get(){return p(i)}});var nt=class{value;status="success";constructor(t){this.value=t}error=L("Cannot access error when succeeded")},rt=class{error;status="failure";constructor(t){this.error=t}value=L("Cannot access value when failed")},pt=i=>{try{return new nt(i())}catch(t){return new rt(t)}};var j=()=>{};var it;(function(i){i[i.Ascending=1]="Ascending",i[i.Descending=-1]="Descending"})(it||(it={}));var M=class{static#t=Object.freeze(new Array(0));static empty=()=>this.#t;static clear=t=>{t.length=0};static replace=(t,e)=>{t.length=0,t.push(...e)};static consume=(t,e)=>{for(let s=0;s<t.length;)e(t[s])?t.splice(s,1):s++};static peekFirst=t=>t.at(0)??null;static peekLast=t=>t.at(-1)??null;static getFirst=(t,e)=>x(t.at(0),e);static getLast=(t,e)=>x(t.at(-1),e);static getPrev=(t,e)=>{let s=t.indexOf(e);return s===-1?p(`${e} not found in ${t}`):x(t.at((s-1)%t.length),"Internal Error")};static getNext=(t,e)=>{let s=t.indexOf(e);return s===-1?p(`${e} not found in ${t}`):x(t.at((s+1)%t.length),"Internal Error")};static removeLast=(t,e)=>x(t.pop(),e);static create=(t,e)=>{let s=new Array(e);for(let n=0;n<e;n++)s[n]=t(n);return s};static equals=(t,e)=>{if(t.length!==e.length)return!1;for(let s=0;s<t.length;s++)if(t[s]!==e[s])return!1;return!0};static satisfy=(t,e)=>{if(t.length<2)return!0;let s=t[0];for(let n=1;n<t.length;n++)if(!e(s,t[n]))return!1;return!0};static remove=(t,e)=>{let s=t.indexOf(e);if(s===-1)return p(`${e} not found in ${t}`);t.splice(s,1)};static removeIf=(t,e)=>{for(let s=t.length-1;s>=0;s--)e(t[s])&&t.splice(s,1)};static removeOpt=(t,e)=>{let s=t.indexOf(e);return s===-1?!1:(t.splice(s,1),!0)};static hasDuplicates=t=>new Set(t).size<t.length;static removeDuplicates=t=>{let e=0,s=new Set;for(let n of t)s.has(n)||(s.add(n),t[e++]=n);return t.length=e,t};static removeDuplicateKeys=(t,e)=>{let s=0,n=new Set;for(let a of t){let o=a[e];n.has(o)||(n.add(o),t[s++]=a)}return t.length=s,t};static subtract(t,e,s){return t.filter(n=>!e.some(a=>s(n,a)))}static intersect(t,e,s){return t.filter(n=>e.some(a=>s(n,a)))}static merge(t,e,s){return[...t.filter(n=>!e.some(a=>s(n,a))),...e]}static*iterate(t){for(let e=0;e<t.length;e++)yield t[e]}static*iterateReverse(t){for(let e=t.length-1;e>=0;e--)yield t[e]}static*iterateStateFull(t){let e=t.length-1;for(let s=0;s<=e;s++)yield{value:t[s],isFirst:s===0,isLast:s===e}}static*iterateAdjacent(t){if(!(t.length<=1))for(let e=1,s=t[0];e<t.length;e++){let n=t[e];yield[s,n],s=n}}static isSorted(t,e=it.Ascending){if(t.length<2)return!0;let s=t[0];for(let n=1;n<t.length;n++){let a=t[n];if(Math.sign(s-a)===e)return!1;s=a}return!0}static toRecord(t,e){return t.reduce((s,n)=>(s[e(n)]=n,s),{})}static concatArrayBuffers(t,e){let s=new ArrayBuffer(t.byteLength+e.byteLength),n=new Uint8Array(s);return n.set(new Uint8Array(t),0),n.set(new Uint8Array(e),t.byteLength),s}};var T;(function(i){i.wrap=e=>y(e)?new t(e):i.None,i.from=e=>i.wrap(e()),i.tryCatch=e=>{try{return i.wrap(e())}catch{return i.None}},i.execute=(e,...s)=>i.wrap(e?.apply(null,s)),i.async=e=>e.then(s=>i.wrap(s),()=>i.None);class t{#t;constructor(s){this.#t=x(s)}unwrap(){return this.#t}unwrapOrElse(s){return this.#t}unwrapOrNull(){return this.#t}unwrapOrUndefined(){return this.#t}contains(s){return s===this.#t}match(s){return s.some(this.#t)}ifSome(s){return s(this.#t)}ifAbsent(s){}isEmpty(){return!1}nonEmpty(){return!0}map(s){return i.wrap(s(this.#t))}mapOr(s,n){return s(this.#t)}flatMap(s){return s(this.#t)}equals(s){return this.unwrapOrNull()===s.unwrapOrNull()}assert(s){return this}toString(){return`{Option.Some(${this.#t})}`}get[Symbol.toStringTag](){return this.toString()}}i.Some=t,i.None=new class{unwrap=e=>p(y(e)?R(e):"unwrap failed");unwrapOrElse=e=>R(e);unwrapOrNull=()=>null;unwrapOrUndefined=()=>{};contains=e=>!1;match=e=>e.none();ifSome=e=>{};ifAbsent=e=>e(void 0);isEmpty=()=>!0;nonEmpty=()=>!1;map=e=>i.None;mapOr=(e,s)=>R(s);flatMap=e=>i.None;equals=e=>e.isEmpty();assert=e=>p(R(e)??"assert failed");toString=()=>"{Option.None}";get[Symbol.toStringTag](){return this.toString()}}})(T||(T={}));var A=Math.PI*2,Ut=Math.PI/2,Vt=Math.PI/4,Ht=1/Math.sqrt(2),_=(i,t,e)=>Math.max(t,Math.min(i,e));var wt=i=>Math.pow(2,Math.ceil(Math.log(i)/Math.log(2)));var b=new DataView(new ArrayBuffer(8)),gt;(function(i){i.MIN_VALUE=-2147483648,i.MAX_VALUE=2147483647,i.toByte=t=>(b.setInt8(0,t),b.getInt8(0)),i.toShort=t=>(b.setInt16(0,t),b.getInt16(0)),i.toInt=t=>(b.setInt32(0,t),b.getInt32(0))})(gt||(gt={}));var O;(function(i){let s=new ArrayBuffer(Float32Array.BYTES_PER_ELEMENT),n=new Float32Array(s),a=new Int32Array(s);i.floatToIntBits=o=>{let r=i.floatToRawIntBits(o);return(r&2139095040)===2139095040&&(r&8388607)!==0?2143289344:r},i.intBitsToFloat=o=>(a[0]=o,n[0]),i.floatToRawIntBits=o=>(n[0]=o,a[0]),i.toFloat32=o=>(b.setFloat32(0,o),b.getFloat32(0))})(O||(O={}));var B;(function(i){i.floatToIntBits=t=>{let e=O.floatToIntBits(t),s=e>>>16&32768,n=(e&2147483647)+4096;return n>=1199570944?(e&2147483647)>=1199570944?n<2139095040?s|31744:s|31744|(e&8388607)>>>13:s|31743:n>=947912704?s|n-939524096>>>13:n<855638016?s:(n=(e&2147483647)>>>23,s|(e&8388607|8388608)+(8388608>>>n-102)>>>126-n)},i.intBitsToFloat=t=>{let e=t&1023,s=t&31744;if(s===31744)s=261120;else if(s!==0){if(s+=114688,e===0&&s>115712)return O.intBitsToFloat((t&32768)<<16|s<<13|1023)}else if(e!==0){s=115712;do e<<=1,s-=1024;while((e&1024)===0);e&=1023}return O.intBitsToFloat((t&32768)<<16|(s|e)<<13)}})(B||(B={}));var xt;(function(i){let t=9218868437227405312n,e=4503599627370495n,s=new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT),n=new Float64Array(s),a=new BigInt64Array(s);i.float64ToLongBits=o=>{let r=i.float64ToRawLongBits(o);return(r&t)===t&&(r&e)!==0n?0x7ff8000000000000n:r},i.longBitsToFloat64=o=>(a[0]=o,n[0]),i.float64ToRawLongBits=o=>(n[0]=o,a[0]),i.clamp=o=>(b.setFloat64(0,o),b.getFloat64(0))})(xt||(xt={}));var F=class{static*empty(){}static one(t){return[t]}static count(t){let e=0;for(let s of t)e++;return e}static some(t,e){for(let s of t)if(e(s))return!0;return!1}static every(t,e){for(let s of t)if(!e(s))return!1;return!0}static reduce(t,e,s){let n=s,a=0;for(let o of t)n=e(n,o,a++);return n}static includes(t,e){for(let s of t)if(s===e)return!0;return!1}static forEach(t,e){for(let s of t)e(s)}static*map(t,e){let s=0;for(let n of t)yield e(n,s++)}static*take(t,e){let s=0;for(let n of t){if(s++>=e)return;yield n}}static filter(t,e){let s=[];for(let n of t)e(n)&&s.push(n);return s}static filterMap(t,e){let s=[];for(let n of t){let a=e(n);y(a)&&s.push(a)}return s}static reverse(t){let e=[];for(let s of t)e.push(s);return e.reverse()}static*pairWise(t){let e=t[Symbol.iterator](),{done:s,value:n}=e.next(),a=n;if(s!==!0)for(;;){let{done:o,value:r}=e.next();if(o===!0){yield[a,null];return}yield[a,r],a=r}}};var G=class i{static create(t=1024){return this.use(new ArrayBuffer(t))}static use(t,e=0){return new i(new DataView(t,e))}littleEndian=!1;#t;#e=0;constructor(t){this.#t=t}get remaining(){return this.#t.byteLength-this.#e}get position(){return this.#e}set position(t){t<0?p(`position(${t}) cannot be negative.`):t>this.#t.byteLength?p(`position(${t}) is outside range (${this.#t.byteLength}).`):this.#e=t}writeBoolean(t){this.writeByte(t?1:0)}writeByte(t){this.#s(1),this.#t.setInt8(this.#e++,t)}writeShort(t){this.#s(Int16Array.BYTES_PER_ELEMENT),this.#t.setInt16(this.#e,t,this.littleEndian),this.#e+=Int16Array.BYTES_PER_ELEMENT}writeInt(t){this.#s(Int32Array.BYTES_PER_ELEMENT),this.#t.setInt32(this.#e,t,this.littleEndian),this.#e+=Int32Array.BYTES_PER_ELEMENT}writeLong(t){this.#s(BigInt64Array.BYTES_PER_ELEMENT),this.#t.setBigInt64(this.#e,t,this.littleEndian),this.#e+=BigInt64Array.BYTES_PER_ELEMENT}writeFloat(t){this.#s(Float32Array.BYTES_PER_ELEMENT),this.#t.setFloat32(this.#e,t,this.littleEndian),this.#e+=Float32Array.BYTES_PER_ELEMENT}writeDouble(t){this.#s(Float64Array.BYTES_PER_ELEMENT),this.#t.setFloat64(this.#e,t,this.littleEndian),this.#e+=Float64Array.BYTES_PER_ELEMENT}writeBytes(t){this.#s(t.length);for(let e=0;e<t.length;++e)this.#t.setInt8(this.#e++,t[e])}writeString(t){let e=t.length;this.#s(Int32Array.BYTES_PER_ELEMENT+e*Int16Array.BYTES_PER_ELEMENT),this.writeInt(e);for(let s=0;s<e;s++)this.writeShort(t.charCodeAt(s))}toArrayBuffer(){return this.#t.buffer.slice(0,this.#e)}#s(t){let e=this.#t.byteLength;if(this.#e+t>e){let s=this.#t;this.#t=new DataView(new ArrayBuffer(wt(e+t)));for(let n=0;n<this.#e;n++)this.#t.setInt8(n,s.getInt8(n))}}};var W=Object.freeze({Empty:{terminate:j},create:i=>({terminate:i}),many:(...i)=>({terminate:()=>{for(;i.length>0;)i.pop().terminate()}})});var C=class{static subscribeMany(t,...e){return W.many(...e.map(s=>s.subscribe(()=>t(s))))}#t=new Set;subscribe(t){return this.#t.add(t),{terminate:()=>this.#t.delete(t)}}isEmpty(){return this.#t.size===0}notify(t){this.#t.forEach(e=>e(t))}observers(){return this.#t}terminate(){this.#t.clear()}};var Et=(()=>{let i=T.None;return{info:t=>i.match({none:()=>Promise.resolve(),some:e=>e.info(t)}),approve:t=>i.match({none:()=>Promise.resolve(!0),some:e=>e.approve(t)}),progress:t=>i.match({none:()=>({message:"",terminate:j}),some:e=>e.progress(t)}),install:t=>{S(i.isEmpty(),"RuntimeNotification already installed"),i=T.wrap(t)}}})();var $=class i{static createEstimator=()=>{let t=performance.now(),e=i.millis(Number.POSITIVE_INFINITY),s=0;return n=>{if(n===0)return i.POSITIVE_INFINITY;if(n>=1)return i.millis(0);let a=performance.now()-t;return a>s*1e3&&(e=i.millis(a/n-a),s++),e}};static POSITIVE_INFINITY=new i(Number.POSITIVE_INFINITY);static millis=t=>new i(t);static seconds=t=>new i(t*i.#t);static minutes=t=>new i(t*i.#e);static hours=t=>new i(t*i.#s);static days=t=>new i(t*i.#n);static toHHMMSS=t=>((t/3600|0)+100).toString().slice(1)+":"+((t/60|0)%60+100).toString().slice(1)+":"+(t%60+100).toString().slice(1);static#t=1e3;static#e=6e4;static#s=36e5;static#n=864e5;#r;constructor(t){this.#r=t}millis(){return this.#r}absSeconds(){return Math.abs(this.#r)/i.#t}absMinutes(){return Math.abs(this.#r)/i.#e}absHours(){return Math.abs(this.#r)/i.#s}absDays(){return Math.abs(this.#r)/i.#n}split(){return{d:Math.floor(this.absDays()),h:Math.floor(this.absHours())%24,m:Math.floor(this.absMinutes())%60,s:Math.floor(this.absSeconds())%60}}isNow(){return this.#r===0}isPast(){return this.#r<0}isFuture(){return this.#r>0}toUnitString(){let t,e,s=Math.floor(Math.abs(this.#r)/1e3),n=Math.floor(s/60),a=Math.floor(n/60),o=Math.floor(a/24);return s<60?(t=s,e="second"):n<60?(t=n,e="minute"):a<24?(t=a,e="hour"):(t=o,e="day"),new Intl.RelativeTimeFormat("en",{numeric:"auto",style:"long"}).format(t*Math.sign(this.#r),e)}toString(){if(isNaN(this.#r))return"NaN";if(!isFinite(this.#r))return"\u221E";let{d:t,h:e,m:s,s:n}=this.split();return t>0?[i.#i("d",t),i.#i("h",e),i.#i("m",s),i.#i("s",n)].join(", "):e>0?[i.#i("h",e),i.#i("m",s),i.#i("s",n)].join(", "):s>0?[i.#i("m",s),i.#i("s",n)].join(", "):n>0?i.#i("s",n):"now"}static#i=(t,e)=>{switch(t){case"d":return`${e} ${e<2?"day":"days"}`;case"h":return`${e} ${e<2?"hour":"hours"}`;case"m":return`${e} ${e<2?"minute":"minutes"}`;case"s":return`${e} ${e<2?"second":"seconds"}`;default:return H(t)}}};var P;(function(i){class t{value;constructor(r){this.value=r}}i.Transfer=t,i.makeTransferable=o=>new t(o),i.sender=(o,r)=>r(new n(o)),i.executor=(o,r)=>new a(o,r);let e=o=>{let r=[];for(let c of o)c instanceof t?r.push(c.value):(c instanceof MessagePort||typeof ImageBitmap<"u"&&c instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&c instanceof OffscreenCanvas)&&r.push(c);return r},s=o=>o instanceof t?o.value:o;class n{#t;#e=new Map;#s;#n=0;constructor(r){this.#t=r,this.#s=r.subscribe(this.#r)}terminate(){this.#s.terminate()}dispatchAndForget=(r,...c)=>{let l=e(c);this.#t.send({type:"send",returnId:!1,func:r.name,args:Array.from(F.map(c,h=>({value:s(h)})))},l)};dispatchAndReturn=(r,...c)=>new Promise((l,h)=>{let f=F.reduce(c,(m,w,d)=>(typeof w=="function"&&m.push([d,w]),m),[]);this.#e.set(this.#n,{executorTuple:{resolve:l,reject:h},callbacks:new Map(f)});let u=e(c);this.#t.send({type:"send",returnId:this.#n,func:r.name,args:Array.from(F.map(c,(m,w)=>typeof m=="function"?{callback:w}:{value:s(m)}))},u),this.#n++});#r=r=>{let c=this.#e.get(r.returnId);y(c)?r.type==="resolve"?(c.executorTuple.resolve(r.resolve),this.#e.delete(r.returnId)):r.type==="reject"?(c.executorTuple.reject(r.reject),this.#e.delete(r.returnId)):r.type==="callback"&&c.callbacks?.get(r.funcAt).apply(this,r.args):p(`Promise has already been resolved. ${JSON.stringify(r)}`)}}class a{#t;#e;#s;constructor(r,c){this.#t=r,this.#e=c,this.#s=r.subscribe(this.#n)}terminate(){this.#s.terminate()}#n=r=>{S(r.type==="send",()=>"Message type must be 'send'");let c=Object.getPrototypeOf(this.#e)===Object.getPrototypeOf({})?this.#e:Object.getPrototypeOf(this.#e),l=x(c[r.func],`${r.func.toString()} does not exists on ${this.#e}`),h=r.returnId;if(h===!1)l.apply(this.#e,r.args.map(f=>"value"in f?f.value:p(`${r.func.toString()} has no promise.`)));else try{l.apply(this.#e,r.args.map(u=>"callback"in u?(...m)=>this.#a(h,u.callback,m):u.value)).then(u=>{try{this.#r(h,u)}catch(m){this.#i(h,m)}},u=>this.#i(h,u))}catch(f){this.#i(h,f)}};#r=(r,c)=>this.#t.send({type:"resolve",returnId:r,resolve:c});#i=(r,c)=>this.#t.send({type:"reject",returnId:r,reject:c});#a=(r,c,l)=>this.#t.send({type:"callback",returnId:r,funcAt:c,args:l})}i.Executor=a})(P||(P={}));var yt={for:i=>new ot(i)},Nt=[],ot=class{#t;#e=new C;constructor(t){if(this.#t=t,y(t.onmessage)||y(t.onmessageerror))throw console.error(t),new Error(`${t} is already wrapped.`);t.onmessage=e=>this.#e.notify(e.data),t.onmessageerror=e=>{throw new Error(e.type)}}send(t,e){this.#t.postMessage(t,e??Nt)}channel(t){return new at(this,t)}subscribe(t){return this.#e.subscribe(t)}terminate(){this.#e.terminate(),this.#t.onmessage=null,this.#t.onmessageerror=null}},at=class i{#t;#e;#s=new C;#n;constructor(t,e){this.#t=t,this.#e=e,this.#n=t.subscribe(s=>{"__id__"in s&&s.__id__==="42"&&"message"in s&&"channel"in s&&s.channel===e&&this.#s.notify(s.message)})}send(t,e){this.#t.send({__id__:"42",channel:this.#e,message:t},e)}channel(t){return new i(this,t)}subscribe(t){return this.#s.subscribe(t)}terminate(){this.#n.terminate(),this.#s.terminate()}};var D;(function(i){i.frame=()=>new Promise(t=>requestAnimationFrame(()=>t())),i.frames=t=>new Promise(e=>{let s=t,n=()=>{--s<=0?e():requestAnimationFrame(n)};requestAnimationFrame(n)}),i.timeSpan=(t,...e)=>new Promise(s=>setTimeout(s,t.millis(),...e)),i.event=(t,e)=>new Promise(s=>t.addEventListener(e,s,{once:!0})),i.observable=t=>new Promise(e=>{let s=t.subscribe(()=>{s.terminate(),e()})}),i.complete=t=>new Promise((e,s)=>{let n=setInterval(()=>{let{status:a,value:o,error:r}=pt(()=>t.next());if(a==="success"){let{done:c,value:l}=o;c&&(clearInterval(n),e(l))}else clearInterval(n),s(r)},0)})})(D||(D={}));var ct=class{maxRetry;timeSpan;#t=0;constructor(t,e){this.maxRetry=t,this.timeSpan=e}retry(t,e){return++this.#t===this.maxRetry?!1:(console.debug(`${t} > will retry in ${this.timeSpan.toString()}`),setTimeout(e,this.timeSpan.millis()),!0)}},K;(function(i){class t{value;status="resolved";constructor(r){this.value=r}error=L("Cannot access error when promise is resolved")}i.ResolveResult=t;class e{error;status="rejected";constructor(r){this.error=r}value=L("Cannot access value when promise is rejected")}i.RejectedResult=e,i.makeAbortable=async(o,r)=>{let c=!0;return o.own(W.create(()=>c=!1)),new Promise((l,h)=>r.then(f=>{c&&l(f)},f=>{c&&h(f)}))},i.tryCatch=o=>o.then(r=>new t(r),r=>new e(r));let s=new ct(3,$.seconds(3));i.retry=(o,r=s)=>o().catch(c=>new Promise((l,h)=>{let f=u=>{r.retry(u,()=>o().then(m=>l(m),f))||h(u)};f(c)})),i.guardedRetry=(o,r)=>{let c=async(l=0)=>{try{return await o()}catch(h){if(r(h,++l))return console.debug(`retry after failure (online: ${navigator.onLine}):`,h),await D.timeSpan($.seconds(1)),c(l);throw new Error(`Failed after ${l} retries: ${h}`)}};return c()},i.approvedRetry=(o,r)=>{let c=async()=>{try{return await o()}catch(l){if(await Et.approve(r(l)))return c();throw l}};return c()},i.delay=(o,r)=>Promise.all([o,D.timeSpan(r)]).then(([c])=>c),i.fail=(o,r="fail")=>Promise.reject(r),i.timeout=(o,r,c)=>new Promise((l,h)=>{let f=!0,u=setTimeout(()=>{f=!1,h(new Error(c??"timeout"))},r.millis());o.then(m=>{f&&l(m)},m=>{f&&h(m)}).finally(()=>clearTimeout(u))}),i.sequentialAll=o=>o.reduce((r,c)=>r.then(async l=>[...l,await c()]),Promise.resolve([])),i.sequentialize=o=>{let r=Promise.resolve();return c=>{let l=()=>o(c),h=r.then(l,l);return r=h.catch(()=>{}),h}},i.memoizeAsync=(o,r)=>{let c=null,l=Date.now();return()=>{let h=Date.now();return(ut(c)||y(r)&&h-l>r.millis())&&(l=h,c=o(),c.catch(f=>(c=null,f))),c}},i.allWithLimit=async(o,r=1)=>{let c=new Array(o.length),l=0,h=!1,f=async()=>{for(;l<o.length&&!h;){let u=l++;try{let m=await o[u]();h||(c[u]=m)}catch(m){throw h=!0,m}}};return await Promise.all(Array.from({length:Math.min(r,o.length)},f)),c},i.allSettledWithLimit=async(o,r=1)=>{let c=new Array(o.length),l=0,h=async()=>{for(;l<o.length;){let f=l++;try{let u=await o[f]();c[f]={status:"fulfilled",value:u}}catch(u){c[f]={status:"rejected",reason:u}}}};return await Promise.all(Array.from({length:Math.min(r,o.length)},h)),c};class n{max;#t;#e=0;constructor(r=1){this.max=r,this.#t=[]}async add(r){if(this.#e<this.max)return this.#e++,r().finally(()=>this.#s());{let c=Promise.withResolvers();return this.#t.push([r,c]),c.promise.finally(()=>this.#s())}}#s(){if(S(this.#e>0,"Internal Error in Promises.Limit"),--this.#e<this.max&&this.#t.length>0){let[r,{resolve:c,reject:l}]=this.#t.shift();this.#e++,r().then(c,l)}}}i.Limit=n;class a{#t;#e;#s;#n=T.None;constructor(r,c,l){this.#t=r,this.#e=c,this.#s=l}update(r){this.#n=T.wrap(r),r.then(c=>{this.#n.contains(r)&&this.#t(c)}).catch(c=>{this.#n.contains(r)&&this.#e(c)}).finally(()=>{this.#n.contains(r)&&(this.terminate(),dt(this.#s))})}terminate(){this.#n=T.None}}i.Latest=a})(K||(K={}));var It=(i="debug")=>{let t=performance.now();return{lab:e=>console[i].call(console,`${e} in ${(performance.now()-t).toFixed(1)}ms`)}};var k;(function(i){class t{shift;numPeaks;dataOffset;constructor(s,n,a){this.shift=s,this.numPeaks=n,this.dataOffset=a}unitsEachPeak(){return 1<<this.shift}}i.Stage=t,i.unpack=(e,s)=>{switch(s){case 0:return B.intBitsToFloat(e);case 1:return B.intBitsToFloat(e>>16);default:return H(s)}}})(k||(k={}));var X=class i{stages;data;numFrames;numChannels;static from(t){S(t.readString()==="PEAKS","Wrong header");let e=t.readInt(),s=[];for(let c=0;c<e;c++){let l=t.readInt(),h=t.readInt(),f=t.readInt();t.readInt(),s[c]=new k.Stage(f,h,l)}let n=t.readInt(),a=[];for(let c=0;c<n;c++){let l=new Int8Array(t.readInt());t.readBytes(l),a[c]=new Int32Array(l.buffer)}let o=t.readInt(),r=t.readInt();return new i(s,a,o,r)}static None=new i([],[],0,0);static findBestFit=(t,e=1200)=>{let s=t/e;if(s<=1)return new Uint8Array(0);let n=3,a=Math.floor(Math.log(s)/Math.LN2),o=Math.max(1,Math.floor(a/n));return new Uint8Array(M.create(r=>n*(r+1),o))};constructor(t,e,s,n){this.stages=t,this.data=e,this.numFrames=s,this.numChannels=n}nearest(t){if(this.stages.length===0)return null;let e=Math.floor(Math.log(Math.abs(t))/Math.LN2),s=this.stages.length;for(;--s>-1;)if(e>=this.stages[s].shift)return this.stages[s];return this.stages[0]}toArrayBuffer(){let t=G.create();t.writeString("PEAKS"),t.writeInt(this.stages.length);for(let e=0;e<this.stages.length;e++){let{dataOffset:s,numPeaks:n,shift:a}=this.stages[e];t.writeInt(s),t.writeInt(n),t.writeInt(a),t.writeInt(0)}t.writeInt(this.data.length);for(let e=0;e<this.data.length;e++){let s=new Int8Array(this.data[e].buffer);t.writeInt(s.length),t.writeBytes(s)}return t.writeInt(this.numFrames),t.writeInt(this.numChannels),t.toArrayBuffer()}toString(){return`{SamplePeaks num-stages: ${this.stages.length}}`}};var Q;(function(i){i.install=s=>P.executor(s.channel("peaks"),new class{async generateAsync(n,a,o,r,c){return t(n,a,o,r,c).toArrayBuffer()}});let t=(s,n,a,o,r)=>{if(a.length!==r)return p(`Invalid numberOfChannels. Expected: ${r}. Got ${a.length}`);class c{min=Number.POSITIVE_INFINITY;max=Number.NEGATIVE_INFINITY;index=0}let l=It(),h=n.length,[f,u]=e(n,o),m=M.create(()=>new Int32Array(u),r),w=(1<<f[0].shift)-1,d=r*o,g=0;for(let E=0;E<r;++E){let I=m[E],v=a[E],bt=M.create(()=>new c,h),z=Number.POSITIVE_INFINITY,U=Number.NEGATIVE_INFINITY,lt=0;for(let st=0;st<o;++st){let ht=v[st];if(z=Math.min(ht,z),U=Math.max(ht,U),(++lt&w)===0){for(let V=0;V<h;++V){let ft=f[V],N=bt[V];N.min=Math.min(N.min,z),N.max=Math.max(N.max,U),((1<<ft.shift)-1<)===0&&(I[ft.dataOffset+N.index++]=i.pack(N.min,N.max),N.min=Number.POSITIVE_INFINITY,N.max=Number.NEGATIVE_INFINITY)}z=Number.POSITIVE_INFINITY,U=Number.NEGATIVE_INFINITY}(++g&65535)===0&&s(g/d)}}return s(1),l.lab(`SamplePeaks '${self.constructor.name}'`),new X(f,m,o,r)},e=(s,n)=>{let a=0;return[M.create(r=>{let c=s[r],l=Math.ceil(n/(1<<c)),h=new k.Stage(c,l,a);return a+=l,h},s.length),a]};i.pack=(s,n)=>{let a=B.floatToIntBits(s),o=B.floatToIntBits(n);return a|o<<16}})(Q||(Q={}));var Z;(function(i){i.init=s=>P.executor(s.channel("opfs"),new class{#t=new Map;async write(n,a){await this.#e(n,async()=>{let o=await this.#s(n,{create:!0});try{o.truncate(a.length),o.write(a.buffer,{at:0}),o.flush()}catch(r){throw console.error("OPFS write failed:",r?.name,r?.message,r?.stack??"(no stack trace)"),r}finally{o.close()}})}async read(n){return await this.#e(n,async()=>{let a=await this.#s(n);try{let o=a.getSize(),r=new Uint8Array(o);return a.read(r),r}finally{a.close()}})}async delete(n){await this.#e(n,async()=>{let a=e(n);return a.length===0?this.clear():this.#n(a.slice(0,-1)).then(o=>o.removeEntry(x(a.at(-1)),{recursive:!0}))})}async list(n){let a=e(n),{status:o,value:r}=await K.tryCatch(this.#n(a));if(o==="rejected")return M.empty();let c=[];for await(let{name:l,kind:h}of r.values())c.push({name:l,kind:h});return c}async clear(){let n=await navigator.storage.getDirectory();for await(let[a,o]of n.entries())o.kind==="file"?await n.removeEntry(a):o.kind==="directory"&&await n.removeEntry(a,{recursive:!0})}async#e(n,a){for(;;){let o=this.#t.get(n);if(mt(o)){await o;continue}let r=()=>p("Lock not acquired"),c=new Promise(l=>r=l);this.#t.set(n,c);try{return await a()}finally{this.#t.get(n)===c&&this.#t.delete(n),r()}}}async#s(n,a){let o=e(n);return await(await(await this.#n(o.slice(0,-1),a)).getFileHandle(x(o.at(-1)),a)).createSyncAccessHandle()}async#n(n,a){let o=await navigator.storage.getDirectory();for(let r of n)o=await o.getDirectoryHandle(r,a);return o}});let e=s=>{let n=s.replace(/^\/+|\/+$/g,"");return n===""?[]:n.split("/")}})(Z||(Z={}));var J=class{a1=0;a2=0;b0=0;b1=0;b2=0;constructor(){this.identity()}identity(){this.setNormalizedCoefficients(1,0,0,1,0,0)}setLowpassParams(t,e=Math.SQRT1_2){if(t=_(t,0,1),t>=.5)this.setNormalizedCoefficients(1,0,0,1,0,0);else if(t>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=(1-a)/2,r=o,c=2*o,l=o,h=1+n,f=-2*a,u=1-n;this.setNormalizedCoefficients(r,c,l,h,f,u)}else this.setNormalizedCoefficients(0,0,0,1,0,0);return this}setHighpassParams(t,e=Math.SQRT1_2){if(t=_(t,0,1),t===1)this.setNormalizedCoefficients(0,0,0,1,0,0);else if(t>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=(1+a)/2,r=o,c=-2*o,l=o,h=1+n,f=-2*a,u=1-n;this.setNormalizedCoefficients(r,c,l,h,f,u)}else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setNormalizedCoefficients(t,e,s,n,a,o){let r=1/n;return this.b0=t*r,this.b1=e*r,this.b2=s*r,this.a1=a*r,this.a2=o*r,this}setLowShelfParams(t,e){t=_(t,0,1);let s=Math.pow(10,e/40);if(t===1)this.setNormalizedCoefficients(s*s,0,0,1,0,0);else if(t>0){let n=A*t,o=.5*Math.sin(n)*Math.sqrt((s+1/s)*(1/1-1)+2),r=Math.cos(n),c=2*Math.sqrt(s)*o,l=s+1,h=s-1,f=s*(l-h*r+c),u=2*s*(h-l*r),m=s*(l-h*r-c),w=l+h*r+c,d=-2*(h+l*r),g=l+h*r-c;this.setNormalizedCoefficients(f,u,m,w,d,g)}else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setHighShelfParams(t,e){t=_(t,0,1);let s=Math.pow(10,e/40);if(t===1)this.setNormalizedCoefficients(1,0,0,1,0,0);else if(t>0){let n=A*t,o=.5*Math.sin(n)*Math.sqrt((s+1/s)*(1/1-1)+2),r=Math.cos(n),c=2*Math.sqrt(s)*o,l=s+1,h=s-1,f=s*(l+h*r+c),u=-2*s*(h+l*r),m=s*(l+h*r-c),w=l-h*r+c,d=2*(h-l*r),g=l-h*r-c;this.setNormalizedCoefficients(f,u,m,w,d,g)}else this.setNormalizedCoefficients(s*s,0,0,1,0,0);return this}setPeakingParams(t,e,s){t=_(t,0,1),e=Math.max(0,e);let n=Math.pow(10,s/40);if(t>0&&t<1)if(e>0){let a=A*t,o=Math.sin(a)/(2*e),r=Math.cos(a),c=1+o*n,l=-2*r,h=1-o*n,f=1+o/n,u=-2*r,m=1-o/n;this.setNormalizedCoefficients(c,l,h,f,u,m)}else this.setNormalizedCoefficients(n*n,0,0,1,0,0);else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setAllpassParams(t,e){if(t=_(t,0,1),e=Math.max(0,e),t>0&&t<1)if(e>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=1-n,r=-2*a,c=1+n,l=1+n,h=-2*a,f=1-n;this.setNormalizedCoefficients(o,r,c,l,h,f)}else this.setNormalizedCoefficients(-1,0,0,1,0,0);else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setNotchParams(t,e){if(t=_(t,0,1),e=Math.max(0,e),t>0&&t<1)if(e>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=1,r=-2*a,c=1,l=1+n,h=-2*a,f=1-n;this.setNormalizedCoefficients(o,r,c,l,h,f)}else this.setNormalizedCoefficients(0,0,0,1,0,0);else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setBandpassParams(t,e){if(t=Math.max(0,t),e=Math.max(0,e),t>0&&t<1){let s=A*t;if(e>0){let n=Math.sin(s)/(2*e),a=Math.cos(s),o=n,r=0,c=-n,l=1+n,h=-2*a,f=1-n;this.setNormalizedCoefficients(o,r,c,l,h,f)}else this.setNormalizedCoefficients(1,0,0,1,0,0)}else this.setNormalizedCoefficients(0,0,0,1,0,0);return this}getFrequencyResponse(t,e,s){S(t.length===e.length&&t.length===s.length,"Array lengths do not match");let n=this.b0,a=this.b1,o=this.b2,r=this.a1,c=this.a2;for(let l=0;l<t.length;++l){let h=-Math.PI*2*t[l],f=Math.cos(h),u=Math.sin(h),m=n+((a+o*f)*f-o*u*u),w=(a+o*f)*u+o*u*f,d=1+((r+c*f)*f-c*u*u),g=(r+c*f)*u+c*u*f,E=d*d+g*g,I=(m*d+w*g)/E,v=(w*d-m*g)/E;e[l]=Math.sqrt(I*I+v*v),s[l]=Math.atan2(v,I)}}};var Y=class{#t=0;#e=0;#s=0;#n=0;reset(){this.#t=0,this.#e=0,this.#s=0,this.#n=0}process({a1:t,a2:e,b0:s,b1:n,b2:a},o,r,c,l){let h=this.#t,f=this.#e,u=this.#s,m=this.#n;for(let w=c;w<l;w++){let d=o[w],g=r[w]=s*d+n*h+a*f-t*u-e*m+1e-18-1e-18;f=h,h=d,m=u,u=g}this.#t=h,this.#e=f,this.#s=u,this.#n=m}processFrame({a1:t,a2:e,b0:s,b1:n,b2:a},o){let r=s*o+n*this.#t+a*this.#e-t*this.#s-e*this.#n+1e-18-1e-18;return this.#e=this.#t,this.#t=o,this.#n=this.#s,this.#s=r,r}};var q=48,St=200,Mt=2e3,Tt=20,At=2,_t=3e-4,Bt=40,Pt=120,Rt=.2,Ft=20,vt=.66,Lt=.006,Ot={low:1,mid:4,high:8},tt=class i{static detect(t){let e=performance.now(),s=t.numberOfFrames/t.sampleRate,n=new i(t).#h(),a=((performance.now()-e)/1e3/s*100).toFixed(2);return console.debug(`realtime factor: ${a}%`),n}#t;#e;#s;#n;#r;#i;#a;#o;constructor(t){this.#t=t.sampleRate,this.#e=t.numberOfFrames,this.#s=Math.floor(Ft/1e3*this.#t),this.#n=Math.floor(Pt/1e3*this.#t),this.#r=Math.floor(Tt/1e3*this.#t),this.#i=Math.floor(this.#r/2);let e=this.#e/this.#t;this.#a=Math.floor(e*Bt),this.#o=this.#m(t)}#h(){let t=this.#f();return this.#u(t).map(s=>s/this.#t)}#f(){let t=this.#d(),e=[];for(let a of["low","mid","high"]){let o=t[a],r=this.#p(o),c=this.#w(r),l=Ot[a];for(let h of c)e.push({position:h.position,energy:h.energy*l})}let s=[0,this.#e],n=[...e].sort((a,o)=>o.energy-a.energy);for(let a of n){if(s.length>=this.#a+2&&s.length>=At+2)break;this.#g(s,a.position)||this.#x(s,a.position)}return s}#u(t){if(t.length<2)return t;let e=[t[0]],s=Math.floor(this.#t*Lt);for(let n=1;n<t.length-1;n++){let a=t[n-1],o=t[n];if(a===0){e.push(o);continue}let r=o-a,c=a+Math.floor(r*Rt),l=o-this.#s,h=Math.max(c,l),f=0;for(let d=0;d<s&&o+d<this.#e;d++)f+=this.#o[o+d]*this.#o[o+d];f=Math.sqrt(f/s);let u=f*vt,m=1/0,w=o;for(let d=o-1;d>=h;d--){let g=0;for(let I=0;I<s&&d+I<this.#e;I++)g+=this.#o[d+I]*this.#o[d+I];let E=Math.sqrt(g/s);if(E<m&&(m=E,w=d),E<u)break}e.push(w)}return e.push(t[t.length-1]),e}#m(t){let{numberOfFrames:e,numberOfChannels:s,frames:n}=t;if(s===0)return p("Invalid sample. No channels found.");if(s===1)return new Float32Array(n[0]);let a=new Float32Array(e);for(let r=0;r<s;r++){let c=n[r];for(let l=0;l<e;l++)a[l]+=c[l]}let o=1/s;for(let r=0;r<e;r++)a[r]*=o;return a}#c(t,e,s,n){let a=n/12,o=new J,r=e/this.#t;s==="lowpass"?o.setLowpassParams(r,Math.SQRT1_2):o.setHighpassParams(r,Math.SQRT1_2);let c=t;for(let l=0;l<a;l++){let h=new Y,f=new Y,u=new Float32Array(c.length),m=new Float32Array(c.length);h.process(o,c,u,0,c.length),f.process(o,u,m,0,c.length),c=m}return c}#d(){let t=this.#c(this.#o,St,"lowpass",q),e=this.#c(this.#o,St,"highpass",q),s=this.#c(e,Mt,"lowpass",q),n=this.#c(e,Mt,"highpass",q);return{low:t,mid:s,high:n}}#p(t){let e=new Float32Array(t.length),s=0;for(let n=0;n<this.#r&&n<t.length;n++)s+=t[n]*t[n];for(let n=0;n<t.length;n++){let a=n-this.#i,o=n+this.#i;if(a>0&&a-1<t.length){let c=t[a-1];s-=c*c}if(o<t.length){let c=t[o];s+=c*c}let r=Math.min(o,t.length-1)-Math.max(a,0)+1;e[n]=Math.sqrt(Math.max(0,s)/r)}return e}#w(t){let e=0;for(let a=0;a<t.length;a++)t[a]>e&&(e=t[a]);let s=e*_t,n=[];for(let a=1;a<t.length-1;a++){let o=t[a]-t[a-1],r=t[a+1]-t[a];o>s&&o>r&&n.push({position:a,energy:t[a]})}return n}#g(t,e){let s=this.#l(t,e);return s>0&&e-t[s-1]<this.#n?!0:s<t.length&&t[s]-e<this.#n}#x(t,e){let s=this.#l(t,e);t.splice(s,0,e)}#l(t,e){let s=0,n=t.length;for(;s<n;){let a=s+n>>>1;t[a]<e?s=a+1:n=a}return s}};var et=yt.for(self);Z.init(et);Q.install(et);P.executor(et.channel("transients"),new class{async detect(i){return tt.detect(i)}});et.channel("initialize").send("ready");
|
|
1
|
+
var y=i=>i!=null,ut=i=>i===null;var mt=i=>i!==void 0;var x=(i,t="asDefined failed")=>i??p(R(t));var R=i=>i instanceof Function?i():i;var dt=(i,...t)=>i?.apply(null,t);var j=i=>{throw new Error(`Unhandled ${i}`)},p=i=>{throw typeof i=="string"?new Error(i):i},S=(i,t)=>i?void 0:p(R(t));var L=i=>new Proxy({},{get(){return p(i)}});var nt=class{value;status="success";constructor(t){this.value=t}error=L("Cannot access error when succeeded")},rt=class{error;status="failure";constructor(t){this.error=t}value=L("Cannot access value when failed")},pt=i=>{try{return new nt(i())}catch(t){return new rt(t)}};var G=()=>{};var it;(function(i){i[i.Ascending=1]="Ascending",i[i.Descending=-1]="Descending"})(it||(it={}));var M=class{static#t=Object.freeze(new Array(0));static empty=()=>this.#t;static clear=t=>{t.length=0};static replace=(t,e)=>{t.length=0,t.push(...e)};static consume=(t,e)=>{for(let s=0;s<t.length;)e(t[s])?t.splice(s,1):s++};static peekFirst=t=>t.at(0)??null;static peekLast=t=>t.at(-1)??null;static getFirst=(t,e)=>x(t.at(0),e);static getLast=(t,e)=>x(t.at(-1),e);static getPrev=(t,e)=>{let s=t.indexOf(e);return s===-1?p(`${e} not found in ${t}`):x(t.at((s-1)%t.length),"Internal Error")};static getNext=(t,e)=>{let s=t.indexOf(e);return s===-1?p(`${e} not found in ${t}`):x(t.at((s+1)%t.length),"Internal Error")};static removeLast=(t,e)=>x(t.pop(),e);static create=(t,e)=>{let s=new Array(e);for(let n=0;n<e;n++)s[n]=t(n);return s};static equals=(t,e)=>{if(t.length!==e.length)return!1;for(let s=0;s<t.length;s++)if(t[s]!==e[s])return!1;return!0};static satisfy=(t,e)=>{if(t.length<2)return!0;let s=t[0];for(let n=1;n<t.length;n++)if(!e(s,t[n]))return!1;return!0};static remove=(t,e)=>{let s=t.indexOf(e);if(s===-1)return p(`${e} not found in ${t}`);t.splice(s,1)};static removeIf=(t,e)=>{for(let s=t.length-1;s>=0;s--)e(t[s])&&t.splice(s,1)};static removeOpt=(t,e)=>{let s=t.indexOf(e);return s===-1?!1:(t.splice(s,1),!0)};static hasDuplicates=t=>new Set(t).size<t.length;static removeDuplicates=t=>{let e=0,s=new Set;for(let n of t)s.has(n)||(s.add(n),t[e++]=n);return t.length=e,t};static removeDuplicateKeys=(t,e)=>{let s=0,n=new Set;for(let a of t){let o=a[e];n.has(o)||(n.add(o),t[s++]=a)}return t.length=s,t};static subtract(t,e,s){return t.filter(n=>!e.some(a=>s(n,a)))}static intersect(t,e,s){return t.filter(n=>e.some(a=>s(n,a)))}static merge(t,e,s){return[...t.filter(n=>!e.some(a=>s(n,a))),...e]}static*iterate(t){for(let e=0;e<t.length;e++)yield t[e]}static*iterateReverse(t){for(let e=t.length-1;e>=0;e--)yield t[e]}static*iterateStateFull(t){let e=t.length-1;for(let s=0;s<=e;s++)yield{value:t[s],isFirst:s===0,isLast:s===e}}static*iterateAdjacent(t){if(!(t.length<=1))for(let e=1,s=t[0];e<t.length;e++){let n=t[e];yield[s,n],s=n}}static isSorted(t,e=it.Ascending){if(t.length<2)return!0;let s=t[0];for(let n=1;n<t.length;n++){let a=t[n];if(Math.sign(s-a)===e)return!1;s=a}return!0}static toRecord(t,e){return t.reduce((s,n)=>(s[e(n)]=n,s),{})}static concatArrayBuffers(t,e){let s=new ArrayBuffer(t.byteLength+e.byteLength),n=new Uint8Array(s);return n.set(new Uint8Array(t),0),n.set(new Uint8Array(e),t.byteLength),s}};var T;(function(i){i.wrap=e=>y(e)?new t(e):i.None,i.from=e=>i.wrap(e()),i.tryCatch=e=>{try{return i.wrap(e())}catch{return i.None}},i.execute=(e,...s)=>i.wrap(e?.apply(null,s)),i.async=e=>e.then(s=>i.wrap(s),()=>i.None);class t{#t;constructor(s){this.#t=x(s)}unwrap(){return this.#t}unwrapOrElse(s){return this.#t}unwrapOrNull(){return this.#t}unwrapOrUndefined(){return this.#t}contains(s){return s===this.#t}match(s){return s.some(this.#t)}ifSome(s){return s(this.#t)}ifAbsent(s){}isEmpty(){return!1}nonEmpty(){return!0}map(s){return i.wrap(s(this.#t))}mapOr(s,n){return s(this.#t)}flatMap(s){return s(this.#t)}equals(s){return this.unwrapOrNull()===s.unwrapOrNull()}assert(s){return this}toString(){return`{Option.Some(${this.#t})}`}get[Symbol.toStringTag](){return this.toString()}}i.Some=t,i.None=new class{unwrap=e=>p(y(e)?R(e):"unwrap failed");unwrapOrElse=e=>R(e);unwrapOrNull=()=>null;unwrapOrUndefined=()=>{};contains=e=>!1;match=e=>e.none();ifSome=e=>{};ifAbsent=e=>e(void 0);isEmpty=()=>!0;nonEmpty=()=>!1;map=e=>i.None;mapOr=(e,s)=>R(s);flatMap=e=>i.None;equals=e=>e.isEmpty();assert=e=>p(R(e)??"assert failed");toString=()=>"{Option.None}";get[Symbol.toStringTag](){return this.toString()}}})(T||(T={}));var A=Math.PI*2,Ut=Math.PI/2,Vt=Math.PI/4,Ht=1/Math.sqrt(2),_=(i,t,e)=>Math.max(t,Math.min(i,e));var wt=i=>Math.pow(2,Math.ceil(Math.log(i)/Math.log(2)));var b=new DataView(new ArrayBuffer(8)),gt;(function(i){i.MIN_VALUE=-2147483648,i.MAX_VALUE=2147483647,i.toByte=t=>(b.setInt8(0,t),b.getInt8(0)),i.toShort=t=>(b.setInt16(0,t),b.getInt16(0)),i.toInt=t=>(b.setInt32(0,t),b.getInt32(0))})(gt||(gt={}));var O;(function(i){let s=new ArrayBuffer(Float32Array.BYTES_PER_ELEMENT),n=new Float32Array(s),a=new Int32Array(s);i.floatToIntBits=o=>{let r=i.floatToRawIntBits(o);return(r&2139095040)===2139095040&&(r&8388607)!==0?2143289344:r},i.intBitsToFloat=o=>(a[0]=o,n[0]),i.floatToRawIntBits=o=>(n[0]=o,a[0]),i.toFloat32=o=>(b.setFloat32(0,o),b.getFloat32(0))})(O||(O={}));var B;(function(i){i.floatToIntBits=t=>{let e=O.floatToIntBits(t),s=e>>>16&32768,n=(e&2147483647)+4096;return n>=1199570944?(e&2147483647)>=1199570944?n<2139095040?s|31744:s|31744|(e&8388607)>>>13:s|31743:n>=947912704?s|n-939524096>>>13:n<855638016?s:(n=(e&2147483647)>>>23,s|(e&8388607|8388608)+(8388608>>>n-102)>>>126-n)},i.intBitsToFloat=t=>{let e=t&1023,s=t&31744;if(s===31744)s=261120;else if(s!==0){if(s+=114688,e===0&&s>115712)return O.intBitsToFloat((t&32768)<<16|s<<13|1023)}else if(e!==0){s=115712;do e<<=1,s-=1024;while((e&1024)===0);e&=1023}return O.intBitsToFloat((t&32768)<<16|(s|e)<<13)}})(B||(B={}));var xt;(function(i){let t=9218868437227405312n,e=4503599627370495n,s=new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT),n=new Float64Array(s),a=new BigInt64Array(s);i.float64ToLongBits=o=>{let r=i.float64ToRawLongBits(o);return(r&t)===t&&(r&e)!==0n?0x7ff8000000000000n:r},i.longBitsToFloat64=o=>(a[0]=o,n[0]),i.float64ToRawLongBits=o=>(n[0]=o,a[0]),i.clamp=o=>(b.setFloat64(0,o),b.getFloat64(0))})(xt||(xt={}));var F=class{static*empty(){}static one(t){return[t]}static count(t){let e=0;for(let s of t)e++;return e}static some(t,e){for(let s of t)if(e(s))return!0;return!1}static every(t,e){for(let s of t)if(!e(s))return!1;return!0}static reduce(t,e,s){let n=s,a=0;for(let o of t)n=e(n,o,a++);return n}static includes(t,e){for(let s of t)if(s===e)return!0;return!1}static forEach(t,e){for(let s of t)e(s)}static*map(t,e){let s=0;for(let n of t)yield e(n,s++)}static*take(t,e){let s=0;for(let n of t){if(s++>=e)return;yield n}}static filter(t,e){let s=[];for(let n of t)e(n)&&s.push(n);return s}static filterMap(t,e){let s=[];for(let n of t){let a=e(n);y(a)&&s.push(a)}return s}static reverse(t){let e=[];for(let s of t)e.push(s);return e.reverse()}static*pairWise(t){let e=t[Symbol.iterator](),{done:s,value:n}=e.next(),a=n;if(s!==!0)for(;;){let{done:o,value:r}=e.next();if(o===!0){yield[a,null];return}yield[a,r],a=r}}};var W=class i{static create(t=1024){return this.use(new ArrayBuffer(t))}static use(t,e=0){return new i(new DataView(t,e))}littleEndian=!1;#t;#e=0;constructor(t){this.#t=t}get remaining(){return this.#t.byteLength-this.#e}get position(){return this.#e}set position(t){t<0?p(`position(${t}) cannot be negative.`):t>this.#t.byteLength?p(`position(${t}) is outside range (${this.#t.byteLength}).`):this.#e=t}writeBoolean(t){this.writeByte(t?1:0)}writeByte(t){this.#s(1),this.#t.setInt8(this.#e++,t)}writeShort(t){this.#s(Int16Array.BYTES_PER_ELEMENT),this.#t.setInt16(this.#e,t,this.littleEndian),this.#e+=Int16Array.BYTES_PER_ELEMENT}writeInt(t){this.#s(Int32Array.BYTES_PER_ELEMENT),this.#t.setInt32(this.#e,t,this.littleEndian),this.#e+=Int32Array.BYTES_PER_ELEMENT}writeLong(t){this.#s(BigInt64Array.BYTES_PER_ELEMENT),this.#t.setBigInt64(this.#e,t,this.littleEndian),this.#e+=BigInt64Array.BYTES_PER_ELEMENT}writeFloat(t){this.#s(Float32Array.BYTES_PER_ELEMENT),this.#t.setFloat32(this.#e,t,this.littleEndian),this.#e+=Float32Array.BYTES_PER_ELEMENT}writeDouble(t){this.#s(Float64Array.BYTES_PER_ELEMENT),this.#t.setFloat64(this.#e,t,this.littleEndian),this.#e+=Float64Array.BYTES_PER_ELEMENT}writeBytes(t){this.#s(t.length);for(let e=0;e<t.length;++e)this.#t.setInt8(this.#e++,t[e])}writeString(t){let e=t.length;this.#s(Int32Array.BYTES_PER_ELEMENT+e*Int16Array.BYTES_PER_ELEMENT),this.writeInt(e);for(let s=0;s<e;s++)this.writeShort(t.charCodeAt(s))}toArrayBuffer(){return this.#t.buffer.slice(0,this.#e)}#s(t){let e=this.#t.byteLength;if(this.#e+t>e){let s=this.#t;this.#t=new DataView(new ArrayBuffer(wt(e+t)));for(let n=0;n<this.#e;n++)this.#t.setInt8(n,s.getInt8(n))}}};var K=Object.freeze({Empty:{terminate:G},create:i=>({terminate:i}),many:(...i)=>({terminate:()=>{for(;i.length>0;)i.pop().terminate()}})});var C=class{static subscribeMany(t,...e){return K.many(...e.map(s=>s.subscribe(()=>t(s))))}#t=new Set;subscribe(t){return this.#t.add(t),{terminate:()=>this.#t.delete(t)}}isEmpty(){return this.#t.size===0}notify(t){this.#t.forEach(e=>e(t))}observers(){return this.#t}terminate(){this.#t.clear()}};var Et=(()=>{let i=T.None;return{info:t=>i.match({none:()=>Promise.resolve(),some:e=>e.info(t)}),approve:t=>i.match({none:()=>Promise.resolve(!0),some:e=>e.approve(t)}),progress:t=>i.match({none:()=>({message:"",terminate:G}),some:e=>e.progress(t)}),install:t=>{S(i.isEmpty(),"RuntimeNotification already installed"),i=T.wrap(t)}}})();var $=class i{static createEstimator=()=>{let t=performance.now(),e=i.millis(Number.POSITIVE_INFINITY),s=0;return n=>{if(n===0)return i.POSITIVE_INFINITY;if(n>=1)return i.millis(0);let a=performance.now()-t;return a>s*1e3&&(e=i.millis(a/n-a),s++),e}};static POSITIVE_INFINITY=new i(Number.POSITIVE_INFINITY);static millis=t=>new i(t);static seconds=t=>new i(t*i.#t);static minutes=t=>new i(t*i.#e);static hours=t=>new i(t*i.#s);static days=t=>new i(t*i.#n);static toHHMMSS=t=>((t/3600|0)+100).toString().slice(1)+":"+((t/60|0)%60+100).toString().slice(1)+":"+(t%60+100).toString().slice(1);static#t=1e3;static#e=6e4;static#s=36e5;static#n=864e5;#r;constructor(t){this.#r=t}millis(){return this.#r}absSeconds(){return Math.abs(this.#r)/i.#t}absMinutes(){return Math.abs(this.#r)/i.#e}absHours(){return Math.abs(this.#r)/i.#s}absDays(){return Math.abs(this.#r)/i.#n}split(){return{d:Math.floor(this.absDays()),h:Math.floor(this.absHours())%24,m:Math.floor(this.absMinutes())%60,s:Math.floor(this.absSeconds())%60}}isNow(){return this.#r===0}isPast(){return this.#r<0}isFuture(){return this.#r>0}toUnitString(){let t,e,s=Math.floor(Math.abs(this.#r)/1e3),n=Math.floor(s/60),a=Math.floor(n/60),o=Math.floor(a/24);return s<60?(t=s,e="second"):n<60?(t=n,e="minute"):a<24?(t=a,e="hour"):(t=o,e="day"),new Intl.RelativeTimeFormat("en",{numeric:"auto",style:"long"}).format(t*Math.sign(this.#r),e)}toString(){if(isNaN(this.#r))return"NaN";if(!isFinite(this.#r))return"\u221E";let{d:t,h:e,m:s,s:n}=this.split();return t>0?[i.#i("d",t),i.#i("h",e),i.#i("m",s),i.#i("s",n)].join(", "):e>0?[i.#i("h",e),i.#i("m",s),i.#i("s",n)].join(", "):s>0?[i.#i("m",s),i.#i("s",n)].join(", "):n>0?i.#i("s",n):"now"}static#i=(t,e)=>{switch(t){case"d":return`${e} ${e<2?"day":"days"}`;case"h":return`${e} ${e<2?"hour":"hours"}`;case"m":return`${e} ${e<2?"minute":"minutes"}`;case"s":return`${e} ${e<2?"second":"seconds"}`;default:return j(t)}}};var P;(function(i){class t{value;constructor(r){this.value=r}}i.Transfer=t,i.makeTransferable=o=>new t(o),i.sender=(o,r)=>r(new n(o)),i.executor=(o,r)=>new a(o,r);let e=o=>{let r=[];for(let c of o)c instanceof t?r.push(c.value):(c instanceof MessagePort||typeof ImageBitmap<"u"&&c instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&c instanceof OffscreenCanvas)&&r.push(c);return r},s=o=>o instanceof t?o.value:o;class n{#t;#e=new Map;#s;#n=0;constructor(r){this.#t=r,this.#s=r.subscribe(this.#r)}terminate(){this.#s.terminate()}dispatchAndForget=(r,...c)=>{let l=e(c);this.#t.send({type:"send",returnId:!1,func:r.name,args:Array.from(F.map(c,h=>({value:s(h)})))},l)};dispatchAndReturn=(r,...c)=>new Promise((l,h)=>{let f=F.reduce(c,(m,w,d)=>(typeof w=="function"&&m.push([d,w]),m),[]);this.#e.set(this.#n,{executorTuple:{resolve:l,reject:h},callbacks:new Map(f)});let u=e(c);this.#t.send({type:"send",returnId:this.#n,func:r.name,args:Array.from(F.map(c,(m,w)=>typeof m=="function"?{callback:w}:{value:s(m)}))},u),this.#n++});#r=r=>{let c=this.#e.get(r.returnId);y(c)?r.type==="resolve"?(c.executorTuple.resolve(r.resolve),this.#e.delete(r.returnId)):r.type==="reject"?(c.executorTuple.reject(r.reject),this.#e.delete(r.returnId)):r.type==="callback"&&c.callbacks?.get(r.funcAt).apply(this,r.args):p(`Promise has already been resolved. ${JSON.stringify(r)}`)}}class a{#t;#e;#s;constructor(r,c){this.#t=r,this.#e=c,this.#s=r.subscribe(this.#n)}terminate(){this.#s.terminate()}#n=r=>{S(r.type==="send",()=>"Message type must be 'send'");let c=Object.getPrototypeOf(this.#e)===Object.getPrototypeOf({})?this.#e:Object.getPrototypeOf(this.#e),l=x(c[r.func],`${r.func.toString()} does not exists on ${this.#e}`),h=r.returnId;if(h===!1)l.apply(this.#e,r.args.map(f=>"value"in f?f.value:p(`${r.func.toString()} has no promise.`)));else try{l.apply(this.#e,r.args.map(u=>"callback"in u?(...m)=>this.#a(h,u.callback,m):u.value)).then(u=>{try{this.#r(h,u)}catch(m){this.#i(h,m)}},u=>this.#i(h,u))}catch(f){this.#i(h,f)}};#r=(r,c)=>this.#t.send({type:"resolve",returnId:r,resolve:c});#i=(r,c)=>this.#t.send({type:"reject",returnId:r,reject:c});#a=(r,c,l)=>this.#t.send({type:"callback",returnId:r,funcAt:c,args:l})}i.Executor=a})(P||(P={}));var yt={for:i=>new ot(i)},Nt=[],ot=class{#t;#e=new C;constructor(t){if(this.#t=t,y(t.onmessage)||y(t.onmessageerror))throw console.error(t),new Error(`${t} is already wrapped.`);t.onmessage=e=>this.#e.notify(e.data),t.onmessageerror=e=>{throw new Error(e.type)}}send(t,e){this.#t.postMessage(t,e??Nt)}channel(t){return new at(this,t)}subscribe(t){return this.#e.subscribe(t)}terminate(){this.#e.terminate(),this.#t.onmessage=null,this.#t.onmessageerror=null}},at=class i{#t;#e;#s=new C;#n;constructor(t,e){this.#t=t,this.#e=e,this.#n=t.subscribe(s=>{"__id__"in s&&s.__id__==="42"&&"message"in s&&"channel"in s&&s.channel===e&&this.#s.notify(s.message)})}send(t,e){this.#t.send({__id__:"42",channel:this.#e,message:t},e)}channel(t){return new i(this,t)}subscribe(t){return this.#s.subscribe(t)}terminate(){this.#n.terminate(),this.#s.terminate()}};var D;(function(i){i.frame=()=>new Promise(t=>requestAnimationFrame(()=>t())),i.frames=t=>new Promise(e=>{let s=t,n=()=>{--s<=0?e():requestAnimationFrame(n)};requestAnimationFrame(n)}),i.timeSpan=(t,...e)=>new Promise(s=>setTimeout(s,t.millis(),...e)),i.event=(t,e)=>new Promise(s=>t.addEventListener(e,s,{once:!0})),i.observable=t=>new Promise(e=>{let s=t.subscribe(()=>{s.terminate(),e()})}),i.complete=t=>new Promise((e,s)=>{let n=setInterval(()=>{let{status:a,value:o,error:r}=pt(()=>t.next());if(a==="success"){let{done:c,value:l}=o;c&&(clearInterval(n),e(l))}else clearInterval(n),s(r)},0)})})(D||(D={}));var ct=class{maxRetry;timeSpan;#t=0;constructor(t,e){this.maxRetry=t,this.timeSpan=e}retry(t,e){return++this.#t===this.maxRetry?!1:(console.debug(`${t} > will retry in ${this.timeSpan.toString()}`),setTimeout(e,this.timeSpan.millis()),!0)}},k;(function(i){class t{value;status="resolved";constructor(r){this.value=r}error=L("Cannot access error when promise is resolved")}i.ResolveResult=t;class e{error;status="rejected";constructor(r){this.error=r}value=L("Cannot access value when promise is rejected")}i.RejectedResult=e,i.makeAbortable=async(o,r)=>{let c=!0;return o.own(K.create(()=>c=!1)),new Promise((l,h)=>r.then(f=>{c&&l(f)},f=>{c&&h(f)}))},i.tryCatch=o=>o.then(r=>new t(r),r=>new e(r));let s=new ct(3,$.seconds(3));i.retry=(o,r=s)=>o().catch(c=>new Promise((l,h)=>{let f=u=>{r.retry(u,()=>o().then(m=>l(m),f))||h(u)};f(c)})),i.guardedRetry=(o,r)=>{let c=async(l=0)=>{try{return await o()}catch(h){if(r(h,++l))return console.debug(`retry after failure (online: ${navigator.onLine}):`,h),await D.timeSpan($.seconds(1)),c(l);throw new Error(`Failed after ${l} retries: ${h}`)}};return c()},i.approvedRetry=(o,r)=>{let c=async()=>{try{return await o()}catch(l){if(await Et.approve(r(l)))return c();throw l}};return c()},i.delay=(o,r)=>Promise.all([o,D.timeSpan(r)]).then(([c])=>c),i.fail=(o,r="fail")=>Promise.reject(r),i.timeout=(o,r,c)=>new Promise((l,h)=>{let f=!0,u=setTimeout(()=>{f=!1,h(new Error(c??"timeout"))},r.millis());o.then(m=>{f&&l(m)},m=>{f&&h(m)}).finally(()=>clearTimeout(u))}),i.sequentialAll=o=>o.reduce((r,c)=>r.then(async l=>[...l,await c()]),Promise.resolve([])),i.sequentialize=o=>{let r=Promise.resolve();return c=>{let l=()=>o(c),h=r.then(l,l);return r=h.catch(()=>{}),h}},i.memoizeAsync=(o,r)=>{let c=null,l=Date.now();return()=>{let h=Date.now();return(ut(c)||y(r)&&h-l>r.millis())&&(l=h,c=o(),c.catch(f=>(c=null,f))),c}},i.allWithLimit=async(o,r=1)=>{let c=new Array(o.length),l=0,h=!1,f=async()=>{for(;l<o.length&&!h;){let u=l++;try{let m=await o[u]();h||(c[u]=m)}catch(m){throw h=!0,m}}};return await Promise.all(Array.from({length:Math.min(r,o.length)},f)),c},i.allSettledWithLimit=async(o,r=1)=>{let c=new Array(o.length),l=0,h=async()=>{for(;l<o.length;){let f=l++;try{let u=await o[f]();c[f]={status:"fulfilled",value:u}}catch(u){c[f]={status:"rejected",reason:u}}}};return await Promise.all(Array.from({length:Math.min(r,o.length)},h)),c};class n{max;#t;#e=0;constructor(r=1){this.max=r,this.#t=[]}async add(r){if(this.#e<this.max)return this.#e++,r().finally(()=>this.#s());{let c=Promise.withResolvers();return this.#t.push([r,c]),c.promise.finally(()=>this.#s())}}#s(){if(S(this.#e>0,"Internal Error in Promises.Limit"),--this.#e<this.max&&this.#t.length>0){let[r,{resolve:c,reject:l}]=this.#t.shift();this.#e++,r().then(c,l)}}}i.Limit=n;class a{#t;#e;#s;#n=T.None;constructor(r,c,l){this.#t=r,this.#e=c,this.#s=l}update(r){this.#n=T.wrap(r),r.then(c=>{this.#n.contains(r)&&this.#t(c)}).catch(c=>{this.#n.contains(r)&&this.#e(c)}).finally(()=>{this.#n.contains(r)&&(this.terminate(),dt(this.#s))})}terminate(){this.#n=T.None}}i.Latest=a})(k||(k={}));var It=(i="debug")=>{let t=performance.now();return{lab:e=>console[i].call(console,`${e} in ${(performance.now()-t).toFixed(1)}ms`)}};var Y;(function(i){class t{shift;numPeaks;dataOffset;constructor(s,n,a){this.shift=s,this.numPeaks=n,this.dataOffset=a}unitsEachPeak(){return 1<<this.shift}}i.Stage=t,i.unpack=(e,s)=>{switch(s){case 0:return B.intBitsToFloat(e);case 1:return B.intBitsToFloat(e>>16);default:return j(s)}}})(Y||(Y={}));var X=class i{stages;data;numFrames;numChannels;static from(t){S(t.readString()==="PEAKS","Wrong header");let e=t.readInt(),s=[];for(let c=0;c<e;c++){let l=t.readInt(),h=t.readInt(),f=t.readInt();t.readInt(),s[c]=new Y.Stage(f,h,l)}let n=t.readInt(),a=[];for(let c=0;c<n;c++){let l=new Int8Array(t.readInt());t.readBytes(l),a[c]=new Int32Array(l.buffer)}let o=t.readInt(),r=t.readInt();return new i(s,a,o,r)}static None=new i([],[],0,0);static findBestFit=(t,e=1200)=>{let s=t/e;if(s<=1)return new Uint8Array(0);let n=3,a=Math.floor(Math.log(s)/Math.LN2),o=Math.max(1,Math.floor(a/n));return new Uint8Array(M.create(r=>n*(r+1),o))};constructor(t,e,s,n){this.stages=t,this.data=e,this.numFrames=s,this.numChannels=n}nearest(t){if(this.stages.length===0)return null;let e=Math.floor(Math.log(Math.abs(t))/Math.LN2),s=this.stages.length;for(;--s>-1;)if(e>=this.stages[s].shift)return this.stages[s];return this.stages[0]}toArrayBuffer(){let t=W.create();t.writeString("PEAKS"),t.writeInt(this.stages.length);for(let e=0;e<this.stages.length;e++){let{dataOffset:s,numPeaks:n,shift:a}=this.stages[e];t.writeInt(s),t.writeInt(n),t.writeInt(a),t.writeInt(0)}t.writeInt(this.data.length);for(let e=0;e<this.data.length;e++){let s=new Int8Array(this.data[e].buffer);t.writeInt(s.length),t.writeBytes(s)}return t.writeInt(this.numFrames),t.writeInt(this.numChannels),t.toArrayBuffer()}toString(){return`{SamplePeaks num-stages: ${this.stages.length}}`}};var Q;(function(i){i.install=s=>P.executor(s.channel("peaks"),new class{async generateAsync(n,a,o,r,c){return t(n,a,o,r,c).toArrayBuffer()}});let t=(s,n,a,o,r)=>{if(a.length!==r)return p(`Invalid numberOfChannels. Expected: ${r}. Got ${a.length}`);class c{min=Number.POSITIVE_INFINITY;max=Number.NEGATIVE_INFINITY;index=0}let l=It(),h=n.length,[f,u]=e(n,o),m=M.create(()=>new Int32Array(u),r),w=(1<<f[0].shift)-1,d=r*o,g=0;for(let E=0;E<r;++E){let I=m[E],v=a[E],bt=M.create(()=>new c,h),U=Number.POSITIVE_INFINITY,V=Number.NEGATIVE_INFINITY,lt=0;for(let st=0;st<o;++st){let ht=v[st];if(U=Math.min(ht,U),V=Math.max(ht,V),(++lt&w)===0){for(let H=0;H<h;++H){let ft=f[H],N=bt[H];N.min=Math.min(N.min,U),N.max=Math.max(N.max,V),((1<<ft.shift)-1<)===0&&(I[ft.dataOffset+N.index++]=i.pack(N.min,N.max),N.min=Number.POSITIVE_INFINITY,N.max=Number.NEGATIVE_INFINITY)}U=Number.POSITIVE_INFINITY,V=Number.NEGATIVE_INFINITY}(++g&65535)===0&&s(g/d)}}return s(1),l.lab(`SamplePeaks '${self.constructor.name}'`),new X(f,m,o,r)},e=(s,n)=>{let a=0;return[M.create(r=>{let c=s[r],l=Math.ceil(n/(1<<c)),h=new Y.Stage(c,l,a);return a+=l,h},s.length),a]};i.pack=(s,n)=>{let a=B.floatToIntBits(s),o=B.floatToIntBits(n);return a|o<<16}})(Q||(Q={}));var Z;(function(i){i.init=s=>P.executor(s.channel("opfs"),new class{#t=new Map;async write(n,a){await this.#e(n,async()=>{let o=await this.#s(n,{create:!0});try{o.truncate(a.length),o.write(a.buffer,{at:0}),o.flush()}catch(r){throw console.error("OPFS write failed:",r?.name,r?.message,r?.stack??"(no stack trace)"),r}finally{o.close()}})}async read(n){return await this.#e(n,async()=>{let a=await this.#s(n);try{let o=a.getSize(),r=new Uint8Array(o);return a.read(r),r}finally{a.close()}})}async delete(n){await this.#e(n,async()=>{let a=e(n);if(a.length===0)return this.clear();let{status:o}=await k.tryCatch(this.#n(a.slice(0,-1)).then(r=>r.removeEntry(x(a.at(-1)),{recursive:!0})))})}async list(n){let a=e(n),{status:o,value:r}=await k.tryCatch(this.#n(a));if(o==="rejected")return M.empty();let c=[];for await(let{name:l,kind:h}of r.values())c.push({name:l,kind:h});return c}async clear(){let n=await navigator.storage.getDirectory();for await(let[a,o]of n.entries())o.kind==="file"?await n.removeEntry(a):o.kind==="directory"&&await n.removeEntry(a,{recursive:!0})}async#e(n,a){for(;;){let o=this.#t.get(n);if(mt(o)){await o;continue}let r=()=>p("Lock not acquired"),c=new Promise(l=>r=l);this.#t.set(n,c);try{return await a()}finally{this.#t.get(n)===c&&this.#t.delete(n),r()}}}async#s(n,a){let o=e(n);return await(await(await this.#n(o.slice(0,-1),a)).getFileHandle(x(o.at(-1)),a)).createSyncAccessHandle()}async#n(n,a){let o=await navigator.storage.getDirectory();for(let r of n)o=await o.getDirectoryHandle(r,a);return o}});let e=s=>{let n=s.replace(/^\/+|\/+$/g,"");return n===""?[]:n.split("/")}})(Z||(Z={}));var J=class{a1=0;a2=0;b0=0;b1=0;b2=0;constructor(){this.identity()}identity(){this.setNormalizedCoefficients(1,0,0,1,0,0)}setLowpassParams(t,e=Math.SQRT1_2){if(t=_(t,0,1),t>=.5)this.setNormalizedCoefficients(1,0,0,1,0,0);else if(t>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=(1-a)/2,r=o,c=2*o,l=o,h=1+n,f=-2*a,u=1-n;this.setNormalizedCoefficients(r,c,l,h,f,u)}else this.setNormalizedCoefficients(0,0,0,1,0,0);return this}setHighpassParams(t,e=Math.SQRT1_2){if(t=_(t,0,1),t===1)this.setNormalizedCoefficients(0,0,0,1,0,0);else if(t>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=(1+a)/2,r=o,c=-2*o,l=o,h=1+n,f=-2*a,u=1-n;this.setNormalizedCoefficients(r,c,l,h,f,u)}else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setNormalizedCoefficients(t,e,s,n,a,o){let r=1/n;return this.b0=t*r,this.b1=e*r,this.b2=s*r,this.a1=a*r,this.a2=o*r,this}setLowShelfParams(t,e){t=_(t,0,1);let s=Math.pow(10,e/40);if(t===1)this.setNormalizedCoefficients(s*s,0,0,1,0,0);else if(t>0){let n=A*t,o=.5*Math.sin(n)*Math.sqrt((s+1/s)*(1/1-1)+2),r=Math.cos(n),c=2*Math.sqrt(s)*o,l=s+1,h=s-1,f=s*(l-h*r+c),u=2*s*(h-l*r),m=s*(l-h*r-c),w=l+h*r+c,d=-2*(h+l*r),g=l+h*r-c;this.setNormalizedCoefficients(f,u,m,w,d,g)}else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setHighShelfParams(t,e){t=_(t,0,1);let s=Math.pow(10,e/40);if(t===1)this.setNormalizedCoefficients(1,0,0,1,0,0);else if(t>0){let n=A*t,o=.5*Math.sin(n)*Math.sqrt((s+1/s)*(1/1-1)+2),r=Math.cos(n),c=2*Math.sqrt(s)*o,l=s+1,h=s-1,f=s*(l+h*r+c),u=-2*s*(h+l*r),m=s*(l+h*r-c),w=l-h*r+c,d=2*(h-l*r),g=l-h*r-c;this.setNormalizedCoefficients(f,u,m,w,d,g)}else this.setNormalizedCoefficients(s*s,0,0,1,0,0);return this}setPeakingParams(t,e,s){t=_(t,0,1),e=Math.max(0,e);let n=Math.pow(10,s/40);if(t>0&&t<1)if(e>0){let a=A*t,o=Math.sin(a)/(2*e),r=Math.cos(a),c=1+o*n,l=-2*r,h=1-o*n,f=1+o/n,u=-2*r,m=1-o/n;this.setNormalizedCoefficients(c,l,h,f,u,m)}else this.setNormalizedCoefficients(n*n,0,0,1,0,0);else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setAllpassParams(t,e){if(t=_(t,0,1),e=Math.max(0,e),t>0&&t<1)if(e>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=1-n,r=-2*a,c=1+n,l=1+n,h=-2*a,f=1-n;this.setNormalizedCoefficients(o,r,c,l,h,f)}else this.setNormalizedCoefficients(-1,0,0,1,0,0);else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setNotchParams(t,e){if(t=_(t,0,1),e=Math.max(0,e),t>0&&t<1)if(e>0){let s=A*t,n=Math.sin(s)/(2*e),a=Math.cos(s),o=1,r=-2*a,c=1,l=1+n,h=-2*a,f=1-n;this.setNormalizedCoefficients(o,r,c,l,h,f)}else this.setNormalizedCoefficients(0,0,0,1,0,0);else this.setNormalizedCoefficients(1,0,0,1,0,0);return this}setBandpassParams(t,e){if(t=Math.max(0,t),e=Math.max(0,e),t>0&&t<1){let s=A*t;if(e>0){let n=Math.sin(s)/(2*e),a=Math.cos(s),o=n,r=0,c=-n,l=1+n,h=-2*a,f=1-n;this.setNormalizedCoefficients(o,r,c,l,h,f)}else this.setNormalizedCoefficients(1,0,0,1,0,0)}else this.setNormalizedCoefficients(0,0,0,1,0,0);return this}getFrequencyResponse(t,e,s){S(t.length===e.length&&t.length===s.length,"Array lengths do not match");let n=this.b0,a=this.b1,o=this.b2,r=this.a1,c=this.a2;for(let l=0;l<t.length;++l){let h=-Math.PI*2*t[l],f=Math.cos(h),u=Math.sin(h),m=n+((a+o*f)*f-o*u*u),w=(a+o*f)*u+o*u*f,d=1+((r+c*f)*f-c*u*u),g=(r+c*f)*u+c*u*f,E=d*d+g*g,I=(m*d+w*g)/E,v=(w*d-m*g)/E;e[l]=Math.sqrt(I*I+v*v),s[l]=Math.atan2(v,I)}}};var z=class{#t=0;#e=0;#s=0;#n=0;reset(){this.#t=0,this.#e=0,this.#s=0,this.#n=0}process({a1:t,a2:e,b0:s,b1:n,b2:a},o,r,c,l){let h=this.#t,f=this.#e,u=this.#s,m=this.#n;for(let w=c;w<l;w++){let d=o[w],g=r[w]=s*d+n*h+a*f-t*u-e*m+1e-18-1e-18;f=h,h=d,m=u,u=g}this.#t=h,this.#e=f,this.#s=u,this.#n=m}processFrame({a1:t,a2:e,b0:s,b1:n,b2:a},o){let r=s*o+n*this.#t+a*this.#e-t*this.#s-e*this.#n+1e-18-1e-18;return this.#e=this.#t,this.#t=o,this.#n=this.#s,this.#s=r,r}};var q=48,St=200,Mt=2e3,Tt=20,At=2,_t=3e-4,Bt=40,Pt=120,Rt=.2,Ft=20,vt=.66,Lt=.006,Ot={low:1,mid:4,high:8},tt=class i{static detect(t){let e=performance.now(),s=t.numberOfFrames/t.sampleRate,n=new i(t).#h(),a=((performance.now()-e)/1e3/s*100).toFixed(2);return console.debug(`realtime factor: ${a}%`),n}#t;#e;#s;#n;#r;#i;#a;#o;constructor(t){this.#t=t.sampleRate,this.#e=t.numberOfFrames,this.#s=Math.floor(Ft/1e3*this.#t),this.#n=Math.floor(Pt/1e3*this.#t),this.#r=Math.floor(Tt/1e3*this.#t),this.#i=Math.floor(this.#r/2);let e=this.#e/this.#t;this.#a=Math.floor(e*Bt),this.#o=this.#m(t)}#h(){let t=this.#f();return this.#u(t).map(s=>s/this.#t)}#f(){let t=this.#d(),e=[];for(let a of["low","mid","high"]){let o=t[a],r=this.#p(o),c=this.#w(r),l=Ot[a];for(let h of c)e.push({position:h.position,energy:h.energy*l})}let s=[0,this.#e],n=[...e].sort((a,o)=>o.energy-a.energy);for(let a of n){if(s.length>=this.#a+2&&s.length>=At+2)break;this.#g(s,a.position)||this.#x(s,a.position)}return s}#u(t){if(t.length<2)return t;let e=[t[0]],s=Math.floor(this.#t*Lt);for(let n=1;n<t.length-1;n++){let a=t[n-1],o=t[n];if(a===0){e.push(o);continue}let r=o-a,c=a+Math.floor(r*Rt),l=o-this.#s,h=Math.max(c,l),f=0;for(let d=0;d<s&&o+d<this.#e;d++)f+=this.#o[o+d]*this.#o[o+d];f=Math.sqrt(f/s);let u=f*vt,m=1/0,w=o;for(let d=o-1;d>=h;d--){let g=0;for(let I=0;I<s&&d+I<this.#e;I++)g+=this.#o[d+I]*this.#o[d+I];let E=Math.sqrt(g/s);if(E<m&&(m=E,w=d),E<u)break}e.push(w)}return e.push(t[t.length-1]),e}#m(t){let{numberOfFrames:e,numberOfChannels:s,frames:n}=t;if(s===0)return p("Invalid sample. No channels found.");if(s===1)return new Float32Array(n[0]);let a=new Float32Array(e);for(let r=0;r<s;r++){let c=n[r];for(let l=0;l<e;l++)a[l]+=c[l]}let o=1/s;for(let r=0;r<e;r++)a[r]*=o;return a}#c(t,e,s,n){let a=n/12,o=new J,r=e/this.#t;s==="lowpass"?o.setLowpassParams(r,Math.SQRT1_2):o.setHighpassParams(r,Math.SQRT1_2);let c=t;for(let l=0;l<a;l++){let h=new z,f=new z,u=new Float32Array(c.length),m=new Float32Array(c.length);h.process(o,c,u,0,c.length),f.process(o,u,m,0,c.length),c=m}return c}#d(){let t=this.#c(this.#o,St,"lowpass",q),e=this.#c(this.#o,St,"highpass",q),s=this.#c(e,Mt,"lowpass",q),n=this.#c(e,Mt,"highpass",q);return{low:t,mid:s,high:n}}#p(t){let e=new Float32Array(t.length),s=0;for(let n=0;n<this.#r&&n<t.length;n++)s+=t[n]*t[n];for(let n=0;n<t.length;n++){let a=n-this.#i,o=n+this.#i;if(a>0&&a-1<t.length){let c=t[a-1];s-=c*c}if(o<t.length){let c=t[o];s+=c*c}let r=Math.min(o,t.length-1)-Math.max(a,0)+1;e[n]=Math.sqrt(Math.max(0,s)/r)}return e}#w(t){let e=0;for(let a=0;a<t.length;a++)t[a]>e&&(e=t[a]);let s=e*_t,n=[];for(let a=1;a<t.length-1;a++){let o=t[a]-t[a-1],r=t[a+1]-t[a];o>s&&o>r&&n.push({position:a,energy:t[a]})}return n}#g(t,e){let s=this.#l(t,e);return s>0&&e-t[s-1]<this.#n?!0:s<t.length&&t[s]-e<this.#n}#x(t,e){let s=this.#l(t,e);t.splice(s,0,e)}#l(t,e){let s=0,n=t.length;for(;s<n;){let a=s+n>>>1;t[a]<e?s=a+1:n=a}return s}};var et=yt.for(self);Z.init(et);Q.install(et);P.executor(et.channel("transients"),new class{async detect(i){return tt.detect(i)}});et.channel("initialize").send("ready");
|
|
2
2
|
//# sourceMappingURL=workers-main.js.map
|