@pierre/diffs 1.1.0-beta.3 → 1.1.0-beta.5

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 (51) hide show
  1. package/dist/constants.d.ts +2 -1
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +2 -1
  4. package/dist/constants.js.map +1 -1
  5. package/dist/highlighter/languages/constants.d.ts +3 -1
  6. package/dist/highlighter/languages/constants.d.ts.map +1 -1
  7. package/dist/highlighter/languages/constants.js +2 -1
  8. package/dist/highlighter/languages/constants.js.map +1 -1
  9. package/dist/highlighter/languages/registerCustomLanguage.d.ts +12 -0
  10. package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -0
  11. package/dist/highlighter/languages/registerCustomLanguage.js +21 -0
  12. package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -0
  13. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  14. package/dist/highlighter/languages/resolveLanguage.js +4 -3
  15. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  16. package/dist/index.d.ts +5 -4
  17. package/dist/index.js +5 -4
  18. package/dist/react/jsx.d.ts +1 -1
  19. package/dist/react/jsx.d.ts.map +1 -1
  20. package/dist/react/types.js +0 -1
  21. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  22. package/dist/renderers/DiffHunksRenderer.js +10 -6
  23. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  24. package/dist/style.js +1 -1
  25. package/dist/style.js.map +1 -1
  26. package/dist/types.d.ts +3 -1
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/utils/getFiletypeFromFileName.d.ts +2 -1
  29. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  30. package/dist/utils/getFiletypeFromFileName.js +14 -4
  31. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  32. package/dist/utils/iterateOverDiff.d.ts +2 -0
  33. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  34. package/dist/utils/iterateOverDiff.js +7 -5
  35. package/dist/utils/iterateOverDiff.js.map +1 -1
  36. package/dist/utils/renderDiffWithHighlighter.d.ts +2 -1
  37. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  38. package/dist/utils/renderDiffWithHighlighter.js +3 -2
  39. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  40. package/dist/utils/setLanguageOverride.d.ts +2 -1
  41. package/dist/utils/setLanguageOverride.d.ts.map +1 -1
  42. package/dist/utils/setLanguageOverride.js.map +1 -1
  43. package/dist/worker/WorkerPoolManager.d.ts +1 -1
  44. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  45. package/dist/worker/WorkerPoolManager.js +3 -2
  46. package/dist/worker/WorkerPoolManager.js.map +1 -1
  47. package/dist/worker/worker-portable.js +29 -11
  48. package/dist/worker/worker-portable.js.map +1 -1
  49. package/dist/worker/worker.js +17 -8
  50. package/dist/worker/worker.js.map +1 -1
  51. package/package.json +1 -1
@@ -21,7 +21,8 @@ declare const LINE_HEIGHT = 20;
21
21
  declare const DIFF_HEADER_HEIGHT = 44;
22
22
  declare const HUNK_SEPARATOR_HEIGHT = 32;
23
23
  declare const FILE_GAP = 8;
24
+ declare const DEFAULT_COLLAPSED_CONTEXT_THRESHOLD = 1;
24
25
  declare const DEFAULT_EXPANDED_REGION: HunkExpansionRegion;
25
26
  //#endregion
26
- export { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE };
27
+ export { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE };
27
28
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","names":["COMMIT_METADATA_SPLIT: RegExp","GIT_DIFF_FILE_BREAK_REGEX: RegExp","UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp","FILE_CONTEXT_BLOB: RegExp","HUNK_HEADER: RegExp","SPLIT_WITH_NEWLINES: RegExp","FILENAME_HEADER_REGEX: RegExp","FILENAME_HEADER_REGEX_GIT: RegExp","ALTERNATE_FILE_NAMES_GIT: RegExp","INDEX_LINE_METADATA: RegExp","DEFAULT_THEMES: ThemesType","DEFAULT_EXPANDED_REGION: HunkExpansionRegion"],"sources":["../src/constants.ts"],"sourcesContent":[],"mappings":";;;cAEa;cAGAA,uBAAuB;AAHvB,cAIAC,yBAJiB,EAIU,MAJV;AAGjBD,cAEAE,6BAFuB,EAEQ,MAFR;AACvBD,cAEAE,iBAF2B,EAER,MAFQ;AAC3BD,cAEAE,WAFAF,EAEa,MAFkB;AAC/BC,cAGAE,mBAHmB,EAGE,MAHF;AACnBD,cAGAE,qBAHa,EAGU,MAHV;AAEbD,cAEAE,yBAFqB,EAEM,MAFN;AACrBD,cAGAE,wBAHuB,EAGG,MAHH;AACvBD,cAIAE,mBAJ2B,EAIN,MAJM;AAE3BD,cAKA,uBAAA,GAL0B,iBAAA;AAE1BC,cAKAC,cALqB,EAKL,UALK;AAGrB,cAOA,oBAAA,GAPA,iBAAA;AAEAA,cAMA,kBAAA,GANgB,eAAA;AAKhB,cAIA,eAAA,GAJA,EAAA;AACA,cAIA,WAAA,GAJA,EAAA;AAGA,cAEA,kBAAA,GAFA,EAAA;AACA,cAEA,qBAAA,GAFA,EAAA;AACA,cAEA,QAAA,GAFA,CAAA;AACA,cAGAC,uBAHA,EAGyB,mBAHzB"}
1
+ {"version":3,"file":"constants.d.ts","names":["COMMIT_METADATA_SPLIT: RegExp","GIT_DIFF_FILE_BREAK_REGEX: RegExp","UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp","FILE_CONTEXT_BLOB: RegExp","HUNK_HEADER: RegExp","SPLIT_WITH_NEWLINES: RegExp","FILENAME_HEADER_REGEX: RegExp","FILENAME_HEADER_REGEX_GIT: RegExp","ALTERNATE_FILE_NAMES_GIT: RegExp","INDEX_LINE_METADATA: RegExp","DEFAULT_THEMES: ThemesType","DEFAULT_EXPANDED_REGION: HunkExpansionRegion"],"sources":["../src/constants.ts"],"sourcesContent":[],"mappings":";;;cAEa;cAGAA,uBAAuB;AAHvB,cAIAC,yBAJiB,EAIU,MAJV;AAGjBD,cAEAE,6BAFuB,EAEQ,MAFR;AACvBD,cAEAE,iBAF2B,EAER,MAFQ;AAC3BD,cAEAE,WAFAF,EAEa,MAFkB;AAC/BC,cAGAE,mBAHmB,EAGE,MAHF;AACnBD,cAGAE,qBAHa,EAGU,MAHV;AAEbD,cAEAE,yBAFqB,EAEM,MAFN;AACrBD,cAGAE,wBAHuB,EAGG,MAHH;AACvBD,cAIAE,mBAJ2B,EAIN,MAJM;AAE3BD,cAKA,uBAAA,GAL0B,iBAAA;AAE1BC,cAKAC,cALqB,EAKL,UALK;AAGrB,cAOA,oBAAA,GAPA,iBAAA;AAEAA,cAMA,kBAAA,GANgB,eAAA;AAKhB,cAIA,eAAA,GAJA,EAAA;AACA,cAIA,WAAA,GAJA,EAAA;AAGA,cAEA,kBAAA,GAFA,EAAA;AACA,cAEA,qBAAA,GAFA,EAAA;AACA,cAEA,QAAA,GAFA,CAAA;AACA,cAEA,mCAAA,GAFA,CAAA;AACA,cAGAC,uBAHA,EAGyB,mBAHzB"}
package/dist/constants.js CHANGED
@@ -22,11 +22,12 @@ const LINE_HEIGHT = 20;
22
22
  const DIFF_HEADER_HEIGHT = 44;
23
23
  const HUNK_SEPARATOR_HEIGHT = 32;
24
24
  const FILE_GAP = 8;
25
+ const DEFAULT_COLLAPSED_CONTEXT_THRESHOLD = 1;
25
26
  const DEFAULT_EXPANDED_REGION = Object.freeze({
26
27
  fromStart: 0,
27
28
  fromEnd: 0
28
29
  });
29
30
 
30
31
  //#endregion
31
- export { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE };
32
+ export { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE };
32
33
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["COMMIT_METADATA_SPLIT: RegExp","GIT_DIFF_FILE_BREAK_REGEX: RegExp","UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp","FILE_CONTEXT_BLOB: RegExp","HUNK_HEADER: RegExp","SPLIT_WITH_NEWLINES: RegExp","FILENAME_HEADER_REGEX: RegExp","FILENAME_HEADER_REGEX_GIT: RegExp","ALTERNATE_FILE_NAMES_GIT: RegExp","INDEX_LINE_METADATA: RegExp","DEFAULT_THEMES: ThemesType","DEFAULT_EXPANDED_REGION: HunkExpansionRegion"],"sources":["../src/constants.ts"],"sourcesContent":["import type { HunkExpansionRegion, ThemesType } from './types';\n\nexport const DIFFS_TAG_NAME = 'diffs-container' as const;\n\n// Misc patch/content parsing regexes\nexport const COMMIT_METADATA_SPLIT: RegExp = /(?=^From [a-f0-9]+ .+$)/m;\nexport const GIT_DIFF_FILE_BREAK_REGEX: RegExp = /(?=^diff --git)/gm;\nexport const UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp = /(?=^---\\s+\\S)/gm;\nexport const FILE_CONTEXT_BLOB: RegExp = /(?=^@@ )/gm;\nexport const HUNK_HEADER: RegExp =\n /^@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@(?: (.*))?/m;\nexport const SPLIT_WITH_NEWLINES: RegExp = /(?<=\\n)/;\nexport const FILENAME_HEADER_REGEX: RegExp = /^(---|\\+\\+\\+)\\s+([^\\t\\r\\n]+)/;\nexport const FILENAME_HEADER_REGEX_GIT: RegExp =\n /^(---|\\+\\+\\+)\\s+[ab]\\/([^\\t\\r\\n]+)/;\nexport const ALTERNATE_FILE_NAMES_GIT: RegExp =\n /^diff --git (?:\"a\\/(.+?)\"|a\\/(.+?)) (?:\"b\\/(.+?)\"|b\\/(.+?))$/;\nexport const INDEX_LINE_METADATA: RegExp =\n /^index ([0-9a-f]+)\\.\\.([0-9a-f]+)(?: (\\d+))?$/i;\n\nexport const HEADER_METADATA_SLOT_ID = 'header-metadata';\n\nexport const DEFAULT_THEMES: ThemesType = {\n dark: 'pierre-dark',\n light: 'pierre-light',\n};\n\nexport const UNSAFE_CSS_ATTRIBUTE = 'data-unsafe-css';\nexport const CORE_CSS_ATTRIBUTE = 'data-core-css';\n\n// FIXME(amadeus): This will need to be configurable\nexport const LINE_HUNK_COUNT = 10;\nexport const LINE_HEIGHT = 20;\nexport const DIFF_HEADER_HEIGHT = 44;\nexport const HUNK_SEPARATOR_HEIGHT = 32;\nexport const FILE_GAP = 8;\n\nexport const DEFAULT_EXPANDED_REGION: HunkExpansionRegion = Object.freeze({\n fromStart: 0,\n fromEnd: 0,\n});\n"],"mappings":";AAEA,MAAa,iBAAiB;AAG9B,MAAaA,wBAAgC;AAC7C,MAAaC,4BAAoC;AACjD,MAAaC,gCAAwC;AACrD,MAAaC,oBAA4B;AACzC,MAAaC,cACX;AACF,MAAaC,sBAA8B;AAC3C,MAAaC,wBAAgC;AAC7C,MAAaC,4BACX;AACF,MAAaC,2BACX;AACF,MAAaC,sBACX;AAEF,MAAa,0BAA0B;AAEvC,MAAaC,iBAA6B;CACxC,MAAM;CACN,OAAO;CACR;AAED,MAAa,uBAAuB;AACpC,MAAa,qBAAqB;AAGlC,MAAa,kBAAkB;AAC/B,MAAa,cAAc;AAC3B,MAAa,qBAAqB;AAClC,MAAa,wBAAwB;AACrC,MAAa,WAAW;AAExB,MAAaC,0BAA+C,OAAO,OAAO;CACxE,WAAW;CACX,SAAS;CACV,CAAC"}
1
+ {"version":3,"file":"constants.js","names":["COMMIT_METADATA_SPLIT: RegExp","GIT_DIFF_FILE_BREAK_REGEX: RegExp","UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp","FILE_CONTEXT_BLOB: RegExp","HUNK_HEADER: RegExp","SPLIT_WITH_NEWLINES: RegExp","FILENAME_HEADER_REGEX: RegExp","FILENAME_HEADER_REGEX_GIT: RegExp","ALTERNATE_FILE_NAMES_GIT: RegExp","INDEX_LINE_METADATA: RegExp","DEFAULT_THEMES: ThemesType","DEFAULT_EXPANDED_REGION: HunkExpansionRegion"],"sources":["../src/constants.ts"],"sourcesContent":["import type { HunkExpansionRegion, ThemesType } from './types';\n\nexport const DIFFS_TAG_NAME = 'diffs-container' as const;\n\n// Misc patch/content parsing regexes\nexport const COMMIT_METADATA_SPLIT: RegExp = /(?=^From [a-f0-9]+ .+$)/m;\nexport const GIT_DIFF_FILE_BREAK_REGEX: RegExp = /(?=^diff --git)/gm;\nexport const UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp = /(?=^---\\s+\\S)/gm;\nexport const FILE_CONTEXT_BLOB: RegExp = /(?=^@@ )/gm;\nexport const HUNK_HEADER: RegExp =\n /^@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@(?: (.*))?/m;\nexport const SPLIT_WITH_NEWLINES: RegExp = /(?<=\\n)/;\nexport const FILENAME_HEADER_REGEX: RegExp = /^(---|\\+\\+\\+)\\s+([^\\t\\r\\n]+)/;\nexport const FILENAME_HEADER_REGEX_GIT: RegExp =\n /^(---|\\+\\+\\+)\\s+[ab]\\/([^\\t\\r\\n]+)/;\nexport const ALTERNATE_FILE_NAMES_GIT: RegExp =\n /^diff --git (?:\"a\\/(.+?)\"|a\\/(.+?)) (?:\"b\\/(.+?)\"|b\\/(.+?))$/;\nexport const INDEX_LINE_METADATA: RegExp =\n /^index ([0-9a-f]+)\\.\\.([0-9a-f]+)(?: (\\d+))?$/i;\n\nexport const HEADER_METADATA_SLOT_ID = 'header-metadata';\n\nexport const DEFAULT_THEMES: ThemesType = {\n dark: 'pierre-dark',\n light: 'pierre-light',\n};\n\nexport const UNSAFE_CSS_ATTRIBUTE = 'data-unsafe-css';\nexport const CORE_CSS_ATTRIBUTE = 'data-core-css';\n\n// FIXME(amadeus): This will need to be configurable\nexport const LINE_HUNK_COUNT = 10;\nexport const LINE_HEIGHT = 20;\nexport const DIFF_HEADER_HEIGHT = 44;\nexport const HUNK_SEPARATOR_HEIGHT = 32;\nexport const FILE_GAP = 8;\nexport const DEFAULT_COLLAPSED_CONTEXT_THRESHOLD = 1;\n\nexport const DEFAULT_EXPANDED_REGION: HunkExpansionRegion = Object.freeze({\n fromStart: 0,\n fromEnd: 0,\n});\n"],"mappings":";AAEA,MAAa,iBAAiB;AAG9B,MAAaA,wBAAgC;AAC7C,MAAaC,4BAAoC;AACjD,MAAaC,gCAAwC;AACrD,MAAaC,oBAA4B;AACzC,MAAaC,cACX;AACF,MAAaC,sBAA8B;AAC3C,MAAaC,wBAAgC;AAC7C,MAAaC,4BACX;AACF,MAAaC,2BACX;AACF,MAAaC,sBACX;AAEF,MAAa,0BAA0B;AAEvC,MAAaC,iBAA6B;CACxC,MAAM;CACN,OAAO;CACR;AAED,MAAa,uBAAuB;AACpC,MAAa,qBAAqB;AAGlC,MAAa,kBAAkB;AAC/B,MAAa,cAAc;AAC3B,MAAa,qBAAqB;AAClC,MAAa,wBAAwB;AACrC,MAAa,WAAW;AACxB,MAAa,sCAAsC;AAEnD,MAAaC,0BAA+C,OAAO,OAAO;CACxE,WAAW;CACX,SAAS;CACV,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import { SupportedLanguages } from "../../types.js";
2
2
  import { ResolvedLanguage } from "../../worker/types.js";
3
3
  import "../../worker/index.js";
4
+ import { DynamicImportLanguageRegistration } from "shiki";
4
5
 
5
6
  //#region src/highlighter/languages/constants.d.ts
6
7
  declare const ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>;
7
8
  declare const ResolvingLanguages: Map<SupportedLanguages, Promise<ResolvedLanguage>>;
9
+ declare const RegisteredCustomLanguages: Map<string, DynamicImportLanguageRegistration>;
8
10
  declare const AttachedLanguages: Set<string>;
9
11
  //#endregion
10
- export { AttachedLanguages, ResolvedLanguages, ResolvingLanguages };
12
+ export { AttachedLanguages, RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages };
11
13
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","names":["ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>","ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n>","AttachedLanguages: Set<string>"],"sources":["../../../src/highlighter/languages/constants.ts"],"sourcesContent":[],"mappings":";;;;;cAGaA,mBAAmB,IAAI,oBAAoB;cAG3CC,oBAAoB,IAC/B,oBACA,QAAQ;cAGGC,mBAAmB"}
1
+ {"version":3,"file":"constants.d.ts","names":["ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>","ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n>","RegisteredCustomLanguages: Map<\n string,\n DynamicImportLanguageRegistration\n>","AttachedLanguages: Set<string>"],"sources":["../../../src/highlighter/languages/constants.ts"],"sourcesContent":[],"mappings":";;;;;;cAKaA,mBAAmB,IAAI,oBAAoB;cAG3CC,oBAAoB,IAC/B,oBACA,QAAQ;cAGGC,2BAA2B,YAEtC;AAVWF,cAaAG,iBAb2C,EAaxB,GAbwB,CAAA,MAAA,CAAA"}
@@ -1,8 +1,9 @@
1
1
  //#region src/highlighter/languages/constants.ts
2
2
  const ResolvedLanguages = /* @__PURE__ */ new Map();
3
3
  const ResolvingLanguages = /* @__PURE__ */ new Map();
4
+ const RegisteredCustomLanguages = /* @__PURE__ */ new Map();
4
5
  const AttachedLanguages = /* @__PURE__ */ new Set();
5
6
 
6
7
  //#endregion
7
- export { AttachedLanguages, ResolvedLanguages, ResolvingLanguages };
8
+ export { AttachedLanguages, RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages };
8
9
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>","ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n>","AttachedLanguages: Set<string>"],"sources":["../../../src/highlighter/languages/constants.ts"],"sourcesContent":["import type { SupportedLanguages } from '../../types';\nimport type { ResolvedLanguage } from '../../worker';\n\nexport const ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage> =\n new Map();\n\nexport const ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n> = new Map();\n\nexport const AttachedLanguages: Set<string> = new Set();\n"],"mappings":";AAGA,MAAaA,oCACX,IAAI,KAAK;AAEX,MAAaC,qCAGT,IAAI,KAAK;AAEb,MAAaC,oCAAiC,IAAI,KAAK"}
1
+ {"version":3,"file":"constants.js","names":["ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>","ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n>","RegisteredCustomLanguages: Map<\n string,\n DynamicImportLanguageRegistration\n>","AttachedLanguages: Set<string>"],"sources":["../../../src/highlighter/languages/constants.ts"],"sourcesContent":["import type { DynamicImportLanguageRegistration } from 'shiki';\n\nimport type { SupportedLanguages } from '../../types';\nimport type { ResolvedLanguage } from '../../worker';\n\nexport const ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage> =\n new Map();\n\nexport const ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n> = new Map();\n\nexport const RegisteredCustomLanguages: Map<\n string,\n DynamicImportLanguageRegistration\n> = new Map();\n\nexport const AttachedLanguages: Set<string> = new Set();\n"],"mappings":";AAKA,MAAaA,oCACX,IAAI,KAAK;AAEX,MAAaC,qCAGT,IAAI,KAAK;AAEb,MAAaC,4CAGT,IAAI,KAAK;AAEb,MAAaC,oCAAiC,IAAI,KAAK"}
@@ -0,0 +1,12 @@
1
+ import { DynamicImportLanguageRegistration } from "shiki";
2
+
3
+ //#region src/highlighter/languages/registerCustomLanguage.d.ts
4
+
5
+ /**
6
+ * Register a custom language loader and optionally map it to
7
+ * file names or extensions.
8
+ */
9
+ declare function registerCustomLanguage(lang: string, loader: DynamicImportLanguageRegistration, extensionsOrFilenames?: string[]): void;
10
+ //#endregion
11
+ export { registerCustomLanguage };
12
+ //# sourceMappingURL=registerCustomLanguage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerCustomLanguage.d.ts","names":[],"sources":["../../../src/highlighter/languages/registerCustomLanguage.ts"],"sourcesContent":[],"mappings":";;;;;;AASA;;iBAAgB,sBAAA,uBAEN"}
@@ -0,0 +1,21 @@
1
+ import { RegisteredCustomLanguages } from "./constants.js";
2
+ import { CUSTOM_EXTENSION_TO_FILE_FORMAT } from "../../utils/getFiletypeFromFileName.js";
3
+
4
+ //#region src/highlighter/languages/registerCustomLanguage.ts
5
+ /**
6
+ * Register a custom language loader and optionally map it to
7
+ * file names or extensions.
8
+ */
9
+ function registerCustomLanguage(lang, loader, extensionsOrFilenames = []) {
10
+ if (lang === "text" || lang === "ansi") throw new Error("registerCustomLanguage: 'text' and 'ansi' are reserved language names");
11
+ if (RegisteredCustomLanguages.has(lang)) {
12
+ console.error(`registerCustomLanguage: lang: ${lang} is already registered`);
13
+ return;
14
+ }
15
+ RegisteredCustomLanguages.set(lang, loader);
16
+ for (const extension of extensionsOrFilenames) CUSTOM_EXTENSION_TO_FILE_FORMAT.set(extension, lang);
17
+ }
18
+
19
+ //#endregion
20
+ export { registerCustomLanguage };
21
+ //# sourceMappingURL=registerCustomLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerCustomLanguage.js","names":[],"sources":["../../../src/highlighter/languages/registerCustomLanguage.ts"],"sourcesContent":["import type { DynamicImportLanguageRegistration } from 'shiki';\n\nimport { CUSTOM_EXTENSION_TO_FILE_FORMAT } from '../../utils/getFiletypeFromFileName';\nimport { RegisteredCustomLanguages } from './constants';\n\n/**\n * Register a custom language loader and optionally map it to\n * file names or extensions.\n */\nexport function registerCustomLanguage(\n lang: string,\n loader: DynamicImportLanguageRegistration,\n /**\n * File names or extensions to map to this language. Use exact filenames\n * (e.g., \"Dockerfile\", \"CMakeLists.txt\") or extension tokens without a dot\n * (e.g., \"proto\", \"foo\"). Compound extensions are supported\n * (e.g., \"blade.php\").\n */\n extensionsOrFilenames: string[] = []\n): void {\n if (lang === 'text' || lang === 'ansi') {\n throw new Error(\n \"registerCustomLanguage: 'text' and 'ansi' are reserved language names\"\n );\n }\n if (RegisteredCustomLanguages.has(lang)) {\n console.error(\n `registerCustomLanguage: lang: ${lang} is already registered`\n );\n return;\n }\n RegisteredCustomLanguages.set(lang, loader);\n for (const extension of extensionsOrFilenames) {\n CUSTOM_EXTENSION_TO_FILE_FORMAT.set(extension, lang);\n }\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,uBACd,MACA,QAOA,wBAAkC,EAAE,EAC9B;AACN,KAAI,SAAS,UAAU,SAAS,OAC9B,OAAM,IAAI,MACR,wEACD;AAEH,KAAI,0BAA0B,IAAI,KAAK,EAAE;AACvC,UAAQ,MACN,iCAAiC,KAAK,wBACvC;AACD;;AAEF,2BAA0B,IAAI,MAAM,OAAO;AAC3C,MAAK,MAAM,aAAa,sBACtB,iCAAgC,IAAI,WAAW,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveLanguage.d.ts","names":[],"sources":["../../../src/highlighter/languages/resolveLanguage.ts"],"sourcesContent":[],"mappings":";;;;;iBAOsB,eAAA,OACd,QAAQ,uCACb,QAAQ"}
1
+ {"version":3,"file":"resolveLanguage.d.ts","names":[],"sources":["../../../src/highlighter/languages/resolveLanguage.ts"],"sourcesContent":[],"mappings":";;;;;iBAWsB,eAAA,OACd,QAAQ,uCACb,QAAQ"}
@@ -1,4 +1,4 @@
1
- import { ResolvedLanguages, ResolvingLanguages } from "./constants.js";
1
+ import { RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages } from "./constants.js";
2
2
  import { isWorkerContext } from "../../utils/isWorkerContext.js";
3
3
  import { bundledLanguages } from "shiki";
4
4
 
@@ -8,8 +8,9 @@ async function resolveLanguage(lang) {
8
8
  const resolver = ResolvingLanguages.get(lang);
9
9
  if (resolver != null) return resolver;
10
10
  try {
11
- const loader = bundledLanguages[lang];
12
- if (loader == null) throw new Error(`resolveLanguage: "${lang}" not found in bundled languages`);
11
+ let loader = RegisteredCustomLanguages.get(lang);
12
+ if (loader == null && Object.prototype.hasOwnProperty.call(bundledLanguages, lang)) loader = bundledLanguages[lang];
13
+ if (loader == null) throw new Error(`resolveLanguage: "${lang}" not found in bundled or custom languages`);
13
14
  const resolver$1 = loader().then(({ default: data }) => {
14
15
  const resolvedLang = {
15
16
  name: lang,
@@ -1 +1 @@
1
- {"version":3,"file":"resolveLanguage.js","names":["resolver"],"sources":["../../../src/highlighter/languages/resolveLanguage.ts"],"sourcesContent":["import { bundledLanguages } from 'shiki';\n\nimport type { SupportedLanguages } from '../../types';\nimport { isWorkerContext } from '../../utils/isWorkerContext';\nimport type { ResolvedLanguage } from '../../worker';\nimport { ResolvedLanguages, ResolvingLanguages } from './constants';\n\nexport async function resolveLanguage(\n lang: Exclude<SupportedLanguages, 'text' | 'ansi'>\n): Promise<ResolvedLanguage> {\n // Prevent dynamic imports in worker contexts\n if (isWorkerContext()) {\n throw new Error(\n `resolveLanguage(\"${lang}\") cannot be called from a worker context. ` +\n 'Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.'\n );\n }\n\n const resolver = ResolvingLanguages.get(lang);\n if (resolver != null) {\n return resolver;\n }\n\n try {\n const loader = bundledLanguages[lang];\n if (loader == null) {\n throw new Error(\n `resolveLanguage: \"${lang}\" not found in bundled languages`\n );\n }\n\n const resolver = loader().then(({ default: data }) => {\n const resolvedLang = { name: lang, data };\n if (!ResolvedLanguages.has(lang)) {\n ResolvedLanguages.set(lang, resolvedLang);\n }\n return resolvedLang;\n });\n ResolvingLanguages.set(lang, resolver);\n return await resolver;\n } finally {\n ResolvingLanguages.delete(lang);\n }\n}\n"],"mappings":";;;;;AAOA,eAAsB,gBACpB,MAC2B;AAE3B,KAAI,iBAAiB,CACnB,OAAM,IAAI,MACR,oBAAoB,KAAK,4JAE1B;CAGH,MAAM,WAAW,mBAAmB,IAAI,KAAK;AAC7C,KAAI,YAAY,KACd,QAAO;AAGT,KAAI;EACF,MAAM,SAAS,iBAAiB;AAChC,MAAI,UAAU,KACZ,OAAM,IAAI,MACR,qBAAqB,KAAK,kCAC3B;EAGH,MAAMA,aAAW,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW;GACpD,MAAM,eAAe;IAAE,MAAM;IAAM;IAAM;AACzC,OAAI,CAAC,kBAAkB,IAAI,KAAK,CAC9B,mBAAkB,IAAI,MAAM,aAAa;AAE3C,UAAO;IACP;AACF,qBAAmB,IAAI,MAAMA,WAAS;AACtC,SAAO,MAAMA;WACL;AACR,qBAAmB,OAAO,KAAK"}
1
+ {"version":3,"file":"resolveLanguage.js","names":["resolver"],"sources":["../../../src/highlighter/languages/resolveLanguage.ts"],"sourcesContent":["import { bundledLanguages } from 'shiki';\n\nimport type { BundledLanguage, SupportedLanguages } from '../../types';\nimport { isWorkerContext } from '../../utils/isWorkerContext';\nimport type { ResolvedLanguage } from '../../worker';\nimport {\n RegisteredCustomLanguages,\n ResolvedLanguages,\n ResolvingLanguages,\n} from './constants';\n\nexport async function resolveLanguage(\n lang: Exclude<SupportedLanguages, 'text' | 'ansi'>\n): Promise<ResolvedLanguage> {\n // Prevent dynamic imports in worker contexts\n if (isWorkerContext()) {\n throw new Error(\n `resolveLanguage(\"${lang}\") cannot be called from a worker context. ` +\n 'Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.'\n );\n }\n\n const resolver = ResolvingLanguages.get(lang);\n if (resolver != null) {\n return resolver;\n }\n\n try {\n let loader = RegisteredCustomLanguages.get(lang);\n if (\n loader == null &&\n Object.prototype.hasOwnProperty.call(bundledLanguages, lang)\n ) {\n loader = bundledLanguages[lang as BundledLanguage];\n }\n if (loader == null) {\n throw new Error(\n `resolveLanguage: \"${lang}\" not found in bundled or custom languages`\n );\n }\n\n const resolver = loader().then(({ default: data }) => {\n const resolvedLang = { name: lang, data };\n if (!ResolvedLanguages.has(lang)) {\n ResolvedLanguages.set(lang, resolvedLang);\n }\n return resolvedLang;\n });\n ResolvingLanguages.set(lang, resolver);\n return await resolver;\n } finally {\n ResolvingLanguages.delete(lang);\n }\n}\n"],"mappings":";;;;;AAWA,eAAsB,gBACpB,MAC2B;AAE3B,KAAI,iBAAiB,CACnB,OAAM,IAAI,MACR,oBAAoB,KAAK,4JAE1B;CAGH,MAAM,WAAW,mBAAmB,IAAI,KAAK;AAC7C,KAAI,YAAY,KACd,QAAO;AAGT,KAAI;EACF,IAAI,SAAS,0BAA0B,IAAI,KAAK;AAChD,MACE,UAAU,QACV,OAAO,UAAU,eAAe,KAAK,kBAAkB,KAAK,CAE5D,UAAS,iBAAiB;AAE5B,MAAI,UAAU,KACZ,OAAM,IAAI,MACR,qBAAqB,KAAK,4CAC3B;EAGH,MAAMA,aAAW,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW;GACpD,MAAM,eAAe;IAAE,MAAM;IAAM;IAAM;AACzC,OAAI,CAAC,kBAAkB,IAAI,KAAK,CAC9B,mBAAkB,IAAI,MAAM,aAAa;AAE3C,UAAO;IACP;AACF,qBAAmB,IAAI,MAAMA,WAAS;AACtC,SAAO,MAAMA;WACL;AACR,qBAAmB,OAAO,KAAK"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AnnotationLineMap, AnnotationSide, AnnotationSpan, BaseCodeOptions, BaseDiffOptions, BundledLanguage, ChangeContent, ChangeTypes, CodeToHastOptions, ContextContent, DecorationItem, DiffLineAnnotation, DiffLineEventBaseProps, DiffsHighlighter, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffMetadata, ForcePlainTextOptions, GapSpan, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PrePropertiesConfig, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderMetadataProps, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, SharedRenderState, ShikiTransformer, SupportedLanguages, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, VirtualWindowSpecs } from "./types.js";
2
- import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
2
+ import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
3
3
  import { LineSelectionManager, LineSelectionOptions, SelectedLineRange, SelectionSide, pluckLineSelectionOptions } from "./managers/LineSelectionManager.js";
4
4
  import { GetHoveredLineResult, LogTypes, MouseEventManager, MouseEventManagerBaseOptions, MouseEventManagerMode, MouseEventManagerOptions, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, pluckMouseEventOptions } from "./managers/MouseEventManager.js";
5
5
  import { File, FileHyrdateProps, FileOptions, FileRenderProps } from "./components/File.js";
@@ -14,10 +14,11 @@ import { FileStream, FileStreamOptions } from "./components/FileStream.js";
14
14
  import { areLanguagesAttached } from "./highlighter/languages/areLanguagesAttached.js";
15
15
  import { attachResolvedLanguages } from "./highlighter/languages/attachResolvedLanguages.js";
16
16
  import { cleanUpResolvedLanguages } from "./highlighter/languages/cleanUpResolvedLanguages.js";
17
- import { AttachedLanguages, ResolvedLanguages, ResolvingLanguages } from "./highlighter/languages/constants.js";
17
+ import { AttachedLanguages, RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages } from "./highlighter/languages/constants.js";
18
18
  import { getResolvedLanguages } from "./highlighter/languages/getResolvedLanguages.js";
19
19
  import { getResolvedOrResolveLanguage } from "./highlighter/languages/getResolvedOrResolveLanguage.js";
20
20
  import { hasResolvedLanguages } from "./highlighter/languages/hasResolvedLanguages.js";
21
+ import { registerCustomLanguage } from "./highlighter/languages/registerCustomLanguage.js";
21
22
  import { resolveLanguage } from "./highlighter/languages/resolveLanguage.js";
22
23
  import { resolveLanguages } from "./highlighter/languages/resolveLanguages.js";
23
24
  import { disposeHighlighter, getHighlighterIfLoaded, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter } from "./highlighter/shared_highlighter.js";
@@ -65,7 +66,7 @@ import { createWindowFromScrollPosition } from "./utils/createWindowFromScrollPo
65
66
  import { wrapCoreCSS, wrapUnsafeCSS } from "./utils/cssWrappers.js";
66
67
  import { diffAcceptRejectHunk } from "./utils/diffAcceptRejectHunk.js";
67
68
  import { formatCSSVariablePrefix } from "./utils/formatCSSVariablePrefix.js";
68
- import { EXTENSION_TO_FILE_FORMAT, extendFileFormatMap, getFiletypeFromFileName } from "./utils/getFiletypeFromFileName.js";
69
+ import { CUSTOM_EXTENSION_TO_FILE_FORMAT, EXTENSION_TO_FILE_FORMAT, extendFileFormatMap, getFiletypeFromFileName } from "./utils/getFiletypeFromFileName.js";
69
70
  import { getHighlighterOptions } from "./utils/getHighlighterOptions.js";
70
71
  import { getHighlighterThemeStyles } from "./utils/getHighlighterThemeStyles.js";
71
72
  import { getHunkSeparatorSlotName } from "./utils/getHunkSeparatorSlotName.js";
@@ -92,4 +93,4 @@ import { setLanguageOverride } from "./utils/setLanguageOverride.js";
92
93
  import { setPreNodeProperties } from "./utils/setWrapperNodeProps.js";
93
94
  import { trimPatchContext } from "./utils/trimPatchContext.js";
94
95
  import { codeToHtml, createCssVariablesTheme as createCSSVariablesTheme } from "shiki";
95
- export { ALTERNATE_FILE_NAMES_GIT, AnnotationLineMap, AnnotationSide, AnnotationSpan, AttachedLanguages, AttachedThemes, BaseCodeOptions, BaseDiffOptions, BundledLanguage, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, ChangeContent, ChangeTypes, CodeToHastOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, ContextContent, CreateFileHeaderElementProps, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, DecorationItem, DiffHunksRenderer, DiffLineAnnotation, DiffLineEventBaseProps, DiffsHighlighter, DiffsThemeNames, EXTENSION_TO_FILE_FORMAT, ExpansionDirections, ExtensionFormatMap, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, File, FileContents, FileDiff, FileDiffHydrationProps, FileDiffMetadata, FileDiffOptions, FileDiffRenderProps, FileHyrdateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, ForcePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, GapSpan, GetHoveredLineResult, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSelectionManager, LineSelectionOptions, LineSpans, LineTypes, LogTypes, MouseEventManager, MouseEventManagerBaseOptions, MouseEventManagerMode, MouseEventManagerOptions, ObservedAnnotationNodes, ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, ParsedLine, ParsedPatch, PrePropertiesConfig, RecallToken, RegisteredCustomThemes, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderMetadataProps, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, SelectedLineRange, SelectionSide, SharedRenderState, ShikiStreamTokenizer, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions, ShikiTransformer, SupportedLanguages, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, VirtualWindowSpecs, areDiffLineAnnotationsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createBufferElement, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createHastElement, createHoverContentNode, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, diffAcceptRejectHunk, disposeHighlighter, extendFileFormatMap, findCodeElement, formatCSSVariablePrefix, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckLineSelectionOptions, pluckMouseEventOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, resolveLanguage, resolveLanguages, resolveTheme, resolveThemes, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapUnsafeCSS };
96
+ export { ALTERNATE_FILE_NAMES_GIT, AnnotationLineMap, AnnotationSide, AnnotationSpan, AttachedLanguages, AttachedThemes, BaseCodeOptions, BaseDiffOptions, BundledLanguage, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_EXTENSION_TO_FILE_FORMAT, ChangeContent, ChangeTypes, CodeToHastOptions, CodeToTokenTransformStream, CodeToTokenTransformStreamOptions, ContextContent, CreateFileHeaderElementProps, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, DecorationItem, DiffHunksRenderer, DiffLineAnnotation, DiffLineEventBaseProps, DiffsHighlighter, DiffsThemeNames, EXTENSION_TO_FILE_FORMAT, ExpansionDirections, ExtensionFormatMap, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, File, FileContents, FileDiff, FileDiffHydrationProps, FileDiffMetadata, FileDiffOptions, FileDiffRenderProps, FileHyrdateProps, FileOptions, FileRenderProps, FileRenderResult, FileRenderer, FileRendererOptions, FileStream, FileStreamOptions, ForcePlainTextOptions, GIT_DIFF_FILE_BREAK_REGEX, GapSpan, GetHoveredLineResult, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, Hunk, HunkData, HunkExpansionRegion, HunkLineType, HunkSeparators, HunksRenderResult, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSelectionManager, LineSelectionOptions, LineSpans, LineTypes, LogTypes, MouseEventManager, MouseEventManagerBaseOptions, MouseEventManagerMode, MouseEventManagerOptions, ObservedAnnotationNodes, ObservedGridNodes, OnDiffLineClickProps, OnDiffLineEnterLeaveProps, OnLineClickProps, OnLineEnterLeaveProps, ParsedLine, ParsedPatch, PrePropertiesConfig, RecallToken, RegisteredCustomLanguages, RegisteredCustomThemes, RenderDiffFilesResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderMetadataProps, RenderRange, RenderWindow, RenderedDiffASTCache, RenderedFileASTCache, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteNames, SVGSpriteSheet, ScrollSyncManager, SelectedLineRange, SelectionSide, SharedRenderState, ShikiStreamTokenizer, ShikiStreamTokenizerEnqueueResult, ShikiStreamTokenizerOptions, ShikiTransformer, SupportedLanguages, ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, ThemedToken, ThemesType, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, VirtualWindowSpecs, areDiffLineAnnotationsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createBufferElement, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createHastElement, createHoverContentNode, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, diffAcceptRejectHunk, disposeHighlighter, extendFileFormatMap, findCodeElement, formatCSSVariablePrefix, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckLineSelectionOptions, pluckMouseEventOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, resolveLanguage, resolveLanguages, resolveTheme, resolveThemes, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapUnsafeCSS };
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
1
+ import { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
2
2
  import { areSelectionsEqual } from "./utils/areSelectionsEqual.js";
3
3
  import { LineSelectionManager, pluckLineSelectionOptions } from "./managers/LineSelectionManager.js";
4
4
  import { MouseEventManager, pluckMouseEventOptions } from "./managers/MouseEventManager.js";
5
5
  import { ResizeManager } from "./managers/ResizeManager.js";
6
- import { AttachedLanguages, ResolvedLanguages, ResolvingLanguages } from "./highlighter/languages/constants.js";
6
+ import { AttachedLanguages, RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages } from "./highlighter/languages/constants.js";
7
7
  import { areLanguagesAttached } from "./highlighter/languages/areLanguagesAttached.js";
8
8
  import { attachResolvedLanguages } from "./highlighter/languages/attachResolvedLanguages.js";
9
9
  import { cleanUpResolvedLanguages } from "./highlighter/languages/cleanUpResolvedLanguages.js";
@@ -26,7 +26,7 @@ import { createAnnotationElement } from "./utils/createAnnotationElement.js";
26
26
  import { getIconForType } from "./utils/getIconForType.js";
27
27
  import { createFileHeaderElement } from "./utils/createFileHeaderElement.js";
28
28
  import { createPreElement, createPreWrapperProperties } from "./utils/createPreElement.js";
29
- import { EXTENSION_TO_FILE_FORMAT, extendFileFormatMap, getFiletypeFromFileName } from "./utils/getFiletypeFromFileName.js";
29
+ import { CUSTOM_EXTENSION_TO_FILE_FORMAT, EXTENSION_TO_FILE_FORMAT, extendFileFormatMap, getFiletypeFromFileName } from "./utils/getFiletypeFromFileName.js";
30
30
  import { getHighlighterOptions } from "./utils/getHighlighterOptions.js";
31
31
  import { getLineAnnotationName } from "./utils/getLineAnnotationName.js";
32
32
  import { cleanLastNewline } from "./utils/cleanLastNewline.js";
@@ -74,6 +74,7 @@ import { createSpanFromToken } from "./utils/createSpanNodeFromToken.js";
74
74
  import { FileStream } from "./components/FileStream.js";
75
75
  import { getResolvedLanguages } from "./highlighter/languages/getResolvedLanguages.js";
76
76
  import { hasResolvedLanguages } from "./highlighter/languages/hasResolvedLanguages.js";
77
+ import { registerCustomLanguage } from "./highlighter/languages/registerCustomLanguage.js";
77
78
  import { resolveLanguages } from "./highlighter/languages/resolveLanguages.js";
78
79
  import { getResolvedThemes } from "./highlighter/themes/getResolvedThemes.js";
79
80
  import { registerCustomCSSVariableTheme } from "./highlighter/themes/registerCustomCSSVariableTheme.js";
@@ -91,4 +92,4 @@ import { setLanguageOverride } from "./utils/setLanguageOverride.js";
91
92
  import { trimPatchContext } from "./utils/trimPatchContext.js";
92
93
  import { codeToHtml, createCssVariablesTheme as createCSSVariablesTheme } from "shiki";
93
94
 
94
- export { ALTERNATE_FILE_NAMES_GIT, AttachedLanguages, AttachedThemes, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CodeToTokenTransformStream, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, DiffHunksRenderer, EXTENSION_TO_FILE_FORMAT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, File, FileDiff, FileRenderer, FileStream, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, LineSelectionManager, MouseEventManager, RegisteredCustomThemes, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteSheet, ScrollSyncManager, ShikiStreamTokenizer, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, areDiffLineAnnotationsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createBufferElement, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createHastElement, createHoverContentNode, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, diffAcceptRejectHunk, disposeHighlighter, extendFileFormatMap, findCodeElement, formatCSSVariablePrefix, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckLineSelectionOptions, pluckMouseEventOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, resolveLanguage, resolveLanguages, resolveTheme, resolveThemes, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapUnsafeCSS };
95
+ export { ALTERNATE_FILE_NAMES_GIT, AttachedLanguages, AttachedThemes, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_EXTENSION_TO_FILE_FORMAT, CodeToTokenTransformStream, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES, DIFFS_TAG_NAME, DIFF_HEADER_HEIGHT, DiffHunksRenderer, EXTENSION_TO_FILE_FORMAT, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_GAP, File, FileDiff, FileRenderer, FileStream, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, HUNK_SEPARATOR_HEIGHT, INDEX_LINE_METADATA, LINE_HEIGHT, LINE_HUNK_COUNT, LineSelectionManager, MouseEventManager, RegisteredCustomLanguages, RegisteredCustomThemes, ResizeManager, ResolvedLanguages, ResolvedThemes, ResolvingLanguages, ResolvingThemes, SPLIT_WITH_NEWLINES, SVGSpriteSheet, ScrollSyncManager, ShikiStreamTokenizer, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE, areDiffLineAnnotationsEqual, areFilesEqual, areHunkDataEqual, areLanguagesAttached, areLineAnnotationsEqual, areObjectsEqual, areOptionsEqual, arePrePropertiesEqual, areRenderRangesEqual, areSelectionsEqual, areThemesAttached, areThemesEqual, areVirtualWindowSpecsEqual, areWorkerStatsEqual, attachResolvedLanguages, attachResolvedThemes, cleanLastNewline, cleanUpResolvedLanguages, cleanUpResolvedThemes, codeToHtml, createAnnotationElement, createAnnotationWrapperNode, createBufferElement, createCSSVariablesTheme, createDiffSpanDecoration, createEmptyRowBuffer, createFileHeaderElement, createHastElement, createHoverContentNode, createIconElement, createNoNewlineElement, createPreElement, createPreWrapperProperties, createRowNodes, createSeparator, createSpanFromToken, createStyleElement, createTextNodeElement, createTransformerWithState, createUnsafeCSSStyleNode, createWindowFromScrollPosition, diffAcceptRejectHunk, disposeHighlighter, extendFileFormatMap, findCodeElement, formatCSSVariablePrefix, getFiletypeFromFileName, getHighlighterIfLoaded, getHighlighterOptions, getHighlighterThemeStyles, getHunkSeparatorSlotName, getIconForType, getLineAnnotationName, getLineEndingType, getLineNodes, getOrCreateCodeNode, getResolvedLanguages, getResolvedOrResolveLanguage, getResolvedOrResolveTheme, getResolvedThemes, getSharedHighlighter, getSingularPatch, getThemes, getTotalLineCountFromHunks, hasResolvedLanguages, hasResolvedThemes, isDefaultRenderRange, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, isWorkerContext, parseDiffFromFile, parseLineType, parsePatchFiles, pluckLineSelectionOptions, pluckMouseEventOptions, preloadHighlighter, prerenderHTMLIfNecessary, processFile, processLine, processPatch, pushOrJoinSpan, queueRender, registerCustomCSSVariableTheme, registerCustomLanguage, registerCustomTheme, renderDiffWithHighlighter, renderFileWithHighlighter, resolveLanguage, resolveLanguages, resolveTheme, resolveThemes, setLanguageOverride, setPreNodeProperties, trimPatchContext, wrapCoreCSS, wrapUnsafeCSS };
@@ -1,7 +1,7 @@
1
1
  import { DIFFS_TAG_NAME } from "../constants.js";
2
- import "react";
3
2
 
4
3
  //#region src/react/jsx.d.ts
4
+
5
5
  declare module 'react' {
6
6
  namespace JSX {
7
7
  interface IntrinsicElements {
@@ -1 +1 @@
1
- {"version":3,"file":"jsx.d.ts","names":["DIFFS_TAG_NAME","_0","HTMLElement","React","HTMLAttributes","DetailedHTMLProps","sideEffect"],"sources":["../../src/react/jsx.d.ts"],"sourcesContent":["import 'react';\n\nimport type { DIFFS_TAG_NAME } from '../constants';\n\ndeclare module 'react' {\n namespace JSX {\n interface IntrinsicElements {\n [DIFFS_TAG_NAME]: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement>,\n HTMLElement\n >;\n }\n }\n}\n"],"mappings":";;;;AAEmD,eAAA,OAAA,CAAA;EAAA,UAAA,GAAA,CAAA;cAAA,iBAAA,CAAA;MAMtBE,CADtBF,cAAAA,CACsBE,EADLC,KAAAA,CAAME,iBACDH,CAArBC,KAAAA,CAAMC,cAAAA,CAAeF,WAAfE,CAAAA,EACNF,WAAAA,CAFgBC;IAAjBH;EAAc"}
1
+ {"version":3,"file":"jsx.d.ts","names":["DIFFS_TAG_NAME","_0","HTMLElement","React","HTMLAttributes","DetailedHTMLProps","sideEffect"],"sources":["../../src/react/jsx.d.ts"],"sourcesContent":["import 'react';\n\nimport type { DIFFS_TAG_NAME } from '../constants';\n\ndeclare module 'react' {\n namespace JSX {\n interface IntrinsicElements {\n [DIFFS_TAG_NAME]: React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement>,\n HTMLElement\n >;\n }\n }\n}\n"],"mappings":";;;;eAEmD,OAAA,CAAA;YAAA,GAAA,CAAA;IAMtBE,UAAAA,iBAAAA,CAAAA;MAArBC,CADDH,cAAAA,CACOI,EADUD,KAAAA,CAAME,iBAChBD,CAAND,KAAAA,CAAMC,cACNF,CADqBA,WACrBA,CAAAA,EAAAA,WAFsBG,CAAvBL;IAAc;EAAAM"}
@@ -1 +0,0 @@
1
- import "react";
@@ -1 +1 @@
1
- {"version":3,"file":"DiffHunksRenderer.d.ts","names":["options: BaseDiffOptions","onRenderUpdate?: () => unknown","workerManager?: WorkerPoolManager | undefined"],"sources":["../../src/renderers/DiffHunksRenderer.ts"],"sourcesContent":[],"mappings":";;;;;;KA4FK,mBAAA,GAAsB,SACzB,KAAK;UAGU,iBAAA;gBACD;EAnDuB,YA8ClC,EAMW,cANX,EAAA,GAAA,SAAA;EACE,UAAA,EAMO,cANP,EAAA,GAAA,SAAA;EAAL,QAAA,EAOU,QAPV,EAAA;EADyB,GAAA,EAAA,MAAA;EAAA,OAAA,EAUhB,OAVgB;EAI3B,aAAiB,EAOA,OAPA,GAAA,SAAA;EACD,UAAA,EAAA,MAAA;EACA,WAAA,EAAA,MAAA;EACF,aAAA,EAAA,OAAA,GAAA,MAAA,GAAA,SAAA;;AAGH,cASE,iBATF,CAAA,cAAA,SAAA,CAAA,CAAA;EACM,OAAA,EAuBG,eAvBH;EAAA,QAAA,cAAA;EAQjB,QAAa,aAAA;EAeO,SAAA,IAAA,EAAA,MAAA;EAAA,QAAA,WAAA;EAEQ,QAAA,IAAA;EAyBN,QAAA,aAAA;EAQI,QAAA,mBAAA;EAOa,QAAA,mBAAA;EAiBD,QAAA,YAAA;EAID,QAAA,WAAA;EAAZ,WAAA,CAAA,OAAA,CAAA,EA/DL,eA+DK,EAAA,cAAA,CAAA,EAAA,CAAA,GAAA,GAAA,OAAA,CAAA,GAAA,SAAA,EAAA,aAAA,CAAA,EA7DG,iBA6DH,GAAA,SAAA;EAIgC,OAAA,CAAA,CAAA,EAAA,IAAA;EAAnB,OAAA,CAAA,CAAA,EAAA,IAAA;EAkBV,UAAA,CAAA,OAAA,EA1DN,eA0DM,CAAA,EAAA,IAAA;EAuCa,QAAA,YAAA;EAAR,YAAA,CAAA,SAAA,EAzFP,UAyFO,CAAA,EAAA,IAAA;EAOjB,UAAA,CAAA,KAAA,EAAA,MAAA,EAAA,SAAA,EAzFuB,mBAyFvB,CAAA,EAAA,IAAA;EAuDN,eAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EA/H4B,mBA+H5B;EACO,mBAAA,CAAA,CAAA,EA5HQ,GA4HR,CAAA,MAAA,EA5HoB,mBA4HpB,CAAA;EACZ,kBAAA,CAAA,eAAA,EAzHiC,kBAyHjC,CAzHoD,WAyHpD,CAAA,EAAA,CAAA,EAAA,IAAA;EAqGK,sBAAA,CAAA,CAAA,EA5MkB,mBA4MlB;EACO,qBAAA,CAAA,CAAA,EAtKgB,OAsKhB,CAtKwB,gBAsKxB,CAAA;EACJ,OAAA,CAAA,IAAA,EAhKG,gBAgKH,GAAA,SAAA,CAAA,EAAA,IAAA;EAAR,QAAA,gBAAA;EA6DK,UAAA,CAAA,IAAA,CAAA,EAtKA,gBAsKA,GAAA,SAAA,EAAA,WAAA,CAAA,EArKO,WAqKP,CAAA,EApKL,iBAoKK,GAAA,SAAA;EACE,WAAA,CAAA,IAAA,EAhEF,gBAgEE,EAAA,WAAA,CAAA,EA/DK,WA+DL,CAAA,EA9DP,OA8DO,CA9DC,iBA8DD,CAAA;EACC,QAAA,gBAAA;EAqXD,QAAA,cAAA;EACE,QAAA,yBAAA;EACT,kBAAA,CAAA,IAAA,EAzXK,gBAyXL,EAAA,MAAA,EAxXO,gBAwXP,EAAA,OAAA,EAvXQ,iBAuXR,CAAA,EAAA,IAAA;EAyCO,gBAAA,CAAA,KAAA,EAAA,OAAA,CAAA,EAAA,IAAA;EACM,QAAA,iBAAA;EAMJ,aAAA,CAAA,MAAA,EAlDF,iBAkDE,EAAA,QAAA,CAAA,EAjDA,cAiDA,EAAA,CAAA,EAhDT,OAgDS;EAAA,cAAA,CAAA,MAAA,EAPF,iBAOE,EAAA,YAAA,CAAA,EANI,cAMJ,EAAA,CAAA,EAAA,MAAA;8BAAA"}
1
+ {"version":3,"file":"DiffHunksRenderer.d.ts","names":["options: BaseDiffOptions","onRenderUpdate?: () => unknown","workerManager?: WorkerPoolManager | undefined"],"sources":["../../src/renderers/DiffHunksRenderer.ts"],"sourcesContent":[],"mappings":";;;;;;KAgGK,mBAAA,GAAsB,SACzB,KAAK;UAGU,iBAAA;gBACD;EAnDuB,YA8ClC,EAMW,cANX,EAAA,GAAA,SAAA;EACE,UAAA,EAMO,cANP,EAAA,GAAA,SAAA;EAAL,QAAA,EAOU,QAPV,EAAA;EADyB,GAAA,EAAA,MAAA;EAAA,OAAA,EAUhB,OAVgB;EAI3B,aAAiB,EAOA,OAPA,GAAA,SAAA;EACD,UAAA,EAAA,MAAA;EACA,WAAA,EAAA,MAAA;EACF,aAAA,EAAA,OAAA,GAAA,MAAA,GAAA,SAAA;;AAGH,cASE,iBATF,CAAA,cAAA,SAAA,CAAA,CAAA;EACM,OAAA,EAuBG,eAvBH;EAAA,QAAA,cAAA;EAQjB,QAAa,aAAA;EAeO,SAAA,IAAA,EAAA,MAAA;EAAA,QAAA,WAAA;EAEQ,QAAA,IAAA;EAyBN,QAAA,aAAA;EAQI,QAAA,mBAAA;EAOa,QAAA,mBAAA;EAiBD,QAAA,YAAA;EAID,QAAA,WAAA;EAAZ,WAAA,CAAA,OAAA,CAAA,EA/DL,eA+DK,EAAA,cAAA,CAAA,EAAA,CAAA,GAAA,GAAA,OAAA,CAAA,GAAA,SAAA,EAAA,aAAA,CAAA,EA7DG,iBA6DH,GAAA,SAAA;EAIgC,OAAA,CAAA,CAAA,EAAA,IAAA;EAAnB,OAAA,CAAA,CAAA,EAAA,IAAA;EAkBV,UAAA,CAAA,OAAA,EA1DN,eA0DM,CAAA,EAAA,IAAA;EAyCa,QAAA,YAAA;EAAR,YAAA,CAAA,SAAA,EA3FP,UA2FO,CAAA,EAAA,IAAA;EAOjB,UAAA,CAAA,KAAA,EAAA,MAAA,EAAA,SAAA,EA3FuB,mBA2FvB,CAAA,EAAA,IAAA;EAuDN,eAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAjI4B,mBAiI5B;EACO,mBAAA,CAAA,CAAA,EA9HQ,GA8HR,CAAA,MAAA,EA9HoB,mBA8HpB,CAAA;EACZ,kBAAA,CAAA,eAAA,EA3HiC,kBA2HjC,CA3HoD,WA2HpD,CAAA,EAAA,CAAA,EAAA,IAAA;EAuGK,sBAAA,CAAA,CAAA,EAhNkB,mBAgNlB;EACO,qBAAA,CAAA,CAAA,EAxKgB,OAwKhB,CAxKwB,gBAwKxB,CAAA;EACJ,OAAA,CAAA,IAAA,EAlKG,gBAkKH,GAAA,SAAA,CAAA,EAAA,IAAA;EAAR,QAAA,gBAAA;EA+DK,UAAA,CAAA,IAAA,CAAA,EA1KA,gBA0KA,GAAA,SAAA,EAAA,WAAA,CAAA,EAzKO,WAyKP,CAAA,EAxKL,iBAwKK,GAAA,SAAA;EACE,WAAA,CAAA,IAAA,EAlEF,gBAkEE,EAAA,WAAA,CAAA,EAjEK,WAiEL,CAAA,EAhEP,OAgEO,CAhEC,iBAgED,CAAA;EACC,QAAA,gBAAA;EAuXD,QAAA,cAAA;EACE,QAAA,yBAAA;EACT,kBAAA,CAAA,IAAA,EA3XK,gBA2XL,EAAA,MAAA,EA1XO,gBA0XP,EAAA,OAAA,EAzXQ,iBAyXR,CAAA,EAAA,IAAA;EAyCO,gBAAA,CAAA,KAAA,EAAA,OAAA,CAAA,EAAA,IAAA;EACM,QAAA,iBAAA;EAMJ,aAAA,CAAA,MAAA,EAlDF,iBAkDE,EAAA,QAAA,CAAA,EAjDA,cAiDA,EAAA,CAAA,EAhDT,OAgDS;EAAA,cAAA,CAAA,MAAA,EAPF,iBAOE,EAAA,YAAA,CAAA,EANI,cAMJ,EAAA,CAAA,EAAA,MAAA;8BAAA"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_EXPANDED_REGION, DEFAULT_THEMES } from "../constants.js";
1
+ import { DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_THEMES } from "../constants.js";
2
2
  import { areLanguagesAttached } from "../highlighter/languages/areLanguagesAttached.js";
3
3
  import { getHighlighterIfLoaded, getSharedHighlighter } from "../highlighter/shared_highlighter.js";
4
4
  import { areThemesAttached } from "../highlighter/themes/areThemesAttached.js";
@@ -103,7 +103,7 @@ var DiffHunksRenderer = class {
103
103
  }
104
104
  }
105
105
  getOptionsWithDefaults() {
106
- const { diffIndicators = "bars", diffStyle = "split", disableBackground = false, disableFileHeader = false, disableLineNumbers = false, disableVirtualizationBuffers = false, expandUnchanged = false, expansionLineCount = 100, hunkSeparators = "line-info", lineDiffType = "word-alt", maxLineDiffLength = 1e3, overflow = "scroll", theme = DEFAULT_THEMES, themeType = "system", tokenizeMaxLineLength = 1e3, useCSSClasses = false } = this.options;
106
+ const { diffIndicators = "bars", diffStyle = "split", disableBackground = false, disableFileHeader = false, disableLineNumbers = false, disableVirtualizationBuffers = false, expandUnchanged = false, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, expansionLineCount = 100, hunkSeparators = "line-info", lineDiffType = "word-alt", maxLineDiffLength = 1e3, overflow = "scroll", theme = DEFAULT_THEMES, themeType = "system", tokenizeMaxLineLength = 1e3, useCSSClasses = false } = this.options;
107
107
  return {
108
108
  diffIndicators,
109
109
  diffStyle,
@@ -112,6 +112,7 @@ var DiffHunksRenderer = class {
112
112
  disableLineNumbers,
113
113
  disableVirtualizationBuffers,
114
114
  expandUnchanged,
115
+ collapsedContextThreshold,
115
116
  expansionLineCount,
116
117
  hunkSeparators,
117
118
  lineDiffType,
@@ -172,7 +173,7 @@ var DiffHunksRenderer = class {
172
173
  }
173
174
  renderDiff(diff = this.renderCache?.diff, renderRange = DEFAULT_RENDER_RANGE) {
174
175
  if (diff == null) return;
175
- const { expandUnchanged = false } = this.options;
176
+ const { expandUnchanged = false, collapsedContextThreshold } = this.getOptionsWithDefaults();
176
177
  const cache = this.workerManager?.getDiffResultCache(diff);
177
178
  if (cache != null && this.renderCache == null) this.renderCache = {
178
179
  diff,
@@ -190,7 +191,7 @@ var DiffHunksRenderer = class {
190
191
  };
191
192
  if (this.workerManager?.isWorkingPool() === true) {
192
193
  if (this.renderCache.result == null || !this.renderCache.highlighted && !areRenderRangesEqual(this.renderCache.renderRange, renderRange)) {
193
- this.renderCache.result = this.workerManager.getPlainDiffAST(diff, renderRange.startingLine, renderRange.totalLines, isDefaultRenderRange(renderRange) ? true : expandUnchanged ? true : this.expandedHunks);
194
+ this.renderCache.result = this.workerManager.getPlainDiffAST(diff, renderRange.startingLine, renderRange.totalLines, isDefaultRenderRange(renderRange) ? true : expandUnchanged ? true : this.expandedHunks, collapsedContextThreshold);
194
195
  this.renderCache.renderRange = renderRange;
195
196
  }
196
197
  if (renderRange.totalLines > 0 && (!this.renderCache.highlighted || forceRender)) this.workerManager.highlightDiffAST(this, diff);
@@ -240,10 +241,12 @@ var DiffHunksRenderer = class {
240
241
  }
241
242
  renderDiffWithHighlighter(diff, highlighter, forcePlainText = false) {
242
243
  const { options } = this.getRenderOptions(diff);
244
+ const { collapsedContextThreshold } = this.getOptionsWithDefaults();
243
245
  return {
244
246
  result: renderDiffWithHighlighter(diff, highlighter, options, {
245
247
  forcePlainText,
246
- expandedHunks: forcePlainText ? true : void 0
248
+ expandedHunks: forcePlainText ? true : void 0,
249
+ collapsedContextThreshold
247
250
  }),
248
251
  options
249
252
  };
@@ -264,7 +267,7 @@ var DiffHunksRenderer = class {
264
267
  console.error(error);
265
268
  }
266
269
  processDiffResult(fileDiff, renderRange, { code, themeStyles, baseThemeType }) {
267
- const { diffStyle, disableFileHeader, disableVirtualizationBuffers, expandUnchanged, expansionLineCount, hunkSeparators } = this.getOptionsWithDefaults();
270
+ const { diffStyle, disableFileHeader, disableVirtualizationBuffers, expandUnchanged, expansionLineCount, collapsedContextThreshold, hunkSeparators } = this.getOptionsWithDefaults();
268
271
  this.diff = fileDiff;
269
272
  const unified = diffStyle === "unified";
270
273
  let additionsAST = [];
@@ -316,6 +319,7 @@ var DiffHunksRenderer = class {
316
319
  startingLine: renderRange.startingLine,
317
320
  totalLines: renderRange.totalLines,
318
321
  expandedHunks: expandUnchanged ? true : this.expandedHunks,
322
+ collapsedContextThreshold,
319
323
  callback: ({ hunkIndex, hunk, collapsedBefore, collapsedAfter, unifiedDeletionLineIndex, unifiedAdditionLineIndex, splitLineIndex, additionLineIndex, deletionLineIndex, additionLineNumber, deletionLineNumber, type, noEOFCRAddition, noEOFCRDeletion }) => {
320
324
  if (diffStyle === "split") {
321
325
  if (lastHunkIndex != null && lastHunkIndex !== hunkIndex) flushSplitSpan();