@pierre/diffs 1.1.0-beta.9 → 1.1.0

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 (218) hide show
  1. package/README.md +7 -18
  2. package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +1 -1
  3. package/dist/components/AdvancedVirtualizedFileDiff.js +2 -7
  4. package/dist/components/AdvancedVirtualizedFileDiff.js.map +1 -1
  5. package/dist/components/AdvancedVirtualizer.js +1 -1
  6. package/dist/components/AdvancedVirtualizer.js.map +1 -1
  7. package/dist/components/File.d.ts +17 -7
  8. package/dist/components/File.d.ts.map +1 -1
  9. package/dist/components/File.js +111 -54
  10. package/dist/components/File.js.map +1 -1
  11. package/dist/components/FileDiff.d.ts +32 -14
  12. package/dist/components/FileDiff.d.ts.map +1 -1
  13. package/dist/components/FileDiff.js +156 -81
  14. package/dist/components/FileDiff.js.map +1 -1
  15. package/dist/components/UnresolvedFile.d.ts +60 -0
  16. package/dist/components/UnresolvedFile.d.ts.map +1 -0
  17. package/dist/components/UnresolvedFile.js +280 -0
  18. package/dist/components/UnresolvedFile.js.map +1 -0
  19. package/dist/components/VirtualizedFile.js +8 -5
  20. package/dist/components/VirtualizedFile.js.map +1 -1
  21. package/dist/components/VirtualizedFileDiff.d.ts +1 -1
  22. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  23. package/dist/components/VirtualizedFileDiff.js +15 -11
  24. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  25. package/dist/components/Virtualizer.d.ts +3 -1
  26. package/dist/components/Virtualizer.d.ts.map +1 -1
  27. package/dist/components/Virtualizer.js +50 -24
  28. package/dist/components/Virtualizer.js.map +1 -1
  29. package/dist/constants.d.ts +3 -1
  30. package/dist/constants.d.ts.map +1 -1
  31. package/dist/constants.js +8 -1
  32. package/dist/constants.js.map +1 -1
  33. package/dist/highlighter/shared_highlighter.d.ts +4 -2
  34. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  35. package/dist/highlighter/shared_highlighter.js +15 -7
  36. package/dist/highlighter/shared_highlighter.js.map +1 -1
  37. package/dist/index.d.ts +9 -7
  38. package/dist/index.js +8 -6
  39. package/dist/managers/InteractionManager.d.ts +146 -0
  40. package/dist/managers/InteractionManager.d.ts.map +1 -0
  41. package/dist/managers/InteractionManager.js +813 -0
  42. package/dist/managers/InteractionManager.js.map +1 -0
  43. package/dist/managers/ResizeManager.d.ts +0 -2
  44. package/dist/managers/ResizeManager.d.ts.map +1 -1
  45. package/dist/managers/ResizeManager.js +43 -32
  46. package/dist/managers/ResizeManager.js.map +1 -1
  47. package/dist/react/File.d.ts +2 -0
  48. package/dist/react/File.d.ts.map +1 -1
  49. package/dist/react/File.js +3 -1
  50. package/dist/react/File.js.map +1 -1
  51. package/dist/react/FileDiff.d.ts +2 -0
  52. package/dist/react/FileDiff.d.ts.map +1 -1
  53. package/dist/react/FileDiff.js +3 -1
  54. package/dist/react/FileDiff.js.map +1 -1
  55. package/dist/react/MultiFileDiff.d.ts +2 -0
  56. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  57. package/dist/react/MultiFileDiff.js +3 -1
  58. package/dist/react/MultiFileDiff.js.map +1 -1
  59. package/dist/react/PatchDiff.d.ts +2 -0
  60. package/dist/react/PatchDiff.d.ts.map +1 -1
  61. package/dist/react/PatchDiff.js +3 -1
  62. package/dist/react/PatchDiff.js.map +1 -1
  63. package/dist/react/UnresolvedFile.d.ts +36 -0
  64. package/dist/react/UnresolvedFile.d.ts.map +1 -0
  65. package/dist/react/UnresolvedFile.js +42 -0
  66. package/dist/react/UnresolvedFile.js.map +1 -0
  67. package/dist/react/constants.d.ts +3 -2
  68. package/dist/react/constants.d.ts.map +1 -1
  69. package/dist/react/constants.js +3 -2
  70. package/dist/react/constants.js.map +1 -1
  71. package/dist/react/index.d.ts +4 -3
  72. package/dist/react/index.js +3 -2
  73. package/dist/react/types.d.ts +11 -2
  74. package/dist/react/types.d.ts.map +1 -1
  75. package/dist/react/utils/renderDiffChildren.d.ts +16 -5
  76. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  77. package/dist/react/utils/renderDiffChildren.js +34 -7
  78. package/dist/react/utils/renderDiffChildren.js.map +1 -1
  79. package/dist/react/utils/renderFileChildren.d.ts +5 -1
  80. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  81. package/dist/react/utils/renderFileChildren.js +13 -7
  82. package/dist/react/utils/renderFileChildren.js.map +1 -1
  83. package/dist/react/utils/useFileDiffInstance.d.ts +1 -2
  84. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  85. package/dist/react/utils/useFileDiffInstance.js +2 -2
  86. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  87. package/dist/react/utils/useFileInstance.d.ts +1 -2
  88. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  89. package/dist/react/utils/useFileInstance.js.map +1 -1
  90. package/dist/react/utils/useUnresolvedFileInstance.d.ts +33 -0
  91. package/dist/react/utils/useUnresolvedFileInstance.d.ts.map +1 -0
  92. package/dist/react/utils/useUnresolvedFileInstance.js +87 -0
  93. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -0
  94. package/dist/renderers/DiffHunksRenderer.d.ts +50 -6
  95. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  96. package/dist/renderers/DiffHunksRenderer.js +145 -45
  97. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  98. package/dist/renderers/FileRenderer.js +1 -1
  99. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts +46 -0
  100. package/dist/renderers/UnresolvedFileHunksRenderer.d.ts.map +1 -0
  101. package/dist/renderers/UnresolvedFileHunksRenderer.js +207 -0
  102. package/dist/renderers/UnresolvedFileHunksRenderer.js.map +1 -0
  103. package/dist/shiki-stream/stream.d.ts +1 -1
  104. package/dist/shiki-stream/stream.d.ts.map +1 -1
  105. package/dist/shiki-stream/stream.js.map +1 -1
  106. package/dist/shiki-stream/tokenizer.d.ts +1 -1
  107. package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
  108. package/dist/shiki-stream/tokenizer.js.map +1 -1
  109. package/dist/shiki-stream/types.d.ts +1 -1
  110. package/dist/shiki-stream/types.d.ts.map +1 -1
  111. package/dist/sprite.d.ts +2 -2
  112. package/dist/sprite.d.ts.map +1 -1
  113. package/dist/sprite.js +3 -0
  114. package/dist/sprite.js.map +1 -1
  115. package/dist/ssr/index.d.ts +3 -3
  116. package/dist/ssr/index.js +2 -2
  117. package/dist/ssr/preloadDiffs.d.ts +23 -14
  118. package/dist/ssr/preloadDiffs.d.ts.map +1 -1
  119. package/dist/ssr/preloadDiffs.js +40 -14
  120. package/dist/ssr/preloadDiffs.js.map +1 -1
  121. package/dist/style.js +1 -1
  122. package/dist/style.js.map +1 -1
  123. package/dist/types.d.ts +29 -2
  124. package/dist/types.d.ts.map +1 -1
  125. package/dist/utils/areMergeConflictActionsEqual.d.ts +7 -0
  126. package/dist/utils/areMergeConflictActionsEqual.d.ts.map +1 -0
  127. package/dist/utils/areMergeConflictActionsEqual.js +11 -0
  128. package/dist/utils/areMergeConflictActionsEqual.js.map +1 -0
  129. package/dist/utils/arePrePropertiesEqual.js +10 -1
  130. package/dist/utils/arePrePropertiesEqual.js.map +1 -1
  131. package/dist/utils/areSelectionPointsEqual.d.ts +7 -0
  132. package/dist/utils/areSelectionPointsEqual.d.ts.map +1 -0
  133. package/dist/utils/areSelectionPointsEqual.js +8 -0
  134. package/dist/utils/areSelectionPointsEqual.js.map +1 -0
  135. package/dist/utils/areSelectionsEqual.d.ts +1 -1
  136. package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
  137. package/dist/utils/areSelectionsEqual.js.map +1 -1
  138. package/dist/utils/createFileHeaderElement.js +5 -2
  139. package/dist/utils/createFileHeaderElement.js.map +1 -1
  140. package/dist/utils/createGutterUtilityContentNode.d.ts +5 -0
  141. package/dist/utils/createGutterUtilityContentNode.d.ts.map +1 -0
  142. package/dist/utils/createGutterUtilityContentNode.js +15 -0
  143. package/dist/utils/createGutterUtilityContentNode.js.map +1 -0
  144. package/dist/utils/createGutterUtilityElement.d.ts +7 -0
  145. package/dist/utils/createGutterUtilityElement.d.ts.map +1 -0
  146. package/dist/utils/createGutterUtilityElement.js +20 -0
  147. package/dist/utils/createGutterUtilityElement.js.map +1 -0
  148. package/dist/utils/createPreElement.d.ts +2 -1
  149. package/dist/utils/createPreElement.d.ts.map +1 -1
  150. package/dist/utils/createPreElement.js +2 -1
  151. package/dist/utils/createPreElement.js.map +1 -1
  152. package/dist/utils/createSeparator.js +1 -1
  153. package/dist/utils/createSeparator.js.map +1 -1
  154. package/dist/utils/createWindowFromScrollPosition.js +12 -11
  155. package/dist/utils/createWindowFromScrollPosition.js.map +1 -1
  156. package/dist/utils/getHighlighterOptions.d.ts +7 -2
  157. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  158. package/dist/utils/getHighlighterOptions.js +3 -2
  159. package/dist/utils/getHighlighterOptions.js.map +1 -1
  160. package/dist/utils/getMergeConflictActionSlotName.d.ts +16 -0
  161. package/dist/utils/getMergeConflictActionSlotName.d.ts.map +1 -0
  162. package/dist/utils/getMergeConflictActionSlotName.js +8 -0
  163. package/dist/utils/getMergeConflictActionSlotName.js.map +1 -0
  164. package/dist/utils/getMergeConflictLineTypes.d.ts +15 -0
  165. package/dist/utils/getMergeConflictLineTypes.d.ts.map +1 -0
  166. package/dist/utils/getMergeConflictLineTypes.js +81 -0
  167. package/dist/utils/getMergeConflictLineTypes.js.map +1 -0
  168. package/dist/utils/getOrCreateCodeNode.d.ts +3 -1
  169. package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
  170. package/dist/utils/getOrCreateCodeNode.js +5 -3
  171. package/dist/utils/getOrCreateCodeNode.js.map +1 -1
  172. package/dist/utils/hast_utils.d.ts +2 -2
  173. package/dist/utils/hast_utils.d.ts.map +1 -1
  174. package/dist/utils/hast_utils.js +3 -2
  175. package/dist/utils/hast_utils.js.map +1 -1
  176. package/dist/utils/parseMergeConflictDiffFromFile.d.ts +26 -0
  177. package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -0
  178. package/dist/utils/parseMergeConflictDiffFromFile.js +143 -0
  179. package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -0
  180. package/dist/utils/resolveMergeConflict.d.ts +7 -0
  181. package/dist/utils/resolveMergeConflict.d.ts.map +1 -0
  182. package/dist/utils/resolveMergeConflict.js +30 -0
  183. package/dist/utils/resolveMergeConflict.js.map +1 -0
  184. package/dist/utils/resolveVirtualFileMetrics.js +1 -0
  185. package/dist/utils/resolveVirtualFileMetrics.js.map +1 -1
  186. package/dist/utils/setWrapperNodeProps.d.ts +2 -1
  187. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  188. package/dist/utils/setWrapperNodeProps.js +5 -1
  189. package/dist/utils/setWrapperNodeProps.js.map +1 -1
  190. package/dist/worker/WorkerPoolManager.d.ts +4 -2
  191. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  192. package/dist/worker/WorkerPoolManager.js +16 -9
  193. package/dist/worker/WorkerPoolManager.js.map +1 -1
  194. package/dist/worker/types.d.ts +3 -1
  195. package/dist/worker/types.d.ts.map +1 -1
  196. package/dist/worker/wasm-BlUZCxHM.js +10 -0
  197. package/dist/worker/wasm-BlUZCxHM.js.map +1 -0
  198. package/dist/worker/worker-portable.js +10546 -10106
  199. package/dist/worker/worker-portable.js.map +1 -1
  200. package/dist/worker/worker.js +27 -19
  201. package/dist/worker/worker.js.map +1 -1
  202. package/package.json +3 -7
  203. package/dist/managers/LineSelectionManager.d.ts +0 -64
  204. package/dist/managers/LineSelectionManager.d.ts.map +0 -1
  205. package/dist/managers/LineSelectionManager.js +0 -270
  206. package/dist/managers/LineSelectionManager.js.map +0 -1
  207. package/dist/managers/MouseEventManager.d.ts +0 -71
  208. package/dist/managers/MouseEventManager.d.ts.map +0 -1
  209. package/dist/managers/MouseEventManager.js +0 -358
  210. package/dist/managers/MouseEventManager.js.map +0 -1
  211. package/dist/themes/pierre-dark.js +0 -1328
  212. package/dist/themes/pierre-dark.js.map +0 -1
  213. package/dist/themes/pierre-light.js +0 -1328
  214. package/dist/themes/pierre-light.js.map +0 -1
  215. package/dist/utils/createHoverContentNode.d.ts +0 -5
  216. package/dist/utils/createHoverContentNode.d.ts.map +0 -1
  217. package/dist/utils/createHoverContentNode.js +0 -15
  218. package/dist/utils/createHoverContentNode.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useFileInstance.js","names":[],"sources":["../../../src/react/utils/useFileInstance.ts"],"sourcesContent":["import {\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n} from 'react';\n\nimport { File, type FileOptions } from '../../components/File';\nimport { VirtualizedFile } from '../../components/VirtualizedFile';\nimport type { SelectedLineRange } from '../../managers/LineSelectionManager';\nimport type { GetHoveredLineResult } from '../../managers/MouseEventManager';\nimport type {\n FileContents,\n LineAnnotation,\n VirtualFileMetrics,\n} from '../../types';\nimport { areOptionsEqual } from '../../utils/areOptionsEqual';\nimport { useVirtualizer } from '../Virtualizer';\nimport { WorkerPoolContext } from '../WorkerPoolContext';\nimport { useStableCallback } from './useStableCallback';\n\nconst useIsometricEffect =\n typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\ninterface UseFileInstanceProps<LAnnotation> {\n file: FileContents;\n options: FileOptions<LAnnotation> | undefined;\n lineAnnotations: LineAnnotation<LAnnotation>[] | undefined;\n selectedLines: SelectedLineRange | null | undefined;\n prerenderedHTML: string | undefined;\n metrics?: VirtualFileMetrics;\n}\n\ninterface UseFileInstanceReturn {\n ref(node: HTMLElement | null): void;\n getHoveredLine(): GetHoveredLineResult<'file'> | undefined;\n}\n\nexport function useFileInstance<LAnnotation>({\n file,\n options,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n metrics,\n}: UseFileInstanceProps<LAnnotation>): UseFileInstanceReturn {\n const simpleVirtualizer = useVirtualizer();\n const poolManager = useContext(WorkerPoolContext);\n const instanceRef = useRef<\n File<LAnnotation> | VirtualizedFile<LAnnotation> | null\n >(null);\n const ref = useStableCallback((node: HTMLElement | null) => {\n if (node != null) {\n if (instanceRef.current != null) {\n throw new Error(\n 'File: An instance should not already exist when a node is created'\n );\n }\n if (simpleVirtualizer != null) {\n instanceRef.current = new VirtualizedFile(\n options,\n simpleVirtualizer,\n metrics,\n poolManager,\n true\n );\n } else {\n instanceRef.current = new File(options, poolManager, true);\n }\n void instanceRef.current.hydrate({\n file,\n fileContainer: node,\n lineAnnotations,\n prerenderedHTML,\n });\n } else {\n if (instanceRef.current == null) {\n throw new Error('File: A File instance should exist when unmounting');\n }\n instanceRef.current.cleanUp();\n instanceRef.current = null;\n }\n });\n\n useIsometricEffect(() => {\n if (instanceRef.current == null) return;\n const forceRender = !areOptionsEqual(instanceRef.current.options, options);\n instanceRef.current.setOptions(options);\n void instanceRef.current.render({ file, lineAnnotations, forceRender });\n if (selectedLines !== undefined) {\n instanceRef.current.setSelectedLines(selectedLines);\n }\n });\n\n const getHoveredLine = useCallback(():\n | GetHoveredLineResult<'file'>\n | undefined => {\n return instanceRef.current?.getHoveredLine();\n }, []);\n return { ref, getHoveredLine };\n}\n"],"mappings":";;;;;;;;;AAsBA,MAAM,qBACJ,OAAO,WAAW,cAAc,YAAY;AAgB9C,SAAgB,gBAA6B,EAC3C,MACA,SACA,iBACA,eACA,iBACA,WAC2D;CAC3D,MAAM,oBAAoB,gBAAgB;CAC1C,MAAM,cAAc,WAAW,kBAAkB;CACjD,MAAM,cAAc,OAElB,KAAK;CACP,MAAM,MAAM,mBAAmB,SAA6B;AAC1D,MAAI,QAAQ,MAAM;AAChB,OAAI,YAAY,WAAW,KACzB,OAAM,IAAI,MACR,oEACD;AAEH,OAAI,qBAAqB,KACvB,aAAY,UAAU,IAAI,gBACxB,SACA,mBACA,SACA,aACA,KACD;OAED,aAAY,UAAU,IAAI,KAAK,SAAS,aAAa,KAAK;AAE5D,GAAK,YAAY,QAAQ,QAAQ;IAC/B;IACA,eAAe;IACf;IACA;IACD,CAAC;SACG;AACL,OAAI,YAAY,WAAW,KACzB,OAAM,IAAI,MAAM,qDAAqD;AAEvE,eAAY,QAAQ,SAAS;AAC7B,eAAY,UAAU;;GAExB;AAEF,0BAAyB;AACvB,MAAI,YAAY,WAAW,KAAM;EACjC,MAAM,cAAc,CAAC,gBAAgB,YAAY,QAAQ,SAAS,QAAQ;AAC1E,cAAY,QAAQ,WAAW,QAAQ;AACvC,EAAK,YAAY,QAAQ,OAAO;GAAE;GAAM;GAAiB;GAAa,CAAC;AACvE,MAAI,kBAAkB,OACpB,aAAY,QAAQ,iBAAiB,cAAc;GAErD;AAOF,QAAO;EAAE;EAAK,gBALS,kBAEN;AACf,UAAO,YAAY,SAAS,gBAAgB;KAC3C,EAAE,CAAC;EACwB"}
1
+ {"version":3,"file":"useFileInstance.js","names":[],"sources":["../../../src/react/utils/useFileInstance.ts"],"sourcesContent":["import {\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n} from 'react';\n\nimport { File, type FileOptions } from '../../components/File';\nimport { VirtualizedFile } from '../../components/VirtualizedFile';\nimport type {\n GetHoveredLineResult,\n SelectedLineRange,\n} from '../../managers/InteractionManager';\nimport type {\n FileContents,\n LineAnnotation,\n VirtualFileMetrics,\n} from '../../types';\nimport { areOptionsEqual } from '../../utils/areOptionsEqual';\nimport { useVirtualizer } from '../Virtualizer';\nimport { WorkerPoolContext } from '../WorkerPoolContext';\nimport { useStableCallback } from './useStableCallback';\n\nconst useIsometricEffect =\n typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\ninterface UseFileInstanceProps<LAnnotation> {\n file: FileContents;\n options: FileOptions<LAnnotation> | undefined;\n lineAnnotations: LineAnnotation<LAnnotation>[] | undefined;\n selectedLines: SelectedLineRange | null | undefined;\n prerenderedHTML: string | undefined;\n metrics?: VirtualFileMetrics;\n}\n\ninterface UseFileInstanceReturn {\n ref(node: HTMLElement | null): void;\n getHoveredLine(): GetHoveredLineResult<'file'> | undefined;\n}\n\nexport function useFileInstance<LAnnotation>({\n file,\n options,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n metrics,\n}: UseFileInstanceProps<LAnnotation>): UseFileInstanceReturn {\n const simpleVirtualizer = useVirtualizer();\n const poolManager = useContext(WorkerPoolContext);\n const instanceRef = useRef<\n File<LAnnotation> | VirtualizedFile<LAnnotation> | null\n >(null);\n const ref = useStableCallback((node: HTMLElement | null) => {\n if (node != null) {\n if (instanceRef.current != null) {\n throw new Error(\n 'File: An instance should not already exist when a node is created'\n );\n }\n if (simpleVirtualizer != null) {\n instanceRef.current = new VirtualizedFile(\n options,\n simpleVirtualizer,\n metrics,\n poolManager,\n true\n );\n } else {\n instanceRef.current = new File(options, poolManager, true);\n }\n void instanceRef.current.hydrate({\n file,\n fileContainer: node,\n lineAnnotations,\n prerenderedHTML,\n });\n } else {\n if (instanceRef.current == null) {\n throw new Error('File: A File instance should exist when unmounting');\n }\n instanceRef.current.cleanUp();\n instanceRef.current = null;\n }\n });\n\n useIsometricEffect(() => {\n if (instanceRef.current == null) return;\n const forceRender = !areOptionsEqual(instanceRef.current.options, options);\n instanceRef.current.setOptions(options);\n void instanceRef.current.render({ file, lineAnnotations, forceRender });\n if (selectedLines !== undefined) {\n instanceRef.current.setSelectedLines(selectedLines);\n }\n });\n\n const getHoveredLine = useCallback(():\n | GetHoveredLineResult<'file'>\n | undefined => {\n return instanceRef.current?.getHoveredLine();\n }, []);\n return { ref, getHoveredLine };\n}\n"],"mappings":";;;;;;;;;AAwBA,MAAM,qBACJ,OAAO,WAAW,cAAc,YAAY;AAgB9C,SAAgB,gBAA6B,EAC3C,MACA,SACA,iBACA,eACA,iBACA,WAC2D;CAC3D,MAAM,oBAAoB,gBAAgB;CAC1C,MAAM,cAAc,WAAW,kBAAkB;CACjD,MAAM,cAAc,OAElB,KAAK;CACP,MAAM,MAAM,mBAAmB,SAA6B;AAC1D,MAAI,QAAQ,MAAM;AAChB,OAAI,YAAY,WAAW,KACzB,OAAM,IAAI,MACR,oEACD;AAEH,OAAI,qBAAqB,KACvB,aAAY,UAAU,IAAI,gBACxB,SACA,mBACA,SACA,aACA,KACD;OAED,aAAY,UAAU,IAAI,KAAK,SAAS,aAAa,KAAK;AAE5D,GAAK,YAAY,QAAQ,QAAQ;IAC/B;IACA,eAAe;IACf;IACA;IACD,CAAC;SACG;AACL,OAAI,YAAY,WAAW,KACzB,OAAM,IAAI,MAAM,qDAAqD;AAEvE,eAAY,QAAQ,SAAS;AAC7B,eAAY,UAAU;;GAExB;AAEF,0BAAyB;AACvB,MAAI,YAAY,WAAW,KAAM;EACjC,MAAM,cAAc,CAAC,gBAAgB,YAAY,QAAQ,SAAS,QAAQ;AAC1E,cAAY,QAAQ,WAAW,QAAQ;AACvC,EAAK,YAAY,QAAQ,OAAO;GAAE;GAAM;GAAiB;GAAa,CAAC;AACvE,MAAI,kBAAkB,OACpB,aAAY,QAAQ,iBAAiB,cAAc;GAErD;AAOF,QAAO;EAAE;EAAK,gBALS,kBAEN;AACf,UAAO,YAAY,SAAS,gBAAgB;KAC3C,EAAE,CAAC;EACwB"}
@@ -0,0 +1,33 @@
1
+ import { DiffLineAnnotation, FileContents, FileDiffMetadata } from "../../types.js";
2
+ import { GetHoveredLineResult, SelectedLineRange } from "../../managers/InteractionManager.js";
3
+ import { MergeConflictDiffAction } from "../../utils/parseMergeConflictDiffFromFile.js";
4
+ import { UnresolvedFileHunksRendererOptions } from "../../renderers/UnresolvedFileHunksRenderer.js";
5
+ import { UnresolvedFile } from "../../components/UnresolvedFile.js";
6
+
7
+ //#region src/react/utils/useUnresolvedFileInstance.d.ts
8
+ interface UseUnresolvedFileInstanceProps<LAnnotation> {
9
+ file: FileContents;
10
+ options?: Omit<UnresolvedFileHunksRendererOptions, 'onMergeConflictAction'>;
11
+ lineAnnotations: DiffLineAnnotation<LAnnotation>[] | undefined;
12
+ selectedLines: SelectedLineRange | null | undefined;
13
+ prerenderedHTML: string | undefined;
14
+ hasConflictUtility: boolean;
15
+ }
16
+ interface UseUnresolvedFileInstanceReturn<LAnnotation> {
17
+ fileDiff: FileDiffMetadata;
18
+ actions: MergeConflictDiffAction[];
19
+ ref(node: HTMLElement | null): void;
20
+ getHoveredLine(): GetHoveredLineResult<'diff'> | undefined;
21
+ getInstance(): UnresolvedFile<LAnnotation> | undefined;
22
+ }
23
+ declare function useUnresolvedFileInstance<LAnnotation>({
24
+ file,
25
+ options,
26
+ lineAnnotations,
27
+ selectedLines,
28
+ prerenderedHTML,
29
+ hasConflictUtility
30
+ }: UseUnresolvedFileInstanceProps<LAnnotation>): UseUnresolvedFileInstanceReturn<LAnnotation>;
31
+ //#endregion
32
+ export { useUnresolvedFileInstance };
33
+ //# sourceMappingURL=useUnresolvedFileInstance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUnresolvedFileInstance.d.ts","names":["UnresolvedFile","GetHoveredLineResult","SelectedLineRange","UnresolvedFileHunksRendererOptions","DiffLineAnnotation","FileContents","FileDiffMetadata","MergeConflictDiffAction","UseUnresolvedFileInstanceProps","LAnnotation","Omit","UseUnresolvedFileInstanceReturn","HTMLElement","useUnresolvedFileInstance","file","options","lineAnnotations","selectedLines","prerenderedHTML","hasConflictUtility"],"sources":["../../../src/react/utils/useUnresolvedFileInstance.d.ts"],"sourcesContent":["import { UnresolvedFile } from '../../components/UnresolvedFile';\nimport type { GetHoveredLineResult, SelectedLineRange } from '../../managers/InteractionManager';\nimport type { UnresolvedFileHunksRendererOptions } from '../../renderers/UnresolvedFileHunksRenderer';\nimport type { DiffLineAnnotation, FileContents, FileDiffMetadata } from '../../types';\nimport { type MergeConflictDiffAction } from '../../utils/parseMergeConflictDiffFromFile';\ninterface UseUnresolvedFileInstanceProps<LAnnotation> {\n file: FileContents;\n options?: Omit<UnresolvedFileHunksRendererOptions, 'onMergeConflictAction'>;\n lineAnnotations: DiffLineAnnotation<LAnnotation>[] | undefined;\n selectedLines: SelectedLineRange | null | undefined;\n prerenderedHTML: string | undefined;\n hasConflictUtility: boolean;\n}\ninterface UseUnresolvedFileInstanceReturn<LAnnotation> {\n fileDiff: FileDiffMetadata;\n actions: MergeConflictDiffAction[];\n ref(node: HTMLElement | null): void;\n getHoveredLine(): GetHoveredLineResult<'diff'> | undefined;\n getInstance(): UnresolvedFile<LAnnotation> | undefined;\n}\nexport declare function useUnresolvedFileInstance<LAnnotation>({ file, options, lineAnnotations, selectedLines, prerenderedHTML, hasConflictUtility }: UseUnresolvedFileInstanceProps<LAnnotation>): UseUnresolvedFileInstanceReturn<LAnnotation>;\nexport {};\n//# sourceMappingURL=useUnresolvedFileInstance.d.ts.map"],"mappings":";;;;;;;UAKUQ;QACAH;EADAG,OAAAA,CAAAA,EAEIE,IAFJF,CAESL,kCAFqBM,EAAAA,uBAAA,CAAA;EAC9BJ,eAAAA,EAEWD,kBAFXC,CAE8BI,WAF9BJ,CAAAA,EAAAA,GAAAA,SAAAA;EACSF,aAAAA,EAEAD,iBAFAC,GAAAA,IAAAA,GAAAA,SAAAA;EAALO,eAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAC0BD,kBAAAA,EAAAA,OAAAA;;UAK9BE,+BAJST,CAAAA,WAAAA,CAAAA,CAAAA;EAAiB,QAAA,EAKtBI,gBALsB;EAI1BK,OAAAA,EAEGJ,uBAFHI,EAA+B;EAC3BL,GAAAA,CAAAA,IAAAA,EAEAM,WAFAN,GAAAA,IAAAA,CAAAA,EAAAA,IAAAA;EACDC,cAAAA,EAAAA,EAESN,oBAFTM,CAAAA,MAAAA,CAAAA,GAAAA,SAAAA;EACCK,WAAAA,EAAAA,EAEKZ,cAFLY,CAEoBH,WAFpBG,CAAAA,GAAAA,SAAAA;;AAEoBH,iBAEVI,yBAFUJ,CAAAA,WAAAA,CAAAA,CAAAA;EAAAA,IAAAA;EAAAA,OAAAA;EAAAA,eAAAA;EAAAA,aAAAA;EAAAA,eAAAA;EAAAA;AAAAA,CAAAA,EAEqHD,8BAFrHC,CAEoJA,WAFpJA,CAAAA,CAAAA,EAEmKE,+BAFnKF,CAEmMA,WAFnMA,CAAAA"}
@@ -0,0 +1,87 @@
1
+ import { parseMergeConflictDiffFromFile } from "../../utils/parseMergeConflictDiffFromFile.js";
2
+ import { UnresolvedFile } from "../../components/UnresolvedFile.js";
3
+ import { areOptionsEqual } from "../../utils/areOptionsEqual.js";
4
+ import { WorkerPoolContext } from "../WorkerPoolContext.js";
5
+ import { useStableCallback } from "./useStableCallback.js";
6
+ import { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from "react";
7
+
8
+ //#region src/react/utils/useUnresolvedFileInstance.ts
9
+ const useIsometricEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
10
+ function useUnresolvedFileInstance({ file, options, lineAnnotations, selectedLines, prerenderedHTML, hasConflictUtility }) {
11
+ const [{ fileDiff, actions }, setState] = useState(() => {
12
+ const { fileDiff: fileDiff$1, actions: actions$1 } = parseMergeConflictDiffFromFile(file);
13
+ return {
14
+ fileDiff: fileDiff$1,
15
+ actions: actions$1
16
+ };
17
+ });
18
+ const activeFileRef = useRef(file);
19
+ const onMergeConflictAction = useStableCallback((payload, instance) => {
20
+ const activeFile = activeFileRef.current;
21
+ const newFile = instance.resolveConflict(payload.conflict.conflictIndex, payload.resolution, activeFile);
22
+ if (newFile == null) return;
23
+ activeFileRef.current = newFile;
24
+ const { fileDiff: fileDiff$1, actions: actions$1 } = parseMergeConflictDiffFromFile(newFile);
25
+ setState({
26
+ fileDiff: fileDiff$1,
27
+ actions: actions$1
28
+ });
29
+ });
30
+ const poolManager = useContext(WorkerPoolContext);
31
+ const instanceRef = useRef(null);
32
+ const ref = useStableCallback((fileContainer) => {
33
+ if (fileContainer != null) {
34
+ if (instanceRef.current != null) throw new Error("useUnresolvedFileInstance: An instance should not already exist when a node is created");
35
+ instanceRef.current = new UnresolvedFile(mergeUnresolvedOptions(options, onMergeConflictAction, hasConflictUtility), poolManager, true);
36
+ instanceRef.current.hydrate({
37
+ fileDiff,
38
+ actions,
39
+ fileContainer,
40
+ lineAnnotations,
41
+ prerenderedHTML
42
+ });
43
+ } else {
44
+ if (instanceRef.current == null) throw new Error("useUnresolvedFileInstance: A UnresolvedFile instance should exist when unmounting");
45
+ instanceRef.current.cleanUp();
46
+ instanceRef.current = null;
47
+ }
48
+ });
49
+ useIsometricEffect(() => {
50
+ if (instanceRef.current == null) return;
51
+ const instance = instanceRef.current;
52
+ const newOptions = mergeUnresolvedOptions(options, onMergeConflictAction, hasConflictUtility);
53
+ const forceRender = !areOptionsEqual(instance.options, newOptions);
54
+ instance.setOptions(newOptions);
55
+ instance.render({
56
+ fileDiff,
57
+ actions,
58
+ lineAnnotations,
59
+ forceRender
60
+ });
61
+ if (selectedLines !== void 0) instance.setSelectedLines(selectedLines);
62
+ });
63
+ return {
64
+ ref,
65
+ getHoveredLine: useCallback(() => {
66
+ return instanceRef.current?.getHoveredLine();
67
+ }, []),
68
+ fileDiff,
69
+ actions,
70
+ getInstance: useCallback(() => {
71
+ return instanceRef.current ?? void 0;
72
+ }, [])
73
+ };
74
+ }
75
+ function mergeUnresolvedOptions(options, onMergeConflictAction, hasConflictUtility) {
76
+ return {
77
+ ...options,
78
+ onMergeConflictAction,
79
+ hunkSeparators: options?.hunkSeparators === "custom" ? emptyRender : options?.hunkSeparators,
80
+ mergeConflictActionsType: hasConflictUtility || options?.mergeConflictActionsType === "custom" ? emptyRender : options?.mergeConflictActionsType
81
+ };
82
+ }
83
+ function emptyRender() {}
84
+
85
+ //#endregion
86
+ export { useUnresolvedFileInstance };
87
+ //# sourceMappingURL=useUnresolvedFileInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUnresolvedFileInstance.js","names":["UnresolvedFileClass"],"sources":["../../../src/react/utils/useUnresolvedFileInstance.ts"],"sourcesContent":["import {\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n UnresolvedFile,\n UnresolvedFile as UnresolvedFileClass,\n type UnresolvedFileOptions,\n} from '../../components/UnresolvedFile';\nimport type {\n GetHoveredLineResult,\n SelectedLineRange,\n} from '../../managers/InteractionManager';\nimport type { UnresolvedFileHunksRendererOptions } from '../../renderers/UnresolvedFileHunksRenderer';\nimport type {\n DiffLineAnnotation,\n FileContents,\n FileDiffMetadata,\n MergeConflictActionPayload,\n} from '../../types';\nimport { areOptionsEqual } from '../../utils/areOptionsEqual';\nimport {\n type MergeConflictDiffAction,\n parseMergeConflictDiffFromFile,\n} from '../../utils/parseMergeConflictDiffFromFile';\nimport { WorkerPoolContext } from '../WorkerPoolContext';\nimport { useStableCallback } from './useStableCallback';\n\nconst useIsometricEffect =\n typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\ninterface UseUnresolvedFileInstanceProps<LAnnotation> {\n file: FileContents;\n options?: Omit<UnresolvedFileHunksRendererOptions, 'onMergeConflictAction'>;\n lineAnnotations: DiffLineAnnotation<LAnnotation>[] | undefined;\n selectedLines: SelectedLineRange | null | undefined;\n prerenderedHTML: string | undefined;\n hasConflictUtility: boolean;\n}\n\ninterface UseUnresolvedFileInstanceReturn<LAnnotation> {\n fileDiff: FileDiffMetadata;\n actions: MergeConflictDiffAction[];\n ref(node: HTMLElement | null): void;\n getHoveredLine(): GetHoveredLineResult<'diff'> | undefined;\n getInstance(): UnresolvedFile<LAnnotation> | undefined;\n}\n\nexport function useUnresolvedFileInstance<LAnnotation>({\n file,\n options,\n lineAnnotations,\n selectedLines,\n prerenderedHTML,\n hasConflictUtility,\n}: UseUnresolvedFileInstanceProps<LAnnotation>): UseUnresolvedFileInstanceReturn<LAnnotation> {\n const [{ fileDiff, actions }, setState] = useState(() => {\n const { fileDiff, actions } = parseMergeConflictDiffFromFile(file);\n return { fileDiff, actions };\n });\n // UnresolvedFile is intentionally uncontrolled in React. Keep an internal\n // source-of-truth file so sequential conflict actions apply to the latest\n // resolved contents rather than the initial prop value.\n const activeFileRef = useRef(file);\n const onMergeConflictAction = useStableCallback(\n (\n payload: MergeConflictActionPayload,\n instance: UnresolvedFile<LAnnotation>\n ) => {\n const activeFile = activeFileRef.current;\n const newFile = instance.resolveConflict(\n payload.conflict.conflictIndex,\n payload.resolution,\n activeFile\n );\n if (newFile == null) return;\n activeFileRef.current = newFile;\n const { fileDiff, actions } = parseMergeConflictDiffFromFile(newFile);\n setState({ fileDiff, actions });\n }\n );\n const poolManager = useContext(WorkerPoolContext);\n const instanceRef = useRef<UnresolvedFileClass<LAnnotation> | null>(null);\n const ref = useStableCallback((fileContainer: HTMLElement | null) => {\n if (fileContainer != null) {\n if (instanceRef.current != null) {\n throw new Error(\n 'useUnresolvedFileInstance: An instance should not already exist when a node is created'\n );\n }\n instanceRef.current = new UnresolvedFileClass(\n mergeUnresolvedOptions(\n options,\n onMergeConflictAction,\n hasConflictUtility\n ),\n poolManager,\n true\n );\n void instanceRef.current.hydrate({\n fileDiff,\n actions,\n fileContainer,\n lineAnnotations,\n prerenderedHTML,\n });\n } else {\n if (instanceRef.current == null) {\n throw new Error(\n 'useUnresolvedFileInstance: A UnresolvedFile instance should exist when unmounting'\n );\n }\n instanceRef.current.cleanUp();\n instanceRef.current = null;\n }\n });\n\n useIsometricEffect(() => {\n if (instanceRef.current == null) return;\n const instance = instanceRef.current;\n const newOptions = mergeUnresolvedOptions(\n options,\n onMergeConflictAction,\n hasConflictUtility\n );\n const forceRender = !areOptionsEqual(instance.options, newOptions);\n instance.setOptions(newOptions);\n void instance.render({\n fileDiff,\n actions,\n lineAnnotations,\n forceRender,\n });\n if (selectedLines !== undefined) {\n instance.setSelectedLines(selectedLines);\n }\n });\n\n const getHoveredLine = useCallback(():\n | GetHoveredLineResult<'diff'>\n | undefined => {\n return instanceRef.current?.getHoveredLine();\n }, []);\n\n const getInstance = useCallback(() => {\n return instanceRef.current ?? undefined;\n }, []);\n\n return { ref, getHoveredLine, fileDiff, actions, getInstance };\n}\n\nfunction mergeUnresolvedOptions<LAnnotation>(\n options: UnresolvedFileHunksRendererOptions | undefined,\n onMergeConflictAction: UnresolvedFileOptions<LAnnotation>['onMergeConflictAction'],\n hasConflictUtility: boolean\n): UnresolvedFileOptions<LAnnotation> {\n return {\n ...options,\n onMergeConflictAction,\n hunkSeparators:\n options?.hunkSeparators === 'custom'\n ? emptyRender\n : options?.hunkSeparators,\n // Add a placeholder type for the custom render\n mergeConflictActionsType:\n hasConflictUtility || options?.mergeConflictActionsType === 'custom'\n ? emptyRender\n : options?.mergeConflictActionsType,\n };\n}\n\nfunction emptyRender() {\n return undefined;\n}\n"],"mappings":";;;;;;;;AAiCA,MAAM,qBACJ,OAAO,WAAW,cAAc,YAAY;AAmB9C,SAAgB,0BAAuC,EACrD,MACA,SACA,iBACA,eACA,iBACA,sBAC4F;CAC5F,MAAM,CAAC,EAAE,UAAU,WAAW,YAAY,eAAe;EACvD,MAAM,EAAE,sBAAU,uBAAY,+BAA+B,KAAK;AAClE,SAAO;GAAE;GAAU;GAAS;GAC5B;CAIF,MAAM,gBAAgB,OAAO,KAAK;CAClC,MAAM,wBAAwB,mBAE1B,SACA,aACG;EACH,MAAM,aAAa,cAAc;EACjC,MAAM,UAAU,SAAS,gBACvB,QAAQ,SAAS,eACjB,QAAQ,YACR,WACD;AACD,MAAI,WAAW,KAAM;AACrB,gBAAc,UAAU;EACxB,MAAM,EAAE,sBAAU,uBAAY,+BAA+B,QAAQ;AACrE,WAAS;GAAE;GAAU;GAAS,CAAC;GAElC;CACD,MAAM,cAAc,WAAW,kBAAkB;CACjD,MAAM,cAAc,OAAgD,KAAK;CACzE,MAAM,MAAM,mBAAmB,kBAAsC;AACnE,MAAI,iBAAiB,MAAM;AACzB,OAAI,YAAY,WAAW,KACzB,OAAM,IAAI,MACR,yFACD;AAEH,eAAY,UAAU,IAAIA,eACxB,uBACE,SACA,uBACA,mBACD,EACD,aACA,KACD;AACD,GAAK,YAAY,QAAQ,QAAQ;IAC/B;IACA;IACA;IACA;IACA;IACD,CAAC;SACG;AACL,OAAI,YAAY,WAAW,KACzB,OAAM,IAAI,MACR,oFACD;AAEH,eAAY,QAAQ,SAAS;AAC7B,eAAY,UAAU;;GAExB;AAEF,0BAAyB;AACvB,MAAI,YAAY,WAAW,KAAM;EACjC,MAAM,WAAW,YAAY;EAC7B,MAAM,aAAa,uBACjB,SACA,uBACA,mBACD;EACD,MAAM,cAAc,CAAC,gBAAgB,SAAS,SAAS,WAAW;AAClE,WAAS,WAAW,WAAW;AAC/B,EAAK,SAAS,OAAO;GACnB;GACA;GACA;GACA;GACD,CAAC;AACF,MAAI,kBAAkB,OACpB,UAAS,iBAAiB,cAAc;GAE1C;AAYF,QAAO;EAAE;EAAK,gBAVS,kBAEN;AACf,UAAO,YAAY,SAAS,gBAAgB;KAC3C,EAAE,CAAC;EAMwB;EAAU;EAAS,aAJ7B,kBAAkB;AACpC,UAAO,YAAY,WAAW;KAC7B,EAAE,CAAC;EAEwD;;AAGhE,SAAS,uBACP,SACA,uBACA,oBACoC;AACpC,QAAO;EACL,GAAG;EACH;EACA,gBACE,SAAS,mBAAmB,WACxB,cACA,SAAS;EAEf,0BACE,sBAAsB,SAAS,6BAA6B,WACxD,cACA,SAAS;EAChB;;AAGH,SAAS,cAAc"}
@@ -1,9 +1,43 @@
1
- import { BaseDiffOptions, DiffLineAnnotation, ExpansionDirections, FileDiffMetadata, HunkData, HunkExpansionRegion, RenderDiffOptions, RenderRange, ThemeTypes, ThemedDiffResult } from "../types.js";
1
+ import { AnnotationSpan, BaseDiffOptions, BaseDiffOptionsWithDefaults, CustomPreProperties, DiffLineAnnotation, ExpansionDirections, FileDiffMetadata, HunkData, HunkExpansionRegion, LineTypes, RenderDiffOptions, RenderRange, ThemeTypes, ThemedDiffResult } from "../types.js";
2
2
  import { WorkerPoolManager } from "../worker/WorkerPoolManager.js";
3
3
  import "../worker/index.js";
4
- import { Element, ElementContent } from "hast";
4
+ import { DiffLineMetadata } from "../utils/iterateOverDiff.js";
5
+ import { Element, ElementContent, Properties } from "hast";
5
6
 
6
7
  //#region src/renderers/DiffHunksRenderer.d.ts
8
+ interface UnifiedLineDecorationProps {
9
+ type: 'context' | 'context-expanded' | 'change';
10
+ lineType: LineTypes;
11
+ additionLineIndex: number | undefined;
12
+ deletionLineIndex: number | undefined;
13
+ }
14
+ interface SplitLineDecorationProps {
15
+ side: 'deletions' | 'additions';
16
+ type: 'context' | 'context-expanded' | 'change';
17
+ lineIndex: number | undefined;
18
+ }
19
+ interface LineDecoration {
20
+ gutterLineType: LineTypes;
21
+ gutterProperties?: Properties;
22
+ contentProperties?: Properties;
23
+ }
24
+ interface RenderedLineContext {
25
+ type: 'context' | 'context-expanded' | 'change';
26
+ hunkIndex: number;
27
+ lineIndex: number;
28
+ unifiedLineIndex: number;
29
+ splitLineIndex: number;
30
+ deletionLine?: DiffLineMetadata;
31
+ additionLine?: DiffLineMetadata;
32
+ }
33
+ interface InlineRow {
34
+ content: Element;
35
+ gutter: Element;
36
+ }
37
+ interface SplitInlineRow {
38
+ deletion: InlineRow | undefined;
39
+ addition: InlineRow | undefined;
40
+ }
7
41
  interface HunksRenderResult {
8
42
  unifiedGutterAST: ElementContent[] | undefined;
9
43
  unifiedContentAST: ElementContent[] | undefined;
@@ -40,17 +74,27 @@ declare class DiffHunksRenderer<LAnnotation = undefined> {
40
74
  setOptions(options: BaseDiffOptions): void;
41
75
  private mergeOptions;
42
76
  setThemeType(themeType: ThemeTypes): void;
43
- expandHunk(index: number, direction: ExpansionDirections): void;
77
+ expandHunk(index: number, direction: ExpansionDirections, expansionLineCount?: number): void;
44
78
  getExpandedHunk(hunkIndex: number): HunkExpansionRegion;
45
79
  getExpandedHunksMap(): Map<number, HunkExpansionRegion>;
46
80
  setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;
47
- private getOptionsWithDefaults;
81
+ protected getUnifiedLineDecoration({
82
+ lineType
83
+ }: UnifiedLineDecorationProps): LineDecoration;
84
+ protected getSplitLineDecoration({
85
+ side,
86
+ type
87
+ }: SplitLineDecorationProps): LineDecoration;
88
+ protected createAnnotationElement(span: AnnotationSpan): Element;
89
+ protected getUnifiedInlineRowsForLine?: (ctx: RenderedLineContext) => InlineRow[] | undefined;
90
+ protected getSplitInlineRowsForLine?: (ctx: RenderedLineContext) => SplitInlineRow[] | undefined;
91
+ protected getOptionsWithDefaults(): BaseDiffOptionsWithDefaults;
48
92
  private initializeHighlighter;
49
93
  hydrate(diff: FileDiffMetadata | undefined): void;
50
94
  private getRenderOptions;
51
95
  renderDiff(diff?: FileDiffMetadata | undefined, renderRange?: RenderRange): HunksRenderResult | undefined;
52
96
  asyncRender(diff: FileDiffMetadata, renderRange?: RenderRange): Promise<HunksRenderResult>;
53
- private createPreElement;
97
+ protected createPreElement(split: boolean, totalLines: number, themeStyles: string, baseThemeType: 'light' | 'dark' | undefined, customProperties?: CustomPreProperties): Element;
54
98
  private asyncHighlight;
55
99
  private renderDiffWithHighlighter;
56
100
  onHighlightSuccess(diff: FileDiffMetadata, result: ThemedDiffResult, options: RenderDiffOptions): void;
@@ -64,5 +108,5 @@ declare class DiffHunksRenderer<LAnnotation = undefined> {
64
108
  private renderHeader;
65
109
  }
66
110
  //#endregion
67
- export { DiffHunksRenderer, HunksRenderResult };
111
+ export { DiffHunksRenderer, HunksRenderResult, InlineRow, LineDecoration, RenderedLineContext, SplitInlineRow, SplitLineDecorationProps, UnifiedLineDecorationProps };
68
112
  //# sourceMappingURL=DiffHunksRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiffHunksRenderer.d.ts","names":["ElementContent","Element","HASTElement","BaseDiffOptions","DiffLineAnnotation","ExpansionDirections","FileDiffMetadata","HunkData","HunkExpansionRegion","RenderDiffOptions","RenderRange","ThemedDiffResult","ThemeTypes","WorkerPoolManager","HunksRenderResult","DiffHunksRenderer","LAnnotation","Map","Promise"],"sources":["../../src/renderers/DiffHunksRenderer.d.ts"],"sourcesContent":["import type { ElementContent, Element as HASTElement } from 'hast';\nimport type { BaseDiffOptions, DiffLineAnnotation, ExpansionDirections, FileDiffMetadata, HunkData, HunkExpansionRegion, RenderDiffOptions, RenderRange, ThemedDiffResult, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface HunksRenderResult {\n unifiedGutterAST: ElementContent[] | undefined;\n unifiedContentAST: ElementContent[] | undefined;\n deletionsGutterAST: ElementContent[] | undefined;\n deletionsContentAST: ElementContent[] | undefined;\n additionsGutterAST: ElementContent[] | undefined;\n additionsContentAST: ElementContent[] | undefined;\n hunkData: HunkData[];\n css: string;\n preNode: HASTElement;\n headerElement: HASTElement | undefined;\n totalLines: number;\n themeStyles: string;\n baseThemeType: 'light' | 'dark' | undefined;\n rowCount: number;\n bufferBefore: number;\n bufferAfter: number;\n}\nexport declare class DiffHunksRenderer<LAnnotation = undefined> {\n options: BaseDiffOptions;\n private onRenderUpdate?;\n private workerManager?;\n readonly __id: string;\n private highlighter;\n private diff;\n private expandedHunks;\n private deletionAnnotations;\n private additionAnnotations;\n private computedLang;\n private renderCache;\n constructor(options?: BaseDiffOptions, onRenderUpdate?: (() => unknown) | undefined, workerManager?: WorkerPoolManager | undefined);\n cleanUp(): void;\n recycle(): void;\n setOptions(options: BaseDiffOptions): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n expandHunk(index: number, direction: ExpansionDirections): void;\n getExpandedHunk(hunkIndex: number): HunkExpansionRegion;\n getExpandedHunksMap(): Map<number, HunkExpansionRegion>;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n private getOptionsWithDefaults;\n private initializeHighlighter;\n hydrate(diff: FileDiffMetadata | undefined): void;\n private getRenderOptions;\n renderDiff(diff?: FileDiffMetadata | undefined, renderRange?: RenderRange): HunksRenderResult | undefined;\n asyncRender(diff: FileDiffMetadata, renderRange?: RenderRange): Promise<HunksRenderResult>;\n private createPreElement;\n private asyncHighlight;\n private renderDiffWithHighlighter;\n onHighlightSuccess(diff: FileDiffMetadata, result: ThemedDiffResult, options: RenderDiffOptions): void;\n onHighlightError(error: unknown): void;\n private processDiffResult;\n renderCodeAST(type: 'unified' | 'deletions' | 'additions', result: HunksRenderResult): ElementContent[] | undefined;\n renderFullAST(result: HunksRenderResult, children?: ElementContent[]): HASTElement;\n renderFullHTML(result: HunksRenderResult, tempChildren?: ElementContent[]): string;\n renderPartialHTML(children: ElementContent[], columnType?: 'unified' | 'deletions' | 'additions'): string;\n private getAnnotations;\n private renderHeader;\n}\n//# sourceMappingURL=DiffHunksRenderer.d.ts.map"],"mappings":";;;;;;UAGiBc,iBAAAA;oBACKd;qBACCA;EAFNc,kBAAAA,EAGOd,cAHU,EAAA,GAAA,SAAA;EACZA,mBAAAA,EAGGA,cAHHA,EAAAA,GAAAA,SAAAA;EACCA,kBAAAA,EAGCA,cAHDA,EAAAA,GAAAA,SAAAA;EACCA,mBAAAA,EAGCA,cAHDA,EAAAA,GAAAA,SAAAA;EACCA,QAAAA,EAGXO,QAHWP,EAAAA;EACDA,GAAAA,EAAAA,MAAAA;EACCA,OAAAA,EAGZE,OAHYF;EACXO,aAAAA,EAGKL,OAHLK,GAAAA,SAAAA;EAEDL,UAAAA,EAAAA,MAAAA;EACMA,WAAAA,EAAAA,MAAAA;EAAW,aAAA,EAAA,OAAA,GAAA,MAAA,GAAA,SAAA;EAQTa,QAAAA,EAAAA,MAAAA;EACRZ,YAAAA,EAAAA,MAAAA;EAWaA,WAAAA,EAAAA,MAAAA;;AAGFA,cAfHY,iBAeGZ,CAAAA,cAAAA,SAAAA,CAAAA,CAAAA;EAEIS,OAAAA,EAhBfT,eAgBeS;EACaP,QAAAA,cAAAA;EACDG,QAAAA,aAAAA;EACDA,SAAAA,IAAAA,EAAAA,MAAAA;EAAZS,QAAAA,WAAAA;EACgCD,QAAAA,IAAAA;EAAnBZ,QAAAA,aAAAA;EAGtBE,QAAAA,mBAAAA;EAEIA,QAAAA,mBAAAA;EAA4CI,QAAAA,YAAAA;EAAcI,QAAAA,WAAAA;EAC1DR,WAAAA,CAAAA,OAAAA,CAAAA,EAfIH,eAeJG,EAAAA,cAAAA,CAAAA,EAAAA,CAAAA,GAAAA,GAAAA,OAAAA,CAAAA,GAAAA,SAAAA,EAAAA,aAAAA,CAAAA,EAfmFO,iBAenFP,GAAAA,SAAAA;EAAgCI,OAAAA,CAAAA,CAAAA,EAAAA,IAAAA;EAAsBI,OAAAA,CAAAA,CAAAA,EAAAA,IAAAA;EAARI,UAAAA,CAAAA,OAAAA,EAZ5Cf,eAY4Ce,CAAAA,EAAAA,IAAAA;EAIvCZ,QAAAA,YAAAA;EAA0BK,YAAAA,CAAAA,SAAAA,EAd3BC,UAc2BD,CAAAA,EAAAA,IAAAA;EAA2BF,UAAAA,CAAAA,KAAAA,EAAAA,MAAAA,EAAAA,SAAAA,EAbzCJ,mBAayCI,CAAAA,EAAAA,IAAAA;EAGXK,eAAAA,CAAAA,SAAAA,EAAAA,MAAAA,CAAAA,EAf/BN,mBAe+BM;EAAoBd,mBAAAA,CAAAA,CAAAA,EAdhEiB,GAcgEjB,CAAAA,MAAAA,EAdpDQ,mBAcoDR,CAAAA;EACjEc,kBAAAA,CAAAA,eAAAA,EAdcV,kBAcdU,CAdiCE,WAcjCF,CAAAA,EAAAA,CAAAA,EAAAA,IAAAA;EAA8Bd,QAAAA,sBAAAA;EAAmBE,QAAAA,qBAAAA;EAChDY,OAAAA,CAAAA,IAAAA,EAZTR,gBAYSQ,GAAAA,SAAAA,CAAAA,EAAAA,IAAAA;EAAkCd,QAAAA,gBAAAA;EAC7BA,UAAAA,CAAAA,IAAAA,CAAAA,EAXVM,gBAWUN,GAAAA,SAAAA,EAAAA,WAAAA,CAAAA,EAXkCU,WAWlCV,CAAAA,EAXgDc,iBAWhDd,GAAAA,SAAAA;EAAc,WAAA,CAAA,IAAA,EAVxBM,gBAUwB,EAAA,WAAA,CAAA,EAVQI,WAUR,CAAA,EAVsBQ,OAUtB,CAV8BJ,iBAU9B,CAAA;;;;2BANjBR,0BAA0BK,2BAA2BF;;;qEAGXK,oBAAoBd;wBACjEc,8BAA8Bd,mBAAmBE;yBAChDY,kCAAkCd;8BAC7BA"}
1
+ {"version":3,"file":"DiffHunksRenderer.d.ts","names":["ElementContent","Element","HASTElement","Properties","AnnotationSpan","BaseDiffOptions","BaseDiffOptionsWithDefaults","CustomPreProperties","DiffLineAnnotation","ExpansionDirections","FileDiffMetadata","HunkData","HunkExpansionRegion","LineTypes","RenderDiffOptions","RenderRange","ThemedDiffResult","ThemeTypes","DiffLineMetadata","WorkerPoolManager","UnifiedLineDecorationProps","SplitLineDecorationProps","LineDecoration","RenderedLineContext","InlineRow","SplitInlineRow","HunksRenderResult","DiffHunksRenderer","LAnnotation","Map","lineType","side","type","Promise"],"sources":["../../src/renderers/DiffHunksRenderer.d.ts"],"sourcesContent":["import type { ElementContent, Element as HASTElement, Properties } from 'hast';\nimport type { AnnotationSpan, BaseDiffOptions, BaseDiffOptionsWithDefaults, CustomPreProperties, DiffLineAnnotation, ExpansionDirections, FileDiffMetadata, HunkData, HunkExpansionRegion, LineTypes, RenderDiffOptions, RenderRange, ThemedDiffResult, ThemeTypes } from '../types';\nimport type { DiffLineMetadata } from '../utils/iterateOverDiff';\nimport type { WorkerPoolManager } from '../worker';\nexport interface UnifiedLineDecorationProps {\n type: 'context' | 'context-expanded' | 'change';\n lineType: LineTypes;\n additionLineIndex: number | undefined;\n deletionLineIndex: number | undefined;\n}\nexport interface SplitLineDecorationProps {\n side: 'deletions' | 'additions';\n type: 'context' | 'context-expanded' | 'change';\n lineIndex: number | undefined;\n}\nexport interface LineDecoration {\n gutterLineType: LineTypes;\n gutterProperties?: Properties;\n contentProperties?: Properties;\n}\nexport interface RenderedLineContext {\n type: 'context' | 'context-expanded' | 'change';\n hunkIndex: number;\n lineIndex: number;\n unifiedLineIndex: number;\n splitLineIndex: number;\n deletionLine?: DiffLineMetadata;\n additionLine?: DiffLineMetadata;\n}\nexport interface InlineRow {\n content: HASTElement;\n gutter: HASTElement;\n}\nexport interface SplitInlineRow {\n deletion: InlineRow | undefined;\n addition: InlineRow | undefined;\n}\nexport interface HunksRenderResult {\n unifiedGutterAST: ElementContent[] | undefined;\n unifiedContentAST: ElementContent[] | undefined;\n deletionsGutterAST: ElementContent[] | undefined;\n deletionsContentAST: ElementContent[] | undefined;\n additionsGutterAST: ElementContent[] | undefined;\n additionsContentAST: ElementContent[] | undefined;\n hunkData: HunkData[];\n css: string;\n preNode: HASTElement;\n headerElement: HASTElement | undefined;\n totalLines: number;\n themeStyles: string;\n baseThemeType: 'light' | 'dark' | undefined;\n rowCount: number;\n bufferBefore: number;\n bufferAfter: number;\n}\nexport declare class DiffHunksRenderer<LAnnotation = undefined> {\n options: BaseDiffOptions;\n private onRenderUpdate?;\n private workerManager?;\n readonly __id: string;\n private highlighter;\n private diff;\n private expandedHunks;\n private deletionAnnotations;\n private additionAnnotations;\n private computedLang;\n private renderCache;\n constructor(options?: BaseDiffOptions, onRenderUpdate?: (() => unknown) | undefined, workerManager?: WorkerPoolManager | undefined);\n cleanUp(): void;\n recycle(): void;\n setOptions(options: BaseDiffOptions): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n expandHunk(index: number, direction: ExpansionDirections, expansionLineCount?: number): void;\n getExpandedHunk(hunkIndex: number): HunkExpansionRegion;\n getExpandedHunksMap(): Map<number, HunkExpansionRegion>;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n protected getUnifiedLineDecoration({ lineType }: UnifiedLineDecorationProps): LineDecoration;\n protected getSplitLineDecoration({ side, type }: SplitLineDecorationProps): LineDecoration;\n protected createAnnotationElement(span: AnnotationSpan): HASTElement;\n protected getUnifiedInlineRowsForLine?: (ctx: RenderedLineContext) => InlineRow[] | undefined;\n protected getSplitInlineRowsForLine?: (ctx: RenderedLineContext) => SplitInlineRow[] | undefined;\n protected getOptionsWithDefaults(): BaseDiffOptionsWithDefaults;\n private initializeHighlighter;\n hydrate(diff: FileDiffMetadata | undefined): void;\n private getRenderOptions;\n renderDiff(diff?: FileDiffMetadata | undefined, renderRange?: RenderRange): HunksRenderResult | undefined;\n asyncRender(diff: FileDiffMetadata, renderRange?: RenderRange): Promise<HunksRenderResult>;\n protected createPreElement(split: boolean, totalLines: number, themeStyles: string, baseThemeType: 'light' | 'dark' | undefined, customProperties?: CustomPreProperties): HASTElement;\n private asyncHighlight;\n private renderDiffWithHighlighter;\n onHighlightSuccess(diff: FileDiffMetadata, result: ThemedDiffResult, options: RenderDiffOptions): void;\n onHighlightError(error: unknown): void;\n private processDiffResult;\n renderCodeAST(type: 'unified' | 'deletions' | 'additions', result: HunksRenderResult): ElementContent[] | undefined;\n renderFullAST(result: HunksRenderResult, children?: ElementContent[]): HASTElement;\n renderFullHTML(result: HunksRenderResult, tempChildren?: ElementContent[]): string;\n renderPartialHTML(children: ElementContent[], columnType?: 'unified' | 'deletions' | 'additions'): string;\n private getAnnotations;\n private renderHeader;\n}\n//# sourceMappingURL=DiffHunksRenderer.d.ts.map"],"mappings":"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"}