@pierre/diffs 1.0.6 → 1.1.0-beta.1
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/dist/components/File.d.ts +4 -2
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +80 -34
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +50 -28
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +222 -80
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts +1 -0
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +10 -6
- package/dist/components/FileStream.js.map +1 -1
- package/dist/components/web-components.d.ts.map +1 -1
- package/dist/components/web-components.js +1 -1
- package/dist/components/web-components.js.map +1 -1
- package/dist/constants.d.ts +8 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -1
- package/dist/constants.js.map +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.js.map +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
- package/dist/highlighter/languages/resolveLanguages.js +1 -1
- package/dist/highlighter/languages/resolveLanguages.js.map +1 -1
- package/dist/highlighter/shared_highlighter.js +1 -1
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
- package/dist/index.d.ts +19 -10
- package/dist/index.js +14 -5
- package/dist/managers/LineSelectionManager.d.ts.map +1 -1
- package/dist/managers/LineSelectionManager.js +8 -9
- package/dist/managers/LineSelectionManager.js.map +1 -1
- package/dist/managers/ScrollSyncManager.d.ts +1 -0
- package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
- package/dist/managers/ScrollSyncManager.js +14 -6
- package/dist/managers/ScrollSyncManager.js.map +1 -1
- package/dist/react/MultiFileDiff.js +2 -2
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/utils/renderDiffChildren.d.ts +4 -4
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.js +3 -3
- package/dist/react/utils/renderDiffChildren.js.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts +7 -6
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +263 -337
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +1 -0
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +11 -4
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/ssr/index.d.ts +2 -2
- package/dist/style.js +1 -1
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +247 -43
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/areDiffLineAnnotationsEqual.d.ts +7 -0
- package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -0
- package/dist/utils/areDiffLineAnnotationsEqual.js +8 -0
- package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -0
- package/dist/utils/areHunkDataEqual.d.ts +7 -0
- package/dist/utils/areHunkDataEqual.d.ts.map +1 -0
- package/dist/utils/areHunkDataEqual.js +8 -0
- package/dist/utils/areHunkDataEqual.js.map +1 -0
- package/dist/utils/areLineAnnotationsEqual.d.ts +7 -0
- package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -0
- package/dist/utils/areLineAnnotationsEqual.js +8 -0
- package/dist/utils/areLineAnnotationsEqual.js.map +1 -0
- package/dist/utils/arePrePropertiesEqual.d.ts +7 -0
- package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -0
- package/dist/utils/arePrePropertiesEqual.js +9 -0
- package/dist/utils/arePrePropertiesEqual.js.map +1 -0
- package/dist/utils/areRenderRangesEqual.d.ts +7 -0
- package/dist/utils/areRenderRangesEqual.d.ts.map +1 -0
- package/dist/utils/areRenderRangesEqual.js +9 -0
- package/dist/utils/areRenderRangesEqual.js.map +1 -0
- package/dist/utils/areVirtualWindowSpecsEqual.d.ts +7 -0
- package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -0
- package/dist/utils/areVirtualWindowSpecsEqual.js +9 -0
- package/dist/utils/areVirtualWindowSpecsEqual.js.map +1 -0
- package/dist/utils/areWorkerStatsEqual.d.ts +8 -0
- package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -0
- package/dist/utils/areWorkerStatsEqual.js +9 -0
- package/dist/utils/areWorkerStatsEqual.js.map +1 -0
- package/dist/utils/createTransformerWithState.js +1 -1
- package/dist/utils/createTransformerWithState.js.map +1 -1
- package/dist/utils/createWindowFromScrollPosition.d.ts +22 -0
- package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -0
- package/dist/utils/createWindowFromScrollPosition.js +26 -0
- package/dist/utils/createWindowFromScrollPosition.js.map +1 -0
- package/dist/utils/diffAcceptRejectHunk.js +36 -21
- package/dist/utils/diffAcceptRejectHunk.js.map +1 -1
- package/dist/utils/formatCSSVariablePrefix.d.ts +1 -1
- package/dist/utils/formatCSSVariablePrefix.js +2 -2
- package/dist/utils/formatCSSVariablePrefix.js.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.js +12 -12
- package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
- package/dist/utils/getOrCreateCodeNode.d.ts +14 -0
- package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -0
- package/dist/utils/getOrCreateCodeNode.js +13 -0
- package/dist/utils/getOrCreateCodeNode.js.map +1 -0
- package/dist/utils/getTotalLineCountFromHunks.js +1 -1
- package/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
- package/dist/utils/hast_utils.d.ts +2 -1
- package/dist/utils/hast_utils.d.ts.map +1 -1
- package/dist/utils/hast_utils.js +10 -1
- package/dist/utils/hast_utils.js.map +1 -1
- package/dist/utils/isDefaultRenderRange.d.ts +7 -0
- package/dist/utils/isDefaultRenderRange.d.ts.map +1 -0
- package/dist/utils/isDefaultRenderRange.js +8 -0
- package/dist/utils/isDefaultRenderRange.js.map +1 -0
- package/dist/utils/iterateOverDiff.d.ts +39 -0
- package/dist/utils/iterateOverDiff.d.ts.map +1 -0
- package/dist/utils/iterateOverDiff.js +356 -0
- package/dist/utils/iterateOverDiff.js.map +1 -0
- package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
- package/dist/utils/parseDiffFromFile.js +8 -6
- package/dist/utils/parseDiffFromFile.js.map +1 -1
- package/dist/utils/parsePatchFiles.d.ts +15 -3
- package/dist/utils/parsePatchFiles.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.js +207 -158
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/processLine.js +4 -3
- package/dist/utils/processLine.js.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.d.ts +7 -2
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +151 -229
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +2 -2
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/setWrapperNodeProps.d.ts +3 -7
- package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
- package/dist/utils/setWrapperNodeProps.js +1 -1
- package/dist/utils/setWrapperNodeProps.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts +9 -2
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +124 -45
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/types.d.ts +7 -0
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/worker-portable.js +652 -260
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +529 -249
- package/dist/worker/worker.js.map +1 -1
- package/package.json +21 -2
- package/dist/utils/createCodeNode.d.ts +0 -12
- package/dist/utils/createCodeNode.d.ts.map +0 -1
- package/dist/utils/createCodeNode.js +0 -12
- package/dist/utils/createCodeNode.js.map +0 -1
package/dist/style.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../src/style.css"],"sourcesContent":["@layer base, theme, unsafe;\n\n@layer base {\n :host {\n --diffs-bg: #fff;\n --diffs-fg: #000;\n --diffs-font-fallback:\n 'SF Mono', Monaco, Consolas, 'Ubuntu Mono', 'Liberation Mono',\n 'Courier New', monospace;\n --diffs-header-font-fallback:\n system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue',\n 'Noto Sans', 'Liberation Sans', Arial, sans-serif;\n\n --diffs-mixer: light-dark(black, white);\n --diffs-gap-fallback: 8px;\n\n /*\n // Available CSS Color Overrides\n --diffs-bg-buffer-override\n --diffs-bg-hover-override\n --diffs-bg-context-override\n --diffs-bg-separator-override\n\n --diffs-fg-number-override\n --diffs-fg-number-addition-override\n --diffs-fg-number-deletion-override\n\n --diffs-deletion-color-override\n --diffs-addition-color-override\n --diffs-modified-color-override\n\n --diffs-bg-deletion-override\n --diffs-bg-deletion-number-override\n --diffs-bg-deletion-hover-override\n --diffs-bg-deletion-emphasis-override\n\n --diffs-bg-addition-override\n --diffs-bg-addition-number-override\n --diffs-bg-addition-hover-override\n --diffs-bg-addition-emphasis-override\n\n // Line Selection Color Overrides (for enableLineSelection)\n --diffs-selection-color-override\n --diffs-bg-selection-override\n --diffs-bg-selection-number-override\n --diffs-bg-selection-background-override\n --diffs-bg-selection-number-background-override\n\n // Available CSS Layout Overrides\n --diffs-gap-inline\n --diffs-gap-block\n --diffs-gap-style\n --diffs-tab-size\n */\n\n color-scheme: light dark;\n display: block;\n font-family: var(\n --diffs-header-font-family,\n var(--diffs-header-font-fallback)\n );\n font-size: var(--diffs-font-size, 13px);\n line-height: var(--diffs-line-height, 20px);\n font-feature-settings: var(--diffs-font-features);\n }\n\n /* NOTE(mdo): Some semantic HTML elements (e.g. `pre`, `code`) have default\n * user-agent styles. These must be overridden to use our custom styles. */\n pre,\n code,\n [data-error-wrapper] {\n margin: 0;\n padding: 0;\n display: block;\n outline: none;\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\n }\n\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n [data-icon-sprite] {\n display: none;\n }\n\n /* NOTE(mdo): Headers and separators are within pre/code, so we need to reset\n * their font-family explicitly. */\n [data-diffs-header],\n [data-separator] {\n font-family: var(\n --diffs-header-font-family,\n var(--diffs-header-font-fallback)\n );\n }\n\n [data-file-info] {\n padding: 10px;\n font-weight: 700;\n color: var(--fg);\n /* NOTE(amadeus): we cannot use 'in oklch' because current versions of cursor\n * and vscode use an older build of chrome that appears to have a bug with\n * color-mix and 'in oklch', so use 'in lab' instead */\n background-color: color-mix(in lab, var(--bg) 98%, var(--fg));\n border-block: 1px solid color-mix(in lab, var(--bg) 95%, var(--fg));\n }\n\n [data-diffs-header],\n [data-diffs],\n [data-error-wrapper] {\n --diffs-bg: light-dark(var(--diffs-light-bg), var(--diffs-dark-bg));\n /* NOTE(amadeus): we cannot use 'in oklch' because current versions of cursor\n * and vscode use an older build of chrome that appears to have a bug with\n * color-mix and 'in oklch', so use 'in lab' instead */\n --diffs-bg-buffer: var(\n --diffs-bg-buffer-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))\n )\n );\n --diffs-bg-hover: var(\n --diffs-bg-hover-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 97%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 91%, var(--diffs-mixer))\n )\n );\n --diffs-bg-context: var(\n --diffs-bg-context-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))\n )\n );\n --diffs-bg-separator: var(\n --diffs-bg-separator-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))\n )\n );\n\n --diffs-fg: light-dark(var(--diffs-light), var(--diffs-dark));\n --diffs-fg-number: var(\n --diffs-fg-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)),\n color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))\n )\n );\n\n --diffs-deletion-base: var(\n --diffs-deletion-color-override,\n light-dark(\n var(\n --diffs-light-deletion-color,\n var(--diffs-deletion-color, rgb(255, 0, 0))\n ),\n var(\n --diffs-dark-deletion-color,\n var(--diffs-deletion-color, rgb(255, 0, 0))\n )\n )\n );\n --diffs-addition-base: var(\n --diffs-addition-color-override,\n light-dark(\n var(\n --diffs-light-addition-color,\n var(--diffs-addition-color, rgb(0, 255, 0))\n ),\n var(\n --diffs-dark-addition-color,\n var(--diffs-addition-color, rgb(0, 255, 0))\n )\n )\n );\n --diffs-modified-base: var(\n --diffs-modified-color-override,\n light-dark(\n var(\n --diffs-light-modified-color,\n var(--diffs-modified-color, rgb(0, 0, 255))\n ),\n var(\n --diffs-dark-modified-color,\n var(--diffs-modified-color, rgb(0, 0, 255))\n )\n )\n );\n\n /* NOTE(amadeus): we cannot use 'in oklch' because current versions of cursor\n * and vscode use an older build of chrome that appears to have a bug with\n * color-mix and 'in oklch', so use 'in lab' instead */\n --diffs-bg-deletion: var(\n --diffs-bg-deletion-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)),\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))\n )\n );\n --diffs-bg-deletion-number: var(\n --diffs-bg-deletion-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 91%, var(--diffs-deletion-base)),\n color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-deletion-base))\n )\n );\n --diffs-bg-deletion-hover: var(\n --diffs-bg-deletion-hover-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base)),\n color-mix(in lab, var(--diffs-bg) 75%, var(--diffs-deletion-base))\n )\n );\n --diffs-bg-deletion-emphasis: var(\n --diffs-bg-deletion-emphasis-override,\n light-dark(\n rgb(from var(--diffs-deletion-base) r g b / 0.15),\n rgb(from var(--diffs-deletion-base) r g b / 0.2)\n )\n );\n\n --diffs-bg-addition: var(\n --diffs-bg-addition-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)),\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))\n )\n );\n --diffs-bg-addition-number: var(\n --diffs-bg-addition-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 91%, var(--diffs-addition-base)),\n color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-addition-base))\n )\n );\n --diffs-bg-addition-hover: var(\n --diffs-bg-addition-hover-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base)),\n color-mix(in lab, var(--diffs-bg) 70%, var(--diffs-addition-base))\n )\n );\n --diffs-bg-addition-emphasis: var(\n --diffs-bg-addition-emphasis-override,\n light-dark(\n rgb(from var(--diffs-addition-base) r g b / 0.15),\n rgb(from var(--diffs-addition-base) r g b / 0.2)\n )\n );\n\n --diffs-selection-base: var(--diffs-modified-base);\n --diffs-selection-number-fg: light-dark(\n color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer))\n );\n --diffs-bg-selection: var(\n --diffs-bg-selection-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 82%, var(--diffs-selection-base)),\n color-mix(in lab, var(--diffs-bg) 75%, var(--diffs-selection-base))\n )\n );\n --diffs-bg-selection-number: var(\n --diffs-bg-selection-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 75%, var(--diffs-selection-base)),\n color-mix(in lab, var(--diffs-bg) 60%, var(--diffs-selection-base))\n )\n );\n\n background-color: var(--diffs-bg);\n color: var(--diffs-fg);\n }\n\n [data-diffs] {\n --diffs-code-grid: minmax(min-content, max-content) 1fr;\n\n [data-column-content] span {\n color: light-dark(var(--diffs-light), var(--diffs-dark));\n font-weight: var(--diffs-light-font-weight);\n font-style: var(--diffs-light-font-style);\n }\n }\n\n [data-column-content] {\n background-color: var(--diffs-line-bg, 'transparent');\n grid-column: 2 / 3;\n }\n\n [data-diffs][data-dehydrated] {\n --diffs-code-grid: minmax(min-content, max-content) minmax(0, 1fr);\n }\n\n @media (prefers-color-scheme: dark) {\n [data-diffs-header],\n [data-diffs] {\n color-scheme: dark;\n }\n\n [data-diffs] [data-column-content] span {\n font-weight: var(--diffs-dark-font-weight);\n font-style: var(--diffs-dark-font-style);\n }\n }\n\n [data-diffs-header][data-theme-type='light'],\n [data-diffs][data-theme-type='light'] {\n color-scheme: light;\n }\n\n [data-diffs][data-theme-type='light'] [data-column-content] span {\n font-weight: var(--diffs-light-font-weight);\n font-style: var(--diffs-light-font-style);\n }\n\n [data-diffs-header][data-theme-type='dark'],\n [data-diffs][data-theme-type='dark'] {\n color-scheme: dark;\n }\n\n [data-diffs][data-theme-type='dark'] [data-column-content] span {\n font-weight: var(--diffs-dark-font-weight);\n font-style: var(--diffs-dark-font-style);\n }\n\n [data-type='split'][data-overflow='wrap'] {\n display: grid;\n grid-auto-flow: dense;\n grid-template-columns: repeat(2, var(--diffs-code-grid));\n }\n\n [data-type='split'][data-overflow='scroll'] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2px;\n }\n\n [data-code] {\n display: block;\n display: grid;\n grid-auto-flow: dense;\n grid-template-columns: var(--diffs-code-grid);\n overflow: scroll clip;\n overscroll-behavior-x: none;\n tab-size: var(--diffs-tab-size, 2);\n align-self: flex-start;\n padding-top: var(--diffs-gap-block, var(--diffs-gap-fallback));\n padding-bottom: max(\n 0px,\n calc(var(--diffs-gap-block, var(--diffs-gap-fallback)) - 6px)\n );\n }\n\n [data-code]::-webkit-scrollbar {\n width: 0;\n height: 6px;\n }\n\n [data-code]::-webkit-scrollbar-track {\n background: transparent;\n }\n\n [data-code]::-webkit-scrollbar-thumb {\n background-color: transparent;\n border: 1px solid transparent;\n background-clip: content-box;\n border-radius: 3px;\n }\n\n [data-diffs]:hover [data-code]::-webkit-scrollbar-thumb {\n background-color: var(--diffs-bg-context);\n }\n\n [data-code]::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n\n /*\n * If we apply these rules globally it will mean that webkit will opt into the\n * standards compliant version of custom css scrollbars, which we do not want\n * because the custom stuff will look better\n */\n @supports (-moz-appearance: none) {\n [data-code] {\n scrollbar-width: thin;\n scrollbar-color: var(--diffs-bg-context) transparent;\n padding-bottom: var(--diffs-gap-block, var(--diffs-gap-fallback));\n }\n }\n\n [data-diffs][data-type='split'][data-overflow='wrap'] {\n padding-block: var(--diffs-gap-block, var(--diffs-gap-fallback));\n }\n\n [data-diffs-header] ~ [data-diffs] [data-code],\n [data-diffs-header] ~ [data-diffs][data-overflow='wrap'] {\n padding-top: 0;\n }\n\n [data-type='split'][data-overflow='wrap'] [data-code] {\n display: contents;\n }\n\n [data-line-annotation],\n [data-no-newline],\n [data-line] {\n position: relative;\n display: grid;\n grid-template-columns: subgrid;\n grid-column: 1 / 3;\n }\n\n [data-line-annotation][data-selected-line] {\n background-color: unset;\n\n &::before {\n content: '';\n position: sticky;\n top: 0;\n left: 0;\n display: block;\n border-right: var(--diffs-gap-style, 1px solid var(--diffs-bg));\n background-color: var(--diffs-bg-selection-number);\n }\n\n [data-annotation-content] {\n background-color: var(--diffs-bg-selection);\n }\n }\n\n [data-interactive-lines] [data-line] {\n cursor: pointer;\n }\n\n [data-buffer] {\n position: sticky;\n left: 0;\n grid-column: 1 / 3;\n user-select: none;\n /* We multiply by 1.414 (√2) to better approximate the diagonal repeat distance */\n background-image: repeating-linear-gradient(\n -45deg,\n transparent,\n transparent calc(3px * 1.414),\n var(--diffs-bg-buffer) calc(3px * 1.414),\n var(--diffs-bg-buffer) calc(4px * 1.414)\n );\n min-height: 1lh;\n width: var(--diffs-column-width, auto);\n }\n\n [data-separator] {\n grid-column: span 2;\n }\n\n [data-separator='metadata'],\n [data-separator]:empty {\n min-height: 4px;\n background-color: var(--diffs-bg-separator);\n display: grid;\n grid-template-columns: subgrid;\n }\n\n [data-separator-wrapper] {\n user-select: none;\n fill: currentColor;\n overflow: hidden;\n }\n\n [data-separator='metadata'] [data-separator-wrapper] {\n grid-column: 2 / 3;\n width: var(--diffs-column-content-width);\n position: sticky;\n left: var(--diffs-column-number-width);\n padding: 4px 1ch;\n }\n\n [data-separator='line-info'] {\n margin-block: var(--diffs-gap-block, var(--diffs-gap-fallback));\n }\n\n [data-separator='line-info'][data-separator-first] {\n margin-top: 0;\n }\n\n [data-separator='line-info'][data-separator-last] {\n margin-bottom: 0;\n }\n\n [data-separator='line-info'] [data-separator-wrapper] {\n position: sticky;\n display: flex;\n align-items: center;\n gap: 2px;\n width: auto;\n width: calc(var(--diffs-column-width) - var(--diffs-gap-fallback));\n border-radius: 6px;\n }\n\n @media (pointer: fine) {\n [data-separator-wrapper][data-separator-multi-button] {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n grid-template-rows: 15px 15px;\n\n [data-expand-button] {\n height: 15px;\n }\n }\n\n [data-type='split']\n [data-additions]\n [data-separator-wrapper][data-separator-multi-button] {\n grid-template-columns: minmax(0, 1fr) auto;\n }\n\n [data-type='split'] [data-additions] [data-expand-button] {\n grid-column: 2;\n }\n\n [data-type='split'] [data-additions] [data-separator-content] {\n grid-column: 1;\n }\n }\n\n [data-expand-button],\n [data-separator-content] {\n display: flex;\n align-items: center;\n background-color: var(--diffs-bg-separator);\n }\n\n [data-expand-button] {\n justify-content: center;\n flex-shrink: 0;\n cursor: pointer;\n width: 32px;\n height: 32px;\n opacity: 0.65;\n }\n\n [data-hover-slot] {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n display: flex;\n justify-content: flex-end;\n }\n\n @media (pointer: fine) {\n [data-expand-button]:hover {\n opacity: 1;\n }\n\n [data-line]:hover {\n z-index: 2;\n }\n }\n\n [data-expand-up] [data-icon] {\n transform: scaleY(-1);\n }\n\n [data-separator-content] {\n flex: 1 1 auto;\n padding: 0 1ch;\n height: 32px;\n opacity: 0.65;\n overflow: hidden;\n justify-content: flex-start;\n\n grid-column: 2;\n grid-row: 1 / -1;\n }\n\n [data-unmodified-lines] {\n display: block;\n overflow: hidden;\n min-width: 0;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 0 1 auto;\n }\n\n [data-type='split'] [data-additions] [data-separator-content] {\n justify-content: flex-end;\n }\n\n [data-type='file']\n [data-code]\n [data-separator='line-info']\n [data-separator-wrapper] {\n left: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n margin-left: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n margin-right: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n width: calc(\n var(--diffs-column-width) -\n (var(--diffs-gap-inline, var(--diffs-gap-fallback)) * 2)\n );\n }\n\n [data-type='split']\n [data-deletions]\n [data-separator='line-info']\n [data-separator-wrapper] {\n left: var(--diffs-gap-fallback);\n margin-left: var(--diffs-gap-fallback);\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n [data-type='split']\n [data-additions]\n [data-separator='line-info']\n [data-separator-wrapper] {\n left: 0;\n margin-right: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n flex-direction: row-reverse;\n }\n\n [data-line] {\n background-color: var(--diffs-bg);\n color: var(--diffs-fg);\n }\n\n [data-type='split'][data-overflow='wrap'] [data-deletions] {\n [data-line-annotation],\n [data-buffer],\n [data-line],\n [data-separator] {\n grid-column: 1 / 3;\n }\n }\n\n [data-line-annotation] {\n min-height: var(--diffs-annotation-min-height, 0);\n background-color: var(--diffs-bg-context);\n z-index: 3;\n }\n\n [data-type='split'][data-overflow='wrap'] [data-additions] {\n [data-line-annotation],\n [data-buffer],\n [data-line],\n [data-separator] {\n margin-left: 2px;\n grid-column: 3 / 5;\n }\n }\n\n [data-separator='custom'] {\n display: grid;\n grid-template-columns: subgrid;\n }\n\n [data-column-content],\n [data-column-number] {\n position: relative;\n padding-inline: 1ch;\n }\n\n [data-indicators='classic'] [data-column-content] {\n padding-inline-start: 2ch;\n }\n\n [data-indicators='classic'] {\n [data-line-type='change-addition'] [data-column-content]::before,\n [data-line-type='change-deletion'] [data-column-content]::before {\n display: inline-block;\n width: 1ch;\n height: 1lh;\n position: absolute;\n top: 0;\n left: 0;\n user-select: none;\n }\n\n [data-line-type='change-addition'] [data-column-content]::before {\n content: '+';\n color: var(--diffs-addition-base);\n }\n\n [data-line-type='change-deletion'] [data-column-content]::before {\n content: '-';\n color: var(--diffs-deletion-base);\n }\n }\n\n [data-indicators='bars'] {\n [data-line-type='change-deletion'] [data-column-number]::before,\n [data-line-type='change-addition'] [data-column-number]::before {\n content: '';\n display: block;\n width: 4px;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n user-select: none;\n }\n\n [data-line-type='change-deletion'] [data-column-number]::before {\n background-image: linear-gradient(\n 0deg,\n var(--diffs-bg-deletion) 50%,\n var(--diffs-deletion-base) 50%\n );\n background-repeat: repeat;\n background-size: 2px 2px;\n background-size: calc(1lh / round(1lh / 2px)) calc(1lh / round(1lh / 2px));\n }\n\n [data-line-type='change-addition'] [data-column-number]::before {\n background-color: var(--diffs-addition-base);\n }\n }\n\n [data-overflow='wrap'] [data-column-content],\n [data-overflow='wrap'] [data-annotation-content] {\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n [data-overflow='scroll'] [data-column-content] {\n white-space: pre;\n min-height: 1lh;\n }\n\n [data-column-number] {\n grid-column: 1 / 2;\n box-sizing: content-box;\n text-align: right;\n position: sticky;\n left: 0;\n user-select: none;\n background-color: var(--diffs-bg);\n color: var(--diffs-fg-number);\n z-index: 1;\n min-width: var(\n --diffs-min-number-column-width,\n var(--diffs-min-number-column-width-default, 3ch)\n );\n padding-left: 2ch;\n border-right: var(--diffs-gap-style, 1px solid var(--diffs-bg));\n }\n\n [data-disable-line-numbers] {\n &[data-indicators='bars'] [data-column-number] {\n min-width: 4px;\n border-right: var(--diffs-gap-style, 1px solid var(--diffs-bg));\n }\n\n [data-column-number] {\n border-right: none;\n min-width: 0;\n padding: 0;\n }\n\n [data-line-number-content] {\n display: none;\n }\n\n [data-hover-slot] {\n right: unset;\n left: 0;\n justify-content: flex-start;\n }\n\n &[data-indicators='bars'] [data-hover-slot] {\n /* Using 5px here because theres a 1px separator after the bar */\n left: 5px;\n }\n }\n\n [data-interactive-line-numbers] [data-column-number] {\n cursor: pointer;\n }\n\n [data-diff-span] {\n border-radius: 3px;\n box-decoration-break: clone;\n }\n\n [data-line-type='change-addition'] {\n [data-column-number] {\n color: var(\n --diffs-fg-number-addition-override,\n var(--diffs-addition-base)\n );\n }\n\n [data-diff-span] {\n background-color: var(--diffs-bg-addition-emphasis);\n }\n }\n\n [data-line-type='change-deletion'] {\n [data-column-number] {\n color: var(\n --diffs-fg-number-deletion-override,\n var(--diffs-deletion-base)\n );\n }\n\n [data-diff-span] {\n background-color: var(--diffs-bg-deletion-emphasis);\n }\n }\n\n [data-background] [data-line-type='change-addition'] {\n --diffs-line-bg: var(--diffs-bg-addition);\n\n [data-column-number] {\n background-color: var(--diffs-bg-addition-number);\n }\n }\n\n [data-background] [data-line-type='change-deletion'] {\n --diffs-line-bg: var(--diffs-bg-deletion);\n\n [data-column-number] {\n background-color: var(--diffs-bg-deletion-number);\n }\n }\n\n [data-line-type='context-expanded'] {\n --diffs-line-bg: var(--diffs-bg-context);\n\n [data-column-number] {\n background-color: var(--diffs-bg-context);\n }\n }\n\n /* By wrapping hovers in a pointer: fine, we ensure that mobile devices don't\n* require a double click */\n @media (pointer: fine) {\n [data-line]:hover:not([data-selected-line]) {\n [data-column-number],\n [data-column-content] {\n background-color: var(--diffs-bg-hover);\n }\n }\n\n [data-background] [data-line]:hover:not([data-selected-line]) {\n &[data-line-type='change-deletion'] [data-column-number],\n &[data-line-type='change-deletion'] [data-column-content] {\n background-color: var(--diffs-bg-deletion-hover);\n }\n\n &[data-line-type='change-addition'] [data-column-number],\n &[data-line-type='change-addition'] [data-column-content] {\n background-color: var(--diffs-bg-addition-hover);\n }\n }\n }\n\n [data-diffs-header] {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n min-height: calc(\n 1lh + (var(--diffs-gap-block, var(--diffs-gap-fallback)) * 3)\n );\n padding-inline: 16px;\n }\n\n [data-header-content] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n min-width: 0;\n white-space: nowrap;\n }\n\n [data-header-content] [data-prev-name],\n [data-header-content] [data-title] {\n direction: rtl;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n white-space: nowrap;\n }\n\n [data-prev-name] {\n opacity: 0.7;\n }\n\n [data-rename-icon] {\n fill: currentColor;\n flex-shrink: 0;\n flex-grow: 0;\n }\n\n [data-diffs-header] [data-metadata] {\n display: flex;\n align-items: center;\n gap: 1ch;\n white-space: nowrap;\n }\n\n [data-diffs-header] [data-additions-count] {\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\n color: var(--diffs-addition-base);\n }\n\n [data-diffs-header] [data-deletions-count] {\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\n color: var(--diffs-deletion-base);\n }\n\n [data-no-newline] {\n user-select: none;\n\n [data-column-content] {\n opacity: 0.6;\n }\n }\n\n [data-annotation-content] {\n position: sticky;\n left: var(--diffs-column-number-width, 0);\n grid-column: 2 / -1;\n width: var(--diffs-column-content-width, auto);\n align-self: flex-start;\n z-index: 2;\n height: 100%;\n }\n\n /* Undo some of the stuff that the 'pre' tag does */\n [data-annotation-slot] {\n text-wrap-mode: wrap;\n word-break: normal;\n white-space-collapse: collapse;\n }\n\n [data-change-icon] {\n fill: currentColor;\n flex-shrink: 0;\n }\n\n [data-change-icon='change'],\n [data-change-icon='rename-pure'],\n [data-change-icon='rename-changed'] {\n color: var(--diffs-modified-base);\n }\n\n [data-change-icon='new'] {\n color: var(--diffs-addition-base);\n }\n\n [data-change-icon='deleted'] {\n color: var(--diffs-deletion-base);\n }\n\n [data-change-icon='file'] {\n opacity: 0.6;\n }\n\n /* Line selection highlighting */\n [data-line-type='context'][data-selected-line] {\n [data-column-number] {\n color: var(--diffs-selection-number-fg);\n background-color: var(--diffs-bg-selection-number);\n }\n\n [data-column-content] {\n background-color: var(--diffs-bg-selection);\n }\n }\n\n [data-line-type='context-expanded'],\n [data-line-type='change-addition'],\n [data-line-type='change-deletion'] {\n &[data-selected-line] {\n [data-column-content] {\n background-color: light-dark(\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 82%,\n var(--diffs-selection-base)\n ),\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 75%,\n var(--diffs-selection-base)\n )\n );\n }\n\n [data-column-number] {\n color: var(--diffs-selection-number-fg);\n background-color: light-dark(\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 75%,\n var(--diffs-selection-base)\n ),\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 60%,\n var(--diffs-selection-base)\n )\n );\n }\n }\n }\n\n [data-error-wrapper] {\n overflow: auto;\n padding: var(--diffs-gap-block, var(--diffs-gap-fallback))\n var(--diffs-gap-inline, var(--diffs-gap-fallback));\n max-height: 400px;\n scrollbar-width: none;\n\n [data-error-message] {\n font-weight: bold;\n font-size: 18px;\n color: var(--diffs-deletion-base);\n }\n\n [data-error-stack] {\n color: var(--diffs-fg-number);\n }\n }\n}\n"],"mappings":";oBAAA"}
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../src/style.css"],"sourcesContent":["@layer base, theme, unsafe;\n\n@layer base {\n :host {\n --diffs-bg: #fff;\n --diffs-fg: #000;\n --diffs-font-fallback:\n 'SF Mono', Monaco, Consolas, 'Ubuntu Mono', 'Liberation Mono',\n 'Courier New', monospace;\n --diffs-header-font-fallback:\n system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue',\n 'Noto Sans', 'Liberation Sans', Arial, sans-serif;\n\n --diffs-mixer: light-dark(black, white);\n --diffs-gap-fallback: 8px;\n\n /*\n // Available CSS Color Overrides\n --diffs-bg-buffer-override\n --diffs-bg-hover-override\n --diffs-bg-context-override\n --diffs-bg-separator-override\n\n --diffs-fg-number-override\n --diffs-fg-number-addition-override\n --diffs-fg-number-deletion-override\n\n --diffs-deletion-color-override\n --diffs-addition-color-override\n --diffs-modified-color-override\n\n --diffs-bg-deletion-override\n --diffs-bg-deletion-number-override\n --diffs-bg-deletion-hover-override\n --diffs-bg-deletion-emphasis-override\n\n --diffs-bg-addition-override\n --diffs-bg-addition-number-override\n --diffs-bg-addition-hover-override\n --diffs-bg-addition-emphasis-override\n\n // Line Selection Color Overrides (for enableLineSelection)\n --diffs-selection-color-override\n --diffs-bg-selection-override\n --diffs-bg-selection-number-override\n --diffs-bg-selection-background-override\n --diffs-bg-selection-number-background-override\n\n // Available CSS Layout Overrides\n --diffs-gap-inline\n --diffs-gap-block\n --diffs-gap-style\n --diffs-tab-size\n */\n\n color-scheme: light dark;\n display: block;\n font-family: var(\n --diffs-header-font-family,\n var(--diffs-header-font-fallback)\n );\n font-size: var(--diffs-font-size, 13px);\n line-height: var(--diffs-line-height, 20px);\n font-feature-settings: var(--diffs-font-features);\n }\n\n /* NOTE(mdo): Some semantic HTML elements (e.g. `pre`, `code`) have default\n * user-agent styles. These must be overridden to use our custom styles. */\n pre,\n code,\n [data-error-wrapper] {\n isolation: isolate;\n margin: 0;\n padding: 0;\n display: block;\n outline: none;\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\n }\n\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n [data-icon-sprite] {\n display: none;\n }\n\n /* NOTE(mdo): Headers and separators are within pre/code, so we need to reset\n * their font-family explicitly. */\n [data-diffs-header],\n [data-separator] {\n font-family: var(\n --diffs-header-font-family,\n var(--diffs-header-font-fallback)\n );\n }\n\n [data-file-info] {\n padding: 10px;\n font-weight: 700;\n color: var(--fg);\n /* NOTE(amadeus): we cannot use 'in oklch' because current versions of cursor\n * and vscode use an older build of chrome that appears to have a bug with\n * color-mix and 'in oklch', so use 'in lab' instead */\n background-color: color-mix(in lab, var(--bg) 98%, var(--fg));\n border-block: 1px solid color-mix(in lab, var(--bg) 95%, var(--fg));\n }\n\n [data-diffs-header],\n [data-diffs],\n [data-error-wrapper] {\n --diffs-bg: light-dark(var(--diffs-light-bg), var(--diffs-dark-bg));\n /* NOTE(amadeus): we cannot use 'in oklch' because current versions of cursor\n * and vscode use an older build of chrome that appears to have a bug with\n * color-mix and 'in oklch', so use 'in lab' instead */\n --diffs-bg-buffer: var(\n --diffs-bg-buffer-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))\n )\n );\n --diffs-bg-hover: var(\n --diffs-bg-hover-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 97%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 91%, var(--diffs-mixer))\n )\n );\n --diffs-bg-context: var(\n --diffs-bg-context-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))\n )\n );\n --diffs-bg-separator: var(\n --diffs-bg-separator-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))\n )\n );\n\n --diffs-fg: light-dark(var(--diffs-light), var(--diffs-dark));\n --diffs-fg-number: var(\n --diffs-fg-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)),\n color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))\n )\n );\n\n --diffs-deletion-base: var(\n --diffs-deletion-color-override,\n light-dark(\n var(\n --diffs-light-deletion-color,\n var(--diffs-deletion-color, rgb(255, 0, 0))\n ),\n var(\n --diffs-dark-deletion-color,\n var(--diffs-deletion-color, rgb(255, 0, 0))\n )\n )\n );\n --diffs-addition-base: var(\n --diffs-addition-color-override,\n light-dark(\n var(\n --diffs-light-addition-color,\n var(--diffs-addition-color, rgb(0, 255, 0))\n ),\n var(\n --diffs-dark-addition-color,\n var(--diffs-addition-color, rgb(0, 255, 0))\n )\n )\n );\n --diffs-modified-base: var(\n --diffs-modified-color-override,\n light-dark(\n var(\n --diffs-light-modified-color,\n var(--diffs-modified-color, rgb(0, 0, 255))\n ),\n var(\n --diffs-dark-modified-color,\n var(--diffs-modified-color, rgb(0, 0, 255))\n )\n )\n );\n\n /* NOTE(amadeus): we cannot use 'in oklch' because current versions of cursor\n * and vscode use an older build of chrome that appears to have a bug with\n * color-mix and 'in oklch', so use 'in lab' instead */\n --diffs-bg-deletion: var(\n --diffs-bg-deletion-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)),\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))\n )\n );\n --diffs-bg-deletion-number: var(\n --diffs-bg-deletion-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 91%, var(--diffs-deletion-base)),\n color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-deletion-base))\n )\n );\n --diffs-bg-deletion-hover: var(\n --diffs-bg-deletion-hover-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base)),\n color-mix(in lab, var(--diffs-bg) 75%, var(--diffs-deletion-base))\n )\n );\n --diffs-bg-deletion-emphasis: var(\n --diffs-bg-deletion-emphasis-override,\n light-dark(\n rgb(from var(--diffs-deletion-base) r g b / 0.15),\n rgb(from var(--diffs-deletion-base) r g b / 0.2)\n )\n );\n\n --diffs-bg-addition: var(\n --diffs-bg-addition-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)),\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))\n )\n );\n --diffs-bg-addition-number: var(\n --diffs-bg-addition-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 91%, var(--diffs-addition-base)),\n color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-addition-base))\n )\n );\n --diffs-bg-addition-hover: var(\n --diffs-bg-addition-hover-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base)),\n color-mix(in lab, var(--diffs-bg) 70%, var(--diffs-addition-base))\n )\n );\n --diffs-bg-addition-emphasis: var(\n --diffs-bg-addition-emphasis-override,\n light-dark(\n rgb(from var(--diffs-addition-base) r g b / 0.15),\n rgb(from var(--diffs-addition-base) r g b / 0.2)\n )\n );\n\n --diffs-selection-base: var(--diffs-modified-base);\n --diffs-selection-number-fg: light-dark(\n color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)),\n color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer))\n );\n --diffs-bg-selection: var(\n --diffs-bg-selection-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 82%, var(--diffs-selection-base)),\n color-mix(in lab, var(--diffs-bg) 75%, var(--diffs-selection-base))\n )\n );\n --diffs-bg-selection-number: var(\n --diffs-bg-selection-number-override,\n light-dark(\n color-mix(in lab, var(--diffs-bg) 75%, var(--diffs-selection-base)),\n color-mix(in lab, var(--diffs-bg) 60%, var(--diffs-selection-base))\n )\n );\n\n background-color: var(--diffs-bg);\n color: var(--diffs-fg);\n }\n\n [data-diffs] {\n /* This feels a bit crazy to me... so I need to think about it a bit more... */\n --diffs-grid-number-column-width: minmax(min-content, max-content);\n --diffs-code-grid: var(--diffs-grid-number-column-width) 1fr;\n\n [data-column-content] span {\n color: light-dark(\n var(--diffs-token-light, var(--diffs-light)),\n var(--diffs-token-dark, var(--diffs-dark))\n );\n font-weight: var(--diffs-token-light-font-weight, inherit);\n font-style: var(--diffs-token-light-font-style, inherit);\n text-decoration: var(--diffs-token-light-text-decoration, inherit);\n }\n }\n\n /* Since span is a pretty innocuous selector, we need to make sure we don't\n * apply tokenized BG colors to diff-spans */\n [data-column-content] span:not([data-diff-span]) {\n background-color: light-dark(\n var(--diffs-token-light-bg, inherit),\n var(--diffs-token-dark-bg, inherit)\n );\n }\n\n [data-column-content] {\n background-color: var(--diffs-line-bg, 'transparent');\n grid-column: 2 / 3;\n }\n\n [data-diffs][data-dehydrated] {\n --diffs-code-grid: var(--diffs-grid-number-column-width) minmax(0, 1fr);\n }\n\n @media (prefers-color-scheme: dark) {\n [data-diffs-header],\n [data-diffs] {\n color-scheme: dark;\n }\n\n [data-diffs] [data-column-content] span {\n font-weight: var(--diffs-token-dark-font-weight, inherit);\n font-style: var(--diffs-token-dark-font-style, inherit);\n text-decoration: var(--diffs-token-dark-text-decoration, inherit);\n }\n }\n\n [data-diffs-header][data-theme-type='light'],\n [data-diffs][data-theme-type='light'] {\n color-scheme: light;\n }\n\n [data-diffs][data-theme-type='light'] [data-column-content] span {\n font-weight: var(--diffs-token-light-font-weight, inherit);\n font-style: var(--diffs-token-light-font-style, inherit);\n text-decoration: var(--diffs-token-light-text-decoration, inherit);\n }\n\n [data-diffs-header][data-theme-type='dark'],\n [data-diffs][data-theme-type='dark'] {\n color-scheme: dark;\n }\n\n [data-diffs][data-theme-type='dark'] [data-column-content] span {\n font-weight: var(--diffs-token-dark-font-weight, inherit);\n font-style: var(--diffs-token-dark-font-style, inherit);\n text-decoration: var(--diffs-token-dark-text-decoration, inherit);\n }\n\n [data-type='split'][data-overflow='wrap'] {\n display: grid;\n grid-auto-flow: dense;\n grid-template-columns: repeat(2, var(--diffs-code-grid));\n }\n\n [data-type='split'][data-overflow='scroll'] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2px;\n }\n\n [data-code] {\n display: block;\n display: grid;\n grid-auto-flow: dense;\n grid-template-columns: var(--diffs-code-grid);\n overflow: scroll clip;\n overscroll-behavior-x: none;\n tab-size: var(--diffs-tab-size, 2);\n align-self: flex-start;\n padding-top: var(--diffs-gap-block, var(--diffs-gap-fallback));\n padding-bottom: max(\n 0px,\n calc(var(--diffs-gap-block, var(--diffs-gap-fallback)) - 6px)\n );\n }\n\n [data-code]::-webkit-scrollbar {\n width: 0;\n height: 6px;\n }\n\n [data-code]::-webkit-scrollbar-track {\n background: transparent;\n }\n\n [data-code]::-webkit-scrollbar-thumb {\n background-color: transparent;\n border: 1px solid transparent;\n background-clip: content-box;\n border-radius: 3px;\n }\n\n [data-diffs]:hover [data-code]::-webkit-scrollbar-thumb {\n background-color: var(--diffs-bg-context);\n }\n\n [data-code]::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n\n /*\n * If we apply these rules globally it will mean that webkit will opt into the\n * standards compliant version of custom css scrollbars, which we do not want\n * because the custom stuff will look better\n */\n @supports (-moz-appearance: none) {\n [data-code] {\n scrollbar-width: thin;\n scrollbar-color: var(--diffs-bg-context) transparent;\n padding-bottom: var(--diffs-gap-block, var(--diffs-gap-fallback));\n }\n }\n\n [data-diffs][data-type='split'][data-overflow='wrap'] {\n padding-block: var(--diffs-gap-block, var(--diffs-gap-fallback));\n }\n\n [data-diffs-header] ~ [data-diffs] [data-code],\n [data-diffs-header] ~ [data-diffs][data-overflow='wrap'] {\n padding-top: 0;\n }\n\n [data-type='split'][data-overflow='wrap'] [data-code] {\n display: contents;\n }\n\n [data-line-annotation],\n [data-no-newline],\n [data-line] {\n position: relative;\n display: grid;\n grid-template-columns: subgrid;\n grid-column: 1 / 3;\n }\n\n [data-line-annotation][data-selected-line] {\n background-color: unset;\n\n &::before {\n content: '';\n position: sticky;\n top: 0;\n left: 0;\n display: block;\n border-right: var(--diffs-gap-style, 1px solid var(--diffs-bg));\n background-color: var(--diffs-bg-selection-number);\n }\n\n [data-annotation-content] {\n background-color: var(--diffs-bg-selection);\n }\n }\n\n [data-interactive-lines] [data-line] {\n cursor: pointer;\n }\n\n [data-buffer] {\n display: grid;\n grid-column: 1 / 3;\n grid-template-columns: subgrid;\n user-select: none;\n /* We multiply by 1.414 (√2) to better approximate the diagonal repeat distance */\n background-image: repeating-linear-gradient(\n -45deg,\n transparent,\n transparent calc(3px * 1.414),\n var(--diffs-bg-buffer) calc(3px * 1.414),\n var(--diffs-bg-buffer) calc(4px * 1.414)\n );\n min-height: 1lh;\n /* lol not sure this is worth it… */\n /* position: sticky; */\n /* left: 0; */\n /* width: var(--diffs-column-width, auto); */\n /* background-attachment: fixed; */\n\n &::before,\n &::after {\n content: '';\n display: block;\n }\n\n &::before {\n box-sizing: content-box;\n padding-left: 2ch;\n padding-right: 1ch;\n border-left: 4px solid transparent;\n border-right: 1px solid transparent;\n min-width: var(\n --diffs-min-number-column-width,\n var(--diffs-min-number-column-width-default, 3ch)\n );\n }\n }\n\n [data-separator] {\n grid-column: span 2;\n }\n\n [data-separator='metadata'],\n [data-separator]:empty {\n min-height: 4px;\n background-color: var(--diffs-bg-separator);\n display: grid;\n grid-template-columns: subgrid;\n }\n\n [data-separator-wrapper] {\n user-select: none;\n fill: currentColor;\n overflow: hidden;\n }\n\n [data-separator='metadata'] [data-separator-wrapper] {\n grid-column: 2 / 3;\n width: var(--diffs-column-content-width);\n position: sticky;\n left: var(--diffs-column-number-width);\n padding: 4px 1ch;\n }\n\n [data-separator='line-info'] {\n margin-block: var(--diffs-gap-block, var(--diffs-gap-fallback));\n }\n\n [data-separator='line-info'][data-separator-first] {\n margin-top: 0;\n }\n\n [data-separator='line-info'][data-separator-last] {\n margin-bottom: 0;\n }\n\n [data-separator='line-info'] [data-separator-wrapper] {\n position: relative;\n display: flex;\n align-items: center;\n gap: 2px;\n width: auto;\n width: calc(var(--diffs-column-width) - var(--diffs-gap-fallback));\n border-radius: 6px;\n }\n\n [data-overflow='scroll']\n [data-separator='line-info']\n [data-separator-wrapper] {\n position: sticky;\n }\n\n @media (pointer: fine) {\n [data-separator-wrapper][data-separator-multi-button] {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n grid-template-rows: 15px 15px;\n\n [data-expand-button] {\n height: 15px;\n }\n }\n\n [data-type='split']\n [data-additions]\n [data-separator-wrapper][data-separator-multi-button] {\n grid-template-columns: minmax(0, 1fr) auto;\n }\n\n [data-type='split'] [data-additions] [data-expand-button] {\n grid-column: 2;\n }\n\n [data-type='split'] [data-additions] [data-separator-content] {\n grid-column: 1;\n }\n }\n\n [data-expand-button],\n [data-separator-content] {\n display: flex;\n align-items: center;\n background-color: var(--diffs-bg-separator);\n }\n\n [data-expand-button] {\n justify-content: center;\n flex-shrink: 0;\n cursor: pointer;\n width: 32px;\n height: 32px;\n opacity: 0.65;\n }\n\n [data-hover-slot] {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n display: flex;\n justify-content: flex-end;\n }\n\n @media (pointer: fine) {\n [data-expand-button]:hover {\n opacity: 1;\n }\n\n /* FIXME(amadeus): We need to figure out how/when to apply hover effects in\n * a more performant way because it'll trigger layout/paint re-calcs\n * probably when we dont want them... */\n [data-line]:hover {\n z-index: 2;\n }\n }\n\n [data-expand-up] [data-icon] {\n transform: scaleY(-1);\n }\n\n [data-separator-content] {\n flex: 1 1 auto;\n padding: 0 1ch;\n height: 32px;\n opacity: 0.65;\n overflow: hidden;\n justify-content: flex-start;\n\n grid-column: 2;\n grid-row: 1 / -1;\n }\n\n [data-unmodified-lines] {\n display: block;\n overflow: hidden;\n min-width: 0;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 0 1 auto;\n }\n\n [data-type='split'] [data-additions] [data-separator-content] {\n justify-content: flex-end;\n }\n\n [data-type='file']\n [data-code]\n [data-separator='line-info']\n [data-separator-wrapper] {\n margin-left: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n margin-right: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n width: calc(\n var(--diffs-column-width) -\n (var(--diffs-gap-inline, var(--diffs-gap-fallback)) * 2)\n );\n }\n\n [data-type='split']\n [data-deletions]\n [data-separator='line-info']\n [data-separator-wrapper] {\n margin-left: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n [data-type='file'][data-overflow='scroll'],\n [data-type='split'][data-overflow='scroll'] {\n [data-deletions] [data-separator='line-info'] [data-separator-wrapper] {\n left: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n }\n }\n\n [data-type='split']\n [data-additions]\n [data-separator='line-info']\n [data-separator-wrapper] {\n margin-right: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n flex-direction: row-reverse;\n }\n\n [data-type='split'][data-overflow='scroll']\n [data-additions]\n [data-separator='line-info']\n [data-separator-wrapper] {\n left: 0;\n }\n\n [data-line] {\n background-color: var(--diffs-bg);\n color: var(--diffs-fg);\n }\n\n [data-type='split'][data-overflow='wrap'] [data-deletions] {\n [data-line-annotation],\n [data-buffer],\n [data-line],\n [data-separator],\n [data-virtualized-buffer],\n [data-no-newline] {\n margin-right: 1px;\n grid-column: 1 / 3;\n }\n }\n\n [data-line-annotation] {\n min-height: var(--diffs-annotation-min-height, 0);\n background-color: var(--diffs-bg-context);\n z-index: 3;\n }\n\n [data-type='split'][data-overflow='wrap'] [data-additions] {\n [data-line-annotation],\n [data-buffer],\n [data-line],\n [data-separator],\n [data-virtualized-buffer],\n [data-no-newline] {\n margin-left: 1px;\n grid-column: 3 / 5;\n }\n }\n\n [data-separator='custom'] {\n display: grid;\n grid-template-columns: subgrid;\n }\n\n [data-column-content],\n [data-column-number] {\n position: relative;\n padding-inline: 1ch;\n }\n\n [data-indicators='classic'] [data-column-content] {\n padding-inline-start: 2ch;\n }\n\n [data-indicators='classic'] {\n [data-line-type='change-addition'] [data-column-content]::before,\n [data-line-type='change-deletion'] [data-column-content]::before {\n display: inline-block;\n width: 1ch;\n height: 1lh;\n position: absolute;\n top: 0;\n left: 0;\n user-select: none;\n }\n\n [data-line-type='change-addition'] [data-column-content]::before {\n content: '+';\n color: var(--diffs-addition-base);\n }\n\n [data-line-type='change-deletion'] [data-column-content]::before {\n content: '-';\n color: var(--diffs-deletion-base);\n }\n }\n\n [data-indicators='bars'] {\n [data-line-type='change-deletion'],\n [data-line-type='change-addition'] {\n [data-column-number]::before {\n content: '';\n display: block;\n width: 4px;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n user-select: none;\n contain: strict;\n }\n }\n\n [data-line-type='change-deletion'] [data-column-number]::before {\n background-image: linear-gradient(\n 0deg,\n var(--diffs-bg-deletion) 50%,\n var(--diffs-deletion-base) 50%\n );\n background-repeat: repeat;\n background-size: 2px 2px;\n background-size: calc(1lh / round(1lh / 2px)) calc(1lh / round(1lh / 2px));\n }\n\n [data-line-type='change-addition'] [data-column-number]::before {\n background-color: var(--diffs-addition-base);\n }\n }\n\n [data-overflow='wrap'] [data-column-content],\n [data-overflow='wrap'] [data-annotation-content] {\n white-space: pre-wrap;\n word-break: break-word;\n }\n\n [data-overflow='scroll'] [data-column-content] {\n white-space: pre;\n min-height: 1lh;\n }\n\n [data-column-number] {\n grid-column: 1 / 2;\n box-sizing: content-box;\n text-align: right;\n user-select: none;\n background-color: var(--diffs-bg);\n color: var(--diffs-fg-number);\n z-index: 1;\n min-width: var(\n --diffs-min-number-column-width,\n var(--diffs-min-number-column-width-default, 3ch)\n );\n padding-left: 2ch;\n border-right: var(--diffs-gap-style, 1px solid var(--diffs-bg));\n }\n\n [data-overflow='scroll'] [data-column-number] {\n position: sticky;\n left: 0;\n }\n\n [data-disable-line-numbers] {\n &[data-indicators='bars'] [data-column-number] {\n min-width: 4px;\n border-right: var(--diffs-gap-style, 1px solid var(--diffs-bg));\n }\n\n [data-column-number],\n [data-buffer]::before {\n min-width: 0;\n padding: 0;\n }\n\n [data-line-number-content] {\n display: none;\n }\n\n [data-hover-slot] {\n right: unset;\n left: 0;\n justify-content: flex-start;\n }\n\n &[data-indicators='bars'] [data-hover-slot] {\n /* Using 5px here because theres a 1px separator after the bar */\n left: 5px;\n }\n }\n\n [data-interactive-line-numbers] [data-column-number] {\n cursor: pointer;\n }\n\n [data-diff-span] {\n border-radius: 3px;\n box-decoration-break: clone;\n }\n\n [data-line-type='change-addition'] {\n [data-column-number] {\n color: var(\n --diffs-fg-number-addition-override,\n var(--diffs-addition-base)\n );\n }\n\n [data-diff-span] {\n background-color: var(--diffs-bg-addition-emphasis);\n }\n }\n\n [data-line-type='change-deletion'] {\n [data-column-number] {\n color: var(\n --diffs-fg-number-deletion-override,\n var(--diffs-deletion-base)\n );\n }\n\n [data-diff-span] {\n background-color: var(--diffs-bg-deletion-emphasis);\n }\n }\n\n [data-background] [data-line-type='change-addition'] {\n --diffs-line-bg: var(--diffs-bg-addition);\n\n [data-column-number] {\n background-color: var(--diffs-bg-addition-number);\n }\n }\n\n [data-background] [data-line-type='change-deletion'] {\n --diffs-line-bg: var(--diffs-bg-deletion);\n\n [data-column-number] {\n background-color: var(--diffs-bg-deletion-number);\n }\n }\n\n [data-line-type='context-expanded'] {\n --diffs-line-bg: var(--diffs-bg-context);\n\n [data-column-number] {\n background-color: var(--diffs-bg-context);\n }\n }\n\n /* By wrapping hovers in a pointer: fine, we ensure that mobile devices don't\n * require a double click */\n @media (pointer: fine) {\n [data-line]:hover:not([data-selected-line]) {\n [data-column-number],\n [data-column-content] {\n background-color: var(--diffs-bg-hover);\n }\n }\n\n [data-background] [data-line]:hover:not([data-selected-line]) {\n &[data-line-type='change-deletion'] [data-column-number],\n &[data-line-type='change-deletion'] [data-column-content] {\n background-color: var(--diffs-bg-deletion-hover);\n }\n\n &[data-line-type='change-addition'] [data-column-number],\n &[data-line-type='change-addition'] [data-column-content] {\n background-color: var(--diffs-bg-addition-hover);\n }\n }\n }\n\n [data-diffs-header] {\n position: relative;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n min-height: calc(\n 1lh + (var(--diffs-gap-block, var(--diffs-gap-fallback)) * 3)\n );\n padding-inline: 16px;\n top: 0;\n z-index: 2;\n }\n\n [data-header-content] {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: var(--diffs-gap-inline, var(--diffs-gap-fallback));\n min-width: 0;\n white-space: nowrap;\n }\n\n [data-header-content] [data-prev-name],\n [data-header-content] [data-title] {\n direction: rtl;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n white-space: nowrap;\n }\n\n [data-prev-name] {\n opacity: 0.7;\n }\n\n [data-rename-icon] {\n fill: currentColor;\n flex-shrink: 0;\n flex-grow: 0;\n }\n\n [data-diffs-header] [data-metadata] {\n display: flex;\n align-items: center;\n gap: 1ch;\n white-space: nowrap;\n }\n\n [data-diffs-header] [data-additions-count] {\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\n color: var(--diffs-addition-base);\n }\n\n [data-diffs-header] [data-deletions-count] {\n font-family: var(--diffs-font-family, var(--diffs-font-fallback));\n color: var(--diffs-deletion-base);\n }\n\n [data-no-newline] {\n user-select: none;\n\n [data-column-content] {\n opacity: 0.6;\n }\n }\n\n [data-annotation-content] {\n position: relative;\n grid-column: 2 / -1;\n width: var(--diffs-column-content-width, auto);\n align-self: flex-start;\n z-index: 2;\n height: 100%;\n }\n\n /* Sticky positioning has a composite costs, so we should _only_ pay it if we\n * need to */\n [data-overflow='scroll'] [data-annotation-content] {\n position: sticky;\n left: var(--diffs-column-number-width, 0);\n }\n\n /* Undo some of the stuff that the 'pre' tag does */\n [data-annotation-slot] {\n text-wrap-mode: wrap;\n word-break: normal;\n white-space-collapse: collapse;\n }\n\n [data-change-icon] {\n fill: currentColor;\n flex-shrink: 0;\n }\n\n [data-change-icon='change'],\n [data-change-icon='rename-pure'],\n [data-change-icon='rename-changed'] {\n color: var(--diffs-modified-base);\n }\n\n [data-change-icon='new'] {\n color: var(--diffs-addition-base);\n }\n\n [data-change-icon='deleted'] {\n color: var(--diffs-deletion-base);\n }\n\n [data-change-icon='file'] {\n opacity: 0.6;\n }\n\n /* Line selection highlighting */\n [data-line-type='context'][data-selected-line] {\n [data-column-number] {\n color: var(--diffs-selection-number-fg);\n background-color: var(--diffs-bg-selection-number);\n }\n\n [data-column-content] {\n background-color: var(--diffs-bg-selection);\n }\n }\n\n [data-line-type='context-expanded'],\n [data-line-type='change-addition'],\n [data-line-type='change-deletion'] {\n &[data-selected-line] {\n [data-column-content] {\n background-color: light-dark(\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 82%,\n var(--diffs-selection-base)\n ),\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 75%,\n var(--diffs-selection-base)\n )\n );\n }\n\n [data-column-number] {\n color: var(--diffs-selection-number-fg);\n background-color: light-dark(\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 75%,\n var(--diffs-selection-base)\n ),\n color-mix(\n in lab,\n var(--diffs-line-bg, var(--diffs-bg)) 60%,\n var(--diffs-selection-base)\n )\n );\n }\n }\n }\n\n [data-error-wrapper] {\n overflow: auto;\n padding: var(--diffs-gap-block, var(--diffs-gap-fallback))\n var(--diffs-gap-inline, var(--diffs-gap-fallback));\n max-height: 400px;\n scrollbar-width: none;\n\n [data-error-message] {\n font-weight: bold;\n font-size: 18px;\n color: var(--diffs-deletion-base);\n }\n\n [data-error-stack] {\n color: var(--diffs-fg-number);\n }\n }\n\n [data-virtualized-buffer] {\n /* for blanking debugging purposes */\n /* background-color: red; */\n grid-column: 1 / 3;\n }\n}\n"],"mappings":";oBAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,64 +2,254 @@ import { BundledLanguage, BundledTheme, CodeToHastOptions, DecorationItem, Highl
|
|
|
2
2
|
import { ElementContent } from "hast";
|
|
3
3
|
|
|
4
4
|
//#region src/types.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents a file's contents for generating diffs via `parseDiffFromFile` or
|
|
8
|
+
* for when rendering a file directly using the File components
|
|
9
|
+
*/
|
|
5
10
|
interface FileContents {
|
|
6
|
-
|
|
11
|
+
/** Filename used for display in headers and for inferring the language for
|
|
12
|
+
* syntax highlighting. */
|
|
7
13
|
name: string;
|
|
14
|
+
/** The raw text contents of the file. */
|
|
8
15
|
contents: string;
|
|
16
|
+
/** Explicitly set the syntax highlighting language instead of inferring from
|
|
17
|
+
* filename. Generally you should not be setting this. */
|
|
9
18
|
lang?: SupportedLanguages;
|
|
19
|
+
/** Optional header passed to the jsdiff library's `createTwoFilesPatch`. */
|
|
10
20
|
header?: string;
|
|
21
|
+
/** This unique key is only used for Worker Pools to avoid subsequent requests
|
|
22
|
+
* if we've already highlighted the file. Please note that if you modify the
|
|
23
|
+
* `contents` or `name`, you must update the `cacheKey`. */
|
|
24
|
+
cacheKey?: string;
|
|
11
25
|
}
|
|
12
26
|
type DiffsThemeNames = BundledTheme | "pierre-dark" | "pierre-light" | (string & {});
|
|
13
27
|
type ThemesType = Record<"dark" | "light", DiffsThemeNames>;
|
|
28
|
+
/**
|
|
29
|
+
* A Shiki highlighter instance configured with the library's supported
|
|
30
|
+
* languages and themes. Used internally to generate syntax-highlighted AST
|
|
31
|
+
* from file contents. By default diffs will ensure that only 1 highlighter is
|
|
32
|
+
* instantiated per thread and shared for all syntax highlighting. This
|
|
33
|
+
* applies to the main thread and worker threads.
|
|
34
|
+
*/
|
|
14
35
|
type DiffsHighlighter = HighlighterGeneric<SupportedLanguages, DiffsThemeNames>;
|
|
36
|
+
/**
|
|
37
|
+
* Describes the type of change for a file in a diff.
|
|
38
|
+
* - `change`: File content was modified, name unchanged.
|
|
39
|
+
* - `rename-pure`: File was renamed/moved without content changes (100% similarity).
|
|
40
|
+
* - `rename-changed`: File was renamed/moved and content was also modified.
|
|
41
|
+
* - `new`: A new file was added.
|
|
42
|
+
* - `deleted`: An existing file was removed.
|
|
43
|
+
*/
|
|
15
44
|
type ChangeTypes = "change" | "rename-pure" | "rename-changed" | "new" | "deleted";
|
|
45
|
+
/**
|
|
46
|
+
* Represents a parsed patch file, typically corresponding to a single commit.
|
|
47
|
+
* Returned by `parsePatchFiles` when parsing raw patch/diff strings.
|
|
48
|
+
*/
|
|
16
49
|
interface ParsedPatch {
|
|
50
|
+
/** Optional raw introductory text before the file diffs that may have been
|
|
51
|
+
* included in the patch (e.g., commit message, author, date). */
|
|
17
52
|
patchMetadata?: string;
|
|
53
|
+
/** Array of file changes contained in the patch. */
|
|
18
54
|
files: FileDiffMetadata[];
|
|
19
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Represents a block of unchanged context lines within a hunk. Basically a
|
|
58
|
+
* batch of lines in a hunk that are prefixed with a space ` `. Consecutive
|
|
59
|
+
* lines prefixed with a ` ` are grouped together into a single ContextContent.
|
|
60
|
+
*/
|
|
20
61
|
interface ContextContent {
|
|
21
62
|
type: "context";
|
|
22
|
-
lines
|
|
23
|
-
|
|
63
|
+
/** Number of unchanged lines in this context block. */
|
|
64
|
+
lines: number;
|
|
65
|
+
/**
|
|
66
|
+
* Zero-based index into `FileDiffMetadata.additionLines` where this context
|
|
67
|
+
* block starts.
|
|
68
|
+
*/
|
|
69
|
+
additionLineIndex: number;
|
|
70
|
+
/**
|
|
71
|
+
* Zero-based index into `FileDiffMetadata.deletionLines` where this context
|
|
72
|
+
* block starts.
|
|
73
|
+
*/
|
|
74
|
+
deletionLineIndex: number;
|
|
24
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Represents a block of changes (additions and/or deletions) within a hunk.
|
|
78
|
+
* Consecutive `+` and `-` lines are grouped together into a single
|
|
79
|
+
* ChangeContent.
|
|
80
|
+
*/
|
|
25
81
|
interface ChangeContent {
|
|
26
82
|
type: "change";
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
83
|
+
/** Number of lines prefixed with `-` in this change block. */
|
|
84
|
+
deletions: number;
|
|
85
|
+
/**
|
|
86
|
+
* Zero-based index into `FileDiffMetadata.deletionLines` where the deleted
|
|
87
|
+
* lines start.
|
|
88
|
+
*/
|
|
89
|
+
deletionLineIndex: number;
|
|
90
|
+
/** Number of lines prefixed with `+` in this change block. */
|
|
91
|
+
additions: number;
|
|
92
|
+
/**
|
|
93
|
+
* Zero-based index into `FileDiffMetadata.additionLines` where the added
|
|
94
|
+
* lines start.
|
|
95
|
+
*/
|
|
96
|
+
additionLineIndex: number;
|
|
31
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Represents a single hunk from a diff, corresponding to
|
|
100
|
+
* one `@@ ... @@` block.
|
|
101
|
+
*/
|
|
32
102
|
interface Hunk {
|
|
103
|
+
/**
|
|
104
|
+
* Number of unchanged lines between the previous hunk (or file start) and
|
|
105
|
+
* this hunk.
|
|
106
|
+
*/
|
|
33
107
|
collapsedBefore: number;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
additionCount: number;
|
|
108
|
+
/**
|
|
109
|
+
* Starting line number in the new file version, parsed from the `+X`
|
|
110
|
+
* in the hunk header.
|
|
111
|
+
*/
|
|
39
112
|
additionStart: number;
|
|
113
|
+
/**
|
|
114
|
+
* Total line count in the new file version for this hunk, parsed from
|
|
115
|
+
* `+X,count` in the hunk header. If this hunk was viewed in `diffStyle:
|
|
116
|
+
* split` this would correspond to the number of lines in the right
|
|
117
|
+
* `additions` column. It includes both `context` lines and lines
|
|
118
|
+
* prefixed with `+`.
|
|
119
|
+
*/
|
|
120
|
+
additionCount: number;
|
|
121
|
+
/** This corresponds to the number of lines prefixed with `+` in this hunk. */
|
|
40
122
|
additionLines: number;
|
|
41
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Zero-based index into `FileDiffMetadata.additionLines` where this hunk's
|
|
125
|
+
* content starts.
|
|
126
|
+
*/
|
|
127
|
+
additionLineIndex: number;
|
|
128
|
+
/**
|
|
129
|
+
* Starting line number in the old file version, parsed from the `-X`
|
|
130
|
+
* in the hunk header.
|
|
131
|
+
*/
|
|
42
132
|
deletionStart: number;
|
|
133
|
+
/**
|
|
134
|
+
* Total line count in the old file version for this hunk, parsed from
|
|
135
|
+
* `-X,count` in the hunk header. If this hunk was viewed in `diffStyle:
|
|
136
|
+
* split` this would correspond to the number of lines in the left
|
|
137
|
+
* `deletions` column. It includes both `context` lines and lines
|
|
138
|
+
* prefixed with `-`.
|
|
139
|
+
*/
|
|
140
|
+
deletionCount: number;
|
|
141
|
+
/** This corresponds to the number of lines prefixed with `-` in this hunk. */
|
|
43
142
|
deletionLines: number;
|
|
143
|
+
/**
|
|
144
|
+
* Zero-based index into `FileDiffMetadata.deletionLines` where this hunk's
|
|
145
|
+
* content starts.
|
|
146
|
+
*/
|
|
147
|
+
deletionLineIndex: number;
|
|
148
|
+
/**
|
|
149
|
+
* Array of content segments within this hunk, each representing either
|
|
150
|
+
* a context line group or a change group.
|
|
151
|
+
*/
|
|
44
152
|
hunkContent: (ContextContent | ChangeContent)[];
|
|
45
|
-
|
|
46
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Function/method name that appears after the `@@` markers if it existed in
|
|
155
|
+
* the diff.
|
|
156
|
+
*/
|
|
157
|
+
hunkContext?: string;
|
|
158
|
+
/** Raw hunk header string (e.g., `@@ -1,5 +1,7 @@`). */
|
|
159
|
+
hunkSpecs?: string;
|
|
160
|
+
/**
|
|
161
|
+
* Starting line index for this hunk when rendered in split (side-by-side)
|
|
162
|
+
* view.
|
|
163
|
+
*/
|
|
164
|
+
splitLineStart: number;
|
|
165
|
+
/** Total rendered line count for this hunk in split view. */
|
|
166
|
+
splitLineCount: number;
|
|
167
|
+
/** Starting line index for this hunk when rendered in unified view. */
|
|
168
|
+
unifiedLineStart: number;
|
|
169
|
+
/** Total rendered line count for this hunk in unified view. */
|
|
170
|
+
unifiedLineCount: number;
|
|
171
|
+
/**
|
|
172
|
+
* True if the old file version has no trailing newline at end of file. This
|
|
173
|
+
* is parsed from the patch file directly at the end of the hunk. If the
|
|
174
|
+
* final hunkContent is a `context` group, then both values will be true or
|
|
175
|
+
* false together. If it's from a `change` content group, then it may differ
|
|
176
|
+
* depending on the patch.
|
|
177
|
+
*/
|
|
178
|
+
noEOFCRDeletions: boolean;
|
|
179
|
+
/**
|
|
180
|
+
* True if the new file version has no trailing newline at end of file. This
|
|
181
|
+
* is parsed from the patch file directly at the end of the hunk. If the
|
|
182
|
+
* final hunkContent is a `context` group, then both values will be true or
|
|
183
|
+
* false together. If it's from a `change` content group, then it may differ
|
|
184
|
+
* depending on the patch.
|
|
185
|
+
*/
|
|
186
|
+
noEOFCRAdditions: boolean;
|
|
47
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Metadata and content for a single file's diff. Think of this as a JSON
|
|
190
|
+
* compatible representation of a diff for a single file.
|
|
191
|
+
*/
|
|
48
192
|
interface FileDiffMetadata {
|
|
193
|
+
/** The file's name and path. */
|
|
49
194
|
name: string;
|
|
50
|
-
|
|
195
|
+
/** Previous file path, present only if file was renamed or moved. */
|
|
196
|
+
prevName?: string;
|
|
197
|
+
/**
|
|
198
|
+
* Explicitly override the syntax highlighting language instead of inferring
|
|
199
|
+
* from filename. This will never be set by default, since all internal diff
|
|
200
|
+
* APIs will attempt to detect the language automatically. If you'd like to
|
|
201
|
+
* specify a language override, you can do so via the method `setLanguageOverride`
|
|
202
|
+
*/
|
|
51
203
|
lang?: SupportedLanguages;
|
|
204
|
+
/** Git file mode parsed from the diff (e.g., `100644` for regular files) if
|
|
205
|
+
* it exists */
|
|
206
|
+
mode?: string;
|
|
207
|
+
/** Previous git file mode, present if the mode changed. */
|
|
208
|
+
prevMode?: string;
|
|
209
|
+
/** The type of change for this file. */
|
|
52
210
|
type: ChangeTypes;
|
|
211
|
+
/** Array of diff hunks containing line-level change information. Each hunk
|
|
212
|
+
* corresponds to a `@@ -X,X +X,X @@` group in a diff. */
|
|
53
213
|
hunks: Hunk[];
|
|
214
|
+
/** Pre-computed line size for this diff if rendered in `split` diffStyle. */
|
|
54
215
|
splitLineCount: number;
|
|
216
|
+
/** Pre-computed line size for this diff if rendered in `unified` diffStyle. */
|
|
55
217
|
unifiedLineCount: number;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
218
|
+
/**
|
|
219
|
+
* Whether the diff was parsed from a patch file (true) or generated from
|
|
220
|
+
* full file contents (false).
|
|
221
|
+
*
|
|
222
|
+
* When true, `deletionLines`/`additionLines` contain only the lines present
|
|
223
|
+
* in the patch and hunk expansion is unavailable.
|
|
224
|
+
*
|
|
225
|
+
* When false, they contain the complete file contents.
|
|
226
|
+
*/
|
|
227
|
+
isPartial: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* Array of lines from previous version of the file. If `isPartial` is false,
|
|
230
|
+
* it means that `deletionLines` can be considered the entire contents of the
|
|
231
|
+
* old version of the file. Otherwise `deletionLines` will just be an array
|
|
232
|
+
* of all the content processed from the `context` and `deletion` lines of
|
|
233
|
+
* the patch.
|
|
234
|
+
*/
|
|
235
|
+
deletionLines: string[];
|
|
236
|
+
/**
|
|
237
|
+
* Array of lines from new version of the file. If `isPartial` is false, it
|
|
238
|
+
* means that `additionLines` can be considered the entire contents of the
|
|
239
|
+
* new version of the file. Otherwise `additionLines` will just be an array
|
|
240
|
+
* of all the content processed from the `context` and `addition` lines of
|
|
241
|
+
* the patch.
|
|
242
|
+
*/
|
|
243
|
+
additionLines: string[];
|
|
244
|
+
/**
|
|
245
|
+
* This unique key is only used for Worker Pools to avoid subsequent requests
|
|
246
|
+
* to highlight if we've already highlighted the diff. Please note that if
|
|
247
|
+
* you modify the contents of the diff in any way, you will need to update
|
|
248
|
+
* the `cacheKey`.
|
|
249
|
+
*/
|
|
60
250
|
cacheKey?: string;
|
|
61
251
|
}
|
|
62
|
-
type SupportedLanguages = BundledLanguage | "text";
|
|
252
|
+
type SupportedLanguages = BundledLanguage | "text" | "ansi";
|
|
63
253
|
type HunkLineType = "context" | "expanded" | "addition" | "deletion" | "metadata";
|
|
64
254
|
type ThemeTypes = "system" | "light" | "dark";
|
|
65
255
|
type HunkSeparators = "simple" | "metadata" | "line-info" | "custom";
|
|
@@ -70,6 +260,7 @@ interface BaseCodeOptions {
|
|
|
70
260
|
overflow?: "scroll" | "wrap";
|
|
71
261
|
themeType?: ThemeTypes;
|
|
72
262
|
disableFileHeader?: boolean;
|
|
263
|
+
disableVirtualizationBuffers?: boolean;
|
|
73
264
|
useCSSClasses?: boolean;
|
|
74
265
|
tokenizeMaxLineLength?: number;
|
|
75
266
|
unsafeCSS?: string;
|
|
@@ -90,8 +281,8 @@ interface PrePropertiesConfig extends Required<Pick<BaseDiffOptions, "diffIndica
|
|
|
90
281
|
totalLines: number;
|
|
91
282
|
}
|
|
92
283
|
interface RenderHeaderMetadataProps {
|
|
93
|
-
|
|
94
|
-
|
|
284
|
+
deletionFile?: FileContents;
|
|
285
|
+
additionFile?: FileContents;
|
|
95
286
|
fileDiff?: FileDiffMetadata;
|
|
96
287
|
}
|
|
97
288
|
type RenderHeaderMetadataCallback = (props: RenderHeaderMetadataProps) => Element | null | undefined | string | number;
|
|
@@ -123,7 +314,7 @@ interface LineInfo {
|
|
|
123
314
|
lineIndex: number | `${number},${number}`;
|
|
124
315
|
}
|
|
125
316
|
interface SharedRenderState {
|
|
126
|
-
lineInfo:
|
|
317
|
+
lineInfo: (LineInfo | undefined)[] | ((shikiLineNumber: number) => LineInfo);
|
|
127
318
|
}
|
|
128
319
|
interface AnnotationSpan {
|
|
129
320
|
type: "annotation";
|
|
@@ -175,35 +366,32 @@ interface HunkData {
|
|
|
175
366
|
down: boolean;
|
|
176
367
|
};
|
|
177
368
|
}
|
|
178
|
-
interface ChangeHunk {
|
|
179
|
-
diffGroupStartIndex: number;
|
|
180
|
-
deletionStartIndex: number;
|
|
181
|
-
additionStartIndex: number;
|
|
182
|
-
deletionLines: string[];
|
|
183
|
-
additionLines: string[];
|
|
184
|
-
}
|
|
185
369
|
type AnnotationLineMap<LAnnotation> = Record<number, DiffLineAnnotation<LAnnotation>[] | undefined>;
|
|
186
370
|
type ExpansionDirections = "up" | "down" | "both";
|
|
187
|
-
interface RenderDiffFilesResult {
|
|
188
|
-
oldLines: ElementContent[];
|
|
189
|
-
newLines: ElementContent[];
|
|
190
|
-
hunks?: undefined;
|
|
191
|
-
}
|
|
192
|
-
interface RenderDiffHunksResult {
|
|
193
|
-
hunks: RenderDiffFilesResult[];
|
|
194
|
-
oldLines?: undefined;
|
|
195
|
-
newLines?: undefined;
|
|
196
|
-
}
|
|
197
371
|
interface ThemedFileResult {
|
|
198
372
|
code: ElementContent[];
|
|
199
373
|
themeStyles: string;
|
|
200
374
|
baseThemeType: "light" | "dark" | undefined;
|
|
201
375
|
}
|
|
376
|
+
interface RenderDiffFilesResult {
|
|
377
|
+
deletionLines: ElementContent[];
|
|
378
|
+
additionLines: ElementContent[];
|
|
379
|
+
}
|
|
202
380
|
interface ThemedDiffResult {
|
|
203
|
-
code: RenderDiffFilesResult
|
|
381
|
+
code: RenderDiffFilesResult;
|
|
204
382
|
themeStyles: string;
|
|
205
383
|
baseThemeType: "light" | "dark" | undefined;
|
|
206
384
|
}
|
|
385
|
+
interface HunkExpansionRegion {
|
|
386
|
+
fromStart: number;
|
|
387
|
+
fromEnd: number;
|
|
388
|
+
}
|
|
389
|
+
interface ForcePlainTextOptions {
|
|
390
|
+
forcePlainText: boolean;
|
|
391
|
+
startingLine?: number;
|
|
392
|
+
totalLines?: number;
|
|
393
|
+
expandedHunks?: Map<number, HunkExpansionRegion> | true;
|
|
394
|
+
}
|
|
207
395
|
interface RenderFileOptions {
|
|
208
396
|
theme: DiffsThemeNames | Record<"dark" | "light", DiffsThemeNames>;
|
|
209
397
|
tokenizeMaxLineLength: number;
|
|
@@ -226,13 +414,29 @@ interface RenderedFileASTCache {
|
|
|
226
414
|
highlighted: boolean;
|
|
227
415
|
options: RenderFileOptions;
|
|
228
416
|
result: ThemedFileResult | undefined;
|
|
417
|
+
renderRange: RenderRange | undefined;
|
|
229
418
|
}
|
|
230
419
|
interface RenderedDiffASTCache {
|
|
231
420
|
diff: FileDiffMetadata;
|
|
232
421
|
highlighted: boolean;
|
|
233
422
|
options: RenderDiffOptions;
|
|
234
423
|
result: ThemedDiffResult | undefined;
|
|
424
|
+
renderRange: RenderRange | undefined;
|
|
425
|
+
}
|
|
426
|
+
interface RenderRange {
|
|
427
|
+
startingLine: number;
|
|
428
|
+
totalLines: number;
|
|
429
|
+
bufferBefore: number;
|
|
430
|
+
bufferAfter: number;
|
|
431
|
+
}
|
|
432
|
+
interface RenderWindow {
|
|
433
|
+
top: number;
|
|
434
|
+
bottom: number;
|
|
435
|
+
}
|
|
436
|
+
interface VirtualWindowSpecs {
|
|
437
|
+
top: number;
|
|
438
|
+
bottom: number;
|
|
235
439
|
}
|
|
236
440
|
//#endregion
|
|
237
|
-
export { AnnotationLineMap, AnnotationSide, AnnotationSpan, BaseCodeOptions, BaseDiffOptions, type BundledLanguage, ChangeContent,
|
|
441
|
+
export { AnnotationLineMap, AnnotationSide, AnnotationSpan, BaseCodeOptions, BaseDiffOptions, type BundledLanguage, ChangeContent, ChangeTypes, type CodeToHastOptions, ContextContent, type DecorationItem, DiffLineAnnotation, DiffLineEventBaseProps, DiffsHighlighter, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffMetadata, ForcePlainTextOptions, GapSpan, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, type LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PrePropertiesConfig, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderMetadataProps, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SharedRenderState, type ShikiTransformer, SupportedLanguages, type ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, type ThemedToken, ThemesType, VirtualWindowSpecs };
|
|
238
442
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;AAiBA;AA2BA;AAMY,UAjCK,YAAA,CAiCiC;EASlD;;EAEE,IAAA,EAAA,MAAA;EAF6B;EAAA,QAAA,EAAA,MAAA;EAa/B;AAWA;EAaA,IAAiB,CAAA,EAvER,kBAuEQ;EAqBjB;EAsBA,MAAiB,CAAA,EAAA,MAAA;EAiGjB;;;EAsBS,QAAA,CAAA,EAAA,MAAA;;AA6CG,KAnQA,eAAA,GACR,YAkQQ,GAAA,aAAA,GAAA,cAAA,GAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;AAOA,KApQA,UAAA,GAAa,MAoQb,CAAA,MAAA,GAAA,OAAA,EApQsC,eAoQtC,CAAA;AAEZ;AAEA;AAEA;;;;;AAgBiB,KAjRL,gBAAA,GAAmB,kBAiRd,CAhRf,kBAgRe,EA/Qf,eA+Qe,CAAA;;;;;AAkBjB;;;;AACU,KAvRE,WAAA,GAuRF,QAAA,GAAA,aAAA,GAAA,gBAAA,GAAA,KAAA,GAAA,SAAA;AAeV;;;;AAGa,UA9RI,WAAA,CA8RJ;EAGb;AAIA;EAIA,aAAY,CAAA,EAAA,MAAA;EAEZ;EAA2C,KAEtC,EAxSI,gBAwSJ,EAAA;AAIL;AAIA;;;;;AAKiB,UA7SA,cAAA,CA6SA;EAKjB,IAAY,EAAA,SAAA;EAKZ;EAMA,KAAiB,EAAA,MAAA;EAOjB;AAIA;AAOA;AAQA;EACe,iBAAA,EAAA,MAAA;EAEG;;;;EAIlB,iBAAiB,EAAA,MAAA;;;;;;AAejB;AAQiB,UAhWA,aAAA,CAgWA;EAYjB,IAAY,EAAA,QAAA;EAES;EAAnB,SAAA,EAAA,MAAA;EAF2C;;AAK7C;AAEA;EAMA,iBAAiB,EAAA,MAAA;EAKjB;EAMA,SAAiB,EAAA,MAAA;EAKjB;AAOA;;;EAC2B,iBAAA,EAAA,MAAA;;AAI3B;;;;AAGgB,UAlYC,IAAA,CAkYD;EAAA;AAGhB;AAKA;AAKA;EACQ,eAAA,EAAA,MAAA;EAEG;;;;EAKX,aAAiB,EAAA,MAAA;EACT;;;;;AAOR;AAOA;EAKA,aAAiB,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAtXD,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4ChB,gBAAA;;;;;;;;;;;SAWR;;;;;;;QAOD;;;SAIC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0CG,kBAAA,GAAqB;KAGrB,YAAA;KAOA,UAAA;KAEA,cAAA;KAEA,aAAA;UAEK,eAAA;UACP,kBAAkB;;;cAGd;;;;;;;UAYG,eAAA,SAAwB;;;;mBAItB;;iBAIF;;;;UAUA,mBAAA,SACP,SACN,KACE;;;;;UAaW,yBAAA;iBACA;iBACA;aACJ;;KAGD,4BAAA,WACH,8BACJ;KAEO,kBAAA,UACJ,iBACH;KAEO,kBAAA,GAAqB,eAAe;KAEpC,cAAA;KAEP,sBAAsB;;;YAEX;;KAEJ;;IAER,iBAAiB;KAET;QACJ;;IAEJ,iBAAiB;UAEJ,OAAA;;;;KAKL,SAAA,GAAY,UAAU;KAKtB,SAAA;UAMK,QAAA;QACT;;;;;UAMS,iBAAA;aACJ,wDAAwD;;UAGpD,cAAA;;;;;;UAOA,kBAAA;;;eAGF;iBACE;;;UAIA,sBAAA,SACP,KAAK;;kBAEG;YACN;;UAGK,uBAAA;;;eAGF;WACJ;;;;eAII;WACJ;;;;;UAMM,iBAAA;;eAEF;iBACE;;;;UAKA,QAAA;;;;;;;;;;;KAYL,iCAAiC,eAE3C,mBAAmB;KAGT,mBAAA;UAEK,gBAAA;QACT;;;;UAKS,qBAAA;iBACA;iBACA;;UAGA,gBAAA;QACT;;;;UAKS,mBAAA;;;;UAKA,qBAAA;;;;kBAIC,YAAY;;UAGb,iBAAA;SACR,kBAAkB,yBAAyB;;;UAInC,iBAAA;SACR,kBAAkB,yBAAyB;;gBAEpC;;UAGC,gBAAA;UACP;WACC;;UAGM,gBAAA;UACP;WACC;;UAGM,oBAAA;QACT;;WAEG;UACD;eACK;;UAGE,oBAAA;QACT;;WAEG;UACD;eACK;;UAGE,WAAA;;;;;;UAOA,YAAA;;;;UAKA,kBAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DiffLineAnnotation } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/areDiffLineAnnotationsEqual.d.ts
|
|
4
|
+
declare function areDiffLineAnnotationsEqual<LAnnotation = undefined>(annotationA: DiffLineAnnotation<LAnnotation>, annotationB: DiffLineAnnotation<LAnnotation>): boolean;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { areDiffLineAnnotationsEqual };
|
|
7
|
+
//# sourceMappingURL=areDiffLineAnnotationsEqual.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areDiffLineAnnotationsEqual.d.ts","names":[],"sources":["../../src/utils/areDiffLineAnnotationsEqual.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,kEACD,mBAAmB,2BACnB,mBAAmB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/areDiffLineAnnotationsEqual.ts
|
|
2
|
+
function areDiffLineAnnotationsEqual(annotationA, annotationB) {
|
|
3
|
+
return annotationA.lineNumber === annotationB.lineNumber && annotationA.side === annotationB.side && annotationA.metadata === annotationB.metadata;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { areDiffLineAnnotationsEqual };
|
|
8
|
+
//# sourceMappingURL=areDiffLineAnnotationsEqual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areDiffLineAnnotationsEqual.js","names":[],"sources":["../../src/utils/areDiffLineAnnotationsEqual.ts"],"sourcesContent":["import type { DiffLineAnnotation } from 'src/types';\n\nexport function areDiffLineAnnotationsEqual<LAnnotation = undefined>(\n annotationA: DiffLineAnnotation<LAnnotation>,\n annotationB: DiffLineAnnotation<LAnnotation>\n): boolean {\n return (\n annotationA.lineNumber === annotationB.lineNumber &&\n annotationA.side === annotationB.side &&\n annotationA.metadata === annotationB.metadata\n );\n}\n"],"mappings":";AAEA,SAAgB,4BACd,aACA,aACS;AACT,QACE,YAAY,eAAe,YAAY,cACvC,YAAY,SAAS,YAAY,QACjC,YAAY,aAAa,YAAY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areHunkDataEqual.d.ts","names":[],"sources":["../../src/utils/areHunkDataEqual.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,gBAAA,QAAwB,iBAAiB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/areHunkDataEqual.ts
|
|
2
|
+
function areHunkDataEqual(hunkA, hunkB) {
|
|
3
|
+
return hunkA.slotName === hunkB.slotName && hunkA.hunkIndex === hunkB.hunkIndex && hunkA.lines === hunkB.lines && hunkA.type === hunkB.type && hunkA.expandable?.chunked === hunkB.expandable?.chunked && hunkA.expandable?.up === hunkB.expandable?.up && hunkA.expandable?.down === hunkB.expandable?.down;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { areHunkDataEqual };
|
|
8
|
+
//# sourceMappingURL=areHunkDataEqual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areHunkDataEqual.js","names":[],"sources":["../../src/utils/areHunkDataEqual.ts"],"sourcesContent":["import type { HunkData } from '../types';\n\nexport function areHunkDataEqual(hunkA: HunkData, hunkB: HunkData): boolean {\n return (\n hunkA.slotName === hunkB.slotName &&\n hunkA.hunkIndex === hunkB.hunkIndex &&\n hunkA.lines === hunkB.lines &&\n hunkA.type === hunkB.type &&\n hunkA.expandable?.chunked === hunkB.expandable?.chunked &&\n hunkA.expandable?.up === hunkB.expandable?.up &&\n hunkA.expandable?.down === hunkB.expandable?.down\n );\n}\n"],"mappings":";AAEA,SAAgB,iBAAiB,OAAiB,OAA0B;AAC1E,QACE,MAAM,aAAa,MAAM,YACzB,MAAM,cAAc,MAAM,aAC1B,MAAM,UAAU,MAAM,SACtB,MAAM,SAAS,MAAM,QACrB,MAAM,YAAY,YAAY,MAAM,YAAY,WAChD,MAAM,YAAY,OAAO,MAAM,YAAY,MAC3C,MAAM,YAAY,SAAS,MAAM,YAAY"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LineAnnotation } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/areLineAnnotationsEqual.d.ts
|
|
4
|
+
declare function areLineAnnotationsEqual<LAnnotation = undefined>(annotationA: LineAnnotation<LAnnotation>, annotationB: LineAnnotation<LAnnotation>): boolean;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { areLineAnnotationsEqual };
|
|
7
|
+
//# sourceMappingURL=areLineAnnotationsEqual.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areLineAnnotationsEqual.d.ts","names":[],"sources":["../../src/utils/areLineAnnotationsEqual.ts"],"sourcesContent":[],"mappings":";;;iBAEgB,8DACD,eAAe,2BACf,eAAe"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/utils/areLineAnnotationsEqual.ts
|
|
2
|
+
function areLineAnnotationsEqual(annotationA, annotationB) {
|
|
3
|
+
return annotationA.lineNumber === annotationB.lineNumber && annotationA.metadata === annotationB.metadata;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { areLineAnnotationsEqual };
|
|
8
|
+
//# sourceMappingURL=areLineAnnotationsEqual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areLineAnnotationsEqual.js","names":[],"sources":["../../src/utils/areLineAnnotationsEqual.ts"],"sourcesContent":["import type { LineAnnotation } from '../types';\n\nexport function areLineAnnotationsEqual<LAnnotation = undefined>(\n annotationA: LineAnnotation<LAnnotation>,\n annotationB: LineAnnotation<LAnnotation>\n): boolean {\n return (\n annotationA.lineNumber === annotationB.lineNumber &&\n annotationA.metadata === annotationB.metadata\n );\n}\n"],"mappings":";AAEA,SAAgB,wBACd,aACA,aACS;AACT,QACE,YAAY,eAAe,YAAY,cACvC,YAAY,aAAa,YAAY"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PrePropertiesConfig } from "../types.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/arePrePropertiesEqual.d.ts
|
|
4
|
+
declare function arePrePropertiesEqual(propsA: PrePropertiesConfig | undefined, propsB: PrePropertiesConfig | undefined): boolean;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { arePrePropertiesEqual };
|
|
7
|
+
//# sourceMappingURL=arePrePropertiesEqual.d.ts.map
|