summaryrefslogtreecommitdiff
path: root/node_modules/tailwindcss/src/value-parser/unit.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tailwindcss/src/value-parser/unit.js')
-rw-r--r--node_modules/tailwindcss/src/value-parser/unit.js118
1 files changed, 118 insertions, 0 deletions
diff --git a/node_modules/tailwindcss/src/value-parser/unit.js b/node_modules/tailwindcss/src/value-parser/unit.js
new file mode 100644
index 0000000..42d6cd3
--- /dev/null
+++ b/node_modules/tailwindcss/src/value-parser/unit.js
@@ -0,0 +1,118 @@
+var minus = '-'.charCodeAt(0)
+var plus = '+'.charCodeAt(0)
+var dot = '.'.charCodeAt(0)
+var exp = 'e'.charCodeAt(0)
+var EXP = 'E'.charCodeAt(0)
+
+// Check if three code points would start a number
+// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number
+function likeNumber(value) {
+ var code = value.charCodeAt(0)
+ var nextCode
+
+ if (code === plus || code === minus) {
+ nextCode = value.charCodeAt(1)
+
+ if (nextCode >= 48 && nextCode <= 57) {
+ return true
+ }
+
+ var nextNextCode = value.charCodeAt(2)
+
+ if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {
+ return true
+ }
+
+ return false
+ }
+
+ if (code === dot) {
+ nextCode = value.charCodeAt(1)
+
+ if (nextCode >= 48 && nextCode <= 57) {
+ return true
+ }
+
+ return false
+ }
+
+ if (code >= 48 && code <= 57) {
+ return true
+ }
+
+ return false
+}
+
+// Consume a number
+// https://www.w3.org/TR/css-syntax-3/#consume-number
+module.exports = function (value) {
+ var pos = 0
+ var length = value.length
+ var code
+ var nextCode
+ var nextNextCode
+
+ if (length === 0 || !likeNumber(value)) {
+ return false
+ }
+
+ code = value.charCodeAt(pos)
+
+ if (code === plus || code === minus) {
+ pos++
+ }
+
+ while (pos < length) {
+ code = value.charCodeAt(pos)
+
+ if (code < 48 || code > 57) {
+ break
+ }
+
+ pos += 1
+ }
+
+ code = value.charCodeAt(pos)
+ nextCode = value.charCodeAt(pos + 1)
+
+ if (code === dot && nextCode >= 48 && nextCode <= 57) {
+ pos += 2
+
+ while (pos < length) {
+ code = value.charCodeAt(pos)
+
+ if (code < 48 || code > 57) {
+ break
+ }
+
+ pos += 1
+ }
+ }
+
+ code = value.charCodeAt(pos)
+ nextCode = value.charCodeAt(pos + 1)
+ nextNextCode = value.charCodeAt(pos + 2)
+
+ if (
+ (code === exp || code === EXP) &&
+ ((nextCode >= 48 && nextCode <= 57) ||
+ ((nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57))
+ ) {
+ pos += nextCode === plus || nextCode === minus ? 3 : 2
+
+ while (pos < length) {
+ code = value.charCodeAt(pos)
+
+ if (code < 48 || code > 57) {
+ break
+ }
+
+ pos += 1
+ }
+ }
+
+ return {
+ number: value.slice(0, pos),
+ unit: value.slice(pos),
+ }
+}