@pierre/diffs 1.1.5 → 1.1.7

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 (139) hide show
  1. package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +1 -1
  2. package/dist/components/File.d.ts +21 -1
  3. package/dist/components/File.d.ts.map +1 -1
  4. package/dist/components/File.js +142 -70
  5. package/dist/components/File.js.map +1 -1
  6. package/dist/components/FileDiff.d.ts +26 -5
  7. package/dist/components/FileDiff.d.ts.map +1 -1
  8. package/dist/components/FileDiff.js +143 -89
  9. package/dist/components/FileDiff.js.map +1 -1
  10. package/dist/components/FileStream.d.ts +4 -1
  11. package/dist/components/FileStream.d.ts.map +1 -1
  12. package/dist/components/FileStream.js +27 -12
  13. package/dist/components/FileStream.js.map +1 -1
  14. package/dist/components/UnresolvedFile.js +6 -42
  15. package/dist/components/UnresolvedFile.js.map +1 -1
  16. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
  17. package/dist/constants.d.ts +3 -1
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js +3 -1
  20. package/dist/constants.js.map +1 -1
  21. package/dist/index.d.ts +6 -6
  22. package/dist/index.js +4 -4
  23. package/dist/react/File.d.ts +3 -1
  24. package/dist/react/File.d.ts.map +1 -1
  25. package/dist/react/File.js +5 -2
  26. package/dist/react/File.js.map +1 -1
  27. package/dist/react/FileDiff.d.ts +4 -1
  28. package/dist/react/FileDiff.d.ts.map +1 -1
  29. package/dist/react/FileDiff.js +5 -2
  30. package/dist/react/FileDiff.js.map +1 -1
  31. package/dist/react/MultiFileDiff.d.ts +4 -1
  32. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  33. package/dist/react/MultiFileDiff.js +12 -6
  34. package/dist/react/MultiFileDiff.js.map +1 -1
  35. package/dist/react/PatchDiff.d.ts +4 -1
  36. package/dist/react/PatchDiff.d.ts.map +1 -1
  37. package/dist/react/PatchDiff.js +5 -2
  38. package/dist/react/PatchDiff.js.map +1 -1
  39. package/dist/react/UnresolvedFile.d.ts +4 -1
  40. package/dist/react/UnresolvedFile.d.ts.map +1 -1
  41. package/dist/react/UnresolvedFile.js +5 -2
  42. package/dist/react/UnresolvedFile.js.map +1 -1
  43. package/dist/react/WorkerPoolContext.js +7 -5
  44. package/dist/react/WorkerPoolContext.js.map +1 -1
  45. package/dist/react/index.d.ts +2 -2
  46. package/dist/react/jsx.d.ts.map +1 -1
  47. package/dist/react/types.d.ts +6 -3
  48. package/dist/react/types.d.ts.map +1 -1
  49. package/dist/react/utils/renderDiffChildren.d.ts +4 -6
  50. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  51. package/dist/react/utils/renderDiffChildren.js +12 -17
  52. package/dist/react/utils/renderDiffChildren.js.map +1 -1
  53. package/dist/react/utils/renderFileChildren.d.ts +2 -0
  54. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  55. package/dist/react/utils/renderFileChildren.js +9 -6
  56. package/dist/react/utils/renderFileChildren.js.map +1 -1
  57. package/dist/react/utils/useFileDiffInstance.d.ts +7 -7
  58. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  59. package/dist/react/utils/useFileDiffInstance.js +20 -11
  60. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  61. package/dist/react/utils/useFileInstance.d.ts +5 -1
  62. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  63. package/dist/react/utils/useFileInstance.js +20 -7
  64. package/dist/react/utils/useFileInstance.js.map +1 -1
  65. package/dist/react/utils/useUnresolvedFileInstance.d.ts +5 -1
  66. package/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -1
  67. package/dist/react/utils/useUnresolvedFileInstance.js +17 -4
  68. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  69. package/dist/renderers/DiffHunksRenderer.d.ts +14 -9
  70. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  71. package/dist/renderers/DiffHunksRenderer.js +13 -21
  72. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  73. package/dist/renderers/FileRenderer.d.ts +5 -4
  74. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  75. package/dist/renderers/FileRenderer.js +11 -19
  76. package/dist/renderers/FileRenderer.js.map +1 -1
  77. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts +5 -5
  78. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts.map +1 -1
  79. package/dist/renderers/UnresolvedFileHunksRenderer.js +2 -2
  80. package/dist/renderers/UnresolvedFileHunksRenderer.js.map +1 -1
  81. package/dist/ssr/index.d.ts +2 -2
  82. package/dist/ssr/preloadDiffs.js +7 -4
  83. package/dist/ssr/preloadDiffs.js.map +1 -1
  84. package/dist/ssr/preloadFile.js +7 -2
  85. package/dist/ssr/preloadFile.js.map +1 -1
  86. package/dist/style.js +1 -1
  87. package/dist/style.js.map +1 -1
  88. package/dist/types.d.ts +11 -11
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/utils/arePrePropertiesEqual.js +1 -1
  91. package/dist/utils/arePrePropertiesEqual.js.map +1 -1
  92. package/dist/utils/createFileHeaderElement.d.ts +3 -5
  93. package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  94. package/dist/utils/createFileHeaderElement.js +17 -10
  95. package/dist/utils/createFileHeaderElement.js.map +1 -1
  96. package/dist/utils/createPreElement.d.ts +0 -2
  97. package/dist/utils/createPreElement.d.ts.map +1 -1
  98. package/dist/utils/createPreElement.js +4 -7
  99. package/dist/utils/createPreElement.js.map +1 -1
  100. package/dist/utils/createStyleElement.d.ts +2 -1
  101. package/dist/utils/createStyleElement.d.ts.map +1 -1
  102. package/dist/utils/createStyleElement.js +9 -2
  103. package/dist/utils/createStyleElement.js.map +1 -1
  104. package/dist/utils/cssWrappers.d.ts +4 -1
  105. package/dist/utils/cssWrappers.d.ts.map +1 -1
  106. package/dist/utils/cssWrappers.js +11 -2
  107. package/dist/utils/cssWrappers.js.map +1 -1
  108. package/dist/utils/hast_utils.d.ts +1 -1
  109. package/dist/utils/hast_utils.d.ts.map +1 -1
  110. package/dist/utils/hast_utils.js.map +1 -1
  111. package/dist/utils/hostTheme.d.ts +15 -0
  112. package/dist/utils/hostTheme.d.ts.map +1 -0
  113. package/dist/utils/hostTheme.js +22 -0
  114. package/dist/utils/hostTheme.js.map +1 -0
  115. package/dist/utils/isDiffPlainText.d.ts +7 -0
  116. package/dist/utils/isDiffPlainText.d.ts.map +1 -0
  117. package/dist/utils/isDiffPlainText.js +12 -0
  118. package/dist/utils/isDiffPlainText.js.map +1 -0
  119. package/dist/utils/isFilePlainText.d.ts +7 -0
  120. package/dist/utils/isFilePlainText.d.ts.map +1 -0
  121. package/dist/utils/isFilePlainText.js +10 -0
  122. package/dist/utils/isFilePlainText.js.map +1 -0
  123. package/dist/utils/parsePatchFiles.js +1 -1
  124. package/dist/utils/parsePatchFiles.js.map +1 -1
  125. package/dist/utils/renderDiffWithHighlighter.js +1 -4
  126. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  127. package/dist/utils/renderFileWithHighlighter.js +1 -3
  128. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  129. package/dist/utils/setWrapperNodeProps.d.ts +0 -2
  130. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  131. package/dist/utils/setWrapperNodeProps.js +1 -4
  132. package/dist/utils/setWrapperNodeProps.js.map +1 -1
  133. package/dist/worker/WorkerPoolManager.js +4 -2
  134. package/dist/worker/WorkerPoolManager.js.map +1 -1
  135. package/dist/worker/worker-portable.js +4 -13
  136. package/dist/worker/worker-portable.js.map +1 -1
  137. package/dist/worker/worker.js +2 -7
  138. package/dist/worker/worker.js.map +1 -1
  139. 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"}
@@ -1,4 +1,4 @@
1
- import { BaseCodeOptions, FileContents, LineAnnotation, PrePropertiesConfig, RenderFileMetadata, RenderRange, ThemeTypes } from "../types.js";
1
+ import { AppliedThemeStyleCache, BaseCodeOptions, FileContents, LineAnnotation, PrePropertiesConfig, RenderFileMetadata, RenderRange, ThemeTypes } from "../types.js";
2
2
  import { WorkerPoolManager } from "../worker/WorkerPoolManager.js";
3
3
  import "../worker/index.js";
4
4
  import { GetHoveredLineResult, InteractionManager, InteractionManagerBaseOptions, SelectedLineRange } from "../managers/InteractionManager.js";
@@ -27,6 +27,7 @@ interface FileOptions<LAnnotation> extends BaseCodeOptions, InteractionManagerBa
27
27
  enableHoverUtility?: boolean;
28
28
  renderHeaderPrefix?: RenderFileMetadata;
29
29
  renderCustomMetadata?: RenderFileMetadata;
30
+ renderCustomHeader?: RenderFileMetadata;
30
31
  /**
31
32
  * When true, errors during rendering are rethrown instead of being caught
32
33
  * and displayed in the DOM. Useful for testing or when you want to handle
@@ -45,6 +46,10 @@ interface AnnotationElementCache<LAnnotation> {
45
46
  element: HTMLElement;
46
47
  annotation: LineAnnotation<LAnnotation>;
47
48
  }
49
+ interface HydrationSetup<LAnnotation> {
50
+ file: FileContents;
51
+ lineAnnotations: LineAnnotation<LAnnotation>[] | undefined;
52
+ }
48
53
  declare class File<LAnnotation = undefined> {
49
54
  options: FileOptions<LAnnotation>;
50
55
  private workerManager?;
@@ -57,7 +62,10 @@ declare class File<LAnnotation = undefined> {
57
62
  protected code: HTMLElement | undefined;
58
63
  protected bufferBefore: HTMLElement | undefined;
59
64
  protected bufferAfter: HTMLElement | undefined;
65
+ protected themeCSSStyle: HTMLStyleElement | undefined;
66
+ protected appliedThemeCSS: AppliedThemeStyleCache | undefined;
60
67
  protected unsafeCSSStyle: HTMLStyleElement | undefined;
68
+ protected appliedUnsafeCSS: string | undefined;
61
69
  protected gutterUtilityContent: HTMLElement | undefined;
62
70
  protected errorWrapper: HTMLElement | undefined;
63
71
  protected placeHolder: HTMLElement | undefined;
@@ -65,6 +73,7 @@ declare class File<LAnnotation = undefined> {
65
73
  protected appliedPreAttributes: PrePropertiesConfig | undefined;
66
74
  protected lastRowCount: number | undefined;
67
75
  protected headerElement: HTMLElement | undefined;
76
+ protected headerCustom: HTMLElement | undefined;
68
77
  protected headerPrefix: HTMLElement | undefined;
69
78
  protected headerMetadata: HTMLElement | undefined;
70
79
  protected fileRenderer: FileRenderer<LAnnotation>;
@@ -87,6 +96,11 @@ declare class File<LAnnotation = undefined> {
87
96
  setSelectedLines(range: SelectedLineRange | null): void;
88
97
  cleanUp(): void;
89
98
  hydrate(props: FileHydrateProps<LAnnotation>): void;
99
+ protected hydrateElements(fileContainer: HTMLElement, prerenderedHTML: string | undefined): void;
100
+ protected hydrationSetup({
101
+ file,
102
+ lineAnnotations
103
+ }: HydrationSetup<LAnnotation>): void;
90
104
  getOrCreateLineCache(file?: FileContents | undefined): string[];
91
105
  render({
92
106
  file,
@@ -106,6 +120,7 @@ declare class File<LAnnotation = undefined> {
106
120
  private renderAnnotations;
107
121
  private renderGutterUtility;
108
122
  private injectUnsafeCSS;
123
+ private applyThemeState;
109
124
  private applyFullRender;
110
125
  private applyPartialRender;
111
126
  private getColumns;
@@ -114,8 +129,13 @@ declare class File<LAnnotation = undefined> {
114
129
  private getLineIndexFromDOMNode;
115
130
  private applyBuffers;
116
131
  private applyHeaderToDOM;
132
+ private clearHeaderSlots;
133
+ private upsertHeaderSlotElement;
134
+ private replaceHeaderSlotContent;
135
+ private createHeaderSlotElement;
117
136
  protected getOrCreateFileContainerNode(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;
118
137
  private getOrCreatePreNode;
138
+ private syncCodeNodeFromPre;
119
139
  private applyPreNodeAttributes;
120
140
  private applyErrorToDOM;
121
141
  private cleanupErrorWrapper;
@@ -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","FileHydrateProps","Omit","FileOptions","File","AnnotationElementCache","SVGElement","HTMLPreElement","HTMLStyleElement","Map","file","fileContainer","forceRender","preventEmit","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 preventEmit?: boolean;\n lineAnnotations?: LineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileHydrateProps<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 onPostRender?(node: HTMLElement, instance: File<LAnnotation>): unknown;\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: FileHydrateProps<LAnnotation>): void;\n getOrCreateLineCache(file?: FileContents | undefined): string[];\n render({ file, fileContainer, forceRender, preventEmit, containerWrapper, lineAnnotations, renderRange }: FileRenderProps<LAnnotation>): boolean;\n private emitPostRender;\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","AppliedThemeStyleCache","BaseCodeOptions","FileContents","LineAnnotation","PrePropertiesConfig","RenderFileMetadata","RenderRange","ThemeTypes","WorkerPoolManager","FileRenderProps","LAnnotation","HTMLElement","FileHydrateProps","Omit","FileOptions","File","AnnotationElementCache","HydrationSetup","SVGElement","HTMLPreElement","HTMLStyleElement","Map","file","lineAnnotations","fileContainer","forceRender","preventEmit","containerWrapper","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 { AppliedThemeStyleCache, 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 preventEmit?: boolean;\n lineAnnotations?: LineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileHydrateProps<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 renderCustomHeader?: 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 onPostRender?(node: HTMLElement, instance: File<LAnnotation>): unknown;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: LineAnnotation<LAnnotation>;\n}\ninterface HydrationSetup<LAnnotation> {\n file: FileContents;\n lineAnnotations: LineAnnotation<LAnnotation>[] | undefined;\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 themeCSSStyle: HTMLStyleElement | undefined;\n protected appliedThemeCSS: AppliedThemeStyleCache | undefined;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected appliedUnsafeCSS: string | 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 headerCustom: 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: FileHydrateProps<LAnnotation>): void;\n protected hydrateElements(fileContainer: HTMLElement, prerenderedHTML: string | undefined): void;\n protected hydrationSetup({ file, lineAnnotations }: HydrationSetup<LAnnotation>): void;\n getOrCreateLineCache(file?: FileContents | undefined): string[];\n render({ file, fileContainer, forceRender, preventEmit, containerWrapper, lineAnnotations, renderRange }: FileRenderProps<LAnnotation>): boolean;\n private emitPostRender;\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 applyThemeState;\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 private clearHeaderSlots;\n private upsertHeaderSlotElement;\n private replaceHeaderSlotContent;\n private createHeaderSlotElement;\n protected getOrCreateFileContainerNode(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n private getOrCreatePreNode;\n private syncCodeNodeFromPre;\n private applyPreNodeAttributes;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=File.d.ts.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_THEMES, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, UNSAFE_CSS_ATTRIBUTE } from "../constants.js";
1
+ import { CUSTOM_HEADER_SLOT_ID, DEFAULT_THEMES, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, THEME_CSS_ATTRIBUTE, UNSAFE_CSS_ATTRIBUTE } from "../constants.js";
2
2
  import { InteractionManager, pluckInteractionOptions } from "../managers/InteractionManager.js";
3
3
  import { ResizeManager } from "../managers/ResizeManager.js";
4
4
  import { areRenderRangesEqual } from "../utils/areRenderRangesEqual.js";
@@ -11,8 +11,9 @@ import { arePrePropertiesEqual } from "../utils/arePrePropertiesEqual.js";
11
11
  import { createAnnotationWrapperNode } from "../utils/createAnnotationWrapperNode.js";
12
12
  import { createGutterUtilityContentNode } from "../utils/createGutterUtilityContentNode.js";
13
13
  import { createUnsafeCSSStyleNode } from "../utils/createUnsafeCSSStyleNode.js";
14
- import { wrapUnsafeCSS } from "../utils/cssWrappers.js";
14
+ import { wrapThemeCSS, wrapUnsafeCSS } from "../utils/cssWrappers.js";
15
15
  import { getOrCreateCodeNode } from "../utils/getOrCreateCodeNode.js";
16
+ import { upsertHostThemeStyle } from "../utils/hostTheme.js";
16
17
  import { prerenderHTMLIfNecessary } from "../utils/prerenderHTMLIfNecessary.js";
17
18
  import { setPreNodeProperties } from "../utils/setWrapperNodeProps.js";
18
19
  import { DiffsContainerLoaded } from "./web-components.js";
@@ -30,7 +31,10 @@ var File = class {
30
31
  code;
31
32
  bufferBefore;
32
33
  bufferAfter;
34
+ themeCSSStyle;
35
+ appliedThemeCSS;
33
36
  unsafeCSSStyle;
37
+ appliedUnsafeCSS;
34
38
  gutterUtilityContent;
35
39
  errorWrapper;
36
40
  placeHolder;
@@ -38,6 +42,7 @@ var File = class {
38
42
  appliedPreAttributes;
39
43
  lastRowCount;
40
44
  headerElement;
45
+ headerCustom;
41
46
  headerPrefix;
42
47
  headerMetadata;
43
48
  fileRenderer;
@@ -81,18 +86,8 @@ var File = class {
81
86
  setThemeType(themeType) {
82
87
  if ((this.options.themeType ?? "system") === themeType) return;
83
88
  this.mergeOptions({ themeType });
84
- this.fileRenderer.setThemeType(themeType);
85
- if (this.headerElement != null) if (themeType === "system") delete this.headerElement.dataset.themeType;
86
- else this.headerElement.dataset.themeType = themeType;
87
- if (this.pre != null) switch (themeType) {
88
- case "system":
89
- delete this.pre.dataset.themeType;
90
- break;
91
- case "light":
92
- case "dark":
93
- this.pre.dataset.themeType = themeType;
94
- break;
95
- }
89
+ if (typeof this.options.theme === "string" || this.fileContainer == null || this.appliedThemeCSS == null) return;
90
+ this.applyThemeState(this.fileContainer, this.appliedThemeCSS.themeStyles, themeType, this.appliedThemeCSS.baseThemeType);
96
91
  }
97
92
  getHoveredLine = () => {
98
93
  return this.interactionManager.getHoveredLine();
@@ -122,13 +117,29 @@ var File = class {
122
117
  this.headerElement = void 0;
123
118
  this.headerPrefix = void 0;
124
119
  this.headerMetadata = void 0;
120
+ this.headerCustom = void 0;
125
121
  this.lastRenderedHeaderHTML = void 0;
126
122
  this.errorWrapper = void 0;
123
+ this.themeCSSStyle = void 0;
124
+ this.appliedThemeCSS = void 0;
127
125
  this.unsafeCSSStyle = void 0;
126
+ this.appliedUnsafeCSS = void 0;
128
127
  this.placeHolder = void 0;
129
128
  }
130
129
  hydrate(props) {
131
- const { fileContainer, prerenderedHTML, preventEmit = false } = props;
130
+ const { fileContainer, prerenderedHTML, preventEmit = false, file, lineAnnotations } = props;
131
+ this.hydrateElements(fileContainer, prerenderedHTML);
132
+ if (this.pre == null && this.headerElement == null) this.render({
133
+ ...props,
134
+ preventEmit: true
135
+ });
136
+ else this.hydrationSetup({
137
+ file,
138
+ lineAnnotations
139
+ });
140
+ if (!preventEmit) this.emitPostRender();
141
+ }
142
+ hydrateElements(fileContainer, prerenderedHTML) {
132
143
  prerenderHTMLIfNecessary(fileContainer, prerenderedHTML);
133
144
  for (const element of Array.from(fileContainer.shadowRoot?.children ?? [])) {
134
145
  if (element instanceof SVGElement) {
@@ -141,8 +152,13 @@ var File = class {
141
152
  this.appliedPreAttributes = void 0;
142
153
  continue;
143
154
  }
155
+ if (element instanceof HTMLStyleElement && element.hasAttribute(THEME_CSS_ATTRIBUTE)) {
156
+ this.themeCSSStyle = element;
157
+ continue;
158
+ }
144
159
  if (element instanceof HTMLStyleElement && element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)) {
145
160
  this.unsafeCSSStyle = element;
161
+ this.appliedUnsafeCSS = element.textContent;
146
162
  continue;
147
163
  }
148
164
  if ("diffsHeader" in element.dataset) {
@@ -151,31 +167,33 @@ var File = class {
151
167
  continue;
152
168
  }
153
169
  }
154
- if (this.pre == null) this.render({
155
- ...props,
156
- preventEmit: true
157
- });
158
- else {
159
- const { file, lineAnnotations } = props;
160
- const { overflow = "scroll" } = this.options;
161
- this.fileContainer = fileContainer;
162
- delete this.pre.dataset.dehydrated;
163
- this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;
164
- this.file = file;
165
- this.fileRenderer.hydrate(file);
166
- this.renderAnnotations();
167
- this.renderGutterUtility();
168
- this.injectUnsafeCSS();
169
- this.interactionManager.setup(this.pre);
170
- this.resizeManager.setup(this.pre, overflow === "wrap");
170
+ if (this.pre != null) {
171
+ this.syncCodeNodeFromPre(this.pre);
172
+ this.pre.removeAttribute("data-dehydrated");
171
173
  }
172
- if (!preventEmit) this.emitPostRender();
174
+ this.fileContainer = fileContainer;
175
+ }
176
+ hydrationSetup({ file, lineAnnotations }) {
177
+ const { overflow = "scroll" } = this.options;
178
+ this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;
179
+ this.file = file;
180
+ this.fileRenderer.setOptions({
181
+ ...this.options,
182
+ headerRenderMode: this.options.renderCustomHeader != null ? "custom" : "default"
183
+ });
184
+ if (this.pre == null) return;
185
+ this.fileRenderer.hydrate(file);
186
+ this.renderAnnotations();
187
+ this.renderGutterUtility();
188
+ this.injectUnsafeCSS();
189
+ this.interactionManager.setup(this.pre);
190
+ this.resizeManager.setup(this.pre, overflow === "wrap");
173
191
  }
174
192
  getOrCreateLineCache(file = this.file) {
175
193
  return file != null ? this.fileRenderer.getOrCreateLineCache(file) : EMPTY_STRINGS;
176
194
  }
177
195
  render({ file, fileContainer, forceRender = false, preventEmit = false, containerWrapper, lineAnnotations, renderRange }) {
178
- const { collapsed = false } = this.options;
196
+ const { collapsed = false, themeType = "system" } = this.options;
179
197
  const nextRenderRange = collapsed ? void 0 : renderRange;
180
198
  const previousRenderRange = this.renderRange;
181
199
  const annotationsChanged = lineAnnotations != null && (lineAnnotations.length > 0 || this.lineAnnotations.length > 0) ? lineAnnotations !== this.lineAnnotations : false;
@@ -183,7 +201,10 @@ var File = class {
183
201
  if (!collapsed && !forceRender && areRenderRangesEqual(nextRenderRange, this.renderRange) && !didFileChange && !annotationsChanged) return false;
184
202
  this.renderRange = nextRenderRange;
185
203
  this.file = file;
186
- this.fileRenderer.setOptions(this.options);
204
+ this.fileRenderer.setOptions({
205
+ ...this.options,
206
+ headerRenderMode: this.options.renderCustomHeader != null ? "custom" : "default"
207
+ });
187
208
  if (lineAnnotations != null) this.setLineAnnotations(lineAnnotations);
188
209
  this.fileRenderer.setLineAnnotations(this.lineAnnotations);
189
210
  const { disableErrorHandling = false, disableFileHeader = false, overflow = "scroll" } = this.options;
@@ -193,14 +214,7 @@ var File = class {
193
214
  this.headerElement = void 0;
194
215
  this.lastRenderedHeaderHTML = void 0;
195
216
  }
196
- if (this.headerPrefix != null) {
197
- this.headerPrefix.remove();
198
- this.headerPrefix = void 0;
199
- }
200
- if (this.headerMetadata != null) {
201
- this.headerMetadata.remove();
202
- this.headerMetadata = void 0;
203
- }
217
+ this.clearHeaderSlots();
204
218
  }
205
219
  fileContainer = this.getOrCreateFileContainerNode(fileContainer, containerWrapper);
206
220
  if (collapsed) {
@@ -208,6 +222,7 @@ var File = class {
208
222
  this.clearAuxiliaryNodes();
209
223
  try {
210
224
  const fileResult = this.fileRenderer.renderFile(file, EMPTY_RENDER_RANGE);
225
+ if (fileResult != null) this.applyThemeState(fileContainer, fileResult.themeStyles, themeType, fileResult.baseThemeType);
211
226
  if (fileResult?.headerAST != null) this.applyHeaderToDOM(fileResult.headerAST, fileContainer);
212
227
  this.injectUnsafeCSS();
213
228
  } catch (error) {
@@ -226,6 +241,7 @@ var File = class {
226
241
  if (this.workerManager?.isInitialized() === false) this.workerManager.initialize().then(() => this.rerender());
227
242
  return false;
228
243
  }
244
+ this.applyThemeState(fileContainer, fileResult.themeStyles, themeType, fileResult.baseThemeType);
229
245
  if (fileResult.headerAST != null) this.applyHeaderToDOM(fileResult.headerAST, fileContainer);
230
246
  this.applyFullRender(fileResult, pre);
231
247
  }
@@ -293,8 +309,10 @@ var File = class {
293
309
  this.gutterUtilityContent?.remove();
294
310
  this.headerPrefix?.remove();
295
311
  this.headerMetadata?.remove();
312
+ this.headerCustom?.remove();
296
313
  this.pre?.remove();
297
314
  this.spriteSVG?.remove();
315
+ this.themeCSSStyle?.remove();
298
316
  this.unsafeCSSStyle?.remove();
299
317
  this.bufferAfter = void 0;
300
318
  this.bufferBefore = void 0;
@@ -304,9 +322,13 @@ var File = class {
304
322
  this.gutterUtilityContent = void 0;
305
323
  this.headerPrefix = void 0;
306
324
  this.headerMetadata = void 0;
325
+ this.headerCustom = void 0;
307
326
  this.pre = void 0;
308
327
  this.spriteSVG = void 0;
328
+ this.themeCSSStyle = void 0;
329
+ this.appliedThemeCSS = void 0;
309
330
  this.unsafeCSSStyle = void 0;
331
+ this.appliedUnsafeCSS = void 0;
310
332
  this.lastRenderedHeaderHTML = void 0;
311
333
  this.lastRowCount = void 0;
312
334
  }
@@ -360,20 +382,37 @@ var File = class {
360
382
  this.gutterUtilityContent = gutterUtilityContent;
361
383
  }
362
384
  injectUnsafeCSS() {
363
- if (this.fileContainer?.shadowRoot == null) return;
364
385
  const { unsafeCSS } = this.options;
386
+ const shadowRoot = this.fileContainer?.shadowRoot;
387
+ if (shadowRoot == null) return;
365
388
  if (unsafeCSS == null || unsafeCSS === "") {
366
389
  if (this.unsafeCSSStyle != null) {
367
390
  this.unsafeCSSStyle.remove();
368
391
  this.unsafeCSSStyle = void 0;
369
392
  }
393
+ this.appliedUnsafeCSS = void 0;
370
394
  return;
371
395
  }
372
- if (this.unsafeCSSStyle == null) {
373
- this.unsafeCSSStyle = createUnsafeCSSStyleNode();
374
- this.fileContainer.shadowRoot.appendChild(this.unsafeCSSStyle);
375
- }
376
- this.unsafeCSSStyle.innerText = wrapUnsafeCSS(unsafeCSS);
396
+ if (this.unsafeCSSStyle?.parentNode === shadowRoot && this.appliedUnsafeCSS === unsafeCSS) return;
397
+ this.unsafeCSSStyle ??= createUnsafeCSSStyleNode();
398
+ if (this.unsafeCSSStyle.parentNode !== shadowRoot) shadowRoot.appendChild(this.unsafeCSSStyle);
399
+ this.unsafeCSSStyle.textContent = wrapUnsafeCSS(unsafeCSS);
400
+ this.appliedUnsafeCSS = unsafeCSS;
401
+ }
402
+ applyThemeState(container, themeStyles, themeType, baseThemeType) {
403
+ const shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: "open" });
404
+ const effectiveThemeType = baseThemeType ?? themeType;
405
+ if (this.themeCSSStyle?.parentNode === shadowRoot && this.appliedThemeCSS?.themeStyles === themeStyles && this.appliedThemeCSS.themeType === effectiveThemeType) return;
406
+ this.themeCSSStyle = upsertHostThemeStyle({
407
+ shadowRoot,
408
+ currentNode: this.themeCSSStyle,
409
+ themeCSS: wrapThemeCSS(themeStyles, effectiveThemeType)
410
+ });
411
+ this.appliedThemeCSS = this.themeCSSStyle != null ? {
412
+ themeStyles,
413
+ themeType: effectiveThemeType,
414
+ baseThemeType
415
+ } : void 0;
377
416
  }
378
417
  applyFullRender(result, pre) {
379
418
  this.cleanupErrorWrapper();
@@ -531,25 +570,50 @@ var File = class {
531
570
  this.lastRenderedHeaderHTML = headerHTML;
532
571
  }
533
572
  if (this.isContainerManaged) return;
534
- const { renderHeaderPrefix, renderCustomMetadata } = this.options;
535
- if (this.headerPrefix != null) this.headerPrefix.remove();
536
- if (this.headerMetadata != null) this.headerMetadata.remove();
537
- const prefix = renderHeaderPrefix?.(file) ?? void 0;
538
- const content = renderCustomMetadata?.(file) ?? void 0;
539
- if (prefix != null) {
540
- this.headerPrefix = document.createElement("div");
541
- this.headerPrefix.slot = HEADER_PREFIX_SLOT_ID;
542
- if (prefix instanceof Element) this.headerPrefix.appendChild(prefix);
543
- else this.headerPrefix.innerText = `${prefix}`;
544
- container.appendChild(this.headerPrefix);
573
+ const { renderHeaderPrefix, renderCustomHeader, renderCustomMetadata } = this.options;
574
+ if (renderCustomHeader != null) {
575
+ const content = renderCustomHeader(file) ?? void 0;
576
+ this.headerCustom = this.upsertHeaderSlotElement(container, this.headerCustom, CUSTOM_HEADER_SLOT_ID, content);
577
+ this.headerPrefix?.remove();
578
+ this.headerMetadata?.remove();
579
+ this.headerPrefix = void 0;
580
+ this.headerMetadata = void 0;
581
+ } else {
582
+ const prefix = renderHeaderPrefix?.(file) ?? void 0;
583
+ const content = renderCustomMetadata?.(file) ?? void 0;
584
+ this.headerPrefix = this.upsertHeaderSlotElement(container, this.headerPrefix, HEADER_PREFIX_SLOT_ID, prefix);
585
+ this.headerMetadata = this.upsertHeaderSlotElement(container, this.headerMetadata, HEADER_METADATA_SLOT_ID, content);
586
+ this.headerCustom?.remove();
587
+ this.headerCustom = void 0;
545
588
  }
546
- if (content != null) {
547
- this.headerMetadata = document.createElement("div");
548
- this.headerMetadata.slot = HEADER_METADATA_SLOT_ID;
549
- if (content instanceof Element) this.headerMetadata.appendChild(content);
550
- else this.headerMetadata.innerText = `${content}`;
551
- container.appendChild(this.headerMetadata);
589
+ }
590
+ clearHeaderSlots() {
591
+ this.headerPrefix?.remove();
592
+ this.headerMetadata?.remove();
593
+ this.headerCustom?.remove();
594
+ this.headerPrefix = void 0;
595
+ this.headerMetadata = void 0;
596
+ this.headerCustom = void 0;
597
+ }
598
+ upsertHeaderSlotElement(container, current, slot, content) {
599
+ if (content == null) {
600
+ current?.remove();
601
+ return;
552
602
  }
603
+ const element = current ?? this.createHeaderSlotElement(slot);
604
+ if (current == null) container.appendChild(element);
605
+ this.replaceHeaderSlotContent(element, content);
606
+ return element;
607
+ }
608
+ replaceHeaderSlotContent(element, content) {
609
+ element.replaceChildren();
610
+ if (content instanceof Element) element.appendChild(content);
611
+ else element.innerText = `${content}`;
612
+ }
613
+ createHeaderSlotElement(slot) {
614
+ const element = document.createElement("div");
615
+ element.slot = slot;
616
+ return element;
553
617
  }
554
618
  getOrCreateFileContainerNode(fileContainer, parentNode) {
555
619
  const previousContainer = this.fileContainer;
@@ -585,15 +649,23 @@ var File = class {
585
649
  this.placeHolder = void 0;
586
650
  return this.pre;
587
651
  }
588
- applyPreNodeAttributes(pre, { totalLines, themeStyles, baseThemeType }) {
589
- const { overflow = "scroll", themeType = "system", disableLineNumbers = false } = this.options;
652
+ syncCodeNodeFromPre(pre) {
653
+ this.code = void 0;
654
+ for (const child of Array.from(pre.children)) {
655
+ if (!(child instanceof HTMLElement)) continue;
656
+ if (child.hasAttribute("data-code")) {
657
+ this.code = child;
658
+ return;
659
+ }
660
+ }
661
+ }
662
+ applyPreNodeAttributes(pre, { totalLines }) {
663
+ const { overflow = "scroll", disableLineNumbers = false } = this.options;
590
664
  const preProperties = {
591
665
  type: "file",
592
666
  split: false,
593
- themeStyles,
594
667
  overflow,
595
668
  disableLineNumbers,
596
- themeType: baseThemeType ?? themeType,
597
669
  diffIndicators: "none",
598
670
  disableBackground: true,
599
671
  totalLines