@pierre/diffs 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +1 -1
  2. package/dist/components/File.d.ts +2 -2
  3. package/dist/components/File.d.ts.map +1 -1
  4. package/dist/components/File.js.map +1 -1
  5. package/dist/components/FileDiff.d.ts +3 -3
  6. package/dist/components/FileDiff.d.ts.map +1 -1
  7. package/dist/components/FileDiff.js.map +1 -1
  8. package/dist/components/UnresolvedFile.d.ts +1 -1
  9. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  10. package/dist/components/UnresolvedFile.js.map +1 -1
  11. package/dist/managers/InteractionManager.d.ts +2 -2
  12. package/dist/managers/InteractionManager.d.ts.map +1 -1
  13. package/dist/managers/InteractionManager.js.map +1 -1
  14. package/dist/react/File.js +2 -1
  15. package/dist/react/File.js.map +1 -1
  16. package/dist/react/FileDiff.js +2 -1
  17. package/dist/react/FileDiff.js.map +1 -1
  18. package/dist/react/MultiFileDiff.js +2 -1
  19. package/dist/react/MultiFileDiff.js.map +1 -1
  20. package/dist/react/PatchDiff.js +2 -1
  21. package/dist/react/PatchDiff.js.map +1 -1
  22. package/dist/react/UnresolvedFile.js +2 -1
  23. package/dist/react/UnresolvedFile.js.map +1 -1
  24. package/dist/react/constants.d.ts +2 -1
  25. package/dist/react/constants.d.ts.map +1 -1
  26. package/dist/react/constants.js +4 -1
  27. package/dist/react/constants.js.map +1 -1
  28. package/dist/react/index.d.ts +2 -2
  29. package/dist/react/index.js +2 -2
  30. package/dist/react/jsx.d.ts.map +1 -1
  31. package/dist/react/utils/useFileDiffInstance.d.ts +3 -1
  32. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  33. package/dist/react/utils/useFileDiffInstance.js +14 -5
  34. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  35. package/dist/react/utils/useFileInstance.d.ts +3 -1
  36. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  37. package/dist/react/utils/useFileInstance.js +14 -5
  38. package/dist/react/utils/useFileInstance.js.map +1 -1
  39. package/dist/react/utils/useUnresolvedFileInstance.d.ts +3 -1
  40. package/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -1
  41. package/dist/react/utils/useUnresolvedFileInstance.js +8 -7
  42. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  43. package/dist/types.d.ts.map +1 -1
  44. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedVirtualizedFileDiff.d.ts","names":["FileDiffMetadata","RenderRange","RenderWindow","VirtualFileMetrics","WorkerPoolManager","FileDiff","FileDiffOptions","RenderProps","HTMLElement","PositionProps","AdvancedVirtualizedFileDiff","LAnnotation","unifiedTop","splitTop","fileDiff","Partial","renderWindow","fileContainer"],"sources":["../../src/components/AdvancedVirtualizedFileDiff.d.ts"],"sourcesContent":["import type { FileDiffMetadata, RenderRange, RenderWindow, VirtualFileMetrics } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nimport { FileDiff, type FileDiffOptions } from './FileDiff';\nexport type { FileDiffOptions };\ninterface RenderProps {\n fileContainer?: HTMLElement;\n renderWindow: RenderWindow;\n}\ninterface PositionProps {\n unifiedTop: number;\n splitTop: number;\n fileDiff: FileDiffMetadata;\n}\nexport declare class AdvancedVirtualizedFileDiff<LAnnotation = undefined> extends FileDiff<LAnnotation> {\n readonly __id: string;\n unifiedTop: number;\n splitTop: number;\n unifiedHeight: number;\n splitHeight: number;\n private metrics;\n fileDiff: FileDiffMetadata;\n renderedRange: RenderRange | undefined;\n constructor({ unifiedTop, splitTop, fileDiff }: PositionProps, options?: FileDiffOptions<LAnnotation>, metrics?: Partial<VirtualFileMetrics>, workerManager?: WorkerPoolManager | undefined);\n cleanUp(recycle?: boolean): void;\n private computeSize;\n virtualizedRender({ renderWindow, fileContainer }: RenderProps): void;\n private computeRenderRangeFromWindow;\n}\n//# sourceMappingURL=AdvancedVirtualizedFileDiff.d.ts.map"],"mappings":";;;;;;UAIUO,WAAAA;kBACUC;EADVD,YAAAA,EAEQL,YAFG;AAES;AAO9B,UALUO,aAAAA,CAKWC;EAAsEC,UAAAA,EAAAA,MAAAA;EAO7EX,QAAAA,EAAAA,MAAAA;EACKC,QAAAA,EAVLD,gBAUKC;;AACWY,cATTH,2BASSG,CAAAA,cAAAA,SAAAA,CAAAA,SAToDR,QASpDQ,CAT6DF,WAS7DE,CAAAA,CAAAA;EAAUC,SAAAA,IAAAA,EAAAA,MAAAA;EAAYL,UAAAA,EAAAA,MAAAA;EAAyCE,QAAAA,EAAAA,MAAAA;EAAhBL,aAAAA,EAAAA,MAAAA;EAAgDH,WAAAA,EAAAA,MAAAA;EAARY,QAAAA,OAAAA;EAA6CX,QAAAA,EAFpJJ,gBAEoJI;EAG1IY,aAAAA,EAJLf,WAIKe,GAAAA,SAAAA;EAAcC,WAAAA,CAAAA;IAAAA,UAAAA;IAAAA,QAAAA;IAAAA;EAAAA,CAAAA,EAHcR,aAGdQ,EAAAA,OAAAA,CAAAA,EAHuCX,eAGvCW,CAHuDN,WAGvDM,CAAAA,EAAAA,OAAAA,CAAAA,EAH+EF,OAG/EE,CAHuFd,kBAGvFc,CAAAA,EAAAA,aAAAA,CAAAA,EAH4Hb,iBAG5Ha,GAAAA,SAAAA;EAAiBV,OAAAA,CAAAA,OAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,IAAAA;EAZ2BF,QAAAA,WAAAA;EAAQ,iBAAA,CAAA;IAAA,YAAA;IAAA;EAAA,CAAA,EAYnCE,WAZmC,CAAA,EAAA,IAAA"}
1
+ {"version":3,"file":"AdvancedVirtualizedFileDiff.d.ts","names":["FileDiffMetadata","RenderRange","RenderWindow","VirtualFileMetrics","WorkerPoolManager","FileDiff","FileDiffOptions","RenderProps","HTMLElement","PositionProps","AdvancedVirtualizedFileDiff","LAnnotation","unifiedTop","splitTop","fileDiff","Partial","renderWindow","fileContainer"],"sources":["../../src/components/AdvancedVirtualizedFileDiff.d.ts"],"sourcesContent":["import type { FileDiffMetadata, RenderRange, RenderWindow, VirtualFileMetrics } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nimport { FileDiff, type FileDiffOptions } from './FileDiff';\nexport type { FileDiffOptions };\ninterface RenderProps {\n fileContainer?: HTMLElement;\n renderWindow: RenderWindow;\n}\ninterface PositionProps {\n unifiedTop: number;\n splitTop: number;\n fileDiff: FileDiffMetadata;\n}\nexport declare class AdvancedVirtualizedFileDiff<LAnnotation = undefined> extends FileDiff<LAnnotation> {\n readonly __id: string;\n unifiedTop: number;\n splitTop: number;\n unifiedHeight: number;\n splitHeight: number;\n private metrics;\n fileDiff: FileDiffMetadata;\n renderedRange: RenderRange | undefined;\n constructor({ unifiedTop, splitTop, fileDiff }: PositionProps, options?: FileDiffOptions<LAnnotation>, metrics?: Partial<VirtualFileMetrics>, workerManager?: WorkerPoolManager | undefined);\n cleanUp(recycle?: boolean): void;\n private computeSize;\n virtualizedRender({ renderWindow, fileContainer }: RenderProps): void;\n private computeRenderRangeFromWindow;\n}\n//# sourceMappingURL=AdvancedVirtualizedFileDiff.d.ts.map"],"mappings":";;;;;;UAIUO,WAAAA;kBACUC;EADVD,YAAAA,EAEQL,YADEM;AACU;AAO9B,UALUC,aAAAA,CAKWC;EAAsEC,UAAAA,EAAAA,MAAAA;EAO7EX,QAAAA,EAAAA,MAAAA;EACKC,QAAAA,EAVLD,gBAUKC;;AACWY,cATTH,2BASSG,CAAAA,cAAAA,SAAAA,CAAAA,SAToDR,QASpDQ,CAT6DF,WAS7DE,CAAAA,CAAAA;EAAUC,SAAAA,IAAAA,EAAAA,MAAAA;EAAYL,UAAAA,EAAAA,MAAAA;EAAyCE,QAAAA,EAAAA,MAAAA;EAAhBL,aAAAA,EAAAA,MAAAA;EAAgDH,WAAAA,EAAAA,MAAAA;EAARY,QAAAA,OAAAA;EAA6CX,QAAAA,EAFpJJ,gBAEoJI;EAG1IY,aAAAA,EAJLf,WAIKe,GAAAA,SAAAA;EAAcC,WAAAA,CAAAA;IAAAA,UAAAA;IAAAA,QAAAA;IAAAA;EAAAA,CAAAA,EAHcR,aAGdQ,EAAAA,OAAAA,CAAAA,EAHuCX,eAGvCW,CAHuDN,WAGvDM,CAAAA,EAAAA,OAAAA,CAAAA,EAH+EF,OAG/EE,CAHuFd,kBAGvFc,CAAAA,EAAAA,aAAAA,CAAAA,EAH4Hb,iBAG5Ha,GAAAA,SAAAA;EAAiBV,OAAAA,CAAAA,OAAAA,CAAAA,EAAAA,OAAAA,CAAAA,EAAAA,IAAAA;EAZ2BF,QAAAA,WAAAA;EAAQ,iBAAA,CAAA;IAAA,YAAA;IAAA;EAAA,CAAA,EAYnCE,WAZmC,CAAA,EAAA,IAAA"}
@@ -33,11 +33,11 @@ interface FileOptions<LAnnotation> extends BaseCodeOptions, InteractionManagerBa
33
33
  */
34
34
  disableErrorHandling?: boolean;
35
35
  renderAnnotation?(annotation: LineAnnotation<LAnnotation>): HTMLElement | undefined;
36
- renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null;
36
+ renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null | undefined;
37
37
  /**
38
38
  * @deprecated Use `renderGutterUtility` instead.
39
39
  */
40
- renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null;
40
+ renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null | undefined;
41
41
  }
42
42
  interface AnnotationElementCache<LAnnotation> {
43
43
  element: HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"File.d.ts","names":["GetHoveredLineResult","InteractionManager","InteractionManagerBaseOptions","SelectedLineRange","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 { type GetHoveredLineResult, InteractionManager, type InteractionManagerBaseOptions, type SelectedLineRange } from '../managers/InteractionManager';\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, InteractionManagerBaseOptions<'file'> {\n disableFileHeader?: boolean;\n /**\n * @deprecated Use `enableGutterUtility` instead.\n */\n enableHoverUtility?: boolean;\n renderHeaderPrefix?: RenderFileMetadata;\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 renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null;\n /**\n * @deprecated Use `renderGutterUtility` instead.\n */\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 gutterUtilityContent: 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 headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected fileRenderer: FileRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected interactionManager: InteractionManager<'file'>;\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 removeRenderedCode;\n private clearAuxiliaryNodes;\n private canPartiallyRender;\n renderPlaceholder(height: number): boolean;\n private cleanChildNodes;\n private renderAnnotations;\n private renderGutterUtility;\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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"}
1
+ {"version":3,"file":"File.d.ts","names":["GetHoveredLineResult","InteractionManager","InteractionManagerBaseOptions","SelectedLineRange","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 { type GetHoveredLineResult, InteractionManager, type InteractionManagerBaseOptions, type SelectedLineRange } from '../managers/InteractionManager';\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, InteractionManagerBaseOptions<'file'> {\n disableFileHeader?: boolean;\n /**\n * @deprecated Use `enableGutterUtility` instead.\n */\n enableHoverUtility?: boolean;\n renderHeaderPrefix?: RenderFileMetadata;\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 renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null | undefined;\n /**\n * @deprecated Use `renderGutterUtility` instead.\n */\n renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'file'> | undefined): HTMLElement | null | undefined;\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 gutterUtilityContent: 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 headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected fileRenderer: FileRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected interactionManager: InteractionManager<'file'>;\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 removeRenderedCode;\n private clearAuxiliaryNodes;\n private canPartiallyRender;\n renderPlaceholder(height: number): boolean;\n private cleanChildNodes;\n private renderAnnotations;\n private renderGutterUtility;\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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"File.js","names":["EMPTY_STRINGS: string[]","options: FileOptions<LAnnotation>","workerManager?: WorkerPoolManager | undefined","error: unknown","preProperties: PrePropertiesConfig"],"sources":["../../src/components/File.ts"],"sourcesContent":["import type { Element as HASTElement } from 'hast';\nimport { toHtml } from 'hast-util-to-html';\n\nimport {\n DEFAULT_THEMES,\n DIFFS_TAG_NAME,\n EMPTY_RENDER_RANGE,\n HEADER_METADATA_SLOT_ID,\n HEADER_PREFIX_SLOT_ID,\n UNSAFE_CSS_ATTRIBUTE,\n} from '../constants';\nimport {\n type GetHoveredLineResult,\n InteractionManager,\n type InteractionManagerBaseOptions,\n pluckInteractionOptions,\n type SelectedLineRange,\n} from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { FileRenderer, type FileRenderResult } from '../renderers/FileRenderer';\nimport { SVGSpriteSheet } from '../sprite';\nimport type {\n BaseCodeOptions,\n FileContents,\n LineAnnotation,\n PrePropertiesConfig,\n RenderFileMetadata,\n RenderRange,\n ThemeTypes,\n} from '../types';\nimport { areFilesEqual } from '../utils/areFilesEqual';\nimport { areLineAnnotationsEqual } from '../utils/areLineAnnotationsEqual';\nimport { arePrePropertiesEqual } from '../utils/arePrePropertiesEqual';\nimport { areRenderRangesEqual } from '../utils/areRenderRangesEqual';\nimport { createAnnotationWrapperNode } from '../utils/createAnnotationWrapperNode';\nimport { createGutterUtilityContentNode } from '../utils/createGutterUtilityContentNode';\nimport { createUnsafeCSSStyleNode } from '../utils/createUnsafeCSSStyleNode';\nimport { wrapUnsafeCSS } from '../utils/cssWrappers';\nimport { getLineAnnotationName } from '../utils/getLineAnnotationName';\nimport { getOrCreateCodeNode } from '../utils/getOrCreateCodeNode';\nimport { prerenderHTMLIfNecessary } from '../utils/prerenderHTMLIfNecessary';\nimport { setPreNodeProperties } from '../utils/setWrapperNodeProps';\nimport type { WorkerPoolManager } from '../worker';\nimport { DiffsContainerLoaded } from './web-components';\n\nconst EMPTY_STRINGS: string[] = [];\n\nexport interface FileRenderProps<LAnnotation> {\n file: FileContents;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n forceRender?: boolean;\n lineAnnotations?: LineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\n\nexport interface FileHyrdateProps<LAnnotation> extends Omit<\n FileRenderProps<LAnnotation>,\n 'fileContainer'\n> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\n\nexport interface FileOptions<LAnnotation>\n extends BaseCodeOptions, InteractionManagerBaseOptions<'file'> {\n disableFileHeader?: boolean;\n /**\n * @deprecated Use `enableGutterUtility` instead.\n */\n enableHoverUtility?: boolean;\n renderHeaderPrefix?: RenderFileMetadata;\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?(\n annotation: LineAnnotation<LAnnotation>\n ): HTMLElement | undefined;\n renderGutterUtility?(\n getHoveredRow: () => GetHoveredLineResult<'file'> | undefined\n ): HTMLElement | null;\n /**\n * @deprecated Use `renderGutterUtility` instead.\n */\n renderHoverUtility?(\n getHoveredRow: () => GetHoveredLineResult<'file'> | undefined\n ): HTMLElement | null;\n}\n\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: LineAnnotation<LAnnotation>;\n}\n\ninterface ColumnElements {\n gutter: HTMLElement;\n content: HTMLElement;\n}\n\nlet instanceId = -1;\n\nexport class File<LAnnotation = undefined> {\n static LoadedCustomComponent: boolean = DiffsContainerLoaded;\n\n readonly __id: string = `file:${++instanceId}`;\n\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 gutterUtilityContent: 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\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n\n protected fileRenderer: FileRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected interactionManager: InteractionManager<'file'>;\n\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>> =\n new Map();\n protected lineAnnotations: LineAnnotation<LAnnotation>[] = [];\n\n protected file: FileContents | undefined;\n protected renderRange: RenderRange | undefined;\n\n constructor(\n public options: FileOptions<LAnnotation> = { theme: DEFAULT_THEMES },\n private workerManager?: WorkerPoolManager | undefined,\n private isContainerManaged = false\n ) {\n this.fileRenderer = new FileRenderer<LAnnotation>(\n options,\n this.handleHighlightRender,\n this.workerManager\n );\n this.resizeManager = new ResizeManager();\n this.interactionManager = new InteractionManager(\n 'file',\n pluckInteractionOptions(options)\n );\n this.workerManager?.subscribeToThemeChanges(this);\n }\n\n private handleHighlightRender = (): void => {\n this.rerender();\n };\n\n public rerender(): void {\n if (this.file == null) return;\n this.render({\n file: this.file,\n forceRender: true,\n renderRange: this.renderRange,\n });\n }\n\n public setOptions(options: FileOptions<LAnnotation> | undefined): void {\n if (options == null) return;\n this.options = options;\n this.interactionManager.setOptions(pluckInteractionOptions(options));\n }\n\n private mergeOptions(options: Partial<FileOptions<LAnnotation>>): void {\n this.options = { ...this.options, ...options };\n }\n\n public setThemeType(themeType: ThemeTypes): void {\n const currentThemeType = this.options.themeType ?? 'system';\n if (currentThemeType === themeType) {\n return;\n }\n this.mergeOptions({ themeType });\n this.fileRenderer.setThemeType(themeType);\n\n if (this.headerElement != null) {\n if (themeType === 'system') {\n delete this.headerElement.dataset.themeType;\n } else {\n this.headerElement.dataset.themeType = themeType;\n }\n }\n\n // Update pre element theme mode\n if (this.pre != null) {\n switch (themeType) {\n case 'system':\n delete this.pre.dataset.themeType;\n break;\n case 'light':\n case 'dark':\n this.pre.dataset.themeType = themeType;\n break;\n }\n }\n }\n\n public getHoveredLine = (): GetHoveredLineResult<'file'> | undefined => {\n return this.interactionManager.getHoveredLine();\n };\n\n public setLineAnnotations(\n lineAnnotations: LineAnnotation<LAnnotation>[]\n ): void {\n this.lineAnnotations = lineAnnotations;\n }\n\n public setSelectedLines(range: SelectedLineRange | null): void {\n this.interactionManager.setSelection(range);\n }\n\n public cleanUp(): void {\n this.fileRenderer.cleanUp();\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n this.workerManager?.unsubscribeToThemeChanges(this);\n this.workerManager = undefined;\n this.renderRange = undefined;\n\n // Clean up the data\n this.file = undefined;\n\n // Clean up the elements\n if (!this.isContainerManaged) {\n this.fileContainer?.remove();\n }\n if (this.fileContainer?.shadowRoot != null) {\n this.fileContainer.shadowRoot.innerHTML = '';\n }\n this.fileContainer = undefined;\n this.pre = undefined;\n this.bufferBefore = undefined;\n this.bufferAfter = undefined;\n this.appliedPreAttributes = undefined;\n this.lastRowCount = undefined;\n this.headerElement = undefined;\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n this.lastRenderedHeaderHTML = undefined;\n this.errorWrapper = undefined;\n this.unsafeCSSStyle = undefined;\n this.placeHolder = undefined;\n }\n\n public hydrate(props: FileHyrdateProps<LAnnotation>): void {\n const { fileContainer, prerenderedHTML } = props;\n prerenderHTMLIfNecessary(fileContainer, prerenderedHTML);\n for (const element of Array.from(\n fileContainer.shadowRoot?.children ?? []\n )) {\n if (element instanceof SVGElement) {\n this.spriteSVG = element;\n continue;\n }\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n if (element instanceof HTMLPreElement) {\n this.pre = element;\n this.appliedPreAttributes = undefined;\n continue;\n }\n if (\n element instanceof HTMLStyleElement &&\n element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)\n ) {\n this.unsafeCSSStyle = element;\n continue;\n }\n if ('diffsHeader' in element.dataset) {\n this.headerElement = element;\n this.lastRenderedHeaderHTML = undefined;\n continue;\n }\n }\n // If we have no pre tag, then we should render\n if (this.pre == null) {\n this.render(props);\n }\n // Otherwise orchestrate our setup\n else {\n const { file, lineAnnotations } = props;\n const { overflow = 'scroll' } = this.options;\n this.fileContainer = fileContainer;\n delete this.pre.dataset.dehydrated;\n\n this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;\n this.file = file;\n this.fileRenderer.hydrate(file);\n this.renderAnnotations();\n this.renderGutterUtility();\n this.injectUnsafeCSS();\n this.interactionManager.setup(this.pre);\n this.resizeManager.setup(this.pre, overflow === 'wrap');\n }\n }\n\n public getOrCreateLineCache(\n file: FileContents | undefined = this.file\n ): string[] {\n return file != null\n ? this.fileRenderer.getOrCreateLineCache(file)\n : EMPTY_STRINGS;\n }\n\n public render({\n file,\n fileContainer,\n forceRender = false,\n containerWrapper,\n lineAnnotations,\n renderRange,\n }: FileRenderProps<LAnnotation>): boolean {\n const { collapsed = false } = this.options;\n const nextRenderRange = collapsed ? undefined : renderRange;\n const previousRenderRange = this.renderRange;\n const annotationsChanged =\n lineAnnotations != null &&\n (lineAnnotations.length > 0 || this.lineAnnotations.length > 0)\n ? lineAnnotations !== this.lineAnnotations\n : false;\n const didFileChange = !areFilesEqual(this.file, file);\n if (\n !collapsed &&\n !forceRender &&\n areRenderRangesEqual(nextRenderRange, this.renderRange) &&\n !didFileChange &&\n !annotationsChanged\n ) {\n return false;\n }\n\n this.renderRange = nextRenderRange;\n this.file = file;\n this.fileRenderer.setOptions(this.options);\n if (lineAnnotations != null) {\n this.setLineAnnotations(lineAnnotations);\n }\n this.fileRenderer.setLineAnnotations(this.lineAnnotations);\n\n const {\n disableErrorHandling = false,\n disableFileHeader = false,\n overflow = 'scroll',\n } = this.options;\n if (disableFileHeader) {\n // Remove existing header from DOM\n if (this.headerElement != null) {\n this.headerElement.remove();\n this.headerElement = undefined;\n this.lastRenderedHeaderHTML = undefined;\n }\n if (this.headerPrefix != null) {\n this.headerPrefix.remove();\n this.headerPrefix = undefined;\n }\n if (this.headerMetadata != null) {\n this.headerMetadata.remove();\n this.headerMetadata = undefined;\n }\n }\n\n fileContainer = this.getOrCreateFileContainerNode(\n fileContainer,\n containerWrapper\n );\n\n if (collapsed) {\n this.removeRenderedCode();\n this.clearAuxiliaryNodes();\n\n try {\n const fileResult = this.fileRenderer.renderFile(\n file,\n EMPTY_RENDER_RANGE\n );\n if (fileResult?.headerAST != null) {\n this.applyHeaderToDOM(fileResult.headerAST, fileContainer);\n }\n this.injectUnsafeCSS();\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n return true;\n }\n\n try {\n const pre = this.getOrCreatePreNode(fileContainer);\n if (\n !this.canPartiallyRender(\n forceRender,\n annotationsChanged,\n didFileChange\n ) ||\n !this.applyPartialRender(previousRenderRange, nextRenderRange)\n ) {\n const fileResult = this.fileRenderer.renderFile(file, nextRenderRange);\n if (fileResult == null) {\n if (this.workerManager?.isInitialized() === false) {\n void this.workerManager.initialize().then(() => this.rerender());\n }\n return false;\n }\n if (fileResult.headerAST != null) {\n this.applyHeaderToDOM(fileResult.headerAST, fileContainer);\n }\n this.applyFullRender(fileResult, pre);\n }\n\n this.applyBuffers(pre, nextRenderRange);\n this.injectUnsafeCSS();\n this.interactionManager.setup(pre);\n this.resizeManager.setup(pre, overflow === 'wrap');\n this.renderAnnotations();\n this.renderGutterUtility();\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n return true;\n }\n\n private removeRenderedCode(): void {\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n\n this.bufferBefore?.remove();\n this.bufferBefore = undefined;\n this.bufferAfter?.remove();\n this.bufferAfter = undefined;\n\n this.code?.remove();\n this.code = undefined;\n\n this.pre?.remove();\n this.pre = undefined;\n\n this.appliedPreAttributes = undefined;\n this.lastRowCount = undefined;\n }\n\n private clearAuxiliaryNodes(): void {\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n }\n\n private canPartiallyRender(\n forceRender: boolean,\n annotationsChanged: boolean,\n didContentChange: boolean\n ): boolean {\n if (forceRender || annotationsChanged || didContentChange) {\n return false;\n }\n return true;\n }\n\n public renderPlaceholder(height: number): boolean {\n if (this.fileContainer == null) {\n return false;\n }\n this.cleanChildNodes();\n\n if (this.placeHolder == null) {\n const shadowRoot =\n this.fileContainer.shadowRoot ??\n this.fileContainer.attachShadow({ mode: 'open' });\n this.placeHolder = document.createElement('div');\n this.placeHolder.dataset.placeholder = '';\n shadowRoot.appendChild(this.placeHolder);\n }\n this.placeHolder.style.setProperty('height', `${height}px`);\n return true;\n }\n\n private cleanChildNodes() {\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n\n this.bufferAfter?.remove();\n this.bufferBefore?.remove();\n this.code?.remove();\n this.errorWrapper?.remove();\n this.headerElement?.remove();\n this.gutterUtilityContent?.remove();\n this.headerPrefix?.remove();\n this.headerMetadata?.remove();\n this.pre?.remove();\n this.spriteSVG?.remove();\n this.unsafeCSSStyle?.remove();\n\n this.bufferAfter = undefined;\n this.bufferBefore = undefined;\n this.code = undefined;\n this.errorWrapper = undefined;\n this.headerElement = undefined;\n this.gutterUtilityContent = undefined;\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n this.pre = undefined;\n this.spriteSVG = undefined;\n this.unsafeCSSStyle = undefined;\n\n this.lastRenderedHeaderHTML = undefined;\n this.lastRowCount = undefined;\n }\n\n private renderAnnotations(): void {\n if (this.isContainerManaged || this.fileContainer == null) {\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n return;\n }\n const staleAnnotations = new Map(this.annotationCache);\n const { renderAnnotation } = this.options;\n if (renderAnnotation != null && this.lineAnnotations.length > 0) {\n for (const [index, annotation] of this.lineAnnotations.entries()) {\n const id = `${index}-${getLineAnnotationName(annotation)}`;\n let cache = this.annotationCache.get(id);\n if (\n cache == null ||\n !areLineAnnotationsEqual(annotation, cache.annotation)\n ) {\n cache?.element.remove();\n const content = renderAnnotation(annotation);\n // If we can't render anything, then we should not render anything\n // and clear the annotation cache if necessary.\n if (content == null) {\n continue;\n }\n cache = {\n element: createAnnotationWrapperNode(\n getLineAnnotationName(annotation)\n ),\n annotation,\n };\n cache.element.appendChild(content);\n this.fileContainer.appendChild(cache.element);\n this.annotationCache.set(id, cache);\n }\n staleAnnotations.delete(id);\n }\n }\n for (const [id, { element }] of staleAnnotations.entries()) {\n this.annotationCache.delete(id);\n element.remove();\n }\n }\n\n private renderGutterUtility() {\n const renderGutterUtility =\n this.options.renderGutterUtility ?? this.options.renderHoverUtility;\n if (this.fileContainer == null || renderGutterUtility == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const element = renderGutterUtility(this.interactionManager.getHoveredLine);\n if (element != null && this.gutterUtilityContent != null) {\n return;\n } else if (element == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const gutterUtilityContent = createGutterUtilityContentNode();\n gutterUtilityContent.appendChild(element);\n this.fileContainer.appendChild(gutterUtilityContent);\n this.gutterUtilityContent = gutterUtilityContent;\n }\n\n private injectUnsafeCSS(): void {\n if (this.fileContainer?.shadowRoot == null) {\n return;\n }\n const { unsafeCSS } = this.options;\n\n if (unsafeCSS == null || unsafeCSS === '') {\n if (this.unsafeCSSStyle != null) {\n this.unsafeCSSStyle.remove();\n this.unsafeCSSStyle = undefined;\n }\n return;\n }\n\n // Create or update the style element\n if (this.unsafeCSSStyle == null) {\n this.unsafeCSSStyle = createUnsafeCSSStyleNode();\n this.fileContainer.shadowRoot.appendChild(this.unsafeCSSStyle);\n }\n // Wrap in @layer unsafe to match SSR behavior\n this.unsafeCSSStyle.innerText = wrapUnsafeCSS(unsafeCSS);\n }\n\n private applyFullRender(result: FileRenderResult, pre: HTMLPreElement): void {\n this.cleanupErrorWrapper();\n this.applyPreNodeAttributes(pre, result);\n this.code = getOrCreateCodeNode({ code: this.code });\n this.code.innerHTML = this.fileRenderer.renderPartialHTML(\n this.fileRenderer.renderCodeAST(result)\n );\n pre.replaceChildren(this.code);\n this.lastRowCount = result.rowCount;\n }\n\n private applyPartialRender(\n previousRenderRange: RenderRange | undefined,\n renderRange: RenderRange | undefined\n ): boolean {\n if (previousRenderRange == null || renderRange == null) {\n return false;\n }\n const { file, code } = this;\n const columns = code != null ? this.getColumns(code) : undefined;\n if (file == null || code == null || columns == null) {\n return false;\n }\n\n const previousStart = previousRenderRange.startingLine;\n const nextStart = renderRange.startingLine;\n const previousEnd =\n previousRenderRange.totalLines === Infinity\n ? Number.POSITIVE_INFINITY\n : previousStart + previousRenderRange.totalLines;\n const nextEnd =\n renderRange.totalLines === Infinity\n ? Number.POSITIVE_INFINITY\n : nextStart + renderRange.totalLines;\n\n const overlapStart = Math.max(previousStart, nextStart);\n const overlapEnd = Math.min(previousEnd, nextEnd);\n if (overlapEnd <= overlapStart) {\n return false;\n }\n\n if (\n !this.trimDOMToOverlap(columns.gutter, overlapStart, overlapEnd) ||\n !this.trimDOMToOverlap(columns.content, overlapStart, overlapEnd)\n ) {\n return false;\n }\n\n let { length: rowCount } = columns.content.children;\n\n const renderChunk = (\n startingLine: number,\n totalLines: number\n ): FileRenderResult | undefined => {\n if (totalLines <= 0) {\n return undefined;\n }\n return this.fileRenderer.renderFile(file, {\n startingLine,\n totalLines,\n bufferBefore: 0,\n bufferAfter: 0,\n });\n };\n\n const prependResult =\n nextStart < overlapStart\n ? renderChunk(nextStart, overlapStart - nextStart)\n : undefined;\n if (prependResult === undefined && nextStart < overlapStart) {\n return false;\n }\n\n const appendTotalLines =\n nextEnd === Number.POSITIVE_INFINITY\n ? Number.POSITIVE_INFINITY\n : Math.max(0, nextEnd - overlapEnd);\n const appendResult =\n nextEnd > overlapEnd\n ? renderChunk(overlapEnd, appendTotalLines)\n : undefined;\n if (appendResult === undefined && nextEnd > overlapEnd) {\n return false;\n }\n\n this.cleanupErrorWrapper();\n if (prependResult != null) {\n columns.gutter.insertAdjacentHTML(\n 'afterbegin',\n this.fileRenderer.renderPartialHTML(prependResult.gutterAST)\n );\n columns.content.insertAdjacentHTML(\n 'afterbegin',\n this.fileRenderer.renderPartialHTML(prependResult.contentAST)\n );\n rowCount += prependResult.rowCount;\n }\n\n if (appendResult != null) {\n columns.gutter.insertAdjacentHTML(\n 'beforeend',\n this.fileRenderer.renderPartialHTML(appendResult.gutterAST)\n );\n columns.content.insertAdjacentHTML(\n 'beforeend',\n this.fileRenderer.renderPartialHTML(appendResult.contentAST)\n );\n rowCount += appendResult.rowCount;\n }\n\n if (this.lastRowCount !== rowCount) {\n columns.gutter.style.setProperty('grid-row', `span ${rowCount}`);\n columns.content.style.setProperty('grid-row', `span ${rowCount}`);\n this.lastRowCount = rowCount;\n }\n\n return true;\n }\n\n private getColumns(code: HTMLElement): ColumnElements | undefined {\n const gutter = code.children[0];\n const content = code.children[1];\n if (\n !(gutter instanceof HTMLElement) ||\n !(content instanceof HTMLElement) ||\n gutter.dataset.gutter == null ||\n content.dataset.content == null\n ) {\n return undefined;\n }\n return { gutter, content };\n }\n\n private trimDOMToOverlap(\n container: HTMLElement,\n overlapStart: number,\n overlapEnd: number\n ): boolean {\n const boundaryIndices = this.getDOMBoundaryIndices(container, [\n overlapStart,\n overlapEnd,\n ]);\n const startIndex =\n boundaryIndices.get(overlapStart) ?? container.children.length;\n const endIndex =\n boundaryIndices.get(overlapEnd) ?? container.children.length;\n\n if (startIndex > endIndex) {\n return false;\n }\n\n for (let i = container.children.length - 1; i >= endIndex; i -= 1) {\n container.children[i]?.remove();\n }\n for (let i = startIndex - 1; i >= 0; i -= 1) {\n container.children[i]?.remove();\n }\n return true;\n }\n\n private getDOMBoundaryIndices(\n container: HTMLElement,\n boundaries: number[]\n ): Map<number, number> {\n const sortedBoundaries = [...new Set(boundaries)].sort((a, b) => a - b);\n const boundaryIndices = new Map<number, number>();\n if (sortedBoundaries.length === 0) {\n return boundaryIndices;\n }\n let boundaryIndex = 0;\n let nextBoundary = sortedBoundaries[boundaryIndex];\n const { children } = container;\n\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!(child instanceof HTMLElement)) {\n continue;\n }\n const lineIndex = this.getLineIndexFromDOMNode(child);\n if (lineIndex == null) {\n continue;\n }\n while (nextBoundary != null && lineIndex >= nextBoundary) {\n boundaryIndices.set(nextBoundary, i);\n boundaryIndex += 1;\n nextBoundary = sortedBoundaries[boundaryIndex];\n }\n if (boundaryIndex >= sortedBoundaries.length) {\n break;\n }\n }\n\n for (const boundary of sortedBoundaries) {\n if (!boundaryIndices.has(boundary)) {\n boundaryIndices.set(boundary, children.length);\n }\n }\n return boundaryIndices;\n }\n\n private getLineIndexFromDOMNode(node: HTMLElement): number | undefined {\n const lineIndexAttr = node.dataset.lineIndex;\n if (lineIndexAttr == null) {\n return undefined;\n }\n const parsed = Number(lineIndexAttr);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n private applyBuffers(\n pre: HTMLPreElement,\n renderRange: RenderRange | undefined\n ) {\n const { disableVirtualizationBuffers = false } = this.options;\n if (disableVirtualizationBuffers || renderRange == null) {\n if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n return;\n }\n\n if (renderRange.bufferBefore > 0) {\n if (this.bufferBefore == null) {\n this.bufferBefore = document.createElement('div');\n this.bufferBefore.dataset.virtualizerBuffer = 'before';\n pre.before(this.bufferBefore);\n }\n this.bufferBefore.style.setProperty(\n 'height',\n `${renderRange.bufferBefore}px`\n );\n this.bufferBefore.style.setProperty('contain', 'strict');\n } else if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n\n if (renderRange.bufferAfter > 0) {\n if (this.bufferAfter == null) {\n this.bufferAfter = document.createElement('div');\n this.bufferAfter.dataset.virtualizerBuffer = 'after';\n pre.after(this.bufferAfter);\n }\n this.bufferAfter.style.setProperty(\n 'height',\n `${renderRange.bufferAfter}px`\n );\n this.bufferAfter.style.setProperty('contain', 'strict');\n } else if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n }\n\n private applyHeaderToDOM(\n headerAST: HASTElement,\n container: HTMLElement\n ): void {\n const { file } = this;\n if (file == null) return;\n this.cleanupErrorWrapper();\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n const headerHTML = toHtml(headerAST);\n if (headerHTML !== this.lastRenderedHeaderHTML) {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = headerHTML;\n const newHeader = tempDiv.firstElementChild;\n if (!(newHeader instanceof HTMLElement)) {\n return;\n }\n if (this.headerElement != null) {\n container.shadowRoot?.replaceChild(newHeader, this.headerElement);\n } else {\n container.shadowRoot?.prepend(newHeader);\n }\n this.headerElement = newHeader;\n this.lastRenderedHeaderHTML = headerHTML;\n }\n\n if (this.isContainerManaged) return;\n\n const { renderHeaderPrefix, renderCustomMetadata } = this.options;\n if (this.headerPrefix != null) {\n this.headerPrefix.remove();\n }\n if (this.headerMetadata != null) {\n this.headerMetadata.remove();\n }\n const prefix = renderHeaderPrefix?.(file) ?? undefined;\n const content = renderCustomMetadata?.(file) ?? undefined;\n if (prefix != null) {\n this.headerPrefix = document.createElement('div');\n this.headerPrefix.slot = HEADER_PREFIX_SLOT_ID;\n if (prefix instanceof Element) {\n this.headerPrefix.appendChild(prefix);\n } else {\n this.headerPrefix.innerText = `${prefix}`;\n }\n container.appendChild(this.headerPrefix);\n }\n if (content != null) {\n this.headerMetadata = document.createElement('div');\n this.headerMetadata.slot = HEADER_METADATA_SLOT_ID;\n if (content instanceof Element) {\n this.headerMetadata.appendChild(content);\n } else {\n this.headerMetadata.innerText = `${content}`;\n }\n container.appendChild(this.headerMetadata);\n }\n }\n\n protected getOrCreateFileContainerNode(\n fileContainer?: HTMLElement,\n parentNode?: HTMLElement\n ): HTMLElement {\n const previousContainer = this.fileContainer;\n this.fileContainer =\n fileContainer ??\n this.fileContainer ??\n document.createElement(DIFFS_TAG_NAME);\n if (previousContainer != null && previousContainer !== this.fileContainer) {\n this.lastRenderedHeaderHTML = undefined;\n this.headerElement = undefined;\n }\n if (parentNode != null && this.fileContainer.parentNode !== parentNode) {\n parentNode.appendChild(this.fileContainer);\n }\n if (this.spriteSVG == null) {\n const fragment = document.createElement('div');\n fragment.innerHTML = SVGSpriteSheet;\n const firstChild = fragment.firstChild;\n if (firstChild instanceof SVGElement) {\n this.spriteSVG = firstChild;\n this.fileContainer.shadowRoot?.appendChild(this.spriteSVG);\n }\n }\n return this.fileContainer;\n }\n\n private getOrCreatePreNode(container: HTMLElement): HTMLPreElement {\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n // If we haven't created a pre element yet, lets go ahead and do that\n if (this.pre == null) {\n this.pre = document.createElement('pre');\n this.appliedPreAttributes = undefined;\n this.code = undefined;\n shadowRoot.appendChild(this.pre);\n }\n // If we have a new parent container for the pre element, lets go ahead and\n // move it into the new container\n else if (this.pre.parentNode !== shadowRoot) {\n container.shadowRoot?.appendChild(this.pre);\n this.appliedPreAttributes = undefined;\n }\n\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n\n return this.pre;\n }\n\n private applyPreNodeAttributes(\n pre: HTMLPreElement,\n { totalLines, themeStyles, baseThemeType }: FileRenderResult\n ): void {\n const {\n overflow = 'scroll',\n themeType = 'system',\n disableLineNumbers = false,\n } = this.options;\n const preProperties: PrePropertiesConfig = {\n type: 'file',\n split: false,\n themeStyles,\n overflow,\n disableLineNumbers,\n themeType: baseThemeType ?? themeType,\n diffIndicators: 'none',\n disableBackground: true,\n totalLines,\n };\n if (arePrePropertiesEqual(preProperties, this.appliedPreAttributes)) {\n return;\n }\n setPreNodeProperties(pre, preProperties);\n this.appliedPreAttributes = preProperties;\n }\n\n private applyErrorToDOM(error: Error, container: HTMLElement) {\n this.cleanupErrorWrapper();\n const pre = this.getOrCreatePreNode(container);\n pre.innerHTML = '';\n pre.remove();\n this.pre = undefined;\n this.appliedPreAttributes = undefined;\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n this.errorWrapper ??= document.createElement('div');\n this.errorWrapper.dataset.errorWrapper = '';\n this.errorWrapper.innerHTML = '';\n shadowRoot.appendChild(this.errorWrapper);\n const errorMessage = document.createElement('div');\n errorMessage.dataset.errorMessage = '';\n errorMessage.innerText = error.message;\n this.errorWrapper.appendChild(errorMessage);\n const errorStack = document.createElement('pre');\n errorStack.dataset.errorStack = '';\n errorStack.innerText = error.stack ?? 'No Error Stack';\n this.errorWrapper.appendChild(errorStack);\n }\n\n private cleanupErrorWrapper() {\n this.errorWrapper?.remove();\n this.errorWrapper = undefined;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"File.js","names":["EMPTY_STRINGS: string[]","options: FileOptions<LAnnotation>","workerManager?: WorkerPoolManager | undefined","error: unknown","preProperties: PrePropertiesConfig"],"sources":["../../src/components/File.ts"],"sourcesContent":["import type { Element as HASTElement } from 'hast';\nimport { toHtml } from 'hast-util-to-html';\n\nimport {\n DEFAULT_THEMES,\n DIFFS_TAG_NAME,\n EMPTY_RENDER_RANGE,\n HEADER_METADATA_SLOT_ID,\n HEADER_PREFIX_SLOT_ID,\n UNSAFE_CSS_ATTRIBUTE,\n} from '../constants';\nimport {\n type GetHoveredLineResult,\n InteractionManager,\n type InteractionManagerBaseOptions,\n pluckInteractionOptions,\n type SelectedLineRange,\n} from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { FileRenderer, type FileRenderResult } from '../renderers/FileRenderer';\nimport { SVGSpriteSheet } from '../sprite';\nimport type {\n BaseCodeOptions,\n FileContents,\n LineAnnotation,\n PrePropertiesConfig,\n RenderFileMetadata,\n RenderRange,\n ThemeTypes,\n} from '../types';\nimport { areFilesEqual } from '../utils/areFilesEqual';\nimport { areLineAnnotationsEqual } from '../utils/areLineAnnotationsEqual';\nimport { arePrePropertiesEqual } from '../utils/arePrePropertiesEqual';\nimport { areRenderRangesEqual } from '../utils/areRenderRangesEqual';\nimport { createAnnotationWrapperNode } from '../utils/createAnnotationWrapperNode';\nimport { createGutterUtilityContentNode } from '../utils/createGutterUtilityContentNode';\nimport { createUnsafeCSSStyleNode } from '../utils/createUnsafeCSSStyleNode';\nimport { wrapUnsafeCSS } from '../utils/cssWrappers';\nimport { getLineAnnotationName } from '../utils/getLineAnnotationName';\nimport { getOrCreateCodeNode } from '../utils/getOrCreateCodeNode';\nimport { prerenderHTMLIfNecessary } from '../utils/prerenderHTMLIfNecessary';\nimport { setPreNodeProperties } from '../utils/setWrapperNodeProps';\nimport type { WorkerPoolManager } from '../worker';\nimport { DiffsContainerLoaded } from './web-components';\n\nconst EMPTY_STRINGS: string[] = [];\n\nexport interface FileRenderProps<LAnnotation> {\n file: FileContents;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n forceRender?: boolean;\n lineAnnotations?: LineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\n\nexport interface FileHyrdateProps<LAnnotation> extends Omit<\n FileRenderProps<LAnnotation>,\n 'fileContainer'\n> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\n\nexport interface FileOptions<LAnnotation>\n extends BaseCodeOptions, InteractionManagerBaseOptions<'file'> {\n disableFileHeader?: boolean;\n /**\n * @deprecated Use `enableGutterUtility` instead.\n */\n enableHoverUtility?: boolean;\n renderHeaderPrefix?: RenderFileMetadata;\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?(\n annotation: LineAnnotation<LAnnotation>\n ): HTMLElement | undefined;\n renderGutterUtility?(\n getHoveredRow: () => GetHoveredLineResult<'file'> | undefined\n ): HTMLElement | null | undefined;\n /**\n * @deprecated Use `renderGutterUtility` instead.\n */\n renderHoverUtility?(\n getHoveredRow: () => GetHoveredLineResult<'file'> | undefined\n ): HTMLElement | null | undefined;\n}\n\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: LineAnnotation<LAnnotation>;\n}\n\ninterface ColumnElements {\n gutter: HTMLElement;\n content: HTMLElement;\n}\n\nlet instanceId = -1;\n\nexport class File<LAnnotation = undefined> {\n static LoadedCustomComponent: boolean = DiffsContainerLoaded;\n\n readonly __id: string = `file:${++instanceId}`;\n\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 gutterUtilityContent: 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\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n\n protected fileRenderer: FileRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected interactionManager: InteractionManager<'file'>;\n\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>> =\n new Map();\n protected lineAnnotations: LineAnnotation<LAnnotation>[] = [];\n\n protected file: FileContents | undefined;\n protected renderRange: RenderRange | undefined;\n\n constructor(\n public options: FileOptions<LAnnotation> = { theme: DEFAULT_THEMES },\n private workerManager?: WorkerPoolManager | undefined,\n private isContainerManaged = false\n ) {\n this.fileRenderer = new FileRenderer<LAnnotation>(\n options,\n this.handleHighlightRender,\n this.workerManager\n );\n this.resizeManager = new ResizeManager();\n this.interactionManager = new InteractionManager(\n 'file',\n pluckInteractionOptions(options)\n );\n this.workerManager?.subscribeToThemeChanges(this);\n }\n\n private handleHighlightRender = (): void => {\n this.rerender();\n };\n\n public rerender(): void {\n if (this.file == null) return;\n this.render({\n file: this.file,\n forceRender: true,\n renderRange: this.renderRange,\n });\n }\n\n public setOptions(options: FileOptions<LAnnotation> | undefined): void {\n if (options == null) return;\n this.options = options;\n this.interactionManager.setOptions(pluckInteractionOptions(options));\n }\n\n private mergeOptions(options: Partial<FileOptions<LAnnotation>>): void {\n this.options = { ...this.options, ...options };\n }\n\n public setThemeType(themeType: ThemeTypes): void {\n const currentThemeType = this.options.themeType ?? 'system';\n if (currentThemeType === themeType) {\n return;\n }\n this.mergeOptions({ themeType });\n this.fileRenderer.setThemeType(themeType);\n\n if (this.headerElement != null) {\n if (themeType === 'system') {\n delete this.headerElement.dataset.themeType;\n } else {\n this.headerElement.dataset.themeType = themeType;\n }\n }\n\n // Update pre element theme mode\n if (this.pre != null) {\n switch (themeType) {\n case 'system':\n delete this.pre.dataset.themeType;\n break;\n case 'light':\n case 'dark':\n this.pre.dataset.themeType = themeType;\n break;\n }\n }\n }\n\n public getHoveredLine = (): GetHoveredLineResult<'file'> | undefined => {\n return this.interactionManager.getHoveredLine();\n };\n\n public setLineAnnotations(\n lineAnnotations: LineAnnotation<LAnnotation>[]\n ): void {\n this.lineAnnotations = lineAnnotations;\n }\n\n public setSelectedLines(range: SelectedLineRange | null): void {\n this.interactionManager.setSelection(range);\n }\n\n public cleanUp(): void {\n this.fileRenderer.cleanUp();\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n this.workerManager?.unsubscribeToThemeChanges(this);\n this.workerManager = undefined;\n this.renderRange = undefined;\n\n // Clean up the data\n this.file = undefined;\n\n // Clean up the elements\n if (!this.isContainerManaged) {\n this.fileContainer?.remove();\n }\n if (this.fileContainer?.shadowRoot != null) {\n this.fileContainer.shadowRoot.innerHTML = '';\n }\n this.fileContainer = undefined;\n this.pre = undefined;\n this.bufferBefore = undefined;\n this.bufferAfter = undefined;\n this.appliedPreAttributes = undefined;\n this.lastRowCount = undefined;\n this.headerElement = undefined;\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n this.lastRenderedHeaderHTML = undefined;\n this.errorWrapper = undefined;\n this.unsafeCSSStyle = undefined;\n this.placeHolder = undefined;\n }\n\n public hydrate(props: FileHyrdateProps<LAnnotation>): void {\n const { fileContainer, prerenderedHTML } = props;\n prerenderHTMLIfNecessary(fileContainer, prerenderedHTML);\n for (const element of Array.from(\n fileContainer.shadowRoot?.children ?? []\n )) {\n if (element instanceof SVGElement) {\n this.spriteSVG = element;\n continue;\n }\n if (!(element instanceof HTMLElement)) {\n continue;\n }\n if (element instanceof HTMLPreElement) {\n this.pre = element;\n this.appliedPreAttributes = undefined;\n continue;\n }\n if (\n element instanceof HTMLStyleElement &&\n element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)\n ) {\n this.unsafeCSSStyle = element;\n continue;\n }\n if ('diffsHeader' in element.dataset) {\n this.headerElement = element;\n this.lastRenderedHeaderHTML = undefined;\n continue;\n }\n }\n // If we have no pre tag, then we should render\n if (this.pre == null) {\n this.render(props);\n }\n // Otherwise orchestrate our setup\n else {\n const { file, lineAnnotations } = props;\n const { overflow = 'scroll' } = this.options;\n this.fileContainer = fileContainer;\n delete this.pre.dataset.dehydrated;\n\n this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;\n this.file = file;\n this.fileRenderer.hydrate(file);\n this.renderAnnotations();\n this.renderGutterUtility();\n this.injectUnsafeCSS();\n this.interactionManager.setup(this.pre);\n this.resizeManager.setup(this.pre, overflow === 'wrap');\n }\n }\n\n public getOrCreateLineCache(\n file: FileContents | undefined = this.file\n ): string[] {\n return file != null\n ? this.fileRenderer.getOrCreateLineCache(file)\n : EMPTY_STRINGS;\n }\n\n public render({\n file,\n fileContainer,\n forceRender = false,\n containerWrapper,\n lineAnnotations,\n renderRange,\n }: FileRenderProps<LAnnotation>): boolean {\n const { collapsed = false } = this.options;\n const nextRenderRange = collapsed ? undefined : renderRange;\n const previousRenderRange = this.renderRange;\n const annotationsChanged =\n lineAnnotations != null &&\n (lineAnnotations.length > 0 || this.lineAnnotations.length > 0)\n ? lineAnnotations !== this.lineAnnotations\n : false;\n const didFileChange = !areFilesEqual(this.file, file);\n if (\n !collapsed &&\n !forceRender &&\n areRenderRangesEqual(nextRenderRange, this.renderRange) &&\n !didFileChange &&\n !annotationsChanged\n ) {\n return false;\n }\n\n this.renderRange = nextRenderRange;\n this.file = file;\n this.fileRenderer.setOptions(this.options);\n if (lineAnnotations != null) {\n this.setLineAnnotations(lineAnnotations);\n }\n this.fileRenderer.setLineAnnotations(this.lineAnnotations);\n\n const {\n disableErrorHandling = false,\n disableFileHeader = false,\n overflow = 'scroll',\n } = this.options;\n if (disableFileHeader) {\n // Remove existing header from DOM\n if (this.headerElement != null) {\n this.headerElement.remove();\n this.headerElement = undefined;\n this.lastRenderedHeaderHTML = undefined;\n }\n if (this.headerPrefix != null) {\n this.headerPrefix.remove();\n this.headerPrefix = undefined;\n }\n if (this.headerMetadata != null) {\n this.headerMetadata.remove();\n this.headerMetadata = undefined;\n }\n }\n\n fileContainer = this.getOrCreateFileContainerNode(\n fileContainer,\n containerWrapper\n );\n\n if (collapsed) {\n this.removeRenderedCode();\n this.clearAuxiliaryNodes();\n\n try {\n const fileResult = this.fileRenderer.renderFile(\n file,\n EMPTY_RENDER_RANGE\n );\n if (fileResult?.headerAST != null) {\n this.applyHeaderToDOM(fileResult.headerAST, fileContainer);\n }\n this.injectUnsafeCSS();\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n return true;\n }\n\n try {\n const pre = this.getOrCreatePreNode(fileContainer);\n if (\n !this.canPartiallyRender(\n forceRender,\n annotationsChanged,\n didFileChange\n ) ||\n !this.applyPartialRender(previousRenderRange, nextRenderRange)\n ) {\n const fileResult = this.fileRenderer.renderFile(file, nextRenderRange);\n if (fileResult == null) {\n if (this.workerManager?.isInitialized() === false) {\n void this.workerManager.initialize().then(() => this.rerender());\n }\n return false;\n }\n if (fileResult.headerAST != null) {\n this.applyHeaderToDOM(fileResult.headerAST, fileContainer);\n }\n this.applyFullRender(fileResult, pre);\n }\n\n this.applyBuffers(pre, nextRenderRange);\n this.injectUnsafeCSS();\n this.interactionManager.setup(pre);\n this.resizeManager.setup(pre, overflow === 'wrap');\n this.renderAnnotations();\n this.renderGutterUtility();\n } catch (error: unknown) {\n if (disableErrorHandling) {\n throw error;\n }\n console.error(error);\n if (error instanceof Error) {\n this.applyErrorToDOM(error, fileContainer);\n }\n }\n return true;\n }\n\n private removeRenderedCode(): void {\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n\n this.bufferBefore?.remove();\n this.bufferBefore = undefined;\n this.bufferAfter?.remove();\n this.bufferAfter = undefined;\n\n this.code?.remove();\n this.code = undefined;\n\n this.pre?.remove();\n this.pre = undefined;\n\n this.appliedPreAttributes = undefined;\n this.lastRowCount = undefined;\n }\n\n private clearAuxiliaryNodes(): void {\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n }\n\n private canPartiallyRender(\n forceRender: boolean,\n annotationsChanged: boolean,\n didContentChange: boolean\n ): boolean {\n if (forceRender || annotationsChanged || didContentChange) {\n return false;\n }\n return true;\n }\n\n public renderPlaceholder(height: number): boolean {\n if (this.fileContainer == null) {\n return false;\n }\n this.cleanChildNodes();\n\n if (this.placeHolder == null) {\n const shadowRoot =\n this.fileContainer.shadowRoot ??\n this.fileContainer.attachShadow({ mode: 'open' });\n this.placeHolder = document.createElement('div');\n this.placeHolder.dataset.placeholder = '';\n shadowRoot.appendChild(this.placeHolder);\n }\n this.placeHolder.style.setProperty('height', `${height}px`);\n return true;\n }\n\n private cleanChildNodes() {\n this.resizeManager.cleanUp();\n this.interactionManager.cleanUp();\n\n this.bufferAfter?.remove();\n this.bufferBefore?.remove();\n this.code?.remove();\n this.errorWrapper?.remove();\n this.headerElement?.remove();\n this.gutterUtilityContent?.remove();\n this.headerPrefix?.remove();\n this.headerMetadata?.remove();\n this.pre?.remove();\n this.spriteSVG?.remove();\n this.unsafeCSSStyle?.remove();\n\n this.bufferAfter = undefined;\n this.bufferBefore = undefined;\n this.code = undefined;\n this.errorWrapper = undefined;\n this.headerElement = undefined;\n this.gutterUtilityContent = undefined;\n this.headerPrefix = undefined;\n this.headerMetadata = undefined;\n this.pre = undefined;\n this.spriteSVG = undefined;\n this.unsafeCSSStyle = undefined;\n\n this.lastRenderedHeaderHTML = undefined;\n this.lastRowCount = undefined;\n }\n\n private renderAnnotations(): void {\n if (this.isContainerManaged || this.fileContainer == null) {\n for (const { element } of this.annotationCache.values()) {\n element.remove();\n }\n this.annotationCache.clear();\n return;\n }\n const staleAnnotations = new Map(this.annotationCache);\n const { renderAnnotation } = this.options;\n if (renderAnnotation != null && this.lineAnnotations.length > 0) {\n for (const [index, annotation] of this.lineAnnotations.entries()) {\n const id = `${index}-${getLineAnnotationName(annotation)}`;\n let cache = this.annotationCache.get(id);\n if (\n cache == null ||\n !areLineAnnotationsEqual(annotation, cache.annotation)\n ) {\n cache?.element.remove();\n const content = renderAnnotation(annotation);\n // If we can't render anything, then we should not render anything\n // and clear the annotation cache if necessary.\n if (content == null) {\n continue;\n }\n cache = {\n element: createAnnotationWrapperNode(\n getLineAnnotationName(annotation)\n ),\n annotation,\n };\n cache.element.appendChild(content);\n this.fileContainer.appendChild(cache.element);\n this.annotationCache.set(id, cache);\n }\n staleAnnotations.delete(id);\n }\n }\n for (const [id, { element }] of staleAnnotations.entries()) {\n this.annotationCache.delete(id);\n element.remove();\n }\n }\n\n private renderGutterUtility() {\n const renderGutterUtility =\n this.options.renderGutterUtility ?? this.options.renderHoverUtility;\n if (this.fileContainer == null || renderGutterUtility == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const element = renderGutterUtility(this.interactionManager.getHoveredLine);\n if (element != null && this.gutterUtilityContent != null) {\n return;\n } else if (element == null) {\n this.gutterUtilityContent?.remove();\n this.gutterUtilityContent = undefined;\n return;\n }\n const gutterUtilityContent = createGutterUtilityContentNode();\n gutterUtilityContent.appendChild(element);\n this.fileContainer.appendChild(gutterUtilityContent);\n this.gutterUtilityContent = gutterUtilityContent;\n }\n\n private injectUnsafeCSS(): void {\n if (this.fileContainer?.shadowRoot == null) {\n return;\n }\n const { unsafeCSS } = this.options;\n\n if (unsafeCSS == null || unsafeCSS === '') {\n if (this.unsafeCSSStyle != null) {\n this.unsafeCSSStyle.remove();\n this.unsafeCSSStyle = undefined;\n }\n return;\n }\n\n // Create or update the style element\n if (this.unsafeCSSStyle == null) {\n this.unsafeCSSStyle = createUnsafeCSSStyleNode();\n this.fileContainer.shadowRoot.appendChild(this.unsafeCSSStyle);\n }\n // Wrap in @layer unsafe to match SSR behavior\n this.unsafeCSSStyle.innerText = wrapUnsafeCSS(unsafeCSS);\n }\n\n private applyFullRender(result: FileRenderResult, pre: HTMLPreElement): void {\n this.cleanupErrorWrapper();\n this.applyPreNodeAttributes(pre, result);\n this.code = getOrCreateCodeNode({ code: this.code });\n this.code.innerHTML = this.fileRenderer.renderPartialHTML(\n this.fileRenderer.renderCodeAST(result)\n );\n pre.replaceChildren(this.code);\n this.lastRowCount = result.rowCount;\n }\n\n private applyPartialRender(\n previousRenderRange: RenderRange | undefined,\n renderRange: RenderRange | undefined\n ): boolean {\n if (previousRenderRange == null || renderRange == null) {\n return false;\n }\n const { file, code } = this;\n const columns = code != null ? this.getColumns(code) : undefined;\n if (file == null || code == null || columns == null) {\n return false;\n }\n\n const previousStart = previousRenderRange.startingLine;\n const nextStart = renderRange.startingLine;\n const previousEnd =\n previousRenderRange.totalLines === Infinity\n ? Number.POSITIVE_INFINITY\n : previousStart + previousRenderRange.totalLines;\n const nextEnd =\n renderRange.totalLines === Infinity\n ? Number.POSITIVE_INFINITY\n : nextStart + renderRange.totalLines;\n\n const overlapStart = Math.max(previousStart, nextStart);\n const overlapEnd = Math.min(previousEnd, nextEnd);\n if (overlapEnd <= overlapStart) {\n return false;\n }\n\n if (\n !this.trimDOMToOverlap(columns.gutter, overlapStart, overlapEnd) ||\n !this.trimDOMToOverlap(columns.content, overlapStart, overlapEnd)\n ) {\n return false;\n }\n\n let { length: rowCount } = columns.content.children;\n\n const renderChunk = (\n startingLine: number,\n totalLines: number\n ): FileRenderResult | undefined => {\n if (totalLines <= 0) {\n return undefined;\n }\n return this.fileRenderer.renderFile(file, {\n startingLine,\n totalLines,\n bufferBefore: 0,\n bufferAfter: 0,\n });\n };\n\n const prependResult =\n nextStart < overlapStart\n ? renderChunk(nextStart, overlapStart - nextStart)\n : undefined;\n if (prependResult === undefined && nextStart < overlapStart) {\n return false;\n }\n\n const appendTotalLines =\n nextEnd === Number.POSITIVE_INFINITY\n ? Number.POSITIVE_INFINITY\n : Math.max(0, nextEnd - overlapEnd);\n const appendResult =\n nextEnd > overlapEnd\n ? renderChunk(overlapEnd, appendTotalLines)\n : undefined;\n if (appendResult === undefined && nextEnd > overlapEnd) {\n return false;\n }\n\n this.cleanupErrorWrapper();\n if (prependResult != null) {\n columns.gutter.insertAdjacentHTML(\n 'afterbegin',\n this.fileRenderer.renderPartialHTML(prependResult.gutterAST)\n );\n columns.content.insertAdjacentHTML(\n 'afterbegin',\n this.fileRenderer.renderPartialHTML(prependResult.contentAST)\n );\n rowCount += prependResult.rowCount;\n }\n\n if (appendResult != null) {\n columns.gutter.insertAdjacentHTML(\n 'beforeend',\n this.fileRenderer.renderPartialHTML(appendResult.gutterAST)\n );\n columns.content.insertAdjacentHTML(\n 'beforeend',\n this.fileRenderer.renderPartialHTML(appendResult.contentAST)\n );\n rowCount += appendResult.rowCount;\n }\n\n if (this.lastRowCount !== rowCount) {\n columns.gutter.style.setProperty('grid-row', `span ${rowCount}`);\n columns.content.style.setProperty('grid-row', `span ${rowCount}`);\n this.lastRowCount = rowCount;\n }\n\n return true;\n }\n\n private getColumns(code: HTMLElement): ColumnElements | undefined {\n const gutter = code.children[0];\n const content = code.children[1];\n if (\n !(gutter instanceof HTMLElement) ||\n !(content instanceof HTMLElement) ||\n gutter.dataset.gutter == null ||\n content.dataset.content == null\n ) {\n return undefined;\n }\n return { gutter, content };\n }\n\n private trimDOMToOverlap(\n container: HTMLElement,\n overlapStart: number,\n overlapEnd: number\n ): boolean {\n const boundaryIndices = this.getDOMBoundaryIndices(container, [\n overlapStart,\n overlapEnd,\n ]);\n const startIndex =\n boundaryIndices.get(overlapStart) ?? container.children.length;\n const endIndex =\n boundaryIndices.get(overlapEnd) ?? container.children.length;\n\n if (startIndex > endIndex) {\n return false;\n }\n\n for (let i = container.children.length - 1; i >= endIndex; i -= 1) {\n container.children[i]?.remove();\n }\n for (let i = startIndex - 1; i >= 0; i -= 1) {\n container.children[i]?.remove();\n }\n return true;\n }\n\n private getDOMBoundaryIndices(\n container: HTMLElement,\n boundaries: number[]\n ): Map<number, number> {\n const sortedBoundaries = [...new Set(boundaries)].sort((a, b) => a - b);\n const boundaryIndices = new Map<number, number>();\n if (sortedBoundaries.length === 0) {\n return boundaryIndices;\n }\n let boundaryIndex = 0;\n let nextBoundary = sortedBoundaries[boundaryIndex];\n const { children } = container;\n\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!(child instanceof HTMLElement)) {\n continue;\n }\n const lineIndex = this.getLineIndexFromDOMNode(child);\n if (lineIndex == null) {\n continue;\n }\n while (nextBoundary != null && lineIndex >= nextBoundary) {\n boundaryIndices.set(nextBoundary, i);\n boundaryIndex += 1;\n nextBoundary = sortedBoundaries[boundaryIndex];\n }\n if (boundaryIndex >= sortedBoundaries.length) {\n break;\n }\n }\n\n for (const boundary of sortedBoundaries) {\n if (!boundaryIndices.has(boundary)) {\n boundaryIndices.set(boundary, children.length);\n }\n }\n return boundaryIndices;\n }\n\n private getLineIndexFromDOMNode(node: HTMLElement): number | undefined {\n const lineIndexAttr = node.dataset.lineIndex;\n if (lineIndexAttr == null) {\n return undefined;\n }\n const parsed = Number(lineIndexAttr);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n private applyBuffers(\n pre: HTMLPreElement,\n renderRange: RenderRange | undefined\n ) {\n const { disableVirtualizationBuffers = false } = this.options;\n if (disableVirtualizationBuffers || renderRange == null) {\n if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n return;\n }\n\n if (renderRange.bufferBefore > 0) {\n if (this.bufferBefore == null) {\n this.bufferBefore = document.createElement('div');\n this.bufferBefore.dataset.virtualizerBuffer = 'before';\n pre.before(this.bufferBefore);\n }\n this.bufferBefore.style.setProperty(\n 'height',\n `${renderRange.bufferBefore}px`\n );\n this.bufferBefore.style.setProperty('contain', 'strict');\n } else if (this.bufferBefore != null) {\n this.bufferBefore.remove();\n this.bufferBefore = undefined;\n }\n\n if (renderRange.bufferAfter > 0) {\n if (this.bufferAfter == null) {\n this.bufferAfter = document.createElement('div');\n this.bufferAfter.dataset.virtualizerBuffer = 'after';\n pre.after(this.bufferAfter);\n }\n this.bufferAfter.style.setProperty(\n 'height',\n `${renderRange.bufferAfter}px`\n );\n this.bufferAfter.style.setProperty('contain', 'strict');\n } else if (this.bufferAfter != null) {\n this.bufferAfter.remove();\n this.bufferAfter = undefined;\n }\n }\n\n private applyHeaderToDOM(\n headerAST: HASTElement,\n container: HTMLElement\n ): void {\n const { file } = this;\n if (file == null) return;\n this.cleanupErrorWrapper();\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n const headerHTML = toHtml(headerAST);\n if (headerHTML !== this.lastRenderedHeaderHTML) {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = headerHTML;\n const newHeader = tempDiv.firstElementChild;\n if (!(newHeader instanceof HTMLElement)) {\n return;\n }\n if (this.headerElement != null) {\n container.shadowRoot?.replaceChild(newHeader, this.headerElement);\n } else {\n container.shadowRoot?.prepend(newHeader);\n }\n this.headerElement = newHeader;\n this.lastRenderedHeaderHTML = headerHTML;\n }\n\n if (this.isContainerManaged) return;\n\n const { renderHeaderPrefix, renderCustomMetadata } = this.options;\n if (this.headerPrefix != null) {\n this.headerPrefix.remove();\n }\n if (this.headerMetadata != null) {\n this.headerMetadata.remove();\n }\n const prefix = renderHeaderPrefix?.(file) ?? undefined;\n const content = renderCustomMetadata?.(file) ?? undefined;\n if (prefix != null) {\n this.headerPrefix = document.createElement('div');\n this.headerPrefix.slot = HEADER_PREFIX_SLOT_ID;\n if (prefix instanceof Element) {\n this.headerPrefix.appendChild(prefix);\n } else {\n this.headerPrefix.innerText = `${prefix}`;\n }\n container.appendChild(this.headerPrefix);\n }\n if (content != null) {\n this.headerMetadata = document.createElement('div');\n this.headerMetadata.slot = HEADER_METADATA_SLOT_ID;\n if (content instanceof Element) {\n this.headerMetadata.appendChild(content);\n } else {\n this.headerMetadata.innerText = `${content}`;\n }\n container.appendChild(this.headerMetadata);\n }\n }\n\n protected getOrCreateFileContainerNode(\n fileContainer?: HTMLElement,\n parentNode?: HTMLElement\n ): HTMLElement {\n const previousContainer = this.fileContainer;\n this.fileContainer =\n fileContainer ??\n this.fileContainer ??\n document.createElement(DIFFS_TAG_NAME);\n if (previousContainer != null && previousContainer !== this.fileContainer) {\n this.lastRenderedHeaderHTML = undefined;\n this.headerElement = undefined;\n }\n if (parentNode != null && this.fileContainer.parentNode !== parentNode) {\n parentNode.appendChild(this.fileContainer);\n }\n if (this.spriteSVG == null) {\n const fragment = document.createElement('div');\n fragment.innerHTML = SVGSpriteSheet;\n const firstChild = fragment.firstChild;\n if (firstChild instanceof SVGElement) {\n this.spriteSVG = firstChild;\n this.fileContainer.shadowRoot?.appendChild(this.spriteSVG);\n }\n }\n return this.fileContainer;\n }\n\n private getOrCreatePreNode(container: HTMLElement): HTMLPreElement {\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n // If we haven't created a pre element yet, lets go ahead and do that\n if (this.pre == null) {\n this.pre = document.createElement('pre');\n this.appliedPreAttributes = undefined;\n this.code = undefined;\n shadowRoot.appendChild(this.pre);\n }\n // If we have a new parent container for the pre element, lets go ahead and\n // move it into the new container\n else if (this.pre.parentNode !== shadowRoot) {\n container.shadowRoot?.appendChild(this.pre);\n this.appliedPreAttributes = undefined;\n }\n\n this.placeHolder?.remove();\n this.placeHolder = undefined;\n\n return this.pre;\n }\n\n private applyPreNodeAttributes(\n pre: HTMLPreElement,\n { totalLines, themeStyles, baseThemeType }: FileRenderResult\n ): void {\n const {\n overflow = 'scroll',\n themeType = 'system',\n disableLineNumbers = false,\n } = this.options;\n const preProperties: PrePropertiesConfig = {\n type: 'file',\n split: false,\n themeStyles,\n overflow,\n disableLineNumbers,\n themeType: baseThemeType ?? themeType,\n diffIndicators: 'none',\n disableBackground: true,\n totalLines,\n };\n if (arePrePropertiesEqual(preProperties, this.appliedPreAttributes)) {\n return;\n }\n setPreNodeProperties(pre, preProperties);\n this.appliedPreAttributes = preProperties;\n }\n\n private applyErrorToDOM(error: Error, container: HTMLElement) {\n this.cleanupErrorWrapper();\n const pre = this.getOrCreatePreNode(container);\n pre.innerHTML = '';\n pre.remove();\n this.pre = undefined;\n this.appliedPreAttributes = undefined;\n const shadowRoot =\n container.shadowRoot ?? container.attachShadow({ mode: 'open' });\n this.errorWrapper ??= document.createElement('div');\n this.errorWrapper.dataset.errorWrapper = '';\n this.errorWrapper.innerHTML = '';\n shadowRoot.appendChild(this.errorWrapper);\n const errorMessage = document.createElement('div');\n errorMessage.dataset.errorMessage = '';\n errorMessage.innerText = error.message;\n this.errorWrapper.appendChild(errorMessage);\n const errorStack = document.createElement('pre');\n errorStack.dataset.errorStack = '';\n errorStack.innerText = error.stack ?? 'No Error Stack';\n this.errorWrapper.appendChild(errorStack);\n }\n\n private cleanupErrorWrapper() {\n this.errorWrapper?.remove();\n this.errorWrapper = undefined;\n }\n}\n"],"mappings":"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"}
@@ -26,7 +26,7 @@ interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSepara
26
26
  hunkSeparators?: Exclude<HunkSeparators, 'custom'> /**
27
27
  * @deprecated Custom hunk separator functions are deprecated and will be
28
28
  * removed in a future version.
29
- */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment | undefined);
29
+ */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment | null | undefined);
30
30
  disableFileHeader?: boolean;
31
31
  /**
32
32
  * @deprecated Use `enableGutterUtility` instead.
@@ -41,11 +41,11 @@ interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSepara
41
41
  */
42
42
  disableErrorHandling?: boolean;
43
43
  renderAnnotation?(annotation: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;
44
- renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;
44
+ renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null | undefined;
45
45
  /**
46
46
  * @deprecated Use `renderGutterUtility` instead.
47
47
  */
48
- renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;
48
+ renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null | undefined;
49
49
  }
50
50
  interface AnnotationElementCache<LAnnotation> {
51
51
  element: HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiff.d.ts","names":["GetHoveredLineResult","GetLineIndexUtility","InteractionManager","InteractionManagerBaseOptions","SelectedLineRange","ResizeManager","ScrollSyncManager","DiffHunksRenderer","HunksRenderResult","BaseDiffOptions","CustomPreProperties","DiffLineAnnotation","ExpansionDirections","FileContents","FileDiffMetadata","HunkData","HunkSeparators","PrePropertiesConfig","RenderHeaderMetadataCallback","RenderHeaderPrefixCallback","RenderRange","ThemeTypes","WorkerPoolManager","FileDiffRenderProps","LAnnotation","HTMLElement","FileDiffHydrationProps","Omit","FileDiffOptions","Exclude","FileDiff","DocumentFragment","AnnotationElementCache","CustomHunkElementCache","SVGElement","HTMLPreElement","HTMLStyleElement","Map","__0","AnnotationSide","oldFile","newFile","fileDiff","forceRender","lineAnnotations","fileContainer","containerWrapper","renderRange","themeStyles","baseThemeType","additionsContentAST","deletionsContentAST","totalLines"],"sources":["../../src/components/FileDiff.d.ts"],"sourcesContent":["import { type GetHoveredLineResult, type GetLineIndexUtility, InteractionManager, type InteractionManagerBaseOptions, type SelectedLineRange } from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport { DiffHunksRenderer, type HunksRenderResult } from '../renderers/DiffHunksRenderer';\nimport type { BaseDiffOptions, CustomPreProperties, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface FileDiffRenderProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n oldFile?: FileContents;\n newFile?: FileContents;\n forceRender?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileDiffHydrationProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'fileContainer'> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\nexport interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSeparators'>, InteractionManagerBaseOptions<'diff'> {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment | undefined);\n disableFileHeader?: boolean;\n /**\n * @deprecated Use `enableGutterUtility` instead.\n */\n enableHoverUtility?: boolean;\n renderHeaderPrefix?: RenderHeaderPrefixCallback;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\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: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;\n renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;\n /**\n * @deprecated Use `renderGutterUtility` instead.\n */\n renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\nexport declare class FileDiff<LAnnotation = undefined> {\n options: FileDiffOptions<LAnnotation>;\n protected workerManager?: WorkerPoolManager | undefined;\n protected isContainerManaged: boolean;\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 codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected gutterUtilityContent: HTMLElement | undefined;\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache>;\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected interactionManager: InteractionManager<'diff'>;\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>>;\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[];\n protected deletionFile: FileContents | undefined;\n protected additionFile: FileContents | undefined;\n protected fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n protected enabled: boolean;\n constructor(options?: FileDiffOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n protected handleHighlightRender: () => void;\n protected getHunksRendererOptions(options: FileDiffOptions<LAnnotation>): BaseDiffOptions;\n protected createHunksRenderer(options: FileDiffOptions<LAnnotation>): DiffHunksRenderer<LAnnotation>;\n getLineIndex: GetLineIndexUtility;\n setOptions(options: FileDiffOptions<LAnnotation> | undefined): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n getHoveredLine: () => {\n lineNumber: number;\n side: import(\"..\").AnnotationSide;\n } | undefined;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n private canPartiallyRender;\n setSelectedLines(range: SelectedLineRange | null): void;\n cleanUp(recycle?: boolean): void;\n virtualizedSetup(): void;\n hydrate(props: FileDiffHydrationProps<LAnnotation>): void;\n rerender(): void;\n handleExpandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n expandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n render({ oldFile, newFile, fileDiff, forceRender, lineAnnotations, fileContainer, containerWrapper, renderRange }: FileDiffRenderProps<LAnnotation>): boolean;\n private removeRenderedCode;\n private clearAuxiliaryNodes;\n renderPlaceholder(height: number): boolean;\n private cleanChildNodes;\n private renderSeparators;\n private renderAnnotations;\n private renderGutterUtility;\n protected getOrCreateFileContainer(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n protected getFileContainer(): HTMLElement | undefined;\n private getOrCreatePreNode;\n private syncCodeNodesFromPre;\n private applyHeaderToDOM;\n private injectUnsafeCSS;\n private applyHunksToDOM;\n private applyPartialRender;\n private insertPartialHTML;\n private renderPartialColumn;\n private mergeBuffersIfNecessary;\n private applyRowSpan;\n private trimColumnRows;\n private trimColumns;\n private getBufferSize;\n private updateBufferSize;\n private getCodeColumns;\n private applyBuffers;\n protected applyPreNodeAttributes(pre: HTMLPreElement, { themeStyles, baseThemeType, additionsContentAST, deletionsContentAST, totalLines }: HunksRenderResult, customProperties?: CustomPreProperties): void;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=FileDiff.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"FileDiff.d.ts","names":["GetHoveredLineResult","GetLineIndexUtility","InteractionManager","InteractionManagerBaseOptions","SelectedLineRange","ResizeManager","ScrollSyncManager","DiffHunksRenderer","HunksRenderResult","BaseDiffOptions","CustomPreProperties","DiffLineAnnotation","ExpansionDirections","FileContents","FileDiffMetadata","HunkData","HunkSeparators","PrePropertiesConfig","RenderHeaderMetadataCallback","RenderHeaderPrefixCallback","RenderRange","ThemeTypes","WorkerPoolManager","FileDiffRenderProps","LAnnotation","HTMLElement","FileDiffHydrationProps","Omit","FileDiffOptions","Exclude","FileDiff","DocumentFragment","AnnotationElementCache","CustomHunkElementCache","SVGElement","HTMLPreElement","HTMLStyleElement","Map","__0","AnnotationSide","oldFile","newFile","fileDiff","forceRender","lineAnnotations","fileContainer","containerWrapper","renderRange","themeStyles","baseThemeType","additionsContentAST","deletionsContentAST","totalLines"],"sources":["../../src/components/FileDiff.d.ts"],"sourcesContent":["import { type GetHoveredLineResult, type GetLineIndexUtility, InteractionManager, type InteractionManagerBaseOptions, type SelectedLineRange } from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport { DiffHunksRenderer, type HunksRenderResult } from '../renderers/DiffHunksRenderer';\nimport type { BaseDiffOptions, CustomPreProperties, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface FileDiffRenderProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n oldFile?: FileContents;\n newFile?: FileContents;\n forceRender?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileDiffHydrationProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'fileContainer'> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\nexport interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSeparators'>, InteractionManagerBaseOptions<'diff'> {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment | null | undefined);\n disableFileHeader?: boolean;\n /**\n * @deprecated Use `enableGutterUtility` instead.\n */\n enableHoverUtility?: boolean;\n renderHeaderPrefix?: RenderHeaderPrefixCallback;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\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: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;\n renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null | undefined;\n /**\n * @deprecated Use `renderGutterUtility` instead.\n */\n renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null | undefined;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\nexport declare class FileDiff<LAnnotation = undefined> {\n options: FileDiffOptions<LAnnotation>;\n protected workerManager?: WorkerPoolManager | undefined;\n protected isContainerManaged: boolean;\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 codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected gutterUtilityContent: HTMLElement | undefined;\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache>;\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected interactionManager: InteractionManager<'diff'>;\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>>;\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[];\n protected deletionFile: FileContents | undefined;\n protected additionFile: FileContents | undefined;\n protected fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n protected enabled: boolean;\n constructor(options?: FileDiffOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n protected handleHighlightRender: () => void;\n protected getHunksRendererOptions(options: FileDiffOptions<LAnnotation>): BaseDiffOptions;\n protected createHunksRenderer(options: FileDiffOptions<LAnnotation>): DiffHunksRenderer<LAnnotation>;\n getLineIndex: GetLineIndexUtility;\n setOptions(options: FileDiffOptions<LAnnotation> | undefined): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n getHoveredLine: () => {\n lineNumber: number;\n side: import(\"..\").AnnotationSide;\n } | undefined;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n private canPartiallyRender;\n setSelectedLines(range: SelectedLineRange | null): void;\n cleanUp(recycle?: boolean): void;\n virtualizedSetup(): void;\n hydrate(props: FileDiffHydrationProps<LAnnotation>): void;\n rerender(): void;\n handleExpandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n expandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n render({ oldFile, newFile, fileDiff, forceRender, lineAnnotations, fileContainer, containerWrapper, renderRange }: FileDiffRenderProps<LAnnotation>): boolean;\n private removeRenderedCode;\n private clearAuxiliaryNodes;\n renderPlaceholder(height: number): boolean;\n private cleanChildNodes;\n private renderSeparators;\n private renderAnnotations;\n private renderGutterUtility;\n protected getOrCreateFileContainer(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n protected getFileContainer(): HTMLElement | undefined;\n private getOrCreatePreNode;\n private syncCodeNodesFromPre;\n private applyHeaderToDOM;\n private injectUnsafeCSS;\n private applyHunksToDOM;\n private applyPartialRender;\n private insertPartialHTML;\n private renderPartialColumn;\n private mergeBuffersIfNecessary;\n private applyRowSpan;\n private trimColumnRows;\n private trimColumns;\n private getBufferSize;\n private updateBufferSize;\n private getCodeColumns;\n private applyBuffers;\n protected applyPreNodeAttributes(pre: HTMLPreElement, { themeStyles, baseThemeType, additionsContentAST, deletionsContentAST, totalLines }: HunksRenderResult, customProperties?: CustomPreProperties): void;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=FileDiff.d.ts.map"],"mappings":"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"}