Override designSystem
methods by introducing a mockDesignSystem
#14718
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We can definitely change the name, also open for suggestions here.
The idea is as follows:
designSystem
(and therefore keep all the existing functionality)decodeArbitraryValues
function such that we don't add spaces around operators anymore. This is a divergence from the actual implementation. This allows us to keep the whitespace from the candidate without trying to be smart about it.&:is(…)
. We do get rid of this wrapper in thismockDesignSystem
function as well. This has a downside that if people literally wrote[&:is(p)]:flex
that it will be converted to[p]:flex
but I think that's reasonable.Another thing that this unlocks is that by overriding the
parseCandidate
andparseVariant
functions, that we can remove the layer of caching. This means that we don't have to cache anymore, and even better, we don't have to usestructuredClone(candidate)
anymore. We usedstructuredClone
before to make sure that we didn't mutate existing candidates in the cached design system. But now everything is fresh.Some examples:
Input:
Output before:
Output after: