@pierre/diffs 1.2.11 → 1.2.12
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/README.md +9 -9
- package/dist/components/CodeView.d.ts +10 -11
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +7 -8
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts +1 -4
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +13 -11
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +11 -14
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +15 -13
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts +0 -1
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +4 -4
- package/dist/components/FileStream.js.map +1 -1
- package/dist/components/UnresolvedFile.d.ts +2 -2
- package/dist/components/UnresolvedFile.d.ts.map +1 -1
- package/dist/components/UnresolvedFile.js +7 -5
- package/dist/components/UnresolvedFile.js.map +1 -1
- package/dist/components/VirtualizedFile.d.ts +0 -1
- package/dist/components/VirtualizedFile.d.ts.map +1 -1
- package/dist/components/VirtualizedFile.js +19 -18
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.d.ts +2 -3
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +17 -18
- package/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/dist/components/Virtualizer.d.ts +1 -1
- package/dist/components/Virtualizer.d.ts.map +1 -1
- package/dist/components/Virtualizer.js +23 -24
- package/dist/components/Virtualizer.js.map +1 -1
- package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
- package/dist/components/web-components.d.ts.map +1 -1
- package/dist/components/web-components.js +2 -3
- package/dist/components/web-components.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
- package/dist/highlighter/languages/areLanguagesAttached.js +1 -2
- package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts +0 -2
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.js +1 -2
- package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
- package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/cleanUpResolvedLanguages.js +1 -2
- package/dist/highlighter/languages/cleanUpResolvedLanguages.js.map +1 -1
- package/dist/highlighter/languages/constants.d.ts +0 -1
- package/dist/highlighter/languages/constants.d.ts.map +1 -1
- package/dist/highlighter/languages/constants.js +1 -1
- package/dist/highlighter/languages/constants.js.map +1 -1
- package/dist/highlighter/languages/getResolvedLanguages.d.ts +0 -2
- package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/getResolvedLanguages.js +1 -2
- package/dist/highlighter/languages/getResolvedLanguages.js.map +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +0 -2
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.js +1 -2
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.js.map +1 -1
- package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/hasResolvedLanguages.js +1 -2
- package/dist/highlighter/languages/hasResolvedLanguages.js.map +1 -1
- package/dist/highlighter/languages/registerCustomLanguage.d.ts +0 -1
- package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/registerCustomLanguage.js +1 -2
- package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts +0 -2
- package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/resolveLanguage.js +4 -5
- package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
- package/dist/highlighter/languages/resolveLanguages.d.ts +0 -2
- package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/resolveLanguages.js +1 -2
- package/dist/highlighter/languages/resolveLanguages.js.map +1 -1
- package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.js +3 -4
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
- package/dist/highlighter/themes/areThemesAttached.js +1 -2
- package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.js +1 -2
- package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.js +1 -2
- package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/constants.d.ts.map +1 -1
- package/dist/highlighter/themes/constants.js +1 -1
- package/dist/highlighter/themes/constants.js.map +1 -1
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js +1 -2
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.js +1 -2
- package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.js +1 -2
- package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +1 -2
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.js +1 -2
- package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
- package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveTheme.js +1 -2
- package/dist/highlighter/themes/resolveTheme.js.map +1 -1
- package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveThemes.js +1 -2
- package/dist/highlighter/themes/resolveThemes.js.map +1 -1
- package/dist/highlighter/themes/themeResolution.d.ts.map +1 -1
- package/dist/highlighter/themes/themeResolution.js +1 -2
- package/dist/highlighter/themes/themeResolution.js.map +1 -1
- package/dist/highlighter/themes/themeResolver.d.ts +2 -2
- package/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
- package/dist/highlighter/themes/themeResolver.js +1 -2
- package/dist/highlighter/themes/themeResolver.js.map +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.js +1 -2
- package/dist/managers/InteractionManager.d.ts.map +1 -1
- package/dist/managers/InteractionManager.js +3 -3
- package/dist/managers/InteractionManager.js.map +1 -1
- package/dist/managers/ResizeManager.d.ts.map +1 -1
- package/dist/managers/ResizeManager.js +1 -1
- package/dist/managers/ResizeManager.js.map +1 -1
- package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
- package/dist/managers/ScrollSyncManager.js +1 -1
- package/dist/managers/ScrollSyncManager.js.map +1 -1
- package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
- package/dist/managers/UniversalRenderingManager.js +2 -2
- package/dist/managers/UniversalRenderingManager.js.map +1 -1
- package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +228 -0
- package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts +84 -0
- package/dist/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts.map +1 -0
- package/dist/react/CodeView.d.ts +0 -1
- package/dist/react/CodeView.d.ts.map +1 -1
- package/dist/react/CodeView.js +9 -12
- package/dist/react/CodeView.js.map +1 -1
- package/dist/react/File.d.ts.map +1 -1
- package/dist/react/File.js +2 -5
- package/dist/react/File.js.map +1 -1
- package/dist/react/FileDiff.d.ts.map +1 -1
- package/dist/react/FileDiff.js +2 -5
- package/dist/react/FileDiff.js.map +1 -1
- package/dist/react/MultiFileDiff.d.ts.map +1 -1
- package/dist/react/MultiFileDiff.js +2 -5
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/PatchDiff.d.ts.map +1 -1
- package/dist/react/PatchDiff.js +2 -5
- package/dist/react/PatchDiff.js.map +1 -1
- package/dist/react/UnresolvedFile.d.ts +1 -1
- package/dist/react/UnresolvedFile.d.ts.map +1 -1
- package/dist/react/UnresolvedFile.js +2 -5
- package/dist/react/UnresolvedFile.js.map +1 -1
- package/dist/react/Virtualizer.d.ts.map +1 -1
- package/dist/react/Virtualizer.js +2 -5
- package/dist/react/Virtualizer.js.map +1 -1
- package/dist/react/WorkerPoolContext.d.ts +0 -1
- package/dist/react/WorkerPoolContext.d.ts.map +1 -1
- package/dist/react/WorkerPoolContext.js +2 -5
- package/dist/react/WorkerPoolContext.js.map +1 -1
- package/dist/react/constants.d.ts.map +1 -1
- package/dist/react/constants.js +1 -1
- package/dist/react/constants.js.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.js +1 -2
- package/dist/react/jsx.d.ts +0 -2
- package/dist/react/jsx.d.ts.map +1 -1
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.js +4 -5
- package/dist/react/utils/renderDiffChildren.js.map +1 -1
- package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
- package/dist/react/utils/renderFileChildren.js +4 -5
- package/dist/react/utils/renderFileChildren.js.map +1 -1
- package/dist/react/utils/templateRender.d.ts.map +1 -1
- package/dist/react/utils/templateRender.js +1 -2
- package/dist/react/utils/templateRender.js.map +1 -1
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js +1 -2
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/react/utils/useFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileInstance.js +1 -2
- package/dist/react/utils/useFileInstance.js.map +1 -1
- package/dist/react/utils/useStableCallback.d.ts.map +1 -1
- package/dist/react/utils/useStableCallback.js +1 -2
- package/dist/react/utils/useStableCallback.js.map +1 -1
- package/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useUnresolvedFileInstance.js +10 -11
- package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts +1 -2
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +23 -20
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +1 -3
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +13 -11
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/renderers/UnresolvedFileHunksRenderer.d.ts +1 -2
- package/dist/renderers/UnresolvedFileHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/UnresolvedFileHunksRenderer.js +1 -2
- package/dist/renderers/UnresolvedFileHunksRenderer.js.map +1 -1
- package/dist/shiki-stream/index.js +1 -2
- package/dist/shiki-stream/stream.d.ts +0 -1
- package/dist/shiki-stream/stream.d.ts.map +1 -1
- package/dist/shiki-stream/stream.js +1 -2
- package/dist/shiki-stream/stream.js.map +1 -1
- package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
- package/dist/shiki-stream/tokenizer.js +1 -1
- package/dist/shiki-stream/tokenizer.js.map +1 -1
- package/dist/shiki-stream/types.d.ts +0 -1
- package/dist/shiki-stream/types.d.ts.map +1 -1
- package/dist/sprite.d.ts.map +1 -1
- package/dist/sprite.js +1 -1
- package/dist/ssr/FileDiffReact.d.ts.map +1 -1
- package/dist/ssr/FileDiffReact.js +4 -7
- package/dist/ssr/FileDiffReact.js.map +1 -1
- package/dist/ssr/index.d.ts +1 -1
- package/dist/ssr/index.js +1 -2
- package/dist/ssr/preloadDiffs.d.ts +1 -1
- package/dist/ssr/preloadDiffs.d.ts.map +1 -1
- package/dist/ssr/preloadDiffs.js +1 -2
- package/dist/ssr/preloadDiffs.js.map +1 -1
- package/dist/ssr/preloadFile.d.ts.map +1 -1
- package/dist/ssr/preloadFile.js +1 -2
- package/dist/ssr/preloadFile.js.map +1 -1
- package/dist/ssr/preloadPatchFile.d.ts.map +1 -1
- package/dist/ssr/preloadPatchFile.js +2 -3
- package/dist/ssr/preloadPatchFile.js.map +1 -1
- package/dist/ssr/renderHTML.d.ts +1 -1
- package/dist/ssr/renderHTML.d.ts.map +1 -1
- package/dist/ssr/renderHTML.js +1 -2
- package/dist/ssr/renderHTML.js.map +1 -1
- package/dist/string-import.d.ts +4 -0
- package/dist/string-import.d.ts.map +1 -1
- package/dist/style.js +3 -3
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -1
- package/dist/utils/areDiffLineAnnotationsEqual.js +1 -1
- package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -1
- package/dist/utils/areDiffRenderOptionsEqual.d.ts.map +1 -1
- package/dist/utils/areDiffRenderOptionsEqual.js +1 -2
- package/dist/utils/areDiffRenderOptionsEqual.js.map +1 -1
- package/dist/utils/areDiffTargetsEqual.d.ts.map +1 -1
- package/dist/utils/areDiffTargetsEqual.js +1 -1
- package/dist/utils/areDiffTargetsEqual.js.map +1 -1
- package/dist/utils/areFileRenderOptionsEqual.d.ts.map +1 -1
- package/dist/utils/areFileRenderOptionsEqual.js +1 -2
- package/dist/utils/areFileRenderOptionsEqual.js.map +1 -1
- package/dist/utils/areFilesEqual.d.ts.map +1 -1
- package/dist/utils/areFilesEqual.js +1 -1
- package/dist/utils/areFilesEqual.js.map +1 -1
- package/dist/utils/areHunkDataEqual.d.ts.map +1 -1
- package/dist/utils/areHunkDataEqual.js +1 -1
- package/dist/utils/areHunkDataEqual.js.map +1 -1
- package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -1
- package/dist/utils/areLineAnnotationsEqual.js +1 -1
- package/dist/utils/areLineAnnotationsEqual.js.map +1 -1
- package/dist/utils/areManagedSnapshotsEqual.d.ts.map +1 -1
- package/dist/utils/areManagedSnapshotsEqual.js +1 -1
- package/dist/utils/areManagedSnapshotsEqual.js.map +1 -1
- package/dist/utils/areMergeConflictActionsEqual.d.ts.map +1 -1
- package/dist/utils/areMergeConflictActionsEqual.js +1 -1
- package/dist/utils/areMergeConflictActionsEqual.js.map +1 -1
- package/dist/utils/areObjectsEqual.d.ts.map +1 -1
- package/dist/utils/areObjectsEqual.js +1 -1
- package/dist/utils/areObjectsEqual.js.map +1 -1
- package/dist/utils/areOptionsEqual.d.ts +0 -2
- package/dist/utils/areOptionsEqual.d.ts.map +1 -1
- package/dist/utils/areOptionsEqual.js +1 -2
- package/dist/utils/areOptionsEqual.js.map +1 -1
- package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -1
- package/dist/utils/arePrePropertiesEqual.js +1 -1
- package/dist/utils/arePrePropertiesEqual.js.map +1 -1
- package/dist/utils/areRenderRangesEqual.d.ts.map +1 -1
- package/dist/utils/areRenderRangesEqual.js +1 -1
- package/dist/utils/areRenderRangesEqual.js.map +1 -1
- package/dist/utils/areSelectionPointsEqual.d.ts.map +1 -1
- package/dist/utils/areSelectionPointsEqual.js +1 -1
- package/dist/utils/areSelectionPointsEqual.js.map +1 -1
- package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
- package/dist/utils/areSelectionsEqual.js +1 -1
- package/dist/utils/areSelectionsEqual.js.map +1 -1
- package/dist/utils/areThemesEqual.d.ts.map +1 -1
- package/dist/utils/areThemesEqual.js +1 -1
- package/dist/utils/areThemesEqual.js.map +1 -1
- package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -1
- package/dist/utils/areVirtualWindowSpecsEqual.js +1 -1
- package/dist/utils/areVirtualWindowSpecsEqual.js.map +1 -1
- package/dist/utils/areWorkerStatsEqual.d.ts +0 -2
- package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -1
- package/dist/utils/areWorkerStatsEqual.js +1 -1
- package/dist/utils/areWorkerStatsEqual.js.map +1 -1
- package/dist/utils/cleanLastNewline.d.ts.map +1 -1
- package/dist/utils/cleanLastNewline.js +1 -1
- package/dist/utils/cleanLastNewline.js.map +1 -1
- package/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -1
- package/dist/utils/computeEstimatedDiffHeights.js +1 -2
- package/dist/utils/computeEstimatedDiffHeights.js.map +1 -1
- package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
- package/dist/utils/computeVirtualFileMetrics.js +1 -2
- package/dist/utils/computeVirtualFileMetrics.js.map +1 -1
- package/dist/utils/createAnnotationElement.d.ts +1 -1
- package/dist/utils/createAnnotationElement.d.ts.map +1 -1
- package/dist/utils/createAnnotationElement.js +1 -2
- package/dist/utils/createAnnotationElement.js.map +1 -1
- package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
- package/dist/utils/createAnnotationWrapperNode.js +1 -1
- package/dist/utils/createAnnotationWrapperNode.js.map +1 -1
- package/dist/utils/createContentColumn.d.ts +1 -1
- package/dist/utils/createContentColumn.d.ts.map +1 -1
- package/dist/utils/createContentColumn.js +1 -2
- package/dist/utils/createContentColumn.js.map +1 -1
- package/dist/utils/createEmptyRowBuffer.d.ts +1 -1
- package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
- package/dist/utils/createEmptyRowBuffer.js +1 -2
- package/dist/utils/createEmptyRowBuffer.js.map +1 -1
- package/dist/utils/createFileHeaderElement.d.ts +1 -1
- package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
- package/dist/utils/createFileHeaderElement.js +1 -2
- package/dist/utils/createFileHeaderElement.js.map +1 -1
- package/dist/utils/createGutterUtilityContentNode.d.ts.map +1 -1
- package/dist/utils/createGutterUtilityContentNode.js +1 -1
- package/dist/utils/createGutterUtilityContentNode.js.map +1 -1
- package/dist/utils/createGutterUtilityElement.d.ts +1 -1
- package/dist/utils/createGutterUtilityElement.d.ts.map +1 -1
- package/dist/utils/createGutterUtilityElement.js +1 -2
- package/dist/utils/createGutterUtilityElement.js.map +1 -1
- package/dist/utils/createNoNewlineElement.d.ts +1 -1
- package/dist/utils/createNoNewlineElement.d.ts.map +1 -1
- package/dist/utils/createNoNewlineElement.js +1 -2
- package/dist/utils/createNoNewlineElement.js.map +1 -1
- package/dist/utils/createPreElement.d.ts +1 -1
- package/dist/utils/createPreElement.d.ts.map +1 -1
- package/dist/utils/createPreElement.js +1 -3
- package/dist/utils/createPreElement.js.map +1 -1
- package/dist/utils/createRowNodes.d.ts.map +1 -1
- package/dist/utils/createRowNodes.js +1 -1
- package/dist/utils/createRowNodes.js.map +1 -1
- package/dist/utils/createSeparator.d.ts +1 -1
- package/dist/utils/createSeparator.d.ts.map +1 -1
- package/dist/utils/createSeparator.js +1 -2
- package/dist/utils/createSeparator.js.map +1 -1
- package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
- package/dist/utils/createSpanNodeFromToken.js +1 -2
- package/dist/utils/createSpanNodeFromToken.js.map +1 -1
- package/dist/utils/createStyleElement.d.ts +1 -1
- package/dist/utils/createStyleElement.d.ts.map +1 -1
- package/dist/utils/createStyleElement.js +1 -2
- package/dist/utils/createStyleElement.js.map +1 -1
- package/dist/utils/createTransformerWithState.d.ts.map +1 -1
- package/dist/utils/createTransformerWithState.js +1 -2
- package/dist/utils/createTransformerWithState.js.map +1 -1
- package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
- package/dist/utils/createUnsafeCSSStyleNode.js +1 -2
- package/dist/utils/createUnsafeCSSStyleNode.js.map +1 -1
- package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
- package/dist/utils/createWindowFromScrollPosition.js +5 -5
- package/dist/utils/createWindowFromScrollPosition.js.map +1 -1
- package/dist/utils/cssWrappers.d.ts.map +1 -1
- package/dist/utils/cssWrappers.js +2 -3
- package/dist/utils/cssWrappers.js.map +1 -1
- package/dist/utils/detachString.d.ts.map +1 -1
- package/dist/utils/detachString.js +1 -1
- package/dist/utils/detachString.js.map +1 -1
- package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
- package/dist/utils/diffAcceptRejectHunk.js +1 -2
- package/dist/utils/diffAcceptRejectHunk.js.map +1 -1
- package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
- package/dist/utils/formatCSSVariablePrefix.js +1 -1
- package/dist/utils/formatCSSVariablePrefix.js.map +1 -1
- package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
- package/dist/utils/getDiffHunksRendererOptions.js +1 -1
- package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
- package/dist/utils/getFileRendererOptions.d.ts.map +1 -1
- package/dist/utils/getFileRendererOptions.js +1 -1
- package/dist/utils/getFileRendererOptions.js.map +1 -1
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.js +1 -1
- package/dist/utils/getFiletypeFromFileName.js.map +1 -1
- package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
- package/dist/utils/getHighlighterOptions.js +1 -2
- package/dist/utils/getHighlighterOptions.js.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.js +1 -2
- package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
- package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
- package/dist/utils/getHunkSeparatorSlotName.js +1 -1
- package/dist/utils/getHunkSeparatorSlotName.js.map +1 -1
- package/dist/utils/getIconForType.d.ts.map +1 -1
- package/dist/utils/getIconForType.js +1 -1
- package/dist/utils/getIconForType.js.map +1 -1
- package/dist/utils/getLineAnnotationName.d.ts.map +1 -1
- package/dist/utils/getLineAnnotationName.js +1 -1
- package/dist/utils/getLineAnnotationName.js.map +1 -1
- package/dist/utils/getLineEndingType.d.ts.map +1 -1
- package/dist/utils/getLineEndingType.js +1 -1
- package/dist/utils/getLineEndingType.js.map +1 -1
- package/dist/utils/getLineNodes.d.ts +1 -1
- package/dist/utils/getLineNodes.d.ts.map +1 -1
- package/dist/utils/getLineNodes.js +1 -1
- package/dist/utils/getLineNodes.js.map +1 -1
- package/dist/utils/getMergeConflictActionSlotName.d.ts.map +1 -1
- package/dist/utils/getMergeConflictActionSlotName.js +1 -1
- package/dist/utils/getMergeConflictActionSlotName.js.map +1 -1
- package/dist/utils/getMergeConflictLineTypes.d.ts.map +1 -1
- package/dist/utils/getMergeConflictLineTypes.js +1 -2
- package/dist/utils/getMergeConflictLineTypes.js.map +1 -1
- package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
- package/dist/utils/getOrCreateCodeNode.js +1 -1
- package/dist/utils/getOrCreateCodeNode.js.map +1 -1
- package/dist/utils/getSingularPatch.d.ts.map +1 -1
- package/dist/utils/getSingularPatch.js +1 -2
- package/dist/utils/getSingularPatch.js.map +1 -1
- package/dist/utils/getThemes.d.ts.map +1 -1
- package/dist/utils/getThemes.js +1 -2
- package/dist/utils/getThemes.js.map +1 -1
- package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
- package/dist/utils/getTotalLineCountFromHunks.js +1 -1
- package/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
- package/dist/utils/hast_utils.d.ts +1 -1
- package/dist/utils/hast_utils.d.ts.map +1 -1
- package/dist/utils/hast_utils.js +1 -1
- package/dist/utils/hast_utils.js.map +1 -1
- package/dist/utils/hostTheme.d.ts.map +1 -1
- package/dist/utils/hostTheme.js +1 -2
- package/dist/utils/hostTheme.js.map +1 -1
- package/dist/utils/includesFileAnnotations.d.ts.map +1 -1
- package/dist/utils/includesFileAnnotations.js +5 -5
- package/dist/utils/includesFileAnnotations.js.map +1 -1
- package/dist/utils/isDefaultRenderRange.d.ts.map +1 -1
- package/dist/utils/isDefaultRenderRange.js +1 -1
- package/dist/utils/isDefaultRenderRange.js.map +1 -1
- package/dist/utils/isDiffPlainText.d.ts.map +1 -1
- package/dist/utils/isDiffPlainText.js +1 -2
- package/dist/utils/isDiffPlainText.js.map +1 -1
- package/dist/utils/isFilePlainText.d.ts.map +1 -1
- package/dist/utils/isFilePlainText.js +1 -2
- package/dist/utils/isFilePlainText.js.map +1 -1
- package/dist/utils/isStyleNode.d.ts.map +1 -1
- package/dist/utils/isStyleNode.js +1 -1
- package/dist/utils/isStyleNode.js.map +1 -1
- package/dist/utils/isWorkerContext.d.ts.map +1 -1
- package/dist/utils/isWorkerContext.js +1 -1
- package/dist/utils/isWorkerContext.js.map +1 -1
- package/dist/utils/iterateOverDiff.d.ts.map +1 -1
- package/dist/utils/iterateOverDiff.js +44 -45
- package/dist/utils/iterateOverDiff.js.map +1 -1
- package/dist/utils/iterateOverFile.d.ts.map +1 -1
- package/dist/utils/iterateOverFile.js +1 -1
- package/dist/utils/iterateOverFile.js.map +1 -1
- package/dist/utils/normalizeDiffResolution.d.ts.map +1 -1
- package/dist/utils/normalizeDiffResolution.js +1 -1
- package/dist/utils/normalizeDiffResolution.js.map +1 -1
- package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
- package/dist/utils/parseDiffDecorations.js +1 -2
- package/dist/utils/parseDiffDecorations.js.map +1 -1
- package/dist/utils/parseDiffFromFile.d.ts +0 -1
- package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
- package/dist/utils/parseDiffFromFile.js +1 -2
- package/dist/utils/parseDiffFromFile.js.map +1 -1
- package/dist/utils/parseLineType.d.ts.map +1 -1
- package/dist/utils/parseLineType.js +1 -1
- package/dist/utils/parseLineType.js.map +1 -1
- package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
- package/dist/utils/parseMergeConflictDiffFromFile.js +5 -5
- package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
- package/dist/utils/parsePatchFiles.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.js +6 -7
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/prefersReducedMotion.d.ts.map +1 -1
- package/dist/utils/prefersReducedMotion.js +1 -1
- package/dist/utils/prefersReducedMotion.js.map +1 -1
- package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
- package/dist/utils/prerenderHTMLIfNecessary.js +1 -1
- package/dist/utils/prerenderHTMLIfNecessary.js.map +1 -1
- package/dist/utils/processLine.d.ts +1 -1
- package/dist/utils/processLine.d.ts.map +1 -1
- package/dist/utils/processLine.js +1 -2
- package/dist/utils/processLine.js.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +4 -5
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
- package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +1 -2
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/resolveConflict.d.ts.map +1 -1
- package/dist/utils/resolveConflict.js +1 -2
- package/dist/utils/resolveConflict.js.map +1 -1
- package/dist/utils/resolveRegion.d.ts.map +1 -1
- package/dist/utils/resolveRegion.js +1 -1
- package/dist/utils/resolveRegion.js.map +1 -1
- package/dist/utils/roundToDevicePixel.d.ts.map +1 -1
- package/dist/utils/roundToDevicePixel.js +1 -1
- package/dist/utils/roundToDevicePixel.js.map +1 -1
- package/dist/utils/scrollbarGutter.d.ts.map +1 -1
- package/dist/utils/scrollbarGutter.js +1 -2
- package/dist/utils/scrollbarGutter.js.map +1 -1
- package/dist/utils/setLanguageOverride.d.ts.map +1 -1
- package/dist/utils/setLanguageOverride.js +1 -1
- package/dist/utils/setLanguageOverride.js.map +1 -1
- package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
- package/dist/utils/setWrapperNodeProps.js +1 -2
- package/dist/utils/setWrapperNodeProps.js.map +1 -1
- package/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
- package/dist/utils/shouldUseTokenTransformer.js +1 -1
- package/dist/utils/shouldUseTokenTransformer.js.map +1 -1
- package/dist/utils/splitFileContents.d.ts.map +1 -1
- package/dist/utils/splitFileContents.js +1 -2
- package/dist/utils/splitFileContents.js.map +1 -1
- package/dist/utils/trimPatchContext.d.ts.map +1 -1
- package/dist/utils/trimPatchContext.js +1 -2
- package/dist/utils/trimPatchContext.js.map +1 -1
- package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
- package/dist/utils/virtualDiffLayout.js +1 -2
- package/dist/utils/virtualDiffLayout.js.map +1 -1
- package/dist/utils/wrapTokenFragments.d.ts +1 -1
- package/dist/utils/wrapTokenFragments.d.ts.map +1 -1
- package/dist/utils/wrapTokenFragments.js +1 -2
- package/dist/utils/wrapTokenFragments.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +5 -5
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
- package/dist/worker/getOrCreateWorkerPoolSingleton.js +1 -2
- package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
- package/dist/worker/index.js +1 -2
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/wasm-B9ZqxnKj.js +8 -0
- package/dist/worker/wasm-B9ZqxnKj.js.map +1 -0
- package/dist/worker/worker-portable.js +2763 -6368
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +89 -124
- package/dist/worker/worker.js.map +1 -1
- package/package.json +15 -13
- package/dist/worker/wasm-qE0LgnY3.js +0 -10
- package/dist/worker/wasm-qE0LgnY3.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveRegion.js","names":["resolvedDiff: FileDiffMetadata","cursor: CursorState","newHunk: Hunk","newContent: ContextContent"],"sources":["../../src/utils/resolveRegion.ts"],"sourcesContent":["import type {\n ChangeContent,\n ContextContent,\n FileDiffMetadata,\n Hunk,\n} from '../types';\n\ninterface RegionResolutionTarget {\n hunkIndex: number;\n startContentIndex: number;\n endContentIndex: number;\n resolution: 'deletions' | 'additions' | 'both';\n indexesToDelete?: Set<number>;\n}\n\ninterface CursorState {\n nextAdditionLineIndex: number;\n nextDeletionLineIndex: number;\n nextAdditionStart: number;\n nextDeletionStart: number;\n splitLineCount: number;\n unifiedLineCount: number;\n}\n\nexport function resolveRegion(\n diff: FileDiffMetadata,\n target: RegionResolutionTarget\n): FileDiffMetadata {\n const {\n resolution,\n hunkIndex,\n startContentIndex,\n endContentIndex,\n indexesToDelete = new Set(),\n } = target;\n const currentHunk = diff.hunks[hunkIndex];\n if (currentHunk == null) {\n console.error({ diff, hunkIndex });\n throw new Error(`resolveRegion: Invalid hunk index: ${hunkIndex}`);\n }\n\n if (\n startContentIndex < 0 ||\n endContentIndex >= currentHunk.hunkContent.length ||\n startContentIndex > endContentIndex\n ) {\n throw new Error(\n `resolveRegion: Invalid content range, ${startContentIndex}, ${endContentIndex}`\n );\n }\n\n const { hunks, additionLines, deletionLines } = diff;\n const resolvedDiff: FileDiffMetadata = {\n ...diff,\n hunks: [],\n deletionLines: [],\n additionLines: [],\n splitLineCount: 0,\n unifiedLineCount: 0,\n cacheKey:\n diff.cacheKey != null\n ? `${diff.cacheKey}:${resolution[0]}-${hunkIndex}:${startContentIndex}-${endContentIndex}`\n : undefined,\n };\n\n const cursor: CursorState = {\n nextAdditionLineIndex: 0,\n nextDeletionLineIndex: 0,\n nextAdditionStart: 1,\n nextDeletionStart: 1,\n splitLineCount: 0,\n unifiedLineCount: 0,\n };\n const updatesEOFState =\n hunkIndex === hunks.length - 1 &&\n endContentIndex === currentHunk.hunkContent.length - 1;\n const shouldProcessCollapsedContext = !diff.isPartial;\n\n for (const [index, hunk] of hunks.entries()) {\n processCollapsedContext(\n diff,\n resolvedDiff,\n cursor,\n hunk.deletionLineIndex - hunk.collapsedBefore,\n hunk.additionLineIndex - hunk.collapsedBefore,\n hunk.collapsedBefore,\n shouldProcessCollapsedContext\n );\n\n const newHunk: Hunk = {\n ...hunk,\n hunkContent: [],\n additionStart: cursor.nextAdditionStart,\n deletionStart: cursor.nextDeletionStart,\n additionLineIndex: cursor.nextAdditionLineIndex,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionCount: 0,\n deletionCount: 0,\n deletionLines: 0,\n additionLines: 0,\n splitLineStart: cursor.splitLineCount,\n unifiedLineStart: cursor.unifiedLineCount,\n splitLineCount: 0,\n unifiedLineCount: 0,\n };\n\n for (const [contentIndex, content] of hunk.hunkContent.entries()) {\n // If we are outside of the targeted hunk or content region\n if (\n index !== hunkIndex ||\n contentIndex < startContentIndex ||\n contentIndex > endContentIndex\n ) {\n pushContentLinesToDiff(\n content,\n resolvedDiff,\n deletionLines,\n additionLines\n );\n const newContent = {\n ...content,\n additionLineIndex: cursor.nextAdditionLineIndex,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n };\n newHunk.hunkContent.push(newContent);\n advanceCursor(newContent, cursor, newHunk);\n }\n // If we are at an index to delete, replace with an empty context node\n else if (indexesToDelete.has(contentIndex)) {\n newHunk.hunkContent.push({\n type: 'context',\n lines: 0,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionLineIndex: cursor.nextAdditionLineIndex,\n });\n }\n // There's nothing to `resolve` with context nodes, so just push them as\n // they are\n else if (content.type === 'context') {\n pushContentLinesToDiff(\n content,\n resolvedDiff,\n deletionLines,\n additionLines\n );\n const newContent: ContextContent = {\n ...content,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionLineIndex: cursor.nextAdditionLineIndex,\n };\n newHunk.hunkContent.push(newContent);\n advanceCursor(newContent, cursor, newHunk);\n }\n // Looks like we have a change to resolve and push\n else {\n pushResolveLinesToDiff(\n resolution,\n content,\n resolvedDiff,\n deletionLines,\n additionLines\n );\n const newContent: ContextContent = {\n type: 'context',\n lines:\n resolution === 'deletions'\n ? content.deletions\n : resolution === 'additions'\n ? content.additions\n : content.deletions + content.additions,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionLineIndex: cursor.nextAdditionLineIndex,\n };\n newHunk.hunkContent.push(newContent);\n advanceCursor(newContent, cursor, newHunk);\n }\n }\n\n if (index === hunkIndex && updatesEOFState) {\n const noEOFCR =\n resolution === 'deletions'\n ? hunk.noEOFCRDeletions\n : hunk.noEOFCRAdditions;\n newHunk.noEOFCRAdditions = noEOFCR;\n newHunk.noEOFCRDeletions = noEOFCR;\n }\n\n resolvedDiff.hunks.push(newHunk);\n }\n\n const finalHunk = hunks.at(-1);\n if (finalHunk != null && !diff.isPartial) {\n pushCollapsedContextLines(\n resolvedDiff,\n deletionLines,\n additionLines,\n finalHunk.deletionLineIndex + finalHunk.deletionCount,\n finalHunk.additionLineIndex + finalHunk.additionCount,\n Math.min(\n deletionLines.length -\n (finalHunk.deletionLineIndex + finalHunk.deletionCount),\n additionLines.length -\n (finalHunk.additionLineIndex + finalHunk.additionCount)\n )\n );\n }\n\n resolvedDiff.splitLineCount = cursor.splitLineCount;\n resolvedDiff.unifiedLineCount = cursor.unifiedLineCount;\n\n return resolvedDiff;\n}\n\nfunction pushCollapsedContextLines(\n diff: FileDiffMetadata,\n deletionLines: string[],\n additionLines: string[],\n deletionLineIndex: number,\n additionLineIndex: number,\n lineCount: number\n) {\n for (let index = 0; index < lineCount; index++) {\n const deletionLine = deletionLines[deletionLineIndex + index];\n const additionLine = additionLines[additionLineIndex + index];\n if (deletionLine == null || additionLine == null) {\n throw new Error(\n 'pushCollapsedContextLines: missing collapsed context line'\n );\n }\n diff.deletionLines.push(deletionLine);\n diff.additionLines.push(additionLine);\n }\n}\n\n// Partial patches track omitted context in `collapsedBefore`, but those lines do\n// not exist in the diff's line arrays. Keep the virtual row counts and file\n// positions in sync without inventing hidden lines.\nfunction processCollapsedContext(\n sourceDiff: FileDiffMetadata,\n resolvedDiff: FileDiffMetadata,\n cursor: CursorState,\n deletionLineIndex: number,\n additionLineIndex: number,\n lineCount: number,\n shouldProcessContent: boolean\n) {\n if (lineCount <= 0) {\n return;\n }\n\n if (shouldProcessContent) {\n pushCollapsedContextLines(\n resolvedDiff,\n sourceDiff.deletionLines,\n sourceDiff.additionLines,\n deletionLineIndex,\n additionLineIndex,\n lineCount\n );\n cursor.nextAdditionLineIndex += lineCount;\n cursor.nextDeletionLineIndex += lineCount;\n }\n\n cursor.nextAdditionStart += lineCount;\n cursor.nextDeletionStart += lineCount;\n cursor.splitLineCount += lineCount;\n cursor.unifiedLineCount += lineCount;\n}\n\nfunction pushContentLinesToDiff(\n content: ContextContent | ChangeContent,\n diff: FileDiffMetadata,\n deletionLines: string[],\n additionLines: string[]\n) {\n if (content.type === 'context') {\n for (let i = 0; i < content.lines; i++) {\n const line = additionLines[content.additionLineIndex + i];\n if (line == null) {\n console.error({ additionLines, content, i });\n throw new Error('pushContentLinesToDiff: Context line does not exist');\n }\n diff.deletionLines.push(line);\n diff.additionLines.push(line);\n }\n } else {\n const len = Math.max(content.deletions, content.additions);\n for (let i = 0; i < len; i++) {\n if (i < content.deletions) {\n const line = deletionLines[content.deletionLineIndex + i];\n if (line == null) {\n console.error({ deletionLines, content, i });\n throw new Error(\n 'pushContentLinesToDiff: Deletion line does not exist'\n );\n }\n diff.deletionLines.push(line);\n }\n if (i < content.additions) {\n const line = additionLines[content.additionLineIndex + i];\n if (line == null) {\n console.error({ additionLines, content, i });\n throw new Error(\n 'pushContentLinesToDiff: Addition line does not exist'\n );\n }\n diff.additionLines.push(line);\n }\n }\n }\n}\n\nfunction pushResolveLinesToDiff(\n resolution: 'deletions' | 'additions' | 'both',\n content: ChangeContent,\n diff: FileDiffMetadata,\n deletionLines: string[],\n additionLines: string[]\n) {\n if (resolution === 'deletions' || resolution === 'both') {\n for (let i = 0; i < content.deletions; i++) {\n const line = deletionLines[content.deletionLineIndex + i];\n if (line == null) {\n console.error({ deletionLines, content, i });\n throw new Error('pushResolveLinesToDiff: Deletion line does not exist');\n }\n diff.deletionLines.push(line);\n diff.additionLines.push(line);\n }\n }\n if (resolution === 'additions' || resolution === 'both') {\n for (let i = 0; i < content.additions; i++) {\n const line = additionLines[content.additionLineIndex + i];\n if (line == null) {\n console.error({ additionLines, content, i });\n throw new Error('pushResolveLinesToDiff: Addition line does not exist');\n }\n diff.deletionLines.push(line);\n diff.additionLines.push(line);\n }\n }\n}\n\nfunction advanceCursor(\n content: ChangeContent | ContextContent,\n cursor: CursorState,\n hunk: Hunk\n) {\n if (content.type === 'context') {\n cursor.nextAdditionLineIndex += content.lines;\n cursor.nextDeletionLineIndex += content.lines;\n cursor.nextAdditionStart += content.lines;\n cursor.nextDeletionStart += content.lines;\n cursor.splitLineCount += content.lines;\n cursor.unifiedLineCount += content.lines;\n\n hunk.additionCount += content.lines;\n hunk.deletionCount += content.lines;\n hunk.splitLineCount += content.lines;\n hunk.unifiedLineCount += content.lines;\n } else {\n cursor.nextAdditionLineIndex += content.additions;\n cursor.nextDeletionLineIndex += content.deletions;\n cursor.nextAdditionStart += content.additions;\n cursor.nextDeletionStart += content.deletions;\n cursor.splitLineCount += Math.max(content.deletions, content.additions);\n cursor.unifiedLineCount += content.deletions + content.additions;\n\n hunk.deletionCount += content.deletions;\n hunk.deletionLines += content.deletions;\n hunk.additionCount += content.additions;\n hunk.additionLines += content.additions;\n hunk.splitLineCount += Math.max(content.deletions, content.additions);\n hunk.unifiedLineCount += content.deletions + content.additions;\n }\n}\n"],"mappings":";AAwBA,SAAgB,cACd,MACA,QACkB;CAClB,MAAM,EACJ,YACA,WACA,mBACA,iBACA,kCAAkB,IAAI,KAAK,KACzB;CACJ,MAAM,cAAc,KAAK,MAAM;AAC/B,KAAI,eAAe,MAAM;AACvB,UAAQ,MAAM;GAAE;GAAM;GAAW,CAAC;AAClC,QAAM,IAAI,MAAM,sCAAsC,YAAY;;AAGpE,KACE,oBAAoB,KACpB,mBAAmB,YAAY,YAAY,UAC3C,oBAAoB,gBAEpB,OAAM,IAAI,MACR,yCAAyC,kBAAkB,IAAI,kBAChE;CAGH,MAAM,EAAE,OAAO,eAAe,kBAAkB;CAChD,MAAMA,eAAiC;EACrC,GAAG;EACH,OAAO,EAAE;EACT,eAAe,EAAE;EACjB,eAAe,EAAE;EACjB,gBAAgB;EAChB,kBAAkB;EAClB,UACE,KAAK,YAAY,OACb,GAAG,KAAK,SAAS,GAAG,WAAW,GAAG,GAAG,UAAU,GAAG,kBAAkB,GAAG,oBACvE;EACP;CAED,MAAMC,SAAsB;EAC1B,uBAAuB;EACvB,uBAAuB;EACvB,mBAAmB;EACnB,mBAAmB;EACnB,gBAAgB;EAChB,kBAAkB;EACnB;CACD,MAAM,kBACJ,cAAc,MAAM,SAAS,KAC7B,oBAAoB,YAAY,YAAY,SAAS;CACvD,MAAM,gCAAgC,CAAC,KAAK;AAE5C,MAAK,MAAM,CAAC,OAAO,SAAS,MAAM,SAAS,EAAE;AAC3C,0BACE,MACA,cACA,QACA,KAAK,oBAAoB,KAAK,iBAC9B,KAAK,oBAAoB,KAAK,iBAC9B,KAAK,iBACL,8BACD;EAED,MAAMC,UAAgB;GACpB,GAAG;GACH,aAAa,EAAE;GACf,eAAe,OAAO;GACtB,eAAe,OAAO;GACtB,mBAAmB,OAAO;GAC1B,mBAAmB,OAAO;GAC1B,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,gBAAgB,OAAO;GACvB,kBAAkB,OAAO;GACzB,gBAAgB;GAChB,kBAAkB;GACnB;AAED,OAAK,MAAM,CAAC,cAAc,YAAY,KAAK,YAAY,SAAS,CAE9D,KACE,UAAU,aACV,eAAe,qBACf,eAAe,iBACf;AACA,0BACE,SACA,cACA,eACA,cACD;GACD,MAAM,aAAa;IACjB,GAAG;IACH,mBAAmB,OAAO;IAC1B,mBAAmB,OAAO;IAC3B;AACD,WAAQ,YAAY,KAAK,WAAW;AACpC,iBAAc,YAAY,QAAQ,QAAQ;aAGnC,gBAAgB,IAAI,aAAa,CACxC,SAAQ,YAAY,KAAK;GACvB,MAAM;GACN,OAAO;GACP,mBAAmB,OAAO;GAC1B,mBAAmB,OAAO;GAC3B,CAAC;WAIK,QAAQ,SAAS,WAAW;AACnC,0BACE,SACA,cACA,eACA,cACD;GACD,MAAMC,aAA6B;IACjC,GAAG;IACH,mBAAmB,OAAO;IAC1B,mBAAmB,OAAO;IAC3B;AACD,WAAQ,YAAY,KAAK,WAAW;AACpC,iBAAc,YAAY,QAAQ,QAAQ;SAGvC;AACH,0BACE,YACA,SACA,cACA,eACA,cACD;GACD,MAAMA,aAA6B;IACjC,MAAM;IACN,OACE,eAAe,cACX,QAAQ,YACR,eAAe,cACb,QAAQ,YACR,QAAQ,YAAY,QAAQ;IACpC,mBAAmB,OAAO;IAC1B,mBAAmB,OAAO;IAC3B;AACD,WAAQ,YAAY,KAAK,WAAW;AACpC,iBAAc,YAAY,QAAQ,QAAQ;;AAI9C,MAAI,UAAU,aAAa,iBAAiB;GAC1C,MAAM,UACJ,eAAe,cACX,KAAK,mBACL,KAAK;AACX,WAAQ,mBAAmB;AAC3B,WAAQ,mBAAmB;;AAG7B,eAAa,MAAM,KAAK,QAAQ;;CAGlC,MAAM,YAAY,MAAM,GAAG,GAAG;AAC9B,KAAI,aAAa,QAAQ,CAAC,KAAK,UAC7B,2BACE,cACA,eACA,eACA,UAAU,oBAAoB,UAAU,eACxC,UAAU,oBAAoB,UAAU,eACxC,KAAK,IACH,cAAc,UACX,UAAU,oBAAoB,UAAU,gBAC3C,cAAc,UACX,UAAU,oBAAoB,UAAU,eAC5C,CACF;AAGH,cAAa,iBAAiB,OAAO;AACrC,cAAa,mBAAmB,OAAO;AAEvC,QAAO;;AAGT,SAAS,0BACP,MACA,eACA,eACA,mBACA,mBACA,WACA;AACA,MAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,SAAS;EAC9C,MAAM,eAAe,cAAc,oBAAoB;EACvD,MAAM,eAAe,cAAc,oBAAoB;AACvD,MAAI,gBAAgB,QAAQ,gBAAgB,KAC1C,OAAM,IAAI,MACR,4DACD;AAEH,OAAK,cAAc,KAAK,aAAa;AACrC,OAAK,cAAc,KAAK,aAAa;;;AAOzC,SAAS,wBACP,YACA,cACA,QACA,mBACA,mBACA,WACA,sBACA;AACA,KAAI,aAAa,EACf;AAGF,KAAI,sBAAsB;AACxB,4BACE,cACA,WAAW,eACX,WAAW,eACX,mBACA,mBACA,UACD;AACD,SAAO,yBAAyB;AAChC,SAAO,yBAAyB;;AAGlC,QAAO,qBAAqB;AAC5B,QAAO,qBAAqB;AAC5B,QAAO,kBAAkB;AACzB,QAAO,oBAAoB;;AAG7B,SAAS,uBACP,SACA,MACA,eACA,eACA;AACA,KAAI,QAAQ,SAAS,UACnB,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,OAAO,KAAK;EACtC,MAAM,OAAO,cAAc,QAAQ,oBAAoB;AACvD,MAAI,QAAQ,MAAM;AAChB,WAAQ,MAAM;IAAE;IAAe;IAAS;IAAG,CAAC;AAC5C,SAAM,IAAI,MAAM,sDAAsD;;AAExE,OAAK,cAAc,KAAK,KAAK;AAC7B,OAAK,cAAc,KAAK,KAAK;;MAE1B;EACL,MAAM,MAAM,KAAK,IAAI,QAAQ,WAAW,QAAQ,UAAU;AAC1D,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,OAAI,IAAI,QAAQ,WAAW;IACzB,MAAM,OAAO,cAAc,QAAQ,oBAAoB;AACvD,QAAI,QAAQ,MAAM;AAChB,aAAQ,MAAM;MAAE;MAAe;MAAS;MAAG,CAAC;AAC5C,WAAM,IAAI,MACR,uDACD;;AAEH,SAAK,cAAc,KAAK,KAAK;;AAE/B,OAAI,IAAI,QAAQ,WAAW;IACzB,MAAM,OAAO,cAAc,QAAQ,oBAAoB;AACvD,QAAI,QAAQ,MAAM;AAChB,aAAQ,MAAM;MAAE;MAAe;MAAS;MAAG,CAAC;AAC5C,WAAM,IAAI,MACR,uDACD;;AAEH,SAAK,cAAc,KAAK,KAAK;;;;;AAMrC,SAAS,uBACP,YACA,SACA,MACA,eACA,eACA;AACA,KAAI,eAAe,eAAe,eAAe,OAC/C,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,WAAW,KAAK;EAC1C,MAAM,OAAO,cAAc,QAAQ,oBAAoB;AACvD,MAAI,QAAQ,MAAM;AAChB,WAAQ,MAAM;IAAE;IAAe;IAAS;IAAG,CAAC;AAC5C,SAAM,IAAI,MAAM,uDAAuD;;AAEzE,OAAK,cAAc,KAAK,KAAK;AAC7B,OAAK,cAAc,KAAK,KAAK;;AAGjC,KAAI,eAAe,eAAe,eAAe,OAC/C,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,WAAW,KAAK;EAC1C,MAAM,OAAO,cAAc,QAAQ,oBAAoB;AACvD,MAAI,QAAQ,MAAM;AAChB,WAAQ,MAAM;IAAE;IAAe;IAAS;IAAG,CAAC;AAC5C,SAAM,IAAI,MAAM,uDAAuD;;AAEzE,OAAK,cAAc,KAAK,KAAK;AAC7B,OAAK,cAAc,KAAK,KAAK;;;AAKnC,SAAS,cACP,SACA,QACA,MACA;AACA,KAAI,QAAQ,SAAS,WAAW;AAC9B,SAAO,yBAAyB,QAAQ;AACxC,SAAO,yBAAyB,QAAQ;AACxC,SAAO,qBAAqB,QAAQ;AACpC,SAAO,qBAAqB,QAAQ;AACpC,SAAO,kBAAkB,QAAQ;AACjC,SAAO,oBAAoB,QAAQ;AAEnC,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,kBAAkB,QAAQ;AAC/B,OAAK,oBAAoB,QAAQ;QAC5B;AACL,SAAO,yBAAyB,QAAQ;AACxC,SAAO,yBAAyB,QAAQ;AACxC,SAAO,qBAAqB,QAAQ;AACpC,SAAO,qBAAqB,QAAQ;AACpC,SAAO,kBAAkB,KAAK,IAAI,QAAQ,WAAW,QAAQ,UAAU;AACvE,SAAO,oBAAoB,QAAQ,YAAY,QAAQ;AAEvD,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,iBAAiB,QAAQ;AAC9B,OAAK,kBAAkB,KAAK,IAAI,QAAQ,WAAW,QAAQ,UAAU;AACrE,OAAK,oBAAoB,QAAQ,YAAY,QAAQ"}
|
|
1
|
+
{"version":3,"file":"resolveRegion.js","names":[],"sources":["../../src/utils/resolveRegion.ts"],"sourcesContent":["import type {\n ChangeContent,\n ContextContent,\n FileDiffMetadata,\n Hunk,\n} from '../types';\n\ninterface RegionResolutionTarget {\n hunkIndex: number;\n startContentIndex: number;\n endContentIndex: number;\n resolution: 'deletions' | 'additions' | 'both';\n indexesToDelete?: Set<number>;\n}\n\ninterface CursorState {\n nextAdditionLineIndex: number;\n nextDeletionLineIndex: number;\n nextAdditionStart: number;\n nextDeletionStart: number;\n splitLineCount: number;\n unifiedLineCount: number;\n}\n\nexport function resolveRegion(\n diff: FileDiffMetadata,\n target: RegionResolutionTarget\n): FileDiffMetadata {\n const {\n resolution,\n hunkIndex,\n startContentIndex,\n endContentIndex,\n indexesToDelete = new Set(),\n } = target;\n const currentHunk = diff.hunks[hunkIndex];\n if (currentHunk == null) {\n console.error({ diff, hunkIndex });\n throw new Error(`resolveRegion: Invalid hunk index: ${hunkIndex}`);\n }\n\n if (\n startContentIndex < 0 ||\n endContentIndex >= currentHunk.hunkContent.length ||\n startContentIndex > endContentIndex\n ) {\n throw new Error(\n `resolveRegion: Invalid content range, ${startContentIndex}, ${endContentIndex}`\n );\n }\n\n const { hunks, additionLines, deletionLines } = diff;\n const resolvedDiff: FileDiffMetadata = {\n ...diff,\n hunks: [],\n deletionLines: [],\n additionLines: [],\n splitLineCount: 0,\n unifiedLineCount: 0,\n cacheKey:\n diff.cacheKey != null\n ? `${diff.cacheKey}:${resolution[0]}-${hunkIndex}:${startContentIndex}-${endContentIndex}`\n : undefined,\n };\n\n const cursor: CursorState = {\n nextAdditionLineIndex: 0,\n nextDeletionLineIndex: 0,\n nextAdditionStart: 1,\n nextDeletionStart: 1,\n splitLineCount: 0,\n unifiedLineCount: 0,\n };\n const updatesEOFState =\n hunkIndex === hunks.length - 1 &&\n endContentIndex === currentHunk.hunkContent.length - 1;\n const shouldProcessCollapsedContext = !diff.isPartial;\n\n for (const [index, hunk] of hunks.entries()) {\n processCollapsedContext(\n diff,\n resolvedDiff,\n cursor,\n hunk.deletionLineIndex - hunk.collapsedBefore,\n hunk.additionLineIndex - hunk.collapsedBefore,\n hunk.collapsedBefore,\n shouldProcessCollapsedContext\n );\n\n const newHunk: Hunk = {\n ...hunk,\n hunkContent: [],\n additionStart: cursor.nextAdditionStart,\n deletionStart: cursor.nextDeletionStart,\n additionLineIndex: cursor.nextAdditionLineIndex,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionCount: 0,\n deletionCount: 0,\n deletionLines: 0,\n additionLines: 0,\n splitLineStart: cursor.splitLineCount,\n unifiedLineStart: cursor.unifiedLineCount,\n splitLineCount: 0,\n unifiedLineCount: 0,\n };\n\n for (const [contentIndex, content] of hunk.hunkContent.entries()) {\n // If we are outside of the targeted hunk or content region\n if (\n index !== hunkIndex ||\n contentIndex < startContentIndex ||\n contentIndex > endContentIndex\n ) {\n pushContentLinesToDiff(\n content,\n resolvedDiff,\n deletionLines,\n additionLines\n );\n const newContent = {\n ...content,\n additionLineIndex: cursor.nextAdditionLineIndex,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n };\n newHunk.hunkContent.push(newContent);\n advanceCursor(newContent, cursor, newHunk);\n }\n // If we are at an index to delete, replace with an empty context node\n else if (indexesToDelete.has(contentIndex)) {\n newHunk.hunkContent.push({\n type: 'context',\n lines: 0,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionLineIndex: cursor.nextAdditionLineIndex,\n });\n }\n // There's nothing to `resolve` with context nodes, so just push them as\n // they are\n else if (content.type === 'context') {\n pushContentLinesToDiff(\n content,\n resolvedDiff,\n deletionLines,\n additionLines\n );\n const newContent: ContextContent = {\n ...content,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionLineIndex: cursor.nextAdditionLineIndex,\n };\n newHunk.hunkContent.push(newContent);\n advanceCursor(newContent, cursor, newHunk);\n }\n // Looks like we have a change to resolve and push\n else {\n pushResolveLinesToDiff(\n resolution,\n content,\n resolvedDiff,\n deletionLines,\n additionLines\n );\n const newContent: ContextContent = {\n type: 'context',\n lines:\n resolution === 'deletions'\n ? content.deletions\n : resolution === 'additions'\n ? content.additions\n : content.deletions + content.additions,\n deletionLineIndex: cursor.nextDeletionLineIndex,\n additionLineIndex: cursor.nextAdditionLineIndex,\n };\n newHunk.hunkContent.push(newContent);\n advanceCursor(newContent, cursor, newHunk);\n }\n }\n\n if (index === hunkIndex && updatesEOFState) {\n const noEOFCR =\n resolution === 'deletions'\n ? hunk.noEOFCRDeletions\n : hunk.noEOFCRAdditions;\n newHunk.noEOFCRAdditions = noEOFCR;\n newHunk.noEOFCRDeletions = noEOFCR;\n }\n\n resolvedDiff.hunks.push(newHunk);\n }\n\n const finalHunk = hunks.at(-1);\n if (finalHunk != null && !diff.isPartial) {\n pushCollapsedContextLines(\n resolvedDiff,\n deletionLines,\n additionLines,\n finalHunk.deletionLineIndex + finalHunk.deletionCount,\n finalHunk.additionLineIndex + finalHunk.additionCount,\n Math.min(\n deletionLines.length -\n (finalHunk.deletionLineIndex + finalHunk.deletionCount),\n additionLines.length -\n (finalHunk.additionLineIndex + finalHunk.additionCount)\n )\n );\n }\n\n resolvedDiff.splitLineCount = cursor.splitLineCount;\n resolvedDiff.unifiedLineCount = cursor.unifiedLineCount;\n\n return resolvedDiff;\n}\n\nfunction pushCollapsedContextLines(\n diff: FileDiffMetadata,\n deletionLines: string[],\n additionLines: string[],\n deletionLineIndex: number,\n additionLineIndex: number,\n lineCount: number\n) {\n for (let index = 0; index < lineCount; index++) {\n const deletionLine = deletionLines[deletionLineIndex + index];\n const additionLine = additionLines[additionLineIndex + index];\n if (deletionLine == null || additionLine == null) {\n throw new Error(\n 'pushCollapsedContextLines: missing collapsed context line'\n );\n }\n diff.deletionLines.push(deletionLine);\n diff.additionLines.push(additionLine);\n }\n}\n\n// Partial patches track omitted context in `collapsedBefore`, but those lines do\n// not exist in the diff's line arrays. Keep the virtual row counts and file\n// positions in sync without inventing hidden lines.\nfunction processCollapsedContext(\n sourceDiff: FileDiffMetadata,\n resolvedDiff: FileDiffMetadata,\n cursor: CursorState,\n deletionLineIndex: number,\n additionLineIndex: number,\n lineCount: number,\n shouldProcessContent: boolean\n) {\n if (lineCount <= 0) {\n return;\n }\n\n if (shouldProcessContent) {\n pushCollapsedContextLines(\n resolvedDiff,\n sourceDiff.deletionLines,\n sourceDiff.additionLines,\n deletionLineIndex,\n additionLineIndex,\n lineCount\n );\n cursor.nextAdditionLineIndex += lineCount;\n cursor.nextDeletionLineIndex += lineCount;\n }\n\n cursor.nextAdditionStart += lineCount;\n cursor.nextDeletionStart += lineCount;\n cursor.splitLineCount += lineCount;\n cursor.unifiedLineCount += lineCount;\n}\n\nfunction pushContentLinesToDiff(\n content: ContextContent | ChangeContent,\n diff: FileDiffMetadata,\n deletionLines: string[],\n additionLines: string[]\n) {\n if (content.type === 'context') {\n for (let i = 0; i < content.lines; i++) {\n const line = additionLines[content.additionLineIndex + i];\n if (line == null) {\n console.error({ additionLines, content, i });\n throw new Error('pushContentLinesToDiff: Context line does not exist');\n }\n diff.deletionLines.push(line);\n diff.additionLines.push(line);\n }\n } else {\n const len = Math.max(content.deletions, content.additions);\n for (let i = 0; i < len; i++) {\n if (i < content.deletions) {\n const line = deletionLines[content.deletionLineIndex + i];\n if (line == null) {\n console.error({ deletionLines, content, i });\n throw new Error(\n 'pushContentLinesToDiff: Deletion line does not exist'\n );\n }\n diff.deletionLines.push(line);\n }\n if (i < content.additions) {\n const line = additionLines[content.additionLineIndex + i];\n if (line == null) {\n console.error({ additionLines, content, i });\n throw new Error(\n 'pushContentLinesToDiff: Addition line does not exist'\n );\n }\n diff.additionLines.push(line);\n }\n }\n }\n}\n\nfunction pushResolveLinesToDiff(\n resolution: 'deletions' | 'additions' | 'both',\n content: ChangeContent,\n diff: FileDiffMetadata,\n deletionLines: string[],\n additionLines: string[]\n) {\n if (resolution === 'deletions' || resolution === 'both') {\n for (let i = 0; i < content.deletions; i++) {\n const line = deletionLines[content.deletionLineIndex + i];\n if (line == null) {\n console.error({ deletionLines, content, i });\n throw new Error('pushResolveLinesToDiff: Deletion line does not exist');\n }\n diff.deletionLines.push(line);\n diff.additionLines.push(line);\n }\n }\n if (resolution === 'additions' || resolution === 'both') {\n for (let i = 0; i < content.additions; i++) {\n const line = additionLines[content.additionLineIndex + i];\n if (line == null) {\n console.error({ additionLines, content, i });\n throw new Error('pushResolveLinesToDiff: Addition line does not exist');\n }\n diff.deletionLines.push(line);\n diff.additionLines.push(line);\n }\n }\n}\n\nfunction advanceCursor(\n content: ChangeContent | ContextContent,\n cursor: CursorState,\n hunk: Hunk\n) {\n if (content.type === 'context') {\n cursor.nextAdditionLineIndex += content.lines;\n cursor.nextDeletionLineIndex += content.lines;\n cursor.nextAdditionStart += content.lines;\n cursor.nextDeletionStart += content.lines;\n cursor.splitLineCount += content.lines;\n cursor.unifiedLineCount += content.lines;\n\n hunk.additionCount += content.lines;\n hunk.deletionCount += content.lines;\n hunk.splitLineCount += content.lines;\n hunk.unifiedLineCount += content.lines;\n } else {\n cursor.nextAdditionLineIndex += content.additions;\n cursor.nextDeletionLineIndex += content.deletions;\n cursor.nextAdditionStart += content.additions;\n cursor.nextDeletionStart += content.deletions;\n cursor.splitLineCount += Math.max(content.deletions, content.additions);\n cursor.unifiedLineCount += content.deletions + content.additions;\n\n hunk.deletionCount += content.deletions;\n hunk.deletionLines += content.deletions;\n hunk.additionCount += content.additions;\n hunk.additionLines += content.additions;\n hunk.splitLineCount += Math.max(content.deletions, content.additions);\n hunk.unifiedLineCount += content.deletions + content.additions;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roundToDevicePixel.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"roundToDevicePixel.d.ts","names":[],"sources":["../../src/utils/roundToDevicePixel.ts"],"mappings":";;AASA;;;;AAAgD;;;;iBAAhC,kBAAA,CAAmB,KAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roundToDevicePixel.js","names":[],"sources":["../../src/utils/roundToDevicePixel.ts"],"sourcesContent":["/**\n * Snap a CSS-pixel value to the nearest device-pixel boundary. Browsers store\n * scrollTop on the device-pixel grid on fractional-DPR displays (1.25x, 1.5x,\n * etc.), so rounding computed scroll targets against that grid keeps delta\n * math settling cleanly instead of hovering around fractional residuals.\n *\n * Reads window.devicePixelRatio fresh on each call so monitor-switching and\n * zoom changes are picked up without needing to flush any cached value.\n */\nexport function roundToDevicePixel(value: number): number {\n const dpr = window.devicePixelRatio ?? 1;\n return Math.round(value * dpr) / dpr;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,mBAAmB,OAAuB;CACxD,MAAM,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"roundToDevicePixel.js","names":[],"sources":["../../src/utils/roundToDevicePixel.ts"],"sourcesContent":["/**\n * Snap a CSS-pixel value to the nearest device-pixel boundary. Browsers store\n * scrollTop on the device-pixel grid on fractional-DPR displays (1.25x, 1.5x,\n * etc.), so rounding computed scroll targets against that grid keeps delta\n * math settling cleanly instead of hovering around fractional residuals.\n *\n * Reads window.devicePixelRatio fresh on each call so monitor-switching and\n * zoom changes are picked up without needing to flush any cached value.\n */\nexport function roundToDevicePixel(value: number): number {\n const dpr = window.devicePixelRatio ?? 1;\n return Math.round(value * dpr) / dpr;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,mBAAmB,OAAuB;CACxD,MAAM,MAAM,OAAO,oBAAoB;CACvC,OAAO,KAAK,MAAM,QAAQ,GAAG,IAAI;AACnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollbarGutter.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"scrollbarGutter.d.ts","names":[],"sources":["../../src/utils/scrollbarGutter.ts"],"mappings":";iBAUgB,0BAAA,CACd,UAAsB,EAAV,UAAU;AAAA,iBAkCR,wCAAA,CACd,eAAmC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE } from "../constants.js";
|
|
2
|
-
|
|
3
2
|
//#region src/utils/scrollbarGutter.ts
|
|
4
3
|
let measuredScrollbarGutter;
|
|
5
4
|
function getMeasuredScrollbarGutter(shadowRoot) {
|
|
@@ -22,7 +21,7 @@ function getMeasuredScrollbarGutter(shadowRoot) {
|
|
|
22
21
|
function createMeasuredScrollbarGutterDeclaration(scrollbarGutter) {
|
|
23
22
|
return `${DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY}: ${scrollbarGutter == null ? "var(--diffs-scrollbar-gutter-fallback)" : `${scrollbarGutter}px`};`;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
24
|
//#endregion
|
|
27
25
|
export { createMeasuredScrollbarGutterDeclaration, getMeasuredScrollbarGutter };
|
|
26
|
+
|
|
28
27
|
//# sourceMappingURL=scrollbarGutter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollbarGutter.js","names":[
|
|
1
|
+
{"version":3,"file":"scrollbarGutter.js","names":[],"sources":["../../src/utils/scrollbarGutter.ts"],"sourcesContent":["import {\n DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY,\n DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE,\n} from '../constants';\n\nlet measuredScrollbarGutter: number | undefined;\n\n// Measures the horizontal scrollbar used by `[data-code]` once per page. The\n// hidden probe opts into the same selector as real code panes so custom\n// scrollbar CSS is reflected in the measured value.\nexport function getMeasuredScrollbarGutter(\n shadowRoot: ShadowRoot\n): number | undefined {\n if (measuredScrollbarGutter != null) {\n return measuredScrollbarGutter;\n }\n\n const host = shadowRoot.host;\n if (\n typeof HTMLElement !== 'undefined' &&\n host instanceof HTMLElement &&\n !host.isConnected\n ) {\n return undefined;\n }\n\n const wrapper = document.createElement('div');\n wrapper.setAttribute('data-code', '');\n wrapper.setAttribute(DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, 'true');\n\n const child = document.createElement('div');\n child.style.position = 'relative';\n child.style.width = '200%';\n child.style.height = '200%';\n wrapper.appendChild(child);\n\n shadowRoot.appendChild(wrapper);\n measuredScrollbarGutter = Math.max(\n wrapper.offsetHeight - wrapper.clientHeight,\n 0\n );\n wrapper.remove();\n return measuredScrollbarGutter;\n}\n\nexport function createMeasuredScrollbarGutterDeclaration(\n scrollbarGutter: number | undefined\n): string {\n const value =\n scrollbarGutter == null\n ? 'var(--diffs-scrollbar-gutter-fallback)'\n : `${scrollbarGutter}px`;\n return `${DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY}: ${value};`;\n}\n"],"mappings":";;AAKA,IAAI;AAKJ,SAAgB,2BACd,YACoB;CACpB,IAAI,2BAA2B,MAC7B,OAAO;CAGT,MAAM,OAAO,WAAW;CACxB,IACE,OAAO,gBAAgB,eACvB,gBAAgB,eAChB,CAAC,KAAK,aAEN;CAGF,MAAM,UAAU,SAAS,cAAc,KAAK;CAC5C,QAAQ,aAAa,aAAa,EAAE;CACpC,QAAQ,aAAa,mCAAmC,MAAM;CAE9D,MAAM,QAAQ,SAAS,cAAc,KAAK;CAC1C,MAAM,MAAM,WAAW;CACvB,MAAM,MAAM,QAAQ;CACpB,MAAM,MAAM,SAAS;CACrB,QAAQ,YAAY,KAAK;CAEzB,WAAW,YAAY,OAAO;CAC9B,0BAA0B,KAAK,IAC7B,QAAQ,eAAe,QAAQ,cAC/B,CACF;CACA,QAAQ,OAAO;CACf,OAAO;AACT;AAEA,SAAgB,yCACd,iBACQ;CAKR,OAAO,GAAG,yCAAyC,IAHjD,mBAAmB,OACf,2CACA,GAAG,gBAAgB,IACoC;AAC/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setLanguageOverride.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"setLanguageOverride.d.ts","names":[],"sources":["../../src/utils/setLanguageOverride.ts"],"mappings":";;;iBAMgB,mBAAA,CACd,UAAA,EAAY,YAAA,EACZ,IAAA,EAAM,kBAAA,GACL,YAAA;AAAA,iBACa,mBAAA,CACd,UAAA,EAAY,gBAAA,EACZ,IAAA,EAAM,kBAAA,GACL,gBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setLanguageOverride.js","names":[],"sources":["../../src/utils/setLanguageOverride.ts"],"sourcesContent":["import type {\n FileContents,\n FileDiffMetadata,\n SupportedLanguages,\n} from '../types';\n\nexport function setLanguageOverride(\n fileOrDiff: FileContents,\n lang: SupportedLanguages\n): FileContents;\nexport function setLanguageOverride(\n fileOrDiff: FileDiffMetadata,\n lang: SupportedLanguages\n): FileDiffMetadata;\nexport function setLanguageOverride(\n fileOrDiff: FileContents | FileDiffMetadata,\n lang: SupportedLanguages\n): FileContents | FileDiffMetadata {\n return { ...fileOrDiff, lang };\n}\n"],"mappings":";AAcA,SAAgB,oBACd,YACA,MACiC;
|
|
1
|
+
{"version":3,"file":"setLanguageOverride.js","names":[],"sources":["../../src/utils/setLanguageOverride.ts"],"sourcesContent":["import type {\n FileContents,\n FileDiffMetadata,\n SupportedLanguages,\n} from '../types';\n\nexport function setLanguageOverride(\n fileOrDiff: FileContents,\n lang: SupportedLanguages\n): FileContents;\nexport function setLanguageOverride(\n fileOrDiff: FileDiffMetadata,\n lang: SupportedLanguages\n): FileDiffMetadata;\nexport function setLanguageOverride(\n fileOrDiff: FileContents | FileDiffMetadata,\n lang: SupportedLanguages\n): FileContents | FileDiffMetadata {\n return { ...fileOrDiff, lang };\n}\n"],"mappings":";AAcA,SAAgB,oBACd,YACA,MACiC;CACjC,OAAO;EAAE,GAAG;EAAY;CAAK;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setWrapperNodeProps.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"setWrapperNodeProps.d.ts","names":[],"sources":["../../src/utils/setWrapperNodeProps.ts"],"mappings":";;;iBAEgB,oBAAA,CACd,GAAA,EAAK,cAAA;EAEH,IAAA;EACA,cAAA;EACA,iBAAA;EACA,kBAAA;EACA,QAAA;EACA,KAAA;EACA,UAAA;EACA;AAAA,GACC,mBAAA,GACF,cAAA"}
|
|
@@ -27,11 +27,10 @@ function setPreNodeProperties(pre, { type, diffIndicators, disableBackground, di
|
|
|
27
27
|
if (type === "diff") pre.setAttribute("data-diff-type", split ? "split" : "single");
|
|
28
28
|
else pre.removeAttribute("data-diff-type");
|
|
29
29
|
pre.setAttribute("data-overflow", overflow);
|
|
30
|
-
pre.tabIndex = 0;
|
|
31
30
|
pre.style.setProperty("--diffs-min-number-column-width-default", `${`${totalLines}`.length}ch`);
|
|
32
31
|
return pre;
|
|
33
32
|
}
|
|
34
|
-
|
|
35
33
|
//#endregion
|
|
36
34
|
export { setPreNodeProperties };
|
|
35
|
+
|
|
37
36
|
//# sourceMappingURL=setWrapperNodeProps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setWrapperNodeProps.js","names":[],"sources":["../../src/utils/setWrapperNodeProps.ts"],"sourcesContent":["import type { PrePropertiesConfig } from '../types';\n\nexport function setPreNodeProperties(\n pre: HTMLPreElement,\n {\n type,\n diffIndicators,\n disableBackground,\n disableLineNumbers,\n overflow,\n split,\n totalLines,\n customProperties,\n }: PrePropertiesConfig\n): HTMLPreElement {\n // NOTE: We always apply custom properties first so the important properties\n // cannot be overridden.\n if (customProperties != null) {\n for (const key in customProperties) {\n const value = customProperties[key];\n if (value != null) {\n pre.setAttribute(key, `${value}`);\n }\n }\n }\n if (type === 'diff') {\n pre.setAttribute('data-diff', '');\n pre.removeAttribute('data-file');\n } else {\n pre.setAttribute('data-file', '');\n pre.removeAttribute('data-diff');\n }\n switch (diffIndicators) {\n case 'bars':\n case 'classic':\n pre.setAttribute('data-indicators', diffIndicators);\n break;\n case 'none':\n pre.removeAttribute('data-indicators');\n break;\n }\n if (disableLineNumbers) {\n pre.setAttribute('data-disable-line-numbers', '');\n } else {\n pre.removeAttribute('data-disable-line-numbers');\n }\n if (disableBackground) {\n pre.removeAttribute('data-background');\n } else {\n pre.setAttribute('data-background', '');\n }\n if (type === 'diff') {\n pre.setAttribute('data-diff-type', split ? 'split' : 'single');\n } else {\n pre.removeAttribute('data-diff-type');\n }\n pre.setAttribute('data-overflow', overflow);\n
|
|
1
|
+
{"version":3,"file":"setWrapperNodeProps.js","names":[],"sources":["../../src/utils/setWrapperNodeProps.ts"],"sourcesContent":["import type { PrePropertiesConfig } from '../types';\n\nexport function setPreNodeProperties(\n pre: HTMLPreElement,\n {\n type,\n diffIndicators,\n disableBackground,\n disableLineNumbers,\n overflow,\n split,\n totalLines,\n customProperties,\n }: PrePropertiesConfig\n): HTMLPreElement {\n // NOTE: We always apply custom properties first so the important properties\n // cannot be overridden.\n if (customProperties != null) {\n for (const key in customProperties) {\n const value = customProperties[key];\n if (value != null) {\n pre.setAttribute(key, `${value}`);\n }\n }\n }\n if (type === 'diff') {\n pre.setAttribute('data-diff', '');\n pre.removeAttribute('data-file');\n } else {\n pre.setAttribute('data-file', '');\n pre.removeAttribute('data-diff');\n }\n switch (diffIndicators) {\n case 'bars':\n case 'classic':\n pre.setAttribute('data-indicators', diffIndicators);\n break;\n case 'none':\n pre.removeAttribute('data-indicators');\n break;\n }\n if (disableLineNumbers) {\n pre.setAttribute('data-disable-line-numbers', '');\n } else {\n pre.removeAttribute('data-disable-line-numbers');\n }\n if (disableBackground) {\n pre.removeAttribute('data-background');\n } else {\n pre.setAttribute('data-background', '');\n }\n if (type === 'diff') {\n pre.setAttribute('data-diff-type', split ? 'split' : 'single');\n } else {\n pre.removeAttribute('data-diff-type');\n }\n pre.setAttribute('data-overflow', overflow);\n // Set CSS custom property for line number column width\n pre.style.setProperty(\n '--diffs-min-number-column-width-default',\n `${`${totalLines}`.length}ch`\n );\n return pre;\n}\n"],"mappings":";AAEA,SAAgB,qBACd,KACA,EACE,MACA,gBACA,mBACA,oBACA,UACA,OACA,YACA,oBAEc;CAGhB,IAAI,oBAAoB,MACtB,KAAK,MAAM,OAAO,kBAAkB;EAClC,MAAM,QAAQ,iBAAiB;EAC/B,IAAI,SAAS,MACX,IAAI,aAAa,KAAK,GAAG,OAAO;CAEpC;CAEF,IAAI,SAAS,QAAQ;EACnB,IAAI,aAAa,aAAa,EAAE;EAChC,IAAI,gBAAgB,WAAW;CACjC,OAAO;EACL,IAAI,aAAa,aAAa,EAAE;EAChC,IAAI,gBAAgB,WAAW;CACjC;CACA,QAAQ,gBAAR;EACE,KAAK;EACL,KAAK;GACH,IAAI,aAAa,mBAAmB,cAAc;GAClD;EACF,KAAK;GACH,IAAI,gBAAgB,iBAAiB;GACrC;CACJ;CACA,IAAI,oBACF,IAAI,aAAa,6BAA6B,EAAE;MAEhD,IAAI,gBAAgB,2BAA2B;CAEjD,IAAI,mBACF,IAAI,gBAAgB,iBAAiB;MAErC,IAAI,aAAa,mBAAmB,EAAE;CAExC,IAAI,SAAS,QACX,IAAI,aAAa,kBAAkB,QAAQ,UAAU,QAAQ;MAE7D,IAAI,gBAAgB,gBAAgB;CAEtC,IAAI,aAAa,iBAAiB,QAAQ;CAE1C,IAAI,MAAM,YACR,2CACA,GAAG,GAAG,aAAa,OAAO,GAC5B;CACA,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shouldUseTokenTransformer.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"shouldUseTokenTransformer.d.ts","names":[],"sources":["../../src/utils/shouldUseTokenTransformer.ts"],"mappings":";;;iBAGgB,yBAAA,gCACd,OAAA,EAAS,6BAA6B,CAAC,KAAA;EACrC,mBAAA;AAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
function shouldUseTokenTransformer(options) {
|
|
3
3
|
return options.useTokenTransformer === true || options.onTokenClick != null || options.onTokenEnter != null || options.onTokenLeave != null;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
5
|
//#endregion
|
|
7
6
|
export { shouldUseTokenTransformer };
|
|
7
|
+
|
|
8
8
|
//# sourceMappingURL=shouldUseTokenTransformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shouldUseTokenTransformer.js","names":[],"sources":["../../src/utils/shouldUseTokenTransformer.ts"],"sourcesContent":["import type { InteractionManagerBaseOptions } from '../managers/InteractionManager';\n\n// Token metadata is only needed when token-level interactions are enabled.\nexport function shouldUseTokenTransformer<TMode extends 'file' | 'diff'>(\n options: InteractionManagerBaseOptions<TMode> & {\n useTokenTransformer?: boolean;\n }\n): boolean {\n return (\n options.useTokenTransformer === true ||\n options.onTokenClick != null ||\n options.onTokenEnter != null ||\n options.onTokenLeave != null\n );\n}\n"],"mappings":";AAGA,SAAgB,0BACd,SAGS;
|
|
1
|
+
{"version":3,"file":"shouldUseTokenTransformer.js","names":[],"sources":["../../src/utils/shouldUseTokenTransformer.ts"],"sourcesContent":["import type { InteractionManagerBaseOptions } from '../managers/InteractionManager';\n\n// Token metadata is only needed when token-level interactions are enabled.\nexport function shouldUseTokenTransformer<TMode extends 'file' | 'diff'>(\n options: InteractionManagerBaseOptions<TMode> & {\n useTokenTransformer?: boolean;\n }\n): boolean {\n return (\n options.useTokenTransformer === true ||\n options.onTokenClick != null ||\n options.onTokenEnter != null ||\n options.onTokenLeave != null\n );\n}\n"],"mappings":";AAGA,SAAgB,0BACd,SAGS;CACT,OACE,QAAQ,wBAAwB,QAChC,QAAQ,gBAAgB,QACxB,QAAQ,gBAAgB,QACxB,QAAQ,gBAAgB;AAE5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitFileContents.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"splitFileContents.d.ts","names":[],"sources":["../../src/utils/splitFileContents.ts"],"mappings":";;AASA;;;;AAAkD;;iBAAlC,iBAAA,CAAkB,QAAgB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { SPLIT_WITH_NEWLINES } from "../constants.js";
|
|
2
|
-
|
|
3
2
|
//#region src/utils/splitFileContents.ts
|
|
4
3
|
/**
|
|
5
4
|
* Splits file contents into lines using the same logic as diff parsing.
|
|
@@ -11,7 +10,7 @@ import { SPLIT_WITH_NEWLINES } from "../constants.js";
|
|
|
11
10
|
function splitFileContents(contents) {
|
|
12
11
|
return contents !== "" ? contents.split(SPLIT_WITH_NEWLINES) : [];
|
|
13
12
|
}
|
|
14
|
-
|
|
15
13
|
//#endregion
|
|
16
14
|
export { splitFileContents };
|
|
15
|
+
|
|
17
16
|
//# sourceMappingURL=splitFileContents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitFileContents.js","names":[],"sources":["../../src/utils/splitFileContents.ts"],"sourcesContent":["import { SPLIT_WITH_NEWLINES } from '../constants';\n\n/**\n * Splits file contents into lines using the same logic as diff parsing.\n * - Preserves trailing newlines on each line\n *\n * @param contents - The raw file contents string\n * @returns Array of lines with newlines preserved\n */\nexport function splitFileContents(contents: string): string[] {\n return contents !== '' ? contents.split(SPLIT_WITH_NEWLINES) : [];\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"splitFileContents.js","names":[],"sources":["../../src/utils/splitFileContents.ts"],"sourcesContent":["import { SPLIT_WITH_NEWLINES } from '../constants';\n\n/**\n * Splits file contents into lines using the same logic as diff parsing.\n * - Preserves trailing newlines on each line\n *\n * @param contents - The raw file contents string\n * @returns Array of lines with newlines preserved\n */\nexport function splitFileContents(contents: string): string[] {\n return contents !== '' ? contents.split(SPLIT_WITH_NEWLINES) : [];\n}\n"],"mappings":";;;;;;;;;AASA,SAAgB,kBAAkB,UAA4B;CAC5D,OAAO,aAAa,KAAK,SAAS,MAAM,mBAAmB,IAAI,CAAC;AAClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trimPatchContext.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"trimPatchContext.d.ts","names":[],"sources":["../../src/utils/trimPatchContext.ts"],"mappings":";;AAmBA;;;;AAAgE;iBAAhD,gBAAA,CAAiB,KAAA,UAAe,WAAgB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { HUNK_HEADER } from "../constants.js";
|
|
2
|
-
|
|
3
2
|
//#region src/utils/trimPatchContext.ts
|
|
4
3
|
/**
|
|
5
4
|
* A utility function to trim out excess context lines from a patch file. It
|
|
@@ -92,7 +91,7 @@ function flushHunk(hunk, lines) {
|
|
|
92
91
|
function formatHunkRange(start, count) {
|
|
93
92
|
return count === 1 ? `${start}` : `${start},${count}`;
|
|
94
93
|
}
|
|
95
|
-
|
|
96
94
|
//#endregion
|
|
97
95
|
export { trimPatchContext };
|
|
96
|
+
|
|
98
97
|
//# sourceMappingURL=trimPatchContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trimPatchContext.js","names":[
|
|
1
|
+
{"version":3,"file":"trimPatchContext.js","names":[],"sources":["../../src/utils/trimPatchContext.ts"],"sourcesContent":["import { HUNK_HEADER } from '../constants';\n\ninterface CurrentHunk {\n additionStart: number;\n deletionStart: number;\n additionCount: number;\n deletionCount: number;\n hunkLines: string[];\n contextLines: string[];\n}\n\ntype ContextFlushMode = 'before-change' | 'leading' | 'trailing';\n\n/**\n * A utility function to trim out excess context lines from a patch file. It\n * will maintain line numbers, and properly update the hunk context markers, as\n * well as be able to create new hunks where necessary if there's excessive\n * context between changes\n */\nexport function trimPatchContext(patch: string, contextSize = 10): string {\n const lines: string[] = [];\n\n let currentHunk: CurrentHunk | undefined;\n for (const line of patch.split('\\n')) {\n const parsedHunkHeader = line.match(HUNK_HEADER);\n // We've come across a new hunk boundary\n if (parsedHunkHeader != null) {\n // If we have an existing hunk, lets close it out\n // before setting up a new one\n if (currentHunk != null) {\n if (currentHunk.hunkLines.length > 0) {\n flushContextLines(currentHunk, contextSize, 'trailing');\n flushHunk(currentHunk, lines);\n }\n currentHunk = undefined;\n }\n\n const additionStart = parseInt(parsedHunkHeader[3]);\n const deletionStart = parseInt(parsedHunkHeader[1]);\n const additionCount = parseInt(parsedHunkHeader[4] ?? '1');\n const deletionCount = parseInt(parsedHunkHeader[2] ?? '1');\n\n // If we can't parse valid numbers out of the hunk header\n // lets just skip the hunk altogether\n if (\n isNaN(additionStart) ||\n isNaN(deletionStart) ||\n isNaN(additionCount) ||\n isNaN(deletionCount)\n ) {\n lines.push(line);\n } else {\n currentHunk = {\n additionStart,\n deletionStart,\n additionCount: 0,\n deletionCount: 0,\n hunkLines: [],\n contextLines: [],\n };\n }\n continue;\n }\n\n // If we don't have a current hunk, then we should just assume this is\n // general metadata\n if (currentHunk == null) {\n lines.push(line);\n continue;\n }\n\n // If we are dealing with a context line...\n if (line.startsWith(' ')) {\n currentHunk.contextLines.push(line);\n } else if (line !== '') {\n if (\n currentHunk.hunkLines.length > 0 &&\n currentHunk.contextLines.length > contextSize * 2\n ) {\n const omittedContextLineCount =\n currentHunk.contextLines.length - contextSize * 2;\n const nextContextLines = currentHunk.contextLines.slice(-contextSize);\n flushContextLines(currentHunk, contextSize, 'trailing');\n const {\n additionCount: emittedAdditionCount,\n deletionCount: emittedDeletionCount,\n } = currentHunk;\n flushHunk(currentHunk, lines);\n\n currentHunk = {\n additionStart:\n currentHunk.additionStart +\n emittedAdditionCount +\n omittedContextLineCount,\n deletionStart:\n currentHunk.deletionStart +\n emittedDeletionCount +\n omittedContextLineCount,\n deletionCount: 0,\n additionCount: 0,\n contextLines: nextContextLines,\n hunkLines: [],\n };\n }\n\n flushContextLines(\n currentHunk,\n contextSize,\n currentHunk.hunkLines.length === 0 ? 'leading' : 'before-change'\n );\n currentHunk.hunkLines.push(line);\n if (line.startsWith('+')) {\n currentHunk.additionCount += 1;\n } else if (line.startsWith('-')) {\n currentHunk.deletionCount += 1;\n }\n }\n }\n\n if (currentHunk != null && currentHunk.hunkLines.length > 0) {\n flushContextLines(currentHunk, contextSize, 'trailing');\n flushHunk(currentHunk, lines);\n }\n\n const result = lines.join('\\n');\n return patch.endsWith('\\n') ? `${result}\\n` : result;\n}\n\nfunction flushContextLines(\n hunk: CurrentHunk,\n contextSize: number,\n mode: ContextFlushMode\n) {\n if (mode === 'leading' && hunk.contextLines.length > contextSize) {\n const difference = hunk.contextLines.length - contextSize;\n hunk.contextLines.splice(0, difference);\n hunk.additionStart += difference;\n hunk.deletionStart += difference;\n }\n\n if (mode === 'trailing' && hunk.contextLines.length > contextSize) {\n hunk.contextLines.length = contextSize;\n }\n\n if (hunk.contextLines.length > 0) {\n hunk.hunkLines.push(...hunk.contextLines);\n hunk.additionCount += hunk.contextLines.length;\n hunk.deletionCount += hunk.contextLines.length;\n hunk.contextLines.length = 0;\n }\n return hunk;\n}\n\nfunction flushHunk(hunk: CurrentHunk, lines: string[]) {\n lines.push(\n `@@ -${formatHunkRange(hunk.deletionStart, hunk.deletionCount)} +${formatHunkRange(hunk.additionStart, hunk.additionCount)} @@`\n );\n lines.push(...hunk.hunkLines);\n}\n\nfunction formatHunkRange(start: number, count: number): string {\n return count === 1 ? `${start}` : `${start},${count}`;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualDiffLayout.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"virtualDiffLayout.d.ts","names":[],"sources":["../../src/utils/virtualDiffLayout.ts"],"mappings":";;;UAQiB,oBAAA;EACf,SAAA;EACA,OAAA;EACA,SAAA;EACA,cAAA;EACA,SAAA;AAAA;AAAA,UAGe,sBAAA;EACf,SAAA;EACA,SAAA;EACA,aAAA,EAAe,GAAG,SAAS,mBAAA;EAC3B,SAAA;EACA,yBAAA;AAAA;AAAA,UAGe,gCAAA;EACf,QAAA,EAAU,gBAAgB;EAC1B,WAAA;AAAA;AAAA,UAGe,8BAAA,SAAuC,gCAAgC;EACtF,SAAA;EACA,aAAA,EAAe,sBAAA;EACf,yBAAA;AAAA;AAAA,UAGe,mBAAA;EACf,MAAA;EACA,SAAA;EACA,QAAA;EACA,WAAA;AAAA;AAAA,UAGQ,sBAAA;EACR,IAAA,EAAM,cAAA;EACN,OAAA,EAAS,kBAAkB;AAAA;AAAA,UAGnB,+BAAA,SAAwC,sBAAsB;EACtE,SAAA;EACA,SAAA;AAAA;AAAA,iBAKc,iBAAA;EACd,SAAA;EACA,SAAA;EACA,aAAA;EACA,SAAA;EACA;AAAA,GACC,sBAAA,GAAyB,oBAAA;AAAA,iBA6CZ,kBAAA,CAAmB,QAA0B,EAAhB,gBAAgB;AAAA,iBAuB7C,2BAAA;EACd,QAAA;EACA;AAAA,GACC,gCAAA;AAAA,iBA8Ba,yBAAA;EACd,QAAA;EACA,SAAA;EACA,aAAA;EACA,yBAAA;EACA;AAAA,GACC,8BAAA,GAAiC,oBAAA;AAAA,iBA0CpB,sBAAA;EACd,IAAA;EACA;AAAA,GACC,sBAAA;AAAA,iBAIa,mBAAA;EACd,IAAA;EACA;AAAA,GACC,sBAAA;AAAA,iBAMa,uBAAA;EACd,IAAA;EACA,SAAA;EACA;AAAA,GACC,IAAA,CAAK,+BAAA;AAAA,iBAaQ,wBAAA,CAAyB,IAAoB,EAAd,cAAc;AAAA,iBAK7C,6BAAA;EACd,IAAA;EACA,OAAA;EACA,SAAA;EACA;AAAA,GACC,+BAAA,GAAkC,mBAAA;AAAA,iBAmBrB,8BAAA;EACd,IAAA;EACA;AAAA,GACC,sBAAA,GAAyB,mBAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getDefaultHunkSeparatorHeight } from "./computeVirtualFileMetrics.js";
|
|
2
|
-
|
|
3
2
|
//#region src/utils/virtualDiffLayout.ts
|
|
4
3
|
function getExpandedRegion({ isPartial, rangeSize, expandedHunks, hunkIndex, collapsedContextThreshold }) {
|
|
5
4
|
const normalizedRangeSize = Math.max(rangeSize, 0);
|
|
@@ -128,7 +127,7 @@ function getTrailingHunkSeparatorLayout({ type, metrics }) {
|
|
|
128
127
|
totalHeight: gapBefore + height
|
|
129
128
|
};
|
|
130
129
|
}
|
|
131
|
-
|
|
132
130
|
//#endregion
|
|
133
131
|
export { getExpandedRegion, getHunkSeparatorGap, getHunkSeparatorHeight, getLeadingHunkSeparatorLayout, getTrailingContextRangeSize, getTrailingExpandedRegion, getTrailingHunkSeparatorLayout, hasLeadingHunkSeparator, hasTrailingContext, hasTrailingHunkSeparator };
|
|
132
|
+
|
|
134
133
|
//# sourceMappingURL=virtualDiffLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualDiffLayout.js","names":[],"sources":["../../src/utils/virtualDiffLayout.ts"],"sourcesContent":["import type {\n FileDiffMetadata,\n HunkExpansionRegion,\n HunkSeparators,\n VirtualFileMetrics,\n} from '../types';\nimport { getDefaultHunkSeparatorHeight } from './computeVirtualFileMetrics';\n\nexport interface ExpandedRegionResult {\n fromStart: number;\n fromEnd: number;\n rangeSize: number;\n collapsedLines: number;\n renderAll: boolean;\n}\n\nexport interface GetExpandedRegionProps {\n isPartial: boolean;\n rangeSize: number;\n expandedHunks: Map<number, HunkExpansionRegion> | true | undefined;\n hunkIndex: number;\n collapsedContextThreshold: number;\n}\n\nexport interface GetTrailingContextRangeSizeProps {\n fileDiff: FileDiffMetadata;\n errorPrefix: string;\n}\n\nexport interface GetTrailingExpandedRegionProps extends GetTrailingContextRangeSizeProps {\n hunkIndex: number;\n expandedHunks: GetExpandedRegionProps['expandedHunks'];\n collapsedContextThreshold: number;\n}\n\nexport interface HunkSeparatorLayout {\n height: number;\n gapBefore: number;\n gapAfter: number;\n totalHeight: number;\n}\n\ninterface HunkSeparatorBaseProps {\n type: HunkSeparators;\n metrics: VirtualFileMetrics;\n}\n\ninterface LeadingHunkSeparatorLayoutProps extends HunkSeparatorBaseProps {\n hunkIndex: number;\n hunkSpecs: string | undefined;\n}\n\n// Converts a collapsed unchanged range into the slices that should render near\n// the start and end of that range for the active hunk expansion state.\nexport function getExpandedRegion({\n isPartial,\n rangeSize,\n expandedHunks,\n hunkIndex,\n collapsedContextThreshold,\n}: GetExpandedRegionProps): ExpandedRegionResult {\n const normalizedRangeSize = Math.max(rangeSize, 0);\n if (normalizedRangeSize === 0 || isPartial) {\n return {\n fromStart: 0,\n fromEnd: 0,\n rangeSize: normalizedRangeSize,\n collapsedLines: normalizedRangeSize,\n renderAll: false,\n };\n }\n\n if (\n expandedHunks === true ||\n normalizedRangeSize <= collapsedContextThreshold\n ) {\n return {\n fromStart: normalizedRangeSize,\n fromEnd: 0,\n rangeSize: normalizedRangeSize,\n collapsedLines: 0,\n renderAll: true,\n };\n }\n\n const region = expandedHunks?.get(hunkIndex);\n const fromStart = Math.min(\n Math.max(region?.fromStart ?? 0, 0),\n normalizedRangeSize\n );\n const fromEnd = Math.min(\n Math.max(region?.fromEnd ?? 0, 0),\n normalizedRangeSize\n );\n const expandedCount = fromStart + fromEnd;\n const renderAll = expandedCount >= normalizedRangeSize;\n return {\n fromStart: renderAll ? normalizedRangeSize : fromStart,\n fromEnd: renderAll ? 0 : fromEnd,\n rangeSize: normalizedRangeSize,\n collapsedLines: Math.max(normalizedRangeSize - expandedCount, 0),\n renderAll,\n };\n}\n\nexport function hasTrailingContext(fileDiff: FileDiffMetadata): boolean {\n const lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];\n if (\n lastHunk == null ||\n fileDiff.isPartial ||\n fileDiff.additionLines.length === 0 ||\n fileDiff.deletionLines.length === 0\n ) {\n return false;\n }\n\n const additionRemaining =\n fileDiff.additionLines.length -\n (lastHunk.additionLineIndex + lastHunk.additionCount);\n const deletionRemaining =\n fileDiff.deletionLines.length -\n (lastHunk.deletionLineIndex + lastHunk.deletionCount);\n\n return additionRemaining > 0 || deletionRemaining > 0;\n}\n\n// Measures the unchanged tail after the final hunk. Both sides must have the\n// same remaining length because trailing context represents paired lines.\nexport function getTrailingContextRangeSize({\n fileDiff,\n errorPrefix,\n}: GetTrailingContextRangeSizeProps): number {\n const lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];\n if (\n lastHunk == null ||\n fileDiff.isPartial ||\n fileDiff.additionLines.length === 0 ||\n fileDiff.deletionLines.length === 0\n ) {\n return 0;\n }\n\n const additionRemaining =\n fileDiff.additionLines.length -\n (lastHunk.additionLineIndex + lastHunk.additionCount);\n const deletionRemaining =\n fileDiff.deletionLines.length -\n (lastHunk.deletionLineIndex + lastHunk.deletionCount);\n\n if (additionRemaining <= 0 && deletionRemaining <= 0) {\n return 0;\n }\n\n if (additionRemaining !== deletionRemaining) {\n throw new Error(\n `${errorPrefix}: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${fileDiff.name}`\n );\n }\n return Math.min(additionRemaining, deletionRemaining);\n}\n\nexport function getTrailingExpandedRegion({\n fileDiff,\n hunkIndex,\n expandedHunks,\n collapsedContextThreshold,\n errorPrefix,\n}: GetTrailingExpandedRegionProps): ExpandedRegionResult | undefined {\n if (hunkIndex !== fileDiff.hunks.length - 1) {\n return undefined;\n }\n\n const trailingRangeSize = getTrailingContextRangeSize({\n fileDiff,\n errorPrefix,\n });\n if (trailingRangeSize <= 0) {\n return undefined;\n }\n\n if (\n expandedHunks === true ||\n trailingRangeSize <= collapsedContextThreshold\n ) {\n return {\n fromStart: trailingRangeSize,\n fromEnd: 0,\n rangeSize: trailingRangeSize,\n collapsedLines: 0,\n renderAll: true,\n };\n }\n\n // The final trailing separator only exposes upward partial expansion. Treat it\n // as a bottom-only pseudo-hunk and ignore unsupported downward expansion.\n const region = expandedHunks?.get(fileDiff.hunks.length);\n const fromStart = Math.min(\n Math.max(region?.fromStart ?? 0, 0),\n trailingRangeSize\n );\n return {\n fromStart,\n fromEnd: 0,\n rangeSize: trailingRangeSize,\n collapsedLines: trailingRangeSize - fromStart,\n renderAll: fromStart >= trailingRangeSize,\n };\n}\n\nexport function getHunkSeparatorHeight({\n type,\n metrics,\n}: HunkSeparatorBaseProps): number {\n return metrics.hunkSeparatorHeight ?? getDefaultHunkSeparatorHeight(type);\n}\n\nexport function getHunkSeparatorGap({\n type,\n metrics,\n}: HunkSeparatorBaseProps): number {\n return type === 'simple' || type === 'metadata' || type === 'line-info-basic'\n ? 0\n : metrics.spacing;\n}\n\nexport function hasLeadingHunkSeparator({\n type,\n hunkIndex,\n hunkSpecs,\n}: Omit<LeadingHunkSeparatorLayoutProps, 'metrics'>): boolean {\n switch (type) {\n case 'simple':\n return hunkIndex > 0;\n case 'metadata':\n return hunkSpecs != null;\n case 'line-info':\n case 'line-info-basic':\n case 'custom':\n return true;\n }\n}\n\nexport function hasTrailingHunkSeparator(type: HunkSeparators): boolean {\n return type !== 'simple' && type !== 'metadata';\n}\n\n// Mirrors the renderer/CSS spacing rules for the separator shown before a hunk.\nexport function getLeadingHunkSeparatorLayout({\n type,\n metrics,\n hunkIndex,\n hunkSpecs,\n}: LeadingHunkSeparatorLayoutProps): HunkSeparatorLayout | undefined {\n if (!hasLeadingHunkSeparator({ type, hunkIndex, hunkSpecs })) {\n return undefined;\n }\n\n const height = getHunkSeparatorHeight({ type, metrics });\n const gap = getHunkSeparatorGap({ type, metrics });\n const gapBefore = hunkIndex > 0 ? gap : 0;\n const gapAfter = gap;\n return {\n height,\n gapBefore,\n gapAfter,\n totalHeight: gapBefore + height + gapAfter,\n };\n}\n\n// Mirrors the renderer/CSS spacing rules for the separator shown after the last\n// hunk when trailing unchanged context is collapsed.\nexport function getTrailingHunkSeparatorLayout({\n type,\n metrics,\n}: HunkSeparatorBaseProps): HunkSeparatorLayout | undefined {\n if (!hasTrailingHunkSeparator(type)) {\n return undefined;\n }\n\n const height = getHunkSeparatorHeight({ type, metrics });\n const gapBefore = getHunkSeparatorGap({ type, metrics });\n return {\n height,\n gapBefore,\n gapAfter: 0,\n totalHeight: gapBefore + height,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"virtualDiffLayout.js","names":[],"sources":["../../src/utils/virtualDiffLayout.ts"],"sourcesContent":["import type {\n FileDiffMetadata,\n HunkExpansionRegion,\n HunkSeparators,\n VirtualFileMetrics,\n} from '../types';\nimport { getDefaultHunkSeparatorHeight } from './computeVirtualFileMetrics';\n\nexport interface ExpandedRegionResult {\n fromStart: number;\n fromEnd: number;\n rangeSize: number;\n collapsedLines: number;\n renderAll: boolean;\n}\n\nexport interface GetExpandedRegionProps {\n isPartial: boolean;\n rangeSize: number;\n expandedHunks: Map<number, HunkExpansionRegion> | true | undefined;\n hunkIndex: number;\n collapsedContextThreshold: number;\n}\n\nexport interface GetTrailingContextRangeSizeProps {\n fileDiff: FileDiffMetadata;\n errorPrefix: string;\n}\n\nexport interface GetTrailingExpandedRegionProps extends GetTrailingContextRangeSizeProps {\n hunkIndex: number;\n expandedHunks: GetExpandedRegionProps['expandedHunks'];\n collapsedContextThreshold: number;\n}\n\nexport interface HunkSeparatorLayout {\n height: number;\n gapBefore: number;\n gapAfter: number;\n totalHeight: number;\n}\n\ninterface HunkSeparatorBaseProps {\n type: HunkSeparators;\n metrics: VirtualFileMetrics;\n}\n\ninterface LeadingHunkSeparatorLayoutProps extends HunkSeparatorBaseProps {\n hunkIndex: number;\n hunkSpecs: string | undefined;\n}\n\n// Converts a collapsed unchanged range into the slices that should render near\n// the start and end of that range for the active hunk expansion state.\nexport function getExpandedRegion({\n isPartial,\n rangeSize,\n expandedHunks,\n hunkIndex,\n collapsedContextThreshold,\n}: GetExpandedRegionProps): ExpandedRegionResult {\n const normalizedRangeSize = Math.max(rangeSize, 0);\n if (normalizedRangeSize === 0 || isPartial) {\n return {\n fromStart: 0,\n fromEnd: 0,\n rangeSize: normalizedRangeSize,\n collapsedLines: normalizedRangeSize,\n renderAll: false,\n };\n }\n\n if (\n expandedHunks === true ||\n normalizedRangeSize <= collapsedContextThreshold\n ) {\n return {\n fromStart: normalizedRangeSize,\n fromEnd: 0,\n rangeSize: normalizedRangeSize,\n collapsedLines: 0,\n renderAll: true,\n };\n }\n\n const region = expandedHunks?.get(hunkIndex);\n const fromStart = Math.min(\n Math.max(region?.fromStart ?? 0, 0),\n normalizedRangeSize\n );\n const fromEnd = Math.min(\n Math.max(region?.fromEnd ?? 0, 0),\n normalizedRangeSize\n );\n const expandedCount = fromStart + fromEnd;\n const renderAll = expandedCount >= normalizedRangeSize;\n return {\n fromStart: renderAll ? normalizedRangeSize : fromStart,\n fromEnd: renderAll ? 0 : fromEnd,\n rangeSize: normalizedRangeSize,\n collapsedLines: Math.max(normalizedRangeSize - expandedCount, 0),\n renderAll,\n };\n}\n\nexport function hasTrailingContext(fileDiff: FileDiffMetadata): boolean {\n const lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];\n if (\n lastHunk == null ||\n fileDiff.isPartial ||\n fileDiff.additionLines.length === 0 ||\n fileDiff.deletionLines.length === 0\n ) {\n return false;\n }\n\n const additionRemaining =\n fileDiff.additionLines.length -\n (lastHunk.additionLineIndex + lastHunk.additionCount);\n const deletionRemaining =\n fileDiff.deletionLines.length -\n (lastHunk.deletionLineIndex + lastHunk.deletionCount);\n\n return additionRemaining > 0 || deletionRemaining > 0;\n}\n\n// Measures the unchanged tail after the final hunk. Both sides must have the\n// same remaining length because trailing context represents paired lines.\nexport function getTrailingContextRangeSize({\n fileDiff,\n errorPrefix,\n}: GetTrailingContextRangeSizeProps): number {\n const lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];\n if (\n lastHunk == null ||\n fileDiff.isPartial ||\n fileDiff.additionLines.length === 0 ||\n fileDiff.deletionLines.length === 0\n ) {\n return 0;\n }\n\n const additionRemaining =\n fileDiff.additionLines.length -\n (lastHunk.additionLineIndex + lastHunk.additionCount);\n const deletionRemaining =\n fileDiff.deletionLines.length -\n (lastHunk.deletionLineIndex + lastHunk.deletionCount);\n\n if (additionRemaining <= 0 && deletionRemaining <= 0) {\n return 0;\n }\n\n if (additionRemaining !== deletionRemaining) {\n throw new Error(\n `${errorPrefix}: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${fileDiff.name}`\n );\n }\n return Math.min(additionRemaining, deletionRemaining);\n}\n\nexport function getTrailingExpandedRegion({\n fileDiff,\n hunkIndex,\n expandedHunks,\n collapsedContextThreshold,\n errorPrefix,\n}: GetTrailingExpandedRegionProps): ExpandedRegionResult | undefined {\n if (hunkIndex !== fileDiff.hunks.length - 1) {\n return undefined;\n }\n\n const trailingRangeSize = getTrailingContextRangeSize({\n fileDiff,\n errorPrefix,\n });\n if (trailingRangeSize <= 0) {\n return undefined;\n }\n\n if (\n expandedHunks === true ||\n trailingRangeSize <= collapsedContextThreshold\n ) {\n return {\n fromStart: trailingRangeSize,\n fromEnd: 0,\n rangeSize: trailingRangeSize,\n collapsedLines: 0,\n renderAll: true,\n };\n }\n\n // The final trailing separator only exposes upward partial expansion. Treat it\n // as a bottom-only pseudo-hunk and ignore unsupported downward expansion.\n const region = expandedHunks?.get(fileDiff.hunks.length);\n const fromStart = Math.min(\n Math.max(region?.fromStart ?? 0, 0),\n trailingRangeSize\n );\n return {\n fromStart,\n fromEnd: 0,\n rangeSize: trailingRangeSize,\n collapsedLines: trailingRangeSize - fromStart,\n renderAll: fromStart >= trailingRangeSize,\n };\n}\n\nexport function getHunkSeparatorHeight({\n type,\n metrics,\n}: HunkSeparatorBaseProps): number {\n return metrics.hunkSeparatorHeight ?? getDefaultHunkSeparatorHeight(type);\n}\n\nexport function getHunkSeparatorGap({\n type,\n metrics,\n}: HunkSeparatorBaseProps): number {\n return type === 'simple' || type === 'metadata' || type === 'line-info-basic'\n ? 0\n : metrics.spacing;\n}\n\nexport function hasLeadingHunkSeparator({\n type,\n hunkIndex,\n hunkSpecs,\n}: Omit<LeadingHunkSeparatorLayoutProps, 'metrics'>): boolean {\n switch (type) {\n case 'simple':\n return hunkIndex > 0;\n case 'metadata':\n return hunkSpecs != null;\n case 'line-info':\n case 'line-info-basic':\n case 'custom':\n return true;\n }\n}\n\nexport function hasTrailingHunkSeparator(type: HunkSeparators): boolean {\n return type !== 'simple' && type !== 'metadata';\n}\n\n// Mirrors the renderer/CSS spacing rules for the separator shown before a hunk.\nexport function getLeadingHunkSeparatorLayout({\n type,\n metrics,\n hunkIndex,\n hunkSpecs,\n}: LeadingHunkSeparatorLayoutProps): HunkSeparatorLayout | undefined {\n if (!hasLeadingHunkSeparator({ type, hunkIndex, hunkSpecs })) {\n return undefined;\n }\n\n const height = getHunkSeparatorHeight({ type, metrics });\n const gap = getHunkSeparatorGap({ type, metrics });\n const gapBefore = hunkIndex > 0 ? gap : 0;\n const gapAfter = gap;\n return {\n height,\n gapBefore,\n gapAfter,\n totalHeight: gapBefore + height + gapAfter,\n };\n}\n\n// Mirrors the renderer/CSS spacing rules for the separator shown after the last\n// hunk when trailing unchanged context is collapsed.\nexport function getTrailingHunkSeparatorLayout({\n type,\n metrics,\n}: HunkSeparatorBaseProps): HunkSeparatorLayout | undefined {\n if (!hasTrailingHunkSeparator(type)) {\n return undefined;\n }\n\n const height = getHunkSeparatorHeight({ type, metrics });\n const gapBefore = getHunkSeparatorGap({ type, metrics });\n return {\n height,\n gapBefore,\n gapAfter: 0,\n totalHeight: gapBefore + height,\n };\n}\n"],"mappings":";;AAsDA,SAAgB,kBAAkB,EAChC,WACA,WACA,eACA,WACA,6BAC+C;CAC/C,MAAM,sBAAsB,KAAK,IAAI,WAAW,CAAC;CACjD,IAAI,wBAAwB,KAAK,WAC/B,OAAO;EACL,WAAW;EACX,SAAS;EACT,WAAW;EACX,gBAAgB;EAChB,WAAW;CACb;CAGF,IACE,kBAAkB,QAClB,uBAAuB,2BAEvB,OAAO;EACL,WAAW;EACX,SAAS;EACT,WAAW;EACX,gBAAgB;EAChB,WAAW;CACb;CAGF,MAAM,SAAS,eAAe,IAAI,SAAS;CAC3C,MAAM,YAAY,KAAK,IACrB,KAAK,IAAI,QAAQ,aAAa,GAAG,CAAC,GAClC,mBACF;CACA,MAAM,UAAU,KAAK,IACnB,KAAK,IAAI,QAAQ,WAAW,GAAG,CAAC,GAChC,mBACF;CACA,MAAM,gBAAgB,YAAY;CAClC,MAAM,YAAY,iBAAiB;CACnC,OAAO;EACL,WAAW,YAAY,sBAAsB;EAC7C,SAAS,YAAY,IAAI;EACzB,WAAW;EACX,gBAAgB,KAAK,IAAI,sBAAsB,eAAe,CAAC;EAC/D;CACF;AACF;AAEA,SAAgB,mBAAmB,UAAqC;CACtE,MAAM,WAAW,SAAS,MAAM,SAAS,MAAM,SAAS;CACxD,IACE,YAAY,QACZ,SAAS,aACT,SAAS,cAAc,WAAW,KAClC,SAAS,cAAc,WAAW,GAElC,OAAO;CAGT,MAAM,oBACJ,SAAS,cAAc,UACtB,SAAS,oBAAoB,SAAS;CACzC,MAAM,oBACJ,SAAS,cAAc,UACtB,SAAS,oBAAoB,SAAS;CAEzC,OAAO,oBAAoB,KAAK,oBAAoB;AACtD;AAIA,SAAgB,4BAA4B,EAC1C,UACA,eAC2C;CAC3C,MAAM,WAAW,SAAS,MAAM,SAAS,MAAM,SAAS;CACxD,IACE,YAAY,QACZ,SAAS,aACT,SAAS,cAAc,WAAW,KAClC,SAAS,cAAc,WAAW,GAElC,OAAO;CAGT,MAAM,oBACJ,SAAS,cAAc,UACtB,SAAS,oBAAoB,SAAS;CACzC,MAAM,oBACJ,SAAS,cAAc,UACtB,SAAS,oBAAoB,SAAS;CAEzC,IAAI,qBAAqB,KAAK,qBAAqB,GACjD,OAAO;CAGT,IAAI,sBAAsB,mBACxB,MAAM,IAAI,MACR,GAAG,YAAY,yCAAyC,kBAAkB,cAAc,kBAAkB,QAAQ,SAAS,MAC7H;CAEF,OAAO,KAAK,IAAI,mBAAmB,iBAAiB;AACtD;AAEA,SAAgB,0BAA0B,EACxC,UACA,WACA,eACA,2BACA,eACmE;CACnE,IAAI,cAAc,SAAS,MAAM,SAAS,GACxC;CAGF,MAAM,oBAAoB,4BAA4B;EACpD;EACA;CACF,CAAC;CACD,IAAI,qBAAqB,GACvB;CAGF,IACE,kBAAkB,QAClB,qBAAqB,2BAErB,OAAO;EACL,WAAW;EACX,SAAS;EACT,WAAW;EACX,gBAAgB;EAChB,WAAW;CACb;CAKF,MAAM,SAAS,eAAe,IAAI,SAAS,MAAM,MAAM;CACvD,MAAM,YAAY,KAAK,IACrB,KAAK,IAAI,QAAQ,aAAa,GAAG,CAAC,GAClC,iBACF;CACA,OAAO;EACL;EACA,SAAS;EACT,WAAW;EACX,gBAAgB,oBAAoB;EACpC,WAAW,aAAa;CAC1B;AACF;AAEA,SAAgB,uBAAuB,EACrC,MACA,WACiC;CACjC,OAAO,QAAQ,uBAAuB,8BAA8B,IAAI;AAC1E;AAEA,SAAgB,oBAAoB,EAClC,MACA,WACiC;CACjC,OAAO,SAAS,YAAY,SAAS,cAAc,SAAS,oBACxD,IACA,QAAQ;AACd;AAEA,SAAgB,wBAAwB,EACtC,MACA,WACA,aAC4D;CAC5D,QAAQ,MAAR;EACE,KAAK,UACH,OAAO,YAAY;EACrB,KAAK,YACH,OAAO,aAAa;EACtB,KAAK;EACL,KAAK;EACL,KAAK,UACH,OAAO;CACX;AACF;AAEA,SAAgB,yBAAyB,MAA+B;CACtE,OAAO,SAAS,YAAY,SAAS;AACvC;AAGA,SAAgB,8BAA8B,EAC5C,MACA,SACA,WACA,aACmE;CACnE,IAAI,CAAC,wBAAwB;EAAE;EAAM;EAAW;CAAU,CAAC,GACzD;CAGF,MAAM,SAAS,uBAAuB;EAAE;EAAM;CAAQ,CAAC;CACvD,MAAM,MAAM,oBAAoB;EAAE;EAAM;CAAQ,CAAC;CACjD,MAAM,YAAY,YAAY,IAAI,MAAM;CACxC,MAAM,WAAW;CACjB,OAAO;EACL;EACA;EACA;EACA,aAAa,YAAY,SAAS;CACpC;AACF;AAIA,SAAgB,+BAA+B,EAC7C,MACA,WAC0D;CAC1D,IAAI,CAAC,yBAAyB,IAAI,GAChC;CAGF,MAAM,SAAS,uBAAuB;EAAE;EAAM;CAAQ,CAAC;CACvD,MAAM,YAAY,oBAAoB;EAAE;EAAM;CAAQ,CAAC;CACvD,OAAO;EACL;EACA;EACA,UAAU;EACV,aAAa,YAAY;CAC3B;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapTokenFragments.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"wrapTokenFragments.d.ts","names":[],"sources":["../../src/utils/wrapTokenFragments.ts"],"mappings":";;;cAIM,QAAA;AAAA,cACA,eAAA;AAAA,KAED,kBAAA,mBAAqC,QAAA,UAAkB,eAAe;AAAA,iBAI3D,kBAAA,CAAmB,SAAA,EAAW,OAAA,GAAc,kBAAkB"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { createHastElement } from "./hast_utils.js";
|
|
2
|
-
|
|
3
2
|
//#region src/utils/wrapTokenFragments.ts
|
|
4
3
|
const NO_TOKEN = Symbol("no-token");
|
|
5
4
|
const MULTIPLE_TOKENS = Symbol("multiple-tokens");
|
|
@@ -76,7 +75,7 @@ function stripTokenChar(node) {
|
|
|
76
75
|
function setTokenChar(node, char) {
|
|
77
76
|
node.properties["data-char"] = char;
|
|
78
77
|
}
|
|
79
|
-
|
|
80
78
|
//#endregion
|
|
81
79
|
export { wrapTokenFragments };
|
|
80
|
+
|
|
82
81
|
//# sourceMappingURL=wrapTokenFragments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapTokenFragments.js","names":[
|
|
1
|
+
{"version":3,"file":"wrapTokenFragments.js","names":[],"sources":["../../src/utils/wrapTokenFragments.ts"],"sourcesContent":["import type { ElementContent, Element as HASTElement } from 'hast';\n\nimport { createHastElement } from './hast_utils';\n\nconst NO_TOKEN: unique symbol = Symbol('no-token');\nconst MULTIPLE_TOKENS: unique symbol = Symbol('multiple-tokens');\n\ntype TokenFragmentState = number | typeof NO_TOKEN | typeof MULTIPLE_TOKENS;\n\n// Walk a rendered line and add a single outer token wrapper around all\n// fragments that still belong to the same original Shiki token.\nexport function wrapTokenFragments(container: HASTElement): TokenFragmentState {\n const ownTokenChar = getTokenChar(container);\n if (ownTokenChar != null) {\n return ownTokenChar;\n }\n\n let containerTokenState: TokenFragmentState = NO_TOKEN;\n const wrappedChildren: ElementContent[] = [];\n let currentTokenChildren: ElementContent[] = [];\n let currentTokenChar: number | undefined;\n\n const flushTokenChildren = () => {\n if (currentTokenChildren.length === 0 || currentTokenChar == null) {\n currentTokenChildren = [];\n currentTokenChar = undefined;\n return;\n }\n\n if (currentTokenChildren.length === 1) {\n const child = currentTokenChildren[0];\n if (child?.type === 'element') {\n setTokenChar(child, currentTokenChar);\n for (const grandChild of child.children) {\n stripTokenChar(grandChild);\n }\n } else {\n stripTokenChar(child);\n }\n wrappedChildren.push(child);\n currentTokenChildren = [];\n currentTokenChar = undefined;\n return;\n }\n\n for (const child of currentTokenChildren) {\n stripTokenChar(child);\n }\n\n wrappedChildren.push(\n createHastElement({\n tagName: 'span',\n properties: { 'data-char': currentTokenChar },\n children: currentTokenChildren,\n })\n );\n\n currentTokenChildren = [];\n currentTokenChar = undefined;\n };\n\n const mergeContainerTokenState = (childTokenState: TokenFragmentState) => {\n if (childTokenState === NO_TOKEN) {\n return;\n }\n if (childTokenState === MULTIPLE_TOKENS) {\n containerTokenState = MULTIPLE_TOKENS;\n return;\n }\n if (containerTokenState === NO_TOKEN) {\n containerTokenState = childTokenState;\n return;\n }\n if (containerTokenState !== childTokenState) {\n containerTokenState = MULTIPLE_TOKENS;\n }\n };\n\n for (const child of container.children) {\n const childTokenState: TokenFragmentState =\n child.type === 'element' ? wrapTokenFragments(child) : NO_TOKEN;\n mergeContainerTokenState(childTokenState);\n\n if (typeof childTokenState !== 'number') {\n flushTokenChildren();\n wrappedChildren.push(child);\n continue;\n }\n\n if (currentTokenChar != null && currentTokenChar !== childTokenState) {\n flushTokenChildren();\n }\n\n currentTokenChar ??= childTokenState;\n currentTokenChildren.push(child);\n }\n\n flushTokenChildren();\n container.children = wrappedChildren;\n return containerTokenState;\n}\n\nfunction getTokenChar(node: HASTElement): number | undefined {\n const value = node.properties['data-char'];\n if (typeof value === 'number') {\n return value;\n }\n return undefined;\n}\n\nfunction stripTokenChar(node: ElementContent): void {\n if (node.type !== 'element') return;\n node.properties['data-char'] = undefined;\n for (const child of node.children) {\n stripTokenChar(child);\n }\n}\n\nfunction setTokenChar(node: HASTElement, char: number): void {\n node.properties['data-char'] = char;\n}\n"],"mappings":";;AAIA,MAAM,WAA0B,OAAO,UAAU;AACjD,MAAM,kBAAiC,OAAO,iBAAiB;AAM/D,SAAgB,mBAAmB,WAA4C;CAC7E,MAAM,eAAe,aAAa,SAAS;CAC3C,IAAI,gBAAgB,MAClB,OAAO;CAGT,IAAI,sBAA0C;CAC9C,MAAM,kBAAoC,CAAC;CAC3C,IAAI,uBAAyC,CAAC;CAC9C,IAAI;CAEJ,MAAM,2BAA2B;EAC/B,IAAI,qBAAqB,WAAW,KAAK,oBAAoB,MAAM;GACjE,uBAAuB,CAAC;GACxB,mBAAmB,KAAA;GACnB;EACF;EAEA,IAAI,qBAAqB,WAAW,GAAG;GACrC,MAAM,QAAQ,qBAAqB;GACnC,IAAI,OAAO,SAAS,WAAW;IAC7B,aAAa,OAAO,gBAAgB;IACpC,KAAK,MAAM,cAAc,MAAM,UAC7B,eAAe,UAAU;GAE7B,OACE,eAAe,KAAK;GAEtB,gBAAgB,KAAK,KAAK;GAC1B,uBAAuB,CAAC;GACxB,mBAAmB,KAAA;GACnB;EACF;EAEA,KAAK,MAAM,SAAS,sBAClB,eAAe,KAAK;EAGtB,gBAAgB,KACd,kBAAkB;GAChB,SAAS;GACT,YAAY,EAAE,aAAa,iBAAiB;GAC5C,UAAU;EACZ,CAAC,CACH;EAEA,uBAAuB,CAAC;EACxB,mBAAmB,KAAA;CACrB;CAEA,MAAM,4BAA4B,oBAAwC;EACxE,IAAI,oBAAoB,UACtB;EAEF,IAAI,oBAAoB,iBAAiB;GACvC,sBAAsB;GACtB;EACF;EACA,IAAI,wBAAwB,UAAU;GACpC,sBAAsB;GACtB;EACF;EACA,IAAI,wBAAwB,iBAC1B,sBAAsB;CAE1B;CAEA,KAAK,MAAM,SAAS,UAAU,UAAU;EACtC,MAAM,kBACJ,MAAM,SAAS,YAAY,mBAAmB,KAAK,IAAI;EACzD,yBAAyB,eAAe;EAExC,IAAI,OAAO,oBAAoB,UAAU;GACvC,mBAAmB;GACnB,gBAAgB,KAAK,KAAK;GAC1B;EACF;EAEA,IAAI,oBAAoB,QAAQ,qBAAqB,iBACnD,mBAAmB;EAGrB,qBAAqB;EACrB,qBAAqB,KAAK,KAAK;CACjC;CAEA,mBAAmB;CACnB,UAAU,WAAW;CACrB,OAAO;AACT;AAEA,SAAS,aAAa,MAAuC;CAC3D,MAAM,QAAQ,KAAK,WAAW;CAC9B,IAAI,OAAO,UAAU,UACnB,OAAO;AAGX;AAEA,SAAS,eAAe,MAA4B;CAClD,IAAI,KAAK,SAAS,WAAW;CAC7B,KAAK,WAAW,eAAe,KAAA;CAC/B,KAAK,MAAM,SAAS,KAAK,UACvB,eAAe,KAAK;AAExB;AAEA,SAAS,aAAa,MAAmB,MAAoB;CAC3D,KAAK,WAAW,eAAe;AACjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerPoolManager.d.ts","names":[
|
|
1
|
+
{"version":3,"file":"WorkerPoolManager.d.ts","names":[],"sources":["../../src/worker/WorkerPoolManager.ts"],"mappings":"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"}
|
|
@@ -19,7 +19,6 @@ import { resolveLanguages } from "../highlighter/languages/resolveLanguages.js";
|
|
|
19
19
|
import { getResolvedThemes } from "../highlighter/themes/getResolvedThemes.js";
|
|
20
20
|
import { resolveThemes } from "../highlighter/themes/resolveThemes.js";
|
|
21
21
|
import LRUMapPkg from "lru_map";
|
|
22
|
-
|
|
23
22
|
//#region src/worker/WorkerPoolManager.ts
|
|
24
23
|
const IGNORE_RESPONSE = Symbol("IGNORE_RESPONSE");
|
|
25
24
|
var WorkerPoolTerminatedError = class extends Error {
|
|
@@ -28,6 +27,7 @@ var WorkerPoolTerminatedError = class extends Error {
|
|
|
28
27
|
}
|
|
29
28
|
};
|
|
30
29
|
var WorkerPoolManager = class {
|
|
30
|
+
options;
|
|
31
31
|
highlighter;
|
|
32
32
|
preferredHighlighter;
|
|
33
33
|
renderOptions;
|
|
@@ -290,7 +290,7 @@ var WorkerPoolManager = class {
|
|
|
290
290
|
requestId: void 0,
|
|
291
291
|
pendingSetupRequestId: void 0,
|
|
292
292
|
initialized: false,
|
|
293
|
-
langs: new Set(["text", ...resolvedLanguages.map(({ name }) => name)]),
|
|
293
|
+
langs: /* @__PURE__ */ new Set(["text", ...resolvedLanguages.map(({ name }) => name)]),
|
|
294
294
|
customExtensionsVersion: 0
|
|
295
295
|
};
|
|
296
296
|
worker.addEventListener("message", (event) => {
|
|
@@ -483,7 +483,7 @@ var WorkerPoolManager = class {
|
|
|
483
483
|
...request,
|
|
484
484
|
id
|
|
485
485
|
},
|
|
486
|
-
instances: new Set([instance]),
|
|
486
|
+
instances: /* @__PURE__ */ new Set([instance]),
|
|
487
487
|
primeCache: false,
|
|
488
488
|
highlightKey,
|
|
489
489
|
renderOptionsVersion,
|
|
@@ -496,7 +496,7 @@ var WorkerPoolManager = class {
|
|
|
496
496
|
...request,
|
|
497
497
|
id
|
|
498
498
|
},
|
|
499
|
-
instances: new Set([instance]),
|
|
499
|
+
instances: /* @__PURE__ */ new Set([instance]),
|
|
500
500
|
primeCache: false,
|
|
501
501
|
highlightKey,
|
|
502
502
|
renderOptionsVersion,
|
|
@@ -811,7 +811,7 @@ function isRenderTask(task) {
|
|
|
811
811
|
function getInstances(task) {
|
|
812
812
|
return task.instances;
|
|
813
813
|
}
|
|
814
|
-
|
|
815
814
|
//#endregion
|
|
816
815
|
export { WorkerPoolManager };
|
|
816
|
+
|
|
817
817
|
//# sourceMappingURL=WorkerPoolManager.js.map
|