@pierre/diffs 1.0.10 → 1.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AdvancedVirtualizedFileDiff.d.ts +40 -0
- package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +1 -0
- package/dist/components/AdvancedVirtualizedFileDiff.js +145 -0
- package/dist/components/AdvancedVirtualizedFileDiff.js.map +1 -0
- package/dist/components/AdvancedVirtualizer.d.ts +38 -0
- package/dist/components/AdvancedVirtualizer.d.ts.map +1 -0
- package/dist/components/AdvancedVirtualizer.js +201 -0
- package/dist/components/AdvancedVirtualizer.js.map +1 -0
- package/dist/components/File.d.ts +59 -32
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +297 -53
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +87 -39
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +687 -109
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts +6 -0
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +74 -12
- package/dist/components/FileStream.js.map +1 -1
- package/dist/components/VirtualizedFile.d.ts +33 -0
- package/dist/components/VirtualizedFile.d.ts.map +1 -0
- package/dist/components/VirtualizedFile.js +227 -0
- package/dist/components/VirtualizedFile.js.map +1 -0
- package/dist/components/VirtualizedFileDiff.d.ts +39 -0
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -0
- package/dist/components/VirtualizedFileDiff.js +316 -0
- package/dist/components/VirtualizedFileDiff.js.map +1 -0
- package/dist/components/Virtualizer.d.ts +63 -0
- package/dist/components/Virtualizer.d.ts.map +1 -0
- package/dist/components/Virtualizer.js +369 -0
- package/dist/components/Virtualizer.js.map +1 -0
- package/dist/components/VirtulizerDevelopment.d.ts +14 -0
- package/dist/components/VirtulizerDevelopment.d.ts.map +1 -0
- package/dist/components/web-components.d.ts +1 -1
- package/dist/components/web-components.d.ts.map +1 -1
- package/dist/constants.d.ts +7 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +20 -2
- package/dist/constants.js.map +1 -1
- package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/constants.d.ts +3 -1
- package/dist/highlighter/languages/constants.d.ts.map +1 -1
- package/dist/highlighter/languages/constants.js +2 -1
- package/dist/highlighter/languages/constants.js.map +1 -1
- package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/registerCustomLanguage.d.ts +19 -0
- package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -0
- package/dist/highlighter/languages/registerCustomLanguage.js +21 -0
- package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -0
- package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/resolveLanguage.js +4 -3
- package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
- package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/constants.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
- package/dist/index.d.ts +27 -13
- package/dist/index.js +22 -8
- package/dist/managers/LineSelectionManager.d.ts +14 -15
- package/dist/managers/LineSelectionManager.d.ts.map +1 -1
- package/dist/managers/LineSelectionManager.js +66 -78
- package/dist/managers/LineSelectionManager.js.map +1 -1
- package/dist/managers/MouseEventManager.d.ts +13 -6
- package/dist/managers/MouseEventManager.d.ts.map +1 -1
- package/dist/managers/MouseEventManager.js +161 -47
- package/dist/managers/MouseEventManager.js.map +1 -1
- package/dist/managers/ResizeManager.d.ts +6 -1
- package/dist/managers/ResizeManager.d.ts.map +1 -1
- package/dist/managers/ResizeManager.js +114 -64
- package/dist/managers/ResizeManager.js.map +1 -1
- package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
- package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
- package/dist/react/File.d.ts +1 -0
- package/dist/react/File.d.ts.map +1 -1
- package/dist/react/File.js +2 -1
- package/dist/react/File.js.map +1 -1
- package/dist/react/FileDiff.d.ts +1 -0
- package/dist/react/FileDiff.d.ts.map +1 -1
- package/dist/react/FileDiff.js +2 -1
- package/dist/react/FileDiff.js.map +1 -1
- package/dist/react/MultiFileDiff.d.ts +1 -0
- package/dist/react/MultiFileDiff.d.ts.map +1 -1
- package/dist/react/MultiFileDiff.js +4 -3
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/PatchDiff.d.ts +1 -0
- package/dist/react/PatchDiff.d.ts.map +1 -1
- package/dist/react/PatchDiff.js +3 -2
- package/dist/react/PatchDiff.js.map +1 -1
- package/dist/react/Virtualizer.d.ts +25 -0
- package/dist/react/Virtualizer.d.ts.map +1 -0
- package/dist/react/Virtualizer.js +38 -0
- package/dist/react/Virtualizer.js.map +1 -0
- package/dist/react/WorkerPoolContext.d.ts.map +1 -1
- package/dist/react/WorkerPoolContext.js +1 -1
- package/dist/react/WorkerPoolContext.js.map +1 -1
- package/dist/react/constants.d.ts.map +1 -1
- package/dist/react/index.d.ts +3 -2
- package/dist/react/index.js +2 -1
- package/dist/react/jsx.d.ts.map +1 -1
- package/dist/react/types.d.ts +5 -3
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.d.ts +9 -9
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.js +3 -3
- package/dist/react/utils/renderDiffChildren.js.map +1 -1
- package/dist/react/utils/renderFileChildren.d.ts +5 -5
- package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
- package/dist/react/utils/templateRender.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.d.ts +5 -3
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js +6 -2
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/react/utils/useFileInstance.d.ts +5 -3
- package/dist/react/utils/useFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileInstance.js +6 -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.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts +21 -15
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +392 -357
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +13 -5
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +101 -35
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/shiki-stream/stream.d.ts +2 -2
- package/dist/shiki-stream/stream.d.ts.map +1 -1
- package/dist/shiki-stream/stream.js.map +1 -1
- package/dist/shiki-stream/tokenizer.d.ts +2 -2
- package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
- package/dist/shiki-stream/tokenizer.js.map +1 -1
- package/dist/shiki-stream/types.d.ts +18 -18
- package/dist/shiki-stream/types.d.ts.map +1 -1
- package/dist/sprite.d.ts +1 -1
- package/dist/sprite.d.ts.map +1 -1
- package/dist/ssr/FileDiffReact.d.ts.map +1 -1
- package/dist/ssr/FileDiffReact.js +1 -1
- package/dist/ssr/index.d.ts +2 -2
- package/dist/ssr/preloadDiffs.d.ts.map +1 -1
- package/dist/ssr/preloadFile.d.ts.map +1 -1
- package/dist/ssr/preloadPatchFile.d.ts.map +1 -1
- package/dist/ssr/preloadPatchFile.js.map +1 -1
- package/dist/ssr/renderHTML.d.ts.map +1 -1
- package/dist/style.js +1 -1
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +311 -74
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/areDiffLineAnnotationsEqual.d.ts +7 -0
- package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -0
- package/dist/utils/areDiffLineAnnotationsEqual.js +8 -0
- package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -0
- package/dist/utils/areFilesEqual.d.ts.map +1 -1
- package/dist/utils/areHunkDataEqual.d.ts +7 -0
- package/dist/utils/areHunkDataEqual.d.ts.map +1 -0
- package/dist/utils/areHunkDataEqual.js +8 -0
- package/dist/utils/areHunkDataEqual.js.map +1 -0
- package/dist/utils/areLineAnnotationsEqual.d.ts +7 -0
- package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -0
- package/dist/utils/areLineAnnotationsEqual.js +8 -0
- package/dist/utils/areLineAnnotationsEqual.js.map +1 -0
- package/dist/utils/areObjectsEqual.d.ts.map +1 -1
- package/dist/utils/areOptionsEqual.d.ts +1 -1
- package/dist/utils/areOptionsEqual.d.ts.map +1 -1
- package/dist/utils/arePrePropertiesEqual.d.ts +7 -0
- package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -0
- package/dist/utils/arePrePropertiesEqual.js +9 -0
- package/dist/utils/arePrePropertiesEqual.js.map +1 -0
- package/dist/utils/areRenderRangesEqual.d.ts +7 -0
- package/dist/utils/areRenderRangesEqual.d.ts.map +1 -0
- package/dist/utils/areRenderRangesEqual.js +9 -0
- package/dist/utils/areRenderRangesEqual.js.map +1 -0
- package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
- package/dist/utils/areThemesEqual.d.ts.map +1 -1
- package/dist/utils/areVirtualWindowSpecsEqual.d.ts +7 -0
- package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -0
- package/dist/utils/areVirtualWindowSpecsEqual.js +9 -0
- package/dist/utils/areVirtualWindowSpecsEqual.js.map +1 -0
- package/dist/utils/areWorkerStatsEqual.d.ts +8 -0
- package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -0
- package/dist/utils/areWorkerStatsEqual.js +9 -0
- package/dist/utils/areWorkerStatsEqual.js.map +1 -0
- package/dist/utils/cleanLastNewline.d.ts.map +1 -1
- package/dist/utils/createAnnotationElement.d.ts.map +1 -1
- package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
- package/dist/utils/createContentColumn.d.ts +7 -0
- package/dist/utils/createContentColumn.d.ts.map +1 -0
- package/dist/utils/createContentColumn.js +17 -0
- package/dist/utils/createContentColumn.js.map +1 -0
- package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
- package/dist/utils/createEmptyRowBuffer.js +2 -1
- package/dist/utils/createEmptyRowBuffer.js.map +1 -1
- package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
- package/dist/utils/createHoverContentNode.d.ts.map +1 -1
- package/dist/utils/createNoNewlineElement.d.ts +2 -1
- package/dist/utils/createNoNewlineElement.d.ts.map +1 -1
- package/dist/utils/createNoNewlineElement.js +3 -6
- package/dist/utils/createNoNewlineElement.js.map +1 -1
- package/dist/utils/createPreElement.d.ts +2 -1
- package/dist/utils/createPreElement.d.ts.map +1 -1
- package/dist/utils/createPreElement.js +4 -3
- package/dist/utils/createPreElement.js.map +1 -1
- package/dist/utils/createRowNodes.d.ts.map +1 -1
- package/dist/utils/createSeparator.d.ts.map +1 -1
- package/dist/utils/createSeparator.js +2 -2
- package/dist/utils/createSeparator.js.map +1 -1
- package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
- package/dist/utils/createSpanNodeFromToken.js.map +1 -1
- package/dist/utils/createStyleElement.d.ts.map +1 -1
- package/dist/utils/createTransformerWithState.d.ts.map +1 -1
- package/dist/utils/createTransformerWithState.js +1 -1
- package/dist/utils/createTransformerWithState.js.map +1 -1
- package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
- package/dist/utils/createWindowFromScrollPosition.d.ts +22 -0
- package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -0
- package/dist/utils/createWindowFromScrollPosition.js +26 -0
- package/dist/utils/createWindowFromScrollPosition.js.map +1 -0
- package/dist/utils/cssWrappers.d.ts.map +1 -1
- package/dist/utils/diffAcceptRejectHunk.d.ts +1 -1
- package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
- package/dist/utils/diffAcceptRejectHunk.js +36 -21
- package/dist/utils/diffAcceptRejectHunk.js.map +1 -1
- package/dist/utils/formatCSSVariablePrefix.d.ts +1 -1
- package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.d.ts +2 -1
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.js +14 -4
- package/dist/utils/getFiletypeFromFileName.js.map +1 -1
- package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
- package/dist/utils/getHunkSeparatorSlotName.d.ts +3 -1
- package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
- package/dist/utils/getHunkSeparatorSlotName.js.map +1 -1
- package/dist/utils/getIconForType.d.ts +1 -1
- package/dist/utils/getIconForType.d.ts.map +1 -1
- package/dist/utils/getLineAnnotationName.d.ts.map +1 -1
- package/dist/utils/getLineEndingType.d.ts +1 -1
- package/dist/utils/getLineEndingType.d.ts.map +1 -1
- package/dist/utils/getLineNodes.d.ts.map +1 -1
- package/dist/utils/getOrCreateCodeNode.d.ts +16 -0
- package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -0
- package/dist/utils/getOrCreateCodeNode.js +16 -0
- package/dist/utils/getOrCreateCodeNode.js.map +1 -0
- package/dist/utils/getSingularPatch.d.ts.map +1 -1
- package/dist/utils/getThemes.d.ts.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 +6 -2
- package/dist/utils/hast_utils.d.ts.map +1 -1
- package/dist/utils/hast_utils.js +34 -1
- package/dist/utils/hast_utils.js.map +1 -1
- package/dist/utils/isDefaultRenderRange.d.ts +7 -0
- package/dist/utils/isDefaultRenderRange.d.ts.map +1 -0
- package/dist/utils/isDefaultRenderRange.js +8 -0
- package/dist/utils/isDefaultRenderRange.js.map +1 -0
- package/dist/utils/isWorkerContext.d.ts.map +1 -1
- package/dist/utils/iterateOverDiff.d.ts +54 -0
- package/dist/utils/iterateOverDiff.d.ts.map +1 -0
- package/dist/utils/iterateOverDiff.js +397 -0
- package/dist/utils/iterateOverDiff.js.map +1 -0
- package/dist/utils/iterateOverFile.d.ts +50 -0
- package/dist/utils/iterateOverFile.d.ts.map +1 -0
- package/dist/utils/iterateOverFile.js +49 -0
- package/dist/utils/iterateOverFile.js.map +1 -0
- package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
- package/dist/utils/parseDiffFromFile.d.ts +6 -6
- package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
- package/dist/utils/parseDiffFromFile.js +10 -7
- package/dist/utils/parseDiffFromFile.js.map +1 -1
- package/dist/utils/parseLineType.d.ts +1 -1
- package/dist/utils/parseLineType.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.d.ts +25 -11
- package/dist/utils/parsePatchFiles.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.js +221 -163
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
- package/dist/utils/processLine.d.ts.map +1 -1
- package/dist/utils/processLine.js +11 -27
- package/dist/utils/processLine.js.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.d.ts +8 -2
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +152 -228
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
- package/dist/utils/renderFileWithHighlighter.d.ts +7 -2
- package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +30 -4
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/resolveVirtualFileMetrics.d.ts +7 -0
- package/dist/utils/resolveVirtualFileMetrics.d.ts.map +1 -0
- package/dist/utils/resolveVirtualFileMetrics.js +25 -0
- package/dist/utils/resolveVirtualFileMetrics.js.map +1 -0
- package/dist/utils/setLanguageOverride.d.ts +2 -1
- package/dist/utils/setLanguageOverride.d.ts.map +1 -1
- package/dist/utils/setLanguageOverride.js.map +1 -1
- package/dist/utils/setWrapperNodeProps.d.ts +4 -7
- package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
- package/dist/utils/setWrapperNodeProps.js +19 -12
- package/dist/utils/setWrapperNodeProps.js.map +1 -1
- package/dist/utils/splitFileContents.d.ts +12 -0
- package/dist/utils/splitFileContents.d.ts.map +1 -0
- package/dist/utils/splitFileContents.js +17 -0
- package/dist/utils/splitFileContents.js.map +1 -0
- package/dist/utils/trimPatchContext.d.ts +11 -0
- package/dist/utils/trimPatchContext.d.ts.map +1 -0
- package/dist/utils/trimPatchContext.js +99 -0
- package/dist/utils/trimPatchContext.js.map +1 -0
- package/dist/worker/WorkerPoolManager.d.ts +11 -4
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +153 -61
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
- package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
- package/dist/worker/types.d.ts +32 -25
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/worker-portable.js +902 -312
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +657 -268
- package/dist/worker/worker.js.map +1 -1
- package/package.json +52 -50
- package/dist/utils/createCodeNode.d.ts +0 -12
- package/dist/utils/createCodeNode.d.ts.map +0 -1
- package/dist/utils/createCodeNode.js +0 -12
- package/dist/utils/createCodeNode.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.d.ts","names":["
|
|
1
|
+
{"version":3,"file":"File.d.ts","names":["LineSelectionManager","LineSelectionOptions","SelectedLineRange","GetHoveredLineResult","MouseEventManager","MouseEventManagerBaseOptions","ResizeManager","FileRenderer","BaseCodeOptions","FileContents","LineAnnotation","PrePropertiesConfig","RenderFileMetadata","RenderRange","ThemeTypes","WorkerPoolManager","FileRenderProps","LAnnotation","HTMLElement","FileHyrdateProps","Omit","FileOptions","AnnotationElementCache","File","SVGElement","HTMLPreElement","HTMLStyleElement","Map","file","fileContainer","forceRender","containerWrapper","lineAnnotations","renderRange"],"sources":["../../src/components/File.d.ts"],"sourcesContent":["import { LineSelectionManager, type LineSelectionOptions, type SelectedLineRange } from '../managers/LineSelectionManager';\nimport { type GetHoveredLineResult, MouseEventManager, type MouseEventManagerBaseOptions } from '../managers/MouseEventManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { FileRenderer } from '../renderers/FileRenderer';\nimport type { BaseCodeOptions, FileContents, LineAnnotation, PrePropertiesConfig, RenderFileMetadata, RenderRange, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface FileRenderProps<LAnnotation> {\n file: FileContents;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n forceRender?: boolean;\n lineAnnotations?: LineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileHyrdateProps<LAnnotation> extends Omit<FileRenderProps<LAnnotation>, 'fileContainer'> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\nexport interface FileOptions<LAnnotation> extends BaseCodeOptions, MouseEventManagerBaseOptions<'file'>, LineSelectionOptions {\n disableFileHeader?: boolean;\n renderCustomMetadata?: RenderFileMetadata;\n /**\n * When true, errors during rendering are rethrown instead of being caught\n * and displayed in the DOM. Useful for testing or when you want to handle\n * errors yourself.\n */\n disableErrorHandling?: boolean;\n renderAnnotation?(annotation: LineAnnotation<LAnnotation>): HTMLElement | undefined;\n renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: LineAnnotation<LAnnotation>;\n}\nexport declare class File<LAnnotation = undefined> {\n options: FileOptions<LAnnotation>;\n private workerManager?;\n private isContainerManaged;\n static LoadedCustomComponent: boolean;\n readonly __id: string;\n protected fileContainer: HTMLElement | undefined;\n protected spriteSVG: SVGElement | undefined;\n protected pre: HTMLPreElement | undefined;\n protected code: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected hoverContent: HTMLElement | undefined;\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRowCount: number | undefined;\n protected headerElement: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected fileRenderer: FileRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected mouseEventManager: MouseEventManager<'file'>;\n protected lineSelectionManager: LineSelectionManager;\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>>;\n protected lineAnnotations: LineAnnotation<LAnnotation>[];\n protected file: FileContents | undefined;\n protected renderRange: RenderRange | undefined;\n constructor(options?: FileOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n private handleHighlightRender;\n rerender(): void;\n setOptions(options: FileOptions<LAnnotation> | undefined): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n getHoveredLine: () => {\n lineNumber: number;\n } | undefined;\n setLineAnnotations(lineAnnotations: LineAnnotation<LAnnotation>[]): void;\n setSelectedLines(range: SelectedLineRange | null): void;\n cleanUp(): void;\n hydrate(props: FileHyrdateProps<LAnnotation>): void;\n getOrCreateLineCache(file?: FileContents | undefined): string[];\n render({ file, fileContainer, forceRender, containerWrapper, lineAnnotations, renderRange }: FileRenderProps<LAnnotation>): boolean;\n private canPartiallyRender;\n renderPlaceholder(height: number): boolean;\n private cleanChildNodes;\n private renderAnnotations;\n private renderHoverUtility;\n private injectUnsafeCSS;\n private applyFullRender;\n private applyPartialRender;\n private getColumns;\n private trimDOMToOverlap;\n private getDOMBoundaryIndices;\n private getLineIndexFromDOMNode;\n private applyBuffers;\n private applyHeaderToDOM;\n protected getOrCreateFileContainerNode(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n private getOrCreatePreNode;\n private applyPreNodeAttributes;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=File.d.ts.map"],"mappings":"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"}
|
package/dist/components/File.js
CHANGED
|
@@ -2,41 +2,52 @@ import { DEFAULT_THEMES, DIFFS_TAG_NAME, HEADER_METADATA_SLOT_ID, UNSAFE_CSS_ATT
|
|
|
2
2
|
import { LineSelectionManager, pluckLineSelectionOptions } from "../managers/LineSelectionManager.js";
|
|
3
3
|
import { MouseEventManager, pluckMouseEventOptions } from "../managers/MouseEventManager.js";
|
|
4
4
|
import { ResizeManager } from "../managers/ResizeManager.js";
|
|
5
|
+
import { areRenderRangesEqual } from "../utils/areRenderRangesEqual.js";
|
|
5
6
|
import { getLineAnnotationName } from "../utils/getLineAnnotationName.js";
|
|
6
7
|
import { FileRenderer } from "../renderers/FileRenderer.js";
|
|
7
8
|
import { SVGSpriteSheet } from "../sprite.js";
|
|
8
9
|
import { areFilesEqual } from "../utils/areFilesEqual.js";
|
|
10
|
+
import { areLineAnnotationsEqual } from "../utils/areLineAnnotationsEqual.js";
|
|
11
|
+
import { arePrePropertiesEqual } from "../utils/arePrePropertiesEqual.js";
|
|
9
12
|
import { createAnnotationWrapperNode } from "../utils/createAnnotationWrapperNode.js";
|
|
10
|
-
import { createCodeNode } from "../utils/createCodeNode.js";
|
|
11
13
|
import { createHoverContentNode } from "../utils/createHoverContentNode.js";
|
|
12
14
|
import { createUnsafeCSSStyleNode } from "../utils/createUnsafeCSSStyleNode.js";
|
|
13
15
|
import { wrapUnsafeCSS } from "../utils/cssWrappers.js";
|
|
16
|
+
import { getOrCreateCodeNode } from "../utils/getOrCreateCodeNode.js";
|
|
14
17
|
import { prerenderHTMLIfNecessary } from "../utils/prerenderHTMLIfNecessary.js";
|
|
15
18
|
import { setPreNodeProperties } from "../utils/setWrapperNodeProps.js";
|
|
16
19
|
import { DiffsContainerLoaded } from "./web-components.js";
|
|
17
20
|
import { toHtml } from "hast-util-to-html";
|
|
18
21
|
|
|
19
22
|
//#region src/components/File.ts
|
|
23
|
+
const EMPTY_STRINGS = [];
|
|
20
24
|
let instanceId = -1;
|
|
21
25
|
var File = class {
|
|
22
26
|
static LoadedCustomComponent = DiffsContainerLoaded;
|
|
23
|
-
__id = ++instanceId
|
|
27
|
+
__id = `file:${++instanceId}`;
|
|
24
28
|
fileContainer;
|
|
25
29
|
spriteSVG;
|
|
26
30
|
pre;
|
|
27
31
|
code;
|
|
32
|
+
bufferBefore;
|
|
33
|
+
bufferAfter;
|
|
28
34
|
unsafeCSSStyle;
|
|
29
35
|
hoverContent;
|
|
30
36
|
errorWrapper;
|
|
37
|
+
placeHolder;
|
|
38
|
+
lastRenderedHeaderHTML;
|
|
39
|
+
appliedPreAttributes;
|
|
40
|
+
lastRowCount;
|
|
31
41
|
headerElement;
|
|
32
42
|
headerMetadata;
|
|
33
43
|
fileRenderer;
|
|
34
44
|
resizeManager;
|
|
35
45
|
mouseEventManager;
|
|
36
46
|
lineSelectionManager;
|
|
37
|
-
|
|
47
|
+
annotationCache = /* @__PURE__ */ new Map();
|
|
38
48
|
lineAnnotations = [];
|
|
39
49
|
file;
|
|
50
|
+
renderRange;
|
|
40
51
|
constructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {
|
|
41
52
|
this.options = options;
|
|
42
53
|
this.workerManager = workerManager;
|
|
@@ -54,7 +65,8 @@ var File = class {
|
|
|
54
65
|
if (this.file == null) return;
|
|
55
66
|
this.render({
|
|
56
67
|
file: this.file,
|
|
57
|
-
forceRender: true
|
|
68
|
+
forceRender: true,
|
|
69
|
+
renderRange: this.renderRange
|
|
58
70
|
});
|
|
59
71
|
}
|
|
60
72
|
setOptions(options) {
|
|
@@ -101,14 +113,21 @@ var File = class {
|
|
|
101
113
|
this.lineSelectionManager.cleanUp();
|
|
102
114
|
this.workerManager?.unsubscribeToThemeChanges(this);
|
|
103
115
|
this.workerManager = void 0;
|
|
116
|
+
this.renderRange = void 0;
|
|
104
117
|
this.file = void 0;
|
|
105
118
|
if (!this.isContainerManaged) this.fileContainer?.parentNode?.removeChild(this.fileContainer);
|
|
106
119
|
if (this.fileContainer?.shadowRoot != null) this.fileContainer.shadowRoot.innerHTML = "";
|
|
107
120
|
this.fileContainer = void 0;
|
|
108
121
|
this.pre = void 0;
|
|
122
|
+
this.bufferBefore = void 0;
|
|
123
|
+
this.bufferAfter = void 0;
|
|
124
|
+
this.appliedPreAttributes = void 0;
|
|
125
|
+
this.lastRowCount = void 0;
|
|
109
126
|
this.headerElement = void 0;
|
|
127
|
+
this.lastRenderedHeaderHTML = void 0;
|
|
110
128
|
this.errorWrapper = void 0;
|
|
111
129
|
this.unsafeCSSStyle = void 0;
|
|
130
|
+
this.placeHolder = void 0;
|
|
112
131
|
}
|
|
113
132
|
hydrate(props) {
|
|
114
133
|
const { fileContainer, prerenderedHTML } = props;
|
|
@@ -121,6 +140,7 @@ var File = class {
|
|
|
121
140
|
if (!(element instanceof HTMLElement)) continue;
|
|
122
141
|
if (element instanceof HTMLPreElement) {
|
|
123
142
|
this.pre = element;
|
|
143
|
+
this.appliedPreAttributes = void 0;
|
|
124
144
|
continue;
|
|
125
145
|
}
|
|
126
146
|
if (element instanceof HTMLStyleElement && element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)) {
|
|
@@ -129,12 +149,14 @@ var File = class {
|
|
|
129
149
|
}
|
|
130
150
|
if ("diffsHeader" in element.dataset) {
|
|
131
151
|
this.headerElement = element;
|
|
152
|
+
this.lastRenderedHeaderHTML = void 0;
|
|
132
153
|
continue;
|
|
133
154
|
}
|
|
134
155
|
}
|
|
135
156
|
if (this.pre == null) this.render(props);
|
|
136
157
|
else {
|
|
137
158
|
const { file, lineAnnotations } = props;
|
|
159
|
+
const { overflow = "scroll" } = this.options;
|
|
138
160
|
this.fileContainer = fileContainer;
|
|
139
161
|
delete this.pre.dataset.dehydrated;
|
|
140
162
|
this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;
|
|
@@ -145,33 +167,47 @@ var File = class {
|
|
|
145
167
|
this.injectUnsafeCSS();
|
|
146
168
|
this.mouseEventManager.setup(this.pre);
|
|
147
169
|
this.lineSelectionManager.setup(this.pre);
|
|
148
|
-
|
|
170
|
+
this.resizeManager.setup(this.pre, overflow === "wrap");
|
|
149
171
|
}
|
|
150
172
|
}
|
|
151
|
-
|
|
173
|
+
getOrCreateLineCache(file = this.file) {
|
|
174
|
+
return file != null ? this.fileRenderer.getOrCreateLineCache(file) : EMPTY_STRINGS;
|
|
175
|
+
}
|
|
176
|
+
render({ file, fileContainer, forceRender = false, containerWrapper, lineAnnotations, renderRange }) {
|
|
177
|
+
const previousRenderRange = this.renderRange;
|
|
152
178
|
const annotationsChanged = lineAnnotations != null && (lineAnnotations.length > 0 || this.lineAnnotations.length > 0) ? lineAnnotations !== this.lineAnnotations : false;
|
|
153
|
-
|
|
179
|
+
const didFileChange = !areFilesEqual(this.file, file);
|
|
180
|
+
if (!forceRender && areRenderRangesEqual(renderRange, this.renderRange) && !didFileChange && !annotationsChanged) return false;
|
|
181
|
+
this.renderRange = renderRange;
|
|
154
182
|
this.file = file;
|
|
155
183
|
this.fileRenderer.setOptions(this.options);
|
|
156
184
|
if (lineAnnotations != null) this.setLineAnnotations(lineAnnotations);
|
|
157
185
|
this.fileRenderer.setLineAnnotations(this.lineAnnotations);
|
|
158
|
-
const {
|
|
186
|
+
const { disableErrorHandling = false, disableFileHeader = false, overflow = "scroll" } = this.options;
|
|
159
187
|
if (disableFileHeader) {
|
|
160
188
|
if (this.headerElement != null) {
|
|
161
189
|
this.headerElement.parentNode?.removeChild(this.headerElement);
|
|
162
190
|
this.headerElement = void 0;
|
|
191
|
+
this.lastRenderedHeaderHTML = void 0;
|
|
163
192
|
}
|
|
164
193
|
}
|
|
165
194
|
fileContainer = this.getOrCreateFileContainerNode(fileContainer, containerWrapper);
|
|
166
195
|
try {
|
|
167
|
-
const fileResult = this.fileRenderer.renderFile(file);
|
|
168
|
-
if (fileResult == null) {
|
|
169
|
-
if (this.workerManager != null && !this.workerManager.isInitialized()) this.workerManager.initialize().then(() => this.rerender());
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
if (fileResult.headerAST != null) this.applyHeaderToDOM(fileResult.headerAST, fileContainer);
|
|
173
196
|
const pre = this.getOrCreatePreNode(fileContainer);
|
|
174
|
-
this.
|
|
197
|
+
if (!this.canPartiallyRender(forceRender, annotationsChanged, didFileChange) || !this.applyPartialRender(previousRenderRange, renderRange)) {
|
|
198
|
+
const fileResult = this.fileRenderer.renderFile(file, renderRange);
|
|
199
|
+
if (fileResult == null) {
|
|
200
|
+
if (this.workerManager?.isInitialized() === false) this.workerManager.initialize().then(() => this.rerender());
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
if (fileResult.headerAST != null) this.applyHeaderToDOM(fileResult.headerAST, fileContainer);
|
|
204
|
+
this.applyFullRender(fileResult, pre);
|
|
205
|
+
}
|
|
206
|
+
this.applyBuffers(pre, renderRange);
|
|
207
|
+
this.injectUnsafeCSS();
|
|
208
|
+
this.mouseEventManager.setup(pre);
|
|
209
|
+
this.lineSelectionManager.setup(pre);
|
|
210
|
+
this.resizeManager.setup(pre, overflow === "wrap");
|
|
175
211
|
this.renderAnnotations();
|
|
176
212
|
this.renderHoverUtility();
|
|
177
213
|
} catch (error) {
|
|
@@ -179,31 +215,92 @@ var File = class {
|
|
|
179
215
|
console.error(error);
|
|
180
216
|
if (error instanceof Error) this.applyErrorToDOM(error, fileContainer);
|
|
181
217
|
}
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
canPartiallyRender(forceRender, annotationsChanged, didContentChange) {
|
|
221
|
+
if (forceRender || annotationsChanged || didContentChange) return false;
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
renderPlaceholder(height) {
|
|
225
|
+
if (this.fileContainer == null) return false;
|
|
226
|
+
this.cleanChildNodes();
|
|
227
|
+
if (this.placeHolder == null) {
|
|
228
|
+
const shadowRoot = this.fileContainer.shadowRoot ?? this.fileContainer.attachShadow({ mode: "open" });
|
|
229
|
+
this.placeHolder = document.createElement("div");
|
|
230
|
+
this.placeHolder.dataset.placeholder = "";
|
|
231
|
+
shadowRoot.appendChild(this.placeHolder);
|
|
232
|
+
}
|
|
233
|
+
this.placeHolder.style.setProperty("height", `${height}px`);
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
cleanChildNodes() {
|
|
237
|
+
this.resizeManager.cleanUp();
|
|
238
|
+
this.mouseEventManager.cleanUp();
|
|
239
|
+
this.lineSelectionManager.cleanUp();
|
|
240
|
+
this.bufferAfter?.remove();
|
|
241
|
+
this.bufferBefore?.remove();
|
|
242
|
+
this.code?.remove();
|
|
243
|
+
this.errorWrapper?.remove();
|
|
244
|
+
this.headerElement?.remove();
|
|
245
|
+
this.hoverContent?.remove();
|
|
246
|
+
this.pre?.remove();
|
|
247
|
+
this.spriteSVG?.remove();
|
|
248
|
+
this.unsafeCSSStyle?.remove();
|
|
249
|
+
this.bufferAfter = void 0;
|
|
250
|
+
this.bufferBefore = void 0;
|
|
251
|
+
this.code = void 0;
|
|
252
|
+
this.errorWrapper = void 0;
|
|
253
|
+
this.headerElement = void 0;
|
|
254
|
+
this.hoverContent = void 0;
|
|
255
|
+
this.pre = void 0;
|
|
256
|
+
this.spriteSVG = void 0;
|
|
257
|
+
this.unsafeCSSStyle = void 0;
|
|
258
|
+
this.lastRenderedHeaderHTML = void 0;
|
|
259
|
+
this.lastRowCount = void 0;
|
|
182
260
|
}
|
|
183
261
|
renderAnnotations() {
|
|
184
|
-
if (this.isContainerManaged || this.fileContainer == null)
|
|
185
|
-
|
|
186
|
-
|
|
262
|
+
if (this.isContainerManaged || this.fileContainer == null) {
|
|
263
|
+
for (const { element } of this.annotationCache.values()) element.parentNode?.removeChild(element);
|
|
264
|
+
this.annotationCache.clear();
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
const staleAnnotations = new Map(this.annotationCache);
|
|
187
268
|
const { renderAnnotation } = this.options;
|
|
188
|
-
if (renderAnnotation != null && this.lineAnnotations.length > 0) for (const annotation of this.lineAnnotations) {
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
269
|
+
if (renderAnnotation != null && this.lineAnnotations.length > 0) for (const [index, annotation] of this.lineAnnotations.entries()) {
|
|
270
|
+
const id = `${index}-${getLineAnnotationName(annotation)}`;
|
|
271
|
+
let cache = this.annotationCache.get(id);
|
|
272
|
+
if (cache == null || !areLineAnnotationsEqual(annotation, cache.annotation)) {
|
|
273
|
+
cache?.element.parentElement?.removeChild(cache.element);
|
|
274
|
+
const content = renderAnnotation(annotation);
|
|
275
|
+
if (content == null) continue;
|
|
276
|
+
cache = {
|
|
277
|
+
element: createAnnotationWrapperNode(getLineAnnotationName(annotation)),
|
|
278
|
+
annotation
|
|
279
|
+
};
|
|
280
|
+
cache.element.appendChild(content);
|
|
281
|
+
this.fileContainer.appendChild(cache.element);
|
|
282
|
+
this.annotationCache.set(id, cache);
|
|
283
|
+
}
|
|
284
|
+
staleAnnotations.delete(id);
|
|
285
|
+
}
|
|
286
|
+
for (const [id, { element }] of staleAnnotations.entries()) {
|
|
287
|
+
this.annotationCache.delete(id);
|
|
288
|
+
element.parentNode?.removeChild(element);
|
|
195
289
|
}
|
|
196
290
|
}
|
|
197
291
|
renderHoverUtility() {
|
|
198
292
|
const { renderHoverUtility } = this.options;
|
|
199
293
|
if (this.fileContainer == null || renderHoverUtility == null) return;
|
|
200
|
-
if (this.hoverContent == null) {
|
|
201
|
-
this.hoverContent = createHoverContentNode();
|
|
202
|
-
this.fileContainer.appendChild(this.hoverContent);
|
|
203
|
-
}
|
|
204
294
|
const element = renderHoverUtility(this.mouseEventManager.getHoveredLine);
|
|
205
|
-
this.hoverContent
|
|
206
|
-
if (element
|
|
295
|
+
if (element != null && this.hoverContent != null) return;
|
|
296
|
+
else if (element == null) {
|
|
297
|
+
this.hoverContent?.parentNode?.removeChild(this.hoverContent);
|
|
298
|
+
this.hoverContent = void 0;
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
this.hoverContent = createHoverContentNode();
|
|
302
|
+
this.hoverContent.appendChild(element);
|
|
303
|
+
this.fileContainer.appendChild(this.hoverContent);
|
|
207
304
|
}
|
|
208
305
|
injectUnsafeCSS() {
|
|
209
306
|
if (this.fileContainer?.shadowRoot == null) return;
|
|
@@ -221,31 +318,161 @@ var File = class {
|
|
|
221
318
|
}
|
|
222
319
|
this.unsafeCSSStyle.innerText = wrapUnsafeCSS(unsafeCSS);
|
|
223
320
|
}
|
|
224
|
-
|
|
321
|
+
applyFullRender(result, pre) {
|
|
225
322
|
this.cleanupErrorWrapper();
|
|
226
323
|
this.applyPreNodeAttributes(pre, result);
|
|
227
|
-
|
|
228
|
-
this.code =
|
|
229
|
-
this.code
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
this
|
|
235
|
-
|
|
236
|
-
|
|
324
|
+
this.code = getOrCreateCodeNode({ code: this.code });
|
|
325
|
+
this.code.innerHTML = this.fileRenderer.renderPartialHTML(this.fileRenderer.renderCodeAST(result));
|
|
326
|
+
pre.replaceChildren(this.code);
|
|
327
|
+
this.lastRowCount = result.rowCount;
|
|
328
|
+
}
|
|
329
|
+
applyPartialRender(previousRenderRange, renderRange) {
|
|
330
|
+
if (previousRenderRange == null || renderRange == null) return false;
|
|
331
|
+
const { file, code } = this;
|
|
332
|
+
const columns = code != null ? this.getColumns(code) : void 0;
|
|
333
|
+
if (file == null || code == null || columns == null) return false;
|
|
334
|
+
const previousStart = previousRenderRange.startingLine;
|
|
335
|
+
const nextStart = renderRange.startingLine;
|
|
336
|
+
const previousEnd = previousRenderRange.totalLines === Infinity ? Number.POSITIVE_INFINITY : previousStart + previousRenderRange.totalLines;
|
|
337
|
+
const nextEnd = renderRange.totalLines === Infinity ? Number.POSITIVE_INFINITY : nextStart + renderRange.totalLines;
|
|
338
|
+
const overlapStart = Math.max(previousStart, nextStart);
|
|
339
|
+
const overlapEnd = Math.min(previousEnd, nextEnd);
|
|
340
|
+
if (overlapEnd <= overlapStart) return false;
|
|
341
|
+
if (!this.trimDOMToOverlap(columns.gutter, overlapStart, overlapEnd) || !this.trimDOMToOverlap(columns.content, overlapStart, overlapEnd)) return false;
|
|
342
|
+
let { length: rowCount } = columns.content.children;
|
|
343
|
+
const renderChunk = (startingLine, totalLines) => {
|
|
344
|
+
if (totalLines <= 0) return;
|
|
345
|
+
return this.fileRenderer.renderFile(file, {
|
|
346
|
+
startingLine,
|
|
347
|
+
totalLines,
|
|
348
|
+
bufferBefore: 0,
|
|
349
|
+
bufferAfter: 0
|
|
350
|
+
});
|
|
351
|
+
};
|
|
352
|
+
const prependResult = nextStart < overlapStart ? renderChunk(nextStart, overlapStart - nextStart) : void 0;
|
|
353
|
+
if (prependResult === void 0 && nextStart < overlapStart) return false;
|
|
354
|
+
const appendTotalLines = nextEnd === Number.POSITIVE_INFINITY ? Number.POSITIVE_INFINITY : Math.max(0, nextEnd - overlapEnd);
|
|
355
|
+
const appendResult = nextEnd > overlapEnd ? renderChunk(overlapEnd, appendTotalLines) : void 0;
|
|
356
|
+
if (appendResult === void 0 && nextEnd > overlapEnd) return false;
|
|
357
|
+
this.cleanupErrorWrapper();
|
|
358
|
+
if (prependResult != null) {
|
|
359
|
+
columns.gutter.insertAdjacentHTML("afterbegin", this.fileRenderer.renderPartialHTML(prependResult.gutterAST));
|
|
360
|
+
columns.content.insertAdjacentHTML("afterbegin", this.fileRenderer.renderPartialHTML(prependResult.contentAST));
|
|
361
|
+
rowCount += prependResult.rowCount;
|
|
362
|
+
}
|
|
363
|
+
if (appendResult != null) {
|
|
364
|
+
columns.gutter.insertAdjacentHTML("beforeend", this.fileRenderer.renderPartialHTML(appendResult.gutterAST));
|
|
365
|
+
columns.content.insertAdjacentHTML("beforeend", this.fileRenderer.renderPartialHTML(appendResult.contentAST));
|
|
366
|
+
rowCount += appendResult.rowCount;
|
|
367
|
+
}
|
|
368
|
+
if (this.lastRowCount !== rowCount) {
|
|
369
|
+
columns.gutter.style.setProperty("grid-row", `span ${rowCount}`);
|
|
370
|
+
columns.content.style.setProperty("grid-row", `span ${rowCount}`);
|
|
371
|
+
this.lastRowCount = rowCount;
|
|
372
|
+
}
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
getColumns(code) {
|
|
376
|
+
const gutter = code.children[0];
|
|
377
|
+
const content = code.children[1];
|
|
378
|
+
if (!(gutter instanceof HTMLElement) || !(content instanceof HTMLElement) || gutter.dataset.gutter == null || content.dataset.content == null) return;
|
|
379
|
+
return {
|
|
380
|
+
gutter,
|
|
381
|
+
content
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
trimDOMToOverlap(container, overlapStart, overlapEnd) {
|
|
385
|
+
const boundaryIndices = this.getDOMBoundaryIndices(container, [overlapStart, overlapEnd]);
|
|
386
|
+
const startIndex = boundaryIndices.get(overlapStart) ?? container.children.length;
|
|
387
|
+
const endIndex = boundaryIndices.get(overlapEnd) ?? container.children.length;
|
|
388
|
+
if (startIndex > endIndex) return false;
|
|
389
|
+
for (let i = container.children.length - 1; i >= endIndex; i -= 1) container.children[i]?.remove();
|
|
390
|
+
for (let i = startIndex - 1; i >= 0; i -= 1) container.children[i]?.remove();
|
|
391
|
+
return true;
|
|
392
|
+
}
|
|
393
|
+
getDOMBoundaryIndices(container, boundaries) {
|
|
394
|
+
const sortedBoundaries = [...new Set(boundaries)].sort((a, b) => a - b);
|
|
395
|
+
const boundaryIndices = /* @__PURE__ */ new Map();
|
|
396
|
+
if (sortedBoundaries.length === 0) return boundaryIndices;
|
|
397
|
+
let boundaryIndex = 0;
|
|
398
|
+
let nextBoundary = sortedBoundaries[boundaryIndex];
|
|
399
|
+
const { children } = container;
|
|
400
|
+
for (let i = 0; i < children.length; i += 1) {
|
|
401
|
+
const child = children[i];
|
|
402
|
+
if (!(child instanceof HTMLElement)) continue;
|
|
403
|
+
const lineIndex = this.getLineIndexFromDOMNode(child);
|
|
404
|
+
if (lineIndex == null) continue;
|
|
405
|
+
while (nextBoundary != null && lineIndex >= nextBoundary) {
|
|
406
|
+
boundaryIndices.set(nextBoundary, i);
|
|
407
|
+
boundaryIndex += 1;
|
|
408
|
+
nextBoundary = sortedBoundaries[boundaryIndex];
|
|
409
|
+
}
|
|
410
|
+
if (boundaryIndex >= sortedBoundaries.length) break;
|
|
411
|
+
}
|
|
412
|
+
for (const boundary of sortedBoundaries) if (!boundaryIndices.has(boundary)) boundaryIndices.set(boundary, children.length);
|
|
413
|
+
return boundaryIndices;
|
|
414
|
+
}
|
|
415
|
+
getLineIndexFromDOMNode(node) {
|
|
416
|
+
const lineIndexAttr = node.dataset.lineIndex;
|
|
417
|
+
if (lineIndexAttr == null) return;
|
|
418
|
+
const parsed = Number(lineIndexAttr);
|
|
419
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
420
|
+
}
|
|
421
|
+
applyBuffers(pre, renderRange) {
|
|
422
|
+
const { disableVirtualizationBuffers = false } = this.options;
|
|
423
|
+
if (disableVirtualizationBuffers || renderRange == null) {
|
|
424
|
+
if (this.bufferBefore != null) {
|
|
425
|
+
this.bufferBefore.parentNode?.removeChild(this.bufferBefore);
|
|
426
|
+
this.bufferBefore = void 0;
|
|
427
|
+
}
|
|
428
|
+
if (this.bufferAfter != null) {
|
|
429
|
+
this.bufferAfter.parentNode?.removeChild(this.bufferAfter);
|
|
430
|
+
this.bufferAfter = void 0;
|
|
431
|
+
}
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
if (renderRange.bufferBefore > 0) {
|
|
435
|
+
if (this.bufferBefore == null) {
|
|
436
|
+
this.bufferBefore = document.createElement("div");
|
|
437
|
+
this.bufferBefore.dataset.virtualizerBuffer = "before";
|
|
438
|
+
pre.before(this.bufferBefore);
|
|
439
|
+
}
|
|
440
|
+
this.bufferBefore.style.setProperty("height", `${renderRange.bufferBefore}px`);
|
|
441
|
+
this.bufferBefore.style.setProperty("contain", "strict");
|
|
442
|
+
} else if (this.bufferBefore != null) {
|
|
443
|
+
this.bufferBefore.parentNode?.removeChild(this.bufferBefore);
|
|
444
|
+
this.bufferBefore = void 0;
|
|
445
|
+
}
|
|
446
|
+
if (renderRange.bufferAfter > 0) {
|
|
447
|
+
if (this.bufferAfter == null) {
|
|
448
|
+
this.bufferAfter = document.createElement("div");
|
|
449
|
+
this.bufferAfter.dataset.virtualizerBuffer = "after";
|
|
450
|
+
pre.after(this.bufferAfter);
|
|
451
|
+
}
|
|
452
|
+
this.bufferAfter.style.setProperty("height", `${renderRange.bufferAfter}px`);
|
|
453
|
+
this.bufferAfter.style.setProperty("contain", "strict");
|
|
454
|
+
} else if (this.bufferAfter != null) {
|
|
455
|
+
this.bufferAfter.parentNode?.removeChild(this.bufferAfter);
|
|
456
|
+
this.bufferAfter = void 0;
|
|
457
|
+
}
|
|
237
458
|
}
|
|
238
459
|
applyHeaderToDOM(headerAST, container) {
|
|
239
460
|
const { file } = this;
|
|
240
461
|
if (file == null) return;
|
|
241
462
|
this.cleanupErrorWrapper();
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const
|
|
245
|
-
if (
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
463
|
+
this.placeHolder?.remove();
|
|
464
|
+
this.placeHolder = void 0;
|
|
465
|
+
const headerHTML = toHtml(headerAST);
|
|
466
|
+
if (headerHTML !== this.lastRenderedHeaderHTML) {
|
|
467
|
+
const tempDiv = document.createElement("div");
|
|
468
|
+
tempDiv.innerHTML = headerHTML;
|
|
469
|
+
const newHeader = tempDiv.firstElementChild;
|
|
470
|
+
if (!(newHeader instanceof HTMLElement)) return;
|
|
471
|
+
if (this.headerElement != null) container.shadowRoot?.replaceChild(newHeader, this.headerElement);
|
|
472
|
+
else container.shadowRoot?.prepend(newHeader);
|
|
473
|
+
this.headerElement = newHeader;
|
|
474
|
+
this.lastRenderedHeaderHTML = headerHTML;
|
|
475
|
+
}
|
|
249
476
|
if (this.isContainerManaged) return;
|
|
250
477
|
const { renderCustomMetadata } = this.options;
|
|
251
478
|
if (this.headerMetadata != null) this.headerMetadata.parentNode?.removeChild(this.headerMetadata);
|
|
@@ -259,7 +486,12 @@ var File = class {
|
|
|
259
486
|
}
|
|
260
487
|
}
|
|
261
488
|
getOrCreateFileContainerNode(fileContainer, parentNode) {
|
|
489
|
+
const previousContainer = this.fileContainer;
|
|
262
490
|
this.fileContainer = fileContainer ?? this.fileContainer ?? document.createElement(DIFFS_TAG_NAME);
|
|
491
|
+
if (previousContainer != null && previousContainer !== this.fileContainer) {
|
|
492
|
+
this.lastRenderedHeaderHTML = void 0;
|
|
493
|
+
this.headerElement = void 0;
|
|
494
|
+
}
|
|
263
495
|
if (parentNode != null && this.fileContainer.parentNode !== parentNode) parentNode.appendChild(this.fileContainer);
|
|
264
496
|
if (this.spriteSVG == null) {
|
|
265
497
|
const fragment = document.createElement("div");
|
|
@@ -273,16 +505,24 @@ var File = class {
|
|
|
273
505
|
return this.fileContainer;
|
|
274
506
|
}
|
|
275
507
|
getOrCreatePreNode(container) {
|
|
508
|
+
const shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: "open" });
|
|
276
509
|
if (this.pre == null) {
|
|
277
510
|
this.pre = document.createElement("pre");
|
|
511
|
+
this.appliedPreAttributes = void 0;
|
|
512
|
+
this.code = void 0;
|
|
513
|
+
shadowRoot.appendChild(this.pre);
|
|
514
|
+
} else if (this.pre.parentNode !== shadowRoot) {
|
|
278
515
|
container.shadowRoot?.appendChild(this.pre);
|
|
279
|
-
|
|
516
|
+
this.appliedPreAttributes = void 0;
|
|
517
|
+
}
|
|
518
|
+
this.placeHolder?.remove();
|
|
519
|
+
this.placeHolder = void 0;
|
|
280
520
|
return this.pre;
|
|
281
521
|
}
|
|
282
522
|
applyPreNodeAttributes(pre, { totalLines, themeStyles, baseThemeType }) {
|
|
283
523
|
const { overflow = "scroll", themeType = "system", disableLineNumbers = false } = this.options;
|
|
284
|
-
|
|
285
|
-
|
|
524
|
+
const preProperties = {
|
|
525
|
+
type: "file",
|
|
286
526
|
split: false,
|
|
287
527
|
themeStyles,
|
|
288
528
|
overflow,
|
|
@@ -291,7 +531,10 @@ var File = class {
|
|
|
291
531
|
diffIndicators: "none",
|
|
292
532
|
disableBackground: true,
|
|
293
533
|
totalLines
|
|
294
|
-
}
|
|
534
|
+
};
|
|
535
|
+
if (arePrePropertiesEqual(preProperties, this.appliedPreAttributes)) return;
|
|
536
|
+
setPreNodeProperties(pre, preProperties);
|
|
537
|
+
this.appliedPreAttributes = preProperties;
|
|
295
538
|
}
|
|
296
539
|
applyErrorToDOM(error, container) {
|
|
297
540
|
this.cleanupErrorWrapper();
|
|
@@ -299,6 +542,7 @@ var File = class {
|
|
|
299
542
|
pre.innerHTML = "";
|
|
300
543
|
pre.parentNode?.removeChild(pre);
|
|
301
544
|
this.pre = void 0;
|
|
545
|
+
this.appliedPreAttributes = void 0;
|
|
302
546
|
const shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: "open" });
|
|
303
547
|
this.errorWrapper ??= document.createElement("div");
|
|
304
548
|
this.errorWrapper.dataset.errorWrapper = "";
|