@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.
Files changed (53) hide show
  1. package/dist/AssetService.js +2 -2
  2. package/dist/EffectFactories.d.ts +2 -0
  3. package/dist/EffectFactories.d.ts.map +1 -1
  4. package/dist/EffectFactories.js +5 -0
  5. package/dist/Engine.d.ts +3 -0
  6. package/dist/Engine.d.ts.map +1 -1
  7. package/dist/EngineFacade.d.ts +3 -0
  8. package/dist/EngineFacade.d.ts.map +1 -1
  9. package/dist/EngineFacade.js +20 -2
  10. package/dist/EngineWorklet.d.ts +3 -0
  11. package/dist/EngineWorklet.d.ts.map +1 -1
  12. package/dist/EngineWorklet.js +97 -9
  13. package/dist/OfflineEngineRenderer.d.ts.map +1 -1
  14. package/dist/OfflineEngineRenderer.js +1 -0
  15. package/dist/StudioPreferences.d.ts +1 -0
  16. package/dist/StudioPreferences.d.ts.map +1 -1
  17. package/dist/StudioSettings.d.ts +1 -0
  18. package/dist/StudioSettings.d.ts.map +1 -1
  19. package/dist/StudioSettings.js +4 -2
  20. package/dist/capture/CaptureAudio.d.ts +3 -1
  21. package/dist/capture/CaptureAudio.d.ts.map +1 -1
  22. package/dist/capture/CaptureAudio.js +43 -18
  23. package/dist/capture/MonitoringMode.d.ts +2 -0
  24. package/dist/capture/MonitoringMode.d.ts.map +1 -0
  25. package/dist/capture/MonitoringMode.js +1 -0
  26. package/dist/capture/index.d.ts +1 -0
  27. package/dist/capture/index.d.ts.map +1 -1
  28. package/dist/capture/index.js +1 -0
  29. package/dist/dawproject/DawProjectImporter.d.ts.map +1 -1
  30. package/dist/dawproject/DawProjectImporter.js +4 -0
  31. package/dist/processors.js +9 -9
  32. package/dist/processors.js.map +4 -4
  33. package/dist/project/Project.d.ts +1 -0
  34. package/dist/project/Project.d.ts.map +1 -1
  35. package/dist/project/Project.js +25 -7
  36. package/dist/project/ProjectApi.d.ts +1 -1
  37. package/dist/project/ProjectApi.d.ts.map +1 -1
  38. package/dist/project/ProjectApi.js +5 -2
  39. package/dist/project/ProjectMigration.d.ts.map +1 -1
  40. package/dist/project/ProjectMigration.js +3 -2
  41. package/dist/project/migration/MigrateNeuralAmpDeviceBox.d.ts +4 -0
  42. package/dist/project/migration/MigrateNeuralAmpDeviceBox.d.ts.map +1 -0
  43. package/dist/project/migration/MigrateNeuralAmpDeviceBox.js +29 -0
  44. package/dist/project/migration/index.d.ts +1 -0
  45. package/dist/project/migration/index.d.ts.map +1 -1
  46. package/dist/project/migration/index.js +1 -0
  47. package/dist/ui/clipboard/ClipboardManager.d.ts.map +1 -1
  48. package/dist/ui/clipboard/ClipboardManager.js +20 -6
  49. package/dist/ui/clipboard/ClipboardUtils.js +3 -3
  50. package/dist/ui/clipboard/types/DevicesClipboardHandler.js +1 -1
  51. package/dist/workers-main.js +1 -1
  52. package/dist/workers-main.js.map +3 -3
  53. 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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"}
@@ -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/SampleStorage";
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.tempoMap = new VaryingTempoMap(this.timelineBoxAdapter);
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.mixer = new Mixer(this.rootBoxAdapter.audioUnits);
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.boxAdapters.adapterFor(this.rootBox, RootBoxAdapter); }
155
- get timelineBoxAdapter() { return this.boxAdapters.adapterFor(this.timelineBox, TimelineBoxAdapter); }
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
- // TODO Optimise. Flag changes somewhere.
221
- return this.boxGraph.boxes().some(box => box.accept({
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
- const track = region.trackBoxAdapter.unwrap("Region is invalid");
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":"AAiBA,OAAO,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAA;AAExD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAgBvC,qBAAa,gBAAgB;WACZ,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,EAAC,QAAQ,EAAE,cAAc,EAAC,EAAE,eAAe;CA6DpF"}
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,YA0FhG,CAAA;;CACJ"}
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 = () => handler.copy().ifSome(writeEntry);
45
- const performCut = () => handler.cut().ifSome(writeEntry);
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
- event.preventDefault();
102
- performCopy();
111
+ if (performCopy()) {
112
+ event.preventDefault();
113
+ event.stopImmediatePropagation();
114
+ }
103
115
  }
104
116
  else if (event.key === "x") {
105
- event.preventDefault();
106
- performCut();
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 === "external" && targetGraph.findBox(box.address.uuid).nonEmpty()) {
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 === "external" && skippedExternalUuids.hasKey(box.address.uuid)) {
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 === "external";
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 === "external"));
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 ?? ""
@@ -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&lt)===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&lt)===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