refactor(editor): extract BlockSelectionWrapper for media block selection#623
Merged
Conversation
5b5d50e to
a863c52
Compare
Collaborator
Author
Collaborator
Collaborator
Author
|
@GaboHBeaumont good catch. I fixed that and also another nested selection block issue. |
…tion Replace inline selected/setSelected state and useEditorSelectionChange calls in each media block with a shared BlockSelectionWrapper component. Remove selected/setSelected props from MediaContainer and DisplayComponent interfaces.
Use position-based content range check for TextSelection instead of getNodesInSelection utility. Media blocks (image, video, file, embed, etc.) now skip the full-block-selected background via CSS :has() selector to avoid double-highlight with bn-media-selected styling.
4d36fb1 to
1f006b0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Screen.Recording.2026-05-18.at.18.59.27.mov
Summary
BlockSelectionWrappercomponent frommedia-render.tsxintoblock-selection-wrapper.tsx— centralizes selection logic previously duplicated across media blocksselected/setSelectedprops fromDisplayComponentProps,MediaContainer,MediaForm, and all display components (ImageDisplay,VideoDisplay,FileDisplay,WebEmbedDisplay,EmbedDisplay)blockSelection.csswith.bn-media-selectedoutline styles and CSS-class-based visibility for.replace-btnand.sel-btnbuttons — replaces inlineselected && 'opacity-100'conditionalsMediaRender,ButtonBlockView,QueryBlock, and embed render paths inBlockSelectionWrapperselectInsertedBlockhelper inslash-menu-items.tsx— deduplicates repeatedview.dispatch(state.tr.scrollIntoView())calls after slash-menu insertions, now usesNodeSelectionto auto-select the inserted blockselected-dependent conditionalplaceholder:text-foreground/50to URL inputs in embed and media form for better placeholder contrast