Skip to content

Commit

Permalink
Skip calc() normalisation in nested theme() calls (#11705)
Browse files Browse the repository at this point in the history
* add `calc` normalisation test cases using `theme()`

* ignore formatting in some known functions, such as `theme`

* update changelog
  • Loading branch information
RobinMalfait authored Jul 27, 2023
1 parent ae4d213 commit a72d97c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Make PostCSS plugin async to improve performance ([#11548](https://github.com/tailwindlabs/tailwindcss/pull/11548))
- Allow variant to be an at-rule without a prelude ([#11589](https://github.com/tailwindlabs/tailwindcss/pull/11589))
- Improve normalisation of `calc()`-like functions ([#11686](https://github.com/tailwindlabs/tailwindcss/pull/11686))
- Skip `calc()` normalisation in nested `theme()` calls ([#11705](https://github.com/tailwindlabs/tailwindcss/pull/11705))

### Added

Expand Down
7 changes: 7 additions & 0 deletions src/util/dataTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ export function normalize(value, isRoot = true) {
* @returns {string}
*/
function normalizeMathOperatorSpacing(value) {
let preventFormattingInFunctions = ['theme']

return value.replace(/(calc|min|max|clamp)\(.+\)/g, (match) => {
let result = ''

Expand Down Expand Up @@ -100,6 +102,11 @@ function normalizeMathOperatorSpacing(value) {
result += consumeUntil([')', ','])
}

// Skip formatting inside known functions
else if (preventFormattingInFunctions.some((fn) => peek(fn))) {
result += consumeUntil([')'])
}

// Handle operators
else if (
['+', '-', '*', '/'].includes(char) &&
Expand Down
6 changes: 6 additions & 0 deletions tests/normalize-data-types.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ let table = [
'calc(var(--10-10px,calc(-20px-(-30px--40px)-50px)',
'calc(var(--10-10px,calc(-20px - (-30px - -40px) - 50px)',
],
['calc(theme(spacing.1-bar))', 'calc(theme(spacing.1-bar))'],
['theme(spacing.1-bar)', 'theme(spacing.1-bar)'],
['calc(theme(spacing.1-bar))', 'calc(theme(spacing.1-bar))'],
['calc(1rem-theme(spacing.1-bar))', 'calc(1rem - theme(spacing.1-bar))'],
['calc(theme(spacing.foo-2))', 'calc(theme(spacing.foo-2))'],
['calc(theme(spacing.foo-bar))', 'calc(theme(spacing.foo-bar))'],

// Misc
['color(0_0_0/1.0)', 'color(0 0 0/1.0)'],
Expand Down

0 comments on commit a72d97c

Please sign in to comment.