Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit ccc18c4

Browse files
authored
fix: LSDV-1666: Fix lock option isn't locking audio regions (#1450)
* fix: LSDV-1666: Fix lock option isn't locking audio regions * removing feature flag validation * add readonly property * change readonly to locked --------- Co-authored-by: juliosgarbi <[email protected]>
1 parent 6a8b379 commit ccc18c4

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

src/lib/AudioUltra/Regions/Segment.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface SegmentOptions {
1414
end: number;
1515
color?: string|RgbaColorArray;
1616
selected?: boolean;
17+
locked?: boolean;
1718
updateable?: boolean;
1819
deleteable?: boolean;
1920
visible?: boolean;
@@ -46,6 +47,7 @@ export class Segment extends Events<SegmentEvents> {
4647
selected = false;
4748
highlighted = false;
4849
updateable = true;
50+
locked = false;
4951
deleteable = true;
5052
visible = true;
5153

@@ -74,6 +76,7 @@ export class Segment extends Events<SegmentEvents> {
7476
this.end = options.end;
7577
this.selected = !!options.selected;
7678
this.updateable = options.updateable ?? this.updateable;
79+
this.locked = options.locked ?? this.locked;
7780
this.visible = options.visible ?? this.visible;
7881
this.waveform = waveform;
7982
this.visualizer = visualizer;
@@ -99,6 +102,9 @@ export class Segment extends Events<SegmentEvents> {
99102
if (options.deleteable !== undefined) {
100103
this.deleteable = options.deleteable;
101104
}
105+
if (options.locked !== undefined) {
106+
this.locked = options.locked;
107+
}
102108
if (options.start !== undefined) {
103109
this.start = options.start;
104110
}
@@ -175,6 +181,7 @@ export class Segment extends Events<SegmentEvents> {
175181
id: this.id,
176182
selected: this.selected,
177183
updateable: this.updateable,
184+
locked: this.locked,
178185
deleteable: this.deleteable,
179186
visible: this.visible,
180187
};
@@ -241,7 +248,7 @@ export class Segment extends Events<SegmentEvents> {
241248
};
242249

243250
private handleDrag = (e: MouseEvent) => {
244-
if (!this.updateable) return;
251+
if (!this.updateable || this.locked) return;
245252
if (this.draggingStartPosition) {
246253
e.preventDefault();
247254
e.stopPropagation();
@@ -359,6 +366,13 @@ export class Segment extends Events<SegmentEvents> {
359366
}
360367
}
361368

369+
setLocked(locked: boolean) {
370+
this.locked = locked;
371+
372+
this.invoke('update', [this]);
373+
this.waveform.invoke('regionUpdated', [this]);
374+
}
375+
362376
updateColor(color: string|RgbaColorArray) {
363377
if (!this.updateable) return;
364378
this.setColor(color);

src/regions/AudioRegion/AudioRegionModel.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,19 @@ export const AudioRegionModel = types
162162
if (self._ws_region) self._ws_region.remove();
163163
},
164164

165+
setLocked(locked) {
166+
if (locked instanceof Function) {
167+
self.locked = locked(self.locked);
168+
} else {
169+
self.locked = locked;
170+
}
171+
172+
if (self._ws_region) {
173+
self._ws_region.drag = !self.locked;
174+
self._ws_region.resize = !self.locked;
175+
}
176+
},
177+
165178
onClick(wavesurfer, ev) {
166179
// if (! self.editable) return;
167180

src/regions/AudioRegion/AudioUltraRegionModel.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const AudioUltraRegionModel = types
1919
}))
2020
.views(self => ({
2121
wsRegionOptions() {
22+
2223
const reg = {
2324
id: self.id,
2425
start: self.start,
@@ -39,6 +40,7 @@ export const AudioUltraRegionModel = types
3940
*/
4041
const Super = {
4142
setProperty: self.setProperty,
43+
setLocked: self.setLocked,
4244
};
4345

4446
return {
@@ -101,6 +103,12 @@ export const AudioUltraRegionModel = types
101103
if (self._ws_region) self._ws_region.remove();
102104
},
103105

106+
setLocked(locked) {
107+
Super.setLocked(locked);
108+
109+
if(self._ws_region) self._ws_region.setLocked(self.locked);
110+
},
111+
104112
onMouseOver() {
105113
if (self.annotation.relationMode) {
106114
self.setHighlight(true);

0 commit comments

Comments
 (0)