Block API: Add support for transforms prioritization #5701
Merged
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.
Fixes #5620
This pull request seeks to add a prioritization mechanism to block transforms, addressing two current issues with reliance on block registration order (paragraph and shortcode transforms as fallback). From a block implementer perspective, this simply adds a new property
priority
to the transform object, which behaves nearly identical to hooks prioritization (the similarity is not coincidental, as it uses hooks under the hood as the basis). At a code level, it introduces two new functionsgetBlockTransforms
andfindTransform
which respectively return/normalize transforms and return a predicate-matching transform considering priority.There may be room for further optimization here (e.g. sorting at registration time, caching transforms) but after a few failed attempts, I landed on this as a more direct/simple implementation.
Testing instructions:
Verify that there are no regressions in transform behavior. Notably, this impacts: