Bin
2025-12-17 21f0498f62ada55651f4d232327e15fc47f498b1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { types } from "mobx-state-tree";
 
import NormalizationMixin from "../mixins/Normalization";
import RegionsMixin from "../mixins/Regions";
import { AreaMixin } from "../mixins/AreaMixin";
import Registry from "../core/Registry";
 
import { AudioRegionModel as _audioRegionModel } from "./AudioRegion/AudioRegionModel";
import { EditableRegion } from "./EditableRegion";
 
// this type is used in auto-generated documentation
/**
 * @example
 * {
 *   "original_length": 18,
 *   "value": {
 *     "start": 3.1,
 *     "end": 8.2,
 *     "channel": 0,
 *     "labels": ["Voice"]
 *   }
 * }
 * @typedef {Object} AudioRegionResult
 * @property {number} original_length length of the original audio (seconds)
 * @property {Object} value
 * @property {number} value.start start time of the fragment (seconds)
 * @property {number} value.end end time of the fragment (seconds)
 * @property {number} value.channel channel identifier which was targeted
 */
 
const EditableAudioModel = types.model("EditableAudioModel", {}).volatile(() => ({
  editableFields: [
    { property: "start", label: "Start" },
    { property: "end", label: "End" },
  ],
}));
 
const _exportAudioRegion = types.compose(
  "AudioRegionModel",
  RegionsMixin,
  AreaMixin,
  NormalizationMixin,
  EditableRegion,
  EditableAudioModel,
  _audioRegionModel,
);
 
Registry.addRegionType(_exportAudioRegion, "audioplus");
Registry.addRegionType(_exportAudioRegion, "audio");
 
export { _exportAudioRegion as AudioRegionModel };