@neuralnomads/codenomad-dev 0.20.0-dev-20260907-e9e94a67 → 0.20.0-dev-20260908-e5115fe8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/public/assets/{App-lAZZOE--.js → App-DPj4p3An.js} +16 -16
- package/public/assets/App-DPj4p3An.js.map +1 -0
- package/public/assets/{FilesTab-CgfwF6tR.js → FilesTab-C8fnWsM4.js} +2 -2
- package/public/assets/{FilesTab-CgfwF6tR.js.map → FilesTab-C8fnWsM4.js.map} +1 -1
- package/public/assets/{GitChangesTab-r1JoAD9n.js → GitChangesTab-C3rapWwl.js} +2 -2
- package/public/assets/{GitChangesTab-r1JoAD9n.js.map → GitChangesTab-C3rapWwl.js.map} +1 -1
- package/public/assets/{SplitFilePanel-D9FfoZUZ.js → SplitFilePanel-D3S7Zfcc.js} +2 -2
- package/public/assets/{SplitFilePanel-D9FfoZUZ.js.map → SplitFilePanel-D3S7Zfcc.js.map} +1 -1
- package/public/assets/{StatusTab-DMnWj5WS.js → StatusTab-DHvQ-0to.js} +2 -2
- package/public/assets/{StatusTab-DMnWj5WS.js.map → StatusTab-DHvQ-0to.js.map} +1 -1
- package/public/assets/{align-justify-Dc1gjAkp.js → align-justify-BIN0BnZw.js} +2 -2
- package/public/assets/{align-justify-Dc1gjAkp.js.map → align-justify-BIN0BnZw.js.map} +1 -1
- package/public/assets/{bundle-full-CXK0RpEe.js → bundle-full-BfEvraVO.js} +2 -2
- package/public/assets/{bundle-full-CXK0RpEe.js.map → bundle-full-BfEvraVO.js.map} +1 -1
- package/public/assets/{client-state-DmImbmIC.js → client-state-CBKOWfhu.js} +2 -2
- package/public/assets/{client-state-DmImbmIC.js.map → client-state-CBKOWfhu.js.map} +1 -1
- package/public/assets/{diff-viewer-CbJWj99J.js → diff-viewer-6oxyPi3-.js} +2 -2
- package/public/assets/{diff-viewer-CbJWj99J.js.map → diff-viewer-6oxyPi3-.js.map} +1 -1
- package/public/assets/{index-CF7UTwOC.js → index-BJrZpSe6.js} +2 -2
- package/public/assets/{index-CF7UTwOC.js.map → index-BJrZpSe6.js.map} +1 -1
- package/public/assets/{index-UtSy15g1.js → index-B_9dhJTl.js} +2 -2
- package/public/assets/{index-UtSy15g1.js.map → index-B_9dhJTl.js.map} +1 -1
- package/public/assets/{index-xkTcWbMt.js → index-BeWVYvfJ.js} +2 -2
- package/public/assets/{index-xkTcWbMt.js.map → index-BeWVYvfJ.js.map} +1 -1
- package/public/assets/{index-C1AVy0gw.js → index-BhBg6Tnf.js} +2 -2
- package/public/assets/{index-C1AVy0gw.js.map → index-BhBg6Tnf.js.map} +1 -1
- package/public/assets/{index-Bv4cVEdt.js → index-C9znv1NB.js} +2 -2
- package/public/assets/{index-Bv4cVEdt.js.map → index-C9znv1NB.js.map} +1 -1
- package/public/assets/{index-kaTj6a0V.js → index-CD9b6FoA.js} +2 -2
- package/public/assets/{index-kaTj6a0V.js.map → index-CD9b6FoA.js.map} +1 -1
- package/public/assets/{index-D5cfewGV.js → index-CmJg6xjr.js} +2 -2
- package/public/assets/{index-D5cfewGV.js.map → index-CmJg6xjr.js.map} +1 -1
- package/public/assets/{index-C8aIk3bb.js → index-DHNlQHw2.js} +2 -2
- package/public/assets/{index-C8aIk3bb.js.map → index-DHNlQHw2.js.map} +1 -1
- package/public/assets/{index-AwBa5De4.js → index-DdklToXY.js} +2 -2
- package/public/assets/{index-AwBa5De4.js.map → index-DdklToXY.js.map} +1 -1
- package/public/assets/{index-Dggdc5Fz.js → index-Dr5L4afe.js} +2 -2
- package/public/assets/{index-Dggdc5Fz.js.map → index-Dr5L4afe.js.map} +1 -1
- package/public/assets/{index-BJSdILt0.js → index-DsmOPul3.js} +2 -2
- package/public/assets/{index-BJSdILt0.js.map → index-DsmOPul3.js.map} +1 -1
- package/public/assets/{index-BfORYhCR.js → index-ef9_CbWU.js} +3 -3
- package/public/assets/index-ef9_CbWU.js.map +1 -0
- package/public/assets/{loading-CLjF2dnt.js → loading-CanSHf7z.js} +2 -2
- package/public/assets/{loading-CLjF2dnt.js.map → loading-CanSHf7z.js.map} +1 -1
- package/public/assets/{main-CA9pw_Mr.js → main-COtTRZe6.js} +25 -25
- package/public/assets/main-COtTRZe6.js.map +1 -0
- package/public/assets/{markdown-DP0osupz.js → markdown-B04qkFuc.js} +4 -4
- package/public/assets/{markdown-DP0osupz.js.map → markdown-B04qkFuc.js.map} +1 -1
- package/public/assets/{startup-state-settings-card-Bc27wplD.js → startup-state-settings-card-DE11-Je6.js} +2 -2
- package/public/assets/{startup-state-settings-card-Bc27wplD.js.map → startup-state-settings-card-DE11-Je6.js.map} +1 -1
- package/public/assets/{terminal-square-4t6I40X6.js → terminal-square-W8UL0Uzs.js} +2 -2
- package/public/assets/{terminal-square-4t6I40X6.js.map → terminal-square-W8UL0Uzs.js.map} +1 -1
- package/public/assets/{tool-call-BIHyGWIy.js → tool-call-irc_6gLg.js} +4 -4
- package/public/assets/{tool-call-BIHyGWIy.js.map → tool-call-irc_6gLg.js.map} +1 -1
- package/public/assets/{unified-picker-CpvYPG8V.js → unified-picker-CkVc32ly.js} +2 -2
- package/public/assets/{unified-picker-CpvYPG8V.js.map → unified-picker-CkVc32ly.js.map} +1 -1
- package/public/assets/{wrap-text-Dq8UDb8D.js → wrap-text-CR-cuiJP.js} +2 -2
- package/public/assets/{wrap-text-Dq8UDb8D.js.map → wrap-text-CR-cuiJP.js.map} +1 -1
- package/public/index.html +2 -2
- package/public/loading.html +2 -2
- package/public/sw.js +1 -1
- package/public/sw.js.map +1 -1
- package/public/assets/App-lAZZOE--.js.map +0 -1
- package/public/assets/index-BfORYhCR.js.map +0 -1
- package/public/assets/main-CA9pw_Mr.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-viewer-CbJWj99J.js","sources":["../../../components/diff-viewer.tsx"],"sourcesContent":["import { createMemo, Show, createEffect } from \"solid-js\"\nimport { DiffView, DiffModeEnum } from \"@git-diff-view/solid\"\nimport \"@git-diff-view/solid/styles/diff-view-pure.css\"\nimport { disableCache } from \"@git-diff-view/core\"\nimport type { DiffHighlighterLang } from \"@git-diff-view/core\"\nimport { ErrorBoundary } from \"solid-js\"\nimport { getLanguageFromPath } from \"../lib/text-render-utils\"\nimport { normalizeDiffText } from \"../lib/diff-utils\"\nimport { setCacheEntry } from \"../lib/global-cache\"\nimport type { CacheEntryParams } from \"../lib/global-cache\"\nimport type { DiffViewMode } from \"../stores/preferences\"\nimport { getLogger } from \"../lib/logger\"\nconst log = getLogger(\"session\")\n\n\ndisableCache()\n\ninterface ToolCallDiffViewerProps {\n diffText: string\n filePath?: string\n theme: \"light\" | \"dark\"\n mode: DiffViewMode\n wrap?: boolean\n onRendered?: () => void\n cachedHtml?: string\n cacheEntryParams?: CacheEntryParams\n}\n\ntype DiffData = {\n oldFile?: { fileName?: string | null; fileLang?: string | null; content?: string | null }\n newFile?: { fileName?: string | null; fileLang?: string | null; content?: string | null }\n hunks: string[]\n}\n\nfunction measureTextWidth(container: HTMLElement, text: string, source: HTMLElement) {\n const computed = window.getComputedStyle(source)\n const probe = document.createElement(\"span\")\n probe.textContent = text || \"\"\n probe.style.position = \"absolute\"\n probe.style.visibility = \"hidden\"\n probe.style.pointerEvents = \"none\"\n probe.style.display = \"inline-block\"\n probe.style.width = \"auto\"\n probe.style.maxWidth = \"none\"\n probe.style.whiteSpace = \"nowrap\"\n probe.style.fontFamily = computed.fontFamily\n probe.style.fontSize = computed.fontSize\n probe.style.fontWeight = computed.fontWeight\n probe.style.fontStyle = computed.fontStyle\n probe.style.letterSpacing = computed.letterSpacing\n probe.style.fontVariant = computed.fontVariant\n probe.style.textTransform = computed.textTransform\n probe.style.lineHeight = computed.lineHeight\n container.appendChild(probe)\n const width = Math.ceil(probe.getBoundingClientRect().width)\n probe.remove()\n return width\n}\n\nfunction computeCompactWidth(\n container: HTMLElement,\n entries: Array<{ text: string; source: HTMLElement }>,\n maxWidthPx = 40,\n) {\n const measuredLabelWidthPx = entries.reduce((max, entry) => {\n return Math.max(max, measureTextWidth(container, entry.text, entry.source))\n }, 0)\n const fallbackTextLength = entries.reduce((max, entry) => Math.max(max, entry.text.length), 1)\n const fallbackWidthPx = Math.round(fallbackTextLength * 7 + 4)\n return Math.max(2, Math.min(maxWidthPx, measuredLabelWidthPx > 0 ? measuredLabelWidthPx + 2 : fallbackWidthPx))\n}\n\nfunction applyCompactUnifiedGutter(container: HTMLElement, wrap: boolean) {\n const tableWrapper = container.querySelector<HTMLElement>(\".unified-diff-table-wrapper\")\n const table = container.querySelector<HTMLTableElement>(\".unified-diff-table\")\n const numberCol = container.querySelector<HTMLTableColElement>(\".unified-diff-table-num-col\")\n const gutterRows = container.querySelectorAll<HTMLElement>(\".diff-line-num\")\n const hunkGutters = container.querySelectorAll<HTMLElement>(\".diff-line-hunk-action, .diff-line-widget-wrapper, .diff-line-extend-wrapper\")\n const entries: Array<{ gutter: HTMLElement; label: HTMLElement; text: string }> = []\n\n if (table) {\n if (wrap) {\n table.classList.add(\"table-fixed\")\n table.style.tableLayout = \"fixed\"\n table.style.width = \"100%\"\n table.style.minWidth = \"100%\"\n } else {\n table.classList.remove(\"table-fixed\")\n table.style.tableLayout = \"auto\"\n table.style.width = \"max-content\"\n table.style.minWidth = \"100%\"\n }\n }\n\n gutterRows.forEach((gutter) => {\n const oldSpan = gutter.querySelector<HTMLElement>(\"[data-line-old-num]\")\n const newSpan = gutter.querySelector<HTMLElement>(\"[data-line-new-num]\")\n const spacer = gutter.querySelector<HTMLElement>(\".shrink-0\")\n const flexWrapper = gutter.querySelector<HTMLElement>(\":scope > .flex\")\n const currentLabel = gutter.querySelector<HTMLElement>(\":scope > .tool-call-diff-compact-line-number\")\n\n const oldText = oldSpan?.textContent?.trim() ?? \"\"\n const newText = newSpan?.textContent?.trim() ?? \"\"\n const hasUsableNew = newText.length > 0 && newText !== \"0\"\n const hasUsableOld = oldText.length > 0 && oldText !== \"0\"\n const visibleText = hasUsableNew ? newText : hasUsableOld ? oldText : newText || oldText\n\n if (flexWrapper) flexWrapper.style.display = \"none\"\n if (spacer) spacer.style.display = \"none\"\n if (oldSpan) { oldSpan.style.display = \"none\"; oldSpan.style.width = \"auto\" }\n if (newSpan) { newSpan.style.display = \"none\"; newSpan.style.width = \"auto\" }\n\n gutter.style.paddingLeft = \"1px\"\n gutter.style.paddingRight = \"1px\"\n gutter.style.textAlign = \"left\"\n\n const label = currentLabel ?? document.createElement(\"span\")\n label.className = \"tool-call-diff-compact-line-number\"\n label.textContent = visibleText\n label.setAttribute(\"aria-hidden\", visibleText ? \"false\" : \"true\")\n if (!currentLabel) gutter.appendChild(label)\n\n entries.push({ gutter, label, text: visibleText })\n })\n\n const gutterWidthPx = computeCompactWidth(container, entries.map((entry) => ({ text: entry.text, source: entry.label })))\n const gutterWidth = `${gutterWidthPx}px`\n const compactAsideWidth = `${Math.max(8, gutterWidthPx - 10)}px`\n\n if (tableWrapper) {\n tableWrapper.style.setProperty(\"--diff-aside-width\", compactAsideWidth)\n tableWrapper.style.setProperty(\"--diff-aside-width--\", compactAsideWidth)\n }\n if (numberCol) {\n numberCol.style.width = gutterWidth\n }\n\n entries.forEach(({ gutter, label }) => {\n gutter.style.width = gutterWidth\n gutter.style.minWidth = gutterWidth\n gutter.style.maxWidth = gutterWidth\n label.style.width = \"auto\"\n label.style.maxWidth = \"none\"\n })\n\n hunkGutters.forEach((gutter) => {\n gutter.style.width = gutterWidth\n gutter.style.minWidth = gutterWidth\n gutter.style.maxWidth = gutterWidth\n gutter.style.paddingLeft = \"0\"\n gutter.style.paddingRight = \"0\"\n })\n}\n\nfunction applyCompactSplitGutter(container: HTMLElement) {\n const oldWrapper = container.querySelector<HTMLElement>(\".old-diff-table-wrapper\")\n const newWrapper = container.querySelector<HTMLElement>(\".new-diff-table-wrapper\")\n const numberCells = Array.from(container.querySelectorAll<HTMLElement>(\".diff-line-old-num, .diff-line-new-num\"))\n const hunkActions = Array.from(container.querySelectorAll<HTMLElement>(\".diff-line-hunk-action, .diff-line-widget-wrapper, .diff-line-extend-wrapper\"))\n const numberSpans = numberCells\n .map((cell) => ({ cell, span: cell.querySelector<HTMLElement>(\"[data-line-num]\") }))\n .filter((entry): entry is { cell: HTMLElement; span: HTMLElement } => Boolean(entry.span))\n\n const gutterWidthPx = computeCompactWidth(\n container,\n numberSpans.map(({ span }) => ({ text: span.textContent?.trim() ?? \"\", source: span })),\n 64,\n )\n const gutterWidth = `${gutterWidthPx}px`\n\n ;[oldWrapper, newWrapper].forEach((wrapper) => {\n if (wrapper) {\n wrapper.style.setProperty(\"--diff-aside-width\", gutterWidth)\n }\n })\n\n numberCells.forEach((cell) => {\n cell.style.width = gutterWidth\n cell.style.minWidth = gutterWidth\n cell.style.maxWidth = gutterWidth\n cell.style.paddingLeft = \"2px\"\n cell.style.paddingRight = \"2px\"\n cell.style.textAlign = \"left\"\n cell.style.whiteSpace = \"nowrap\"\n cell.style.overflowWrap = \"normal\"\n cell.style.wordBreak = \"normal\"\n })\n\n numberSpans.forEach(({ span }) => {\n span.style.whiteSpace = \"nowrap\"\n span.style.overflowWrap = \"normal\"\n span.style.wordBreak = \"normal\"\n })\n\n hunkActions.forEach((cell) => {\n cell.style.width = gutterWidth\n cell.style.minWidth = gutterWidth\n cell.style.maxWidth = gutterWidth\n cell.style.paddingLeft = \"0\"\n cell.style.paddingRight = \"0\"\n })\n}\n\nfunction applyCompactDiffLayout(container: HTMLElement, mode: DiffViewMode, wrap = false) {\n if (mode === \"unified\") {\n applyCompactUnifiedGutter(container, wrap)\n return\n }\n if (mode === \"split\") {\n applyCompactSplitGutter(container)\n }\n}\n\nexport function ToolCallDiffViewer(props: ToolCallDiffViewerProps) {\n const diffData = createMemo<DiffData | null>(() => {\n const normalized = normalizeDiffText(props.diffText)\n if (!normalized) {\n return null\n }\n \n const language = getLanguageFromPath(props.filePath) || \"text\"\n const fileName = props.filePath || \"diff\"\n \n return {\n oldFile: {\n fileName,\n fileLang: (language || \"text\") as DiffHighlighterLang | null,\n },\n newFile: {\n fileName,\n fileLang: (language || \"text\") as DiffHighlighterLang | null,\n },\n hunks: [normalized],\n }\n })\n \n let diffContainerRef: HTMLDivElement | undefined\n let lastCapturedKey: string | undefined\n \n const contextKey = createMemo(() => {\n const data = diffData()\n if (!data) return \"\"\n return `${props.theme}|${props.mode}|${props.wrap ? \"wrap\" : \"nowrap\"}|${props.diffText}`\n })\n \n createEffect(() => {\n const cachedHtml = props.cachedHtml\n if (cachedHtml) {\n if (diffContainerRef) {\n applyCompactDiffLayout(diffContainerRef, props.mode, Boolean(props.wrap))\n }\n // When we are given cached HTML, we rely on the caller's cache\n // and simply notify once rendered.\n props.onRendered?.()\n return\n }\n \n const key = contextKey()\n if (!key) return\n if (!diffContainerRef) return\n if (lastCapturedKey === key) return\n\n requestAnimationFrame(() => {\n if (!diffContainerRef) return\n applyCompactDiffLayout(diffContainerRef, props.mode, Boolean(props.wrap))\n const markup = diffContainerRef.innerHTML\n if (!markup) return\n lastCapturedKey = key\n if (props.cacheEntryParams) {\n setCacheEntry(props.cacheEntryParams, {\n text: props.diffText,\n html: markup,\n theme: props.theme,\n mode: props.mode,\n wrap: props.wrap,\n })\n }\n props.onRendered?.()\n })\n })\n\n\n return (\n <div class=\"tool-call-diff-viewer\">\n <Show\n when={props.cachedHtml}\n fallback={\n <div ref={diffContainerRef}>\n <Show\n when={diffData()}\n fallback={<pre class=\"tool-call-diff-fallback\">{props.diffText}</pre>}\n >\n {(data) => (\n <ErrorBoundary fallback={(error) => {\n log.warn(\"Failed to render diff view\", error)\n return <pre class=\"tool-call-diff-fallback\">{props.diffText}</pre>\n }}>\n <DiffView\n data={data()}\n diffViewMode={props.mode === \"split\" ? DiffModeEnum.Split : DiffModeEnum.Unified}\n diffViewTheme={props.theme}\n diffViewHighlight\n diffViewWrap={Boolean(props.wrap)}\n diffViewFontSize={13}\n />\n </ErrorBoundary>\n )}\n </Show>\n </div>\n }\n >\n <div ref={diffContainerRef} innerHTML={props.cachedHtml} />\n </Show>\n </div>\n )\n}\n"],"names":["log","getLogger","disableCache","measureTextWidth","container","text","source","computed","window","getComputedStyle","probe","document","createElement","textContent","style","position","visibility","pointerEvents","display","width","maxWidth","whiteSpace","fontFamily","fontSize","fontWeight","fontStyle","letterSpacing","fontVariant","textTransform","lineHeight","appendChild","Math","ceil","getBoundingClientRect","remove","computeCompactWidth","entries","maxWidthPx","measuredLabelWidthPx","reduce","max","entry","fallbackTextLength","length","fallbackWidthPx","round","min","applyCompactUnifiedGutter","wrap","tableWrapper","querySelector","table","numberCol","gutterRows","querySelectorAll","hunkGutters","classList","add","tableLayout","minWidth","forEach","gutter","oldSpan","newSpan","spacer","flexWrapper","currentLabel","oldText","trim","newText","hasUsableNew","hasUsableOld","visibleText","paddingLeft","paddingRight","textAlign","label","className","setAttribute","push","gutterWidthPx","map","gutterWidth","compactAsideWidth","setProperty","applyCompactSplitGutter","oldWrapper","newWrapper","numberCells","Array","from","hunkActions","numberSpans","cell","span","filter","Boolean","wrapper","overflowWrap","wordBreak","applyCompactDiffLayout","mode","ToolCallDiffViewer","props","diffData","createMemo","normalized","normalizeDiffText","diffText","language","getLanguageFromPath","filePath","fileName","oldFile","fileLang","newFile","hunks","diffContainerRef","lastCapturedKey","contextKey","theme","createEffect","cachedHtml","onRendered","key","requestAnimationFrame","markup","innerHTML","cacheEntryParams","setCacheEntry","html","_el$","_tmpl$2","_$insert","_$createComponent","Show","when","fallback","_el$3","_tmpl$","_ref$2","_$use","_el$4","_tmpl$3","children","data","ErrorBoundary","error","warn","_el$5","DiffView","diffViewMode","_$memo","DiffModeEnum","Split","Unified","diffViewTheme","diffViewHighlight","diffViewWrap","diffViewFontSize","_el$2","_ref$","_$effect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff-viewer-6oxyPi3-.js","sources":["../../../components/diff-viewer.tsx"],"sourcesContent":["import { createMemo, Show, createEffect } from \"solid-js\"\nimport { DiffView, DiffModeEnum } from \"@git-diff-view/solid\"\nimport \"@git-diff-view/solid/styles/diff-view-pure.css\"\nimport { disableCache } from \"@git-diff-view/core\"\nimport type { DiffHighlighterLang } from \"@git-diff-view/core\"\nimport { ErrorBoundary } from \"solid-js\"\nimport { getLanguageFromPath } from \"../lib/text-render-utils\"\nimport { normalizeDiffText } from \"../lib/diff-utils\"\nimport { setCacheEntry } from \"../lib/global-cache\"\nimport type { CacheEntryParams } from \"../lib/global-cache\"\nimport type { DiffViewMode } from \"../stores/preferences\"\nimport { getLogger } from \"../lib/logger\"\nconst log = getLogger(\"session\")\n\n\ndisableCache()\n\ninterface ToolCallDiffViewerProps {\n diffText: string\n filePath?: string\n theme: \"light\" | \"dark\"\n mode: DiffViewMode\n wrap?: boolean\n onRendered?: () => void\n cachedHtml?: string\n cacheEntryParams?: CacheEntryParams\n}\n\ntype DiffData = {\n oldFile?: { fileName?: string | null; fileLang?: string | null; content?: string | null }\n newFile?: { fileName?: string | null; fileLang?: string | null; content?: string | null }\n hunks: string[]\n}\n\nfunction measureTextWidth(container: HTMLElement, text: string, source: HTMLElement) {\n const computed = window.getComputedStyle(source)\n const probe = document.createElement(\"span\")\n probe.textContent = text || \"\"\n probe.style.position = \"absolute\"\n probe.style.visibility = \"hidden\"\n probe.style.pointerEvents = \"none\"\n probe.style.display = \"inline-block\"\n probe.style.width = \"auto\"\n probe.style.maxWidth = \"none\"\n probe.style.whiteSpace = \"nowrap\"\n probe.style.fontFamily = computed.fontFamily\n probe.style.fontSize = computed.fontSize\n probe.style.fontWeight = computed.fontWeight\n probe.style.fontStyle = computed.fontStyle\n probe.style.letterSpacing = computed.letterSpacing\n probe.style.fontVariant = computed.fontVariant\n probe.style.textTransform = computed.textTransform\n probe.style.lineHeight = computed.lineHeight\n container.appendChild(probe)\n const width = Math.ceil(probe.getBoundingClientRect().width)\n probe.remove()\n return width\n}\n\nfunction computeCompactWidth(\n container: HTMLElement,\n entries: Array<{ text: string; source: HTMLElement }>,\n maxWidthPx = 40,\n) {\n const measuredLabelWidthPx = entries.reduce((max, entry) => {\n return Math.max(max, measureTextWidth(container, entry.text, entry.source))\n }, 0)\n const fallbackTextLength = entries.reduce((max, entry) => Math.max(max, entry.text.length), 1)\n const fallbackWidthPx = Math.round(fallbackTextLength * 7 + 4)\n return Math.max(2, Math.min(maxWidthPx, measuredLabelWidthPx > 0 ? measuredLabelWidthPx + 2 : fallbackWidthPx))\n}\n\nfunction applyCompactUnifiedGutter(container: HTMLElement, wrap: boolean) {\n const tableWrapper = container.querySelector<HTMLElement>(\".unified-diff-table-wrapper\")\n const table = container.querySelector<HTMLTableElement>(\".unified-diff-table\")\n const numberCol = container.querySelector<HTMLTableColElement>(\".unified-diff-table-num-col\")\n const gutterRows = container.querySelectorAll<HTMLElement>(\".diff-line-num\")\n const hunkGutters = container.querySelectorAll<HTMLElement>(\".diff-line-hunk-action, .diff-line-widget-wrapper, .diff-line-extend-wrapper\")\n const entries: Array<{ gutter: HTMLElement; label: HTMLElement; text: string }> = []\n\n if (table) {\n if (wrap) {\n table.classList.add(\"table-fixed\")\n table.style.tableLayout = \"fixed\"\n table.style.width = \"100%\"\n table.style.minWidth = \"100%\"\n } else {\n table.classList.remove(\"table-fixed\")\n table.style.tableLayout = \"auto\"\n table.style.width = \"max-content\"\n table.style.minWidth = \"100%\"\n }\n }\n\n gutterRows.forEach((gutter) => {\n const oldSpan = gutter.querySelector<HTMLElement>(\"[data-line-old-num]\")\n const newSpan = gutter.querySelector<HTMLElement>(\"[data-line-new-num]\")\n const spacer = gutter.querySelector<HTMLElement>(\".shrink-0\")\n const flexWrapper = gutter.querySelector<HTMLElement>(\":scope > .flex\")\n const currentLabel = gutter.querySelector<HTMLElement>(\":scope > .tool-call-diff-compact-line-number\")\n\n const oldText = oldSpan?.textContent?.trim() ?? \"\"\n const newText = newSpan?.textContent?.trim() ?? \"\"\n const hasUsableNew = newText.length > 0 && newText !== \"0\"\n const hasUsableOld = oldText.length > 0 && oldText !== \"0\"\n const visibleText = hasUsableNew ? newText : hasUsableOld ? oldText : newText || oldText\n\n if (flexWrapper) flexWrapper.style.display = \"none\"\n if (spacer) spacer.style.display = \"none\"\n if (oldSpan) { oldSpan.style.display = \"none\"; oldSpan.style.width = \"auto\" }\n if (newSpan) { newSpan.style.display = \"none\"; newSpan.style.width = \"auto\" }\n\n gutter.style.paddingLeft = \"1px\"\n gutter.style.paddingRight = \"1px\"\n gutter.style.textAlign = \"left\"\n\n const label = currentLabel ?? document.createElement(\"span\")\n label.className = \"tool-call-diff-compact-line-number\"\n label.textContent = visibleText\n label.setAttribute(\"aria-hidden\", visibleText ? \"false\" : \"true\")\n if (!currentLabel) gutter.appendChild(label)\n\n entries.push({ gutter, label, text: visibleText })\n })\n\n const gutterWidthPx = computeCompactWidth(container, entries.map((entry) => ({ text: entry.text, source: entry.label })))\n const gutterWidth = `${gutterWidthPx}px`\n const compactAsideWidth = `${Math.max(8, gutterWidthPx - 10)}px`\n\n if (tableWrapper) {\n tableWrapper.style.setProperty(\"--diff-aside-width\", compactAsideWidth)\n tableWrapper.style.setProperty(\"--diff-aside-width--\", compactAsideWidth)\n }\n if (numberCol) {\n numberCol.style.width = gutterWidth\n }\n\n entries.forEach(({ gutter, label }) => {\n gutter.style.width = gutterWidth\n gutter.style.minWidth = gutterWidth\n gutter.style.maxWidth = gutterWidth\n label.style.width = \"auto\"\n label.style.maxWidth = \"none\"\n })\n\n hunkGutters.forEach((gutter) => {\n gutter.style.width = gutterWidth\n gutter.style.minWidth = gutterWidth\n gutter.style.maxWidth = gutterWidth\n gutter.style.paddingLeft = \"0\"\n gutter.style.paddingRight = \"0\"\n })\n}\n\nfunction applyCompactSplitGutter(container: HTMLElement) {\n const oldWrapper = container.querySelector<HTMLElement>(\".old-diff-table-wrapper\")\n const newWrapper = container.querySelector<HTMLElement>(\".new-diff-table-wrapper\")\n const numberCells = Array.from(container.querySelectorAll<HTMLElement>(\".diff-line-old-num, .diff-line-new-num\"))\n const hunkActions = Array.from(container.querySelectorAll<HTMLElement>(\".diff-line-hunk-action, .diff-line-widget-wrapper, .diff-line-extend-wrapper\"))\n const numberSpans = numberCells\n .map((cell) => ({ cell, span: cell.querySelector<HTMLElement>(\"[data-line-num]\") }))\n .filter((entry): entry is { cell: HTMLElement; span: HTMLElement } => Boolean(entry.span))\n\n const gutterWidthPx = computeCompactWidth(\n container,\n numberSpans.map(({ span }) => ({ text: span.textContent?.trim() ?? \"\", source: span })),\n 64,\n )\n const gutterWidth = `${gutterWidthPx}px`\n\n ;[oldWrapper, newWrapper].forEach((wrapper) => {\n if (wrapper) {\n wrapper.style.setProperty(\"--diff-aside-width\", gutterWidth)\n }\n })\n\n numberCells.forEach((cell) => {\n cell.style.width = gutterWidth\n cell.style.minWidth = gutterWidth\n cell.style.maxWidth = gutterWidth\n cell.style.paddingLeft = \"2px\"\n cell.style.paddingRight = \"2px\"\n cell.style.textAlign = \"left\"\n cell.style.whiteSpace = \"nowrap\"\n cell.style.overflowWrap = \"normal\"\n cell.style.wordBreak = \"normal\"\n })\n\n numberSpans.forEach(({ span }) => {\n span.style.whiteSpace = \"nowrap\"\n span.style.overflowWrap = \"normal\"\n span.style.wordBreak = \"normal\"\n })\n\n hunkActions.forEach((cell) => {\n cell.style.width = gutterWidth\n cell.style.minWidth = gutterWidth\n cell.style.maxWidth = gutterWidth\n cell.style.paddingLeft = \"0\"\n cell.style.paddingRight = \"0\"\n })\n}\n\nfunction applyCompactDiffLayout(container: HTMLElement, mode: DiffViewMode, wrap = false) {\n if (mode === \"unified\") {\n applyCompactUnifiedGutter(container, wrap)\n return\n }\n if (mode === \"split\") {\n applyCompactSplitGutter(container)\n }\n}\n\nexport function ToolCallDiffViewer(props: ToolCallDiffViewerProps) {\n const diffData = createMemo<DiffData | null>(() => {\n const normalized = normalizeDiffText(props.diffText)\n if (!normalized) {\n return null\n }\n \n const language = getLanguageFromPath(props.filePath) || \"text\"\n const fileName = props.filePath || \"diff\"\n \n return {\n oldFile: {\n fileName,\n fileLang: (language || \"text\") as DiffHighlighterLang | null,\n },\n newFile: {\n fileName,\n fileLang: (language || \"text\") as DiffHighlighterLang | null,\n },\n hunks: [normalized],\n }\n })\n \n let diffContainerRef: HTMLDivElement | undefined\n let lastCapturedKey: string | undefined\n \n const contextKey = createMemo(() => {\n const data = diffData()\n if (!data) return \"\"\n return `${props.theme}|${props.mode}|${props.wrap ? \"wrap\" : \"nowrap\"}|${props.diffText}`\n })\n \n createEffect(() => {\n const cachedHtml = props.cachedHtml\n if (cachedHtml) {\n if (diffContainerRef) {\n applyCompactDiffLayout(diffContainerRef, props.mode, Boolean(props.wrap))\n }\n // When we are given cached HTML, we rely on the caller's cache\n // and simply notify once rendered.\n props.onRendered?.()\n return\n }\n \n const key = contextKey()\n if (!key) return\n if (!diffContainerRef) return\n if (lastCapturedKey === key) return\n\n requestAnimationFrame(() => {\n if (!diffContainerRef) return\n applyCompactDiffLayout(diffContainerRef, props.mode, Boolean(props.wrap))\n const markup = diffContainerRef.innerHTML\n if (!markup) return\n lastCapturedKey = key\n if (props.cacheEntryParams) {\n setCacheEntry(props.cacheEntryParams, {\n text: props.diffText,\n html: markup,\n theme: props.theme,\n mode: props.mode,\n wrap: props.wrap,\n })\n }\n props.onRendered?.()\n })\n })\n\n\n return (\n <div class=\"tool-call-diff-viewer\">\n <Show\n when={props.cachedHtml}\n fallback={\n <div ref={diffContainerRef}>\n <Show\n when={diffData()}\n fallback={<pre class=\"tool-call-diff-fallback\">{props.diffText}</pre>}\n >\n {(data) => (\n <ErrorBoundary fallback={(error) => {\n log.warn(\"Failed to render diff view\", error)\n return <pre class=\"tool-call-diff-fallback\">{props.diffText}</pre>\n }}>\n <DiffView\n data={data()}\n diffViewMode={props.mode === \"split\" ? DiffModeEnum.Split : DiffModeEnum.Unified}\n diffViewTheme={props.theme}\n diffViewHighlight\n diffViewWrap={Boolean(props.wrap)}\n diffViewFontSize={13}\n />\n </ErrorBoundary>\n )}\n </Show>\n </div>\n }\n >\n <div ref={diffContainerRef} innerHTML={props.cachedHtml} />\n </Show>\n </div>\n )\n}\n"],"names":["log","getLogger","disableCache","measureTextWidth","container","text","source","computed","window","getComputedStyle","probe","document","createElement","textContent","style","position","visibility","pointerEvents","display","width","maxWidth","whiteSpace","fontFamily","fontSize","fontWeight","fontStyle","letterSpacing","fontVariant","textTransform","lineHeight","appendChild","Math","ceil","getBoundingClientRect","remove","computeCompactWidth","entries","maxWidthPx","measuredLabelWidthPx","reduce","max","entry","fallbackTextLength","length","fallbackWidthPx","round","min","applyCompactUnifiedGutter","wrap","tableWrapper","querySelector","table","numberCol","gutterRows","querySelectorAll","hunkGutters","classList","add","tableLayout","minWidth","forEach","gutter","oldSpan","newSpan","spacer","flexWrapper","currentLabel","oldText","trim","newText","hasUsableNew","hasUsableOld","visibleText","paddingLeft","paddingRight","textAlign","label","className","setAttribute","push","gutterWidthPx","map","gutterWidth","compactAsideWidth","setProperty","applyCompactSplitGutter","oldWrapper","newWrapper","numberCells","Array","from","hunkActions","numberSpans","cell","span","filter","Boolean","wrapper","overflowWrap","wordBreak","applyCompactDiffLayout","mode","ToolCallDiffViewer","props","diffData","createMemo","normalized","normalizeDiffText","diffText","language","getLanguageFromPath","filePath","fileName","oldFile","fileLang","newFile","hunks","diffContainerRef","lastCapturedKey","contextKey","theme","createEffect","cachedHtml","onRendered","key","requestAnimationFrame","markup","innerHTML","cacheEntryParams","setCacheEntry","html","_el$","_tmpl$2","_$insert","_$createComponent","Show","when","fallback","_el$3","_tmpl$","_ref$2","_$use","_el$4","_tmpl$3","children","data","ErrorBoundary","error","warn","_el$5","DiffView","diffViewMode","_$memo","DiffModeEnum","Split","Unified","diffViewTheme","diffViewHighlight","diffViewWrap","diffViewFontSize","_el$2","_ref$","_$effect"],"mappings":"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"}
|