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 | 1x 365x 365x 365x 1x 365x 365x 3285x 3285x 167x 365x | import type {
ContentModelSegmentFormat,
ReadonlyContentModelSegment,
} from 'roosterjs-content-model-types';
/**
* Get the text format of a segment, this function will return only format that is applicable to text
* @param segment The segment to get format from
* @param includingBIU When pass true, also get Bold/Italic/Underline format
* @returns
*/
export function getSegmentTextFormat(
segment: ReadonlyContentModelSegment,
includingBIU?: boolean
): ContentModelSegmentFormat {
const format = segment.format ?? {};
const textFormat: ContentModelSegmentFormat = {
fontFamily: format.fontFamily,
fontSize: format.fontSize,
textColor: format.textColor,
backgroundColor: format.backgroundColor,
letterSpacing: format.letterSpacing,
lineHeight: format.lineHeight,
fontWeight: includingBIU ? format.fontWeight : undefined,
italic: includingBIU ? format.italic : undefined,
underline: includingBIU ? format.underline : undefined,
};
return removeUndefinedValues(textFormat);
}
const removeUndefinedValues = (format: ContentModelSegmentFormat): ContentModelSegmentFormat => {
const textFormat: Record<string, string | undefined | boolean | never[]> = {};
Object.keys(format).filter(key => {
const value = format[key as keyof ContentModelSegmentFormat];
if (value !== undefined) {
textFormat[key] = value;
}
});
return textFormat;
};
|