source: frontend/node_modules/tailwindcss/src/value-parser/unit.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.2 KB
Line 
1var minus = '-'.charCodeAt(0)
2var plus = '+'.charCodeAt(0)
3var dot = '.'.charCodeAt(0)
4var exp = 'e'.charCodeAt(0)
5var EXP = 'E'.charCodeAt(0)
6
7// Check if three code points would start a number
8// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number
9function likeNumber(value) {
10 var code = value.charCodeAt(0)
11 var nextCode
12
13 if (code === plus || code === minus) {
14 nextCode = value.charCodeAt(1)
15
16 if (nextCode >= 48 && nextCode <= 57) {
17 return true
18 }
19
20 var nextNextCode = value.charCodeAt(2)
21
22 if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {
23 return true
24 }
25
26 return false
27 }
28
29 if (code === dot) {
30 nextCode = value.charCodeAt(1)
31
32 if (nextCode >= 48 && nextCode <= 57) {
33 return true
34 }
35
36 return false
37 }
38
39 if (code >= 48 && code <= 57) {
40 return true
41 }
42
43 return false
44}
45
46// Consume a number
47// https://www.w3.org/TR/css-syntax-3/#consume-number
48module.exports = function (value) {
49 var pos = 0
50 var length = value.length
51 var code
52 var nextCode
53 var nextNextCode
54
55 if (length === 0 || !likeNumber(value)) {
56 return false
57 }
58
59 code = value.charCodeAt(pos)
60
61 if (code === plus || code === minus) {
62 pos++
63 }
64
65 while (pos < length) {
66 code = value.charCodeAt(pos)
67
68 if (code < 48 || code > 57) {
69 break
70 }
71
72 pos += 1
73 }
74
75 code = value.charCodeAt(pos)
76 nextCode = value.charCodeAt(pos + 1)
77
78 if (code === dot && nextCode >= 48 && nextCode <= 57) {
79 pos += 2
80
81 while (pos < length) {
82 code = value.charCodeAt(pos)
83
84 if (code < 48 || code > 57) {
85 break
86 }
87
88 pos += 1
89 }
90 }
91
92 code = value.charCodeAt(pos)
93 nextCode = value.charCodeAt(pos + 1)
94 nextNextCode = value.charCodeAt(pos + 2)
95
96 if (
97 (code === exp || code === EXP) &&
98 ((nextCode >= 48 && nextCode <= 57) ||
99 ((nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57))
100 ) {
101 pos += nextCode === plus || nextCode === minus ? 3 : 2
102
103 while (pos < length) {
104 code = value.charCodeAt(pos)
105
106 if (code < 48 || code > 57) {
107 break
108 }
109
110 pos += 1
111 }
112 }
113
114 return {
115 number: value.slice(0, pos),
116 unit: value.slice(pos),
117 }
118}
Note: See TracBrowser for help on using the repository browser.