Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
6b4e992
fix(compiler): map `color: inherit` to the inherited-color variable
YevheniiKotyrlo Oct 9, 2026
5e1ef6f
refactor: name the inherited-colour lookup once
YevheniiKotyrlo Oct 9, 2026
bc4e9b8
refactor(compiler): parseUnparsed takes only token values
YevheniiKotyrlo Oct 9, 2026
7b3ad43
test: assert inherited colours as browsers compute them
YevheniiKotyrlo Oct 9, 2026
3454d14
fix: resolve CSS-wide keywords as css-cascade-5 defines them
YevheniiKotyrlo Oct 9, 2026
a35348b
test: a comment beside a CSS-wide keyword leaves it the whole value
YevheniiKotyrlo Oct 9, 2026
487490b
fix(compiler): ignore a declaration whose value cannot be parsed
YevheniiKotyrlo Oct 9, 2026
5ccf375
fix(native): a var() that leaves none in a filter or transform leaves…
YevheniiKotyrlo Oct 9, 2026
7569ab2
refactor(native): reset a cleared shorthand only where a value can ar…
YevheniiKotyrlo Oct 9, 2026
bcf0214
test: a pseudo-element rule keeps its other custom properties
YevheniiKotyrlo Oct 9, 2026
0a7808b
fix(compiler): a CSS-wide keyword inside a longer value invalidates t…
YevheniiKotyrlo Oct 9, 2026
be3faab
fix(compiler): object-position, corner-shape and font-variant take a …
YevheniiKotyrlo Oct 9, 2026
4b644ef
fix(compiler): a var() or env() fallback is the whole value only when…
YevheniiKotyrlo Oct 9, 2026
d4543ed
test: an env() fallback inside a function drops its keyword
YevheniiKotyrlo Oct 9, 2026
364a4f3
test: name each env() fallback in its test title
YevheniiKotyrlo Oct 9, 2026
6f2d8b1
test: a light-dark() inside a shadow is walked for a keyword
YevheniiKotyrlo Oct 9, 2026
5eddc33
fix(compiler): a CSS-wide keyword's warning quotes it as written
YevheniiKotyrlo Oct 9, 2026
f9caff0
fix: resolve a custom property's CSS-wide keyword on the property itself
YevheniiKotyrlo Oct 16, 2026
25ae772
fix: a var() that substitutes nothing invalidates its value wherever …
YevheniiKotyrlo Oct 16, 2026
0008002
fix: a list whose every var() substitutes nothing is invalid at runti…
YevheniiKotyrlo Oct 16, 2026
50f4188
test: a variable that leads into a cycle is inlined, and the cycle is…
YevheniiKotyrlo Oct 16, 2026
17e5423
test: read the fold of a variable leading into a cycle off the declar…
YevheniiKotyrlo Oct 16, 2026
52b9fb6
refactor(native): name the variables rncss publishes itself library v…
YevheniiKotyrlo Oct 16, 2026
1cd5787
refactor(native): a filter's value is never the initial keyword, whic…
YevheniiKotyrlo Oct 16, 2026
6427f52
test: an undefined variable that is a filter's whole value leaves no …
YevheniiKotyrlo Oct 16, 2026
e58f2c4
fix(native): reset every animation longhand for a CSS-wide keyword
YevheniiKotyrlo Oct 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
653 changes: 652 additions & 1 deletion src/__tests__/compiler/compiler.test.tsx

Large diffs are not rendered by default.

31 changes: 31 additions & 0 deletions src/__tests__/native/animations.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,37 @@ test("an invalid numeric animation name is omitted without throwing", () => {
expect(style()?.animationName).toBeUndefined();
});

const clearedAnimation = {
animationName: undefined,
animationDelay: undefined,
animationDirection: undefined,
animationDuration: undefined,
animationFillMode: undefined,
animationIterationCount: undefined,
animationPlayState: undefined,
animationTimingFunction: undefined,
};

// Chromium 153, Firefox 155 and WebKit 26.6 reset every animation longhand for `initial`, `unset` and a var() that resolves to nothing
describe.each([undefined, false] as const)(
"an animation reset with inlineVariables=%s",
(inlineVariables) => {
test.each(["initial", "unset", "var(--missing)"])(
"animation: %s after a written animation leaves no animation",
(reset) => {
registerCSS(
`${keyframes} .earlier { animation: slide-in 1s; } .reset { animation: ${reset}; }`,
{ inlineVariables },
);
render(<View testID={testID} className="earlier reset" />);
expect(screen.getByTestId(testID).props.style).toStrictEqual(
clearedAnimation,
);
},
);
},
);

test("multiple animation names preserve keyframe order and timing metadata", () => {
registerCSS(`${keyframes} .motion {
animation: slide-in 1s linear 250ms 2 alternate both,
Expand Down
Loading