All files / tools/src/stateManagement/segmentation updateSegmentations.ts

0% Statements 0/5
0% Branches 0/2
0% Functions 0/2
0% Lines 0/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                                               
import type { Segmentation } from '../../types/SegmentationStateTypes';
import { defaultSegmentationStateManager } from './SegmentationStateManager';
import { triggerSegmentationModified } from './triggerSegmentationEvents';
 
/**
 * Updates multiple segmentations with new data.
 *
 * @param segmentationUpdateArray - An array of objects containing segmentation updates.
 * Each object should have a `segmentationId` and a `payload` with the properties to update.
 * @param suppressEvents - If true, the segmentation modified event will not be triggered.
 *
 * @example
 * ```typescript
 * updateSegmentations([
 *   { segmentationId: 'seg1', payload: { label: 'New Label' } },
 *   { segmentationId: 'seg2', payload: { segments: {} } }
 * ]);
 * ```
 */
export function updateSegmentations(
  segmentationUpdateArray: {
    segmentationId: string;
    payload: Partial<Segmentation>;
  }[],
  suppressEvents?: boolean
): void {
  const segmentationStateManager = defaultSegmentationStateManager;
 
  segmentationUpdateArray.forEach((segmentationUpdate) => {
    segmentationStateManager.updateSegmentation(
      segmentationUpdate.segmentationId,
      segmentationUpdate.payload
    );
 
    if (!suppressEvents) {
      triggerSegmentationModified(segmentationUpdate.segmentationId);
    }
  });
}