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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 1x 1x 1003x 1003x 1003x 1003x 1003x 1003x 1003x 162x 1003x 132x 1003x 8x 1003x 2x 1003x 1x 1003x 1x 1399x 56x 1399x 50x 1399x 15x 1399x 3x 1399x 1x 1399x 1x 1717x 1717x 1717x | import type { FormatHandler } from '../FormatHandler';
import type { SizeFormat } from 'roosterjs-content-model-types';
const PercentageRegex = /[\d\.]+%/;
/**
* @internal
*/
export const sizeFormatHandler: FormatHandler<SizeFormat> = {
parse: (format, element, context) => {
const width = element.style.width || tryParseSize(element, 'width');
const height = element.style.height || tryParseSize(element, 'height');
const maxWidth = element.style.maxWidth;
const maxHeight = element.style.maxHeight;
const minWidth = element.style.minWidth;
const minHeight = element.style.minHeight;
if (width) {
format.width = width;
}
if (height) {
format.height = height;
}
if (maxWidth) {
format.maxWidth = maxWidth;
}
if (maxHeight) {
format.maxHeight = maxHeight;
}
if (minWidth) {
format.minWidth = minWidth;
}
if (minHeight) {
format.minHeight = minHeight;
}
},
apply: (format, element) => {
if (format.width) {
element.style.width = format.width;
}
if (format.height) {
element.style.height = format.height;
}
if (format.maxWidth) {
element.style.maxWidth = format.maxWidth;
}
if (format.maxHeight) {
element.style.maxHeight = format.maxHeight;
}
if (format.minWidth) {
element.style.minWidth = format.minWidth;
}
if (format.minHeight) {
element.style.minHeight = format.minHeight;
}
},
};
function tryParseSize(element: HTMLElement, attrName: 'width' | 'height'): string | undefined {
const attrValue = element.getAttribute(attrName);
const value = parseInt(attrValue || '');
return attrValue && PercentageRegex.test(attrValue)
? attrValue
: Number.isNaN(value) || value == 0
? undefined
: value + 'px';
}
|