aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@csstools/css-calc/dist/index.d.ts
blob: 28b8481509b0a7000b61aec737c24c9f94f0f9ea (plain) (blame)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import { ComponentValue } from '@csstools/css-parser-algorithms';
import type { TokenDimension } from '@csstools/css-tokenizer';
import type { TokenNumber } from '@csstools/css-tokenizer';
import type { TokenPercentage } from '@csstools/css-tokenizer';

export declare function calc(css: string, options?: conversionOptions): string;

export declare function calcFromComponentValues(componentValuesList: Array<Array<ComponentValue>>, options?: conversionOptions): Array<Array<ComponentValue>>;

export declare type conversionOptions = {
    /**
     * If a calc expression can not be solved the parse error might be reported through this callback.
     * Not all cases are covered. Open an issue if you need specific errors reported.
     *
     * Values are recursively visited and at each nesting level an attempt is made to solve the expression.
     * Errors can be reported multiple times as a result of this.
     */
    onParseError?: (error: ParseError) => void;
    /**
     * Pass global values as a map of key value pairs.
     */
    globals?: GlobalsWithStrings;
    /**
     * The default precision is fairly high.
     * It aims to be high enough to make rounding unnoticeable in the browser.
     * You can set it to a lower number to suite your needs.
     */
    precision?: number;
    /**
     * By default this package will try to preserve units.
     * The heuristic to do this is very simplistic.
     * We take the first unit we encounter and try to convert other dimensions to that unit.
     *
     * This better matches what users expect from a CSS dev tool.
     *
     * If you want to have outputs that are closes to CSS serialized values you can set `true`.
     */
    toCanonicalUnits?: boolean;
    /**
     * Convert NaN, Infinity, ... into standard representable values.
     */
    censorIntoStandardRepresentableValues?: boolean;
    /**
     * Some percentages resolve against other values and might be negative or positive depending on context.
     * Raw percentages are more likely to be safe to simplify outside of a browser context
     *
     * @see https://drafts.csswg.org/css-values-4/#calc-simplification
     */
    rawPercentages?: boolean;
    /**
     * The values used to generate random value cache keys.
     */
    randomCaching?: {
        /**
         * The name of the property the random function is used in.
         */
        propertyName: string;
        /**
         * N is the index of the random function among other random functions in the same property value.
         */
        propertyN: number;
        /**
         * An element ID identifying the element the style is being applied to.
         * When omitted any `random()` call will not be computed.
         */
        elementID: string;
        /**
         * A document ID identifying the Document the styles are from.
         * When omitted any `random()` call will not be computed.
         */
        documentID: string;
    };
};

export declare type GlobalsWithStrings = Map<string, TokenDimension | TokenNumber | TokenPercentage | string>;

export declare const mathFunctionNames: Set<string>;

/**
 * Any errors are reported through the `onParseError` callback.
 */
export declare class ParseError extends Error {
    /** The index of the start character of the current token. */
    sourceStart: number;
    /** The index of the end character of the current token. */
    sourceEnd: number;
    constructor(message: string, sourceStart: number, sourceEnd: number);
}

export declare const ParseErrorMessage: {
    UnexpectedAdditionOfDimensionOrPercentageWithNumber: string;
    UnexpectedSubtractionOfDimensionOrPercentageWithNumber: string;
};

export declare class ParseErrorWithComponentValues extends ParseError {
    /** The associated component values. */
    componentValues: Array<ComponentValue>;
    constructor(message: string, componentValues: Array<ComponentValue>);
}

export { }