Skip to content

Commit 7b16ae1

Browse files
committed
Allow unitless zero values for angle-based transform functions
Closes #190
1 parent b8ea206 commit 7b16ae1

3 files changed

Lines changed: 33 additions & 2 deletions

File tree

.changeset/fair-candles-grab.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"css-to-react-native": patch
3+
---
4+
5+
Allow unitless zero values for angle-based transform functions like `rotate(0)`, `skewX(0)`, and `skewY(0)`.

src/__tests__/transform.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,27 @@ it('transforms skew(angle) to skewX and skewY', () => {
6969
transform: [{ skewY: '0deg' }, { skewX: '5deg' }],
7070
})
7171
})
72+
73+
it('transforms translate(0) to translateX and translateY', () => {
74+
expect(transformCss([['transform', 'translate(0)']])).toEqual({
75+
transform: [{ translateY: 0 }, { translateX: 0 }],
76+
})
77+
})
78+
79+
it('transforms rotate(0) to rotate', () => {
80+
expect(transformCss([['transform', 'rotate(0)']])).toEqual({
81+
transform: [{ rotate: '0deg' }],
82+
})
83+
})
84+
85+
it('transforms skewX(0) to skewX', () => {
86+
expect(transformCss([['transform', 'skewX(0)']])).toEqual({
87+
transform: [{ skewX: '0deg' }],
88+
})
89+
})
90+
91+
it('transforms skewY(0) to skewY', () => {
92+
expect(transformCss([['transform', 'skewY(0)']])).toEqual({
93+
transform: [{ skewY: '0deg' }],
94+
})
95+
})

src/tokenTypes.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const numberRe = /^([+-]?(?:\d*\.)?\d+(?:e[+-]?\d+)?)$/i
3535
// Note lengthRe is sneaky: you can omit units for 0
3636
const lengthRe = /^(0$|(?:[+-]?(?:\d*\.)?\d+(?:e[+-]?\d+)?)(?=px$))/i
3737
const unsupportedUnitRe = /^([+-]?(?:\d*\.)?\d+(?:e[+-]?\d+)?(ch|em|ex|rem|vh|vw|vmin|vmax|cm|mm|in|pc|pt))$/i
38-
const angleRe = /^([+-]?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:deg|rad|grad|turn))$/i
38+
const angleRe = /^(0|[+-]?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:deg|rad|grad|turn))$/i
3939
const percentRe = /^([+-]?(?:\d*\.)?\d+(?:e[+-]?\d+)?%)$/i
4040

4141
const noopToken = predicate => node => (predicate(node) ? '<token>' : null)
@@ -67,7 +67,9 @@ export const AUTO = regExpToken(autoRe)
6767
export const NUMBER = regExpToken(numberRe, Number)
6868
export const LENGTH = regExpToken(lengthRe, Number)
6969
export const UNSUPPORTED_LENGTH_UNIT = regExpToken(unsupportedUnitRe)
70-
export const ANGLE = regExpToken(angleRe, angle => angle.toLowerCase())
70+
export const ANGLE = regExpToken(angleRe, angle =>
71+
angle === '0' ? '0deg' : angle.toLowerCase()
72+
)
7173
export const PERCENT = regExpToken(percentRe)
7274
export const IDENT = regExpToken(identRe)
7375
export const STRING = matchString

0 commit comments

Comments
 (0)