MCPcopy Create free account
hub / github.com/anomalyco/opencode / ensureCodeWrapper

Function ensureCodeWrapper

packages/session-ui/src/components/markdown.tsx:203–232  ·  view source on GitHub ↗
(block: HTMLPreElement, labels: CopyLabels)

Source from the content-addressed store, hash-verified

201}
202
203function ensureCodeWrapper(block: HTMLPreElement, labels: CopyLabels) {
204 const parent = block.parentElement
205 if (!parent) return
206 const wrapped = parent.getAttribute("data-component") === "markdown-code"
207 if (!wrapped) {
208 const wrapper = document.createElement("div")
209 wrapper.setAttribute("data-component", "markdown-code")
210 applyCodeMetadata(wrapper, codeLanguage(block))
211 parent.replaceChild(wrapper, block)
212 wrapper.appendChild(block)
213 wrapper.appendChild(createCopyButton(labels))
214 return
215 }
216
217 applyCodeMetadata(parent, codeLanguage(block))
218
219 const buttons = Array.from(parent.querySelectorAll('[data-slot="markdown-copy-button"]')).filter(
220 (el): el is HTMLButtonElement => el instanceof HTMLButtonElement,
221 )
222
223 if (buttons.length === 0) {
224 parent.appendChild(createCopyButton(labels))
225 return
226 }
227
228 for (const button of buttons.slice(1)) {
229 disposeCopyButton(button)
230 button.remove()
231 }
232}
233
234function markCodeLinks(root: HTMLDivElement) {
235 const codeNodes = Array.from(root.querySelectorAll(":not(pre) > code"))

Callers 1

decorateFunction · 0.85

Calls 6

applyCodeMetadataFunction · 0.85
codeLanguageFunction · 0.85
createCopyButtonFunction · 0.85
disposeCopyButtonFunction · 0.85
removeMethod · 0.65
fromMethod · 0.45

Tested by

no test coverage detected