@pierre/diffs 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CodeView.d.ts +2 -0
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +36 -1
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts +7 -3
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +70 -53
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +7 -3
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +79 -49
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.js +1 -1
- package/dist/components/VirtualizedFile.d.ts +1 -0
- package/dist/components/VirtualizedFile.d.ts.map +1 -1
- package/dist/components/VirtualizedFile.js +8 -8
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.d.ts +1 -0
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +8 -8
- package/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/dist/editor/editor.d.ts +1 -1
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +8 -4
- package/dist/editor/editor.js.map +1 -1
- package/dist/highlighter/shared_highlighter.d.ts +6 -2
- package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.js +7 -3
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/highlighter/themes/areThemesAttached.js +1 -1
- package/dist/index.js +13 -13
- package/dist/renderers/DiffHunksRenderer.d.ts +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +8 -9
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +1 -1
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +5 -5
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +11 -2
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DiffsHighlighter, DiffsThemeNames, HighlighterTypes, SupportedLanguages } from "../types.js";
|
|
1
|
+
import { DiffsHighlighter, DiffsThemeNames, HighlighterTypes, SupportedLanguages, ThemesType } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/highlighter/shared_highlighter.d.ts
|
|
4
4
|
type CachedOrLoadingHighlighterType = Promise<DiffsHighlighter> | DiffsHighlighter | undefined;
|
|
@@ -13,7 +13,11 @@ declare function getSharedHighlighter({
|
|
|
13
13
|
preferredHighlighter
|
|
14
14
|
}: HighlighterOptions): Promise<DiffsHighlighter>;
|
|
15
15
|
declare function isHighlighterLoaded(h?: CachedOrLoadingHighlighterType): h is DiffsHighlighter;
|
|
16
|
-
|
|
16
|
+
interface GetHighlighterIfLoadedProps {
|
|
17
|
+
theme: DiffsThemeNames | ThemesType;
|
|
18
|
+
lang: SupportedLanguages;
|
|
19
|
+
}
|
|
20
|
+
declare function getHighlighterIfLoaded(withSettings?: GetHighlighterIfLoadedProps): DiffsHighlighter | undefined;
|
|
17
21
|
declare function isHighlighterLoading(h?: CachedOrLoadingHighlighterType): h is Promise<DiffsHighlighter>;
|
|
18
22
|
declare function isHighlighterNull(h?: CachedOrLoadingHighlighterType): h is undefined;
|
|
19
23
|
declare function preloadHighlighter(options: HighlighterOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared_highlighter.d.ts","names":[],"sources":["../../src/highlighter/shared_highlighter.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"shared_highlighter.d.ts","names":[],"sources":["../../src/highlighter/shared_highlighter.ts"],"mappings":";;;KA2BK,8BAAA,GACD,OAAA,CAAQ,gBAAA,IACR,gBAAA;AAAA,UAKM,kBAAA;EACR,MAAA,EAAQ,eAAA;EACR,KAAA,EAAO,kBAAA;EACP,oBAAA,GAAuB,gBAAA;AAAA;AAAA,iBAGH,oBAAA;EACpB,MAAA;EACA,KAAA;EACA;AAAA,GACC,kBAAA,GAAqB,OAAA,CAAQ,gBAAA;AAAA,iBAmDhB,mBAAA,CACd,CAAA,GAAG,8BAAA,GACF,CAAA,IAAK,gBAAgB;AAAA,UAId,2BAAA;EACR,KAAA,EAAO,eAAA,GAAkB,UAAA;EACzB,IAAA,EAAM,kBAAA;AAAA;AAAA,iBAGQ,sBAAA,CACd,YAAA,GAAe,2BAAA,GACd,gBAAgB;AAAA,iBAcH,oBAAA,CACd,CAAA,GAAG,8BAAA,GACF,CAAA,IAAK,OAAA,CAAQ,gBAAA;AAAA,iBAIA,iBAAA,CACd,CAAA,GAAG,8BAA4C,GAC9C,CAAA;AAAA,iBAImB,kBAAA,CACpB,OAAA,EAAS,kBAAA,GACR,OAAO;AAAA,iBAIY,kBAAA,IAAsB,OAAO"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { areLanguagesAttached } from "./languages/areLanguagesAttached.js";
|
|
1
2
|
import { attachResolvedLanguages } from "./languages/attachResolvedLanguages.js";
|
|
2
3
|
import { cleanUpResolvedLanguages } from "./languages/cleanUpResolvedLanguages.js";
|
|
3
4
|
import { getResolvedOrResolveLanguage } from "./languages/getResolvedOrResolveLanguage.js";
|
|
5
|
+
import { areThemesAttached } from "./themes/areThemesAttached.js";
|
|
4
6
|
import { themeResolver } from "./themes/themeResolver.js";
|
|
5
7
|
import { attachResolvedThemes } from "./themes/attachResolvedThemes.js";
|
|
6
8
|
import { cleanUpResolvedThemes } from "./themes/cleanUpResolvedThemes.js";
|
|
@@ -18,7 +20,7 @@ async function getSharedHighlighter({ themes, langs, preferredHighlighter = "shi
|
|
|
18
20
|
const instance = isHighlighterLoading(highlighter) ? await highlighter : highlighter;
|
|
19
21
|
highlighter = instance;
|
|
20
22
|
const languageLoaders = [];
|
|
21
|
-
for (const language of langs) {
|
|
23
|
+
for (const language of Array.from(new Set(langs))) {
|
|
22
24
|
if (language === "text" || language === "ansi") continue;
|
|
23
25
|
const maybeResolvedLanguage = getResolvedOrResolveLanguage(language);
|
|
24
26
|
if ("then" in maybeResolvedLanguage) languageLoaders.push(maybeResolvedLanguage);
|
|
@@ -40,8 +42,10 @@ async function getSharedHighlighter({ themes, langs, preferredHighlighter = "shi
|
|
|
40
42
|
function isHighlighterLoaded(h = highlighter) {
|
|
41
43
|
return h != null && !("then" in h);
|
|
42
44
|
}
|
|
43
|
-
function getHighlighterIfLoaded() {
|
|
44
|
-
if (highlighter
|
|
45
|
+
function getHighlighterIfLoaded(withSettings) {
|
|
46
|
+
if (highlighter == null || "then" in highlighter) return;
|
|
47
|
+
if (withSettings != null && (!areThemesAttached(withSettings.theme) || !areLanguagesAttached(withSettings.lang))) return;
|
|
48
|
+
return highlighter;
|
|
45
49
|
}
|
|
46
50
|
function isHighlighterLoading(h = highlighter) {
|
|
47
51
|
return h != null && "then" in h;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared_highlighter.js","names":[],"sources":["../../src/highlighter/shared_highlighter.ts"],"sourcesContent":["import type { ThemeLoader } from '@pierre/theming';\nimport { pierreThemes } from '@pierre/theming/themes';\nimport {\n createHighlighter,\n createJavaScriptRegexEngine,\n createOnigurumaEngine,\n} from 'shiki';\n\nimport type {\n DiffsHighlighter,\n DiffsThemeNames,\n HighlighterTypes,\n SupportedLanguages,\n ThemeRegistrationResolved,\n} from '../types';\nimport type { ResolvedLanguage } from '../worker/types';\nimport { attachResolvedLanguages } from './languages/attachResolvedLanguages';\nimport { cleanUpResolvedLanguages } from './languages/cleanUpResolvedLanguages';\nimport { getResolvedOrResolveLanguage } from './languages/getResolvedOrResolveLanguage';\nimport { attachResolvedThemes } from './themes/attachResolvedThemes';\nimport { cleanUpResolvedThemes } from './themes/cleanUpResolvedThemes';\nimport { getResolvedOrResolveTheme } from './themes/getResolvedOrResolveTheme';\nimport { themeResolver } from './themes/themeResolver';\n\ntype CachedOrLoadingHighlighterType =\n | Promise<DiffsHighlighter>\n | DiffsHighlighter\n | undefined;\n\nlet highlighter: CachedOrLoadingHighlighterType;\n\ninterface HighlighterOptions {\n themes: DiffsThemeNames[];\n langs: SupportedLanguages[];\n preferredHighlighter?: HighlighterTypes;\n}\n\nexport async function getSharedHighlighter({\n themes,\n langs,\n preferredHighlighter = 'shiki-js',\n}: HighlighterOptions): Promise<DiffsHighlighter> {\n highlighter ??= createHighlighter({\n themes: [],\n langs: ['text'],\n engine:\n preferredHighlighter === 'shiki-wasm'\n ? createOnigurumaEngine(import('shiki/wasm'))\n : createJavaScriptRegexEngine(),\n }) as Promise<DiffsHighlighter>;\n\n const instance = isHighlighterLoading(highlighter)\n ? await highlighter\n : highlighter;\n highlighter = instance;\n\n const languageLoaders: Promise<ResolvedLanguage>[] = [];\n for (const language of langs) {\n if (language === 'text' || language === 'ansi') continue;\n const maybeResolvedLanguage = getResolvedOrResolveLanguage(language);\n if ('then' in maybeResolvedLanguage) {\n languageLoaders.push(maybeResolvedLanguage);\n } else {\n attachResolvedLanguages(maybeResolvedLanguage, instance);\n }\n }\n\n const themeLoaders: Promise<ThemeRegistrationResolved>[] = [];\n for (const themeName of themes) {\n const maybeResolvedTheme = getResolvedOrResolveTheme(themeName);\n if ('then' in maybeResolvedTheme) {\n themeLoaders.push(maybeResolvedTheme);\n } else {\n attachResolvedThemes(maybeResolvedTheme, highlighter);\n }\n }\n\n // If we need to load any languages or themes, lets do that now\n if (languageLoaders.length > 0 || themeLoaders.length > 0) {\n await Promise.all([\n Promise.all(languageLoaders).then((languages) => {\n attachResolvedLanguages(languages, instance);\n }),\n Promise.all(themeLoaders).then((themes) => {\n attachResolvedThemes(themes, instance);\n }),\n ]);\n }\n\n return instance;\n}\n\nexport function isHighlighterLoaded(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is DiffsHighlighter {\n return h != null && !('then' in h);\n}\n\nexport function getHighlighterIfLoaded(): DiffsHighlighter | undefined {\n if (highlighter
|
|
1
|
+
{"version":3,"file":"shared_highlighter.js","names":[],"sources":["../../src/highlighter/shared_highlighter.ts"],"sourcesContent":["import type { ThemeLoader } from '@pierre/theming';\nimport { pierreThemes } from '@pierre/theming/themes';\nimport {\n createHighlighter,\n createJavaScriptRegexEngine,\n createOnigurumaEngine,\n} from 'shiki';\n\nimport type {\n DiffsHighlighter,\n DiffsThemeNames,\n HighlighterTypes,\n SupportedLanguages,\n ThemeRegistrationResolved,\n ThemesType,\n} from '../types';\nimport type { ResolvedLanguage } from '../worker/types';\nimport { areLanguagesAttached } from './languages/areLanguagesAttached';\nimport { attachResolvedLanguages } from './languages/attachResolvedLanguages';\nimport { cleanUpResolvedLanguages } from './languages/cleanUpResolvedLanguages';\nimport { getResolvedOrResolveLanguage } from './languages/getResolvedOrResolveLanguage';\nimport { areThemesAttached } from './themes/areThemesAttached';\nimport { attachResolvedThemes } from './themes/attachResolvedThemes';\nimport { cleanUpResolvedThemes } from './themes/cleanUpResolvedThemes';\nimport { getResolvedOrResolveTheme } from './themes/getResolvedOrResolveTheme';\nimport { themeResolver } from './themes/themeResolver';\n\ntype CachedOrLoadingHighlighterType =\n | Promise<DiffsHighlighter>\n | DiffsHighlighter\n | undefined;\n\nlet highlighter: CachedOrLoadingHighlighterType;\n\ninterface HighlighterOptions {\n themes: DiffsThemeNames[];\n langs: SupportedLanguages[];\n preferredHighlighter?: HighlighterTypes;\n}\n\nexport async function getSharedHighlighter({\n themes,\n langs,\n preferredHighlighter = 'shiki-js',\n}: HighlighterOptions): Promise<DiffsHighlighter> {\n highlighter ??= createHighlighter({\n themes: [],\n langs: ['text'],\n engine:\n preferredHighlighter === 'shiki-wasm'\n ? createOnigurumaEngine(import('shiki/wasm'))\n : createJavaScriptRegexEngine(),\n }) as Promise<DiffsHighlighter>;\n\n const instance = isHighlighterLoading(highlighter)\n ? await highlighter\n : highlighter;\n highlighter = instance;\n\n const languageLoaders: Promise<ResolvedLanguage>[] = [];\n for (const language of Array.from(new Set(langs))) {\n if (language === 'text' || language === 'ansi') continue;\n const maybeResolvedLanguage = getResolvedOrResolveLanguage(language);\n if ('then' in maybeResolvedLanguage) {\n languageLoaders.push(maybeResolvedLanguage);\n } else {\n attachResolvedLanguages(maybeResolvedLanguage, instance);\n }\n }\n\n const themeLoaders: Promise<ThemeRegistrationResolved>[] = [];\n for (const themeName of themes) {\n const maybeResolvedTheme = getResolvedOrResolveTheme(themeName);\n if ('then' in maybeResolvedTheme) {\n themeLoaders.push(maybeResolvedTheme);\n } else {\n attachResolvedThemes(maybeResolvedTheme, highlighter);\n }\n }\n\n // If we need to load any languages or themes, lets do that now\n if (languageLoaders.length > 0 || themeLoaders.length > 0) {\n await Promise.all([\n Promise.all(languageLoaders).then((languages) => {\n attachResolvedLanguages(languages, instance);\n }),\n Promise.all(themeLoaders).then((themes) => {\n attachResolvedThemes(themes, instance);\n }),\n ]);\n }\n\n return instance;\n}\n\nexport function isHighlighterLoaded(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is DiffsHighlighter {\n return h != null && !('then' in h);\n}\n\ninterface GetHighlighterIfLoadedProps {\n theme: DiffsThemeNames | ThemesType;\n lang: SupportedLanguages;\n}\n\nexport function getHighlighterIfLoaded(\n withSettings?: GetHighlighterIfLoadedProps\n): DiffsHighlighter | undefined {\n if (highlighter == null || 'then' in highlighter) {\n return undefined;\n }\n if (\n withSettings != null &&\n (!areThemesAttached(withSettings.theme) ||\n !areLanguagesAttached(withSettings.lang))\n ) {\n return undefined;\n }\n return highlighter;\n}\n\nexport function isHighlighterLoading(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is Promise<DiffsHighlighter> {\n return h != null && 'then' in h;\n}\n\nexport function isHighlighterNull(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is undefined {\n return h == null;\n}\n\nexport async function preloadHighlighter(\n options: HighlighterOptions\n): Promise<void> {\n return void (await getSharedHighlighter(options));\n}\n\nexport async function disposeHighlighter(): Promise<void> {\n if (highlighter == null) return;\n (await highlighter).dispose();\n cleanUpResolvedLanguages();\n cleanUpResolvedThemes();\n highlighter = undefined;\n}\n\nfor (const descriptor of pierreThemes.getThemes()) {\n themeResolver.registerThemeIfAbsent(\n descriptor.name,\n descriptor.load as ThemeLoader<ThemeRegistrationResolved>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAgCA,IAAI;AAQJ,eAAsB,qBAAqB,EACzC,QACA,OACA,uBAAuB,cACyB;CAChD,gBAAgB,kBAAkB;EAChC,QAAQ,CAAC;EACT,OAAO,CAAC,MAAM;EACd,QACE,yBAAyB,eACrB,sBAAsB,OAAO,aAAa,IAC1C,4BAA4B;CACpC,CAAC;CAED,MAAM,WAAW,qBAAqB,WAAW,IAC7C,MAAM,cACN;CACJ,cAAc;CAEd,MAAM,kBAA+C,CAAC;CACtD,KAAK,MAAM,YAAY,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG;EACjD,IAAI,aAAa,UAAU,aAAa,QAAQ;EAChD,MAAM,wBAAwB,6BAA6B,QAAQ;EACnE,IAAI,UAAU,uBACZ,gBAAgB,KAAK,qBAAqB;OAE1C,wBAAwB,uBAAuB,QAAQ;CAE3D;CAEA,MAAM,eAAqD,CAAC;CAC5D,KAAK,MAAM,aAAa,QAAQ;EAC9B,MAAM,qBAAqB,0BAA0B,SAAS;EAC9D,IAAI,UAAU,oBACZ,aAAa,KAAK,kBAAkB;OAEpC,qBAAqB,oBAAoB,WAAW;CAExD;CAGA,IAAI,gBAAgB,SAAS,KAAK,aAAa,SAAS,GACtD,MAAM,QAAQ,IAAI,CAChB,QAAQ,IAAI,eAAe,CAAC,CAAC,MAAM,cAAc;EAC/C,wBAAwB,WAAW,QAAQ;CAC7C,CAAC,GACD,QAAQ,IAAI,YAAY,CAAC,CAAC,MAAM,WAAW;EACzC,qBAAqB,QAAQ,QAAQ;CACvC,CAAC,CACH,CAAC;CAGH,OAAO;AACT;AAEA,SAAgB,oBACd,IAAoC,aACb;CACvB,OAAO,KAAK,QAAQ,EAAE,UAAU;AAClC;AAOA,SAAgB,uBACd,cAC8B;CAC9B,IAAI,eAAe,QAAQ,UAAU,aACnC;CAEF,IACE,gBAAgB,SACf,CAAC,kBAAkB,aAAa,KAAK,KACpC,CAAC,qBAAqB,aAAa,IAAI,IAEzC;CAEF,OAAO;AACT;AAEA,SAAgB,qBACd,IAAoC,aACJ;CAChC,OAAO,KAAK,QAAQ,UAAU;AAChC;AAEA,SAAgB,kBACd,IAAoC,aACpB;CAChB,OAAO,KAAK;AACd;AAEA,eAAsB,mBACpB,SACe;CACR,MAAY,qBAAqB,OAAO;AACjD;AAEA,eAAsB,qBAAoC;CACxD,IAAI,eAAe,MAAM;CACzB,CAAC,MAAM,YAAA,CAAa,QAAQ;CAC5B,yBAAyB;CACzB,sBAAsB;CACtB,cAAc,KAAA;AAChB;AAEA,KAAK,MAAM,cAAc,aAAa,UAAU,GAC9C,cAAc,sBACZ,WAAW,MACX,WAAW,IACb"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AttachedThemes } from "./constants.js";
|
|
2
1
|
import { getThemes } from "../../utils/getThemes.js";
|
|
2
|
+
import { AttachedThemes } from "./constants.js";
|
|
3
3
|
//#region src/highlighter/themes/areThemesAttached.ts
|
|
4
4
|
function areThemesAttached(themes) {
|
|
5
5
|
for (const theme of getThemes(themes)) if (!AttachedThemes.has(theme)) return false;
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
import { ALTERNATE_FILE_NAMES_GIT, CODE_VIEW_FOOTER_ATTRIBUTE, CODE_VIEW_HEADER_ATTRIBUTE, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, CUSTOM_HEADER_SLOT_ID, DEFAULT_CODE_VIEW_FILE_METRICS, DEFAULT_CODE_VIEW_LAYOUT, DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_SMOOTH_SCROLL_SETTINGS, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH, DEFAULT_VIRTUAL_FILE_METRICS, DIFFS_DEVELOPMENT_BUILD, DIFFS_SCROLLBAR_GUTTER_MEASURED_PROPERTY, DIFFS_SCROLLBAR_MEASURE_ATTRIBUTE, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, GIT_DIFF_FILE_BREAK_REGEX, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, HUNK_HEADER, INDEX_LINE_METADATA, MERGE_CONFLICT_BASE_MARKER_REGEX, MERGE_CONFLICT_END_MARKER_REGEX, MERGE_CONFLICT_SEPARATOR_MARKER_REGEX, MERGE_CONFLICT_START_MARKER_REGEX, SPLIT_WITH_NEWLINES, THEME_CSS_ATTRIBUTE, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE } from "./constants.js";
|
|
2
|
-
import { clearRenderQueue, dequeueRender, queueRender } from "./managers/UniversalRenderingManager.js";
|
|
3
|
-
import { areObjectsEqual } from "./utils/areObjectsEqual.js";
|
|
4
|
-
import { areThemesEqual } from "./utils/areThemesEqual.js";
|
|
5
|
-
import { areOptionsEqual } from "./utils/areOptionsEqual.js";
|
|
6
|
-
import { areSelectionsEqual } from "./utils/areSelectionsEqual.js";
|
|
7
|
-
import { createWindowFromScrollPosition } from "./utils/createWindowFromScrollPosition.js";
|
|
8
|
-
import { prefersReducedMotion } from "./utils/prefersReducedMotion.js";
|
|
9
|
-
import { createGutterGap, createGutterItem, createGutterWrapper, createHastElement, createIconElement, createTextNodeElement, findCodeElement } from "./utils/hast_utils.js";
|
|
10
|
-
import { createGutterUtilityElement } from "./utils/createGutterUtilityElement.js";
|
|
11
|
-
import { InteractionManager, pluckInteractionOptions } from "./managers/InteractionManager.js";
|
|
12
|
-
import { ResizeManager } from "./managers/ResizeManager.js";
|
|
13
2
|
import { AttachedLanguages, RegisteredCustomLanguages, ResolvedLanguages, ResolvingLanguages } from "./highlighter/languages/constants.js";
|
|
14
3
|
import { areLanguagesAttached } from "./highlighter/languages/areLanguagesAttached.js";
|
|
15
4
|
import { attachResolvedLanguages } from "./highlighter/languages/attachResolvedLanguages.js";
|
|
@@ -17,14 +6,25 @@ import { cleanUpResolvedLanguages } from "./highlighter/languages/cleanUpResolve
|
|
|
17
6
|
import { isWorkerContext } from "./utils/isWorkerContext.js";
|
|
18
7
|
import { resolveLanguage } from "./highlighter/languages/resolveLanguage.js";
|
|
19
8
|
import { getResolvedOrResolveLanguage } from "./highlighter/languages/getResolvedOrResolveLanguage.js";
|
|
9
|
+
import { getThemes } from "./utils/getThemes.js";
|
|
20
10
|
import { AttachedThemes } from "./highlighter/themes/constants.js";
|
|
11
|
+
import { areThemesAttached } from "./highlighter/themes/areThemesAttached.js";
|
|
21
12
|
import { attachResolvedThemes } from "./highlighter/themes/attachResolvedThemes.js";
|
|
22
13
|
import { cleanUpResolvedThemes } from "./highlighter/themes/cleanUpResolvedThemes.js";
|
|
23
14
|
import { resolveTheme } from "./highlighter/themes/resolveTheme.js";
|
|
24
15
|
import { getResolvedOrResolveTheme } from "./highlighter/themes/getResolvedOrResolveTheme.js";
|
|
25
16
|
import { disposeHighlighter, getHighlighterIfLoaded, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter } from "./highlighter/shared_highlighter.js";
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
17
|
+
import { clearRenderQueue, dequeueRender, queueRender } from "./managers/UniversalRenderingManager.js";
|
|
18
|
+
import { areObjectsEqual } from "./utils/areObjectsEqual.js";
|
|
19
|
+
import { areThemesEqual } from "./utils/areThemesEqual.js";
|
|
20
|
+
import { areOptionsEqual } from "./utils/areOptionsEqual.js";
|
|
21
|
+
import { areSelectionsEqual } from "./utils/areSelectionsEqual.js";
|
|
22
|
+
import { createWindowFromScrollPosition } from "./utils/createWindowFromScrollPosition.js";
|
|
23
|
+
import { prefersReducedMotion } from "./utils/prefersReducedMotion.js";
|
|
24
|
+
import { createGutterGap, createGutterItem, createGutterWrapper, createHastElement, createIconElement, createTextNodeElement, findCodeElement } from "./utils/hast_utils.js";
|
|
25
|
+
import { createGutterUtilityElement } from "./utils/createGutterUtilityElement.js";
|
|
26
|
+
import { InteractionManager, pluckInteractionOptions } from "./managers/InteractionManager.js";
|
|
27
|
+
import { ResizeManager } from "./managers/ResizeManager.js";
|
|
28
28
|
import { hasResolvedThemes } from "./highlighter/themes/hasResolvedThemes.js";
|
|
29
29
|
import { areFileRenderOptionsEqual } from "./utils/areFileRenderOptionsEqual.js";
|
|
30
30
|
import { areRenderRangesEqual } from "./utils/areRenderRangesEqual.js";
|
|
@@ -99,7 +99,7 @@ declare class DiffHunksRenderer<LAnnotation = undefined> {
|
|
|
99
99
|
* cache owner so the editor can reuse it without mutating shared data. An
|
|
100
100
|
* empty additions document gets one row for the editor's caret.
|
|
101
101
|
*/
|
|
102
|
-
beginEditSession(diff
|
|
102
|
+
beginEditSession(diff: FileDiffMetadata, externalDiff?: FileDiffMetadata): void;
|
|
103
103
|
/** Leave edit-session mode. The exit recompute is the host's concern. */
|
|
104
104
|
endEditSession(): void;
|
|
105
105
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiffHunksRenderer.d.ts","names":[],"sources":["../../src/renderers/DiffHunksRenderer.ts"],"mappings":";;;;;;;UAoJiB,wBAAA,SAAiC,eAAe;EAC/D,gBAAA,GAAmB,oBAAA;AAAA;AAAA,UAGJ,oCAAA,SAA6C,IAAA,CAC5D,2BAAA;EAGA,gBAAA,EAAkB,oBAAA;AAAA;AAAA,UAGH,0BAAA;EACf,IAAA;EACA,QAAA,EAAU,SAAS;EACnB,iBAAA;EACA,iBAAA;AAAA;AAAA,UAGe,wBAAA;EACf,IAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,UAGe,cAAA;EACf,cAAA,EAAgB,SAAA;EAChB,gBAAA,GAAmB,UAAA;EACnB,iBAAA,GAAoB,UAAA;AAAA;AAAA,UAUL,mBAAA;EACf,IAAA;EACA,SAAA;EACA,SAAA;EACA,gBAAA;EACA,cAAA;EACA,YAAA,GAAe,gBAAA;EACf,YAAA,GAAe,gBAAgB;AAAA;AAAA,UAGhB,WAAA;EACf,OAAA,EAAS,OAAA;EACT,MAAA,EAAQ,OAAW;AAAA;AAAA,UAGJ,gBAAA;EACf,QAAA,EAAU,WAAA;EACV,QAAA,EAAU,WAAW;AAAA;AAAA,UAGN,2BAAA;EACf,MAAA,GAAS,WAAA;EACT,KAAA,GAAQ,WAAW;AAAA;AAAA,UAGJ,yBAAA;EACf,MAAA,GAAS,gBAAA;EACT,KAAA,GAAQ,gBAAgB;AAAA;AAAA,UAGT,iBAAA;EACf,QAAA,EAAU,gBAAA;EACV,gBAAA,EAAkB,cAAA;EAClB,iBAAA,EAAmB,cAAA;EACnB,kBAAA,EAAoB,cAAA;EACpB,mBAAA,EAAqB,cAAA;EACrB,kBAAA,EAAoB,cAAA;EACpB,mBAAA,EAAqB,cAAA;EACrB,QAAA,EAAU,QAAA;EACV,GAAA;EACA,OAAA,EAAS,OAAA;EACT,aAAA,EAAe,OAAA;EACf,UAAA;EACA,WAAA;EACA,aAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;AAAA;AAAA,cAKW,iBAAA;EAgCF,OAAA,EAAS,wBAAA;EAAA,QACR,kBAAA;EAAA,QAGA,cAAA;EAAA,QACA,aAAA;EAAA,SApCD,IAAA;EAAA,QAED,WAAA;EAAA,QAIA,IAAA;EAAA,QAEA,aAAA;EAAA,QAEA,mBAAA;EAAA,QACA,mBAAA;EAAA,QAEA,YAAA;EAAA,QACA,WAAA;EAAA,QAGA,sBAAA;EAAA,QAGA,qBAAA;EAAA,QAQA,iBAAA;EAER,WAAA,CACS,OAAA,GAAS,wBAAA,EACR,kBAAA,IACN,UAAA,EAAY,kBAAA,CAAmB,WAAA,cAEzB,cAAA,gCACA,aAAA,GAAgB,iBAAA;EASnB,OAAA;EAOA,OAAA;EA7FY;AAAA;AAGrB;;;;;;;EA6GS,gBAAA,CACL,IAAA,
|
|
1
|
+
{"version":3,"file":"DiffHunksRenderer.d.ts","names":[],"sources":["../../src/renderers/DiffHunksRenderer.ts"],"mappings":";;;;;;;UAoJiB,wBAAA,SAAiC,eAAe;EAC/D,gBAAA,GAAmB,oBAAA;AAAA;AAAA,UAGJ,oCAAA,SAA6C,IAAA,CAC5D,2BAAA;EAGA,gBAAA,EAAkB,oBAAA;AAAA;AAAA,UAGH,0BAAA;EACf,IAAA;EACA,QAAA,EAAU,SAAS;EACnB,iBAAA;EACA,iBAAA;AAAA;AAAA,UAGe,wBAAA;EACf,IAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,UAGe,cAAA;EACf,cAAA,EAAgB,SAAA;EAChB,gBAAA,GAAmB,UAAA;EACnB,iBAAA,GAAoB,UAAA;AAAA;AAAA,UAUL,mBAAA;EACf,IAAA;EACA,SAAA;EACA,SAAA;EACA,gBAAA;EACA,cAAA;EACA,YAAA,GAAe,gBAAA;EACf,YAAA,GAAe,gBAAgB;AAAA;AAAA,UAGhB,WAAA;EACf,OAAA,EAAS,OAAA;EACT,MAAA,EAAQ,OAAW;AAAA;AAAA,UAGJ,gBAAA;EACf,QAAA,EAAU,WAAA;EACV,QAAA,EAAU,WAAW;AAAA;AAAA,UAGN,2BAAA;EACf,MAAA,GAAS,WAAA;EACT,KAAA,GAAQ,WAAW;AAAA;AAAA,UAGJ,yBAAA;EACf,MAAA,GAAS,gBAAA;EACT,KAAA,GAAQ,gBAAgB;AAAA;AAAA,UAGT,iBAAA;EACf,QAAA,EAAU,gBAAA;EACV,gBAAA,EAAkB,cAAA;EAClB,iBAAA,EAAmB,cAAA;EACnB,kBAAA,EAAoB,cAAA;EACpB,mBAAA,EAAqB,cAAA;EACrB,kBAAA,EAAoB,cAAA;EACpB,mBAAA,EAAqB,cAAA;EACrB,QAAA,EAAU,QAAA;EACV,GAAA;EACA,OAAA,EAAS,OAAA;EACT,aAAA,EAAe,OAAA;EACf,UAAA;EACA,WAAA;EACA,aAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;AAAA;AAAA,cAKW,iBAAA;EAgCF,OAAA,EAAS,wBAAA;EAAA,QACR,kBAAA;EAAA,QAGA,cAAA;EAAA,QACA,aAAA;EAAA,SApCD,IAAA;EAAA,QAED,WAAA;EAAA,QAIA,IAAA;EAAA,QAEA,aAAA;EAAA,QAEA,mBAAA;EAAA,QACA,mBAAA;EAAA,QAEA,YAAA;EAAA,QACA,WAAA;EAAA,QAGA,sBAAA;EAAA,QAGA,qBAAA;EAAA,QAQA,iBAAA;EAER,WAAA,CACS,OAAA,GAAS,wBAAA,EACR,kBAAA,IACN,UAAA,EAAY,kBAAA,CAAmB,WAAA,cAEzB,cAAA,gCACA,aAAA,GAAgB,iBAAA;EASnB,OAAA;EAOA,OAAA;EA7FY;AAAA;AAGrB;;;;;;;EA6GS,gBAAA,CACL,IAAA,EAAM,gBAAA,EACN,YAAA,GAAe,gBAAA;EA7GI;EA6Kd,cAAA;EA1KQ;;;EAkLR,iBAAA;EAjLP;;;;;AACmB;AAGrB;;;EA8LS,wBAAA,IAA4B,OAAA;EAAA,QAqC3B,oBAAA;EAAA,IA4BG,SAAA,IAAa,gBAAA;EAIjB,gBAAA;EAMA,UAAA,CAAW,OAAA,EAAS,wBAAA;EAIpB,YAAA,CAAa,OAAA,EAAS,OAAA,CAAQ,wBAAA;EAI9B,UAAA,CACL,KAAA,UACA,SAAA,EAAW,mBAAA,EACX,kBAAA;EA0BK,eAAA,CAAgB,SAAA,WAAoB,mBAAA;EAIpC,mBAAA,IAAuB,GAAA,SAAY,mBAAA;;EAKnC,mBAAA,CACL,aAAA,EAAe,GAAA,SAAY,mBAAA;EAKtB,kBAAA,CACL,eAAA,EAAiB,kBAAA,CAAmB,WAAA;EAtTnB;;;;;;EA+UZ,iBAAA,CACL,UAAA,EAAY,GAAA,SAAY,KAAA,CAAM,gBAAA,IAC9B,SAAA,oBACA,uBAAA;EAAA,QA+HM,mBAAA;EAUD,mBAAA,CACL,YAAA,EAAc,YAAA,cAA0B,WAAA;EAAA,QA8DlC,0BAAA;EAAA,QAeA,mCAAA;EAAA,QAaA,mBAAA;EAAA,UAOE,wBAAA;IACR;EAAA,GACC,0BAAA,GAA6B,cAAA;EAAA,UAStB,sBAAA;IACR,IAAA;IACA;EAAA,GACC,wBAAA,GAA2B,cAAA;EAAA,QAetB,uBAAA;EAAA,UAKU,6BAAA,IAChB,GAAA,EAAK,mBAAA,KACF,2BAAA;EAAA,UAGa,2BAAA,IAChB,GAAA,EAAK,mBAAA,KACF,yBAAA;EAAA,UAEK,sBAAA,IAA0B,oCAAA;EAiDvB,qBAAA,IAAyB,OAAA,CAAQ,gBAAA;EAYvC,OAAA,CAAQ,IAAA,EAAM,gBAAA;EAAA,QAmCb,sBAAA;EAQD,uBAAA,IAA2B,IAAA,CAChC,eAAA;EAAA,QAeM,gBAAA;EA5tBa;;;;;EAuwBd,oBAAA,CAAqB,IAAA,EAAM,gBAAA,GAAmB,gBAAA;EAAA,QAwB7C,aAAA;EAiCD,UAAA,CACL,IAAA,GAAM,gBAAA,cACN,WAAA,GAAa,WAAA,GACZ,iBAAA;EAiJU,WAAA,CACX,IAAA,EAAM,gBAAA,EACN,WAAA,GAAa,WAAA,GACZ,OAAA,CAAQ,iBAAA;EAAA,UAMD,gBAAA,CACR,KAAA,WACA,UAAA,UACA,gBAAA,GAAmB,mBAAA,GAClB,OAAA;EAAA,QAeW,cAAA;EAAA,QAyBN,yBAAA;EA2CD,kBAAA,CACL,IAAA,EAAM,gBAAA,EACN,MAAA,EAAQ,gBAAA,EACR,OAAA,EAAS,iBAAA,EACT,WAAA;EAAA,QAQM,oBAAA;EAAA,QAqCA,4BAAA;EAAA,QAgBA,oBAAA;EAAA,QAuBA,yBAAA;EAaD,gBAAA,CAAiB,KAAA;EAAA,QAIhB,oBAAA;EAAA,QAIA,iBAAA;EAgjBD,aAAA,CACL,IAAA,yCACA,MAAA,EAAQ,iBAAA,GACP,cAAA;EAyBI,aAAA,CACL,MAAA,EAAQ,iBAAA,EACR,QAAA,GAAU,cAAA,KACT,OAAA;EAkDI,cAAA,CACL,MAAA,EAAQ,iBAAA,EACR,YAAA,GAAc,cAAA;EAKT,iBAAA,CACL,QAAA,EAAU,cAAA,IACV,UAAA;EAAA,QAqBM,wBAAA;EAAA,QAiEA,cAAA;EAAA,QA+DA,kBAAA;EAAA,QASA,YAAA;AAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DEFAULT_EXPANDED_REGION, DEFAULT_RENDER_RANGE, DEFAULT_THEMES, DEFAULT_TOKENIZE_MAX_LENGTH } from "../constants.js";
|
|
2
|
-
import { getFileAnnotations, shouldRenderFileAnnotations } from "../utils/includesFileAnnotations.js";
|
|
3
|
-
import { createGutterGap, createGutterItem, createGutterWrapper, createHastElement } from "../utils/hast_utils.js";
|
|
4
2
|
import { areLanguagesAttached } from "../highlighter/languages/areLanguagesAttached.js";
|
|
5
|
-
import { getHighlighterIfLoaded, getSharedHighlighter } from "../highlighter/shared_highlighter.js";
|
|
6
3
|
import { areThemesAttached } from "../highlighter/themes/areThemesAttached.js";
|
|
4
|
+
import { getHighlighterIfLoaded, getSharedHighlighter } from "../highlighter/shared_highlighter.js";
|
|
5
|
+
import { getFileAnnotations, shouldRenderFileAnnotations } from "../utils/includesFileAnnotations.js";
|
|
6
|
+
import { createGutterGap, createGutterItem, createGutterWrapper, createHastElement } from "../utils/hast_utils.js";
|
|
7
7
|
import { applyLineTextWithNewline } from "../utils/applyLineTextWithNewline.js";
|
|
8
8
|
import { areRenderRangesEqual } from "../utils/areRenderRangesEqual.js";
|
|
9
9
|
import { createAnnotationElement } from "../utils/createAnnotationElement.js";
|
|
@@ -82,15 +82,13 @@ var DiffHunksRenderer = class {
|
|
|
82
82
|
const { editSessionActive: wasAlreadyActive, renderCache } = this;
|
|
83
83
|
this.editSessionActive = true;
|
|
84
84
|
if (!wasAlreadyActive) this.pendingHighlightResult = void 0;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
this.markEditSessionPass(currentDiff);
|
|
85
|
+
this.diff = diff;
|
|
86
|
+
if (!diff.isPartial && diff.additionLines.length === 0) {
|
|
87
|
+
Object.assign(diff, recomputeEmptyDocumentDiff(diff, this.options.parseDiffOptions));
|
|
88
|
+
this.markEditSessionPass(diff);
|
|
90
89
|
this.clearRenderCache();
|
|
91
90
|
return;
|
|
92
91
|
}
|
|
93
|
-
if (diff == null) return;
|
|
94
92
|
if (renderCache == null) return;
|
|
95
93
|
if (wasAlreadyActive && renderCache.diff === diff) return;
|
|
96
94
|
const { options } = this.getRenderOptions(diff);
|
|
@@ -517,6 +515,7 @@ var DiffHunksRenderer = class {
|
|
|
517
515
|
if (!forcePlainText && hasContent && (!this.renderCache.highlighted || forceHighlight)) this.workerManager.highlightDiffAST(this, diff);
|
|
518
516
|
} else {
|
|
519
517
|
this.computedLang = diff.lang ?? getFiletypeFromFileName(diff.name);
|
|
518
|
+
this.highlighter ??= getHighlighterIfLoaded();
|
|
520
519
|
const hasThemes = this.highlighter != null && areThemesAttached(options.theme);
|
|
521
520
|
const hasLangs = this.highlighter != null && areLanguagesAttached(this.computedLang);
|
|
522
521
|
const canHighlight = !forcePlainText && hasLangs;
|