@pierre/diffs 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/File.d.ts +21 -1
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +142 -70
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +26 -5
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +143 -89
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts +4 -1
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +27 -12
- package/dist/components/FileStream.js.map +1 -1
- package/dist/components/UnresolvedFile.js +6 -42
- package/dist/components/UnresolvedFile.js.map +1 -1
- package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
- package/dist/constants.d.ts +3 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +4 -4
- package/dist/managers/InteractionManager.d.ts.map +1 -1
- package/dist/react/File.d.ts +3 -1
- package/dist/react/File.d.ts.map +1 -1
- package/dist/react/File.js +5 -2
- package/dist/react/File.js.map +1 -1
- package/dist/react/FileDiff.d.ts +4 -1
- package/dist/react/FileDiff.d.ts.map +1 -1
- package/dist/react/FileDiff.js +5 -2
- package/dist/react/FileDiff.js.map +1 -1
- package/dist/react/MultiFileDiff.d.ts +4 -1
- package/dist/react/MultiFileDiff.d.ts.map +1 -1
- package/dist/react/MultiFileDiff.js +12 -6
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/PatchDiff.d.ts +4 -1
- package/dist/react/PatchDiff.d.ts.map +1 -1
- package/dist/react/PatchDiff.js +5 -2
- package/dist/react/PatchDiff.js.map +1 -1
- package/dist/react/UnresolvedFile.d.ts +4 -1
- package/dist/react/UnresolvedFile.d.ts.map +1 -1
- package/dist/react/UnresolvedFile.js +5 -2
- package/dist/react/UnresolvedFile.js.map +1 -1
- package/dist/react/WorkerPoolContext.js +7 -5
- package/dist/react/WorkerPoolContext.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/jsx.d.ts.map +1 -1
- package/dist/react/types.d.ts +6 -3
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.d.ts +4 -6
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.js +12 -17
- package/dist/react/utils/renderDiffChildren.js.map +1 -1
- package/dist/react/utils/renderFileChildren.d.ts +2 -0
- package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
- package/dist/react/utils/renderFileChildren.js +9 -6
- package/dist/react/utils/renderFileChildren.js.map +1 -1
- package/dist/react/utils/useFileDiffInstance.d.ts +7 -7
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js +20 -11
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/react/utils/useFileInstance.d.ts +5 -1
- package/dist/react/utils/useFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileInstance.js +20 -7
- package/dist/react/utils/useFileInstance.js.map +1 -1
- package/dist/react/utils/useUnresolvedFileInstance.d.ts +5 -1
- package/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useUnresolvedFileInstance.js +17 -4
- package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts +14 -9
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +9 -19
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +5 -4
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +7 -17
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/renderers/UnresolvedFileHunksRenderer.d.ts +5 -5
- package/dist/renderers/UnresolvedFileHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/UnresolvedFileHunksRenderer.js +2 -2
- package/dist/renderers/UnresolvedFileHunksRenderer.js.map +1 -1
- package/dist/ssr/index.d.ts +2 -2
- package/dist/ssr/preloadDiffs.js +7 -4
- package/dist/ssr/preloadDiffs.js.map +1 -1
- package/dist/ssr/preloadFile.js +7 -2
- package/dist/ssr/preloadFile.js.map +1 -1
- package/dist/style.js +1 -1
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +11 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/arePrePropertiesEqual.js +1 -1
- package/dist/utils/arePrePropertiesEqual.js.map +1 -1
- package/dist/utils/createFileHeaderElement.d.ts +3 -5
- package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
- package/dist/utils/createFileHeaderElement.js +13 -9
- package/dist/utils/createFileHeaderElement.js.map +1 -1
- package/dist/utils/createPreElement.d.ts +0 -2
- package/dist/utils/createPreElement.d.ts.map +1 -1
- package/dist/utils/createPreElement.js +4 -7
- package/dist/utils/createPreElement.js.map +1 -1
- package/dist/utils/createStyleElement.d.ts +2 -1
- package/dist/utils/createStyleElement.d.ts.map +1 -1
- package/dist/utils/createStyleElement.js +9 -2
- package/dist/utils/createStyleElement.js.map +1 -1
- package/dist/utils/cssWrappers.d.ts +4 -1
- package/dist/utils/cssWrappers.d.ts.map +1 -1
- package/dist/utils/cssWrappers.js +11 -2
- package/dist/utils/cssWrappers.js.map +1 -1
- package/dist/utils/hast_utils.d.ts +1 -1
- package/dist/utils/hast_utils.d.ts.map +1 -1
- package/dist/utils/hast_utils.js.map +1 -1
- package/dist/utils/hostTheme.d.ts +15 -0
- package/dist/utils/hostTheme.d.ts.map +1 -0
- package/dist/utils/hostTheme.js +22 -0
- package/dist/utils/hostTheme.js.map +1 -0
- package/dist/utils/parsePatchFiles.js +1 -1
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +1 -4
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +1 -3
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/resolveRegion.js +14 -7
- package/dist/utils/resolveRegion.js.map +1 -1
- package/dist/utils/setWrapperNodeProps.d.ts +0 -2
- package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
- package/dist/utils/setWrapperNodeProps.js +1 -4
- package/dist/utils/setWrapperNodeProps.js.map +1 -1
- package/dist/worker/worker-portable.js +4 -13
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +2 -7
- package/dist/worker/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -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":";;;;;;;;UAKiBc;QACPP;kBACUS;EAFHF,gBAAAA,CAAAA,EAGME,WAHSD;EACtBR,WAAAA,CAAAA,EAAAA,OAAAA;EACUS,WAAAA,CAAAA,EAAAA,OAAAA;EACGA,eAAAA,CAAAA,EAGDR,cAHCQ,CAGcD,WAHdC,CAAAA,EAAAA;EAGcD,WAAAA,CAAAA,EACnBJ,WADmBI;;AACnBJ,UAEDM,gBAFCN,CAAAA,WAAAA,CAAAA,SAEqCO,IAFrCP,CAE0CG,eAF1CH,CAE0DI,WAF1DJ,CAAAA,EAAAA,eAAAA,CAAAA,CAAAA;EAAW,aAAA,EAGVK,WAHU;EAEZC,eAAAA,CAAAA,EAAAA,MAAgB;;AAA2BH,UAI3CK,WAJ2CL,CAAAA,WAAAA,CAAAA,SAIVR,eAJUQ,EAIOZ,6BAJPY,CAAAA,MAAAA,CAAAA,CAAAA;EACzCE,iBAAAA,CAAAA,EAAAA,OAAAA;EADoCE;;AAIvD;EAMyBR,kBAAAA,CAAAA,EAAAA,OAAAA;EACEA,kBAAAA,CAAAA,EADFA,kBACEA;EAOsBK,oBAAAA,CAAAA,EAPtBL,kBAOsBK;EAAfP;;;;;EAKsDQ,oBAAAA,CAAAA,EAAAA,OAAAA;EAChEA,gBAAAA,EAAAA,UAAAA,EANUR,cAMVQ,CANyBD,WAMzBC,CAAAA,CAAAA,EANwCA,WAMxCA,GAAAA,SAAAA;EAA4BD,mBAAAA,EAAAA,aAAAA,EAAAA,GAAAA,GALNf,oBAKMe,CAAAA,MAAAA,CAAAA,GAAAA,SAAAA,CAAAA,EALqCC,WAKrCD,GAAAA,IAAAA,GAAAA,SAAAA;EAALK;;;EApBiD,kBAAA,EAAA,aAAA,EAAA,GAAA,GAmBnDpB,oBAnBmD,CAAA,MAAA,CAAA,GAAA,SAAA,CAAA,EAmBRgB,WAnBQ,GAAA,IAAA,GAAA,SAAA;EAsBtFK,YAAAA,EAAAA,IAAAA,EAFcL,WAEQ,EAAAD,QAAAA,EAFeK,IAEfL,CAFoBA,WAEpB,CAAA,CAAA,EAAA,OAAA;;UAAtBM,sBAEqBN,CAAAA,WAAAA,CAAAA,CAAAA;EAAfP,OAAAA,EADHQ,WACGR;EAAc,UAAA,EAAdA,cAAc,CAACO,WAAD,CAAA;AAE9B;AACyBA,cADJK,IACIL,CAAAA,cAAAA,SAAAA,CAAAA,CAAAA;EAAZI,OAAAA,EAAAA,WAAAA,CAAYJ,WAAZI,CAAAA;EAKgBH,QAAAA,aAAAA;EACJM,QAAAA,kBAAAA;EACNC,OAAAA,qBAAAA,EAAAA,OAAAA;EACCP,SAAAA,IAAAA,EAAAA,MAAAA;EACQA,UAAAA,aAAAA,EAJCA,WAIDA,GAAAA,SAAAA;EACDA,UAAAA,SAAAA,EAJFM,UAIEN,GAAAA,SAAAA;EACGQ,UAAAA,GAAAA,EAJXD,cAIWC,GAAAA,SAAAA;EACMR,UAAAA,IAAAA,EAJhBA,WAIgBA,GAAAA,SAAAA;EACRA,UAAAA,YAAAA,EAJAA,WAIAA,GAAAA,SAAAA;EACDA,UAAAA,WAAAA,EAJAA,WAIAA,GAAAA,SAAAA;EAESP,UAAAA,cAAAA,EALNe,gBAKMf,GAAAA,SAAAA;EAEPO,UAAAA,oBAAAA,EANOA,WAMPA,GAAAA,SAAAA;EACDA,UAAAA,YAAAA,EANAA,WAMAA,GAAAA,SAAAA;EACEA,UAAAA,WAAAA,EANHA,WAMGA,GAAAA,SAAAA;EACWD,UAAAA,sBAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAAbV,UAAAA,oBAAAA,EALQI,mBAKRJ,GAAAA,SAAAA;EACCD,UAAAA,YAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EACKH,UAAAA,aAAAA,EALLe,WAKKf,GAAAA,SAAAA;EACgCc,UAAAA,YAAAA,EALtCC,WAKsCD,GAAAA,SAAAA;EAAvBM,UAAAA,cAAAA,EAJbL,WAIaK,GAAAA,SAAAA;EAAZI,UAAAA,YAAAA,EAHHpB,YAGGoB,CAHUV,WAGVU,CAAAA;EACeV,UAAAA,aAAAA,EAHjBX,aAGiBW;EAAfP,UAAAA,kBAAAA,EAFGP,kBAEHO,CAAAA,MAAAA,CAAAA;EACXD,UAAAA,eAAAA,EAFWkB,GAEXlB,CAAAA,MAAAA,EAFuBc,sBAEvBd,CAF8CQ,WAE9CR,CAAAA,CAAAA;EACOI,UAAAA,eAAAA,EAFIH,cAEJG,CAFmBI,WAEnBJ,CAAAA,EAAAA;EACWI,UAAAA,IAAAA,EAFlBR,YAEkBQ,GAAAA,SAAAA;EAAZI,UAAAA,WAAAA,EADCR,WACDQ,GAAAA,SAAAA;EAA0CN,WAAAA,CAAAA,OAAAA,CAAAA,EAA1CM,WAA0CN,CAA9BE,WAA8BF,CAAAA,EAAAA,aAAAA,CAAAA,EAAAA,iBAAAA,GAAAA,SAAAA,EAAAA,kBAAAA,CAAAA,EAAAA,OAAAA;EAGhCE,QAAAA,qBAAAA;EAAZI,QAAAA,CAAAA,CAAAA,EAAAA,IAAAA;EAEIP,UAAAA,CAAAA,OAAAA,EAFJO,WAEIP,CAFQG,WAERH,CAAAA,GAAAA,SAAAA,CAAAA,EAAAA,IAAAA;EAI2BG,QAAAA,YAAAA;EAAfP,YAAAA,CAAAA,SAAAA,EAJZI,UAIYJ,CAAAA,EAAAA,IAAAA;EACZL,cAAAA,EAAAA,GAAAA,GAAAA;IAEQY,UAAAA,EAAAA,MAAAA;EAAjBE,CAAAA,GAAAA,SAAAA;EACaV,kBAAAA,CAAAA,eAAAA,EAJQC,cAIRD,CAJuBQ,WAIvBR,CAAAA,EAAAA,CAAAA,EAAAA,IAAAA;EACnBmB,gBAAAA,CAAAA,KAAAA,EAJevB,iBAIfuB,GAAAA,IAAAA,CAAAA,EAAAA,IAAAA;EAAMC,OAAAA,CAAAA,CAAAA,EAAAA,IAAAA;EAAeC,OAAAA,CAAAA,KAAAA,EAFfX,gBAEeW,CAFEb,WAEFa,CAAAA,CAAAA,EAAAA,IAAAA;EAAaC,oBAAAA,CAAAA,IAAAA,CAAAA,EADftB,YACesB,GAAAA,SAAAA,CAAAA,EAAAA,MAAAA,EAAAA;EAAaC,MAAAA,CAAAA;IAAAA,IAAAA;IAAAA,aAAAA;IAAAA,WAAAA;IAAAA,WAAAA;IAAAA,gBAAAA;IAAAA,eAAAA;IAAAA;EAAAA,CAAAA,EAAkDhB,eAAlDgB,CAAkEf,WAAlEe,CAAAA,CAAAA,EAAAA,OAAAA;EAAkBC,QAAAA,cAAAA;EAAiBC,QAAAA,kBAAAA;EAA+BjB,QAAAA,mBAAAA;EAAhBD,QAAAA,kBAAAA;EAkBnDE,iBAAAA,CAAAA,MAAAA,EAAAA,MAAAA,CAAAA,EAAAA,OAAAA;EAA0BA,QAAAA,eAAAA;EAAcA,QAAAA,iBAAAA;EAAW,QAAA,mBAAA;;;;;;;;;;yDAAnDA,0BAA0BA,cAAcA"}
|
|
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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"}
|
package/dist/components/File.js
CHANGED
|
@@ -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.
|
|
85
|
-
|
|
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
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
this.
|
|
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 (
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
this.headerPrefix =
|
|
541
|
-
this.
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
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
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
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
|
-
|
|
589
|
-
|
|
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
|