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 };
|