@thxgg/steward 0.1.25 → 0.1.26

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 (187) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{Bc2V3wPK.js → B2ow85x_.js} +2 -2
  3. package/.output/public/_nuxt/{U78rMDmo.js → B6CbIr08.js} +1 -1
  4. package/.output/public/_nuxt/{BknRrWsw.js → BLQAF8wp.js} +1 -1
  5. package/.output/public/_nuxt/BXuwtOqb.js +1 -0
  6. package/.output/public/_nuxt/CAMiEhze.js +1 -0
  7. package/.output/public/_nuxt/{BRQ9Cxaw.js → CIBCqZF5.js} +1 -1
  8. package/.output/public/_nuxt/Ce0-nlm9.js +1 -0
  9. package/.output/public/_nuxt/{T11EuTtn.js → ConzneVY.js} +1 -1
  10. package/.output/public/_nuxt/D0qxz_Pn.js +1310 -0
  11. package/.output/public/_nuxt/D3PDtLSF.js +3 -0
  12. package/.output/public/_nuxt/{C73kduX-.js → DdKC0UAK.js} +1 -1
  13. package/.output/public/_nuxt/Detail.BGdvrJGh.css +1 -0
  14. package/.output/public/_nuxt/{C53_p0K1.js → Dkh9ic1y.js} +1 -1
  15. package/.output/public/_nuxt/LEjJTR7-.js +1 -0
  16. package/.output/public/_nuxt/{BTmXUZ_s.js → UqZfMfrZ.js} +1 -1
  17. package/.output/public/_nuxt/builds/latest.json +1 -1
  18. package/.output/public/_nuxt/builds/meta/25438e34-19a2-421d-aede-53fd18f1ccd4.json +1 -0
  19. package/.output/public/_nuxt/dckrK0oj.js +1 -0
  20. package/.output/public/_nuxt/entry.DT4p6_uW.css +1 -0
  21. package/.output/public/_nuxt/pIWeVmPw.js +1 -0
  22. package/.output/public/_nuxt/xrHaPo1U.js +60 -0
  23. package/.output/server/chunks/build/{Detail-DMMUwTWr.mjs → Detail-rpcemNXe.mjs} +674 -481
  24. package/.output/server/chunks/build/Detail-rpcemNXe.mjs.map +1 -0
  25. package/.output/server/chunks/build/DiffViewer-styles.B1FB5NJj.mjs +8 -0
  26. package/.output/server/chunks/build/DiffViewer-styles.B1FB5NJj.mjs.map +1 -0
  27. package/.output/server/chunks/build/{_prd_-ByugK4Yi.mjs → _prd_-CeibvZOH.mjs} +67 -233
  28. package/.output/server/chunks/build/_prd_-CeibvZOH.mjs.map +1 -0
  29. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  30. package/.output/server/chunks/build/{default-BKKgG7HJ.mjs → default-iq8SaDDN.mjs} +3 -3
  31. package/.output/server/chunks/build/default-iq8SaDDN.mjs.map +1 -0
  32. package/.output/server/chunks/build/{error-404-Bf6kdO80.mjs → error-404-DFale9A5.mjs} +2 -2
  33. package/.output/server/chunks/build/error-404-DFale9A5.mjs.map +1 -0
  34. package/.output/server/chunks/build/{index-DE1tjHAd.mjs → index-Po00RvHm.mjs} +2 -2
  35. package/.output/server/chunks/build/index-Po00RvHm.mjs.map +1 -0
  36. package/.output/server/chunks/build/{nuxt-link-SvT1nf8Z.mjs → nuxt-link-B4oWFn7n.mjs} +2 -2
  37. package/.output/server/chunks/build/nuxt-link-B4oWFn7n.mjs.map +1 -0
  38. package/.output/server/chunks/build/{repo-graph-DzT45gSB.mjs → repo-graph-BQVFpA-w.mjs} +5 -4
  39. package/.output/server/chunks/build/repo-graph-BQVFpA-w.mjs.map +1 -0
  40. package/.output/server/chunks/build/server.mjs +7 -7
  41. package/.output/server/chunks/build/styles.mjs +4 -5
  42. package/.output/server/chunks/build/{usePrd-hXZOmvAv.mjs → usePrd-Bb6jlnNZ.mjs} +2 -2
  43. package/.output/server/chunks/build/usePrd-Bb6jlnNZ.mjs.map +1 -0
  44. package/.output/server/chunks/nitro/nitro.mjs +663 -660
  45. package/.output/server/node_modules/@pierre/diffs/dist/components/File.js +324 -0
  46. package/.output/server/node_modules/@pierre/diffs/dist/components/FileDiff.js +395 -0
  47. package/.output/server/node_modules/@pierre/diffs/dist/components/FileStream.js +161 -0
  48. package/.output/server/node_modules/@pierre/diffs/dist/components/web-components.js +25 -0
  49. package/.output/server/node_modules/@pierre/diffs/dist/constants.js +23 -0
  50. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/areLanguagesAttached.js +11 -0
  51. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/attachResolvedLanguages.js +20 -0
  52. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/cleanUpResolvedLanguages.js +11 -0
  53. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/constants.js +8 -0
  54. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedLanguages.js +16 -0
  55. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/getResolvedOrResolveLanguage.js +11 -0
  56. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/hasResolvedLanguages.js +11 -0
  57. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguage.js +30 -0
  58. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/languages/resolveLanguages.js +25 -0
  59. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/shared_highlighter.js +71 -0
  60. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/areThemesAttached.js +12 -0
  61. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/attachResolvedThemes.js +24 -0
  62. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/cleanUpResolvedThemes.js +11 -0
  63. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/constants.js +9 -0
  64. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedOrResolveTheme.js +11 -0
  65. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/getResolvedThemes.js +16 -0
  66. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/hasResolvedThemes.js +11 -0
  67. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/registerCustomCSSVariableTheme.js +18 -0
  68. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/registerCustomTheme.js +14 -0
  69. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/resolveTheme.js +35 -0
  70. package/.output/server/node_modules/@pierre/diffs/dist/highlighter/themes/resolveThemes.js +21 -0
  71. package/.output/server/node_modules/@pierre/diffs/dist/index.js +84 -0
  72. package/.output/server/node_modules/@pierre/diffs/dist/managers/LineSelectionManager.js +282 -0
  73. package/.output/server/node_modules/@pierre/diffs/dist/managers/MouseEventManager.js +244 -0
  74. package/.output/server/node_modules/@pierre/diffs/dist/managers/ResizeManager.js +132 -0
  75. package/.output/server/node_modules/@pierre/diffs/dist/managers/ScrollSyncManager.js +62 -0
  76. package/.output/server/node_modules/@pierre/diffs/dist/managers/UniversalRenderingManager.js +32 -0
  77. package/.output/server/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js +655 -0
  78. package/.output/server/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js +243 -0
  79. package/.output/server/node_modules/@pierre/diffs/dist/shiki-stream/stream.js +32 -0
  80. package/.output/server/node_modules/@pierre/diffs/dist/shiki-stream/tokenizer.js +71 -0
  81. package/.output/server/node_modules/@pierre/diffs/dist/sprite.js +55 -0
  82. package/.output/server/node_modules/@pierre/diffs/dist/style.js +6 -0
  83. package/.output/server/node_modules/@pierre/diffs/dist/themes/pierre-dark.js +1328 -0
  84. package/.output/server/node_modules/@pierre/diffs/dist/themes/pierre-light.js +1328 -0
  85. package/.output/server/node_modules/@pierre/diffs/dist/utils/areFilesEqual.js +8 -0
  86. package/.output/server/node_modules/@pierre/diffs/dist/utils/areObjectsEqual.js +18 -0
  87. package/.output/server/node_modules/@pierre/diffs/dist/utils/areOptionsEqual.js +12 -0
  88. package/.output/server/node_modules/@pierre/diffs/dist/utils/areSelectionsEqual.js +8 -0
  89. package/.output/server/node_modules/@pierre/diffs/dist/utils/areThemesEqual.js +9 -0
  90. package/.output/server/node_modules/@pierre/diffs/dist/utils/cleanLastNewline.js +8 -0
  91. package/.output/server/node_modules/@pierre/diffs/dist/utils/createAnnotationElement.js +21 -0
  92. package/.output/server/node_modules/@pierre/diffs/dist/utils/createAnnotationWrapperNode.js +12 -0
  93. package/.output/server/node_modules/@pierre/diffs/dist/utils/createCodeNode.js +12 -0
  94. package/.output/server/node_modules/@pierre/diffs/dist/utils/createEmptyRowBuffer.js +16 -0
  95. package/.output/server/node_modules/@pierre/diffs/dist/utils/createFileHeaderElement.js +84 -0
  96. package/.output/server/node_modules/@pierre/diffs/dist/utils/createHoverContentNode.js +15 -0
  97. package/.output/server/node_modules/@pierre/diffs/dist/utils/createNoNewlineElement.js +24 -0
  98. package/.output/server/node_modules/@pierre/diffs/dist/utils/createPreElement.js +28 -0
  99. package/.output/server/node_modules/@pierre/diffs/dist/utils/createRowNodes.js +20 -0
  100. package/.output/server/node_modules/@pierre/diffs/dist/utils/createSeparator.js +69 -0
  101. package/.output/server/node_modules/@pierre/diffs/dist/utils/createSpanNodeFromToken.js +13 -0
  102. package/.output/server/node_modules/@pierre/diffs/dist/utils/createStyleElement.js +19 -0
  103. package/.output/server/node_modules/@pierre/diffs/dist/utils/createTransformerWithState.js +56 -0
  104. package/.output/server/node_modules/@pierre/diffs/dist/utils/createUnsafeCSSStyleNode.js +12 -0
  105. package/.output/server/node_modules/@pierre/diffs/dist/utils/cssWrappers.js +21 -0
  106. package/.output/server/node_modules/@pierre/diffs/dist/utils/diffAcceptRejectHunk.js +82 -0
  107. package/.output/server/node_modules/@pierre/diffs/dist/utils/formatCSSVariablePrefix.js +8 -0
  108. package/.output/server/node_modules/@pierre/diffs/dist/utils/getFiletypeFromFileName.js +343 -0
  109. package/.output/server/node_modules/@pierre/diffs/dist/utils/getHighlighterOptions.js +13 -0
  110. package/.output/server/node_modules/@pierre/diffs/dist/utils/getHighlighterThemeStyles.js +40 -0
  111. package/.output/server/node_modules/@pierre/diffs/dist/utils/getHunkSeparatorSlotName.js +8 -0
  112. package/.output/server/node_modules/@pierre/diffs/dist/utils/getIconForType.js +15 -0
  113. package/.output/server/node_modules/@pierre/diffs/dist/utils/getLineAnnotationName.js +8 -0
  114. package/.output/server/node_modules/@pierre/diffs/dist/utils/getLineEndingType.js +11 -0
  115. package/.output/server/node_modules/@pierre/diffs/dist/utils/getLineNodes.js +15 -0
  116. package/.output/server/node_modules/@pierre/diffs/dist/utils/getSingularPatch.js +20 -0
  117. package/.output/server/node_modules/@pierre/diffs/dist/utils/getThemes.js +16 -0
  118. package/.output/server/node_modules/@pierre/diffs/dist/utils/getTotalLineCountFromHunks.js +10 -0
  119. package/.output/server/node_modules/@pierre/diffs/dist/utils/hast_utils.js +42 -0
  120. package/.output/server/node_modules/@pierre/diffs/dist/utils/isWorkerContext.js +8 -0
  121. package/.output/server/node_modules/@pierre/diffs/dist/utils/parseDiffDecorations.js +34 -0
  122. package/.output/server/node_modules/@pierre/diffs/dist/utils/parseDiffFromFile.js +23 -0
  123. package/.output/server/node_modules/@pierre/diffs/dist/utils/parseLineType.js +17 -0
  124. package/.output/server/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js +211 -0
  125. package/.output/server/node_modules/@pierre/diffs/dist/utils/prerenderHTMLIfNecessary.js +10 -0
  126. package/.output/server/node_modules/@pierre/diffs/dist/utils/processLine.js +42 -0
  127. package/.output/server/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.js +339 -0
  128. package/.output/server/node_modules/@pierre/diffs/dist/utils/renderFileWithHighlighter.js +52 -0
  129. package/.output/server/node_modules/@pierre/diffs/dist/utils/setLanguageOverride.js +11 -0
  130. package/.output/server/node_modules/@pierre/diffs/dist/utils/setWrapperNodeProps.js +29 -0
  131. package/.output/server/node_modules/@pierre/diffs/package.json +89 -0
  132. package/.output/server/node_modules/@shikijs/transformers/dist/index.mjs +831 -0
  133. package/.output/server/node_modules/@shikijs/transformers/package.json +37 -0
  134. package/.output/server/node_modules/diff/libesm/convert/dmp.js +21 -0
  135. package/.output/server/node_modules/diff/libesm/convert/xml.js +31 -0
  136. package/.output/server/node_modules/diff/libesm/diff/array.js +16 -0
  137. package/.output/server/node_modules/diff/libesm/diff/base.js +253 -0
  138. package/.output/server/node_modules/diff/libesm/diff/character.js +7 -0
  139. package/.output/server/node_modules/diff/libesm/diff/css.js +10 -0
  140. package/.output/server/node_modules/diff/libesm/diff/json.js +78 -0
  141. package/.output/server/node_modules/diff/libesm/diff/line.js +65 -0
  142. package/.output/server/node_modules/diff/libesm/diff/sentence.js +43 -0
  143. package/.output/server/node_modules/diff/libesm/diff/word.js +296 -0
  144. package/.output/server/node_modules/diff/libesm/index.js +30 -0
  145. package/.output/server/node_modules/diff/libesm/package.json +1 -0
  146. package/.output/server/node_modules/diff/libesm/patch/apply.js +257 -0
  147. package/.output/server/node_modules/diff/libesm/patch/create.js +228 -0
  148. package/.output/server/node_modules/diff/libesm/patch/line-endings.js +44 -0
  149. package/.output/server/node_modules/diff/libesm/patch/parse.js +147 -0
  150. package/.output/server/node_modules/diff/libesm/patch/reverse.js +23 -0
  151. package/.output/server/node_modules/diff/libesm/util/distance-iterator.js +37 -0
  152. package/.output/server/node_modules/diff/libesm/util/params.js +14 -0
  153. package/.output/server/node_modules/diff/libesm/util/string.js +128 -0
  154. package/.output/server/node_modules/diff/package.json +132 -0
  155. package/.output/server/package.json +4 -1
  156. package/dist/server/utils/git.js +8 -6
  157. package/package.json +2 -1
  158. package/.output/public/_nuxt/6tINjQEd.js +0 -141
  159. package/.output/public/_nuxt/B2mIQf5X.js +0 -3
  160. package/.output/public/_nuxt/C0BBSDJ7.js +0 -1
  161. package/.output/public/_nuxt/CN46Bgts.js +0 -1
  162. package/.output/public/_nuxt/CTJgb0zb.js +0 -1
  163. package/.output/public/_nuxt/Cce168lk.js +0 -30
  164. package/.output/public/_nuxt/CyVSeLw5.js +0 -1
  165. package/.output/public/_nuxt/Detail.CYc96mGf.css +0 -1
  166. package/.output/public/_nuxt/ZNypZshD.js +0 -13
  167. package/.output/public/_nuxt/builds/meta/9ce7f1bc-d5e2-47bf-8026-f4910c257b2e.json +0 -1
  168. package/.output/public/_nuxt/entry.Bw0CE6Iz.css +0 -1
  169. package/.output/public/_nuxt/pYJYAY-W.js +0 -60
  170. package/.output/server/chunks/build/Detail-DMMUwTWr.mjs.map +0 -1
  171. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-d2dQvARr.mjs +0 -4
  172. package/.output/server/chunks/build/DiffViewer-styles-1.mjs-d2dQvARr.mjs.map +0 -1
  173. package/.output/server/chunks/build/DiffViewer-styles-2.mjs-X6QKNjM0.mjs +0 -4
  174. package/.output/server/chunks/build/DiffViewer-styles-2.mjs-X6QKNjM0.mjs.map +0 -1
  175. package/.output/server/chunks/build/DiffViewer-styles.0AbHFl6N.mjs +0 -8
  176. package/.output/server/chunks/build/DiffViewer-styles.0AbHFl6N.mjs.map +0 -1
  177. package/.output/server/chunks/build/DiffViewer-styles.BDwAqkTk.mjs +0 -8
  178. package/.output/server/chunks/build/DiffViewer-styles.BDwAqkTk.mjs.map +0 -1
  179. package/.output/server/chunks/build/DiffViewer-styles.DRJh5Ui4.mjs +0 -10
  180. package/.output/server/chunks/build/DiffViewer-styles.DRJh5Ui4.mjs.map +0 -1
  181. package/.output/server/chunks/build/_prd_-ByugK4Yi.mjs.map +0 -1
  182. package/.output/server/chunks/build/default-BKKgG7HJ.mjs.map +0 -1
  183. package/.output/server/chunks/build/error-404-Bf6kdO80.mjs.map +0 -1
  184. package/.output/server/chunks/build/index-DE1tjHAd.mjs.map +0 -1
  185. package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs.map +0 -1
  186. package/.output/server/chunks/build/repo-graph-DzT45gSB.mjs.map +0 -1
  187. package/.output/server/chunks/build/usePrd-hXZOmvAv.mjs.map +0 -1
@@ -0,0 +1,324 @@
1
+ import { DEFAULT_THEMES, DIFFS_TAG_NAME, HEADER_METADATA_SLOT_ID, UNSAFE_CSS_ATTRIBUTE } from "../constants.js";
2
+ import { LineSelectionManager, pluckLineSelectionOptions } from "../managers/LineSelectionManager.js";
3
+ import { MouseEventManager, pluckMouseEventOptions } from "../managers/MouseEventManager.js";
4
+ import { ResizeManager } from "../managers/ResizeManager.js";
5
+ import { getLineAnnotationName } from "../utils/getLineAnnotationName.js";
6
+ import { FileRenderer } from "../renderers/FileRenderer.js";
7
+ import { SVGSpriteSheet } from "../sprite.js";
8
+ import { areFilesEqual } from "../utils/areFilesEqual.js";
9
+ import { createAnnotationWrapperNode } from "../utils/createAnnotationWrapperNode.js";
10
+ import { createCodeNode } from "../utils/createCodeNode.js";
11
+ import { createHoverContentNode } from "../utils/createHoverContentNode.js";
12
+ import { createUnsafeCSSStyleNode } from "../utils/createUnsafeCSSStyleNode.js";
13
+ import { wrapUnsafeCSS } from "../utils/cssWrappers.js";
14
+ import { prerenderHTMLIfNecessary } from "../utils/prerenderHTMLIfNecessary.js";
15
+ import { setPreNodeProperties } from "../utils/setWrapperNodeProps.js";
16
+ import { DiffsContainerLoaded } from "./web-components.js";
17
+ import { toHtml } from "hast-util-to-html";
18
+
19
+ //#region src/components/File.ts
20
+ let instanceId = -1;
21
+ var File = class {
22
+ static LoadedCustomComponent = DiffsContainerLoaded;
23
+ __id = ++instanceId;
24
+ fileContainer;
25
+ spriteSVG;
26
+ pre;
27
+ code;
28
+ unsafeCSSStyle;
29
+ hoverContent;
30
+ errorWrapper;
31
+ headerElement;
32
+ headerMetadata;
33
+ fileRenderer;
34
+ resizeManager;
35
+ mouseEventManager;
36
+ lineSelectionManager;
37
+ annotationElements = [];
38
+ lineAnnotations = [];
39
+ file;
40
+ constructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {
41
+ this.options = options;
42
+ this.workerManager = workerManager;
43
+ this.isContainerManaged = isContainerManaged;
44
+ this.fileRenderer = new FileRenderer(options, this.handleHighlightRender, this.workerManager);
45
+ this.resizeManager = new ResizeManager();
46
+ this.mouseEventManager = new MouseEventManager("file", pluckMouseEventOptions(options));
47
+ this.lineSelectionManager = new LineSelectionManager(pluckLineSelectionOptions(options));
48
+ this.workerManager?.subscribeToThemeChanges(this);
49
+ }
50
+ handleHighlightRender = () => {
51
+ this.rerender();
52
+ };
53
+ rerender() {
54
+ if (this.file == null) return;
55
+ this.render({
56
+ file: this.file,
57
+ forceRender: true
58
+ });
59
+ }
60
+ setOptions(options) {
61
+ if (options == null) return;
62
+ this.options = options;
63
+ this.mouseEventManager.setOptions(pluckMouseEventOptions(options));
64
+ this.lineSelectionManager.setOptions(pluckLineSelectionOptions(options));
65
+ }
66
+ mergeOptions(options) {
67
+ this.options = {
68
+ ...this.options,
69
+ ...options
70
+ };
71
+ }
72
+ setThemeType(themeType) {
73
+ if ((this.options.themeType ?? "system") === themeType) return;
74
+ this.mergeOptions({ themeType });
75
+ this.fileRenderer.setThemeType(themeType);
76
+ if (this.headerElement != null) if (themeType === "system") delete this.headerElement.dataset.themeType;
77
+ else this.headerElement.dataset.themeType = themeType;
78
+ if (this.pre != null) switch (themeType) {
79
+ case "system":
80
+ delete this.pre.dataset.themeType;
81
+ break;
82
+ case "light":
83
+ case "dark":
84
+ this.pre.dataset.themeType = themeType;
85
+ break;
86
+ }
87
+ }
88
+ getHoveredLine = () => {
89
+ return this.mouseEventManager.getHoveredLine();
90
+ };
91
+ setLineAnnotations(lineAnnotations) {
92
+ this.lineAnnotations = lineAnnotations;
93
+ }
94
+ setSelectedLines(range) {
95
+ this.lineSelectionManager.setSelection(range);
96
+ }
97
+ cleanUp() {
98
+ this.fileRenderer.cleanUp();
99
+ this.resizeManager.cleanUp();
100
+ this.mouseEventManager.cleanUp();
101
+ this.lineSelectionManager.cleanUp();
102
+ this.workerManager?.unsubscribeToThemeChanges(this);
103
+ this.workerManager = void 0;
104
+ this.file = void 0;
105
+ if (!this.isContainerManaged) this.fileContainer?.parentNode?.removeChild(this.fileContainer);
106
+ if (this.fileContainer?.shadowRoot != null) this.fileContainer.shadowRoot.innerHTML = "";
107
+ this.fileContainer = void 0;
108
+ this.pre = void 0;
109
+ this.headerElement = void 0;
110
+ this.errorWrapper = void 0;
111
+ this.unsafeCSSStyle = void 0;
112
+ }
113
+ hydrate(props) {
114
+ const { fileContainer, prerenderedHTML } = props;
115
+ prerenderHTMLIfNecessary(fileContainer, prerenderedHTML);
116
+ for (const element of Array.from(fileContainer.shadowRoot?.children ?? [])) {
117
+ if (element instanceof SVGElement) {
118
+ this.spriteSVG = element;
119
+ continue;
120
+ }
121
+ if (!(element instanceof HTMLElement)) continue;
122
+ if (element instanceof HTMLPreElement) {
123
+ this.pre = element;
124
+ continue;
125
+ }
126
+ if (element instanceof HTMLStyleElement && element.hasAttribute(UNSAFE_CSS_ATTRIBUTE)) {
127
+ this.unsafeCSSStyle = element;
128
+ continue;
129
+ }
130
+ if ("diffsHeader" in element.dataset) {
131
+ this.headerElement = element;
132
+ continue;
133
+ }
134
+ }
135
+ if (this.pre == null) this.render(props);
136
+ else {
137
+ const { file, lineAnnotations } = props;
138
+ this.fileContainer = fileContainer;
139
+ delete this.pre.dataset.dehydrated;
140
+ this.lineAnnotations = lineAnnotations ?? this.lineAnnotations;
141
+ this.file = file;
142
+ this.fileRenderer.hydrate(file);
143
+ this.renderAnnotations();
144
+ this.renderHoverUtility();
145
+ this.injectUnsafeCSS();
146
+ this.mouseEventManager.setup(this.pre);
147
+ this.lineSelectionManager.setup(this.pre);
148
+ if ((this.options.overflow ?? "scroll") === "scroll") this.resizeManager.setup(this.pre);
149
+ }
150
+ }
151
+ render({ file, fileContainer, forceRender = false, containerWrapper, lineAnnotations }) {
152
+ const annotationsChanged = lineAnnotations != null && (lineAnnotations.length > 0 || this.lineAnnotations.length > 0) ? lineAnnotations !== this.lineAnnotations : false;
153
+ if (!forceRender && areFilesEqual(this.file, file) && !annotationsChanged) return;
154
+ this.file = file;
155
+ this.fileRenderer.setOptions(this.options);
156
+ if (lineAnnotations != null) this.setLineAnnotations(lineAnnotations);
157
+ this.fileRenderer.setLineAnnotations(this.lineAnnotations);
158
+ const { disableFileHeader = false, disableErrorHandling = false } = this.options;
159
+ if (disableFileHeader) {
160
+ if (this.headerElement != null) {
161
+ this.headerElement.parentNode?.removeChild(this.headerElement);
162
+ this.headerElement = void 0;
163
+ }
164
+ }
165
+ fileContainer = this.getOrCreateFileContainerNode(fileContainer, containerWrapper);
166
+ try {
167
+ const fileResult = this.fileRenderer.renderFile(file);
168
+ if (fileResult == null) {
169
+ if (this.workerManager != null && !this.workerManager.isInitialized()) this.workerManager.initialize().then(() => this.rerender());
170
+ return;
171
+ }
172
+ if (fileResult.headerAST != null) this.applyHeaderToDOM(fileResult.headerAST, fileContainer);
173
+ const pre = this.getOrCreatePreNode(fileContainer);
174
+ this.applyHunksToDOM(fileResult, pre);
175
+ this.renderAnnotations();
176
+ this.renderHoverUtility();
177
+ } catch (error) {
178
+ if (disableErrorHandling) throw error;
179
+ console.error(error);
180
+ if (error instanceof Error) this.applyErrorToDOM(error, fileContainer);
181
+ }
182
+ }
183
+ renderAnnotations() {
184
+ if (this.isContainerManaged || this.fileContainer == null) return;
185
+ for (const element of this.annotationElements) element.parentNode?.removeChild(element);
186
+ this.annotationElements.length = 0;
187
+ const { renderAnnotation } = this.options;
188
+ if (renderAnnotation != null && this.lineAnnotations.length > 0) for (const annotation of this.lineAnnotations) {
189
+ const content = renderAnnotation(annotation);
190
+ if (content == null) continue;
191
+ const el = createAnnotationWrapperNode(getLineAnnotationName(annotation));
192
+ el.appendChild(content);
193
+ this.annotationElements.push(el);
194
+ this.fileContainer.appendChild(el);
195
+ }
196
+ }
197
+ renderHoverUtility() {
198
+ const { renderHoverUtility } = this.options;
199
+ if (this.fileContainer == null || renderHoverUtility == null) return;
200
+ if (this.hoverContent == null) {
201
+ this.hoverContent = createHoverContentNode();
202
+ this.fileContainer.appendChild(this.hoverContent);
203
+ }
204
+ const element = renderHoverUtility(this.mouseEventManager.getHoveredLine);
205
+ this.hoverContent.innerHTML = "";
206
+ if (element != null) this.hoverContent.appendChild(element);
207
+ }
208
+ injectUnsafeCSS() {
209
+ if (this.fileContainer?.shadowRoot == null) return;
210
+ const { unsafeCSS } = this.options;
211
+ if (unsafeCSS == null || unsafeCSS === "") {
212
+ if (this.unsafeCSSStyle != null) {
213
+ this.unsafeCSSStyle.parentNode?.removeChild(this.unsafeCSSStyle);
214
+ this.unsafeCSSStyle = void 0;
215
+ }
216
+ return;
217
+ }
218
+ if (this.unsafeCSSStyle == null) {
219
+ this.unsafeCSSStyle = createUnsafeCSSStyleNode();
220
+ this.fileContainer.shadowRoot.appendChild(this.unsafeCSSStyle);
221
+ }
222
+ this.unsafeCSSStyle.innerText = wrapUnsafeCSS(unsafeCSS);
223
+ }
224
+ applyHunksToDOM(result, pre) {
225
+ this.cleanupErrorWrapper();
226
+ this.applyPreNodeAttributes(pre, result);
227
+ pre.innerHTML = "";
228
+ this.code = createCodeNode();
229
+ this.code.innerHTML = this.fileRenderer.renderPartialHTML(result.codeAST);
230
+ pre.appendChild(this.code);
231
+ this.injectUnsafeCSS();
232
+ this.mouseEventManager.setup(pre);
233
+ this.lineSelectionManager.setup(pre);
234
+ this.lineSelectionManager.setDirty();
235
+ if ((this.options.overflow ?? "scroll") === "scroll") this.resizeManager.setup(pre);
236
+ else this.resizeManager.cleanUp();
237
+ }
238
+ applyHeaderToDOM(headerAST, container) {
239
+ const { file } = this;
240
+ if (file == null) return;
241
+ this.cleanupErrorWrapper();
242
+ const tempDiv = document.createElement("div");
243
+ tempDiv.innerHTML = toHtml(headerAST);
244
+ const newHeader = tempDiv.firstElementChild;
245
+ if (!(newHeader instanceof HTMLElement)) return;
246
+ if (this.headerElement != null) container.shadowRoot?.replaceChild(newHeader, this.headerElement);
247
+ else container.shadowRoot?.prepend(newHeader);
248
+ this.headerElement = newHeader;
249
+ if (this.isContainerManaged) return;
250
+ const { renderCustomMetadata } = this.options;
251
+ if (this.headerMetadata != null) this.headerMetadata.parentNode?.removeChild(this.headerMetadata);
252
+ const content = renderCustomMetadata?.(file) ?? void 0;
253
+ if (content != null) {
254
+ this.headerMetadata = document.createElement("div");
255
+ this.headerMetadata.slot = HEADER_METADATA_SLOT_ID;
256
+ if (content instanceof Element) this.headerMetadata.appendChild(content);
257
+ else this.headerMetadata.innerText = `${content}`;
258
+ container.appendChild(this.headerMetadata);
259
+ }
260
+ }
261
+ getOrCreateFileContainerNode(fileContainer, parentNode) {
262
+ this.fileContainer = fileContainer ?? this.fileContainer ?? document.createElement(DIFFS_TAG_NAME);
263
+ if (parentNode != null && this.fileContainer.parentNode !== parentNode) parentNode.appendChild(this.fileContainer);
264
+ if (this.spriteSVG == null) {
265
+ const fragment = document.createElement("div");
266
+ fragment.innerHTML = SVGSpriteSheet;
267
+ const firstChild = fragment.firstChild;
268
+ if (firstChild instanceof SVGElement) {
269
+ this.spriteSVG = firstChild;
270
+ this.fileContainer.shadowRoot?.appendChild(this.spriteSVG);
271
+ }
272
+ }
273
+ return this.fileContainer;
274
+ }
275
+ getOrCreatePreNode(container) {
276
+ if (this.pre == null) {
277
+ this.pre = document.createElement("pre");
278
+ container.shadowRoot?.appendChild(this.pre);
279
+ } else if (this.pre.parentNode !== container) container.shadowRoot?.appendChild(this.pre);
280
+ return this.pre;
281
+ }
282
+ applyPreNodeAttributes(pre, { totalLines, themeStyles, baseThemeType }) {
283
+ const { overflow = "scroll", themeType = "system", disableLineNumbers = false } = this.options;
284
+ setPreNodeProperties({
285
+ pre,
286
+ split: false,
287
+ themeStyles,
288
+ overflow,
289
+ disableLineNumbers,
290
+ themeType: baseThemeType ?? themeType,
291
+ diffIndicators: "none",
292
+ disableBackground: true,
293
+ totalLines
294
+ });
295
+ }
296
+ applyErrorToDOM(error, container) {
297
+ this.cleanupErrorWrapper();
298
+ const pre = this.getOrCreatePreNode(container);
299
+ pre.innerHTML = "";
300
+ pre.parentNode?.removeChild(pre);
301
+ this.pre = void 0;
302
+ const shadowRoot = container.shadowRoot ?? container.attachShadow({ mode: "open" });
303
+ this.errorWrapper ??= document.createElement("div");
304
+ this.errorWrapper.dataset.errorWrapper = "";
305
+ this.errorWrapper.innerHTML = "";
306
+ shadowRoot.appendChild(this.errorWrapper);
307
+ const errorMessage = document.createElement("div");
308
+ errorMessage.dataset.errorMessage = "";
309
+ errorMessage.innerText = error.message;
310
+ this.errorWrapper.appendChild(errorMessage);
311
+ const errorStack = document.createElement("pre");
312
+ errorStack.dataset.errorStack = "";
313
+ errorStack.innerText = error.stack ?? "No Error Stack";
314
+ this.errorWrapper.appendChild(errorStack);
315
+ }
316
+ cleanupErrorWrapper() {
317
+ this.errorWrapper?.parentNode?.removeChild(this.errorWrapper);
318
+ this.errorWrapper = void 0;
319
+ }
320
+ };
321
+
322
+ //#endregion
323
+ export { File };
324
+ //# sourceMappingURL=File.js.map