Uh oh!
There was an error while loading. Please reload this page.
Refactor codeBlockButton Plugins - #2625
Conversation
Refactored logic to insert buttons only if pre element contains the code element. Scoped CSS rules similarly to minimized side effects Modularized CSS rules to be included only if plugin is enabled.
Uh oh!
There was an error while loading. Please reload this page.
Tim-Siu
left a comment
There was a problem hiding this comment.
This PR successfully addresses the problems spotted in #2624. It also refactors the code block button CSS by moving it from the general stylesheet (markbind.css) to a dedicated CSS file (codeBlockButtons.css).
Improvements:
- Addressed #2624 through Improved selector: Using
:has(.function-btn-container)is more specific than the previous selector. This will make sure code block plugin does not affect other plugins that uses<pre>. - Better organization: Moving CSS to a dedicated file improves modularity (and potentially performance)
Suggestions:
Actually don't have any suggestion.
The improved conditional check node.children?.some(child => child.name === 'code') is good. I can't think of any corner case.
Thanks @AgentHagu for carefully reviewing the code and @gerteck for detailed explanation.
The changes look good!
lhw-1
left a comment
There was a problem hiding this comment.
LGTM. The changes make sense as per #2624 and possible concerns were addressed by @AgentHagu and @gerteck. Thanks @gerteck for the PR!
What is the purpose of this pull request?
Overview of changes:
Refactored logic to insert buttons only if pre element contains the code element. Scoped CSS rules (specifically, for
<pre/>element to minimize side effects. Modularized CSS rules to be included only if plugin is enabled.Refer to #1043#1668 to check CSS rules that were added for the code block buttons.
Fixes#2624
Anything you'd like to highlight/discuss:
Testing instructions:
See #2624
Enable relevant plugins, and put some sample code into index.md:
Buttons should not show up beside the cat. It should only show up for the code block above it.
Proposed commit message: (wrap lines at 72 characters)
Refactor codeBlockButton Plugins
Refactored logic to insert plugin buttons only if
pre element contains the code element as per CommonMark
spec for fenced code blocks. Scoped CSS rules for pre element
to minimize side effects. Modularized previously global button
CSS rules to be included only if plugin is enabled.
Checklist: ☑️
Reviewer checklist:
Indicate the SEMVER impact of the PR:
At the end of the review, please label the PR with the appropriate label:
r.Major,r.Minor,r.Patch.Breaking change release note preparation (if applicable):