All files / roosterjs-content-model-dom/lib/modelApi/metadata updateImageMetadata.ts

100% Statements 9/9
100% Branches 0/0
100% Functions 2/2
100% Lines 9/9

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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 551x 1x                       1x 1x           1x                                     1x 7x               1x       37x    
import { getMetadata, updateMetadata } from './updateMetadata';
import {
    createBooleanDefinition,
    createNumberDefinition,
    createObjectDefinition,
    createStringDefinition,
} from './definitionCreators';
import type {
    ContentModelImage,
    ImageMetadataFormat,
    ReadonlyContentModelImage,
} from 'roosterjs-content-model-types';
 
const NumberDefinition = createNumberDefinition(true);
const BooleanDefinition = createBooleanDefinition(true);
 
/**
 * @internal
 * Definition of ImageMetadataFormat
 */
const ImageMetadataFormatDefinition = createObjectDefinition<Required<ImageMetadataFormat>>({
    widthPx: NumberDefinition,
    heightPx: NumberDefinition,
    leftPercent: NumberDefinition,
    rightPercent: NumberDefinition,
    topPercent: NumberDefinition,
    bottomPercent: NumberDefinition,
    angleRad: NumberDefinition,
    src: createStringDefinition(),
    naturalHeight: NumberDefinition,
    naturalWidth: NumberDefinition,
    flippedHorizontal: BooleanDefinition,
    flippedVertical: BooleanDefinition,
});
 
/**
 * Get image metadata
 * @param image The image Content Model
 */
export function getImageMetadata(image: ReadonlyContentModelImage): ImageMetadataFormat | null {
    return getMetadata(image, ImageMetadataFormatDefinition);
}
 
/**
 * Update image metadata with a callback
 * @param image The image Content Model
 * @param callback The callback function used for updating metadata
 */
export function updateImageMetadata(
    image: ContentModelImage,
    callback?: (format: ImageMetadataFormat | null) => ImageMetadataFormat | null
): ImageMetadataFormat | null {
    return updateMetadata(image, callback, ImageMetadataFormatDefinition);
}