@principal-ai/principal-view-react 0.16.52 → 0.16.54

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 (43) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/pierre/PierreFileView.d.ts +16 -0
  6. package/dist/pierre/PierreFileView.d.ts.map +1 -0
  7. package/dist/pierre/PierreFileView.js +43 -0
  8. package/dist/pierre/PierreFileView.js.map +1 -0
  9. package/dist/pierre/PierreSnippetView.d.ts +27 -0
  10. package/dist/pierre/PierreSnippetView.d.ts.map +1 -0
  11. package/dist/pierre/PierreSnippetView.js +98 -0
  12. package/dist/pierre/PierreSnippetView.js.map +1 -0
  13. package/dist/pierre/index.d.ts +7 -0
  14. package/dist/pierre/index.d.ts.map +1 -0
  15. package/dist/pierre/index.js +4 -0
  16. package/dist/pierre/index.js.map +1 -0
  17. package/dist/pierre/pierreBackground.d.ts +15 -0
  18. package/dist/pierre/pierreBackground.d.ts.map +1 -0
  19. package/dist/pierre/pierreBackground.js +31 -0
  20. package/dist/pierre/pierreBackground.js.map +1 -0
  21. package/dist/pierre/scrollAnchor.d.ts +5 -0
  22. package/dist/pierre/scrollAnchor.d.ts.map +1 -0
  23. package/dist/pierre/scrollAnchor.js +9 -0
  24. package/dist/pierre/scrollAnchor.js.map +1 -0
  25. package/dist/pierre/sliceSnippet.d.ts +10 -0
  26. package/dist/pierre/sliceSnippet.d.ts.map +1 -0
  27. package/dist/pierre/sliceSnippet.js +16 -0
  28. package/dist/pierre/sliceSnippet.js.map +1 -0
  29. package/dist/subsystem/ComponentDeclaration.d.ts.map +1 -1
  30. package/dist/subsystem/ComponentDeclaration.js +23 -14
  31. package/dist/subsystem/ComponentDeclaration.js.map +1 -1
  32. package/package.json +3 -1
  33. package/src/index.ts +8 -0
  34. package/src/pierre/PierreFileView.tsx +77 -0
  35. package/src/pierre/PierreSnippetView.tsx +176 -0
  36. package/src/pierre/index.ts +6 -0
  37. package/src/pierre/pierreBackground.ts +33 -0
  38. package/src/pierre/scrollAnchor.test.ts +13 -0
  39. package/src/pierre/scrollAnchor.ts +11 -0
  40. package/src/pierre/sliceSnippet.test.ts +21 -0
  41. package/src/pierre/sliceSnippet.ts +31 -0
  42. package/src/stories/SubsystemComponentGraph.stories.tsx +96 -0
  43. package/src/subsystem/ComponentDeclaration.tsx +49 -27
package/dist/index.d.ts CHANGED
@@ -66,4 +66,6 @@ export type { GraphLayoutCoverProps } from './subsystem/GraphLayoutCover';
66
66
  export type { SubsystemComponent, SubsystemComponentEdge, SubsystemGraphDocument, SubsystemComponentKind, SubsystemEdgeMechanism, } from './subsystem/model';
67
67
  export type { SubsystemDeclarationRef, SubsystemOpenFileOptions, DeclarationFreshness, } from './subsystem/declarationRef';
68
68
  export { parseSourceLocation, normalizeDeclarationLine, extractDeclarationLine, DECLARATION_HASH_ALGO, } from './subsystem/declarationRef';
69
+ export { PierreFileView, PierreSnippetView, sliceSnippetWindow } from './pierre';
70
+ export type { PierreFileViewProps, PierreSnippetViewProps, SnippetSlice, } from './pierre';
69
71
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EAEvB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACnG,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,YAAY,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGrF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACvG,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAEV,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,cAAc,EAEd,eAAe,EACf,SAAS,EACT,eAAe,EACf,eAAe,EAEf,cAAc,EACd,eAAe,EACf,aAAa,EAEb,UAAU,EACV,YAAY,EAEZ,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAEV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,cAAc,EACd,mBAAmB,EAEnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EAEjB,aAAa,EACb,SAAS,EACT,aAAa,EACb,iBAAiB,EAEjB,sBAAsB,EACtB,cAAc,EACd,UAAU,EACV,cAAc,EAEd,mBAAmB,EACnB,kBAAkB,EAElB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,YAAY,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACxF,YAAY,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,SAAS,EACT,eAAe,EACf,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -44,4 +44,6 @@ export { purlRepoKey, purlOwnerName, buildTreePathMapping, buildRepoGroups, repo
44
44
  export { SubsystemFileTree } from './subsystem/SubsystemFileTree';
45
45
  export { GraphLayoutCover } from './subsystem/GraphLayoutCover';
46
46
  export { parseSourceLocation, normalizeDeclarationLine, extractDeclarationLine, DECLARATION_HASH_ALGO, } from './subsystem/declarationRef';
47
+ // Pierre code views (@pierre/diffs wrappers)
48
+ export { PierreFileView, PierreSnippetView, sliceSnippetWindow } from './pierre';
47
49
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAS9D,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAOnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,8BAA8B;AAC9B,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,2BAA2B;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,mBAAmB;AACnB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGvG,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,6EAA6E;AAC7E,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAsChC,6DAA6D;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAmCrE,sEAAsE;AACtE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAyCrC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAWpB,4BAA4B;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAO9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAchE,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * PierreFileView — host-injected full-file code view via `@pierre/diffs`.
3
+ *
4
+ * Ported from `@industry-theme/file-city-panel` so subsystem graphs and
5
+ * Storybook can render source without that panel package.
6
+ */
7
+ export interface PierreFileViewProps {
8
+ filePath: string;
9
+ fileName: string;
10
+ /** Host-supplied file reader (closures bind any path-normalization). */
11
+ readFile: (path: string) => Promise<string>;
12
+ /** Override Pierre's container background. Any CSS color string. */
13
+ background?: string;
14
+ }
15
+ export declare function PierreFileView({ filePath, fileName, readFile, background, }: PierreFileViewProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=PierreFileView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PierreFileView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreFileView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,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,2CAkDrB"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * PierreFileView — host-injected full-file code view via `@pierre/diffs`.
4
+ *
5
+ * Ported from `@industry-theme/file-city-panel` so subsystem graphs and
6
+ * Storybook can render source without that panel package.
7
+ */
8
+ import { useEffect, useMemo, useState } from 'react';
9
+ import { File } from '@pierre/diffs/react';
10
+ import { useTheme } from '@principal-ade/industry-theme';
11
+ import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
12
+ export function PierreFileView({ filePath, fileName, readFile, background, }) {
13
+ const { theme } = useTheme();
14
+ const [contents, setContents] = useState(null);
15
+ const [error, setError] = useState(null);
16
+ const fileObject = useMemo(() => (contents !== null ? { name: fileName, contents } : null), [fileName, contents]);
17
+ useEffect(() => {
18
+ let cancelled = false;
19
+ setContents(null);
20
+ setError(null);
21
+ void readFile(filePath)
22
+ .then((content) => {
23
+ if (!cancelled)
24
+ setContents(content);
25
+ })
26
+ .catch((err) => {
27
+ if (!cancelled) {
28
+ setError(err instanceof Error ? err.message : 'Failed to read file');
29
+ }
30
+ });
31
+ return () => {
32
+ cancelled = true;
33
+ };
34
+ }, [filePath, readFile]);
35
+ if (error) {
36
+ return (_jsx("div", { style: { padding: 16, color: theme.colors.error ?? '#e5534b' }, children: error }));
37
+ }
38
+ if (fileObject === null) {
39
+ return (_jsx("div", { style: { padding: 16, color: theme.colors.textSecondary }, children: "Loading\u2026" }));
40
+ }
41
+ return (_jsx(File, { file: fileObject, options: buildPierreOptions(background), style: PIERRE_FILE_STYLE }));
42
+ }
43
+ //# sourceMappingURL=PierreFileView.js.map
@@ -0,0 +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;AAW3E,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,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAC/D,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * PierreSnippetView — focused line-range code view via `@pierre/diffs`.
3
+ *
4
+ * Ported from `@industry-theme/file-city-panel` so subsystem graphs and
5
+ * Storybook can scroll to a declaration line without that panel package.
6
+ *
7
+ * `File.selectedLines` highlights the focus line but does not scroll; we call
8
+ * `scrollIntoView` on the rendered line after Pierre paints.
9
+ */
10
+ export interface PierreSnippetViewProps {
11
+ filePath: string;
12
+ fileName: string;
13
+ /** First line of the snippet (1-based, inclusive). */
14
+ startLine: number;
15
+ /** Last line of the snippet (1-based, inclusive). */
16
+ endLine: number;
17
+ /** Line to call out as the focus point; defaults to `startLine`. */
18
+ focusLine?: number;
19
+ /** Lines of context above/below the snippet; defaults to 2. */
20
+ contextLines?: number;
21
+ /** Host-supplied file reader. */
22
+ readFile: (path: string) => Promise<string>;
23
+ /** Override Pierre's container background. Any CSS color string. */
24
+ background?: string;
25
+ }
26
+ export declare function PierreSnippetView({ filePath, fileName, startLine, endLine, focusLine, contextLines, readFile, background, }: PierreSnippetViewProps): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=PierreSnippetView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PierreSnippetView.d.ts","sourceRoot":"","sources":["../../src/pierre/PierreSnippetView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsBH,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,2CAuHxB"}
@@ -0,0 +1,98 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * PierreSnippetView — focused line-range code view via `@pierre/diffs`.
4
+ *
5
+ * Ported from `@industry-theme/file-city-panel` so subsystem graphs and
6
+ * Storybook can scroll to a declaration line without that panel package.
7
+ *
8
+ * `File.selectedLines` highlights the focus line but does not scroll; we call
9
+ * `scrollIntoView` on the rendered line after Pierre paints.
10
+ */
11
+ import { useCallback, useEffect, useMemo, useState } from 'react';
12
+ import { File } from '@pierre/diffs/react';
13
+ import { useTheme } from '@principal-ade/industry-theme';
14
+ import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
15
+ import { sliceSnippetWindow } from './sliceSnippet';
16
+ import { scrollAnchorLine } from './scrollAnchor';
17
+ function scrollFocusLineIntoView(fileContainer, focusOffset) {
18
+ const root = fileContainer.shadowRoot ?? fileContainer;
19
+ const anchorLine = scrollAnchorLine(focusOffset);
20
+ const lineEl = root.querySelector(`[data-line="${anchorLine}"]`);
21
+ lineEl?.scrollIntoView({ block: 'start', behavior: 'auto' });
22
+ }
23
+ export function PierreSnippetView({ filePath, fileName, startLine, endLine, focusLine, contextLines = 2, readFile, background, }) {
24
+ const { theme } = useTheme();
25
+ const [contents, setContents] = useState(null);
26
+ const [error, setError] = useState(null);
27
+ useEffect(() => {
28
+ let cancelled = false;
29
+ setContents(null);
30
+ setError(null);
31
+ void readFile(filePath)
32
+ .then((content) => {
33
+ if (!cancelled)
34
+ setContents(content);
35
+ })
36
+ .catch((err) => {
37
+ if (!cancelled) {
38
+ setError(err instanceof Error ? err.message : 'Failed to read file');
39
+ }
40
+ });
41
+ return () => {
42
+ cancelled = true;
43
+ };
44
+ }, [filePath, readFile]);
45
+ const slice = useMemo(() => {
46
+ if (contents == null)
47
+ return null;
48
+ return sliceSnippetWindow(contents, startLine, endLine, contextLines, focusLine ?? startLine);
49
+ }, [contents, startLine, endLine, contextLines, focusLine]);
50
+ const fileObject = useMemo(() => (slice ? { name: fileName, contents: slice.contents } : null), [fileName, slice]);
51
+ const lineNumberOffset = slice ? slice.sliceStart - 1 : 0;
52
+ const onPostRender = useCallback((fileContainer) => {
53
+ if (lineNumberOffset !== 0) {
54
+ const root = fileContainer.shadowRoot ?? fileContainer;
55
+ const items = root.querySelectorAll('[data-column-number][data-line-index]');
56
+ items.forEach((el) => {
57
+ const idxStr = el.dataset.lineIndex;
58
+ if (idxStr == null)
59
+ return;
60
+ const idx = Number.parseInt(idxStr, 10);
61
+ if (Number.isNaN(idx))
62
+ return;
63
+ const display = String(idx + 1 + lineNumberOffset);
64
+ const span = el.querySelector('[data-line-number-content]');
65
+ if (span && span.textContent !== display) {
66
+ span.textContent = display;
67
+ }
68
+ });
69
+ }
70
+ if (slice?.focusOffset != null) {
71
+ scrollFocusLineIntoView(fileContainer, slice.focusOffset);
72
+ }
73
+ }, [lineNumberOffset, slice?.focusOffset]);
74
+ const options = useMemo(() => ({
75
+ ...buildPierreOptions(background),
76
+ onPostRender,
77
+ }), [background, onPostRender]);
78
+ if (error) {
79
+ return (_jsx("div", { style: { padding: 16, color: theme.colors.error ?? '#e5534b' }, children: error }));
80
+ }
81
+ if (!fileObject || !slice) {
82
+ return (_jsx("div", { style: { padding: 16, color: theme.colors.textSecondary }, children: "Loading\u2026" }));
83
+ }
84
+ const rangeLabel = slice.sliceStart === slice.sliceEnd
85
+ ? `Line ${slice.sliceStart}`
86
+ : `Lines ${slice.sliceStart}–${slice.sliceEnd}`;
87
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', minHeight: 0 }, children: [_jsx("div", { style: {
88
+ padding: '4px 14px 6px',
89
+ fontFamily: theme.fonts.monospace,
90
+ fontSize: theme.fontSizes[0],
91
+ color: theme.colors.textSecondary,
92
+ letterSpacing: 0.4,
93
+ textTransform: 'uppercase',
94
+ }, children: rangeLabel }), _jsx(File, { file: fileObject, options: options, selectedLines: slice.focusOffset != null
95
+ ? { start: slice.focusOffset, end: slice.focusOffset }
96
+ : undefined, style: PIERRE_FILE_STYLE })] }));
97
+ }
98
+ //# sourceMappingURL=PierreSnippetView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PierreSnippetView.js","sourceRoot":"","sources":["../../src/pierre/PierreSnippetView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { PierreFileView } from './PierreFileView';
2
+ export type { PierreFileViewProps } from './PierreFileView';
3
+ export { PierreSnippetView } from './PierreSnippetView';
4
+ export type { PierreSnippetViewProps } from './PierreSnippetView';
5
+ export { sliceSnippetWindow } from './sliceSnippet';
6
+ export type { SnippetSlice } from './sliceSnippet';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { PierreFileView } from './PierreFileView';
2
+ export { PierreSnippetView } from './PierreSnippetView';
3
+ export { sliceSnippetWindow } from './sliceSnippet';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Shared Pierre / @pierre/diffs option helpers for file + snippet views. */
2
+ export declare const PIERRE_FILE_STYLE: {
3
+ readonly display: "block";
4
+ };
5
+ export declare const PIERRE_BASE_OPTIONS: {
6
+ readonly disableFileHeader: true;
7
+ };
8
+ export declare function buildBackgroundCSS(background: string): string;
9
+ export declare function buildPierreOptions(background?: string): {
10
+ readonly disableFileHeader: true;
11
+ } | {
12
+ unsafeCSS: string;
13
+ disableFileHeader: true;
14
+ };
15
+ //# sourceMappingURL=pierreBackground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pierreBackground.d.ts","sourceRoot":"","sources":["../../src/pierre/pierreBackground.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,eAAO,MAAM,iBAAiB;;CAAgC,CAAC;AAE/D,eAAO,MAAM,mBAAmB;;CAEtB,CAAC;AAEX,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgB7D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM;;;;;EAMrD"}
@@ -0,0 +1,31 @@
1
+ /** Shared Pierre / @pierre/diffs option helpers for file + snippet views. */
2
+ export const PIERRE_FILE_STYLE = { display: 'block' };
3
+ export const PIERRE_BASE_OPTIONS = {
4
+ disableFileHeader: true,
5
+ };
6
+ export function buildBackgroundCSS(background) {
7
+ return `
8
+ :host {
9
+ background: ${background} !important;
10
+ }
11
+ pre, code,
12
+ [data-gutter], [data-content],
13
+ [data-line], [data-column-number],
14
+ [data-gutter-buffer], [data-line-annotation], [data-no-newline],
15
+ [data-separator], [data-separator-wrapper] {
16
+ background: ${background} !important;
17
+ }
18
+ [data-line] span {
19
+ background: ${background} !important;
20
+ }
21
+ `;
22
+ }
23
+ export function buildPierreOptions(background) {
24
+ if (!background)
25
+ return PIERRE_BASE_OPTIONS;
26
+ return {
27
+ ...PIERRE_BASE_OPTIONS,
28
+ unsafeCSS: buildBackgroundCSS(background),
29
+ };
30
+ }
31
+ //# sourceMappingURL=pierreBackground.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pierreBackground.js","sourceRoot":"","sources":["../../src/pierre/pierreBackground.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,OAAO,EAAE,OAAO,EAAW,CAAC;AAE/D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,iBAAiB,EAAE,IAAI;CACf,CAAC;AAEX,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO;;kBAES,UAAU;;;;;;;kBAOV,UAAU;;;kBAGV,UAAU;;CAE3B,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAmB;IACpD,IAAI,CAAC,UAAU;QAAE,OAAO,mBAAmB,CAAC;IAC5C,OAAO;QACL,GAAG,mBAAmB;QACtB,SAAS,EAAE,kBAAkB,CAAC,UAAU,CAAC;KAC1C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Lines to keep visible above the focus line when scrolling. */
2
+ export declare const SCROLL_LEADING_LINES = 4;
3
+ /** 1-based line in the sliced snippet to align near the top of the viewport. */
4
+ export declare function scrollAnchorLine(focusOffset: number, leadingLines?: number): number;
5
+ //# sourceMappingURL=scrollAnchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollAnchor.d.ts","sourceRoot":"","sources":["../../src/pierre/scrollAnchor.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,YAAY,SAAuB,GAClC,MAAM,CAGR"}
@@ -0,0 +1,9 @@
1
+ /** Lines to keep visible above the focus line when scrolling. */
2
+ export const SCROLL_LEADING_LINES = 4;
3
+ /** 1-based line in the sliced snippet to align near the top of the viewport. */
4
+ export function scrollAnchorLine(focusOffset, leadingLines = SCROLL_LEADING_LINES) {
5
+ if (focusOffset <= 1)
6
+ return 1;
7
+ return Math.max(1, focusOffset - leadingLines);
8
+ }
9
+ //# sourceMappingURL=scrollAnchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollAnchor.js","sourceRoot":"","sources":["../../src/pierre/scrollAnchor.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,YAAY,GAAG,oBAAoB;IAEnC,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Slice a file's line range with surrounding context for snippet rendering. */
2
+ export interface SnippetSlice {
3
+ contents: string;
4
+ sliceStart: number;
5
+ sliceEnd: number;
6
+ /** 1-based line index within `contents` to highlight, or null. */
7
+ focusOffset: number | null;
8
+ }
9
+ export declare function sliceSnippetWindow(contents: string, startLine: number, endLine: number, contextLines: number, focusLine?: number | null): SnippetSlice;
10
+ //# sourceMappingURL=sliceSnippet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sliceSnippet.d.ts","sourceRoot":"","sources":["../../src/pierre/sliceSnippet.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,YAAY,CAcd"}
@@ -0,0 +1,16 @@
1
+ /** Slice a file's line range with surrounding context for snippet rendering. */
2
+ export function sliceSnippetWindow(contents, startLine, endLine, contextLines, focusLine) {
3
+ const allLines = contents.split('\n');
4
+ const total = allLines.length;
5
+ const safeStart = Math.max(1, Math.min(startLine, total));
6
+ const safeEnd = Math.max(safeStart, Math.min(endLine, total));
7
+ const sliceStart = Math.max(1, safeStart - contextLines);
8
+ const sliceEnd = Math.min(total, safeEnd + contextLines);
9
+ return {
10
+ contents: allLines.slice(sliceStart - 1, sliceEnd).join('\n'),
11
+ sliceStart,
12
+ sliceEnd,
13
+ focusOffset: focusLine == null ? null : Math.max(1, focusLine - sliceStart + 1),
14
+ };
15
+ }
16
+ //# sourceMappingURL=sliceSnippet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sliceSnippet.js","sourceRoot":"","sources":["../../src/pierre/sliceSnippet.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAUhF,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,SAAiB,EACjB,OAAe,EACf,YAAoB,EACpB,SAAyB;IAEzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC,CAAC;IACzD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,UAAU;QACV,QAAQ;QACR,WAAW,EACT,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC;KACrE,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentDeclaration.d.ts","sourceRoot":"","sources":["../../src/subsystem/ComponentDeclaration.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComponentDeclaration.d.ts","sourceRoot":"","sources":["../../src/subsystem/ComponentDeclaration.tsx"],"names":[],"mappings":"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"}
@@ -170,6 +170,21 @@ export function ComponentDeclaration({ component, onOpenFile, onRelatedSelect: _
170
170
  string: theme.colors.success,
171
171
  newline: '',
172
172
  };
173
+ const declarationStartLine = component.declarationRef?.startLine ??
174
+ verification?.declaration?.ref?.startLine ??
175
+ parseSourceLocation(verification?.anchor?.source_location) ??
176
+ undefined;
177
+ const openDeclarationFile = () => {
178
+ if (!onOpenFile || !component.file)
179
+ return;
180
+ onOpenFile(component.file, declarationStartLine != null ? { startLine: declarationStartLine } : undefined);
181
+ };
182
+ const lineLocationLabel = declarationStartLine != null ? (_jsx(DetailLink, { onClick: onOpenFile ? openDeclarationFile : undefined, children: _jsxs("span", { style: {
183
+ color: theme.colors.accent ?? color,
184
+ fontFamily: theme.fonts.monospace,
185
+ fontSize: theme.fontSizes[0],
186
+ ...(onOpenFile ? clickableStyle : undefined),
187
+ }, children: ["L", declarationStartLine] }) })) : null;
173
188
  const line = (children, key, indent) => {
174
189
  const paddingLeft = typeof indent === 'number' ? indent : indent ? 16 : 0;
175
190
  return (_jsx("div", { style: { display: 'flex', alignItems: 'center', whiteSpace: 'pre', minHeight: 18, ...(paddingLeft ? { paddingLeft } : {}) }, children: children }, key));
@@ -216,7 +231,7 @@ export function ComponentDeclaration({ component, onOpenFile, onRelatedSelect: _
216
231
  fontSize: theme.fontSizes[0],
217
232
  fontFamily: theme.fonts.body,
218
233
  opacity: verifyBusy ? 0.7 : 1,
219
- }, children: [_jsx(ShieldCheck, { size: 12 }), verifyBusy ? '…' : 'Verify'] })), toggleBtn(showFile, () => setShowFile((v) => !v), 'Toggle file path', FileText), toggleBtn(showPurpose, () => setShowPurpose((v) => !v), 'Toggle description', AlignLeft)] }));
234
+ }, children: [_jsx(ShieldCheck, { size: 12 }), verifyBusy ? '…' : 'Verify'] })), toggleBtn(showFile, () => setShowFile((v) => !v), 'Toggle file path', FileText), lineLocationLabel, toggleBtn(showPurpose, () => setShowPurpose((v) => !v), 'Toggle description', AlignLeft)] }));
220
235
  if (ghMatch) {
221
236
  const [, ghOwner, ghRepo] = ghMatch;
222
237
  lines.push(line(_jsxs("span", { style: { display: 'flex', alignItems: 'center', gap: 6, width: '100%' }, children: [_jsx("img", { src: `https://github.com/${ghOwner}.png?size=40`, alt: "", width: 18, height: 18, style: { borderRadius: 4, flexShrink: 0 }, onError: (e) => {
@@ -255,19 +270,13 @@ export function ComponentDeclaration({ component, onOpenFile, onRelatedSelect: _
255
270
  }
256
271
  }
257
272
  if (showFile && component.file) {
258
- const startLine = component.declarationRef?.startLine ??
259
- verification?.declaration?.ref?.startLine ??
260
- parseSourceLocation(verification?.anchor?.source_location) ??
261
- undefined;
262
- lines.push(line(_jsx(DetailLink, { onClick: onOpenFile
263
- ? () => onOpenFile(component.file, startLine != null ? { startLine } : undefined)
264
- : undefined, children: _jsxs("span", { onMouseEnter: () => setFileHovered(true), onMouseLeave: () => setFileHovered(false), style: {
265
- color: theme.colors.textSecondary ?? muted,
266
- fontFamily: theme.fonts.body,
267
- fontSize: theme.fontSizes[1],
268
- textDecoration: fileHovered && onOpenFile ? 'underline' : undefined,
269
- textUnderlineOffset: 2,
270
- }, children: [component.file, startLine != null ? `:${startLine}` : ''] }) }), 'file'));
273
+ lines.push(line(_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }, children: [_jsx(DetailLink, { onClick: onOpenFile ? openDeclarationFile : undefined, children: _jsx("span", { onMouseEnter: () => setFileHovered(true), onMouseLeave: () => setFileHovered(false), style: {
274
+ color: theme.colors.textSecondary ?? muted,
275
+ fontFamily: theme.fonts.body,
276
+ fontSize: theme.fontSizes[1],
277
+ textDecoration: fileHovered && onOpenFile ? 'underline' : undefined,
278
+ textUnderlineOffset: 2,
279
+ }, children: component.file }) }), lineLocationLabel] }), 'file'));
271
280
  }
272
281
  const containerRef = useRef(null);
273
282
  const [printWidth, setPrintWidth] = useState(80);
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentDeclaration.js","sourceRoot":"","sources":["../../src/subsystem/ComponentDeclaration.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComponentDeclaration.js","sourceRoot":"","sources":["../../src/subsystem/ComponentDeclaration.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ai/principal-view-react",
3
- "version": "0.16.52",
3
+ "version": "0.16.54",
4
4
  "description": "React components for graph-based principal view framework",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,12 +33,14 @@
33
33
  "zustand": "4.5.0"
34
34
  },
35
35
  "peerDependencies": {
36
+ "@pierre/diffs": ">=1.1.20",
36
37
  "@principal-ade/industry-theme": "^0.1.7",
37
38
  "@principal-ai/principal-view-core": ">=0.27.0",
38
39
  "react": "^18.0.0 || ^19.0.0",
39
40
  "react-dom": "^18.0.0 || ^19.0.0"
40
41
  },
41
42
  "devDependencies": {
43
+ "@pierre/diffs": "^1.3.0",
42
44
  "@principal-ade/industry-theme": "0.1.7",
43
45
  "@principal-ai/agent-monitoring": "^0.3.38",
44
46
  "@principal-ai/principal-view-core": "0.27.1",
package/src/index.ts CHANGED
@@ -316,3 +316,11 @@ export {
316
316
  extractDeclarationLine,
317
317
  DECLARATION_HASH_ALGO,
318
318
  } from './subsystem/declarationRef';
319
+
320
+ // Pierre code views (@pierre/diffs wrappers)
321
+ export { PierreFileView, PierreSnippetView, sliceSnippetWindow } from './pierre';
322
+ export type {
323
+ PierreFileViewProps,
324
+ PierreSnippetViewProps,
325
+ SnippetSlice,
326
+ } from './pierre';
@@ -0,0 +1,77 @@
1
+ /**
2
+ * PierreFileView — host-injected full-file code view via `@pierre/diffs`.
3
+ *
4
+ * Ported from `@industry-theme/file-city-panel` so subsystem graphs and
5
+ * Storybook can render source without that panel package.
6
+ */
7
+
8
+ import { useEffect, useMemo, useState } from 'react';
9
+ import { File } from '@pierre/diffs/react';
10
+ import { useTheme } from '@principal-ade/industry-theme';
11
+ import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
12
+
13
+ export interface PierreFileViewProps {
14
+ filePath: string;
15
+ fileName: string;
16
+ /** Host-supplied file reader (closures bind any path-normalization). */
17
+ readFile: (path: string) => Promise<string>;
18
+ /** Override Pierre's container background. Any CSS color string. */
19
+ background?: string;
20
+ }
21
+
22
+ export function PierreFileView({
23
+ filePath,
24
+ fileName,
25
+ readFile,
26
+ background,
27
+ }: PierreFileViewProps) {
28
+ const { theme } = useTheme();
29
+ const [contents, setContents] = useState<string | null>(null);
30
+ const [error, setError] = useState<string | null>(null);
31
+
32
+ const fileObject = useMemo(
33
+ () => (contents !== null ? { name: fileName, contents } : null),
34
+ [fileName, contents],
35
+ );
36
+
37
+ useEffect(() => {
38
+ let cancelled = false;
39
+ setContents(null);
40
+ setError(null);
41
+ void readFile(filePath)
42
+ .then((content) => {
43
+ if (!cancelled) setContents(content);
44
+ })
45
+ .catch((err) => {
46
+ if (!cancelled) {
47
+ setError(err instanceof Error ? err.message : 'Failed to read file');
48
+ }
49
+ });
50
+ return () => {
51
+ cancelled = true;
52
+ };
53
+ }, [filePath, readFile]);
54
+
55
+ if (error) {
56
+ return (
57
+ <div style={{ padding: 16, color: theme.colors.error ?? '#e5534b' }}>
58
+ {error}
59
+ </div>
60
+ );
61
+ }
62
+ if (fileObject === null) {
63
+ return (
64
+ <div style={{ padding: 16, color: theme.colors.textSecondary }}>
65
+ Loading…
66
+ </div>
67
+ );
68
+ }
69
+
70
+ return (
71
+ <File
72
+ file={fileObject}
73
+ options={buildPierreOptions(background)}
74
+ style={PIERRE_FILE_STYLE}
75
+ />
76
+ );
77
+ }
@@ -0,0 +1,176 @@
1
+ /**
2
+ * PierreSnippetView — focused line-range code view via `@pierre/diffs`.
3
+ *
4
+ * Ported from `@industry-theme/file-city-panel` so subsystem graphs and
5
+ * Storybook can scroll to a declaration line without that panel package.
6
+ *
7
+ * `File.selectedLines` highlights the focus line but does not scroll; we call
8
+ * `scrollIntoView` on the rendered line after Pierre paints.
9
+ */
10
+
11
+ import { useCallback, useEffect, useMemo, useState } from 'react';
12
+ import { File } from '@pierre/diffs/react';
13
+ import { useTheme } from '@principal-ade/industry-theme';
14
+ import { buildPierreOptions, PIERRE_FILE_STYLE } from './pierreBackground';
15
+ import { sliceSnippetWindow } from './sliceSnippet';
16
+
17
+ import { scrollAnchorLine } from './scrollAnchor';
18
+
19
+ function scrollFocusLineIntoView(
20
+ fileContainer: HTMLElement,
21
+ focusOffset: number,
22
+ ): void {
23
+ const root = fileContainer.shadowRoot ?? fileContainer;
24
+ const anchorLine = scrollAnchorLine(focusOffset);
25
+ const lineEl = root.querySelector(
26
+ `[data-line="${anchorLine}"]`,
27
+ ) as HTMLElement | null;
28
+ lineEl?.scrollIntoView({ block: 'start', behavior: 'auto' });
29
+ }
30
+
31
+ export interface PierreSnippetViewProps {
32
+ filePath: string;
33
+ fileName: string;
34
+ /** First line of the snippet (1-based, inclusive). */
35
+ startLine: number;
36
+ /** Last line of the snippet (1-based, inclusive). */
37
+ endLine: number;
38
+ /** Line to call out as the focus point; defaults to `startLine`. */
39
+ focusLine?: number;
40
+ /** Lines of context above/below the snippet; defaults to 2. */
41
+ contextLines?: number;
42
+ /** Host-supplied file reader. */
43
+ readFile: (path: string) => Promise<string>;
44
+ /** Override Pierre's container background. Any CSS color string. */
45
+ background?: string;
46
+ }
47
+
48
+ export function PierreSnippetView({
49
+ filePath,
50
+ fileName,
51
+ startLine,
52
+ endLine,
53
+ focusLine,
54
+ contextLines = 2,
55
+ readFile,
56
+ background,
57
+ }: PierreSnippetViewProps) {
58
+ const { theme } = useTheme();
59
+ const [contents, setContents] = useState<string | null>(null);
60
+ const [error, setError] = useState<string | null>(null);
61
+
62
+ useEffect(() => {
63
+ let cancelled = false;
64
+ setContents(null);
65
+ setError(null);
66
+ void readFile(filePath)
67
+ .then((content) => {
68
+ if (!cancelled) setContents(content);
69
+ })
70
+ .catch((err) => {
71
+ if (!cancelled) {
72
+ setError(err instanceof Error ? err.message : 'Failed to read file');
73
+ }
74
+ });
75
+ return () => {
76
+ cancelled = true;
77
+ };
78
+ }, [filePath, readFile]);
79
+
80
+ const slice = useMemo(() => {
81
+ if (contents == null) return null;
82
+ return sliceSnippetWindow(
83
+ contents,
84
+ startLine,
85
+ endLine,
86
+ contextLines,
87
+ focusLine ?? startLine,
88
+ );
89
+ }, [contents, startLine, endLine, contextLines, focusLine]);
90
+
91
+ const fileObject = useMemo(
92
+ () => (slice ? { name: fileName, contents: slice.contents } : null),
93
+ [fileName, slice],
94
+ );
95
+
96
+ const lineNumberOffset = slice ? slice.sliceStart - 1 : 0;
97
+
98
+ const onPostRender = useCallback(
99
+ (fileContainer: HTMLElement) => {
100
+ if (lineNumberOffset !== 0) {
101
+ const root = fileContainer.shadowRoot ?? fileContainer;
102
+ const items = root.querySelectorAll('[data-column-number][data-line-index]');
103
+ items.forEach((el) => {
104
+ const idxStr = (el as HTMLElement).dataset.lineIndex;
105
+ if (idxStr == null) return;
106
+ const idx = Number.parseInt(idxStr, 10);
107
+ if (Number.isNaN(idx)) return;
108
+ const display = String(idx + 1 + lineNumberOffset);
109
+ const span = el.querySelector('[data-line-number-content]');
110
+ if (span && span.textContent !== display) {
111
+ span.textContent = display;
112
+ }
113
+ });
114
+ }
115
+ if (slice?.focusOffset != null) {
116
+ scrollFocusLineIntoView(fileContainer, slice.focusOffset);
117
+ }
118
+ },
119
+ [lineNumberOffset, slice?.focusOffset],
120
+ );
121
+
122
+ const options = useMemo(
123
+ () => ({
124
+ ...buildPierreOptions(background),
125
+ onPostRender,
126
+ }),
127
+ [background, onPostRender],
128
+ );
129
+
130
+ if (error) {
131
+ return (
132
+ <div style={{ padding: 16, color: theme.colors.error ?? '#e5534b' }}>
133
+ {error}
134
+ </div>
135
+ );
136
+ }
137
+ if (!fileObject || !slice) {
138
+ return (
139
+ <div style={{ padding: 16, color: theme.colors.textSecondary }}>
140
+ Loading…
141
+ </div>
142
+ );
143
+ }
144
+
145
+ const rangeLabel =
146
+ slice.sliceStart === slice.sliceEnd
147
+ ? `Line ${slice.sliceStart}`
148
+ : `Lines ${slice.sliceStart}–${slice.sliceEnd}`;
149
+
150
+ return (
151
+ <div style={{ display: 'flex', flexDirection: 'column', minHeight: 0 }}>
152
+ <div
153
+ style={{
154
+ padding: '4px 14px 6px',
155
+ fontFamily: theme.fonts.monospace,
156
+ fontSize: theme.fontSizes[0],
157
+ color: theme.colors.textSecondary,
158
+ letterSpacing: 0.4,
159
+ textTransform: 'uppercase',
160
+ }}
161
+ >
162
+ {rangeLabel}
163
+ </div>
164
+ <File
165
+ file={fileObject}
166
+ options={options}
167
+ selectedLines={
168
+ slice.focusOffset != null
169
+ ? { start: slice.focusOffset, end: slice.focusOffset }
170
+ : undefined
171
+ }
172
+ style={PIERRE_FILE_STYLE}
173
+ />
174
+ </div>
175
+ );
176
+ }
@@ -0,0 +1,6 @@
1
+ export { PierreFileView } from './PierreFileView';
2
+ export type { PierreFileViewProps } from './PierreFileView';
3
+ export { PierreSnippetView } from './PierreSnippetView';
4
+ export type { PierreSnippetViewProps } from './PierreSnippetView';
5
+ export { sliceSnippetWindow } from './sliceSnippet';
6
+ export type { SnippetSlice } from './sliceSnippet';
@@ -0,0 +1,33 @@
1
+ /** Shared Pierre / @pierre/diffs option helpers for file + snippet views. */
2
+
3
+ export const PIERRE_FILE_STYLE = { display: 'block' } as const;
4
+
5
+ export const PIERRE_BASE_OPTIONS = {
6
+ disableFileHeader: true,
7
+ } as const;
8
+
9
+ export function buildBackgroundCSS(background: string): string {
10
+ return `
11
+ :host {
12
+ background: ${background} !important;
13
+ }
14
+ pre, code,
15
+ [data-gutter], [data-content],
16
+ [data-line], [data-column-number],
17
+ [data-gutter-buffer], [data-line-annotation], [data-no-newline],
18
+ [data-separator], [data-separator-wrapper] {
19
+ background: ${background} !important;
20
+ }
21
+ [data-line] span {
22
+ background: ${background} !important;
23
+ }
24
+ `;
25
+ }
26
+
27
+ export function buildPierreOptions(background?: string) {
28
+ if (!background) return PIERRE_BASE_OPTIONS;
29
+ return {
30
+ ...PIERRE_BASE_OPTIONS,
31
+ unsafeCSS: buildBackgroundCSS(background),
32
+ };
33
+ }
@@ -0,0 +1,13 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { scrollAnchorLine } from './scrollAnchor';
3
+
4
+ describe('scrollAnchorLine', () => {
5
+ test('first line stays at top', () => {
6
+ expect(scrollAnchorLine(1)).toBe(1);
7
+ });
8
+
9
+ test('focus line keeps a few lines of leading context', () => {
10
+ expect(scrollAnchorLine(10, 4)).toBe(6);
11
+ expect(scrollAnchorLine(3, 4)).toBe(1);
12
+ });
13
+ });
@@ -0,0 +1,11 @@
1
+ /** Lines to keep visible above the focus line when scrolling. */
2
+ export const SCROLL_LEADING_LINES = 4;
3
+
4
+ /** 1-based line in the sliced snippet to align near the top of the viewport. */
5
+ export function scrollAnchorLine(
6
+ focusOffset: number,
7
+ leadingLines = SCROLL_LEADING_LINES,
8
+ ): number {
9
+ if (focusOffset <= 1) return 1;
10
+ return Math.max(1, focusOffset - leadingLines);
11
+ }
@@ -0,0 +1,21 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { sliceSnippetWindow } from './sliceSnippet';
3
+
4
+ describe('sliceSnippetWindow', () => {
5
+ const content = ['line1', 'line2', 'line3', 'line4', 'line5'].join('\n');
6
+
7
+ test('slices with context and focus offset', () => {
8
+ const s = sliceSnippetWindow(content, 3, 3, 1, 3);
9
+ expect(s.sliceStart).toBe(2);
10
+ expect(s.sliceEnd).toBe(4);
11
+ expect(s.contents).toBe(['line2', 'line3', 'line4'].join('\n'));
12
+ expect(s.focusOffset).toBe(2);
13
+ });
14
+
15
+ test('clamps out-of-range lines', () => {
16
+ const s = sliceSnippetWindow(content, 99, 99, 0, 99);
17
+ expect(s.sliceStart).toBe(5);
18
+ expect(s.sliceEnd).toBe(5);
19
+ expect(s.focusOffset).toBe(95);
20
+ });
21
+ });
@@ -0,0 +1,31 @@
1
+ /** Slice a file's line range with surrounding context for snippet rendering. */
2
+
3
+ export interface SnippetSlice {
4
+ contents: string;
5
+ sliceStart: number;
6
+ sliceEnd: number;
7
+ /** 1-based line index within `contents` to highlight, or null. */
8
+ focusOffset: number | null;
9
+ }
10
+
11
+ export function sliceSnippetWindow(
12
+ contents: string,
13
+ startLine: number,
14
+ endLine: number,
15
+ contextLines: number,
16
+ focusLine?: number | null,
17
+ ): SnippetSlice {
18
+ const allLines = contents.split('\n');
19
+ const total = allLines.length;
20
+ const safeStart = Math.max(1, Math.min(startLine, total));
21
+ const safeEnd = Math.max(safeStart, Math.min(endLine, total));
22
+ const sliceStart = Math.max(1, safeStart - contextLines);
23
+ const sliceEnd = Math.min(total, safeEnd + contextLines);
24
+ return {
25
+ contents: allLines.slice(sliceStart - 1, sliceEnd).join('\n'),
26
+ sliceStart,
27
+ sliceEnd,
28
+ focusOffset:
29
+ focusLine == null ? null : Math.max(1, focusLine - sliceStart + 1),
30
+ };
31
+ }
@@ -3,8 +3,12 @@ import '@xyflow/react/dist/style.css';
3
3
  import type { Meta, StoryObj } from '@storybook/react';
4
4
  import { ThemeProvider, defaultTheme, defaultEditorTheme } from '@principal-ade/industry-theme';
5
5
  import { SubsystemComponentGraph } from '../subsystem/SubsystemComponentGraph';
6
+ import { PierreFileView, PierreSnippetView } from '../pierre';
6
7
  import type { SubsystemComponent, SubsystemComponentEdge } from '../subsystem/model';
8
+ import type { SubsystemOpenFileOptions } from '../subsystem/declarationRef';
7
9
  import type { GraphifyComponentDetail } from '../graphify';
10
+ import componentDeclarationSource from '../subsystem/ComponentDeclaration.tsx?raw';
11
+ import resolveSource from '../graphify/resolve.ts?raw';
8
12
  const meta = {
9
13
  title: 'Subsystem/Component Graph',
10
14
  component: SubsystemComponentGraph,
@@ -1127,3 +1131,95 @@ function MultiRepoDemo() {
1127
1131
  export const MultiRepoTrees: Story = {
1128
1132
  render: () => <MultiRepoDemo />,
1129
1133
  };
1134
+
1135
+ // ---------------------------------------------------------------------------
1136
+ // Declaration line open — Pierre snippet/file views + declarationRef.
1137
+ // Click the ComponentDeclaration node → toggle file → click path or L251.
1138
+ // ---------------------------------------------------------------------------
1139
+ const storyFileContents: Record<string, string> = {
1140
+ 'packages/react/src/subsystem/ComponentDeclaration.tsx': componentDeclarationSource,
1141
+ 'packages/react/src/graphify/resolve.ts': resolveSource,
1142
+ };
1143
+
1144
+ const declarationOpenComponents: SubsystemComponent[] = [
1145
+ {
1146
+ id: 'detail',
1147
+ name: 'ComponentDeclaration',
1148
+ kind: 'module',
1149
+ file: 'packages/react/src/subsystem/ComponentDeclaration.tsx',
1150
+ purl: 'pkg:github/principal-ai/principal-view-core-library',
1151
+ purpose: 'declaration panel — click file or L251 to open the drawer at the export line',
1152
+ symbol: 'ComponentDeclaration',
1153
+ declarationRef: {
1154
+ file: 'packages/react/src/subsystem/ComponentDeclaration.tsx',
1155
+ startLine: 251,
1156
+ lineHash: 'storybook-placeholder',
1157
+ capturedAt: new Date(0).toISOString(),
1158
+ },
1159
+ },
1160
+ {
1161
+ id: 'resolver',
1162
+ name: 'resolve.ts',
1163
+ kind: 'module',
1164
+ file: 'packages/react/src/graphify/resolve.ts',
1165
+ purl: 'pkg:github/principal-ai/principal-view-core-library',
1166
+ purpose: 'graphify type-ref resolver (second file for tree navigation)',
1167
+ symbol: 'resolveGraphifyTypeRef',
1168
+ declarationRef: {
1169
+ file: 'packages/react/src/graphify/resolve.ts',
1170
+ startLine: 1,
1171
+ lineHash: 'storybook-placeholder',
1172
+ capturedAt: new Date(0).toISOString(),
1173
+ },
1174
+ },
1175
+ ];
1176
+
1177
+ function readStoryFile(path: string): Promise<string> {
1178
+ const content = storyFileContents[path];
1179
+ if (content == null) {
1180
+ return Promise.reject(new Error(`No story fixture for ${path}`));
1181
+ }
1182
+ return Promise.resolve(content);
1183
+ }
1184
+
1185
+ function DeclarationLineOpenDemo() {
1186
+ const renderFileViewer = (file: string, opts?: SubsystemOpenFileOptions) => {
1187
+ const startLine = opts?.startLine;
1188
+ if (startLine != null) {
1189
+ return (
1190
+ <PierreSnippetView
1191
+ filePath={file}
1192
+ fileName={file.split('/').pop() ?? file}
1193
+ startLine={startLine}
1194
+ endLine={startLine}
1195
+ focusLine={startLine}
1196
+ contextLines={40}
1197
+ readFile={readStoryFile}
1198
+ />
1199
+ );
1200
+ }
1201
+ return (
1202
+ <PierreFileView
1203
+ filePath={file}
1204
+ fileName={file.split('/').pop() ?? file}
1205
+ readFile={readStoryFile}
1206
+ />
1207
+ );
1208
+ };
1209
+
1210
+ return (
1211
+ <div style={{ width: '100%', height: '100vh', display: 'flex', flexDirection: 'column' }}>
1212
+ <SubsystemComponentGraph
1213
+ title="Declaration line open (Storybook)"
1214
+ description="Uses bundled ?raw fixtures + PierreSnippetView from this package. Select ComponentDeclaration, toggle file, click the path or L251."
1215
+ components={declarationOpenComponents}
1216
+ edges={[]}
1217
+ renderFileViewer={renderFileViewer}
1218
+ />
1219
+ </div>
1220
+ );
1221
+ }
1222
+
1223
+ export const DeclarationLineOpen: Story = {
1224
+ render: () => <DeclarationLineOpenDemo />,
1225
+ };
@@ -275,6 +275,36 @@ export function ComponentDeclaration({
275
275
  newline: '',
276
276
  };
277
277
 
278
+ const declarationStartLine =
279
+ component.declarationRef?.startLine ??
280
+ verification?.declaration?.ref?.startLine ??
281
+ parseSourceLocation(verification?.anchor?.source_location) ??
282
+ undefined;
283
+
284
+ const openDeclarationFile = () => {
285
+ if (!onOpenFile || !component.file) return;
286
+ onOpenFile(
287
+ component.file,
288
+ declarationStartLine != null ? { startLine: declarationStartLine } : undefined,
289
+ );
290
+ };
291
+
292
+ const lineLocationLabel =
293
+ declarationStartLine != null ? (
294
+ <DetailLink onClick={onOpenFile ? openDeclarationFile : undefined}>
295
+ <span
296
+ style={{
297
+ color: theme.colors.accent ?? color,
298
+ fontFamily: theme.fonts.monospace,
299
+ fontSize: theme.fontSizes[0],
300
+ ...(onOpenFile ? clickableStyle : undefined),
301
+ }}
302
+ >
303
+ L{declarationStartLine}
304
+ </span>
305
+ </DetailLink>
306
+ ) : null;
307
+
278
308
  const line = (children: ReactNode, key?: string, indent?: boolean | number) => {
279
309
  const paddingLeft = typeof indent === 'number' ? indent : indent ? 16 : 0;
280
310
  return (
@@ -359,6 +389,7 @@ export function ComponentDeclaration({
359
389
  </button>
360
390
  )}
361
391
  {toggleBtn(showFile, () => setShowFile((v) => !v), 'Toggle file path', FileText)}
392
+ {lineLocationLabel}
362
393
  {toggleBtn(showPurpose, () => setShowPurpose((v) => !v), 'Toggle description', AlignLeft)}
363
394
  </span>
364
395
  );
@@ -450,35 +481,26 @@ export function ComponentDeclaration({
450
481
  }
451
482
 
452
483
  if (showFile && component.file) {
453
- const startLine =
454
- component.declarationRef?.startLine ??
455
- verification?.declaration?.ref?.startLine ??
456
- parseSourceLocation(verification?.anchor?.source_location) ??
457
- undefined;
458
484
  lines.push(
459
485
  line(
460
- <DetailLink
461
- onClick={
462
- onOpenFile
463
- ? () => onOpenFile(component.file, startLine != null ? { startLine } : undefined)
464
- : undefined
465
- }
466
- >
467
- <span
468
- onMouseEnter={() => setFileHovered(true)}
469
- onMouseLeave={() => setFileHovered(false)}
470
- style={{
471
- color: theme.colors.textSecondary ?? muted,
472
- fontFamily: theme.fonts.body,
473
- fontSize: theme.fontSizes[1],
474
- textDecoration: fileHovered && onOpenFile ? 'underline' : undefined,
475
- textUnderlineOffset: 2,
476
- }}
477
- >
478
- {component.file}
479
- {startLine != null ? `:${startLine}` : ''}
480
- </span>
481
- </DetailLink>,
486
+ <span style={{ display: 'inline-flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }}>
487
+ <DetailLink onClick={onOpenFile ? openDeclarationFile : undefined}>
488
+ <span
489
+ onMouseEnter={() => setFileHovered(true)}
490
+ onMouseLeave={() => setFileHovered(false)}
491
+ style={{
492
+ color: theme.colors.textSecondary ?? muted,
493
+ fontFamily: theme.fonts.body,
494
+ fontSize: theme.fontSizes[1],
495
+ textDecoration: fileHovered && onOpenFile ? 'underline' : undefined,
496
+ textUnderlineOffset: 2,
497
+ }}
498
+ >
499
+ {component.file}
500
+ </span>
501
+ </DetailLink>
502
+ {lineLocationLabel}
503
+ </span>,
482
504
  'file',
483
505
  ),
484
506
  );