/
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/normalizeScreens.js
(4346B)
/** * @typedef {object} ScreenValue * @property {number|undefined} min * @property {number|undefined} max * @property {string|undefined} raw */ /** * @typedef {object} Screen * @property {string} name * @property {boolean} not * @property {ScreenValue[]} values */ /** * A function that normalizes the various forms that the screens object can be * provided in. * * Input(s): * - ['100px', '200px'] // Raw strings * - { sm: '100px', md: '200px' } // Object with string values * - { sm: { min: '100px' }, md: { max: '100px' } } // Object with object values * - { sm: [{ min: '100px' }, { max: '200px' }] } // Object with object array (multiple values) * * Output(s): * - [{ name: 'sm', values: [{ min: '100px', max: '200px' }] }] // List of objects, that contains multiple values * * @returns {Screen[]} */ export function normalizeScreens(screens, root = true) { if (Array.isArray(screens)) { return screens.map((screen) => { if (root && Array.isArray(screen)) { throw new Error('The tuple syntax is not supported for `screens`.') } if (typeof screen === 'string') { return { name: screen.toString(), not: false, values: [{ min: screen, max: undefined }] } } let [name, options] = screen name = name.toString() if (typeof options === 'string') { return { name, not: false, values: [{ min: options, max: undefined }] } } if (Array.isArray(options)) { return { name, not: false, values: options.map((option) => resolveValue(option)) } } return { name, not: false, values: [resolveValue(options)] } }) } return normalizeScreens(Object.entries(screens ?? {}), false) } /** * @param {Screen} screen * @returns {{result: false, reason: string} | {result: true, reason: null}} */ export function isScreenSortable(screen) { if (screen.values.length !== 1) { return { result: false, reason: 'multiple-values' } } else if (screen.values[0].raw !== undefined) { return { result: false, reason: 'raw-values' } } else if (screen.values[0].min !== undefined && screen.values[0].max !== undefined) { return { result: false, reason: 'min-and-max' } } return { result: true, reason: null } } /** * @param {'min' | 'max'} type * @param {Screen | 'string'} a * @param {Screen | 'string'} z * @returns {number} */ export function compareScreens(type, a, z) { let aScreen = toScreen(a, type) let zScreen = toScreen(z, type) let aSorting = isScreenSortable(aScreen) let bSorting = isScreenSortable(zScreen) // These cases should never happen and indicate a bug in Tailwind CSS itself if (aSorting.reason === 'multiple-values' || bSorting.reason === 'multiple-values') { throw new Error( 'Attempted to sort a screen with multiple values. This should never happen. Please open a bug report.' ) } else if (aSorting.reason === 'raw-values' || bSorting.reason === 'raw-values') { throw new Error( 'Attempted to sort a screen with raw values. This should never happen. Please open a bug report.' ) } else if (aSorting.reason === 'min-and-max' || bSorting.reason === 'min-and-max') { throw new Error( 'Attempted to sort a screen with both min and max values. This should never happen. Please open a bug report.' ) } // Let the sorting begin let { min: aMin, max: aMax } = aScreen.values[0] let { min: zMin, max: zMax } = zScreen.values[0] // Negating screens flip their behavior. Basically `not min-width` is `max-width` if (a.not) [aMin, aMax] = [aMax, aMin] if (z.not) [zMin, zMax] = [zMax, zMin] aMin = aMin === undefined ? aMin : parseFloat(aMin) aMax = aMax === undefined ? aMax : parseFloat(aMax) zMin = zMin === undefined ? zMin : parseFloat(zMin) zMax = zMax === undefined ? zMax : parseFloat(zMax) let [aValue, zValue] = type === 'min' ? [aMin, zMin] : [zMax, aMax] return aValue - zValue } /** * * @param {PartialScreen> | string} value * @param {'min' | 'max'} type * @returns {Screen} */ export function toScreen(value, type) { if (typeof value === 'object') { return value } return { name: 'arbitrary-screen', values: [{ [type]: value }], } } function resolveValue({ 'min-width': _minWidth, min = _minWidth, max, raw } = {}) { return { min, max, raw } }
Save
cmd:
run