/
opt
/
canhelp
/
node_modules
/
tailwindcss
/
src
/
util
/
/opt/canhelp/node_modules/tailwindcss/src/util
mkdir
upload
Name
Size
Mode
Actions
applyImportantSelector.js
774
0644
edit
dl
rm
bigSign.js
98
0644
edit
dl
rm
buildMediaQuery.js
560
0644
edit
dl
rm
cloneDeep.js
283
0644
edit
dl
rm
cloneNodes.js
1333
0644
edit
dl
rm
color.js
2718
0644
edit
dl
rm
colorNames.js
4301
0644
edit
dl
rm
configurePlugins.js
578
0644
edit
dl
rm
createPlugin.js
703
0644
edit
dl
rm
createUtilityPlugin.js
1222
0644
edit
dl
rm
dataTypes.js
7332
0644
edit
dl
rm
defaults.js
361
0644
edit
dl
rm
escapeClassName.js
255
0644
edit
dl
rm
escapeCommas.js
96
0644
edit
dl
rm
flattenColorPalette.js
410
0644
edit
dl
rm
formatVariantSelector.js
9862
0644
edit
dl
rm
getAllConfigs.js
1037
0644
edit
dl
rm
hashConfig.js
126
0644
edit
dl
rm
isKeyframeRule.js
142
0644
edit
dl
rm
isPlainObject.js
262
0644
edit
dl
rm
isSyntacticallyValidPropertyValue.js
1612
0644
edit
dl
rm
log.js
789
0644
edit
dl
rm
math-operators.ts
5290
0644
edit
dl
rm
nameClass.js
634
0644
edit
dl
rm
negateValue.js
771
0644
edit
dl
rm
normalizeConfig.js
9024
0644
edit
dl
rm
normalizeScreens.js
4346
0644
edit
dl
rm
parseAnimationValue.js
2351
0644
edit
dl
rm
parseBoxShadowValue.js
1855
0644
edit
dl
rm
parseDependency.js
867
0644
edit
dl
rm
parseGlob.js
510
0644
edit
dl
rm
parseObjectStyles.js
429
0644
edit
dl
rm
pluginUtils.js
8183
0644
edit
dl
rm
prefixSelector.js
992
0644
edit
dl
rm
pseudoElements.js
5717
0644
edit
dl
rm
removeAlphaVariables.js
785
0644
edit
dl
rm
resolveConfig.js
6967
0644
edit
dl
rm
resolveConfigPath.js
1591
0644
edit
dl
rm
responsive.js
243
0644
edit
dl
rm
splitAtTopLevelOnly.js
1527
0644
edit
dl
rm
tap.js
72
0644
edit
dl
rm
toColorValue.js
137
0644
edit
dl
rm
toPath.js
739
0644
edit
dl
rm
transformThemeValue.js
1637
0644
edit
dl
rm
validateConfig.js
888
0644
edit
dl
rm
validateFormalSyntax.js
1020
0644
edit
dl
rm
withAlphaVariable.js
1215
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/tailwindcss/src/util/math-operators.ts
(5290B)
const LOWER_A = 0x61 const LOWER_Z = 0x7a const UPPER_A = 0x41 const UPPER_Z = 0x5a const LOWER_E = 0x65 const UPPER_E = 0x45 const ZERO = 0x30 const NINE = 0x39 const ADD = 0x2b const SUB = 0x2d const MUL = 0x2a const DIV = 0x2f const OPEN_PAREN = 0x28 const CLOSE_PAREN = 0x29 const COMMA = 0x2c const SPACE = 0x20 const PERCENT = 0x25 const MATH_FUNCTIONS = [ 'calc', 'min', 'max', 'clamp', 'mod', 'rem', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2', 'pow', 'sqrt', 'hypot', 'log', 'exp', 'round', ] export function hasMathFn(input: string) { return input.indexOf('(') !== -1 && MATH_FUNCTIONS.some((fn) => input.includes(`${fn}(`)) } export function addWhitespaceAroundMathOperators(input: string) { // Bail early if there are no math functions in the input if (!MATH_FUNCTIONS.some((fn) => input.includes(fn))) { return input } let result = '' let formattable: boolean[] = [] let valuePos = null let lastValuePos = null for (let i = 0; i < input.length; i++) { let char = input.charCodeAt(i) // Track if we see a number followed by a unit, then we know for sure that // this is not a function call. if (char >= ZERO && char <= NINE) { valuePos = i } // If we saw a number before, and we see normal a-z character, then we // assume this is a value such as `123px` else if ( valuePos !== null && (char === PERCENT || (char >= LOWER_A && char <= LOWER_Z) || (char >= UPPER_A && char <= UPPER_Z)) ) { valuePos = i } // Once we see something else, we reset the value position else { lastValuePos = valuePos valuePos = null } // Determine if we're inside a math function if (char === OPEN_PAREN) { result += input[i] // Scan backwards to determine the function name. This assumes math // functions are named with lowercase alphanumeric characters. let start = i for (let j = i - 1; j >= 0; j--) { let inner = input.charCodeAt(j) if (inner >= ZERO && inner <= NINE) { start = j // 0-9 } else if (inner >= LOWER_A && inner <= LOWER_Z) { start = j // a-z } else { break } } let fn = input.slice(start, i) // This is a known math function so start formatting if (MATH_FUNCTIONS.includes(fn)) { formattable.unshift(true) continue } // We've encountered nested parens inside a math function, record that and // keep formatting until we've closed all parens. else if (formattable[0] && fn === '') { formattable.unshift(true) continue } // This is not a known math function so don't format it formattable.unshift(false) continue } // We've exited the function so format according to the parent function's // type. else if (char === CLOSE_PAREN) { result += input[i] formattable.shift() } // Add spaces after commas in math functions else if (char === COMMA && formattable[0]) { result += `, ` continue } // Skip over consecutive whitespace else if (char === SPACE && formattable[0] && result.charCodeAt(result.length - 1) === SPACE) { continue } // Add whitespace around operators inside math functions else if ((char === ADD || char === MUL || char === DIV || char === SUB) && formattable[0]) { let trimmed = result.trimEnd() let prev = trimmed.charCodeAt(trimmed.length - 1) let prevPrev = trimmed.charCodeAt(trimmed.length - 2) let next = input.charCodeAt(i + 1) // Do not add spaces for scientific notation, e.g.: `-3.4e-2` if ((prev === LOWER_E || prev === UPPER_E) && prevPrev >= ZERO && prevPrev <= NINE) { result += input[i] continue } // If we're preceded by an operator don't add spaces else if (prev === ADD || prev === MUL || prev === DIV || prev === SUB) { result += input[i] continue } // If we're at the beginning of an argument don't add spaces else if (prev === OPEN_PAREN || prev === COMMA) { result += input[i] continue } // Add spaces only after the operator if we already have spaces before it else if (input.charCodeAt(i - 1) === SPACE) { result += `${input[i]} ` } // Add spaces around the operator, if... else if ( // Previous is a digit (prev >= ZERO && prev <= NINE) || // Next is a digit (next >= ZERO && next <= NINE) || // Previous is end of a function call (or parenthesized expression) prev === CLOSE_PAREN || // Next is start of a parenthesized expression next === OPEN_PAREN || // Next is an operator next === ADD || next === MUL || next === DIV || next === SUB || // Previous position was a value (+ unit) (lastValuePos !== null && lastValuePos === i - 1) ) { result += ` ${input[i]} ` } // Everything else else { result += input[i] } } // Handle all other characters else { result += input[i] } } return result }
Save
cmd:
run