@opendaw/studio-adapters 0.0.70 → 0.0.71
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/AutomatableParameterFieldAdapter.d.ts.map +1 -1
- package/dist/AutomatableParameterFieldAdapter.js +3 -1
- package/dist/BoxAdapters.d.ts.map +1 -1
- package/dist/BoxAdapters.js +2 -0
- package/dist/BoxAdaptersContext.d.ts +1 -2
- package/dist/BoxAdaptersContext.d.ts.map +1 -1
- package/dist/ClipSequencing.d.ts +1 -1
- package/dist/ClipSequencing.d.ts.map +1 -1
- package/dist/EngineStateSchema.d.ts +1 -0
- package/dist/EngineStateSchema.d.ts.map +1 -1
- package/dist/EngineStateSchema.js +1 -0
- package/dist/TempoRange.d.ts +5 -0
- package/dist/TempoRange.d.ts.map +1 -0
- package/dist/TempoRange.js +1 -0
- package/dist/Validator.d.ts +0 -2
- package/dist/Validator.d.ts.map +1 -1
- package/dist/Validator.js +4 -3
- package/dist/VaryingTempoMap.d.ts +18 -0
- package/dist/VaryingTempoMap.d.ts.map +1 -0
- package/dist/VaryingTempoMap.js +105 -0
- package/dist/audio/AudioFileBoxAdapter.js +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/project/ProjectSkeleton.d.ts.map +1 -1
- package/dist/project/ProjectSkeleton.js +4 -3
- package/dist/project/ProjectUtils.d.ts.map +1 -1
- package/dist/project/ProjectUtils.js +17 -16
- package/dist/selection/FilteredSelection.js +2 -2
- package/dist/selection/VertexSelection.d.ts.map +1 -1
- package/dist/selection/VertexSelection.js +0 -1
- package/dist/timeline/RegionBoxAdapter.d.ts +8 -0
- package/dist/timeline/RegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/RegionEditing.d.ts.map +1 -1
- package/dist/timeline/RegionEditing.js +0 -1
- package/dist/timeline/SignatureEventBoxAdapter.d.ts +24 -0
- package/dist/timeline/SignatureEventBoxAdapter.d.ts.map +1 -0
- package/dist/timeline/SignatureEventBoxAdapter.js +42 -0
- package/dist/timeline/SignatureTrackAdapter.d.ts +41 -0
- package/dist/timeline/SignatureTrackAdapter.d.ts.map +1 -0
- package/dist/timeline/SignatureTrackAdapter.js +279 -0
- package/dist/timeline/TimelineBoxAdapter.d.ts +7 -2
- package/dist/timeline/TimelineBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TimelineBoxAdapter.js +52 -7
- package/dist/timeline/TrackBoxAdapter.d.ts +1 -0
- package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TrackBoxAdapter.js +1 -0
- package/dist/timeline/clip/AudioClipBoxAdapter.d.ts +1 -2
- package/dist/timeline/clip/AudioClipBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/clip/AudioClipBoxAdapter.js +3 -4
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +10 -8
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts +2 -2
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +15 -8
- package/dist/timeline/event/ValueEventBoxAdapter.d.ts +1 -1
- package/dist/timeline/event/ValueEventBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +4 -0
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/AudioRegionBoxAdapter.js +17 -13
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +5 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.js +4 -0
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +4 -0
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/ValueRegionBoxAdapter.js +4 -0
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAIrB,QAAQ,EACR,MAAM,EAEN,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,SAAS,EACT,YAAY,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAiBlG,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAC7B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS;IA0D9B,mBAAmB,IAAI,UAAU;IAWjC,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAqB;IACxE,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAC/D,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAA6B;IAClE,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,MAAM,IAAI,SAAS,CAAsB;IAC7C,IAAI,IAAI,IAAI,aAAa,CAA0B;IACnD,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC,CAA+B;IAEnE,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC;IAW1B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;
|
|
1
|
+
{"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAIrB,QAAQ,EACR,MAAM,EAEN,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,SAAS,EACT,YAAY,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAiBlG,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAC7B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS;IA0D9B,mBAAmB,IAAI,UAAU;IAWjC,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAqB;IACxE,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAC/D,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAA6B;IAClE,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,MAAM,IAAI,SAAS,CAAsB;IAC7C,IAAI,IAAI,IAAI,aAAa,CAA0B;IACnD,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC,CAA+B;IAEnE,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC;IAW1B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAIhF,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAK1F,iCAAiC,CAAC,QAAQ,EAAE,qBAAqB,GAAG,YAAY;IAMhF,QAAQ,IAAI,CAAC;IACb,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IACpC,YAAY,IAAI,SAAS;IACzB,kBAAkB,IAAI,CAAC;IACvB,sBAAsB,IAAI,SAAS;IACnC,uBAAuB,IAAI,QAAQ,CAAC,YAAY,CAAC;IACjD,aAAa,IAAI,QAAQ,CAAC,YAAY,CAAC;IACvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWjC,KAAK,IAAI,IAAI;IAEb,SAAS,IAAI,IAAI;CAKpB"}
|
|
@@ -119,7 +119,9 @@ export class AutomatableParameterFieldAdapter {
|
|
|
119
119
|
}
|
|
120
120
|
return this.getValue();
|
|
121
121
|
}
|
|
122
|
-
subscribe(observer) {
|
|
122
|
+
subscribe(observer) {
|
|
123
|
+
return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").subscribe(observer);
|
|
124
|
+
}
|
|
123
125
|
catchupAndSubscribe(observer) {
|
|
124
126
|
observer(this);
|
|
125
127
|
return this.subscribe(observer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAKL,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAKL,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;AAkG5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAoBvC,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,kBAAkB;IAkBvC,SAAS,IAAI,IAAI;IAMjB,UAAU,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;CA8EtG"}
|
package/dist/BoxAdapters.js
CHANGED
|
@@ -66,6 +66,7 @@ import { AudioPitchStretchBoxAdapter } from "./audio/AudioPitchStretchBoxAdapter
|
|
|
66
66
|
import { TransientMarkerBoxAdapter } from "./audio/TransientMarkerBoxAdapter";
|
|
67
67
|
import { WarpMarkerBoxAdapter } from "./audio/WarpMarkerBoxAdapter";
|
|
68
68
|
import { AudioTimeStretchBoxAdapter } from "./audio/AudioTimeStretchBoxAdapter";
|
|
69
|
+
import { SignatureEventBoxAdapter } from "./timeline/SignatureEventBoxAdapter";
|
|
69
70
|
export class BoxAdapters {
|
|
70
71
|
constructor(context) {
|
|
71
72
|
_BoxAdapters_instances.add(this);
|
|
@@ -133,6 +134,7 @@ _BoxAdapters_context = new WeakMap(), _BoxAdapters_adapters = new WeakMap(), _Bo
|
|
|
133
134
|
visitFoldDeviceBox: (box) => new FoldDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
134
135
|
visitGrooveShuffleBox: (box) => new GrooveShuffleBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
135
136
|
visitMarkerBox: (box) => new MarkerBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
137
|
+
visitSignatureEventBox: (box) => new SignatureEventBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
136
138
|
visitMIDIOutputDeviceBox: (box) => new MIDIOutputDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
137
139
|
visitModularAudioInputBox: (box) => new ModularAudioInputAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
138
140
|
visitModularAudioOutputBox: (box) => new ModularAudioOutputAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
@@ -8,7 +8,7 @@ import { ParameterFieldAdapters } from "./ParameterFieldAdapters";
|
|
|
8
8
|
import { BoxAdapters } from "./BoxAdapters";
|
|
9
9
|
import { SampleLoaderManager } from "./sample/SampleLoaderManager";
|
|
10
10
|
import { SoundfontLoaderManager } from "./soundfont/SoundfontLoaderManager";
|
|
11
|
-
import {
|
|
11
|
+
import { TempoMap } from "@opendaw/lib-dsp";
|
|
12
12
|
export interface BoxAdaptersContext extends Terminable {
|
|
13
13
|
get boxGraph(): BoxGraph;
|
|
14
14
|
get boxAdapters(): BoxAdapters;
|
|
@@ -20,7 +20,6 @@ export interface BoxAdaptersContext extends Terminable {
|
|
|
20
20
|
get liveStreamBroadcaster(): LiveStreamBroadcaster;
|
|
21
21
|
get clipSequencing(): ClipSequencing;
|
|
22
22
|
get parameterFieldAdapters(): ParameterFieldAdapters;
|
|
23
|
-
get signatureDuration(): ppqn;
|
|
24
23
|
get tempoMap(): TempoMap;
|
|
25
24
|
get isMainThread(): boolean;
|
|
26
25
|
get isAudioContext(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoxAdaptersContext.d.ts","sourceRoot":"","sources":["../src/BoxAdaptersContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"BoxAdaptersContext.d.ts","sourceRoot":"","sources":["../src/BoxAdaptersContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEzC,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IAClD,IAAI,QAAQ,IAAI,QAAQ,CAAA;IACxB,IAAI,WAAW,IAAI,WAAW,CAAA;IAC9B,IAAI,aAAa,IAAI,mBAAmB,CAAA;IACxC,IAAI,gBAAgB,IAAI,sBAAsB,CAAA;IAC9C,IAAI,cAAc,IAAI,cAAc,CAAA;IACpC,IAAI,kBAAkB,IAAI,kBAAkB,CAAA;IAC5C,IAAI,kBAAkB,IAAI,kBAAkB,CAAA;IAC5C,IAAI,qBAAqB,IAAI,qBAAqB,CAAA;IAClD,IAAI,cAAc,IAAI,cAAc,CAAA;IACpC,IAAI,sBAAsB,IAAI,sBAAsB,CAAA;IACpD,IAAI,QAAQ,IAAI,QAAQ,CAAA;IACxB,IAAI,YAAY,IAAI,OAAO,CAAA;IAC3B,IAAI,cAAc,IAAI,OAAO,CAAA;CAChC"}
|
package/dist/ClipSequencing.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ export type Section = {
|
|
|
7
7
|
sectionTo: ppqn;
|
|
8
8
|
};
|
|
9
9
|
export interface ClipSequencing extends Terminable {
|
|
10
|
-
iterate(trackKey: UUID.Bytes, a: ppqn, b: ppqn):
|
|
10
|
+
iterate(trackKey: UUID.Bytes, a: ppqn, b: ppqn): IterableIterator<Section>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=ClipSequencing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipSequencing.d.ts","sourceRoot":"","sources":["../src/ClipSequencing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAClC,WAAW,EAAE,IAAI,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"ClipSequencing.d.ts","sourceRoot":"","sources":["../src/ClipSequencing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAClC,WAAW,EAAE,IAAI,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;CAC7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineStateSchema.d.ts","sourceRoot":"","sources":["../src/EngineStateSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAEvC,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"EngineStateSchema.d.ts","sourceRoot":"","sources":["../src/EngineStateSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAEvC,eAAO,MAAM,iBAAiB;;;;;;;;EAQ5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TempoRange.d.ts","sourceRoot":"","sources":["../src/TempoRange.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;CAAgC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const TempoRange = { min: 30, max: 1000 };
|
package/dist/Validator.d.ts
CHANGED
|
@@ -2,8 +2,6 @@ import { BoxGraph } from "@opendaw/lib-box";
|
|
|
2
2
|
import { Attempt, int } from "@opendaw/lib-std";
|
|
3
3
|
export declare namespace Validator {
|
|
4
4
|
const isTimeSignatureValid: (numerator: int, denominator: int) => Attempt<[int, int], string>;
|
|
5
|
-
const MIN_BPM = 30;
|
|
6
|
-
const MAX_BPM = 1000;
|
|
7
5
|
const clampBpm: (bpm: number) => number;
|
|
8
6
|
const hasOverlappingRegions: (boxGraph: BoxGraph) => boolean;
|
|
9
7
|
}
|
package/dist/Validator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAS,OAAO,EAAmB,GAAG,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAS,OAAO,EAAmB,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAKtE,yBAAiB,SAAS,CAAC;IAChB,MAAM,oBAAoB,GAAI,WAAW,GAAG,EAAE,aAAa,GAAG,KAAG,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAQjG,CAAA;IAEM,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,MAE5B,CAAA;IAEJ,MAAM,qBAAqB,GAAI,UAAU,QAAQ,KAAG,OAe3C,CAAA;CACnB"}
|
package/dist/Validator.js
CHANGED
|
@@ -2,6 +2,7 @@ import { AudioRegionBox } from "@opendaw/studio-boxes";
|
|
|
2
2
|
import { Arrays, Attempts, clamp } from "@opendaw/lib-std";
|
|
3
3
|
import { UnionBoxTypes } from "./unions";
|
|
4
4
|
import { TimeBase } from "@opendaw/lib-dsp";
|
|
5
|
+
import { TempoRange } from "./TempoRange";
|
|
5
6
|
export var Validator;
|
|
6
7
|
(function (Validator) {
|
|
7
8
|
Validator.isTimeSignatureValid = (numerator, denominator) => {
|
|
@@ -13,9 +14,9 @@ export var Validator;
|
|
|
13
14
|
}
|
|
14
15
|
return Attempts.ok([numerator, denominator]);
|
|
15
16
|
};
|
|
16
|
-
Validator.
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
Validator.clampBpm = (bpm) => Number.isFinite(bpm)
|
|
18
|
+
? clamp(bpm, TempoRange.min, TempoRange.max)
|
|
19
|
+
: 120.0;
|
|
19
20
|
Validator.hasOverlappingRegions = (boxGraph) => boxGraph.boxes()
|
|
20
21
|
.some(box => box.accept({
|
|
21
22
|
visitTrackBox: (box) => {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { bpm, ppqn, seconds, TempoMap } from "@opendaw/lib-dsp";
|
|
2
|
+
import { Observer, Subscription } from "@opendaw/lib-std";
|
|
3
|
+
import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
|
|
4
|
+
/**
|
|
5
|
+
* TempoMap implementation that handles varying tempo (tempo automation).
|
|
6
|
+
* Steps through at TempoChangeGrid intervals to match BlockRenderer behavior.
|
|
7
|
+
*/
|
|
8
|
+
export declare class VaryingTempoMap implements TempoMap {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(adapter: TimelineBoxAdapter);
|
|
11
|
+
getTempoAt(position: ppqn): bpm;
|
|
12
|
+
ppqnToSeconds(position: ppqn): seconds;
|
|
13
|
+
secondsToPPQN(time: seconds): ppqn;
|
|
14
|
+
intervalToSeconds(fromPPQN: ppqn, toPPQN: ppqn): seconds;
|
|
15
|
+
intervalToPPQN(fromSeconds: seconds, toSeconds: seconds): ppqn;
|
|
16
|
+
subscribe(observer: Observer<TempoMap>): Subscription;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=VaryingTempoMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaryingTempoMap.d.ts","sourceRoot":"","sources":["../src/VaryingTempoMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAQ,OAAO,EAAmB,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAC,QAAQ,EAAgB,YAAY,EAAa,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAEhE;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ;;gBAGhC,OAAO,EAAE,kBAAkB;IAIvC,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,GAAG;IAQ/B,aAAa,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO;IAItC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IA+BlC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO;IAwBxD,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAQ9D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,YAAY;CAQxD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _VaryingTempoMap_instances, _VaryingTempoMap_adapter, _VaryingTempoMap_absoluteSecondsToPPQN;
|
|
13
|
+
import { PPQN, TempoChangeGrid } from "@opendaw/lib-dsp";
|
|
14
|
+
import { quantizeCeil, Terminator } from "@opendaw/lib-std";
|
|
15
|
+
/**
|
|
16
|
+
* TempoMap implementation that handles varying tempo (tempo automation).
|
|
17
|
+
* Steps through at TempoChangeGrid intervals to match BlockRenderer behavior.
|
|
18
|
+
*/
|
|
19
|
+
export class VaryingTempoMap {
|
|
20
|
+
constructor(adapter) {
|
|
21
|
+
_VaryingTempoMap_instances.add(this);
|
|
22
|
+
_VaryingTempoMap_adapter.set(this, void 0);
|
|
23
|
+
__classPrivateFieldSet(this, _VaryingTempoMap_adapter, adapter, "f");
|
|
24
|
+
}
|
|
25
|
+
getTempoAt(position) {
|
|
26
|
+
const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
|
|
27
|
+
return __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents.mapOr(collection => collection.valueAt(position, storageBpm), storageBpm);
|
|
28
|
+
}
|
|
29
|
+
ppqnToSeconds(position) {
|
|
30
|
+
return this.intervalToSeconds(0, position);
|
|
31
|
+
}
|
|
32
|
+
secondsToPPQN(time) {
|
|
33
|
+
return __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, time);
|
|
34
|
+
}
|
|
35
|
+
intervalToSeconds(fromPPQN, toPPQN) {
|
|
36
|
+
if (fromPPQN >= toPPQN) {
|
|
37
|
+
return 0.0;
|
|
38
|
+
}
|
|
39
|
+
const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
|
|
40
|
+
const tempoEvents = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents;
|
|
41
|
+
if (tempoEvents.isEmpty()) {
|
|
42
|
+
return PPQN.pulsesToSeconds(toPPQN - fromPPQN, storageBpm);
|
|
43
|
+
}
|
|
44
|
+
const collection = tempoEvents.unwrap();
|
|
45
|
+
if (collection.events.isEmpty()) {
|
|
46
|
+
return PPQN.pulsesToSeconds(toPPQN - fromPPQN, storageBpm);
|
|
47
|
+
}
|
|
48
|
+
let totalSeconds = 0.0;
|
|
49
|
+
let currentPPQN = fromPPQN;
|
|
50
|
+
while (currentPPQN < toPPQN) {
|
|
51
|
+
const currentBpm = collection.valueAt(currentPPQN, storageBpm);
|
|
52
|
+
const nextGrid = quantizeCeil(currentPPQN, TempoChangeGrid);
|
|
53
|
+
const segmentEnd = nextGrid <= currentPPQN ? nextGrid + TempoChangeGrid : nextGrid;
|
|
54
|
+
const actualEnd = Math.min(segmentEnd, toPPQN);
|
|
55
|
+
totalSeconds += PPQN.pulsesToSeconds(actualEnd - currentPPQN, currentBpm);
|
|
56
|
+
currentPPQN = actualEnd;
|
|
57
|
+
}
|
|
58
|
+
return totalSeconds;
|
|
59
|
+
}
|
|
60
|
+
intervalToPPQN(fromSeconds, toSeconds) {
|
|
61
|
+
if (fromSeconds >= toSeconds) {
|
|
62
|
+
return 0.0;
|
|
63
|
+
}
|
|
64
|
+
// Find PPQN positions for both absolute times, return the difference
|
|
65
|
+
const fromPPQN = __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, fromSeconds);
|
|
66
|
+
const toPPQN = __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, toSeconds);
|
|
67
|
+
return toPPQN - fromPPQN;
|
|
68
|
+
}
|
|
69
|
+
subscribe(observer) {
|
|
70
|
+
const terminator = new Terminator();
|
|
71
|
+
terminator.ownAll(__classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.subscribe(() => observer(this)), __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").catchupAndSubscribeTempoAutomation(() => observer(this)));
|
|
72
|
+
return terminator;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
_VaryingTempoMap_adapter = new WeakMap(), _VaryingTempoMap_instances = new WeakSet(), _VaryingTempoMap_absoluteSecondsToPPQN = function _VaryingTempoMap_absoluteSecondsToPPQN(targetSeconds) {
|
|
76
|
+
if (targetSeconds <= 0) {
|
|
77
|
+
return 0.0;
|
|
78
|
+
}
|
|
79
|
+
const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
|
|
80
|
+
const tempoEvents = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents;
|
|
81
|
+
if (tempoEvents.isEmpty()) {
|
|
82
|
+
return PPQN.secondsToPulses(targetSeconds, storageBpm);
|
|
83
|
+
}
|
|
84
|
+
const collection = tempoEvents.unwrap();
|
|
85
|
+
if (collection.events.isEmpty()) {
|
|
86
|
+
return PPQN.secondsToPulses(targetSeconds, storageBpm);
|
|
87
|
+
}
|
|
88
|
+
let accumulatedSeconds = 0.0;
|
|
89
|
+
let accumulatedPPQN = 0.0;
|
|
90
|
+
while (accumulatedSeconds < targetSeconds) {
|
|
91
|
+
const currentBpm = collection.valueAt(accumulatedPPQN, storageBpm);
|
|
92
|
+
const nextGrid = quantizeCeil(accumulatedPPQN, TempoChangeGrid);
|
|
93
|
+
const segmentEnd = nextGrid <= accumulatedPPQN ? nextGrid + TempoChangeGrid : nextGrid;
|
|
94
|
+
const segmentPPQN = segmentEnd - accumulatedPPQN;
|
|
95
|
+
const segmentSeconds = PPQN.pulsesToSeconds(segmentPPQN, currentBpm);
|
|
96
|
+
if (accumulatedSeconds + segmentSeconds >= targetSeconds) {
|
|
97
|
+
const remainingSeconds = targetSeconds - accumulatedSeconds;
|
|
98
|
+
accumulatedPPQN += PPQN.secondsToPulses(remainingSeconds, currentBpm);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
accumulatedSeconds += segmentSeconds;
|
|
102
|
+
accumulatedPPQN = segmentEnd;
|
|
103
|
+
}
|
|
104
|
+
return accumulatedPPQN;
|
|
105
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -28,8 +28,10 @@ export * from "./PianoModeAdapter";
|
|
|
28
28
|
export * from "./RecordingProcessorOptions";
|
|
29
29
|
export * from "./RingBuffer";
|
|
30
30
|
export * from "./RootBoxAdapter";
|
|
31
|
+
export * from "./TempoRange";
|
|
31
32
|
export * from "./UnionAdapterTypes";
|
|
32
33
|
export * from "./Validator";
|
|
34
|
+
export * from "./VaryingTempoMap";
|
|
33
35
|
export * from "./audio-unit/AudioBusBoxAdapter";
|
|
34
36
|
export * from "./audio-unit/AudioUnitBoxAdapter";
|
|
35
37
|
export * from "./audio-unit/AudioUnitInput";
|
|
@@ -123,6 +125,8 @@ export * from "./timeline/MarkerBoxAdapter";
|
|
|
123
125
|
export * from "./timeline/MarkerTrackAdapter";
|
|
124
126
|
export * from "./timeline/RegionBoxAdapter";
|
|
125
127
|
export * from "./timeline/RegionEditing";
|
|
128
|
+
export * from "./timeline/SignatureEventBoxAdapter";
|
|
129
|
+
export * from "./timeline/SignatureTrackAdapter";
|
|
126
130
|
export * from "./timeline/TimelineBoxAdapter";
|
|
127
131
|
export * from "./timeline/TrackBoxAdapter";
|
|
128
132
|
export * from "./timeline/TrackClips";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,8 +30,10 @@ export * from "./PianoModeAdapter";
|
|
|
30
30
|
export * from "./RecordingProcessorOptions";
|
|
31
31
|
export * from "./RingBuffer";
|
|
32
32
|
export * from "./RootBoxAdapter";
|
|
33
|
+
export * from "./TempoRange";
|
|
33
34
|
export * from "./UnionAdapterTypes";
|
|
34
35
|
export * from "./Validator";
|
|
36
|
+
export * from "./VaryingTempoMap";
|
|
35
37
|
export * from "./audio-unit/AudioBusBoxAdapter";
|
|
36
38
|
export * from "./audio-unit/AudioUnitBoxAdapter";
|
|
37
39
|
export * from "./audio-unit/AudioUnitInput";
|
|
@@ -125,6 +127,8 @@ export * from "./timeline/MarkerBoxAdapter";
|
|
|
125
127
|
export * from "./timeline/MarkerTrackAdapter";
|
|
126
128
|
export * from "./timeline/RegionBoxAdapter";
|
|
127
129
|
export * from "./timeline/RegionEditing";
|
|
130
|
+
export * from "./timeline/SignatureEventBoxAdapter";
|
|
131
|
+
export * from "./timeline/SignatureTrackAdapter";
|
|
128
132
|
export * from "./timeline/TimelineBoxAdapter";
|
|
129
133
|
export * from "./timeline/TrackBoxAdapter";
|
|
130
134
|
export * from "./timeline/TrackClips";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,
|
|
1
|
+
{"version":3,"file":"ProjectSkeleton.d.ts","sourceRoot":"","sources":["../../src/project/ProjectSkeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAGH,KAAK,EAQR,MAAM,uBAAuB,CAAA;AAa9B,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,cAAc,EAAE,qBAAqB,CAAA;CACxC,CAAA;AAED,yBAAiB,eAAe,CAAC;IAItB,MAAM,KAAK,GAAI,SAAS;QAC3B,sBAAsB,EAAE,OAAO,CAAC;QAChC,iBAAiB,EAAE,OAAO,CAAA;KAC7B,KAAG,eAuDH,CAAA;IAEM,MAAM,MAAM,GAAI,UAAU,QAAQ,oBAQxC,CAAA;IAEM,MAAM,MAAM,GAAI,aAAa,eAAe,KAAG,eAYrD,CAAA;IAEM,MAAM,kBAAkB,GAAI,UAAU,QAAQ,KAAG,qBAiBvD,CAAA;CACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoxGraph } from "@opendaw/lib-box";
|
|
2
|
-
import { AudioBusBox, AudioUnitBox, BoxIO, CompressorDeviceBox, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox } from "@opendaw/studio-boxes";
|
|
2
|
+
import { AudioBusBox, AudioUnitBox, BoxIO, CompressorDeviceBox, GrooveShuffleBox, RootBox, TimelineBox, UserInterfaceBox, ValueEventCollectionBox } from "@opendaw/studio-boxes";
|
|
3
3
|
import { asInstanceOf, assert, ByteArrayInput, ByteArrayOutput, isDefined, Option, panic, UUID } from "@opendaw/lib-std";
|
|
4
|
-
import { AudioUnitType, IconSymbol } from "@opendaw/studio-enums";
|
|
4
|
+
import { AudioUnitType, Colors, IconSymbol } from "@opendaw/studio-enums";
|
|
5
5
|
export var ProjectSkeleton;
|
|
6
6
|
(function (ProjectSkeleton) {
|
|
7
7
|
const MAGIC_HEADER_OPEN = 0x4F50454E;
|
|
@@ -22,7 +22,7 @@ export var ProjectSkeleton;
|
|
|
22
22
|
box.collection.refer(rootBox.audioBusses);
|
|
23
23
|
box.label.setValue("Output");
|
|
24
24
|
box.icon.setValue(IconSymbol.toName(IconSymbol.SpeakerHeadphone));
|
|
25
|
-
box.color.setValue(
|
|
25
|
+
box.color.setValue(Colors.blue.toString());
|
|
26
26
|
});
|
|
27
27
|
const primaryAudioOutputUnit = AudioUnitBox.create(boxGraph, UUID.generate(), box => {
|
|
28
28
|
box.type.setValue(AudioUnitType.Output);
|
|
@@ -40,6 +40,7 @@ export var ProjectSkeleton;
|
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
const timelineBox = TimelineBox.create(boxGraph, UUID.generate());
|
|
43
|
+
ValueEventCollectionBox.create(boxGraph, UUID.generate(), box => timelineBox.tempoTrack.events.refer(box.owners));
|
|
43
44
|
rootBox.timeline.refer(timelineBox.root);
|
|
44
45
|
primaryAudioBus.output.refer(primaryAudioOutputUnit.input);
|
|
45
46
|
const userInterfaceBoxes = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectUtils.d.ts","sourceRoot":"","sources":["../../src/project/ProjectUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAcrC,OAAO,EAEH,YAAY,EASf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAgB,MAAM,WAAW,CAAA;AAGrD,yBAAiB,YAAY,CAAC;IASnB,MAAM,iBAAiB,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,4DAAwD,eAAe,EACvE,UAAS;QACL,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KACxB,KAClC,aAAa,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"ProjectUtils.d.ts","sourceRoot":"","sources":["../../src/project/ProjectUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAcrC,OAAO,EAEH,YAAY,EASf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAgB,MAAM,WAAW,CAAA;AAGrD,yBAAiB,YAAY,CAAC;IASnB,MAAM,iBAAiB,GAAI,gBAAgB,aAAa,CAAC,YAAY,CAAC,EAC3C,4DAAwD,eAAe,EACvE,UAAS;QACL,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KACxB,KAClC,aAAa,CAAC,YAAY,CA6B/B,CAAA;IAEM,MAAM,cAAc,GAAI,aAAa,aAAa,CAAC,YAAY,CAAC,EACxC,4DAAwD,eAAe,EACvE,iBAAgB,IAAU,KAAG,IA8C3D,CAAA;CAoGJ"}
|
|
@@ -15,18 +15,24 @@ export var ProjectUtils;
|
|
|
15
15
|
// TODO Implement include options.
|
|
16
16
|
assert(!options.includeAux && !options.includeBus, "Options are not yet implemented");
|
|
17
17
|
const excludeBox = options?.excludeTimeline === true ? excludeTimelinePredicate : Predicates.alwaysFalse;
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
const
|
|
27
|
-
|
|
18
|
+
// Get dependencies using outgoing pointers only (no mandatory incoming following)
|
|
19
|
+
// This avoids pulling in boxes from previous copies that point to shared AudioFileBox
|
|
20
|
+
const baseDeps = audioUnitBoxes
|
|
21
|
+
.flatMap(box => Array.from(box.graph.dependenciesOf(box, { alwaysFollowMandatory: false, excludeBox }).boxes));
|
|
22
|
+
// Explicitly add instruments (they have mandatory incoming pointer to AudioUnitBox.input)
|
|
23
|
+
const instruments = audioUnitBoxes
|
|
24
|
+
.flatMap(audioUnitBox => audioUnitBox.input.pointerHub.incoming().map(({ box }) => box));
|
|
25
|
+
// Deduplicate by UUID
|
|
26
|
+
const seen = UUID.newSet(uuid => uuid);
|
|
27
|
+
const dependencies = [...baseDeps, ...instruments]
|
|
28
28
|
.filter(box => box.name !== SelectionBox.ClassName && box.name !== AuxSendBox.ClassName)
|
|
29
|
-
.filter(box =>
|
|
29
|
+
.filter(box => {
|
|
30
|
+
if (seen.opt(box.address.uuid).nonEmpty()) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
seen.add(box.address.uuid);
|
|
34
|
+
return true;
|
|
35
|
+
});
|
|
30
36
|
const uuidMap = generateTransferMap(audioUnitBoxes, dependencies, rootBox.audioUnits.address.uuid, primaryAudioBus.address.uuid);
|
|
31
37
|
copy(uuidMap, boxGraph, audioUnitBoxes, dependencies);
|
|
32
38
|
reorderAudioUnits(uuidMap, audioUnitBoxes, rootBox);
|
|
@@ -113,12 +119,10 @@ export var ProjectUtils;
|
|
|
113
119
|
dependencies.forEach((source) => {
|
|
114
120
|
if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
|
|
115
121
|
if (boxGraph.findBox(source.address.uuid).nonEmpty()) {
|
|
116
|
-
console.debug(`Skipping existing file box: ${source.name} ${UUID.toString(source.address.uuid)}`);
|
|
117
122
|
existingFileBoxUUIDs.add(source.address.uuid);
|
|
118
123
|
}
|
|
119
124
|
}
|
|
120
125
|
});
|
|
121
|
-
console.debug(`Dependencies to copy: ${dependencies.length}, existing file boxes: ${existingFileBoxUUIDs.size}`);
|
|
122
126
|
PointerField.decodeWith({
|
|
123
127
|
map: (_pointer, newAddress) => newAddress.map(address => uuidMap.opt(address.uuid).match({
|
|
124
128
|
none: () => address,
|
|
@@ -137,7 +141,6 @@ export var ProjectUtils;
|
|
|
137
141
|
if (source instanceof AudioFileBox || source instanceof SoundfontFileBox) {
|
|
138
142
|
// Those boxes keep their UUID. So if they are already in the graph, skip them.
|
|
139
143
|
if (existingFileBoxUUIDs.opt(source.address.uuid).nonEmpty()) {
|
|
140
|
-
console.debug(` Skipping file box: ${source.name}`);
|
|
141
144
|
return;
|
|
142
145
|
}
|
|
143
146
|
}
|
|
@@ -145,14 +148,12 @@ export var ProjectUtils;
|
|
|
145
148
|
if (source instanceof TransientMarkerBox) {
|
|
146
149
|
const ownerUUID = source.owner.targetAddress.unwrap().uuid;
|
|
147
150
|
if (existingFileBoxUUIDs.opt(ownerUUID).nonEmpty()) {
|
|
148
|
-
console.debug(` Skipping TransientMarkerBox (owner exists)`);
|
|
149
151
|
return;
|
|
150
152
|
}
|
|
151
153
|
}
|
|
152
154
|
const input = new ByteArrayInput(source.toArrayBuffer());
|
|
153
155
|
const key = source.name;
|
|
154
156
|
const uuid = uuidMap.get(source.address.uuid).target;
|
|
155
|
-
console.debug(` Creating: ${key} ${UUID.toString(uuid)}`);
|
|
156
157
|
boxGraph.createBox(key, uuid, box => box.read(input));
|
|
157
158
|
});
|
|
158
159
|
});
|
|
@@ -23,7 +23,7 @@ export class FilteredSelection {
|
|
|
23
23
|
__classPrivateFieldSet(this, _FilteredSelection_selection, selection, "f");
|
|
24
24
|
__classPrivateFieldSet(this, _FilteredSelection_filter, filter, "f");
|
|
25
25
|
__classPrivateFieldSet(this, _FilteredSelection_mapping, mapping, "f");
|
|
26
|
-
__classPrivateFieldSet(this, _FilteredSelection_set, Address.newSet(
|
|
26
|
+
__classPrivateFieldSet(this, _FilteredSelection_set, Address.newSet(({ address }) => address), "f");
|
|
27
27
|
__classPrivateFieldSet(this, _FilteredSelection_listeners, new Listeners(), "f");
|
|
28
28
|
__classPrivateFieldGet(this, _FilteredSelection_selection, "f").selected()
|
|
29
29
|
.filter(element => __classPrivateFieldGet(this, _FilteredSelection_filter, "f").call(this, element))
|
|
@@ -37,7 +37,7 @@ export class FilteredSelection {
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
onDeselected: (element) => {
|
|
40
|
-
if (__classPrivateFieldGet(this,
|
|
40
|
+
if (__classPrivateFieldGet(this, _FilteredSelection_set, "f").hasKey(element.address)) {
|
|
41
41
|
__classPrivateFieldGet(this, _FilteredSelection_listeners, "f").proxy.onDeselected(__classPrivateFieldGet(this, _FilteredSelection_set, "f").removeByKey(element.address));
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VertexSelection.d.ts","sourceRoot":"","sources":["../../src/selection/VertexSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,SAAS,EACT,GAAG,EAGH,SAAS,EACT,SAAS,EACT,iBAAiB,EAEjB,YAAY,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAU,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAe,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS,CAAC,gBAAgB,CAAC;;IAQnD,QAAQ,CAAC,OAAO,EAAE,UAAU;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ;gBAAhD,OAAO,EAAE,UAAU,EAAW,QAAQ,EAAE,QAAQ;IAOrE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI;IAQ/C,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"VertexSelection.d.ts","sourceRoot":"","sources":["../../src/selection/VertexSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,SAAS,EACT,GAAG,EAGH,SAAS,EACT,SAAS,EACT,iBAAiB,EAEjB,YAAY,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAU,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAe,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS,CAAC,gBAAgB,CAAC;;IAQnD,QAAQ,CAAC,OAAO,EAAE,UAAU;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ;gBAAhD,OAAO,EAAE,UAAU,EAAW,QAAQ,EAAE,QAAQ;IAOrE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI;IAQ/C,OAAO,IAAI,IAAI;IASf,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,gBAAgB,CAAC,EACtC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAIzG,MAAM,CAAC,GAAG,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAmB7D,QAAQ,CAAC,GAAG,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAU/D,WAAW,IAAI,IAAI;IAInB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,gBAAgB,CAAC;IAQhF,OAAO,IAAI,OAAO;IAClB,QAAQ,IAAI,OAAO;IAEnB,KAAK,IAAI,GAAG;IAEZ,UAAU,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO;IAEjD,QAAQ,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAE3C,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,YAAY;IAEtE,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,YAAY;CA4BnF"}
|
|
@@ -51,7 +51,6 @@ export class VertexSelection {
|
|
|
51
51
|
__classPrivateFieldGet(this, _VertexSelection_selectableMap, "f").clear();
|
|
52
52
|
__classPrivateFieldGet(this, _VertexSelection_entityMap, "f").clear();
|
|
53
53
|
}
|
|
54
|
-
// TODO Make selection local
|
|
55
54
|
createFilteredSelection(affiliate, map) {
|
|
56
55
|
return new FilteredSelection(this, affiliate, map);
|
|
57
56
|
}
|
|
@@ -27,6 +27,10 @@ export interface RegionBoxAdapter<CONTENT> extends BoxAdapter, Region, Selectabl
|
|
|
27
27
|
get trackBoxAdapter(): Option<TrackBoxAdapter>;
|
|
28
28
|
get hasCollection(): boolean;
|
|
29
29
|
get optCollection(): Option<CONTENT>;
|
|
30
|
+
/** Resolve duration at a given position (for preview during drag operations) */
|
|
31
|
+
resolveDuration(position: ppqn): ppqn;
|
|
32
|
+
/** Resolve complete (position + duration) at a given position (for preview during drag operations) */
|
|
33
|
+
resolveComplete(position: ppqn): ppqn;
|
|
30
34
|
subscribeChange(observer: Observer<void>): Subscription;
|
|
31
35
|
copyTo(target?: {
|
|
32
36
|
track?: Field<Pointers.RegionCollection>;
|
|
@@ -41,6 +45,10 @@ export interface LoopableRegionBoxAdapter<CONTENT> extends RegionBoxAdapter<CONT
|
|
|
41
45
|
get offset(): ppqn;
|
|
42
46
|
get loopOffset(): ppqn;
|
|
43
47
|
get loopDuration(): ppqn;
|
|
48
|
+
/** Resolve loopOffset at a given position (for preview during drag operations) */
|
|
49
|
+
resolveLoopOffset(position: ppqn): ppqn;
|
|
50
|
+
/** Resolve loopDuration at a given position (for preview during drag operations) */
|
|
51
|
+
resolveLoopDuration(position: ppqn): ppqn;
|
|
44
52
|
}
|
|
45
53
|
export declare const RegionComparator: Comparator<AnyRegionBoxAdapter>;
|
|
46
54
|
export declare const RegionAdapters: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAY,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAE9G,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAC,GAAG,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAA;AAE1C,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACtC,yBAAyB,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,CAAC,CAAA;IAC5D,0BAA0B,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,CAAC,CAAA;IAC9D,0BAA0B,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,gBAAgB,CAAC,OAAO,CAAE,SAAQ,UAAU,EAAE,MAAM,EAAE,UAAU;IAC7E,IAAI,GAAG,IAAI,YAAY,CAAA;IACvB,IAAI,UAAU,IAAI,OAAO,CAAA;IACzB,IAAI,GAAG,IAAI,GAAG,CAAA;IACd,IAAI,IAAI,IAAI,OAAO,CAAA;IACnB,IAAI,KAAK,IAAI,MAAM,CAAA;IACnB,IAAI,UAAU,IAAI,OAAO,CAAA;IACzB,IAAI,SAAS,IAAI,OAAO,CAAA;IACxB,IAAI,SAAS,IAAI,OAAO,CAAA;IACxB,IAAI,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,CAAA;IAC9C,IAAI,aAAa,IAAI,OAAO,CAAA;IAC5B,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;IAEpC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA;IACvD,MAAM,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,mBAAmB,CAAA;IACnG,WAAW,IAAI,IAAI,CAAA;IACnB,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAA;IAChE,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAA;IACtE,MAAM,CAAC,OAAO,SAAS,uBAAuB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAC/D,OAAO,SAAS,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CAC3E;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,CAAE,SAAQ,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc;IAChG,IAAI,MAAM,IAAI,IAAI,CAAA;IAClB,IAAI,UAAU,IAAI,IAAI,CAAA;IACtB,IAAI,YAAY,IAAI,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"RegionBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionBoxAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionEditing.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionEditing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,OAAO,EAAC,mBAAmB,EAAoB,MAAM,sBAAsB,CAAA;AAE3E,yBAAiB,aAAa,CAAC;IACpB,MAAM,GAAG,GAAI,QAAQ,mBAAmB,EAAE,KAAK,IAAI,EAAE,aAAa,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"RegionEditing.d.ts","sourceRoot":"","sources":["../../src/timeline/RegionEditing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,OAAO,EAAC,mBAAmB,EAAoB,MAAM,sBAAsB,CAAA;AAE3E,yBAAiB,aAAa,CAAC;IACpB,MAAM,GAAG,GAAI,QAAQ,mBAAmB,EAAE,KAAK,IAAI,EAAE,aAAa,OAAO,KAAG,IAclF,CAAA;IAEM,MAAM,IAAI,GAAI,QAAQ,mBAAmB,EAAE,OAAO,IAAI,EAAE,KAAK,IAAI,KAAG,IAa1E,CAAA;CACJ"}
|
|
@@ -3,7 +3,6 @@ import { UnionAdapterTypes } from "../UnionAdapterTypes";
|
|
|
3
3
|
export var RegionEditing;
|
|
4
4
|
(function (RegionEditing) {
|
|
5
5
|
RegionEditing.cut = (region, cut, consolidate) => {
|
|
6
|
-
console.debug("cut", region.position, region.complete, cut);
|
|
7
6
|
if (region.position >= cut || cut >= region.complete) {
|
|
8
7
|
return;
|
|
9
8
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Comparator, int, Option, UUID } from "@opendaw/lib-std";
|
|
2
|
+
import { Address, Int32Field } from "@opendaw/lib-box";
|
|
3
|
+
import { SignatureEventBox } from "@opendaw/studio-boxes";
|
|
4
|
+
import { BoxAdaptersContext } from "../BoxAdaptersContext";
|
|
5
|
+
import { SignatureTrackAdapter } from "./SignatureTrackAdapter";
|
|
6
|
+
import { IndexedBoxAdapter } from "../IndexedBoxAdapterCollection";
|
|
7
|
+
export declare class SignatureEventBoxAdapter implements IndexedBoxAdapter {
|
|
8
|
+
#private;
|
|
9
|
+
static readonly Comparator: Comparator<SignatureEventBoxAdapter>;
|
|
10
|
+
readonly type = "signature-event";
|
|
11
|
+
constructor(context: BoxAdaptersContext, box: SignatureEventBox);
|
|
12
|
+
get box(): SignatureEventBox;
|
|
13
|
+
get uuid(): UUID.Bytes;
|
|
14
|
+
get address(): Address;
|
|
15
|
+
get index(): int;
|
|
16
|
+
get indexField(): Int32Field;
|
|
17
|
+
get relativePosition(): int;
|
|
18
|
+
get nominator(): int;
|
|
19
|
+
get denominator(): int;
|
|
20
|
+
get trackAdapter(): Option<SignatureTrackAdapter>;
|
|
21
|
+
terminate(): void;
|
|
22
|
+
toString(): string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SignatureEventBoxAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignatureEventBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/timeline/SignatureEventBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAc,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAC,OAAO,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAA;AAEhE,qBAAa,wBAAyB,YAAW,iBAAiB;;IAC9D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,wBAAwB,CAAC,CAA8B;IAE9F,QAAQ,CAAC,IAAI,qBAAoB;gBAOrB,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,iBAAiB;IAQ/D,IAAI,GAAG,IAAI,iBAAiB,CAAmB;IAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,KAAK,IAAI,GAAG,CAAoC;IACpD,IAAI,UAAU,IAAI,UAAU,CAAyB;IACrD,IAAI,gBAAgB,IAAI,GAAG,CAA+C;IAC1E,IAAI,SAAS,IAAI,GAAG,CAAwC;IAC5D,IAAI,WAAW,IAAI,GAAG,CAA0C;IAChE,IAAI,YAAY,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAGhD;IAED,SAAS;IACT,QAAQ,IAAI,MAAM;CACrB"}
|