Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: facebook/react-native
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: b2f698afcf4e3f063397f6952cf5e3a6525e9126
Choose a base ref
...
head repository: facebook/react-native
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 290ba820946361ce7e360ef4e67f494fdfc66169
Choose a head ref
  • 5 commits
  • 8 files changed
  • 1 contributor

Commits on Jan 22, 2025

  1. Simplify "rollback" on optional or invalid syntax (#48825)

    Summary:
    
    Right now we preserve the state of the CSSSyntaxParser across multiple data type parse attempts, so long that a data type parser consumes an additional component value. This requires data type parsers to be careful to not consume additional forward tokens if it may lead to parse error. We can make this model a lot simpler by instead resetting the parser to original state on data type parse error.
    
    We also introduce `peekComponentValue`, and visitor-less `consumeComponentValue` as a convenience, to allow data type parsers to view future component values without advancing, even if the data type parser does return a value, without needing to manually clone the parser.
    
    Changelog: [Internal]
    
    Reviewed By: lenaic
    
    Differential Revision: D68357624
    NickGerleman authored and facebook-github-bot committed Jan 22, 2025
    Configuration menu
    Copy the full SHA
    c780b38 View commit details
    Browse the repository at this point in the history
  2. Simplify consuming solidus separated component values (#48826)

    Summary:
    
    This ends up being a not uncommon pattern, so lets make it a bit easier.
    
    Changelog: [Internal]
    
    Reviewed By: lenaic
    
    Differential Revision: D68359563
    NickGerleman authored and facebook-github-bot committed Jan 22, 2025
    Configuration menu
    Copy the full SHA
    197e3f3 View commit details
    Browse the repository at this point in the history
  3. Support parsing rgb() and rgba() functions into CSSColor (#48827)

    Summary:
    
    This teaches the CSSColor parser how to handle these functions.
    
    There are a surprising amount of edge cases here, including many syntactic options added by the CSS Color Module 4 spec, and some technically invalid examples supported by normalize-color, sometimes working in Chrome.
    
    I used the combination of the spec, and existing functionality and tests for `normalize-color`, with the end result supporting a superset of the functionality of both, while being a bit more permissive than either.
    
    I still need to add support for the other color functions, and will probably want to share code here, but for now, just implemented everything for the rgb values as a start.
    
    Changelog: [Internal]
    
    Reviewed By: javache
    
    Differential Revision: D68362477
    NickGerleman authored and facebook-github-bot committed Jan 22, 2025
    Configuration menu
    Copy the full SHA
    cd67302 View commit details
    Browse the repository at this point in the history
  4. Add CSSDelimeter::OptionalWhitespace and CSSDelimeter::CommaOrWhitesp…

    …aceOrSolidus (#48828)
    
    Summary:
    
    1. Rename `CSSComponentValueDelimeter` to `CSSDelimeter` bc the names are getting way too long.
    2. Make the distinction between `Whitespace` and `OptionalWhitespace`. Note that for property values, and function blocks, the value parser will already remove trailing/leading whitespace, but it's weird that whitespace unlike others was not required to be present
    3. Add `CSSDelimeter::CommaOrWhitespaceOrSolidus` for simpler parsing in the common pattern of alpha values, and move CSSColor function parsing to use that
    
    Changelog: [Internal]
    
    Reviewed By: lenaic
    
    Differential Revision: D68461968
    NickGerleman authored and facebook-github-bot committed Jan 22, 2025
    Configuration menu
    Copy the full SHA
    97c2e82 View commit details
    Browse the repository at this point in the history
  5. More spec compliant rgb function parsing (#48839)

    Summary:
    
    In the last diff I mixed and matched `<legacy-rgb-syntax>` and `<modern-rgb-syntax>` a bit to keep compatiblity with `normalze-color`.
    
    Spec noncompliant values have only been allowed since #34600 with the main issue being that legacy syntax rgb functions are allowed to use the `/` based alpha syntax, and commas can be mixed with whitespace. This seems like an exceedingly rare real-world scenario (there are currently zero usages of slash syntax in RKJSModules validated by `rgb\([^\)]*/`), so I'm going to instead just follow the spec for more sanity.
    
    Another bit that I missed was that modern RGB functions allow individual components to be `<percentage>` or `<number>` compared to legacy functions which only allow the full function to accept one or the other (`normalize-color` doesn't support `<percentage>` at all), so I fixed that as well.
    
    I started sharing a little bit more of the logic here, to make things more readable when adding more functions.
    
    Changelog: [Internal]
    
    Differential Revision: D68468275
    NickGerleman authored and facebook-github-bot committed Jan 22, 2025
    Configuration menu
    Copy the full SHA
    290ba82 View commit details
    Browse the repository at this point in the history
Loading