@principal-ai/principal-view-react 0.16.65 → 0.16.66
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/pierre/PierreFileView.d.ts.map +1 -1
- package/dist/pierre/PierreFileView.js +4 -1
- package/dist/pierre/PierreFileView.js.map +1 -1
- package/dist/pierre/PierreSnippetView.d.ts.map +1 -1
- package/dist/pierre/PierreSnippetView.js +8 -1
- package/dist/pierre/PierreSnippetView.js.map +1 -1
- package/dist/pierre/PierreThroughlineCodeView.d.ts.map +1 -1
- package/dist/pierre/PierreThroughlineCodeView.js +8 -2
- package/dist/pierre/PierreThroughlineCodeView.js.map +1 -1
- package/dist/pierre/index.d.ts +1 -0
- package/dist/pierre/index.d.ts.map +1 -1
- package/dist/pierre/index.js +1 -0
- package/dist/pierre/index.js.map +1 -1
- package/dist/pierre/pierreFileLang.d.ts +23 -0
- package/dist/pierre/pierreFileLang.d.ts.map +1 -0
- package/dist/pierre/pierreFileLang.js +48 -0
- package/dist/pierre/pierreFileLang.js.map +1 -0
- package/package.json +1 -1
- package/src/components/PendingChanges.test.tsx +12 -0
- package/src/pierre/PierreFileView.tsx +6 -2
- package/src/pierre/PierreSnippetView.tsx +10 -2
- package/src/pierre/PierreThroughlineCodeView.tsx +11 -2
- package/src/pierre/index.ts +5 -0
- package/src/pierre/pierreFileLang.test.ts +26 -0
- package/src/pierre/pierreFileLang.ts +51 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PierreFileView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"PierreFileView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,EAAE,mBAAmB,2CAqDrB"}
|
|
@@ -9,11 +9,14 @@ import { useEffect, useMemo, useState } from 'react';
|
|
|
9
9
|
import { File } from '@pierre/diffs/react';
|
|
10
10
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
11
11
|
import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
|
|
12
|
+
import { pierreLangForPath } from './pierreFileLang';
|
|
12
13
|
export function PierreFileView({ filePath, fileName, readFile, background, }) {
|
|
13
14
|
const { theme } = useTheme();
|
|
14
15
|
const [contents, setContents] = useState(null);
|
|
15
16
|
const [error, setError] = useState(null);
|
|
16
|
-
const fileObject = useMemo(() =>
|
|
17
|
+
const fileObject = useMemo(() => contents !== null
|
|
18
|
+
? { name: fileName, contents, lang: pierreLangForPath(filePath) }
|
|
19
|
+
: null, [fileName, filePath, contents]);
|
|
17
20
|
useEffect(() => {
|
|
18
21
|
let cancelled = false;
|
|
19
22
|
setContents(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PierreFileView.js","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"PierreFileView.js","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAWrD,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,GACU;IACpB,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CACH,QAAQ,KAAK,IAAI;QACf,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE;QACjE,CAAC,CAAC,IAAI,EACV,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAC/B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,QAAQ,CAAC,QAAQ,CAAC;aACpB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,CAAC,SAAS;gBAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,SAAS,EAAE;gBACd,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;aACtE;QACH,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,IAAI,KAAK,EAAE;QACT,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE,YAChE,KAAK,GACF,CACP,CAAC;KACH;IACD,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,8BAExD,CACP,CAAC;KACH;IAED,OAAO,CACL,KAAC,IAAI,IACH,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,EACvC,KAAK,EAAE,iBAAiB,GACxB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PierreSnippetView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreSnippetView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"PierreSnippetView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreSnippetView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuBH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAgB,EAChB,QAAQ,EACR,UAAU,GACX,EAAE,sBAAsB,2CA8HxB"}
|
|
@@ -12,6 +12,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
|
12
12
|
import { File } from '@pierre/diffs/react';
|
|
13
13
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
14
14
|
import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
|
|
15
|
+
import { pierreLangForPath } from './pierreFileLang';
|
|
15
16
|
import { sliceSnippetWindow } from './sliceSnippet';
|
|
16
17
|
import { scrollAnchorLine } from './scrollAnchor';
|
|
17
18
|
function scrollFocusLineIntoView(fileContainer, focusOffset) {
|
|
@@ -47,7 +48,13 @@ export function PierreSnippetView({ filePath, fileName, startLine, endLine, focu
|
|
|
47
48
|
return null;
|
|
48
49
|
return sliceSnippetWindow(contents, startLine, endLine, contextLines, focusLine ?? startLine);
|
|
49
50
|
}, [contents, startLine, endLine, contextLines, focusLine]);
|
|
50
|
-
const fileObject = useMemo(() =>
|
|
51
|
+
const fileObject = useMemo(() => slice
|
|
52
|
+
? {
|
|
53
|
+
name: fileName,
|
|
54
|
+
contents: slice.contents,
|
|
55
|
+
lang: pierreLangForPath(filePath),
|
|
56
|
+
}
|
|
57
|
+
: null, [fileName, filePath, slice]);
|
|
51
58
|
const lineNumberOffset = slice ? slice.sliceStart - 1 : 0;
|
|
52
59
|
const onPostRender = useCallback((fileContainer) => {
|
|
53
60
|
if (lineNumberOffset !== 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PierreSnippetView.js","sourceRoot":"","sources":["../../src/pierre/PierreSnippetView.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,SAAS,uBAAuB,CAC9B,aAA0B,EAC1B,WAAmB;IAEnB,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC;IACvD,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAC/B,eAAe,UAAU,IAAI,CACR,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAmBD,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,YAAY,GAAG,CAAC,EAChB,QAAQ,EACR,UAAU,GACa;IACvB,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,QAAQ,CAAC,QAAQ,CAAC;aACpB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,CAAC,SAAS;gBAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,SAAS,EAAE;gBACd,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;aACtE;QACH,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,IAAI,QAAQ,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,kBAAkB,CACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,SAAS,IAAI,SAAS,CACvB,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"PierreSnippetView.js","sourceRoot":"","sources":["../../src/pierre/PierreSnippetView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PierreThroughlineCodeView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreThroughlineCodeView.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"PierreThroughlineCodeView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreThroughlineCodeView.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAS/D,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,oBAAoB,CAAC;IAClC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAWD,wBAAgB,yBAAyB,CAAC,EACxC,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAgB,EAChB,UAAU,GACX,EAAE,8BAA8B,2CAuMhC"}
|
|
@@ -11,6 +11,7 @@ import { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
11
11
|
import { CodeView, } from '@pierre/diffs/react';
|
|
12
12
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
13
13
|
import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
|
|
14
|
+
import { pierreCodeViewFileName, pierreLangForPath, } from './pierreFileLang';
|
|
14
15
|
import { resolvePierreSyntaxThemeName } from './pierreSyntaxTheme';
|
|
15
16
|
import { sliceSnippetWindow } from './sliceSnippet';
|
|
16
17
|
function stepItemId(throughlineId, index) {
|
|
@@ -68,9 +69,14 @@ export function PierreThroughlineCodeView({ throughline, stepIndex, readFile, co
|
|
|
68
69
|
type: 'file',
|
|
69
70
|
version: 1,
|
|
70
71
|
file: {
|
|
71
|
-
//
|
|
72
|
-
|
|
72
|
+
// Unique per-step name: many throughline steps share one path
|
|
73
|
+
// (e.g. seven sites in main.cpp), and identical `name`s have
|
|
74
|
+
// correlated with WebKit renderer traps in CodeView.
|
|
75
|
+
name: pierreCodeViewFileName(step.file, index),
|
|
73
76
|
contents: slice.contents,
|
|
77
|
+
// C-family: force plain text — Pierre maps `.h`→objective-cpp and
|
|
78
|
+
// cpp/obj-c++ highlighting has trapped JSC (JSString::getIndex).
|
|
79
|
+
lang: pierreLangForPath(step.file),
|
|
74
80
|
cacheKey: `${throughline.id}:${index}:${step.file}:${step.line}:${slice.sliceStart}-${slice.sliceEnd}`,
|
|
75
81
|
},
|
|
76
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PierreThroughlineCodeView.js","sourceRoot":"","sources":["../../src/pierre/PierreThroughlineCodeView.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAqB,MAAM,OAAO,CAAC;AAChF,OAAO,EACL,QAAQ,GAIT,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,gBAAgB,CAAC;AAkBvE,SAAS,UAAU,CAAC,aAAqB,EAAE,KAAa;IACtD,OAAO,GAAG,aAAa,IAAI,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EACxC,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,GAAG,CAAC,EAChB,UAAU,GACqB;IAC/B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAA4B,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAEvE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjE,KAAK,OAAO,CAAC,GAAG,CACd,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAU,CAAC;QACnC,CAAC,CAAC,CACH;aACE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,SAAS;gBAAE,OAAO;YACtB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,SAAS;gBAAE,OAAO;YACtB,OAAO,CAAC;gBACN,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;aACrE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAmB,EAAE;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,EAAE,CAAC;QACvC,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,OAAO,kBAAkB,CACvB,QAAQ,EACR,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,YAAY,EACZ,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAmB,EAAE;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9D,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;YAC7B,OAAO;gBACL,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC;gBACrC,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE;oBACJ,
|
|
1
|
+
{"version":3,"file":"PierreThroughlineCodeView.js","sourceRoot":"","sources":["../../src/pierre/PierreThroughlineCodeView.tsx"],"names":[],"mappings":"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"}
|
package/dist/pierre/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { PierreThroughlineCodeView } from './PierreThroughlineCodeView';
|
|
|
6
6
|
export type { PierreThroughlineCodeViewProps } from './PierreThroughlineCodeView';
|
|
7
7
|
export { sliceSnippetWindow } from './sliceSnippet';
|
|
8
8
|
export type { SnippetSlice } from './sliceSnippet';
|
|
9
|
+
export { isPierreCFamilyPath, pierreCodeViewFileName, pierreLangForPath, } from './pierreFileLang';
|
|
9
10
|
export { PIERRE_DEFAULT_SYNTAX_THEMES, resolvePierreSyntaxThemeName, } from './pierreSyntaxTheme';
|
|
10
11
|
export type { PierreSyntaxThemeName } from './pierreSyntaxTheme';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pierre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pierre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/pierre/index.js
CHANGED
|
@@ -2,5 +2,6 @@ export { PierreFileView } from './PierreFileView';
|
|
|
2
2
|
export { PierreSnippetView } from './PierreSnippetView';
|
|
3
3
|
export { PierreThroughlineCodeView } from './PierreThroughlineCodeView';
|
|
4
4
|
export { sliceSnippetWindow } from './sliceSnippet';
|
|
5
|
+
export { isPierreCFamilyPath, pierreCodeViewFileName, pierreLangForPath, } from './pierreFileLang';
|
|
5
6
|
export { PIERRE_DEFAULT_SYNTAX_THEMES, resolvePierreSyntaxThemeName, } from './pierreSyntaxTheme';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/dist/pierre/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pierre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pierre/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language overrides for `@pierre/diffs` file rendering.
|
|
3
|
+
*
|
|
4
|
+
* Pierre's default extension map sends `.h` → `objective-cpp`, which is wrong
|
|
5
|
+
* for the C/C++ headers we usually open and has been implicated in WebKit
|
|
6
|
+
* renderer traps (`JSString::getIndex` / EXC_BREAKPOINT) when CodeView loads
|
|
7
|
+
* several C-family snippets at once (subsystem throughline drawer).
|
|
8
|
+
*/
|
|
9
|
+
/** True when Pierre would (or we would) treat this path as C-family source. */
|
|
10
|
+
export declare function isPierreCFamilyPath(path: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Explicit `lang` for a Pierre `FileContents` object.
|
|
13
|
+
*
|
|
14
|
+
* - C-family → `'text'` (skip Shiki grammars that have trapped WebKit)
|
|
15
|
+
* - everything else → `undefined` (Pierre infers from the filename)
|
|
16
|
+
*/
|
|
17
|
+
export declare function pierreLangForPath(path: string): 'text' | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Unique CodeView `file.name` that still carries a real extension for
|
|
20
|
+
* inference, so distinct slices of the same path never share a display name.
|
|
21
|
+
*/
|
|
22
|
+
export declare function pierreCodeViewFileName(path: string, index: number): string;
|
|
23
|
+
//# sourceMappingURL=pierreFileLang.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pierreFileLang.d.ts","sourceRoot":"","sources":["../../src/pierre/pierreFileLang.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language overrides for `@pierre/diffs` file rendering.
|
|
3
|
+
*
|
|
4
|
+
* Pierre's default extension map sends `.h` → `objective-cpp`, which is wrong
|
|
5
|
+
* for the C/C++ headers we usually open and has been implicated in WebKit
|
|
6
|
+
* renderer traps (`JSString::getIndex` / EXC_BREAKPOINT) when CodeView loads
|
|
7
|
+
* several C-family snippets at once (subsystem throughline drawer).
|
|
8
|
+
*/
|
|
9
|
+
const C_FAMILY_EXT = new Set([
|
|
10
|
+
'c',
|
|
11
|
+
'h',
|
|
12
|
+
'cc',
|
|
13
|
+
'cpp',
|
|
14
|
+
'cxx',
|
|
15
|
+
'hpp',
|
|
16
|
+
'hh',
|
|
17
|
+
'mm',
|
|
18
|
+
'm',
|
|
19
|
+
]);
|
|
20
|
+
function extensionOf(path) {
|
|
21
|
+
const base = path.split(/[/\\]/).pop() ?? path;
|
|
22
|
+
const dot = base.lastIndexOf('.');
|
|
23
|
+
if (dot < 0)
|
|
24
|
+
return '';
|
|
25
|
+
return base.slice(dot + 1).toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
/** True when Pierre would (or we would) treat this path as C-family source. */
|
|
28
|
+
export function isPierreCFamilyPath(path) {
|
|
29
|
+
return C_FAMILY_EXT.has(extensionOf(path));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Explicit `lang` for a Pierre `FileContents` object.
|
|
33
|
+
*
|
|
34
|
+
* - C-family → `'text'` (skip Shiki grammars that have trapped WebKit)
|
|
35
|
+
* - everything else → `undefined` (Pierre infers from the filename)
|
|
36
|
+
*/
|
|
37
|
+
export function pierreLangForPath(path) {
|
|
38
|
+
return isPierreCFamilyPath(path) ? 'text' : undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Unique CodeView `file.name` that still carries a real extension for
|
|
42
|
+
* inference, so distinct slices of the same path never share a display name.
|
|
43
|
+
*/
|
|
44
|
+
export function pierreCodeViewFileName(path, index) {
|
|
45
|
+
const base = path.split(/[/\\]/).pop() ?? path;
|
|
46
|
+
return `${String(index + 1).padStart(2, '0')}-${base}`;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=pierreFileLang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pierreFileLang.js","sourceRoot":"","sources":["../../src/pierre/pierreFileLang.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,GAAG;IACH,GAAG;IACH,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,GAAG;CACJ,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,KAAa;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;IAC/C,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACzD,CAAC"}
|
package/package.json
CHANGED
|
@@ -34,6 +34,18 @@ globalThis.ResizeObserver = class ResizeObserver {
|
|
|
34
34
|
disconnect() {}
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
+
// Polyfill rAF/cancel for @testing-library/react act-compat cleanup
|
|
38
|
+
if (typeof (window as unknown as Record<string, unknown>).requestAnimationFrame === 'function') {
|
|
39
|
+
globalThis.requestAnimationFrame = (window as unknown as typeof globalThis).requestAnimationFrame.bind(window);
|
|
40
|
+
globalThis.cancelAnimationFrame = (window as unknown as typeof globalThis).cancelAnimationFrame.bind(window);
|
|
41
|
+
} else {
|
|
42
|
+
globalThis.requestAnimationFrame = ((cb: FrameRequestCallback): number =>
|
|
43
|
+
setTimeout(() => cb(Date.now()), 0) as unknown as number) as typeof requestAnimationFrame;
|
|
44
|
+
globalThis.cancelAnimationFrame = ((id: number): void => {
|
|
45
|
+
clearTimeout(id);
|
|
46
|
+
}) as typeof cancelAnimationFrame;
|
|
47
|
+
}
|
|
48
|
+
|
|
37
49
|
// Mock matchMedia
|
|
38
50
|
globalThis.matchMedia = mock(() => ({
|
|
39
51
|
matches: false,
|
|
@@ -9,6 +9,7 @@ import { useEffect, useMemo, useState } from 'react';
|
|
|
9
9
|
import { File } from '@pierre/diffs/react';
|
|
10
10
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
11
11
|
import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
|
|
12
|
+
import { pierreLangForPath } from './pierreFileLang';
|
|
12
13
|
|
|
13
14
|
export interface PierreFileViewProps {
|
|
14
15
|
filePath: string;
|
|
@@ -30,8 +31,11 @@ export function PierreFileView({
|
|
|
30
31
|
const [error, setError] = useState<string | null>(null);
|
|
31
32
|
|
|
32
33
|
const fileObject = useMemo(
|
|
33
|
-
() =>
|
|
34
|
-
|
|
34
|
+
() =>
|
|
35
|
+
contents !== null
|
|
36
|
+
? { name: fileName, contents, lang: pierreLangForPath(filePath) }
|
|
37
|
+
: null,
|
|
38
|
+
[fileName, filePath, contents],
|
|
35
39
|
);
|
|
36
40
|
|
|
37
41
|
useEffect(() => {
|
|
@@ -12,6 +12,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
|
12
12
|
import { File } from '@pierre/diffs/react';
|
|
13
13
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
14
14
|
import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
|
|
15
|
+
import { pierreLangForPath } from './pierreFileLang';
|
|
15
16
|
import { sliceSnippetWindow } from './sliceSnippet';
|
|
16
17
|
|
|
17
18
|
import { scrollAnchorLine } from './scrollAnchor';
|
|
@@ -89,8 +90,15 @@ export function PierreSnippetView({
|
|
|
89
90
|
}, [contents, startLine, endLine, contextLines, focusLine]);
|
|
90
91
|
|
|
91
92
|
const fileObject = useMemo(
|
|
92
|
-
() =>
|
|
93
|
-
|
|
93
|
+
() =>
|
|
94
|
+
slice
|
|
95
|
+
? {
|
|
96
|
+
name: fileName,
|
|
97
|
+
contents: slice.contents,
|
|
98
|
+
lang: pierreLangForPath(filePath),
|
|
99
|
+
}
|
|
100
|
+
: null,
|
|
101
|
+
[fileName, filePath, slice],
|
|
94
102
|
);
|
|
95
103
|
|
|
96
104
|
const lineNumberOffset = slice ? slice.sliceStart - 1 : 0;
|
|
@@ -23,6 +23,10 @@ type CodeViewLineSelection = {
|
|
|
23
23
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
24
24
|
import type { SubsystemThroughline } from '../subsystem/model';
|
|
25
25
|
import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
|
|
26
|
+
import {
|
|
27
|
+
pierreCodeViewFileName,
|
|
28
|
+
pierreLangForPath,
|
|
29
|
+
} from './pierreFileLang';
|
|
26
30
|
import { resolvePierreSyntaxThemeName } from './pierreSyntaxTheme';
|
|
27
31
|
import { sliceSnippetWindow, type SnippetSlice } from './sliceSnippet';
|
|
28
32
|
|
|
@@ -112,9 +116,14 @@ export function PierreThroughlineCodeView({
|
|
|
112
116
|
type: 'file' as const,
|
|
113
117
|
version: 1,
|
|
114
118
|
file: {
|
|
115
|
-
//
|
|
116
|
-
|
|
119
|
+
// Unique per-step name: many throughline steps share one path
|
|
120
|
+
// (e.g. seven sites in main.cpp), and identical `name`s have
|
|
121
|
+
// correlated with WebKit renderer traps in CodeView.
|
|
122
|
+
name: pierreCodeViewFileName(step.file, index),
|
|
117
123
|
contents: slice.contents,
|
|
124
|
+
// C-family: force plain text — Pierre maps `.h`→objective-cpp and
|
|
125
|
+
// cpp/obj-c++ highlighting has trapped JSC (JSString::getIndex).
|
|
126
|
+
lang: pierreLangForPath(step.file),
|
|
118
127
|
cacheKey: `${throughline.id}:${index}:${step.file}:${step.line}:${slice.sliceStart}-${slice.sliceEnd}`,
|
|
119
128
|
},
|
|
120
129
|
};
|
package/src/pierre/index.ts
CHANGED
|
@@ -6,6 +6,11 @@ export { PierreThroughlineCodeView } from './PierreThroughlineCodeView';
|
|
|
6
6
|
export type { PierreThroughlineCodeViewProps } from './PierreThroughlineCodeView';
|
|
7
7
|
export { sliceSnippetWindow } from './sliceSnippet';
|
|
8
8
|
export type { SnippetSlice } from './sliceSnippet';
|
|
9
|
+
export {
|
|
10
|
+
isPierreCFamilyPath,
|
|
11
|
+
pierreCodeViewFileName,
|
|
12
|
+
pierreLangForPath,
|
|
13
|
+
} from './pierreFileLang';
|
|
9
14
|
export {
|
|
10
15
|
PIERRE_DEFAULT_SYNTAX_THEMES,
|
|
11
16
|
resolvePierreSyntaxThemeName,
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test';
|
|
2
|
+
import {
|
|
3
|
+
isPierreCFamilyPath,
|
|
4
|
+
pierreCodeViewFileName,
|
|
5
|
+
pierreLangForPath,
|
|
6
|
+
} from './pierreFileLang';
|
|
7
|
+
|
|
8
|
+
describe('pierreFileLang', () => {
|
|
9
|
+
test('marks C-family extensions', () => {
|
|
10
|
+
expect(isPierreCFamilyPath('src/main.cpp')).toBe(true);
|
|
11
|
+
expect(isPierreCFamilyPath('src/graph.h')).toBe(true);
|
|
12
|
+
expect(isPierreCFamilyPath('foo.mm')).toBe(true);
|
|
13
|
+
expect(isPierreCFamilyPath('src/main.ts')).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
test('forces plain text for C-family (WebKit-safe)', () => {
|
|
17
|
+
expect(pierreLangForPath('src/main.cpp')).toBe('text');
|
|
18
|
+
expect(pierreLangForPath('src/ingest_crawl.h')).toBe('text');
|
|
19
|
+
expect(pierreLangForPath('src/foo.ts')).toBeUndefined();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('uniquifies CodeView names while keeping the extension', () => {
|
|
23
|
+
expect(pierreCodeViewFileName('src/main.cpp', 0)).toBe('01-main.cpp');
|
|
24
|
+
expect(pierreCodeViewFileName('src/main.cpp', 6)).toBe('07-main.cpp');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language overrides for `@pierre/diffs` file rendering.
|
|
3
|
+
*
|
|
4
|
+
* Pierre's default extension map sends `.h` → `objective-cpp`, which is wrong
|
|
5
|
+
* for the C/C++ headers we usually open and has been implicated in WebKit
|
|
6
|
+
* renderer traps (`JSString::getIndex` / EXC_BREAKPOINT) when CodeView loads
|
|
7
|
+
* several C-family snippets at once (subsystem throughline drawer).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const C_FAMILY_EXT = new Set([
|
|
11
|
+
'c',
|
|
12
|
+
'h',
|
|
13
|
+
'cc',
|
|
14
|
+
'cpp',
|
|
15
|
+
'cxx',
|
|
16
|
+
'hpp',
|
|
17
|
+
'hh',
|
|
18
|
+
'mm',
|
|
19
|
+
'm',
|
|
20
|
+
]);
|
|
21
|
+
|
|
22
|
+
function extensionOf(path: string): string {
|
|
23
|
+
const base = path.split(/[/\\]/).pop() ?? path;
|
|
24
|
+
const dot = base.lastIndexOf('.');
|
|
25
|
+
if (dot < 0) return '';
|
|
26
|
+
return base.slice(dot + 1).toLowerCase();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** True when Pierre would (or we would) treat this path as C-family source. */
|
|
30
|
+
export function isPierreCFamilyPath(path: string): boolean {
|
|
31
|
+
return C_FAMILY_EXT.has(extensionOf(path));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Explicit `lang` for a Pierre `FileContents` object.
|
|
36
|
+
*
|
|
37
|
+
* - C-family → `'text'` (skip Shiki grammars that have trapped WebKit)
|
|
38
|
+
* - everything else → `undefined` (Pierre infers from the filename)
|
|
39
|
+
*/
|
|
40
|
+
export function pierreLangForPath(path: string): 'text' | undefined {
|
|
41
|
+
return isPierreCFamilyPath(path) ? 'text' : undefined;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Unique CodeView `file.name` that still carries a real extension for
|
|
46
|
+
* inference, so distinct slices of the same path never share a display name.
|
|
47
|
+
*/
|
|
48
|
+
export function pierreCodeViewFileName(path: string, index: number): string {
|
|
49
|
+
const base = path.split(/[/\\]/).pop() ?? path;
|
|
50
|
+
return `${String(index + 1).padStart(2, '0')}-${base}`;
|
|
51
|
+
}
|