postcss-calc
Version:
PostCSS plugin to reduce calc()
90 lines (80 loc) • 1.61 kB
TypeScript
export interface MathExpression {
type: 'MathExpression';
right: CalcNode;
left: CalcNode;
operator: '*' | '+' | '-' | '/';
}
export interface ParenthesizedExpression {
type: 'ParenthesizedExpression';
content: CalcNode;
}
export interface DimensionExpression {
type:
| 'LengthValue'
| 'AngleValue'
| 'TimeValue'
| 'FrequencyValue'
| 'PercentageValue'
| 'ResolutionValue'
| 'EmValue'
| 'ExValue'
| 'ChValue'
| 'RemValue'
| 'VhValue'
| 'SvhValue'
| 'LvhValue'
| 'DvhValue'
| 'VwValue'
| 'SvwValue'
| 'LvwValue'
| 'DvwValue'
| 'VminValue'
| 'SvminValue'
| 'LvminValue'
| 'DvminValue'
| 'VmaxValue'
| 'SvmaxValue'
| 'LvmaxValue'
| 'DvmaxValue'
| 'VbValue'
| 'SvbValue'
| 'LvbValue'
| 'DvbValue'
| 'ViValue'
| 'SviValue'
| 'LviValue'
| 'DviValue'
| 'CqwValue'
| 'CqhValue'
| 'CqbValue'
| 'CqiValue'
| 'CqminValue'
| 'CqmaxValue'
| 'LhValue'
| 'RlhValue';
value: number;
unit: string;
}
export interface NumberExpression {
type: 'Number';
value: number;
}
export interface FunctionExpression {
type: 'Function';
value: string;
}
export interface CalcKeywordExpression {
type: 'CalcKeyword';
value: string;
}
export type ValueExpression = DimensionExpression | NumberExpression;
export type CalcNode =
| MathExpression
| ValueExpression
| FunctionExpression
| ParenthesizedExpression
| CalcKeywordExpression;
export interface Parser {
parse: (arg: string) => CalcNode;
}
export const parser: Parser;