html2canvas/src/css/property-descriptors/text-decoration-line.ts

38 lines
1.3 KiB
TypeScript

import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';
import {CSSValue, isIdentToken} from '../syntax/parser';
export const enum TEXT_DECORATION_LINE {
NONE = 0,
UNDERLINE = 1,
OVERLINE = 2,
LINE_THROUGH = 3,
BLINK = 4
}
export type TextDecorationLine = TEXT_DECORATION_LINE[];
export const textDecorationLine: IPropertyListDescriptor<TextDecorationLine> = {
name: 'text-decoration-line',
initialValue: 'none',
prefix: false,
type: PropertyDescriptorParsingType.LIST,
parse: (tokens: CSSValue[]): TextDecorationLine => {
return tokens
.filter(isIdentToken)
.map(token => {
switch (token.value) {
case 'underline':
return TEXT_DECORATION_LINE.UNDERLINE;
case 'overline':
return TEXT_DECORATION_LINE.OVERLINE;
case 'line-through':
return TEXT_DECORATION_LINE.LINE_THROUGH;
case 'none':
return TEXT_DECORATION_LINE.BLINK;
}
return TEXT_DECORATION_LINE.NONE;
})
.filter(line => line !== TEXT_DECORATION_LINE.NONE);
}
};