footprint-explainable-ui 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/adapters/fromRuntimeSnapshot.d.ts +33 -4
  2. package/dist/adapters/fromRuntimeSnapshot.d.ts.map +1 -1
  3. package/dist/adapters/fromRuntimeSnapshot.js +162 -33
  4. package/dist/adapters/fromRuntimeSnapshot.js.map +1 -1
  5. package/dist/components/ExplainableShell/ExplainableShell.d.ts +157 -14
  6. package/dist/components/ExplainableShell/ExplainableShell.d.ts.map +1 -1
  7. package/dist/components/ExplainableShell/ExplainableShell.js +676 -68
  8. package/dist/components/ExplainableShell/ExplainableShell.js.map +1 -1
  9. package/dist/components/ExplainableShell/index.d.ts +1 -1
  10. package/dist/components/ExplainableShell/index.d.ts.map +1 -1
  11. package/dist/components/FlowchartView/SubflowTree.d.ts +7 -14
  12. package/dist/components/FlowchartView/SubflowTree.d.ts.map +1 -1
  13. package/dist/components/FlowchartView/SubflowTree.js +56 -46
  14. package/dist/components/FlowchartView/SubflowTree.js.map +1 -1
  15. package/dist/components/FlowchartView/index.d.ts +32 -4
  16. package/dist/components/FlowchartView/index.d.ts.map +1 -1
  17. package/dist/components/FlowchartView/index.js +22 -2
  18. package/dist/components/FlowchartView/index.js.map +1 -1
  19. package/dist/components/FlowchartView/useSubflowNavigation.d.ts +41 -16
  20. package/dist/components/FlowchartView/useSubflowNavigation.d.ts.map +1 -1
  21. package/dist/components/FlowchartView/useSubflowNavigation.js +69 -50
  22. package/dist/components/FlowchartView/useSubflowNavigation.js.map +1 -1
  23. package/dist/components/GanttTimeline/GanttTimeline.d.ts.map +1 -1
  24. package/dist/components/GanttTimeline/GanttTimeline.js +5 -5
  25. package/dist/components/GanttTimeline/GanttTimeline.js.map +1 -1
  26. package/dist/components/MemoryInspector/MemoryInspector.d.ts.map +1 -1
  27. package/dist/components/MemoryInspector/MemoryInspector.js +36 -13
  28. package/dist/components/MemoryInspector/MemoryInspector.js.map +1 -1
  29. package/dist/components/NarrativeTrace/NarrativeTrace.d.ts.map +1 -1
  30. package/dist/components/NarrativeTrace/NarrativeTrace.js +24 -17
  31. package/dist/components/NarrativeTrace/NarrativeTrace.js.map +1 -1
  32. package/dist/components/ScopeDiff/ScopeDiff.js +3 -3
  33. package/dist/components/ScopeDiff/ScopeDiff.js.map +1 -1
  34. package/dist/components/StageNode/StageNode.d.ts +21 -0
  35. package/dist/components/StageNode/StageNode.d.ts.map +1 -1
  36. package/dist/components/StageNode/StageNode.js +189 -9
  37. package/dist/components/StageNode/StageNode.js.map +1 -1
  38. package/dist/components/TimeTravelControls/TimeTravelControls.d.ts.map +1 -1
  39. package/dist/components/TimeTravelControls/TimeTravelControls.js +19 -3
  40. package/dist/components/TimeTravelControls/TimeTravelControls.js.map +1 -1
  41. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts +19 -8
  42. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.d.ts.map +1 -1
  43. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js +23 -8
  44. package/dist/components/TimeTravelDebugger/TimeTravelDebugger.js.map +1 -1
  45. package/dist/flowchart.cjs +3485 -1340
  46. package/dist/flowchart.cjs.map +1 -1
  47. package/dist/flowchart.d.cts +1616 -177
  48. package/dist/flowchart.d.ts +1616 -177
  49. package/dist/flowchart.d.ts.map +1 -1
  50. package/dist/flowchart.js +3507 -1384
  51. package/dist/flowchart.js.map +1 -1
  52. package/dist/index.cjs +749 -557
  53. package/dist/index.cjs.map +1 -1
  54. package/dist/index.d.cts +276 -29
  55. package/dist/index.d.ts +276 -29
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +742 -547
  58. package/dist/index.js.map +1 -1
  59. package/dist/theme/ThemeProvider.d.ts +14 -0
  60. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  61. package/dist/theme/ThemeProvider.js +15 -1
  62. package/dist/theme/ThemeProvider.js.map +1 -1
  63. package/dist/theme/index.d.ts +4 -2
  64. package/dist/theme/index.d.ts.map +1 -1
  65. package/dist/theme/index.js +3 -2
  66. package/dist/theme/index.js.map +1 -1
  67. package/dist/theme/presets.d.ts +3 -0
  68. package/dist/theme/presets.d.ts.map +1 -1
  69. package/dist/theme/presets.js +22 -0
  70. package/dist/theme/presets.js.map +1 -1
  71. package/dist/theme/tokens.d.ts +22 -1
  72. package/dist/theme/tokens.d.ts.map +1 -1
  73. package/dist/theme/tokens.js +23 -2
  74. package/dist/theme/tokens.js.map +1 -1
  75. package/dist/tsconfig.tsbuildinfo +1 -1
  76. package/dist/types.d.ts +25 -0
  77. package/dist/types.d.ts.map +1 -1
  78. package/package.json +4 -4
  79. package/dist/components/FlowchartView/FlowchartView.d.ts +0 -20
  80. package/dist/components/FlowchartView/FlowchartView.d.ts.map +0 -1
  81. package/dist/components/FlowchartView/FlowchartView.js +0 -80
  82. package/dist/components/FlowchartView/FlowchartView.js.map +0 -1
  83. package/dist/components/FlowchartView/TracedFlowchartView.d.ts +0 -20
  84. package/dist/components/FlowchartView/TracedFlowchartView.d.ts.map +0 -1
  85. package/dist/components/FlowchartView/TracedFlowchartView.js +0 -101
  86. package/dist/components/FlowchartView/TracedFlowchartView.js.map +0 -1
  87. package/dist/components/FlowchartView/specToReactFlow.d.ts +0 -56
  88. package/dist/components/FlowchartView/specToReactFlow.d.ts.map +0 -1
  89. package/dist/components/FlowchartView/specToReactFlow.js +0 -202
  90. package/dist/components/FlowchartView/specToReactFlow.js.map +0 -1
@@ -7,6 +7,20 @@ interface FootprintThemeProps {
7
7
  /**
8
8
  * Optional theme provider — wraps children with CSS custom properties.
9
9
  * Consumers can also just set --fp-* CSS variables directly.
10
+ *
11
+ * Wrapper div uses `display: contents` so it's invisible to the
12
+ * parent's layout (flex / grid / block). This matters because themed
13
+ * children often need to fill a parent (flex:1 / height:100% /
14
+ * grid cells), and a regular block `<div>` here would break that
15
+ * chain — descendants would resolve to 0 height when the parent is
16
+ * flex-column or a grid cell with minmax(0, 1fr). `display: contents`
17
+ * removes the box from the render tree while keeping the DOM intact,
18
+ * so CSS custom property inheritance (which follows the DOM) still
19
+ * flows to children.
20
+ *
21
+ * Trade-off: `display: contents` elements are removed from the
22
+ * accessibility tree in some older browser versions. Our wrapper has
23
+ * no semantic role, so this is fine.
10
24
  */
11
25
  export declare function FootprintTheme({ tokens, children }: FootprintThemeProps): import("react/jsx-runtime").JSX.Element;
12
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAW,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAU5E"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAW,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAa5E"}
@@ -8,9 +8,23 @@ export function useFootprintTheme() {
8
8
  /**
9
9
  * Optional theme provider — wraps children with CSS custom properties.
10
10
  * Consumers can also just set --fp-* CSS variables directly.
11
+ *
12
+ * Wrapper div uses `display: contents` so it's invisible to the
13
+ * parent's layout (flex / grid / block). This matters because themed
14
+ * children often need to fill a parent (flex:1 / height:100% /
15
+ * grid cells), and a regular block `<div>` here would break that
16
+ * chain — descendants would resolve to 0 height when the parent is
17
+ * flex-column or a grid cell with minmax(0, 1fr). `display: contents`
18
+ * removes the box from the render tree while keeping the DOM intact,
19
+ * so CSS custom property inheritance (which follows the DOM) still
20
+ * flows to children.
21
+ *
22
+ * Trade-off: `display: contents` elements are removed from the
23
+ * accessibility tree in some older browser versions. Our wrapper has
24
+ * no semantic role, so this is fine.
11
25
  */
12
26
  export function FootprintTheme({ tokens = {}, children }) {
13
27
  const cssVars = tokensToCSSVars(tokens);
14
- return (_jsx(ThemeContext.Provider, { value: tokens, children: _jsx("div", { style: cssVars, className: "fp-theme-root", children: children }) }));
28
+ return (_jsx(ThemeContext.Provider, { value: tokens, children: _jsx("div", { style: { ...cssVars, display: "contents" }, className: "fp-theme-root", children: children }) }));
15
29
  }
16
30
  //# sourceMappingURL=ThemeProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,YAAY,GAAG,aAAa,CAAc,EAAE,CAAC,CAAC;AAEpD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,EAAuB;IAC3E,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAClC,cAAK,KAAK,EAAE,OAA8B,EAAE,SAAS,EAAC,eAAe,YAClE,QAAQ,GACL,GACgB,CACzB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ThemeProvider.js","sourceRoot":"","sources":["../../src/theme/ThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,YAAY,GAAG,aAAa,CAAc,EAAE,CAAC,CAAC;AAEpD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,EAAuB;IAC3E,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAClC,cACE,KAAK,EAAE,EAAE,GAAI,OAA+B,EAAE,OAAO,EAAE,UAAU,EAAE,EACnE,SAAS,EAAC,eAAe,YAExB,QAAQ,GACL,GACgB,CACzB,CAAC;AACJ,CAAC"}
@@ -1,7 +1,9 @@
1
1
  export { FootprintTheme, useFootprintTheme } from "./ThemeProvider";
2
- export { tokensToCSSVars, defaultTokens } from "./tokens";
2
+ export { tokensToCSSVars, defaultTokens, rawDefaults } from "./tokens";
3
3
  export type { ThemeTokens } from "./tokens";
4
4
  export { theme, fontSize, padding, v } from "./styles";
5
- export { themePresets, coolDark, warmDark, warmLight } from "./presets";
5
+ export { themePresets, coolDark, coolLight, warmDark, warmLight } from "./presets";
6
6
  export type { ThemePresetName } from "./presets";
7
+ export { useDarkModeTokens } from "./useDarkModeTokens";
8
+ export type { DarkModeTokensOptions } from "./useDarkModeTokens";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnF,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { FootprintTheme, useFootprintTheme } from "./ThemeProvider";
2
- export { tokensToCSSVars, defaultTokens } from "./tokens";
2
+ export { tokensToCSSVars, defaultTokens, rawDefaults } from "./tokens";
3
3
  export { theme, fontSize, padding, v } from "./styles";
4
- export { themePresets, coolDark, warmDark, warmLight } from "./presets";
4
+ export { themePresets, coolDark, coolLight, warmDark, warmLight } from "./presets";
5
+ export { useDarkModeTokens } from "./useDarkModeTokens";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -5,9 +5,12 @@ export declare const coolDark: ThemeTokens;
5
5
  export declare const warmDark: ThemeTokens;
6
6
  /** Warm light theme — cream/peach palette */
7
7
  export declare const warmLight: ThemeTokens;
8
+ /** Cool light theme — neutral grays, matches Tailwind zinc palette */
9
+ export declare const coolLight: ThemeTokens;
8
10
  /** All built-in theme presets */
9
11
  export declare const themePresets: {
10
12
  readonly coolDark: ThemeTokens;
13
+ readonly coolLight: ThemeTokens;
11
14
  readonly warmDark: ThemeTokens;
12
15
  readonly warmLight: ThemeTokens;
13
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,4CAA4C;AAC5C,eAAO,MAAM,QAAQ,EAAE,WAmBtB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,QAAQ,EAAE,WAmBtB,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,SAAS,EAAE,WAmBvB,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,4CAA4C;AAC5C,eAAO,MAAM,QAAQ,EAAE,WAmBtB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,QAAQ,EAAE,WAmBtB,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,SAAS,EAAE,WAmBvB,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,SAAS,EAAE,WAmBvB,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC"}
@@ -61,9 +61,31 @@ export const warmLight = {
61
61
  mono: "'JetBrains Mono', 'Fira Code', monospace",
62
62
  },
63
63
  };
64
+ /** Cool light theme — neutral grays, matches Tailwind zinc palette */
65
+ export const coolLight = {
66
+ colors: {
67
+ primary: "#6366f1",
68
+ success: "#22c55e",
69
+ error: "#ef4444",
70
+ warning: "#f59e0b",
71
+ bgPrimary: "#ffffff",
72
+ bgSecondary: "#f9fafb",
73
+ bgTertiary: "#e5e7eb",
74
+ textPrimary: "#18181b",
75
+ textSecondary: "#52525b",
76
+ textMuted: "#a1a1aa",
77
+ border: "#e5e7eb",
78
+ },
79
+ radius: "8px",
80
+ fontFamily: {
81
+ sans: "Inter, system-ui, -apple-system, sans-serif",
82
+ mono: "'JetBrains Mono', 'Fira Code', monospace",
83
+ },
84
+ };
64
85
  /** All built-in theme presets */
65
86
  export const themePresets = {
66
87
  coolDark,
88
+ coolLight,
67
89
  warmDark,
68
90
  warmLight,
69
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,SAAS;CACD,CAAC"}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,SAAS,GAAgB;IACpC,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;CACD,CAAC"}
@@ -21,7 +21,28 @@ export interface ThemeTokens {
21
21
  }
22
22
  /** Maps ThemeTokens to CSS custom property assignments. */
23
23
  export declare function tokensToCSSVars(tokens: ThemeTokens): Record<string, string>;
24
- /** Default dark theme values (used as CSS variable fallbacks). */
24
+ /** Raw fallback values used by tokensToCSSVars() and anywhere a real color is needed. */
25
+ export declare const rawDefaults: {
26
+ readonly colors: {
27
+ readonly primary: "#6366f1";
28
+ readonly success: "#22c55e";
29
+ readonly error: "#ef4444";
30
+ readonly warning: "#f59e0b";
31
+ readonly bgPrimary: "#0f172a";
32
+ readonly bgSecondary: "#1e293b";
33
+ readonly bgTertiary: "#334155";
34
+ readonly textPrimary: "#f8fafc";
35
+ readonly textSecondary: "#94a3b8";
36
+ readonly textMuted: "#64748b";
37
+ readonly border: "#334155";
38
+ };
39
+ readonly radius: "8px";
40
+ readonly fontFamily: {
41
+ readonly sans: "Inter, system-ui, -apple-system, sans-serif";
42
+ readonly mono: "'JetBrains Mono', 'Fira Code', monospace";
43
+ };
44
+ };
45
+ /** Default dark theme values with CSS variable references (consumers can override via CSS). */
25
46
  export declare const defaultTokens: Required<{
26
47
  [K in keyof ThemeTokens]-?: Required<ThemeTokens[K]>;
27
48
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB3E;AAED,kEAAkE;AAClE,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC;KAClC,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACrD,CAmBA,CAAC"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB3E;AAED,2FAA2F;AAC3F,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;CAmBd,CAAC;AAEX,+FAA+F;AAC/F,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC;KAClC,CAAC,IAAI,MAAM,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACrD,CAmBA,CAAC"}
@@ -34,8 +34,8 @@ export function tokensToCSSVars(tokens) {
34
34
  vars["--fp-font-mono"] = tokens.fontFamily.mono;
35
35
  return vars;
36
36
  }
37
- /** Default dark theme values (used as CSS variable fallbacks). */
38
- export const defaultTokens = {
37
+ /** Raw fallback values used by tokensToCSSVars() and anywhere a real color is needed. */
38
+ export const rawDefaults = {
39
39
  colors: {
40
40
  primary: "#6366f1",
41
41
  success: "#22c55e",
@@ -55,4 +55,25 @@ export const defaultTokens = {
55
55
  mono: "'JetBrains Mono', 'Fira Code', monospace",
56
56
  },
57
57
  };
58
+ /** Default dark theme values with CSS variable references (consumers can override via CSS). */
59
+ export const defaultTokens = {
60
+ colors: {
61
+ primary: `var(--fp-color-primary, ${rawDefaults.colors.primary})`,
62
+ success: `var(--fp-color-success, ${rawDefaults.colors.success})`,
63
+ error: `var(--fp-color-error, ${rawDefaults.colors.error})`,
64
+ warning: `var(--fp-color-warning, ${rawDefaults.colors.warning})`,
65
+ bgPrimary: `var(--fp-bg-primary, ${rawDefaults.colors.bgPrimary})`,
66
+ bgSecondary: `var(--fp-bg-secondary, ${rawDefaults.colors.bgSecondary})`,
67
+ bgTertiary: `var(--fp-bg-tertiary, ${rawDefaults.colors.bgTertiary})`,
68
+ textPrimary: `var(--fp-text-primary, ${rawDefaults.colors.textPrimary})`,
69
+ textSecondary: `var(--fp-text-secondary, ${rawDefaults.colors.textSecondary})`,
70
+ textMuted: `var(--fp-text-muted, ${rawDefaults.colors.textMuted})`,
71
+ border: `var(--fp-border, ${rawDefaults.colors.border})`,
72
+ },
73
+ radius: `var(--fp-radius, ${rawDefaults.radius})`,
74
+ fontFamily: {
75
+ sans: `var(--fp-font-sans, ${rawDefaults.fontFamily.sans})`,
76
+ mono: `var(--fp-font-mono, ${rawDefaults.fontFamily.mono})`,
77
+ },
78
+ };
58
79
  //# sourceMappingURL=tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAsBA,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,CAAC,WAAW;YAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,CAAC,UAAU;YAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,CAAC,WAAW;YAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,CAAC,aAAa;YAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,CAAC,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI;QAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7E,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI;QAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAErB;IACH,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACF,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"AAsBA,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,CAAC,OAAO;YAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,CAAC,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,CAAC,WAAW;YAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,CAAC,UAAU;YAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,CAAC,WAAW;YAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,CAAC,aAAa;YAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,CAAC,SAAS;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM;QAAE,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI;QAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7E,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI;QAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE,KAAK;IACb,UAAU,EAAE;QACV,IAAI,EAAE,6CAA6C;QACnD,IAAI,EAAE,0CAA0C;KACjD;CACO,CAAC;AAEX,+FAA+F;AAC/F,MAAM,CAAC,MAAM,aAAa,GAErB;IACH,MAAM,EAAE;QACN,OAAO,EAAE,2BAA2B,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG;QACjE,OAAO,EAAE,2BAA2B,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG;QACjE,KAAK,EAAE,yBAAyB,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG;QAC3D,OAAO,EAAE,2BAA2B,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG;QACjE,SAAS,EAAE,wBAAwB,WAAW,CAAC,MAAM,CAAC,SAAS,GAAG;QAClE,WAAW,EAAE,0BAA0B,WAAW,CAAC,MAAM,CAAC,WAAW,GAAG;QACxE,UAAU,EAAE,yBAAyB,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG;QACrE,WAAW,EAAE,0BAA0B,WAAW,CAAC,MAAM,CAAC,WAAW,GAAG;QACxE,aAAa,EAAE,4BAA4B,WAAW,CAAC,MAAM,CAAC,aAAa,GAAG;QAC9E,SAAS,EAAE,wBAAwB,WAAW,CAAC,MAAM,CAAC,SAAS,GAAG;QAClE,MAAM,EAAE,oBAAoB,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG;KACzD;IACD,MAAM,EAAE,oBAAoB,WAAW,CAAC,MAAM,GAAG;IACjD,UAAU,EAAE;QACV,IAAI,EAAE,uBAAuB,WAAW,CAAC,UAAU,CAAC,IAAI,GAAG;QAC3D,IAAI,EAAE,uBAAuB,WAAW,CAAC,UAAU,CAAC,IAAI,GAAG;KAC5D;CACF,CAAC"}
@@ -1 +1 @@
1
- {"root":["../src/flowchart.ts","../src/index.ts","../src/types.ts","../src/adapters/fromruntimesnapshot.ts","../src/components/explainableshell/explainableshell.tsx","../src/components/explainableshell/index.ts","../src/components/flowchartview/flowchartview.tsx","../src/components/flowchartview/subflowbreadcrumb.tsx","../src/components/flowchartview/subflowtree.tsx","../src/components/flowchartview/tracedflowchartview.tsx","../src/components/flowchartview/index.ts","../src/components/flowchartview/spectoreactflow.ts","../src/components/flowchartview/usesubflownavigation.ts","../src/components/gantttimeline/gantttimeline.tsx","../src/components/gantttimeline/index.ts","../src/components/memoryinspector/memoryinspector.tsx","../src/components/memoryinspector/index.ts","../src/components/narrativelog/narrativelog.tsx","../src/components/narrativelog/index.ts","../src/components/narrativetrace/narrativetrace.tsx","../src/components/narrativetrace/index.ts","../src/components/resultpanel/resultpanel.tsx","../src/components/resultpanel/index.ts","../src/components/scopediff/scopediff.tsx","../src/components/scopediff/index.ts","../src/components/snapshotpanel/snapshotpanel.tsx","../src/components/snapshotpanel/index.ts","../src/components/stagenode/stagenode.tsx","../src/components/stagenode/index.ts","../src/components/timetravelcontrols/timetravelcontrols.tsx","../src/components/timetravelcontrols/index.ts","../src/components/timetraveldebugger/timetraveldebugger.tsx","../src/components/timetraveldebugger/index.ts","../src/theme/themeprovider.tsx","../src/theme/index.ts","../src/theme/presets.ts","../src/theme/styles.ts","../src/theme/tokens.ts"],"version":"5.9.3"}
1
+ {"root":["../src/flowchart.ts","../src/index.ts","../src/types.ts","../src/adapters/fromruntimesnapshot.ts","../src/components/compacttimeline/compacttimeline.tsx","../src/components/datatracepanel/datatracepanel.tsx","../src/components/explainableshell/explainableshell.tsx","../src/components/explainableshell/index.ts","../src/components/flowchartview/commitchainview.tsx","../src/components/flowchartview/commitinspector.tsx","../src/components/flowchartview/nodeinspector.tsx","../src/components/flowchartview/runslider.tsx","../src/components/flowchartview/subflowbreadcrumb.tsx","../src/components/flowchartview/subflowbreadcrumbbar.tsx","../src/components/flowchartview/subflowtree.tsx","../src/components/flowchartview/traceexplorershell.tsx","../src/components/flowchartview/traceflow.tsx","../src/components/flowchartview/tracedflow.tsx","../src/components/flowchartview/buildcommitchaintree.ts","../src/components/flowchartview/createcommitflowrecorder.ts","../src/components/flowchartview/createnodeviewrecorder.ts","../src/components/flowchartview/createtracebundle.ts","../src/components/flowchartview/createtraceruntimeoverlay.ts","../src/components/flowchartview/index.ts","../src/components/flowchartview/tracestructurerecorder.ts","../src/components/flowchartview/usesubflownavigation.ts","../src/components/flowchartview/walkhelpers.ts","../src/components/flowchartview/_internal/devwarn.ts","../src/components/flowchartview/_internal/keys.ts","../src/components/flowchartview/_internal/notifychange.ts","../src/components/flowchartview/_internal/overlayprojection.ts","../src/components/flowchartview/_internal/subflowdrill.ts","../src/components/flowchartview/_internal/usechartautorefit.ts","../src/components/flowchartview/_internal/usesubflowdrill.ts","../src/components/flowchartview/_internal/usetranslator.ts","../src/components/flowchartview/_internal/walksubflowspecinto.ts","../src/components/gantttimeline/gantttimeline.tsx","../src/components/gantttimeline/index.ts","../src/components/insightpanel/insightpanel.tsx","../src/components/inspectorpanel/inspectorpanel.tsx","../src/components/memoryinspector/memoryinspector.tsx","../src/components/memoryinspector/index.ts","../src/components/memorypanel/memorypanel.tsx","../src/components/memorypanel/index.ts","../src/components/narrativelog/narrativelog.tsx","../src/components/narrativelog/index.ts","../src/components/narrativepanel/narrativepanel.tsx","../src/components/narrativepanel/index.ts","../src/components/narrativetrace/narrativetrace.tsx","../src/components/narrativetrace/index.ts","../src/components/resultpanel/resultpanel.tsx","../src/components/resultpanel/index.ts","../src/components/scopediff/scopediff.tsx","../src/components/scopediff/index.ts","../src/components/snapshotpanel/snapshotpanel.tsx","../src/components/snapshotpanel/index.ts","../src/components/stagedetailpanel/stagedetailpanel.tsx","../src/components/stagedetailpanel/index.ts","../src/components/stagenode/stagenode.tsx","../src/components/stagenode/index.ts","../src/components/storynarrative/storynarrative.tsx","../src/components/storynarrative/index.ts","../src/components/timetravelcontrols/timetravelcontrols.tsx","../src/components/timetravelcontrols/index.ts","../src/components/timetraveldebugger/timetraveldebugger.tsx","../src/components/timetraveldebugger/index.ts","../src/components/traceviewer/traceviewer.tsx","../src/theme/themeprovider.tsx","../src/theme/index.ts","../src/theme/presets.ts","../src/theme/styles.ts","../src/theme/tokens.ts","../src/theme/usedarkmodetokens.ts","../src/utils/narrativesync.ts"],"version":"5.9.3"}
package/dist/types.d.ts CHANGED
@@ -4,6 +4,8 @@ export interface StageSnapshot {
4
4
  stageName: string;
5
5
  /** Human-readable label */
6
6
  stageLabel: string;
7
+ /** Unique per-execution-step identifier. Format: [subflowPath/]stageId#executionIndex. Key for recorder Map lookup. */
8
+ runtimeStageId?: string;
7
9
  /** Accumulated memory state after this stage ran */
8
10
  memory: Record<string, unknown>;
9
11
  /** Narrative text describing what happened */
@@ -18,6 +20,29 @@ export interface StageSnapshot {
18
20
  description?: string;
19
21
  /** Subflow identifier (when this stage is inside a subflow) */
20
22
  subflowId?: string;
23
+ /** Subflow execution result — present on stages that ran a subflow. */
24
+ subflowResult?: unknown;
25
+ }
26
+ /** Structured narrative entry — preserves type info for semantic rendering. */
27
+ export interface NarrativeEntry {
28
+ type: 'stage' | 'step' | 'condition' | 'fork' | 'selector' | 'subflow' | 'loop' | 'break' | 'error' | 'pause' | 'resume' | 'emit';
29
+ text: string;
30
+ depth: number;
31
+ stageName?: string;
32
+ /** Stable stage identifier (matches spec node id). Primary key for UI sync. */
33
+ stageId?: string;
34
+ /** Unique per-execution-step identifier. Format: [subflowPath/]stageId#executionIndex.
35
+ * Used for exact time-travel sync (preferred over stageId for progressive reveal). */
36
+ runtimeStageId?: string;
37
+ /** Subflow ID when this entry was generated inside a subflow. */
38
+ subflowId?: string;
39
+ /** Direction for subflow entries: 'entry' when entering, 'exit' when leaving. */
40
+ direction?: 'entry' | 'exit';
41
+ stepNumber?: number;
42
+ /** Scope key that was read or written. Only present on 'step' entries. */
43
+ key?: string;
44
+ /** Raw value from the scope event. Only present on 'step' entries. */
45
+ rawValue?: unknown;
21
46
  }
22
47
  /** Component size variants */
23
48
  export type Size = "compact" | "default" | "detailed";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACjD,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8BAA8B;AAC9B,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,uHAAuH;IACvH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACjD,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,IAAI,EACA,OAAO,GACP,MAAM,GACN,WAAW,GACX,MAAM,GACN,UAAU,GACV,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;2FACuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,8BAA8B;AAC9B,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "footprint-explainable-ui",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Themeable React components for visualizing FootPrint pipeline execution",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -54,10 +54,10 @@
54
54
  "@testing-library/react": "^16.3.2",
55
55
  "@types/react": "^19.0.0",
56
56
  "@types/react-dom": "^19.0.0",
57
- "@xyflow/react": "^12.10.1",
57
+ "@xyflow/react": "^12.10.2",
58
58
  "jsdom": "^29.0.1",
59
- "react": "^19.2.0",
60
- "react-dom": "^19.2.0",
59
+ "react": "^19.2.5",
60
+ "react-dom": "^19.2.5",
61
61
  "tsup": "^8.4.0",
62
62
  "typescript": "^5.4.0",
63
63
  "vitest": "^4.1.0"
@@ -1,20 +0,0 @@
1
- import type { Node, Edge } from "@xyflow/react";
2
- import type { StageSnapshot, BaseComponentProps } from "../../types";
3
- export interface FlowchartViewProps extends BaseComponentProps {
4
- /** ReactFlow nodes */
5
- nodes: Node[];
6
- /** ReactFlow edges */
7
- edges: Edge[];
8
- /** Optional snapshots for state-aware rendering (done/active coloring) */
9
- snapshots?: StageSnapshot[];
10
- /** Currently selected snapshot index (for state coloring) */
11
- selectedIndex?: number;
12
- /** Callback when a node is clicked */
13
- onNodeClick?: (index: number) => void;
14
- }
15
- /**
16
- * Pipeline flowchart visualization using ReactFlow.
17
- * When snapshots are provided, nodes are colored by execution state.
18
- */
19
- export declare function FlowchartView({ nodes: rawNodes, edges: rawEdges, snapshots, selectedIndex, onNodeClick, unstyled, className, style, }: FlowchartViewProps): import("react/jsx-runtime").JSX.Element;
20
- //# sourceMappingURL=FlowchartView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlowchartView.d.ts","sourceRoot":"","sources":["../../../src/components/FlowchartView/FlowchartView.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKrE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,sBAAsB;IACtB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,0EAA0E;IAC1E,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,EACf,SAAS,EACT,aAAiB,EACjB,WAAW,EACX,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,2CA6GpB"}
@@ -1,80 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo, useCallback } from "react";
3
- import { ReactFlow, Background, BackgroundVariant, useNodesState, useEdgesState, } from "@xyflow/react";
4
- import { StageNode } from "../StageNode";
5
- import { theme } from "../../theme";
6
- const nodeTypes = { stageNode: StageNode };
7
- /**
8
- * Pipeline flowchart visualization using ReactFlow.
9
- * When snapshots are provided, nodes are colored by execution state.
10
- */
11
- export function FlowchartView({ nodes: rawNodes, edges: rawEdges, snapshots, selectedIndex = 0, onNodeClick, unstyled = false, className, style, }) {
12
- // Enhance nodes with execution state
13
- const enhancedNodes = useMemo(() => {
14
- if (!snapshots || snapshots.length === 0) {
15
- return rawNodes.map((n) => ({
16
- ...n,
17
- type: "stageNode",
18
- data: {
19
- ...n.data,
20
- label: n.data.label || n.id,
21
- active: false,
22
- done: false,
23
- error: false,
24
- },
25
- }));
26
- }
27
- const doneNames = new Set(snapshots.slice(0, selectedIndex).map((s) => s.stageName));
28
- const activeName = snapshots[selectedIndex]?.stageName;
29
- return rawNodes.map((n) => ({
30
- ...n,
31
- type: "stageNode",
32
- data: {
33
- ...n.data,
34
- label: n.data.label || n.id,
35
- active: n.id === activeName,
36
- done: doneNames.has(n.id),
37
- error: false,
38
- },
39
- }));
40
- }, [rawNodes, snapshots, selectedIndex]);
41
- // Enhance edges with state coloring
42
- const enhancedEdges = useMemo(() => {
43
- if (!snapshots || snapshots.length === 0) {
44
- return rawEdges.map((e) => ({
45
- ...e,
46
- style: { stroke: theme.textMuted, strokeWidth: 1.5 },
47
- animated: false,
48
- }));
49
- }
50
- const doneNames = new Set(snapshots.slice(0, selectedIndex + 1).map((s) => s.stageName));
51
- const activeName = snapshots[selectedIndex]?.stageName;
52
- return rawEdges.map((e) => {
53
- const sourceIsDone = doneNames.has(e.source);
54
- const isFromActive = e.source === activeName;
55
- return {
56
- ...e,
57
- style: {
58
- stroke: sourceIsDone ? theme.success : theme.textMuted,
59
- strokeWidth: 1.5,
60
- },
61
- animated: isFromActive,
62
- };
63
- });
64
- }, [rawEdges, snapshots, selectedIndex]);
65
- const [nodes, , onNodesChange] = useNodesState(enhancedNodes);
66
- const [edges, , onEdgesChange] = useEdgesState(enhancedEdges);
67
- const handleNodeClick = useCallback((_, node) => {
68
- if (!onNodeClick || !snapshots)
69
- return;
70
- const idx = snapshots.findIndex((s) => s.stageName === node.id);
71
- if (idx >= 0)
72
- onNodeClick(idx);
73
- }, [onNodeClick, snapshots]);
74
- return (_jsx("div", { className: className, style: {
75
- width: "100%",
76
- height: "100%",
77
- ...style,
78
- }, "data-fp": "flowchart-view", children: _jsx(ReactFlow, { nodes: nodes, edges: edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, onNodeClick: handleNodeClick, nodeTypes: nodeTypes, fitView: true, panOnDrag: false, zoomOnScroll: false, zoomOnPinch: false, zoomOnDoubleClick: false, preventScrolling: false, nodesDraggable: false, nodesConnectable: false, elementsSelectable: !!onNodeClick, children: !unstyled && (_jsx(Background, { variant: BackgroundVariant.Dots, gap: 16, size: 1 })) }) }));
79
- }
80
- //# sourceMappingURL=FlowchartView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FlowchartView.js","sourceRoot":"","sources":["../../../src/components/FlowchartView/FlowchartView.tsx"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import type { StageSnapshot, BaseComponentProps } from "../../types";
2
- import type { SpecNode } from "./specToReactFlow";
3
- export interface TracedFlowchartViewProps extends BaseComponentProps {
4
- /** Pipeline spec from builder.toSpec() */
5
- spec: SpecNode;
6
- /** Visualization snapshots (enables trace overlay when provided) */
7
- snapshots?: StageSnapshot[];
8
- /** Current time-travel position */
9
- snapshotIndex?: number;
10
- /** Callback when a node is clicked (receives snapshot index, or node id if no snapshots) */
11
- onNodeClick?: (indexOrId: number | string) => void;
12
- /** Callback when subflow navigation changes (true = entered subflow) */
13
- onSubflowChange?: (isInSubflow: boolean, subflowNodeName: string | null) => void;
14
- /** Show collapsible subflow tree sidebar (default: false) */
15
- showTree?: boolean;
16
- /** Width of the tree sidebar in pixels (default: 200) */
17
- treeWidth?: number;
18
- }
19
- export declare function TracedFlowchartView({ spec, snapshots, snapshotIndex, onNodeClick, onSubflowChange, showTree, treeWidth, unstyled, className, style, }: TracedFlowchartViewProps): import("react/jsx-runtime").JSX.Element;
20
- //# sourceMappingURL=TracedFlowchartView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TracedFlowchartView.d.ts","sourceRoot":"","sources":["../../../src/components/FlowchartView/TracedFlowchartView.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,mBAAmB,CAAC;AAKpE,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,0CAA0C;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,oEAAoE;IACpE,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACnD,wEAAwE;IACxE,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjF,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,SAAS,EACT,aAAiB,EACjB,WAAW,EACX,eAAe,EACf,QAAgB,EAChB,SAAe,EACf,QAAgB,EAChB,SAAS,EACT,KAAK,GACN,EAAE,wBAAwB,2CA+K1B"}
@@ -1,101 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Self-contained flowchart with execution trace overlay.
4
- *
5
- * Consumer just passes `spec` and optionally `snapshots` + `snapshotIndex`.
6
- * The component internally computes the overlay, handles subflow drill-down,
7
- * and renders the correct nodes/edges — no manual overlay construction needed.
8
- *
9
- * Usage:
10
- * <TracedFlowchartView spec={spec} /> // static
11
- * <TracedFlowchartView spec={spec} snapshots={snaps} snapshotIndex={idx} /> // traced
12
- * <TracedFlowchartView spec={spec} snapshots={snaps} snapshotIndex={idx} showTree />
13
- */
14
- import { useState, useMemo, useCallback } from "react";
15
- import { ReactFlow, Background, BackgroundVariant, } from "@xyflow/react";
16
- import { StageNode } from "../StageNode";
17
- import { specToReactFlow } from "./specToReactFlow";
18
- import { useSubflowNavigation } from "./useSubflowNavigation";
19
- import { SubflowBreadcrumb } from "./SubflowBreadcrumb";
20
- import { SubflowTree } from "./SubflowTree";
21
- const nodeTypes = { stage: StageNode };
22
- export function TracedFlowchartView({ spec, snapshots, snapshotIndex = 0, onNodeClick, onSubflowChange, showTree = false, treeWidth = 200, unstyled = false, className, style, }) {
23
- const [treeVisible, setTreeVisible] = useState(showTree);
24
- // Subflow navigation — no overlay passed (computed synchronously below)
25
- const subflowNav = useSubflowNavigation(spec);
26
- // Get the current level's spec from breadcrumbs
27
- const currentSpec = subflowNav.breadcrumbs.length > 0
28
- ? subflowNav.breadcrumbs[subflowNav.breadcrumbs.length - 1].spec
29
- : null;
30
- // Compute execution overlay from snapshots + index
31
- const overlay = useMemo(() => {
32
- if (!snapshots || snapshots.length === 0)
33
- return undefined;
34
- const executionOrder = snapshots
35
- .slice(0, snapshotIndex + 1)
36
- .map((s) => s.stageLabel);
37
- const doneStages = new Set(snapshots.slice(0, snapshotIndex).map((s) => s.stageLabel));
38
- const activeStage = snapshots[snapshotIndex]?.stageLabel ?? null;
39
- const executedStages = new Set([...doneStages]);
40
- if (activeStage)
41
- executedStages.add(activeStage);
42
- return { doneStages, activeStage, executedStages, executionOrder };
43
- }, [snapshots, snapshotIndex]);
44
- // Derive nodes/edges with overlay applied
45
- const { nodes, edges } = useMemo(() => {
46
- if (!currentSpec)
47
- return { nodes: [], edges: [] };
48
- return specToReactFlow(currentSpec, overlay);
49
- }, [currentSpec, overlay]);
50
- // Handle node clicks — drill into subflow or notify consumer
51
- const handleNodeClick = useCallback((_, node) => {
52
- // Try subflow drill-down first
53
- if (subflowNav.handleNodeClick(node.id)) {
54
- onSubflowChange?.(true, node.id);
55
- return;
56
- }
57
- // Otherwise notify consumer
58
- if (onNodeClick && snapshots) {
59
- const idx = snapshots.findIndex((s) => s.stageLabel === node.id);
60
- if (idx >= 0)
61
- onNodeClick(idx);
62
- }
63
- else if (onNodeClick) {
64
- onNodeClick(node.id);
65
- }
66
- }, [subflowNav, onNodeClick, onSubflowChange, snapshots]);
67
- // Navigate breadcrumb
68
- const handleBreadcrumbNavigate = useCallback((level) => {
69
- subflowNav.navigateTo(level);
70
- onSubflowChange?.(level > 0, null);
71
- }, [subflowNav, onSubflowChange]);
72
- // Tree node click — drill into subflow or jump to snapshot
73
- const handleTreeNodeSelect = useCallback((name, isSubflow) => {
74
- if (isSubflow) {
75
- if (subflowNav.handleNodeClick(name)) {
76
- onSubflowChange?.(true, name);
77
- }
78
- }
79
- else if (onNodeClick && snapshots) {
80
- const idx = snapshots.findIndex((s) => s.stageLabel === name);
81
- if (idx >= 0)
82
- onNodeClick(idx);
83
- }
84
- }, [subflowNav, onNodeClick, onSubflowChange, snapshots]);
85
- return (_jsxs("div", { className: className, style: { width: "100%", height: "100%", display: "flex", flexDirection: "row", ...style }, "data-fp": "traced-flowchart", children: [showTree && treeVisible && (_jsx(SubflowTree, { spec: spec, activeStage: overlay?.activeStage, doneStages: overlay?.doneStages, onNodeSelect: handleTreeNodeSelect, unstyled: unstyled, style: { width: treeWidth, flexShrink: 0, height: "100%" } })), _jsxs("div", { style: { flex: 1, display: "flex", flexDirection: "column", minWidth: 0, height: "100%" }, children: [(subflowNav.isInSubflow || (showTree && !treeVisible)) && (_jsxs("div", { style: { display: "flex", alignItems: "stretch", flexShrink: 0 }, children: [showTree && !treeVisible && (_jsx("button", { onClick: () => setTreeVisible(true), "data-fp": "tree-toggle", style: unstyled ? {} : {
86
- background: "transparent",
87
- border: "none",
88
- cursor: "pointer",
89
- padding: "6px 8px",
90
- fontSize: 10,
91
- flexShrink: 0,
92
- }, children: "\u25B6" })), _jsx("div", { style: { flex: 1 }, children: _jsx(SubflowBreadcrumb, { breadcrumbs: subflowNav.breadcrumbs, onNavigate: handleBreadcrumbNavigate }) })] })), showTree && treeVisible && (_jsxs("div", { style: { display: "flex", alignItems: "stretch", flexShrink: 0 }, children: [_jsx("button", { onClick: () => setTreeVisible(false), "data-fp": "tree-toggle", style: unstyled ? {} : {
93
- background: "transparent",
94
- border: "none",
95
- cursor: "pointer",
96
- padding: "6px 8px",
97
- fontSize: 10,
98
- flexShrink: 0,
99
- }, children: "\u25C0" }), _jsx("div", { style: { flex: 1 }, children: subflowNav.isInSubflow && (_jsx(SubflowBreadcrumb, { breadcrumbs: subflowNav.breadcrumbs, onNavigate: handleBreadcrumbNavigate })) })] })), _jsx("div", { style: { flex: 1, minHeight: 0 }, children: _jsx(ReactFlow, { nodes: nodes, edges: edges, onNodeClick: handleNodeClick, nodeTypes: nodeTypes, fitView: true, panOnDrag: false, zoomOnScroll: false, zoomOnPinch: false, zoomOnDoubleClick: false, preventScrolling: false, nodesDraggable: false, nodesConnectable: false, elementsSelectable: !!onNodeClick, children: !unstyled && (_jsx(Background, { variant: BackgroundVariant.Dots, gap: 16, size: 1 })) }) })] })] }));
100
- }
101
- //# sourceMappingURL=TracedFlowchartView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TracedFlowchartView.js","sourceRoot":"","sources":["../../../src/components/FlowchartView/TracedFlowchartView.tsx"],"names":[],"mappings":"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"}