html2canvas-pro 1.5.13 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.old +27 -0
- package/README.md +20 -0
- package/dist/html2canvas-pro.esm.js +2616 -3010
- package/dist/html2canvas-pro.esm.js.map +1 -1
- package/dist/html2canvas-pro.js +2616 -3010
- package/dist/html2canvas-pro.js.map +1 -1
- package/dist/html2canvas-pro.min.js +6 -2
- package/dist/lib/__tests__/index.js +57 -122
- package/dist/lib/__tests__/index.js.map +1 -1
- package/dist/lib/core/__mocks__/cache-storage.js +2 -5
- package/dist/lib/core/__mocks__/cache-storage.js.map +1 -1
- package/dist/lib/core/__mocks__/context.js +7 -10
- package/dist/lib/core/__mocks__/context.js.map +1 -1
- package/dist/lib/core/__mocks__/logger.js +9 -17
- package/dist/lib/core/__mocks__/logger.js.map +1 -1
- package/dist/lib/core/__tests__/cache-storage.js +153 -351
- package/dist/lib/core/__tests__/cache-storage.js.map +1 -1
- package/dist/lib/core/__tests__/logger.js +12 -13
- package/dist/lib/core/__tests__/logger.js.map +1 -1
- package/dist/lib/core/bitwise.js +1 -1
- package/dist/lib/core/bitwise.js.map +1 -1
- package/dist/lib/core/cache-storage.js +92 -155
- package/dist/lib/core/cache-storage.js.map +1 -1
- package/dist/lib/core/context.js +8 -10
- package/dist/lib/core/context.js.map +1 -1
- package/dist/lib/core/debugger.js +5 -5
- package/dist/lib/core/debugger.js.map +1 -1
- package/dist/lib/core/features.js +65 -68
- package/dist/lib/core/features.js.map +1 -1
- package/dist/lib/core/logger.js +21 -56
- package/dist/lib/core/logger.js.map +1 -1
- package/dist/lib/css/index.js +98 -103
- package/dist/lib/css/index.js.map +1 -1
- package/dist/lib/css/layout/__mocks__/bounds.js +1 -1
- package/dist/lib/css/layout/__mocks__/bounds.js.map +1 -1
- package/dist/lib/css/layout/bounds.js +30 -19
- package/dist/lib/css/layout/bounds.js.map +1 -1
- package/dist/lib/css/layout/text.js +50 -58
- package/dist/lib/css/layout/text.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js +24 -29
- package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/font-family.js +14 -20
- package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js +61 -83
- package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +75 -87
- package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +9 -13
- package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-clip.js +3 -3
- package/dist/lib/css/property-descriptors/background-clip.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-color.js +1 -1
- package/dist/lib/css/property-descriptors/background-image.js +6 -6
- package/dist/lib/css/property-descriptors/background-image.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-origin.js +3 -3
- package/dist/lib/css/property-descriptors/background-origin.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-position.js +17 -4
- package/dist/lib/css/property-descriptors/background-position.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-repeat.js +7 -9
- package/dist/lib/css/property-descriptors/background-repeat.js.map +1 -1
- package/dist/lib/css/property-descriptors/background-size.js +5 -7
- package/dist/lib/css/property-descriptors/background-size.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-color.js +3 -3
- package/dist/lib/css/property-descriptors/border-color.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-radius.js +5 -7
- package/dist/lib/css/property-descriptors/border-radius.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-style.js +4 -4
- package/dist/lib/css/property-descriptors/border-style.js.map +1 -1
- package/dist/lib/css/property-descriptors/border-width.js +5 -5
- package/dist/lib/css/property-descriptors/border-width.js.map +1 -1
- package/dist/lib/css/property-descriptors/box-shadow.js +10 -10
- package/dist/lib/css/property-descriptors/box-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/color.js +1 -1
- package/dist/lib/css/property-descriptors/content.js +2 -2
- package/dist/lib/css/property-descriptors/content.js.map +1 -1
- package/dist/lib/css/property-descriptors/counter-increment.js +10 -10
- package/dist/lib/css/property-descriptors/counter-increment.js.map +1 -1
- package/dist/lib/css/property-descriptors/counter-reset.js +9 -9
- package/dist/lib/css/property-descriptors/counter-reset.js.map +1 -1
- package/dist/lib/css/property-descriptors/direction.js +1 -1
- package/dist/lib/css/property-descriptors/direction.js.map +1 -1
- package/dist/lib/css/property-descriptors/display.js +4 -4
- package/dist/lib/css/property-descriptors/display.js.map +1 -1
- package/dist/lib/css/property-descriptors/duration.js +4 -4
- package/dist/lib/css/property-descriptors/duration.js.map +1 -1
- package/dist/lib/css/property-descriptors/float.js +1 -1
- package/dist/lib/css/property-descriptors/float.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-family.js +6 -6
- package/dist/lib/css/property-descriptors/font-family.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-size.js +1 -1
- package/dist/lib/css/property-descriptors/font-style.js +1 -1
- package/dist/lib/css/property-descriptors/font-style.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-variant.js +3 -3
- package/dist/lib/css/property-descriptors/font-variant.js.map +1 -1
- package/dist/lib/css/property-descriptors/font-weight.js +2 -2
- package/dist/lib/css/property-descriptors/font-weight.js.map +1 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js +1 -1
- package/dist/lib/css/property-descriptors/letter-spacing.js.map +1 -1
- package/dist/lib/css/property-descriptors/line-break.js +1 -1
- package/dist/lib/css/property-descriptors/line-break.js.map +1 -1
- package/dist/lib/css/property-descriptors/line-height.js +3 -3
- package/dist/lib/css/property-descriptors/line-height.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-image.js +2 -2
- package/dist/lib/css/property-descriptors/list-style-image.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-position.js +1 -1
- package/dist/lib/css/property-descriptors/list-style-position.js.map +1 -1
- package/dist/lib/css/property-descriptors/list-style-type.js +1 -1
- package/dist/lib/css/property-descriptors/list-style-type.js.map +1 -1
- package/dist/lib/css/property-descriptors/margin.js +3 -3
- package/dist/lib/css/property-descriptors/margin.js.map +1 -1
- package/dist/lib/css/property-descriptors/object-fit.js +4 -4
- package/dist/lib/css/property-descriptors/object-fit.js.map +1 -1
- package/dist/lib/css/property-descriptors/opacity.js +2 -2
- package/dist/lib/css/property-descriptors/opacity.js.map +1 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js +1 -1
- package/dist/lib/css/property-descriptors/overflow-wrap.js.map +1 -1
- package/dist/lib/css/property-descriptors/overflow.js +3 -3
- package/dist/lib/css/property-descriptors/overflow.js.map +1 -1
- package/dist/lib/css/property-descriptors/padding.js +3 -3
- package/dist/lib/css/property-descriptors/padding.js.map +1 -1
- package/dist/lib/css/property-descriptors/paint-order.js +6 -6
- package/dist/lib/css/property-descriptors/paint-order.js.map +1 -1
- package/dist/lib/css/property-descriptors/position.js +1 -1
- package/dist/lib/css/property-descriptors/position.js.map +1 -1
- package/dist/lib/css/property-descriptors/quotes.js +11 -11
- package/dist/lib/css/property-descriptors/quotes.js.map +1 -1
- package/dist/lib/css/property-descriptors/rotate.js +3 -3
- package/dist/lib/css/property-descriptors/rotate.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-align.js +1 -1
- package/dist/lib/css/property-descriptors/text-align.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-decoration-color.js +1 -1
- package/dist/lib/css/property-descriptors/text-decoration-line.js +4 -4
- package/dist/lib/css/property-descriptors/text-decoration-line.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-shadow.js +10 -10
- package/dist/lib/css/property-descriptors/text-shadow.js.map +1 -1
- package/dist/lib/css/property-descriptors/text-transform.js +1 -1
- package/dist/lib/css/property-descriptors/text-transform.js.map +1 -1
- package/dist/lib/css/property-descriptors/transform-origin.js +6 -6
- package/dist/lib/css/property-descriptors/transform-origin.js.map +1 -1
- package/dist/lib/css/property-descriptors/transform.js +15 -15
- package/dist/lib/css/property-descriptors/transform.js.map +1 -1
- package/dist/lib/css/property-descriptors/visibility.js +1 -1
- package/dist/lib/css/property-descriptors/visibility.js.map +1 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +1 -1
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +3 -3
- package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +1 -1
- package/dist/lib/css/property-descriptors/word-break.js +1 -1
- package/dist/lib/css/property-descriptors/word-break.js.map +1 -1
- package/dist/lib/css/property-descriptors/z-index.js +3 -3
- package/dist/lib/css/property-descriptors/z-index.js.map +1 -1
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +17 -25
- package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +1 -1
- package/dist/lib/css/syntax/parser.js +50 -55
- package/dist/lib/css/syntax/parser.js.map +1 -1
- package/dist/lib/css/syntax/tokenizer.js +205 -214
- package/dist/lib/css/syntax/tokenizer.js.map +1 -1
- package/dist/lib/css/types/__tests__/color-tests.js +103 -167
- package/dist/lib/css/types/__tests__/color-tests.js.map +1 -1
- package/dist/lib/css/types/__tests__/image-tests.js +192 -217
- package/dist/lib/css/types/__tests__/image-tests.js.map +1 -1
- package/dist/lib/css/types/angle.js +13 -13
- package/dist/lib/css/types/angle.js.map +1 -1
- package/dist/lib/css/types/color-spaces/a98.js +18 -22
- package/dist/lib/css/types/color-spaces/a98.js.map +1 -1
- package/dist/lib/css/types/color-spaces/p3.js +17 -22
- package/dist/lib/css/types/color-spaces/p3.js.map +1 -1
- package/dist/lib/css/types/color-spaces/pro-photo.js +17 -21
- package/dist/lib/css/types/color-spaces/pro-photo.js.map +1 -1
- package/dist/lib/css/types/color-spaces/rec2020.js +15 -19
- package/dist/lib/css/types/color-spaces/rec2020.js.map +1 -1
- package/dist/lib/css/types/color-spaces/srgb.js +17 -23
- package/dist/lib/css/types/color-spaces/srgb.js.map +1 -1
- package/dist/lib/css/types/color-utilities.js +80 -103
- package/dist/lib/css/types/color-utilities.js.map +1 -1
- package/dist/lib/css/types/color.js +72 -66
- package/dist/lib/css/types/color.js.map +1 -1
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js +11 -11
- package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js +16 -16
- package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/-webkit-gradient.js +26 -26
- package/dist/lib/css/types/functions/-webkit-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js +57 -65
- package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/counter.js +59 -65
- package/dist/lib/css/types/functions/counter.js.map +1 -1
- package/dist/lib/css/types/functions/gradient.js +51 -52
- package/dist/lib/css/types/functions/gradient.js.map +1 -1
- package/dist/lib/css/types/functions/linear-gradient.js +10 -10
- package/dist/lib/css/types/functions/linear-gradient.js.map +1 -1
- package/dist/lib/css/types/functions/radial-gradient.js +17 -17
- package/dist/lib/css/types/functions/radial-gradient.js.map +1 -1
- package/dist/lib/css/types/image.js +14 -14
- package/dist/lib/css/types/image.js.map +1 -1
- package/dist/lib/css/types/length-percentage.js +94 -12
- package/dist/lib/css/types/length-percentage.js.map +1 -1
- package/dist/lib/css/types/length.js +1 -3
- package/dist/lib/css/types/length.js.map +1 -1
- package/dist/lib/css/types/time.js +2 -2
- package/dist/lib/css/types/time.js.map +1 -1
- package/dist/lib/dom/__mocks__/document-cloner.js +7 -8
- package/dist/lib/dom/__mocks__/document-cloner.js.map +1 -1
- package/dist/lib/dom/document-cloner.js +195 -219
- package/dist/lib/dom/document-cloner.js.map +1 -1
- package/dist/lib/dom/element-container.js +8 -9
- package/dist/lib/dom/element-container.js.map +1 -1
- package/dist/lib/dom/elements/li-element-container.js +6 -24
- package/dist/lib/dom/elements/li-element-container.js.map +1 -1
- package/dist/lib/dom/elements/ol-element-container.js +7 -25
- package/dist/lib/dom/elements/ol-element-container.js.map +1 -1
- package/dist/lib/dom/elements/select-element-container.js +7 -25
- package/dist/lib/dom/elements/select-element-container.js.map +1 -1
- package/dist/lib/dom/elements/textarea-element-container.js +6 -24
- package/dist/lib/dom/elements/textarea-element-container.js.map +1 -1
- package/dist/lib/dom/node-parser.js +54 -45
- package/dist/lib/dom/node-parser.js.map +1 -1
- package/dist/lib/dom/replaced-elements/canvas-element-container.js +8 -26
- package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/iframe-element-container.js +17 -35
- package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/image-element-container.js +9 -27
- package/dist/lib/dom/replaced-elements/image-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/input-element-container.js +47 -59
- package/dist/lib/dom/replaced-elements/input-element-container.js.map +1 -1
- package/dist/lib/dom/replaced-elements/svg-element-container.js +14 -32
- package/dist/lib/dom/replaced-elements/svg-element-container.js.map +1 -1
- package/dist/lib/dom/text-container.js +7 -8
- package/dist/lib/dom/text-container.js.map +1 -1
- package/dist/lib/index.js +99 -156
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/invariant.js +1 -1
- package/dist/lib/invariant.js.map +1 -1
- package/dist/lib/render/background.js +44 -47
- package/dist/lib/render/background.js.map +1 -1
- package/dist/lib/render/bezier-curve.js +18 -19
- package/dist/lib/render/bezier-curve.js.map +1 -1
- package/dist/lib/render/border.js +9 -9
- package/dist/lib/render/border.js.map +1 -1
- package/dist/lib/render/bound-curves.js +35 -36
- package/dist/lib/render/bound-curves.js.map +1 -1
- package/dist/lib/render/box-sizing.js +11 -11
- package/dist/lib/render/box-sizing.js.map +1 -1
- package/dist/lib/render/canvas/canvas-renderer.js +642 -915
- package/dist/lib/render/canvas/canvas-renderer.js.map +1 -1
- package/dist/lib/render/canvas/foreignobject-renderer.js +35 -101
- package/dist/lib/render/canvas/foreignobject-renderer.js.map +1 -1
- package/dist/lib/render/effects.js +12 -17
- package/dist/lib/render/effects.js.map +1 -1
- package/dist/lib/render/font-metrics.js +17 -18
- package/dist/lib/render/font-metrics.js.map +1 -1
- package/dist/lib/render/path.js +4 -4
- package/dist/lib/render/path.js.map +1 -1
- package/dist/lib/render/renderer.js +3 -4
- package/dist/lib/render/renderer.js.map +1 -1
- package/dist/lib/render/stacking-context.js +71 -70
- package/dist/lib/render/stacking-context.js.map +1 -1
- package/dist/lib/render/vector.js +6 -7
- package/dist/lib/render/vector.js.map +1 -1
- package/dist/types/css/types/length-percentage.d.ts +11 -1
- package/dist/types/dom/replaced-elements/input-element-container.d.ts +2 -0
- package/eslint.config.js +35 -0
- package/jest.config.cjs +5 -0
- package/karma.conf.cjs +295 -0
- package/package.json +19 -15
- package/test-punctuation.html +0 -77
|
@@ -2,95 +2,87 @@
|
|
|
2
2
|
// https://www.w3.org/TR/css-syntax-3
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Tokenizer = exports.EOF_TOKEN = exports.FLAG_NUMBER = exports.FLAG_INTEGER = exports.FLAG_ID = exports.FLAG_UNRESTRICTED = void 0;
|
|
5
|
-
|
|
5
|
+
const css_line_break_1 = require("css-line-break");
|
|
6
6
|
exports.FLAG_UNRESTRICTED = 1 << 0;
|
|
7
7
|
exports.FLAG_ID = 1 << 1;
|
|
8
8
|
exports.FLAG_INTEGER = 1 << 2;
|
|
9
9
|
exports.FLAG_NUMBER = 1 << 3;
|
|
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
|
-
var isNameStartCodePoint = function (codePoint) {
|
|
76
|
-
return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
|
|
77
|
-
};
|
|
78
|
-
var isNameCodePoint = function (codePoint) {
|
|
79
|
-
return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
|
|
80
|
-
};
|
|
81
|
-
var isNonPrintableCodePoint = function (codePoint) {
|
|
10
|
+
const LINE_FEED = 0x000a;
|
|
11
|
+
const SOLIDUS = 0x002f;
|
|
12
|
+
const REVERSE_SOLIDUS = 0x005c;
|
|
13
|
+
const CHARACTER_TABULATION = 0x0009;
|
|
14
|
+
const SPACE = 0x0020;
|
|
15
|
+
const QUOTATION_MARK = 0x0022;
|
|
16
|
+
const EQUALS_SIGN = 0x003d;
|
|
17
|
+
const NUMBER_SIGN = 0x0023;
|
|
18
|
+
const DOLLAR_SIGN = 0x0024;
|
|
19
|
+
const PERCENTAGE_SIGN = 0x0025;
|
|
20
|
+
const APOSTROPHE = 0x0027;
|
|
21
|
+
const LEFT_PARENTHESIS = 0x0028;
|
|
22
|
+
const RIGHT_PARENTHESIS = 0x0029;
|
|
23
|
+
const LOW_LINE = 0x005f;
|
|
24
|
+
const HYPHEN_MINUS = 0x002d;
|
|
25
|
+
const EXCLAMATION_MARK = 0x0021;
|
|
26
|
+
const LESS_THAN_SIGN = 0x003c;
|
|
27
|
+
const GREATER_THAN_SIGN = 0x003e;
|
|
28
|
+
const COMMERCIAL_AT = 0x0040;
|
|
29
|
+
const LEFT_SQUARE_BRACKET = 0x005b;
|
|
30
|
+
const RIGHT_SQUARE_BRACKET = 0x005d;
|
|
31
|
+
const CIRCUMFLEX_ACCENT = 0x003d;
|
|
32
|
+
const LEFT_CURLY_BRACKET = 0x007b;
|
|
33
|
+
const QUESTION_MARK = 0x003f;
|
|
34
|
+
const RIGHT_CURLY_BRACKET = 0x007d;
|
|
35
|
+
const VERTICAL_LINE = 0x007c;
|
|
36
|
+
const TILDE = 0x007e;
|
|
37
|
+
const CONTROL = 0x0080;
|
|
38
|
+
const REPLACEMENT_CHARACTER = 0xfffd;
|
|
39
|
+
const ASTERISK = 0x002a;
|
|
40
|
+
const PLUS_SIGN = 0x002b;
|
|
41
|
+
const COMMA = 0x002c;
|
|
42
|
+
const COLON = 0x003a;
|
|
43
|
+
const SEMICOLON = 0x003b;
|
|
44
|
+
const FULL_STOP = 0x002e;
|
|
45
|
+
const NULL = 0x0000;
|
|
46
|
+
const BACKSPACE = 0x0008;
|
|
47
|
+
const LINE_TABULATION = 0x000b;
|
|
48
|
+
const SHIFT_OUT = 0x000e;
|
|
49
|
+
const INFORMATION_SEPARATOR_ONE = 0x001f;
|
|
50
|
+
const DELETE = 0x007f;
|
|
51
|
+
const EOF = -1;
|
|
52
|
+
const ZERO = 0x0030;
|
|
53
|
+
const a = 0x0061;
|
|
54
|
+
const e = 0x0065;
|
|
55
|
+
const f = 0x0066;
|
|
56
|
+
const u = 0x0075;
|
|
57
|
+
const z = 0x007a;
|
|
58
|
+
const A = 0x0041;
|
|
59
|
+
const E = 0x0045;
|
|
60
|
+
const F = 0x0046;
|
|
61
|
+
const U = 0x0055;
|
|
62
|
+
const Z = 0x005a;
|
|
63
|
+
const isDigit = (codePoint) => codePoint >= ZERO && codePoint <= 0x0039;
|
|
64
|
+
const isSurrogateCodePoint = (codePoint) => codePoint >= 0xd800 && codePoint <= 0xdfff;
|
|
65
|
+
const isHex = (codePoint) => isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);
|
|
66
|
+
const isLowerCaseLetter = (codePoint) => codePoint >= a && codePoint <= z;
|
|
67
|
+
const isUpperCaseLetter = (codePoint) => codePoint >= A && codePoint <= Z;
|
|
68
|
+
const isLetter = (codePoint) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);
|
|
69
|
+
const isNonASCIICodePoint = (codePoint) => codePoint >= CONTROL;
|
|
70
|
+
const isWhiteSpace = (codePoint) => codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
|
|
71
|
+
const isNameStartCodePoint = (codePoint) => isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
|
|
72
|
+
const isNameCodePoint = (codePoint) => isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
|
|
73
|
+
const isNonPrintableCodePoint = (codePoint) => {
|
|
82
74
|
return ((codePoint >= NULL && codePoint <= BACKSPACE) ||
|
|
83
75
|
codePoint === LINE_TABULATION ||
|
|
84
76
|
(codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||
|
|
85
77
|
codePoint === DELETE);
|
|
86
78
|
};
|
|
87
|
-
|
|
79
|
+
const isValidEscape = (c1, c2) => {
|
|
88
80
|
if (c1 !== REVERSE_SOLIDUS) {
|
|
89
81
|
return false;
|
|
90
82
|
}
|
|
91
83
|
return c2 !== LINE_FEED;
|
|
92
84
|
};
|
|
93
|
-
|
|
85
|
+
const isIdentifierStart = (c1, c2, c3) => {
|
|
94
86
|
if (c1 === HYPHEN_MINUS) {
|
|
95
87
|
return isNameStartCodePoint(c2) || isValidEscape(c2, c3);
|
|
96
88
|
}
|
|
@@ -102,7 +94,7 @@ var isIdentifierStart = function (c1, c2, c3) {
|
|
|
102
94
|
}
|
|
103
95
|
return false;
|
|
104
96
|
};
|
|
105
|
-
|
|
97
|
+
const isNumberStart = (c1, c2, c3) => {
|
|
106
98
|
if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
|
|
107
99
|
if (isDigit(c2)) {
|
|
108
100
|
return true;
|
|
@@ -114,108 +106,108 @@ var isNumberStart = function (c1, c2, c3) {
|
|
|
114
106
|
}
|
|
115
107
|
return isDigit(c1);
|
|
116
108
|
};
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
109
|
+
const stringToNumber = (codePoints) => {
|
|
110
|
+
let c = 0;
|
|
111
|
+
let sign = 1;
|
|
120
112
|
if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
|
|
121
113
|
if (codePoints[c] === HYPHEN_MINUS) {
|
|
122
114
|
sign = -1;
|
|
123
115
|
}
|
|
124
116
|
c++;
|
|
125
117
|
}
|
|
126
|
-
|
|
118
|
+
const integers = [];
|
|
127
119
|
while (isDigit(codePoints[c])) {
|
|
128
120
|
integers.push(codePoints[c++]);
|
|
129
121
|
}
|
|
130
|
-
|
|
122
|
+
const int = integers.length ? parseInt((0, css_line_break_1.fromCodePoint)(...integers), 10) : 0;
|
|
131
123
|
if (codePoints[c] === FULL_STOP) {
|
|
132
124
|
c++;
|
|
133
125
|
}
|
|
134
|
-
|
|
126
|
+
const fraction = [];
|
|
135
127
|
while (isDigit(codePoints[c])) {
|
|
136
128
|
fraction.push(codePoints[c++]);
|
|
137
129
|
}
|
|
138
|
-
|
|
139
|
-
|
|
130
|
+
const fracd = fraction.length;
|
|
131
|
+
const frac = fracd ? parseInt((0, css_line_break_1.fromCodePoint)(...fraction), 10) : 0;
|
|
140
132
|
if (codePoints[c] === E || codePoints[c] === e) {
|
|
141
133
|
c++;
|
|
142
134
|
}
|
|
143
|
-
|
|
135
|
+
let expsign = 1;
|
|
144
136
|
if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
|
|
145
137
|
if (codePoints[c] === HYPHEN_MINUS) {
|
|
146
138
|
expsign = -1;
|
|
147
139
|
}
|
|
148
140
|
c++;
|
|
149
141
|
}
|
|
150
|
-
|
|
142
|
+
const exponent = [];
|
|
151
143
|
while (isDigit(codePoints[c])) {
|
|
152
144
|
exponent.push(codePoints[c++]);
|
|
153
145
|
}
|
|
154
|
-
|
|
146
|
+
const exp = exponent.length ? parseInt((0, css_line_break_1.fromCodePoint)(...exponent), 10) : 0;
|
|
155
147
|
return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
|
|
156
148
|
};
|
|
157
|
-
|
|
149
|
+
const LEFT_PARENTHESIS_TOKEN = {
|
|
158
150
|
type: 2 /* TokenType.LEFT_PARENTHESIS_TOKEN */
|
|
159
151
|
};
|
|
160
|
-
|
|
152
|
+
const RIGHT_PARENTHESIS_TOKEN = {
|
|
161
153
|
type: 3 /* TokenType.RIGHT_PARENTHESIS_TOKEN */
|
|
162
154
|
};
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
155
|
+
const COMMA_TOKEN = { type: 4 /* TokenType.COMMA_TOKEN */ };
|
|
156
|
+
const SUFFIX_MATCH_TOKEN = { type: 13 /* TokenType.SUFFIX_MATCH_TOKEN */ };
|
|
157
|
+
const PREFIX_MATCH_TOKEN = { type: 8 /* TokenType.PREFIX_MATCH_TOKEN */ };
|
|
158
|
+
const COLUMN_TOKEN = { type: 21 /* TokenType.COLUMN_TOKEN */ };
|
|
159
|
+
const DASH_MATCH_TOKEN = { type: 9 /* TokenType.DASH_MATCH_TOKEN */ };
|
|
160
|
+
const INCLUDE_MATCH_TOKEN = { type: 10 /* TokenType.INCLUDE_MATCH_TOKEN */ };
|
|
161
|
+
const LEFT_CURLY_BRACKET_TOKEN = {
|
|
170
162
|
type: 11 /* TokenType.LEFT_CURLY_BRACKET_TOKEN */
|
|
171
163
|
};
|
|
172
|
-
|
|
164
|
+
const RIGHT_CURLY_BRACKET_TOKEN = {
|
|
173
165
|
type: 12 /* TokenType.RIGHT_CURLY_BRACKET_TOKEN */
|
|
174
166
|
};
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
167
|
+
const SUBSTRING_MATCH_TOKEN = { type: 14 /* TokenType.SUBSTRING_MATCH_TOKEN */ };
|
|
168
|
+
const BAD_URL_TOKEN = { type: 23 /* TokenType.BAD_URL_TOKEN */ };
|
|
169
|
+
const BAD_STRING_TOKEN = { type: 1 /* TokenType.BAD_STRING_TOKEN */ };
|
|
170
|
+
const CDO_TOKEN = { type: 25 /* TokenType.CDO_TOKEN */ };
|
|
171
|
+
const CDC_TOKEN = { type: 24 /* TokenType.CDC_TOKEN */ };
|
|
172
|
+
const COLON_TOKEN = { type: 26 /* TokenType.COLON_TOKEN */ };
|
|
173
|
+
const SEMICOLON_TOKEN = { type: 27 /* TokenType.SEMICOLON_TOKEN */ };
|
|
174
|
+
const LEFT_SQUARE_BRACKET_TOKEN = {
|
|
183
175
|
type: 28 /* TokenType.LEFT_SQUARE_BRACKET_TOKEN */
|
|
184
176
|
};
|
|
185
|
-
|
|
177
|
+
const RIGHT_SQUARE_BRACKET_TOKEN = {
|
|
186
178
|
type: 29 /* TokenType.RIGHT_SQUARE_BRACKET_TOKEN */
|
|
187
179
|
};
|
|
188
|
-
|
|
180
|
+
const WHITESPACE_TOKEN = { type: 31 /* TokenType.WHITESPACE_TOKEN */ };
|
|
189
181
|
exports.EOF_TOKEN = { type: 32 /* TokenType.EOF_TOKEN */ };
|
|
190
|
-
|
|
191
|
-
|
|
182
|
+
class Tokenizer {
|
|
183
|
+
constructor() {
|
|
192
184
|
this._value = [];
|
|
193
185
|
}
|
|
194
|
-
|
|
186
|
+
write(chunk) {
|
|
195
187
|
this._value = this._value.concat((0, css_line_break_1.toCodePoints)(chunk));
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
188
|
+
}
|
|
189
|
+
read() {
|
|
190
|
+
const tokens = [];
|
|
191
|
+
let token = this.consumeToken();
|
|
200
192
|
while (token !== exports.EOF_TOKEN) {
|
|
201
193
|
tokens.push(token);
|
|
202
194
|
token = this.consumeToken();
|
|
203
195
|
}
|
|
204
196
|
return tokens;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
|
|
197
|
+
}
|
|
198
|
+
consumeToken() {
|
|
199
|
+
const codePoint = this.consumeCodePoint();
|
|
208
200
|
switch (codePoint) {
|
|
209
201
|
case QUOTATION_MARK:
|
|
210
202
|
return this.consumeStringToken(QUOTATION_MARK);
|
|
211
203
|
case NUMBER_SIGN:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
204
|
+
const c1 = this.peekCodePoint(0);
|
|
205
|
+
const c2 = this.peekCodePoint(1);
|
|
206
|
+
const c3 = this.peekCodePoint(2);
|
|
215
207
|
if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
return { type: 5 /* TokenType.HASH_TOKEN */, value
|
|
208
|
+
const flags = isIdentifierStart(c1, c2, c3) ? exports.FLAG_ID : exports.FLAG_UNRESTRICTED;
|
|
209
|
+
const value = this.consumeName();
|
|
210
|
+
return { type: 5 /* TokenType.HASH_TOKEN */, value, flags };
|
|
219
211
|
}
|
|
220
212
|
break;
|
|
221
213
|
case DOLLAR_SIGN:
|
|
@@ -245,9 +237,9 @@ var Tokenizer = /** @class */ (function () {
|
|
|
245
237
|
case COMMA:
|
|
246
238
|
return COMMA_TOKEN;
|
|
247
239
|
case HYPHEN_MINUS:
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
240
|
+
const e1 = codePoint;
|
|
241
|
+
const e2 = this.peekCodePoint(0);
|
|
242
|
+
const e3 = this.peekCodePoint(1);
|
|
251
243
|
if (isNumberStart(e1, e2, e3)) {
|
|
252
244
|
this.reconsumeCodePoint(codePoint);
|
|
253
245
|
return this.consumeNumericToken();
|
|
@@ -272,7 +264,7 @@ var Tokenizer = /** @class */ (function () {
|
|
|
272
264
|
if (this.peekCodePoint(0) === ASTERISK) {
|
|
273
265
|
this.consumeCodePoint();
|
|
274
266
|
while (true) {
|
|
275
|
-
|
|
267
|
+
let c = this.consumeCodePoint();
|
|
276
268
|
if (c === ASTERISK) {
|
|
277
269
|
c = this.consumeCodePoint();
|
|
278
270
|
if (c === SOLIDUS) {
|
|
@@ -299,12 +291,12 @@ var Tokenizer = /** @class */ (function () {
|
|
|
299
291
|
}
|
|
300
292
|
break;
|
|
301
293
|
case COMMERCIAL_AT:
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
294
|
+
const a1 = this.peekCodePoint(0);
|
|
295
|
+
const a2 = this.peekCodePoint(1);
|
|
296
|
+
const a3 = this.peekCodePoint(2);
|
|
305
297
|
if (isIdentifierStart(a1, a2, a3)) {
|
|
306
|
-
|
|
307
|
-
return { type: 7 /* TokenType.AT_KEYWORD_TOKEN */, value
|
|
298
|
+
const value = this.consumeName();
|
|
299
|
+
return { type: 7 /* TokenType.AT_KEYWORD_TOKEN */, value };
|
|
308
300
|
}
|
|
309
301
|
break;
|
|
310
302
|
case LEFT_SQUARE_BRACKET:
|
|
@@ -329,8 +321,8 @@ var Tokenizer = /** @class */ (function () {
|
|
|
329
321
|
return RIGHT_CURLY_BRACKET_TOKEN;
|
|
330
322
|
case u:
|
|
331
323
|
case U:
|
|
332
|
-
|
|
333
|
-
|
|
324
|
+
const u1 = this.peekCodePoint(0);
|
|
325
|
+
const u2 = this.peekCodePoint(1);
|
|
334
326
|
if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
|
|
335
327
|
this.consumeCodePoint();
|
|
336
328
|
this.consumeUnicodeRangeToken();
|
|
@@ -369,75 +361,75 @@ var Tokenizer = /** @class */ (function () {
|
|
|
369
361
|
return this.consumeIdentLikeToken();
|
|
370
362
|
}
|
|
371
363
|
return { type: 6 /* TokenType.DELIM_TOKEN */, value: (0, css_line_break_1.fromCodePoint)(codePoint) };
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
|
|
364
|
+
}
|
|
365
|
+
consumeCodePoint() {
|
|
366
|
+
const value = this._value.shift();
|
|
375
367
|
return typeof value === 'undefined' ? -1 : value;
|
|
376
|
-
}
|
|
377
|
-
|
|
368
|
+
}
|
|
369
|
+
reconsumeCodePoint(codePoint) {
|
|
378
370
|
this._value.unshift(codePoint);
|
|
379
|
-
}
|
|
380
|
-
|
|
371
|
+
}
|
|
372
|
+
peekCodePoint(delta) {
|
|
381
373
|
if (delta >= this._value.length) {
|
|
382
374
|
return -1;
|
|
383
375
|
}
|
|
384
376
|
return this._value[delta];
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
377
|
+
}
|
|
378
|
+
consumeUnicodeRangeToken() {
|
|
379
|
+
const digits = [];
|
|
380
|
+
let codePoint = this.consumeCodePoint();
|
|
389
381
|
while (isHex(codePoint) && digits.length < 6) {
|
|
390
382
|
digits.push(codePoint);
|
|
391
383
|
codePoint = this.consumeCodePoint();
|
|
392
384
|
}
|
|
393
|
-
|
|
385
|
+
let questionMarks = false;
|
|
394
386
|
while (codePoint === QUESTION_MARK && digits.length < 6) {
|
|
395
387
|
digits.push(codePoint);
|
|
396
388
|
codePoint = this.consumeCodePoint();
|
|
397
389
|
questionMarks = true;
|
|
398
390
|
}
|
|
399
391
|
if (questionMarks) {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
return { type: 30 /* TokenType.UNICODE_RANGE_TOKEN */, start
|
|
392
|
+
const start = parseInt((0, css_line_break_1.fromCodePoint)(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))), 16);
|
|
393
|
+
const end = parseInt((0, css_line_break_1.fromCodePoint)(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);
|
|
394
|
+
return { type: 30 /* TokenType.UNICODE_RANGE_TOKEN */, start, end };
|
|
403
395
|
}
|
|
404
|
-
|
|
396
|
+
const start = parseInt((0, css_line_break_1.fromCodePoint)(...digits), 16);
|
|
405
397
|
if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
|
|
406
398
|
this.consumeCodePoint();
|
|
407
399
|
codePoint = this.consumeCodePoint();
|
|
408
|
-
|
|
400
|
+
const endDigits = [];
|
|
409
401
|
while (isHex(codePoint) && endDigits.length < 6) {
|
|
410
402
|
endDigits.push(codePoint);
|
|
411
403
|
codePoint = this.consumeCodePoint();
|
|
412
404
|
}
|
|
413
|
-
|
|
414
|
-
return { type: 30 /* TokenType.UNICODE_RANGE_TOKEN */, start
|
|
405
|
+
const end = parseInt((0, css_line_break_1.fromCodePoint)(...endDigits), 16);
|
|
406
|
+
return { type: 30 /* TokenType.UNICODE_RANGE_TOKEN */, start, end };
|
|
415
407
|
}
|
|
416
408
|
else {
|
|
417
|
-
return { type: 30 /* TokenType.UNICODE_RANGE_TOKEN */, start
|
|
409
|
+
return { type: 30 /* TokenType.UNICODE_RANGE_TOKEN */, start, end: start };
|
|
418
410
|
}
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
|
|
411
|
+
}
|
|
412
|
+
consumeIdentLikeToken() {
|
|
413
|
+
const value = this.consumeName();
|
|
422
414
|
if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
|
|
423
415
|
this.consumeCodePoint();
|
|
424
416
|
return this.consumeUrlToken();
|
|
425
417
|
}
|
|
426
418
|
else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
|
|
427
419
|
this.consumeCodePoint();
|
|
428
|
-
return { type: 19 /* TokenType.FUNCTION_TOKEN */, value
|
|
420
|
+
return { type: 19 /* TokenType.FUNCTION_TOKEN */, value };
|
|
429
421
|
}
|
|
430
|
-
return { type: 20 /* TokenType.IDENT_TOKEN */, value
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
|
|
422
|
+
return { type: 20 /* TokenType.IDENT_TOKEN */, value };
|
|
423
|
+
}
|
|
424
|
+
consumeUrlToken() {
|
|
425
|
+
const value = [];
|
|
434
426
|
this.consumeWhiteSpace();
|
|
435
427
|
if (this.peekCodePoint(0) === EOF) {
|
|
436
428
|
return { type: 22 /* TokenType.URL_TOKEN */, value: '' };
|
|
437
429
|
}
|
|
438
|
-
|
|
430
|
+
const next = this.peekCodePoint(0);
|
|
439
431
|
if (next === APOSTROPHE || next === QUOTATION_MARK) {
|
|
440
|
-
|
|
432
|
+
const stringToken = this.consumeStringToken(this.consumeCodePoint());
|
|
441
433
|
if (stringToken.type === 0 /* TokenType.STRING_TOKEN */) {
|
|
442
434
|
this.consumeWhiteSpace();
|
|
443
435
|
if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
|
|
@@ -449,15 +441,15 @@ var Tokenizer = /** @class */ (function () {
|
|
|
449
441
|
return BAD_URL_TOKEN;
|
|
450
442
|
}
|
|
451
443
|
while (true) {
|
|
452
|
-
|
|
444
|
+
const codePoint = this.consumeCodePoint();
|
|
453
445
|
if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
|
|
454
|
-
return { type: 22 /* TokenType.URL_TOKEN */, value: css_line_break_1.fromCodePoint
|
|
446
|
+
return { type: 22 /* TokenType.URL_TOKEN */, value: (0, css_line_break_1.fromCodePoint)(...value) };
|
|
455
447
|
}
|
|
456
448
|
else if (isWhiteSpace(codePoint)) {
|
|
457
449
|
this.consumeWhiteSpace();
|
|
458
450
|
if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
|
|
459
451
|
this.consumeCodePoint();
|
|
460
|
-
return { type: 22 /* TokenType.URL_TOKEN */, value: css_line_break_1.fromCodePoint
|
|
452
|
+
return { type: 22 /* TokenType.URL_TOKEN */, value: (0, css_line_break_1.fromCodePoint)(...value) };
|
|
461
453
|
}
|
|
462
454
|
this.consumeBadUrlRemnants();
|
|
463
455
|
return BAD_URL_TOKEN;
|
|
@@ -482,15 +474,15 @@ var Tokenizer = /** @class */ (function () {
|
|
|
482
474
|
value.push(codePoint);
|
|
483
475
|
}
|
|
484
476
|
}
|
|
485
|
-
}
|
|
486
|
-
|
|
477
|
+
}
|
|
478
|
+
consumeWhiteSpace() {
|
|
487
479
|
while (isWhiteSpace(this.peekCodePoint(0))) {
|
|
488
480
|
this.consumeCodePoint();
|
|
489
481
|
}
|
|
490
|
-
}
|
|
491
|
-
|
|
482
|
+
}
|
|
483
|
+
consumeBadUrlRemnants() {
|
|
492
484
|
while (true) {
|
|
493
|
-
|
|
485
|
+
const codePoint = this.consumeCodePoint();
|
|
494
486
|
if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
|
|
495
487
|
return;
|
|
496
488
|
}
|
|
@@ -498,33 +490,33 @@ var Tokenizer = /** @class */ (function () {
|
|
|
498
490
|
this.consumeEscapedCodePoint();
|
|
499
491
|
}
|
|
500
492
|
}
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
493
|
+
}
|
|
494
|
+
consumeStringSlice(count) {
|
|
495
|
+
const SLICE_STACK_SIZE = 50000;
|
|
496
|
+
let value = '';
|
|
505
497
|
while (count > 0) {
|
|
506
|
-
|
|
507
|
-
value += css_line_break_1.fromCodePoint
|
|
498
|
+
const amount = Math.min(SLICE_STACK_SIZE, count);
|
|
499
|
+
value += (0, css_line_break_1.fromCodePoint)(...this._value.splice(0, amount));
|
|
508
500
|
count -= amount;
|
|
509
501
|
}
|
|
510
502
|
this._value.shift();
|
|
511
503
|
return value;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
504
|
+
}
|
|
505
|
+
consumeStringToken(endingCodePoint) {
|
|
506
|
+
let value = '';
|
|
507
|
+
let i = 0;
|
|
516
508
|
do {
|
|
517
|
-
|
|
509
|
+
const codePoint = this._value[i];
|
|
518
510
|
if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {
|
|
519
511
|
value += this.consumeStringSlice(i);
|
|
520
|
-
return { type: 0 /* TokenType.STRING_TOKEN */, value
|
|
512
|
+
return { type: 0 /* TokenType.STRING_TOKEN */, value };
|
|
521
513
|
}
|
|
522
514
|
if (codePoint === LINE_FEED) {
|
|
523
515
|
this._value.splice(0, i);
|
|
524
516
|
return BAD_STRING_TOKEN;
|
|
525
517
|
}
|
|
526
518
|
if (codePoint === REVERSE_SOLIDUS) {
|
|
527
|
-
|
|
519
|
+
const next = this._value[i + 1];
|
|
528
520
|
if (next !== EOF && next !== undefined) {
|
|
529
521
|
if (next === LINE_FEED) {
|
|
530
522
|
value += this.consumeStringSlice(i);
|
|
@@ -540,11 +532,11 @@ var Tokenizer = /** @class */ (function () {
|
|
|
540
532
|
}
|
|
541
533
|
i++;
|
|
542
534
|
} while (true);
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
535
|
+
}
|
|
536
|
+
consumeNumber() {
|
|
537
|
+
const repr = [];
|
|
538
|
+
let type = exports.FLAG_INTEGER;
|
|
539
|
+
let c1 = this.peekCodePoint(0);
|
|
548
540
|
if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
|
|
549
541
|
repr.push(this.consumeCodePoint());
|
|
550
542
|
}
|
|
@@ -552,7 +544,7 @@ var Tokenizer = /** @class */ (function () {
|
|
|
552
544
|
repr.push(this.consumeCodePoint());
|
|
553
545
|
}
|
|
554
546
|
c1 = this.peekCodePoint(0);
|
|
555
|
-
|
|
547
|
+
let c2 = this.peekCodePoint(1);
|
|
556
548
|
if (c1 === FULL_STOP && isDigit(c2)) {
|
|
557
549
|
repr.push(this.consumeCodePoint(), this.consumeCodePoint());
|
|
558
550
|
type = exports.FLAG_NUMBER;
|
|
@@ -562,7 +554,7 @@ var Tokenizer = /** @class */ (function () {
|
|
|
562
554
|
}
|
|
563
555
|
c1 = this.peekCodePoint(0);
|
|
564
556
|
c2 = this.peekCodePoint(1);
|
|
565
|
-
|
|
557
|
+
const c3 = this.peekCodePoint(2);
|
|
566
558
|
if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {
|
|
567
559
|
repr.push(this.consumeCodePoint(), this.consumeCodePoint());
|
|
568
560
|
type = exports.FLAG_NUMBER;
|
|
@@ -571,33 +563,33 @@ var Tokenizer = /** @class */ (function () {
|
|
|
571
563
|
}
|
|
572
564
|
}
|
|
573
565
|
return [stringToNumber(repr), type];
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
566
|
+
}
|
|
567
|
+
consumeNumericToken() {
|
|
568
|
+
const [number, flags] = this.consumeNumber();
|
|
569
|
+
const c1 = this.peekCodePoint(0);
|
|
570
|
+
const c2 = this.peekCodePoint(1);
|
|
571
|
+
const c3 = this.peekCodePoint(2);
|
|
580
572
|
if (isIdentifierStart(c1, c2, c3)) {
|
|
581
|
-
|
|
582
|
-
return { type: 15 /* TokenType.DIMENSION_TOKEN */, number
|
|
573
|
+
const unit = this.consumeName();
|
|
574
|
+
return { type: 15 /* TokenType.DIMENSION_TOKEN */, number, flags, unit };
|
|
583
575
|
}
|
|
584
576
|
if (c1 === PERCENTAGE_SIGN) {
|
|
585
577
|
this.consumeCodePoint();
|
|
586
|
-
return { type: 16 /* TokenType.PERCENTAGE_TOKEN */, number
|
|
578
|
+
return { type: 16 /* TokenType.PERCENTAGE_TOKEN */, number, flags };
|
|
587
579
|
}
|
|
588
|
-
return { type: 17 /* TokenType.NUMBER_TOKEN */, number
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
|
|
580
|
+
return { type: 17 /* TokenType.NUMBER_TOKEN */, number, flags };
|
|
581
|
+
}
|
|
582
|
+
consumeEscapedCodePoint() {
|
|
583
|
+
const codePoint = this.consumeCodePoint();
|
|
592
584
|
if (isHex(codePoint)) {
|
|
593
|
-
|
|
585
|
+
let hex = (0, css_line_break_1.fromCodePoint)(codePoint);
|
|
594
586
|
while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
|
|
595
587
|
hex += (0, css_line_break_1.fromCodePoint)(this.consumeCodePoint());
|
|
596
588
|
}
|
|
597
589
|
if (isWhiteSpace(this.peekCodePoint(0))) {
|
|
598
590
|
this.consumeCodePoint();
|
|
599
591
|
}
|
|
600
|
-
|
|
592
|
+
const hexCodePoint = parseInt(hex, 16);
|
|
601
593
|
if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {
|
|
602
594
|
return REPLACEMENT_CHARACTER;
|
|
603
595
|
}
|
|
@@ -607,11 +599,11 @@ var Tokenizer = /** @class */ (function () {
|
|
|
607
599
|
return REPLACEMENT_CHARACTER;
|
|
608
600
|
}
|
|
609
601
|
return codePoint;
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
|
|
602
|
+
}
|
|
603
|
+
consumeName() {
|
|
604
|
+
let result = '';
|
|
613
605
|
while (true) {
|
|
614
|
-
|
|
606
|
+
const codePoint = this.consumeCodePoint();
|
|
615
607
|
if (isNameCodePoint(codePoint)) {
|
|
616
608
|
result += (0, css_line_break_1.fromCodePoint)(codePoint);
|
|
617
609
|
}
|
|
@@ -623,8 +615,7 @@ var Tokenizer = /** @class */ (function () {
|
|
|
623
615
|
return result;
|
|
624
616
|
}
|
|
625
617
|
}
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
}());
|
|
618
|
+
}
|
|
619
|
+
}
|
|
629
620
|
exports.Tokenizer = Tokenizer;
|
|
630
621
|
//# sourceMappingURL=tokenizer.js.map
|