@drop-ai/core 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +655 -237
  2. package/dist/actions/ActionRegistry.d.ts.map +1 -1
  3. package/dist/actions/ActionRegistry.js +7 -2
  4. package/dist/actions/ActionRegistry.js.map +1 -1
  5. package/dist/actions/types.d.ts +7 -1
  6. package/dist/actions/types.d.ts.map +1 -1
  7. package/dist/analysis/AudioAnalyzer.d.ts +71 -0
  8. package/dist/analysis/AudioAnalyzer.d.ts.map +1 -0
  9. package/dist/analysis/AudioAnalyzer.js +569 -0
  10. package/dist/analysis/AudioAnalyzer.js.map +1 -0
  11. package/dist/audio/AudioEngine.d.ts +14 -1
  12. package/dist/audio/AudioEngine.d.ts.map +1 -1
  13. package/dist/audio/AudioEngine.js +115 -35
  14. package/dist/audio/AudioEngine.js.map +1 -1
  15. package/dist/audio/Auditioner.d.ts +104 -0
  16. package/dist/audio/Auditioner.d.ts.map +1 -0
  17. package/dist/audio/Auditioner.js +239 -0
  18. package/dist/audio/Auditioner.js.map +1 -0
  19. package/dist/audio/BWFMetadata.d.ts +116 -0
  20. package/dist/audio/BWFMetadata.d.ts.map +1 -0
  21. package/dist/audio/BWFMetadata.js +394 -0
  22. package/dist/audio/BWFMetadata.js.map +1 -0
  23. package/dist/audio/ChannelSplitter.d.ts +37 -0
  24. package/dist/audio/ChannelSplitter.d.ts.map +1 -0
  25. package/dist/audio/ChannelSplitter.js +82 -0
  26. package/dist/audio/ChannelSplitter.js.map +1 -0
  27. package/dist/audio/ExportAnalyzer.d.ts +39 -0
  28. package/dist/audio/ExportAnalyzer.d.ts.map +1 -0
  29. package/dist/audio/ExportAnalyzer.js +76 -0
  30. package/dist/audio/ExportAnalyzer.js.map +1 -0
  31. package/dist/audio/LufsNormalizer.d.ts +37 -0
  32. package/dist/audio/LufsNormalizer.d.ts.map +1 -0
  33. package/dist/audio/LufsNormalizer.js +217 -0
  34. package/dist/audio/LufsNormalizer.js.map +1 -0
  35. package/dist/audio/OfflineExporter.d.ts +1 -6
  36. package/dist/audio/OfflineExporter.d.ts.map +1 -1
  37. package/dist/audio/OfflineExporter.js +31 -10
  38. package/dist/audio/OfflineExporter.js.map +1 -1
  39. package/dist/audio/RoutingGraph.d.ts +134 -0
  40. package/dist/audio/RoutingGraph.d.ts.map +1 -0
  41. package/dist/audio/RoutingGraph.js +547 -0
  42. package/dist/audio/RoutingGraph.js.map +1 -0
  43. package/dist/audio/SampleRateConverter.d.ts +21 -0
  44. package/dist/audio/SampleRateConverter.d.ts.map +1 -0
  45. package/dist/audio/SampleRateConverter.js +84 -0
  46. package/dist/audio/SampleRateConverter.js.map +1 -0
  47. package/dist/audio/SilencePadding.d.ts +29 -0
  48. package/dist/audio/SilencePadding.d.ts.map +1 -0
  49. package/dist/audio/SilencePadding.js +86 -0
  50. package/dist/audio/SilencePadding.js.map +1 -0
  51. package/dist/audio/SourceCache.d.ts +13 -16
  52. package/dist/audio/SourceCache.d.ts.map +1 -1
  53. package/dist/audio/SourceCache.js +21 -33
  54. package/dist/audio/SourceCache.js.map +1 -1
  55. package/dist/audio/engine/Declick.d.ts +98 -0
  56. package/dist/audio/engine/Declick.d.ts.map +1 -0
  57. package/dist/audio/engine/Declick.js +204 -0
  58. package/dist/audio/engine/Declick.js.map +1 -0
  59. package/dist/audio/engine/DiskIO.d.ts +172 -0
  60. package/dist/audio/engine/DiskIO.d.ts.map +1 -0
  61. package/dist/audio/engine/DiskIO.js +384 -0
  62. package/dist/audio/engine/DiskIO.js.map +1 -0
  63. package/dist/audio/engine/LatencyCompensator.d.ts +46 -0
  64. package/dist/audio/engine/LatencyCompensator.d.ts.map +1 -0
  65. package/dist/audio/engine/LatencyCompensator.js +84 -0
  66. package/dist/audio/engine/LatencyCompensator.js.map +1 -0
  67. package/dist/audio/engine/MultiTrackRecorder.d.ts +146 -0
  68. package/dist/audio/engine/MultiTrackRecorder.d.ts.map +1 -0
  69. package/dist/audio/engine/MultiTrackRecorder.js +359 -0
  70. package/dist/audio/engine/MultiTrackRecorder.js.map +1 -0
  71. package/dist/audio/engine/PlaylistEngine.d.ts.map +1 -1
  72. package/dist/audio/engine/PlaylistEngine.js +9 -2
  73. package/dist/audio/engine/PlaylistEngine.js.map +1 -1
  74. package/dist/audio/engine/PunchRecordManager.d.ts +113 -0
  75. package/dist/audio/engine/PunchRecordManager.d.ts.map +1 -0
  76. package/dist/audio/engine/PunchRecordManager.js +191 -0
  77. package/dist/audio/engine/PunchRecordManager.js.map +1 -0
  78. package/dist/audio/engine/RoutingGraph.d.ts +135 -0
  79. package/dist/audio/engine/RoutingGraph.d.ts.map +1 -0
  80. package/dist/audio/engine/RoutingGraph.js +436 -0
  81. package/dist/audio/engine/RoutingGraph.js.map +1 -0
  82. package/dist/audio/engine/SidechainRouter.d.ts +139 -0
  83. package/dist/audio/engine/SidechainRouter.d.ts.map +1 -0
  84. package/dist/audio/engine/SidechainRouter.js +292 -0
  85. package/dist/audio/engine/SidechainRouter.js.map +1 -0
  86. package/dist/audio/engine/XrunTracker.d.ts +71 -0
  87. package/dist/audio/engine/XrunTracker.d.ts.map +1 -0
  88. package/dist/audio/engine/XrunTracker.js +118 -0
  89. package/dist/audio/engine/XrunTracker.js.map +1 -0
  90. package/dist/audio/export/CDMarkerExporter.d.ts +62 -0
  91. package/dist/audio/export/CDMarkerExporter.d.ts.map +1 -0
  92. package/dist/audio/export/CDMarkerExporter.js +164 -0
  93. package/dist/audio/export/CDMarkerExporter.js.map +1 -0
  94. package/dist/audio/export/ExportGraphBuilder.d.ts +121 -0
  95. package/dist/audio/export/ExportGraphBuilder.d.ts.map +1 -0
  96. package/dist/audio/export/ExportGraphBuilder.js +522 -0
  97. package/dist/audio/export/ExportGraphBuilder.js.map +1 -0
  98. package/dist/audio/export/ExportPresetManager.d.ts +87 -0
  99. package/dist/audio/export/ExportPresetManager.d.ts.map +1 -0
  100. package/dist/audio/export/ExportPresetManager.js +306 -0
  101. package/dist/audio/export/ExportPresetManager.js.map +1 -0
  102. package/dist/commands/handlers/RegionHandler.d.ts.map +1 -1
  103. package/dist/commands/handlers/RegionHandler.js +25 -1
  104. package/dist/commands/handlers/RegionHandler.js.map +1 -1
  105. package/dist/commands/handlers/TrackHandler.js +1 -1
  106. package/dist/commands/handlers/TrackHandler.js.map +1 -1
  107. package/dist/commands/impl/FreezeTrackCommand.d.ts.map +1 -1
  108. package/dist/commands/impl/FreezeTrackCommand.js +37 -36
  109. package/dist/commands/impl/FreezeTrackCommand.js.map +1 -1
  110. package/dist/commands/impl/SetRegionTimeDomainCommand.d.ts.map +1 -1
  111. package/dist/commands/impl/SetRegionTimeDomainCommand.js +3 -3
  112. package/dist/commands/impl/SetRegionTimeDomainCommand.js.map +1 -1
  113. package/dist/commands/impl/ToggleLoopCommand.d.ts +1 -0
  114. package/dist/commands/impl/ToggleLoopCommand.d.ts.map +1 -1
  115. package/dist/commands/impl/ToggleLoopCommand.js +10 -0
  116. package/dist/commands/impl/ToggleLoopCommand.js.map +1 -1
  117. package/dist/commands/impl/TrimRegionCommand.d.ts +14 -1
  118. package/dist/commands/impl/TrimRegionCommand.d.ts.map +1 -1
  119. package/dist/commands/impl/TrimRegionCommand.js +138 -33
  120. package/dist/commands/impl/TrimRegionCommand.js.map +1 -1
  121. package/dist/commands/impl/TrimRegionToPlayheadCommand.d.ts +27 -0
  122. package/dist/commands/impl/TrimRegionToPlayheadCommand.d.ts.map +1 -0
  123. package/dist/commands/impl/TrimRegionToPlayheadCommand.js +69 -0
  124. package/dist/commands/impl/TrimRegionToPlayheadCommand.js.map +1 -0
  125. package/dist/commands/impl/TrimRegionToRangeCommand.d.ts +28 -0
  126. package/dist/commands/impl/TrimRegionToRangeCommand.d.ts.map +1 -0
  127. package/dist/commands/impl/TrimRegionToRangeCommand.js +69 -0
  128. package/dist/commands/impl/TrimRegionToRangeCommand.js.map +1 -0
  129. package/dist/commands/impl/TrimToAdjacentRegionCommand.d.ts +27 -0
  130. package/dist/commands/impl/TrimToAdjacentRegionCommand.d.ts.map +1 -0
  131. package/dist/commands/impl/TrimToAdjacentRegionCommand.js +77 -0
  132. package/dist/commands/impl/TrimToAdjacentRegionCommand.js.map +1 -0
  133. package/dist/commands/types.d.ts +19 -0
  134. package/dist/commands/types.d.ts.map +1 -1
  135. package/dist/commands/types.js +21 -0
  136. package/dist/commands/types.js.map +1 -1
  137. package/dist/domain/Crossfade.d.ts +78 -0
  138. package/dist/domain/Crossfade.d.ts.map +1 -0
  139. package/dist/domain/Crossfade.js +216 -0
  140. package/dist/domain/Crossfade.js.map +1 -0
  141. package/dist/domain/ExportConfig.d.ts +98 -1
  142. package/dist/domain/ExportConfig.d.ts.map +1 -1
  143. package/dist/domain/ExportConfig.js +154 -1
  144. package/dist/domain/ExportConfig.js.map +1 -1
  145. package/dist/domain/ExportPreset.d.ts +62 -0
  146. package/dist/domain/ExportPreset.d.ts.map +1 -0
  147. package/dist/domain/ExportPreset.js +79 -0
  148. package/dist/domain/ExportPreset.js.map +1 -0
  149. package/dist/domain/ImportStatus.d.ts +40 -0
  150. package/dist/domain/ImportStatus.d.ts.map +1 -0
  151. package/dist/domain/ImportStatus.js +86 -0
  152. package/dist/domain/ImportStatus.js.map +1 -0
  153. package/dist/domain/Playlist.d.ts +72 -0
  154. package/dist/domain/Playlist.d.ts.map +1 -1
  155. package/dist/domain/Playlist.js +231 -6
  156. package/dist/domain/Playlist.js.map +1 -1
  157. package/dist/domain/Region.d.ts +76 -0
  158. package/dist/domain/Region.d.ts.map +1 -1
  159. package/dist/domain/Region.js +234 -1
  160. package/dist/domain/Region.js.map +1 -1
  161. package/dist/domain/Route.d.ts +43 -3
  162. package/dist/domain/Route.d.ts.map +1 -1
  163. package/dist/domain/Route.js +92 -6
  164. package/dist/domain/Route.js.map +1 -1
  165. package/dist/domain/Session.d.ts +31 -0
  166. package/dist/domain/Session.d.ts.map +1 -1
  167. package/dist/domain/Session.js +70 -0
  168. package/dist/domain/Session.js.map +1 -1
  169. package/dist/domain/Source.d.ts +145 -1
  170. package/dist/domain/Source.d.ts.map +1 -1
  171. package/dist/domain/Source.js +144 -1
  172. package/dist/domain/Source.js.map +1 -1
  173. package/dist/domain/ThawList.d.ts +37 -0
  174. package/dist/domain/ThawList.d.ts.map +1 -0
  175. package/dist/domain/ThawList.js +73 -0
  176. package/dist/domain/ThawList.js.map +1 -0
  177. package/dist/domain/Track.d.ts +93 -1
  178. package/dist/domain/Track.d.ts.map +1 -1
  179. package/dist/domain/Track.js +136 -0
  180. package/dist/domain/Track.js.map +1 -1
  181. package/dist/domain/TriggerBox.d.ts +123 -0
  182. package/dist/domain/TriggerBox.d.ts.map +1 -0
  183. package/dist/domain/TriggerBox.js +430 -0
  184. package/dist/domain/TriggerBox.js.map +1 -0
  185. package/dist/domain/VCATrack.d.ts +64 -1
  186. package/dist/domain/VCATrack.d.ts.map +1 -1
  187. package/dist/domain/VCATrack.js +128 -1
  188. package/dist/domain/VCATrack.js.map +1 -1
  189. package/dist/domain/VideoExportConfig.d.ts +117 -0
  190. package/dist/domain/VideoExportConfig.d.ts.map +1 -0
  191. package/dist/domain/VideoExportConfig.js +244 -0
  192. package/dist/domain/VideoExportConfig.js.map +1 -0
  193. package/dist/domain/VideoExportStatus.d.ts +89 -0
  194. package/dist/domain/VideoExportStatus.d.ts.map +1 -0
  195. package/dist/domain/VideoExportStatus.js +192 -0
  196. package/dist/domain/VideoExportStatus.js.map +1 -0
  197. package/dist/domain/VideoMetadata.d.ts +46 -0
  198. package/dist/domain/VideoMetadata.d.ts.map +1 -0
  199. package/dist/domain/VideoMetadata.js +2 -0
  200. package/dist/domain/VideoMetadata.js.map +1 -0
  201. package/dist/domain/index.d.ts +5 -0
  202. package/dist/domain/index.d.ts.map +1 -1
  203. package/dist/domain/index.js +5 -0
  204. package/dist/domain/index.js.map +1 -1
  205. package/dist/domain/temporal/TempoMap.d.ts +199 -2
  206. package/dist/domain/temporal/TempoMap.d.ts.map +1 -1
  207. package/dist/domain/temporal/TempoMap.js +464 -30
  208. package/dist/domain/temporal/TempoMap.js.map +1 -1
  209. package/dist/index.d.ts +43 -1
  210. package/dist/index.d.ts.map +1 -1
  211. package/dist/index.js +32 -1
  212. package/dist/index.js.map +1 -1
  213. package/dist/lib/ThawList.d.ts +100 -0
  214. package/dist/lib/ThawList.d.ts.map +1 -0
  215. package/dist/lib/ThawList.js +153 -0
  216. package/dist/lib/ThawList.js.map +1 -0
  217. package/dist/midi/MidiFileParser.d.ts +33 -0
  218. package/dist/midi/MidiFileParser.d.ts.map +1 -0
  219. package/dist/midi/MidiFileParser.js +246 -0
  220. package/dist/midi/MidiFileParser.js.map +1 -0
  221. package/dist/midi/MidiFileWriter.d.ts +31 -0
  222. package/dist/midi/MidiFileWriter.d.ts.map +1 -0
  223. package/dist/midi/MidiFileWriter.js +160 -0
  224. package/dist/midi/MidiFileWriter.js.map +1 -0
  225. package/dist/midi/MidiImporter.d.ts +37 -0
  226. package/dist/midi/MidiImporter.d.ts.map +1 -0
  227. package/dist/midi/MidiImporter.js +62 -0
  228. package/dist/midi/MidiImporter.js.map +1 -0
  229. package/dist/plugins/PluginPresetManager.d.ts +86 -0
  230. package/dist/plugins/PluginPresetManager.d.ts.map +1 -0
  231. package/dist/plugins/PluginPresetManager.js +140 -0
  232. package/dist/plugins/PluginPresetManager.js.map +1 -0
  233. package/dist/processing/IO.d.ts +15 -1
  234. package/dist/processing/IO.d.ts.map +1 -1
  235. package/dist/processing/IO.js +29 -1
  236. package/dist/processing/IO.js.map +1 -1
  237. package/dist/processing/InternalSend.d.ts +104 -0
  238. package/dist/processing/InternalSend.d.ts.map +1 -0
  239. package/dist/processing/InternalSend.js +175 -0
  240. package/dist/processing/InternalSend.js.map +1 -0
  241. package/dist/processing/MeterDSP.d.ts +166 -0
  242. package/dist/processing/MeterDSP.d.ts.map +1 -0
  243. package/dist/processing/MeterDSP.js +754 -0
  244. package/dist/processing/MeterDSP.js.map +1 -0
  245. package/dist/processing/Panner.d.ts +145 -0
  246. package/dist/processing/Panner.d.ts.map +1 -0
  247. package/dist/processing/Panner.js +281 -0
  248. package/dist/processing/Panner.js.map +1 -0
  249. package/dist/processing/PluginInsert.d.ts +56 -1
  250. package/dist/processing/PluginInsert.d.ts.map +1 -1
  251. package/dist/processing/PluginInsert.js +180 -2
  252. package/dist/processing/PluginInsert.js.map +1 -1
  253. package/dist/processing/Processor.d.ts +38 -0
  254. package/dist/processing/Processor.d.ts.map +1 -1
  255. package/dist/processing/Processor.js +60 -1
  256. package/dist/processing/Processor.js.map +1 -1
  257. package/dist/processing/SurroundPanner.d.ts +122 -0
  258. package/dist/processing/SurroundPanner.d.ts.map +1 -0
  259. package/dist/processing/SurroundPanner.js +376 -0
  260. package/dist/processing/SurroundPanner.js.map +1 -0
  261. package/dist/processing/TruePeakLimiter.d.ts +34 -0
  262. package/dist/processing/TruePeakLimiter.d.ts.map +1 -0
  263. package/dist/processing/TruePeakLimiter.js +144 -0
  264. package/dist/processing/TruePeakLimiter.js.map +1 -0
  265. package/dist/storage/ExportPresetStorage.d.ts +33 -0
  266. package/dist/storage/ExportPresetStorage.d.ts.map +1 -0
  267. package/dist/storage/ExportPresetStorage.js +121 -0
  268. package/dist/storage/ExportPresetStorage.js.map +1 -0
  269. package/dist/storage/SessionArchive.d.ts +73 -0
  270. package/dist/storage/SessionArchive.d.ts.map +1 -0
  271. package/dist/storage/SessionArchive.js +211 -0
  272. package/dist/storage/SessionArchive.js.map +1 -0
  273. package/dist/storage/SessionTemplate.d.ts +74 -5
  274. package/dist/storage/SessionTemplate.d.ts.map +1 -1
  275. package/dist/storage/SessionTemplate.js +247 -53
  276. package/dist/storage/SessionTemplate.js.map +1 -1
  277. package/dist/utils/BwfMetadataWriter.d.ts +42 -0
  278. package/dist/utils/BwfMetadataWriter.d.ts.map +1 -0
  279. package/dist/utils/BwfMetadataWriter.js +131 -0
  280. package/dist/utils/BwfMetadataWriter.js.map +1 -0
  281. package/dist/utils/FilenameTemplate.d.ts +40 -0
  282. package/dist/utils/FilenameTemplate.d.ts.map +1 -0
  283. package/dist/utils/FilenameTemplate.js +78 -0
  284. package/dist/utils/FilenameTemplate.js.map +1 -0
  285. package/dist/utils/Logger.d.ts +28 -0
  286. package/dist/utils/Logger.d.ts.map +1 -0
  287. package/dist/utils/Logger.js +46 -0
  288. package/dist/utils/Logger.js.map +1 -0
  289. package/dist/utils/Mp4ChapterGenerator.d.ts +17 -0
  290. package/dist/utils/Mp4ChapterGenerator.d.ts.map +1 -0
  291. package/dist/utils/Mp4ChapterGenerator.js +33 -0
  292. package/dist/utils/Mp4ChapterGenerator.js.map +1 -0
  293. package/dist/utils/OggEncoder.d.ts +20 -20
  294. package/dist/utils/OggEncoder.d.ts.map +1 -1
  295. package/dist/utils/OggEncoder.js +114 -50
  296. package/dist/utils/OggEncoder.js.map +1 -1
  297. package/dist/utils/TocGenerator.d.ts +17 -0
  298. package/dist/utils/TocGenerator.d.ts.map +1 -0
  299. package/dist/utils/TocGenerator.js +47 -0
  300. package/dist/utils/TocGenerator.js.map +1 -0
  301. package/package.json +7 -8
@@ -1,19 +1,31 @@
1
1
  import { Signal } from '../lib/Signal';
2
2
  /**
3
3
  * VCA (Voltage Controlled Amplifier) Track
4
- * Ardour 참조: libs/ardour/vca.cc
4
+ * Ardour reference: libs/ardour/vca.cc
5
5
  *
6
6
  * Virtual fader that controls multiple assigned tracks.
7
7
  * Adjusting the VCA fader changes gain on all slave tracks
8
8
  * while maintaining their relative volume differences.
9
+ *
10
+ * VCA master logic includes:
11
+ * - Proportional gain application to slave tracks
12
+ * - Mute/solo propagation to slave tracks
13
+ * - Automation enable/disable
9
14
  */
10
15
  export class VCATrack {
11
16
  constructor(id, name) {
12
17
  this._gain = 1.0; // Linear gain (1.0 = 0dB)
13
18
  this._slaveTrackIds = new Set();
19
+ // Mute/Solo state
20
+ this._muted = false;
21
+ this._soloed = false;
22
+ // Automation
23
+ this._automationEnabled = false;
14
24
  this.gainChanged = new Signal();
15
25
  this.slaveAdded = new Signal();
16
26
  this.slaveRemoved = new Signal();
27
+ this.muteChanged = new Signal();
28
+ this.soloChanged = new Signal();
17
29
  this.id = id;
18
30
  this.name = name;
19
31
  }
@@ -65,20 +77,135 @@ export class VCATrack {
65
77
  get slaveCount() {
66
78
  return this._slaveTrackIds.size;
67
79
  }
80
+ // ── VCA Master Control Logic ────────────────────────────────────────────
81
+ /**
82
+ * Apply the current VCA gain as a delta to all slave tracks.
83
+ *
84
+ * Each slave track's fader volume is multiplied by the VCA's current
85
+ * linear gain. This preserves relative volume differences between
86
+ * slave tracks while allowing group-level control.
87
+ *
88
+ * @param getTrack Function to look up a Track by its ID.
89
+ * @returns Map of trackId -> the gain delta that was applied.
90
+ */
91
+ applyGainToSlaves(getTrack) {
92
+ const appliedGains = new Map();
93
+ for (const slaveId of this._slaveTrackIds) {
94
+ const track = getTrack(slaveId);
95
+ if (!track)
96
+ continue;
97
+ // The VCA gain is the linear multiplier applied on top of
98
+ // each slave's own fader setting. We convert the VCA linear
99
+ // gain to dB and add it to the slave's route volume (which
100
+ // is already in dB).
101
+ const vcaGainDb = this.getGainDb();
102
+ const currentVolume = track.route.volume;
103
+ const newVolume = currentVolume + vcaGainDb;
104
+ track.route.volume = newVolume;
105
+ appliedGains.set(slaveId, vcaGainDb);
106
+ }
107
+ return appliedGains;
108
+ }
109
+ // ── Mute / Solo ─────────────────────────────────────────────────────────
110
+ /**
111
+ * Set the VCA mute state.
112
+ * When a VCA is muted, all slave tracks are considered muted
113
+ * regardless of their individual mute state.
114
+ */
115
+ setMuted(muted) {
116
+ if (this._muted !== muted) {
117
+ this._muted = muted;
118
+ this.muteChanged.emit(muted);
119
+ }
120
+ }
121
+ get muted() {
122
+ return this._muted;
123
+ }
124
+ /**
125
+ * Set the VCA solo state.
126
+ * When a VCA is soloed, all slave tracks are treated as soloed.
127
+ */
128
+ setSoloed(soloed) {
129
+ if (this._soloed !== soloed) {
130
+ this._soloed = soloed;
131
+ this.soloChanged.emit(soloed);
132
+ }
133
+ }
134
+ get soloed() {
135
+ return this._soloed;
136
+ }
137
+ /**
138
+ * Check if a slave should be audible considering VCA state.
139
+ *
140
+ * A slave is NOT audible if:
141
+ * - The VCA is muted (overrides individual track state)
142
+ * - The slave is not actually assigned to this VCA
143
+ *
144
+ * A slave IS audible if:
145
+ * - The VCA is not muted, or
146
+ * - The VCA is soloed (solo overrides mute for slaves)
147
+ *
148
+ * @param trackId The slave track ID to check.
149
+ * @returns true if the slave should produce audio.
150
+ */
151
+ isSlaveAudible(trackId) {
152
+ if (!this._slaveTrackIds.has(trackId)) {
153
+ // Not our slave -- we have no opinion; return true
154
+ return true;
155
+ }
156
+ // Solo overrides mute at VCA level
157
+ if (this._soloed) {
158
+ return true;
159
+ }
160
+ // If VCA is muted, slave is not audible
161
+ if (this._muted) {
162
+ return false;
163
+ }
164
+ return true;
165
+ }
166
+ /**
167
+ * Remove all slave tracks from this VCA.
168
+ */
169
+ clearSlaves() {
170
+ const slaveIds = Array.from(this._slaveTrackIds);
171
+ for (const id of slaveIds) {
172
+ this._slaveTrackIds.delete(id);
173
+ this.slaveRemoved.emit(id);
174
+ }
175
+ }
176
+ // ── Automation ───────────────────────────────────────────────────────────
177
+ /**
178
+ * Enable or disable automation playback for this VCA.
179
+ * When enabled, the VCA gain may be driven by an automation lane.
180
+ */
181
+ setAutomationEnabled(enabled) {
182
+ this._automationEnabled = enabled;
183
+ }
184
+ get automationEnabled() {
185
+ return this._automationEnabled;
186
+ }
187
+ // ── Serialization ───────────────────────────────────────────────────────
68
188
  toJSON() {
69
189
  return {
70
190
  id: this.id,
71
191
  name: this.name,
72
192
  gain: this._gain,
73
193
  slaveTrackIds: Array.from(this._slaveTrackIds),
194
+ muted: this._muted,
195
+ soloed: this._soloed,
196
+ automationEnabled: this._automationEnabled,
74
197
  };
75
198
  }
76
199
  static fromJSON(data) {
200
+ var _a, _b, _c;
77
201
  const vca = new VCATrack(data.id, data.name);
78
202
  vca._gain = data.gain;
79
203
  for (const id of data.slaveTrackIds) {
80
204
  vca._slaveTrackIds.add(id);
81
205
  }
206
+ vca._muted = (_a = data.muted) !== null && _a !== void 0 ? _a : false;
207
+ vca._soloed = (_b = data.soloed) !== null && _b !== void 0 ? _b : false;
208
+ vca._automationEnabled = (_c = data.automationEnabled) !== null && _c !== void 0 ? _c : false;
82
209
  return vca;
83
210
  }
84
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VCATrack.js","sourceRoot":"","sources":["../../src/domain/VCATrack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VCATrack.js","sourceRoot":"","sources":["../../src/domain/VCATrack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { ExportConfig } from './ExportConfig';
2
+ /**
3
+ * Video codec options
4
+ */
5
+ export declare enum VideoCodec {
6
+ H264 = "h264",
7
+ H265 = "h265",
8
+ VP8 = "vp8",
9
+ VP9 = "vp9"
10
+ }
11
+ /**
12
+ * Video export presets for common platforms
13
+ */
14
+ export declare enum VideoPreset {
15
+ YOUTUBE_1080P = "youtube_1080p",
16
+ YOUTUBE_4K = "youtube_4k",
17
+ VIMEO_HD = "vimeo_hd",
18
+ TWITTER = "twitter",
19
+ INSTAGRAM = "instagram",
20
+ CUSTOM = "custom"
21
+ }
22
+ /**
23
+ * Video visualization types
24
+ */
25
+ export declare enum VideoVisualizationType {
26
+ WAVEFORM = "waveform",
27
+ SPECTROGRAM = "spectrogram",
28
+ NONE = "none"
29
+ }
30
+ /**
31
+ * Video export configuration extending base audio export
32
+ * Ardour reference: video export options in Ardour's export dialog
33
+ */
34
+ export declare class VideoExportConfig extends ExportConfig {
35
+ videoEnabled: boolean;
36
+ videoCodec: VideoCodec;
37
+ videoPreset: VideoPreset;
38
+ videoWidth: number;
39
+ videoHeight: number;
40
+ videoFps: number;
41
+ videoBitrate?: number;
42
+ visualizationType: VideoVisualizationType;
43
+ backgroundColor: string;
44
+ foregroundColor: string;
45
+ showTimecode: boolean;
46
+ showMetadata: boolean;
47
+ metadataText?: string;
48
+ /**
49
+ * Set video enabled state
50
+ */
51
+ setVideoEnabled(enabled: boolean): void;
52
+ /**
53
+ * Set video codec
54
+ */
55
+ setVideoCodec(codec: VideoCodec): void;
56
+ /**
57
+ * Set video preset and apply preset settings
58
+ */
59
+ setVideoPreset(preset: VideoPreset): void;
60
+ /**
61
+ * Set video resolution
62
+ */
63
+ setVideoResolution(width: number, height: number): void;
64
+ /**
65
+ * Set video FPS
66
+ */
67
+ setVideoFps(fps: number): void;
68
+ /**
69
+ * Set video bitrate (in kbps)
70
+ */
71
+ setVideoBitrate(bitrate: number): void;
72
+ /**
73
+ * Set visualization type
74
+ */
75
+ setVisualizationType(type: VideoVisualizationType): void;
76
+ /**
77
+ * Set background color (hex string)
78
+ */
79
+ setBackgroundColor(color: string): void;
80
+ /**
81
+ * Set foreground color (hex string)
82
+ */
83
+ setForegroundColor(color: string): void;
84
+ /**
85
+ * Set timecode overlay visibility
86
+ */
87
+ setShowTimecode(show: boolean): void;
88
+ /**
89
+ * Set metadata overlay visibility
90
+ */
91
+ setShowMetadata(show: boolean): void;
92
+ /**
93
+ * Set custom metadata text
94
+ */
95
+ setMetadataText(text: string): void;
96
+ /**
97
+ * Apply platform-specific preset settings
98
+ */
99
+ private applyPreset;
100
+ /**
101
+ * Get video file extension based on codec
102
+ */
103
+ getVideoFileExtension(): string;
104
+ /**
105
+ * Get full video file path
106
+ */
107
+ getVideoFullPath(): string;
108
+ /**
109
+ * Validate video export configuration
110
+ */
111
+ validate(): boolean;
112
+ /**
113
+ * Get total frame count for video
114
+ */
115
+ getVideoFrameCount(): number;
116
+ }
117
+ //# sourceMappingURL=VideoExportConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoExportConfig.d.ts","sourceRoot":"","sources":["../../src/domain/VideoExportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAE5D;;GAEG;AACH,oBAAY,UAAU;IAClB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;CACd;AAED;;GAEG;AACH,oBAAY,WAAW;IACnB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CACpB;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAC9B,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;CAChB;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IAExC,YAAY,EAAE,OAAO,CAAS;IAG9B,UAAU,EAAE,UAAU,CAAmB;IACzC,WAAW,EAAE,WAAW,CAA6B;IAGrD,UAAU,EAAE,MAAM,CAAQ;IAC1B,WAAW,EAAE,MAAM,CAAQ;IAC3B,QAAQ,EAAE,MAAM,CAAM;IAGtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,iBAAiB,EAAE,sBAAsB,CAAmC;IAC5E,eAAe,EAAE,MAAM,CAAa;IACpC,eAAe,EAAE,MAAM,CAAa;IAGpC,YAAY,EAAE,OAAO,CAAQ;IAC7B,YAAY,EAAE,OAAO,CAAS;IAG9B,YAAY,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACI,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAS9C;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAK7C;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAMhD;;OAEG;IACI,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9D;;OAEG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK7C;;OAEG;IACI,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI;IAK/D;;OAEG;IACI,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9C;;OAEG;IACI,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9C;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK3C;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK3C;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK1C;;OAEG;IACH,OAAO,CAAC,WAAW;IAgDnB;;OAEG;IACI,qBAAqB,IAAI,MAAM;IAatC;;OAEG;IACI,gBAAgB,IAAI,MAAM;IAMjC;;OAEG;IACa,QAAQ,IAAI,OAAO;IAmBnC;;OAEG;IACI,kBAAkB,IAAI,MAAM;CAItC"}
@@ -0,0 +1,244 @@
1
+ import { ExportConfig, ExportFormat } from './ExportConfig';
2
+ /**
3
+ * Video codec options
4
+ */
5
+ export var VideoCodec;
6
+ (function (VideoCodec) {
7
+ VideoCodec["H264"] = "h264";
8
+ VideoCodec["H265"] = "h265";
9
+ VideoCodec["VP8"] = "vp8";
10
+ VideoCodec["VP9"] = "vp9";
11
+ })(VideoCodec || (VideoCodec = {}));
12
+ /**
13
+ * Video export presets for common platforms
14
+ */
15
+ export var VideoPreset;
16
+ (function (VideoPreset) {
17
+ VideoPreset["YOUTUBE_1080P"] = "youtube_1080p";
18
+ VideoPreset["YOUTUBE_4K"] = "youtube_4k";
19
+ VideoPreset["VIMEO_HD"] = "vimeo_hd";
20
+ VideoPreset["TWITTER"] = "twitter";
21
+ VideoPreset["INSTAGRAM"] = "instagram";
22
+ VideoPreset["CUSTOM"] = "custom";
23
+ })(VideoPreset || (VideoPreset = {}));
24
+ /**
25
+ * Video visualization types
26
+ */
27
+ export var VideoVisualizationType;
28
+ (function (VideoVisualizationType) {
29
+ VideoVisualizationType["WAVEFORM"] = "waveform";
30
+ VideoVisualizationType["SPECTROGRAM"] = "spectrogram";
31
+ VideoVisualizationType["NONE"] = "none";
32
+ })(VideoVisualizationType || (VideoVisualizationType = {}));
33
+ /**
34
+ * Video export configuration extending base audio export
35
+ * Ardour reference: video export options in Ardour's export dialog
36
+ */
37
+ export class VideoExportConfig extends ExportConfig {
38
+ constructor() {
39
+ super(...arguments);
40
+ // Video Enable
41
+ this.videoEnabled = false;
42
+ // Video Codec Settings
43
+ this.videoCodec = VideoCodec.H264;
44
+ this.videoPreset = VideoPreset.YOUTUBE_1080P;
45
+ // Resolution Settings
46
+ this.videoWidth = 1920;
47
+ this.videoHeight = 1080;
48
+ this.videoFps = 30;
49
+ // Visualization Settings
50
+ this.visualizationType = VideoVisualizationType.WAVEFORM;
51
+ this.backgroundColor = '#000000';
52
+ this.foregroundColor = '#00ffcc';
53
+ // Overlay Settings
54
+ this.showTimecode = true;
55
+ this.showMetadata = false;
56
+ }
57
+ /**
58
+ * Set video enabled state
59
+ */
60
+ setVideoEnabled(enabled) {
61
+ this.videoEnabled = enabled;
62
+ // Update format to MP4 when video is enabled
63
+ if (enabled && this.format !== ExportFormat.WAV) {
64
+ this.format = ExportFormat.WAV; // We'll mux to video separately
65
+ }
66
+ this.changed.emit();
67
+ }
68
+ /**
69
+ * Set video codec
70
+ */
71
+ setVideoCodec(codec) {
72
+ this.videoCodec = codec;
73
+ this.changed.emit();
74
+ }
75
+ /**
76
+ * Set video preset and apply preset settings
77
+ */
78
+ setVideoPreset(preset) {
79
+ this.videoPreset = preset;
80
+ this.applyPreset(preset);
81
+ this.changed.emit();
82
+ }
83
+ /**
84
+ * Set video resolution
85
+ */
86
+ setVideoResolution(width, height) {
87
+ this.videoWidth = width;
88
+ this.videoHeight = height;
89
+ this.changed.emit();
90
+ }
91
+ /**
92
+ * Set video FPS
93
+ */
94
+ setVideoFps(fps) {
95
+ this.videoFps = fps;
96
+ this.changed.emit();
97
+ }
98
+ /**
99
+ * Set video bitrate (in kbps)
100
+ */
101
+ setVideoBitrate(bitrate) {
102
+ this.videoBitrate = bitrate;
103
+ this.changed.emit();
104
+ }
105
+ /**
106
+ * Set visualization type
107
+ */
108
+ setVisualizationType(type) {
109
+ this.visualizationType = type;
110
+ this.changed.emit();
111
+ }
112
+ /**
113
+ * Set background color (hex string)
114
+ */
115
+ setBackgroundColor(color) {
116
+ this.backgroundColor = color;
117
+ this.changed.emit();
118
+ }
119
+ /**
120
+ * Set foreground color (hex string)
121
+ */
122
+ setForegroundColor(color) {
123
+ this.foregroundColor = color;
124
+ this.changed.emit();
125
+ }
126
+ /**
127
+ * Set timecode overlay visibility
128
+ */
129
+ setShowTimecode(show) {
130
+ this.showTimecode = show;
131
+ this.changed.emit();
132
+ }
133
+ /**
134
+ * Set metadata overlay visibility
135
+ */
136
+ setShowMetadata(show) {
137
+ this.showMetadata = show;
138
+ this.changed.emit();
139
+ }
140
+ /**
141
+ * Set custom metadata text
142
+ */
143
+ setMetadataText(text) {
144
+ this.metadataText = text;
145
+ this.changed.emit();
146
+ }
147
+ /**
148
+ * Apply platform-specific preset settings
149
+ */
150
+ applyPreset(preset) {
151
+ switch (preset) {
152
+ case VideoPreset.YOUTUBE_1080P:
153
+ this.videoWidth = 1920;
154
+ this.videoHeight = 1080;
155
+ this.videoFps = 30;
156
+ this.videoBitrate = 8000; // 8 Mbps
157
+ this.videoCodec = VideoCodec.H264;
158
+ break;
159
+ case VideoPreset.YOUTUBE_4K:
160
+ this.videoWidth = 3840;
161
+ this.videoHeight = 2160;
162
+ this.videoFps = 60;
163
+ this.videoBitrate = 45000; // 45 Mbps
164
+ this.videoCodec = VideoCodec.H265;
165
+ break;
166
+ case VideoPreset.VIMEO_HD:
167
+ this.videoWidth = 1920;
168
+ this.videoHeight = 1080;
169
+ this.videoFps = 30;
170
+ this.videoBitrate = 10000; // 10 Mbps
171
+ this.videoCodec = VideoCodec.H264;
172
+ break;
173
+ case VideoPreset.TWITTER:
174
+ this.videoWidth = 1280;
175
+ this.videoHeight = 720;
176
+ this.videoFps = 30;
177
+ this.videoBitrate = 5000; // 5 Mbps
178
+ this.videoCodec = VideoCodec.H264;
179
+ break;
180
+ case VideoPreset.INSTAGRAM:
181
+ this.videoWidth = 1080;
182
+ this.videoHeight = 1080;
183
+ this.videoFps = 30;
184
+ this.videoBitrate = 5000; // 5 Mbps
185
+ this.videoCodec = VideoCodec.H264;
186
+ break;
187
+ case VideoPreset.CUSTOM:
188
+ // Keep current settings
189
+ break;
190
+ }
191
+ }
192
+ /**
193
+ * Get video file extension based on codec
194
+ */
195
+ getVideoFileExtension() {
196
+ switch (this.videoCodec) {
197
+ case VideoCodec.H264:
198
+ case VideoCodec.H265:
199
+ return 'mp4';
200
+ case VideoCodec.VP8:
201
+ case VideoCodec.VP9:
202
+ return 'webm';
203
+ default:
204
+ return 'mp4';
205
+ }
206
+ }
207
+ /**
208
+ * Get full video file path
209
+ */
210
+ getVideoFullPath() {
211
+ const ext = this.getVideoFileExtension();
212
+ const folder = this.folder || 'exports';
213
+ return `${folder}/${this.filename}.${ext}`;
214
+ }
215
+ /**
216
+ * Validate video export configuration
217
+ */
218
+ validate() {
219
+ // First validate base audio settings
220
+ if (!super.validate()) {
221
+ return false;
222
+ }
223
+ // If video is disabled, base validation is sufficient
224
+ if (!this.videoEnabled) {
225
+ return true;
226
+ }
227
+ // Validate video-specific settings
228
+ if (this.videoWidth <= 0 || this.videoHeight <= 0)
229
+ return false;
230
+ if (this.videoFps <= 0 || this.videoFps > 120)
231
+ return false;
232
+ if (this.videoBitrate !== undefined && this.videoBitrate <= 0)
233
+ return false;
234
+ return true;
235
+ }
236
+ /**
237
+ * Get total frame count for video
238
+ */
239
+ getVideoFrameCount() {
240
+ const duration = this.getDuration() / this.sampleRate; // Duration in seconds
241
+ return Math.ceil(duration * this.videoFps);
242
+ }
243
+ }
244
+ //# sourceMappingURL=VideoExportConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoExportConfig.js","sourceRoot":"","sources":["../../src/domain/VideoExportConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { Signal } from '../lib/Signal';
2
+ import { ExportStatus } from './ExportStatus';
3
+ /**
4
+ * Video Export Progress Stages
5
+ * Extends base export progress with video-specific stages
6
+ */
7
+ export declare enum VideoExportStage {
8
+ IDLE = "idle",
9
+ RENDERING_AUDIO = "rendering_audio",
10
+ RENDERING_VIDEO = "rendering_video",
11
+ MUXING = "muxing",
12
+ COMPLETED = "completed",
13
+ FAILED = "failed",
14
+ ABORTED = "aborted"
15
+ }
16
+ /**
17
+ * Video Export Status
18
+ * Extends ExportStatus to track multi-phase video export:
19
+ * - Phase 1: Audio rendering (40%)
20
+ * - Phase 2: Video frame rendering (40%)
21
+ * - Phase 3: FFmpeg muxing (20%)
22
+ */
23
+ export declare class VideoExportStatus extends ExportStatus {
24
+ totalFrames: number;
25
+ processedFrames: number;
26
+ ffmpegProgress: number;
27
+ private audioProgress;
28
+ private videoProgress;
29
+ private muxingProgress;
30
+ private _currentStage;
31
+ readonly videoFrameProcessed: Signal<number>;
32
+ readonly ffmpegProgressChanged: Signal<number>;
33
+ readonly stageChanged: Signal<VideoExportStage>;
34
+ constructor();
35
+ /**
36
+ * Get current video export stage
37
+ */
38
+ get currentStage(): VideoExportStage;
39
+ /**
40
+ * Get overall progress (weighted across all phases)
41
+ * Audio: 40%, Video: 40%, Muxing: 20%
42
+ */
43
+ get overallProgress(): number;
44
+ /**
45
+ * Initialize video export
46
+ */
47
+ initVideoExport(totalAudioFrames: number, totalVideoFrames: number, filename: string): void;
48
+ /**
49
+ * Update audio rendering progress
50
+ */
51
+ updateAudioProgress(processedAudioFrames: number, totalAudioFrames: number): void;
52
+ /**
53
+ * Start video frame rendering phase
54
+ */
55
+ startVideoRendering(): void;
56
+ /**
57
+ * Update video frame rendering progress
58
+ */
59
+ updateVideoFrameProgress(processedFrames: number): void;
60
+ /**
61
+ * Start FFmpeg muxing phase
62
+ */
63
+ startMuxing(): void;
64
+ /**
65
+ * Update FFmpeg muxing progress
66
+ */
67
+ updateFFmpegProgress(progress: number): void;
68
+ /**
69
+ * Complete video export
70
+ */
71
+ completeVideoExport(blob: Blob, url: string): void;
72
+ /**
73
+ * Fail video export with error
74
+ */
75
+ failVideoExport(message: string): void;
76
+ /**
77
+ * Abort video export
78
+ */
79
+ abortVideoExport(errorOccurred?: boolean): void;
80
+ /**
81
+ * Get stage display name
82
+ */
83
+ getStageName(): string;
84
+ /**
85
+ * Get progress message for current stage
86
+ */
87
+ getProgressMessage(): string;
88
+ }
89
+ //# sourceMappingURL=VideoExportStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoExportStatus.d.ts","sourceRoot":"","sources":["../../src/domain/VideoExportStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAE9D;;;GAGG;AACH,oBAAY,gBAAgB;IACxB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IAExC,WAAW,EAAE,MAAM,CAAK;IACxB,eAAe,EAAE,MAAM,CAAK;IAC5B,cAAc,EAAE,MAAM,CAAK;IAGlC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IAGnC,OAAO,CAAC,aAAa,CAA2C;IAGhE,SAAgB,mBAAmB,iBAAwB;IAC3D,SAAgB,qBAAqB,iBAAwB;IAC7D,SAAgB,YAAY,2BAAkC;;IAM9D;;OAEG;IACH,IAAW,YAAY,IAAI,gBAAgB,CAE1C;IAED;;;OAGG;IACH,IAAW,eAAe,IAAI,MAAM,CAMnC;IAED;;OAEG;IACI,eAAe,CAClB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,GACjB,IAAI;IAgBP;;OAEG;IACI,mBAAmB,CAAC,oBAAoB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IASxF;;OAEG;IACI,mBAAmB,IAAI,IAAI;IAOlC;;OAEG;IACI,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAS9D;;OAEG;IACI,WAAW,IAAI,IAAI;IAO1B;;OAEG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnD;;OAEG;IACI,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAWzD;;OAEG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7C;;OAEG;IACI,gBAAgB,CAAC,aAAa,GAAE,OAAe,GAAG,IAAI;IAM7D;;OAEG;IACI,YAAY,IAAI,MAAM;IAqB7B;;OAEG;IACI,kBAAkB,IAAI,MAAM;CAkBtC"}