@principal-ade/dynamic-file-tree 0.1.58 → 0.1.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1889,10 +1889,10 @@ var MultiFileTree = ({
1889
1889
  }, "Selected: ", selectedFile.source.name, " / ", selectedFile.path));
1890
1890
  };
1891
1891
  // src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.tsx
1892
- import { Package, FolderKanban, LayoutDashboard, Workflow, BookOpen, FolderOpen, CheckCircle2 } from "lucide-react";
1892
+ import { Package, FolderKanban, LayoutDashboard, Workflow, BookOpen, FolderOpen, CheckCircle2, GitCommit, CircleDot, Circle } from "lucide-react";
1893
1893
  import React11, { useMemo as useMemo9, useRef as useRef5 } from "react";
1894
1894
  import { Tree as Tree3 } from "react-arborist";
1895
- var buildTreeData = (storyboards, workflowCoverageMap) => {
1895
+ var buildTreeDataFromStoryboards = (storyboards, workflowCoverageMap, traceWorkflowsSet, filterMode, versionPrefix) => {
1896
1896
  const packagesMap = new Map;
1897
1897
  const rootStoryboards = [];
1898
1898
  for (const storyboard of storyboards) {
@@ -1906,16 +1906,18 @@ var buildTreeData = (storyboards, workflowCoverageMap) => {
1906
1906
  }
1907
1907
  const buildStoryboardNode = (storyboard) => {
1908
1908
  const children = [];
1909
+ const canvasId = versionPrefix ? `canvas:${versionPrefix}:${storyboard.id}` : `canvas:${storyboard.id}`;
1909
1910
  children.push({
1910
- id: `canvas:${storyboard.id}`,
1911
+ id: canvasId,
1911
1912
  name: "Storyboard",
1912
1913
  type: "canvas",
1913
1914
  canvas: storyboard.canvas,
1914
1915
  storyboard
1915
1916
  });
1916
1917
  if (storyboard.canvas.markdownPath) {
1918
+ const overviewId = versionPrefix ? `overview:${versionPrefix}:${storyboard.id}` : `overview:${storyboard.id}`;
1917
1919
  children.push({
1918
- id: `overview:${storyboard.id}`,
1920
+ id: overviewId,
1919
1921
  name: "Overview",
1920
1922
  type: "overview",
1921
1923
  storyboard,
@@ -1923,28 +1925,51 @@ var buildTreeData = (storyboards, workflowCoverageMap) => {
1923
1925
  });
1924
1926
  }
1925
1927
  if (storyboard.workflows.length > 0) {
1926
- const workflowNodes = storyboard.workflows.map((workflow) => ({
1927
- id: `workflow:${workflow.id}`,
1928
- name: workflow.name,
1929
- type: "workflow",
1930
- workflow,
1931
- storyboard,
1932
- isFullyCovered: workflowCoverageMap?.[workflow.id] ?? false
1933
- })).sort((a, b) => a.name.localeCompare(b.name));
1934
- children.push({
1935
- id: `workflows:${storyboard.id}`,
1936
- name: "Workflows",
1937
- type: "workflows",
1938
- storyboard,
1939
- children: workflowNodes
1940
- });
1928
+ let workflowNodes = storyboard.workflows.map((workflow) => {
1929
+ const workflowHasTraces = traceWorkflowsSet?.has(workflow.id) ?? false;
1930
+ const workflowNodeId = versionPrefix ? `workflow:${versionPrefix}:${workflow.id}` : `workflow:${workflow.id}`;
1931
+ return {
1932
+ id: workflowNodeId,
1933
+ name: workflow.name,
1934
+ type: "workflow",
1935
+ workflow,
1936
+ storyboard,
1937
+ isFullyCovered: workflowCoverageMap?.[workflow.id] ?? false,
1938
+ hasTraces: workflowHasTraces
1939
+ };
1940
+ }).sort((a, b) => a.name.localeCompare(b.name));
1941
+ if (filterMode === "with-traces") {
1942
+ workflowNodes = workflowNodes.filter((node) => node.hasTraces);
1943
+ } else if (filterMode === "without-traces") {
1944
+ workflowNodes = workflowNodes.filter((node) => !node.hasTraces);
1945
+ }
1946
+ if (workflowNodes.length > 0) {
1947
+ const workflowsId = versionPrefix ? `workflows:${versionPrefix}:${storyboard.id}` : `workflows:${storyboard.id}`;
1948
+ children.push({
1949
+ id: workflowsId,
1950
+ name: "Workflows",
1951
+ type: "workflows",
1952
+ storyboard,
1953
+ children: workflowNodes
1954
+ });
1955
+ }
1956
+ }
1957
+ const storyboardHasTracedWorkflows = storyboard.workflows.some((workflow) => traceWorkflowsSet?.has(workflow.id) ?? false);
1958
+ const storyboardHasUntracedWorkflows = storyboard.workflows.some((workflow) => !(traceWorkflowsSet?.has(workflow.id) ?? false));
1959
+ if (filterMode === "with-traces" && !storyboardHasTracedWorkflows) {
1960
+ return null;
1961
+ }
1962
+ if (filterMode === "without-traces" && !storyboardHasUntracedWorkflows) {
1963
+ return null;
1941
1964
  }
1965
+ const storyboardId = versionPrefix ? `storyboard:${versionPrefix}:${storyboard.id}` : `storyboard:${storyboard.id}`;
1942
1966
  return {
1943
- id: `storyboard:${storyboard.id}`,
1967
+ id: storyboardId,
1944
1968
  name: storyboard.name,
1945
1969
  type: "storyboard",
1946
1970
  storyboard,
1947
- children
1971
+ children,
1972
+ hasTraces: storyboardHasTracedWorkflows
1948
1973
  };
1949
1974
  };
1950
1975
  const hasMultiplePackages = packagesMap.size > 1;
@@ -1953,26 +1978,32 @@ var buildTreeData = (storyboards, workflowCoverageMap) => {
1953
1978
  if (shouldShowPackageLevel) {
1954
1979
  const result = [];
1955
1980
  for (const [packageName, packageStoryboards] of packagesMap) {
1956
- const storyboardNodes = packageStoryboards.map(buildStoryboardNode).sort((a, b) => a.name.localeCompare(b.name));
1957
- result.push({
1958
- id: `package:${packageName}`,
1959
- name: packageName,
1960
- type: "package",
1961
- packageName,
1962
- scope: "package",
1963
- children: storyboardNodes
1964
- });
1981
+ const storyboardNodes = packageStoryboards.map(buildStoryboardNode).filter((node) => node !== null).sort((a, b) => a.name.localeCompare(b.name));
1982
+ if (storyboardNodes.length > 0) {
1983
+ const packageId = versionPrefix ? `package:${versionPrefix}:${packageName}` : `package:${packageName}`;
1984
+ result.push({
1985
+ id: packageId,
1986
+ name: packageName,
1987
+ type: "package",
1988
+ packageName,
1989
+ scope: "package",
1990
+ children: storyboardNodes
1991
+ });
1992
+ }
1965
1993
  }
1966
1994
  if (rootStoryboards.length > 0) {
1967
- const rootStoryboardNodes = rootStoryboards.map(buildStoryboardNode).sort((a, b) => a.name.localeCompare(b.name));
1968
- result.push({
1969
- id: "package:root",
1970
- name: "Root",
1971
- type: "package",
1972
- packageName: "root",
1973
- scope: "root",
1974
- children: rootStoryboardNodes
1975
- });
1995
+ const rootStoryboardNodes = rootStoryboards.map(buildStoryboardNode).filter((node) => node !== null).sort((a, b) => a.name.localeCompare(b.name));
1996
+ if (rootStoryboardNodes.length > 0) {
1997
+ const rootPackageId = versionPrefix ? `package:${versionPrefix}:root` : "package:root";
1998
+ result.push({
1999
+ id: rootPackageId,
2000
+ name: "Root",
2001
+ type: "package",
2002
+ packageName: "root",
2003
+ scope: "root",
2004
+ children: rootStoryboardNodes
2005
+ });
2006
+ }
1976
2007
  }
1977
2008
  return result.sort((a, b) => {
1978
2009
  if (a.packageName === "root")
@@ -1986,9 +2017,40 @@ var buildTreeData = (storyboards, workflowCoverageMap) => {
1986
2017
  for (const packageStoryboards of packagesMap.values()) {
1987
2018
  allStoryboards.push(...packageStoryboards);
1988
2019
  }
1989
- return allStoryboards.map(buildStoryboardNode).sort((a, b) => a.name.localeCompare(b.name));
2020
+ return allStoryboards.map(buildStoryboardNode).filter((node) => node !== null).sort((a, b) => a.name.localeCompare(b.name));
1990
2021
  }
1991
2022
  };
2023
+ var buildTreeDataFromVersions = (versionSnapshots, workflowCoverageMap, filterMode, traceWorkflowsSet) => {
2024
+ const result = [];
2025
+ for (const snapshot of versionSnapshots) {
2026
+ const versionKey = `${snapshot.repositoryUrl}@${snapshot.commitSha}`;
2027
+ const versionHasTracedWorkflows = snapshot.storyboards.some((storyboard) => storyboard.workflows.some((workflow) => traceWorkflowsSet?.has(workflow.id) ?? false));
2028
+ const versionHasUntracedWorkflows = snapshot.storyboards.some((storyboard) => storyboard.workflows.some((workflow) => !(traceWorkflowsSet?.has(workflow.id) ?? false)));
2029
+ if (filterMode === "with-traces" && !versionHasTracedWorkflows) {
2030
+ continue;
2031
+ }
2032
+ if (filterMode === "without-traces" && !versionHasUntracedWorkflows) {
2033
+ continue;
2034
+ }
2035
+ const storyboardChildren = buildTreeDataFromStoryboards(snapshot.storyboards, workflowCoverageMap, traceWorkflowsSet, filterMode, versionKey);
2036
+ if (storyboardChildren.length === 0) {
2037
+ continue;
2038
+ }
2039
+ const repoName = snapshot.repositoryUrl.replace("https://github.com/", "");
2040
+ const shortSha = snapshot.commitSha.substring(0, 8);
2041
+ result.push({
2042
+ id: `version:${versionKey}`,
2043
+ name: `${repoName}@${shortSha}`,
2044
+ type: "version",
2045
+ versionSnapshot: snapshot,
2046
+ repositoryUrl: snapshot.repositoryUrl,
2047
+ commitSha: snapshot.commitSha,
2048
+ hasTraces: versionHasTracedWorkflows,
2049
+ children: storyboardChildren
2050
+ });
2051
+ }
2052
+ return result;
2053
+ };
1992
2054
  var StoryboardWorkflowsTreeCore = ({
1993
2055
  storyboards,
1994
2056
  theme,
@@ -2000,7 +2062,10 @@ var StoryboardWorkflowsTreeCore = ({
2000
2062
  verticalNodePadding = "6px",
2001
2063
  verticalPadding = "20px",
2002
2064
  enableDragAndDrop = false,
2003
- workflowCoverageMap
2065
+ workflowCoverageMap,
2066
+ versionSnapshots,
2067
+ workflowFilterMode = "all",
2068
+ traceWorkflowsSet
2004
2069
  }) => {
2005
2070
  const dndProps = getDndProps(enableDragAndDrop);
2006
2071
  const rowHeight = useMemo9(() => {
@@ -2009,11 +2074,19 @@ var StoryboardWorkflowsTreeCore = ({
2009
2074
  const borderHeight = 2;
2010
2075
  return contentLineHeight + paddingValue * 2 + borderHeight;
2011
2076
  }, [verticalNodePadding]);
2012
- const treeData = useMemo9(() => buildTreeData(storyboards, workflowCoverageMap), [storyboards, workflowCoverageMap]);
2077
+ const treeData = useMemo9(() => {
2078
+ if (versionSnapshots && versionSnapshots.length > 0) {
2079
+ return buildTreeDataFromVersions(versionSnapshots, workflowCoverageMap, workflowFilterMode, traceWorkflowsSet);
2080
+ } else {
2081
+ return buildTreeDataFromStoryboards(storyboards, workflowCoverageMap, traceWorkflowsSet, workflowFilterMode);
2082
+ }
2083
+ }, [storyboards, versionSnapshots, workflowCoverageMap, traceWorkflowsSet, workflowFilterMode]);
2013
2084
  const NodeRenderer = (props) => {
2014
2085
  const { node } = props;
2015
2086
  const data = node.data;
2016
- const icon = data.type === "package" ? /* @__PURE__ */ React11.createElement(Package, {
2087
+ const icon = data.type === "version" ? /* @__PURE__ */ React11.createElement(GitCommit, {
2088
+ size: 16
2089
+ }) : data.type === "package" ? /* @__PURE__ */ React11.createElement(Package, {
2017
2090
  size: 16
2018
2091
  }) : data.type === "storyboard" ? /* @__PURE__ */ React11.createElement(FolderKanban, {
2019
2092
  size: 16
@@ -2026,12 +2099,36 @@ var StoryboardWorkflowsTreeCore = ({
2026
2099
  }) : /* @__PURE__ */ React11.createElement(Workflow, {
2027
2100
  size: 16
2028
2101
  });
2029
- const nameColor = data.type === "package" ? theme.colors.primary : data.type === "storyboard" ? theme.colors.success : data.type === "overview" ? theme.colors.info || "#3b82f6" : data.type === "canvas" ? theme.colors.warning || "#f59e0b" : data.type === "workflows" ? theme.colors.text : theme.colors.textSecondary;
2102
+ const nameColor = data.type === "version" ? data.hasTraces ? "#a855f7" : theme.colors.textMuted : data.type === "package" ? theme.colors.primary : data.type === "storyboard" ? data.hasTraces ? theme.colors.success : theme.colors.textSecondary : data.type === "overview" ? theme.colors.info || "#3b82f6" : data.type === "canvas" ? theme.colors.warning || "#f59e0b" : data.type === "workflows" ? theme.colors.text : data.type === "workflow" ? data.hasTraces ? theme.colors.textSecondary : theme.colors.textMuted : theme.colors.textSecondary;
2030
2103
  const nodeHorizontalPadding = data.type === "overview" || data.type === "canvas" || data.type === "workflows" || data.type === "workflow" ? `calc(${horizontalNodePadding} + 12px)` : horizontalNodePadding;
2031
- const rightContent = data.type === "workflow" && data.isFullyCovered ? /* @__PURE__ */ React11.createElement(CheckCircle2, {
2032
- size: 14,
2033
- style: { color: "#10b981", marginLeft: "6px" }
2034
- }) : undefined;
2104
+ const rightContent = (() => {
2105
+ if (data.type === "workflow") {
2106
+ if (data.isFullyCovered) {
2107
+ return /* @__PURE__ */ React11.createElement(CheckCircle2, {
2108
+ size: 14,
2109
+ style: { color: "#10b981", marginLeft: "6px" }
2110
+ });
2111
+ } else if (data.hasTraces !== undefined) {
2112
+ return data.hasTraces ? /* @__PURE__ */ React11.createElement(CircleDot, {
2113
+ size: 14,
2114
+ style: { color: "#10b981", marginLeft: "6px" }
2115
+ }) : /* @__PURE__ */ React11.createElement(Circle, {
2116
+ size: 14,
2117
+ style: { color: theme.colors.textMuted, marginLeft: "6px" }
2118
+ });
2119
+ }
2120
+ }
2121
+ if ((data.type === "version" || data.type === "storyboard") && data.hasTraces !== undefined) {
2122
+ return data.hasTraces ? /* @__PURE__ */ React11.createElement(CircleDot, {
2123
+ size: 14,
2124
+ style: { color: "#10b981", marginLeft: "6px" }
2125
+ }) : /* @__PURE__ */ React11.createElement(Circle, {
2126
+ size: 14,
2127
+ style: { color: theme.colors.textMuted, marginLeft: "6px" }
2128
+ });
2129
+ }
2130
+ return;
2131
+ })();
2035
2132
  return /* @__PURE__ */ React11.createElement(TreeNode, {
2036
2133
  ...props,
2037
2134
  theme,
@@ -2070,7 +2167,7 @@ var StoryboardWorkflowsTreeCore = ({
2070
2167
  ...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
2071
2168
  }
2072
2169
  }, /* @__PURE__ */ React11.createElement(Tree3, {
2073
- initialData: treeData,
2170
+ data: treeData,
2074
2171
  onSelect: handleSelect,
2075
2172
  openByDefault: defaultOpen,
2076
2173
  ...initialOpenState !== undefined && { initialOpenState },
@@ -2085,7 +2182,7 @@ var StoryboardWorkflowsTreeCore = ({
2085
2182
  import { Package as Package2, Folder, LayoutDashboard as LayoutDashboard2, FileText } from "lucide-react";
2086
2183
  import React12, { useMemo as useMemo10, useRef as useRef6 } from "react";
2087
2184
  import { Tree as Tree4 } from "react-arborist";
2088
- var buildTreeData2 = (canvases) => {
2185
+ var buildTreeData = (canvases) => {
2089
2186
  const packagesMap = new Map;
2090
2187
  const rootCanvases = [];
2091
2188
  for (const canvas of canvases) {
@@ -2183,7 +2280,7 @@ var CanvasListTreeCore = ({
2183
2280
  const borderHeight = 2;
2184
2281
  return contentLineHeight + paddingValue * 2 + borderHeight;
2185
2282
  }, [verticalNodePadding]);
2186
- const treeData = useMemo10(() => buildTreeData2(canvases), [canvases]);
2283
+ const treeData = useMemo10(() => buildTreeData(canvases), [canvases]);
2187
2284
  const NodeRenderer = (props) => {
2188
2285
  const { node } = props;
2189
2286
  const data = node.data;
@@ -2249,8 +2346,8 @@ var CanvasListTreeCore = ({
2249
2346
  // src/components/TelemetryCoverageFileTree.tsx
2250
2347
  import {
2251
2348
  Activity,
2252
- CircleDot,
2253
- Circle,
2349
+ CircleDot as CircleDot2,
2350
+ Circle as Circle2,
2254
2351
  TestTube
2255
2352
  } from "lucide-react";
2256
2353
  import React13, { useMemo as useMemo11, useRef as useRef7 } from "react";
@@ -2281,7 +2378,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
2281
2378
  };
2282
2379
  case "partial":
2283
2380
  return {
2284
- icon: /* @__PURE__ */ React13.createElement(CircleDot, {
2381
+ icon: /* @__PURE__ */ React13.createElement(CircleDot2, {
2285
2382
  size: 14
2286
2383
  }),
2287
2384
  color: "#eab308",
@@ -2290,7 +2387,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
2290
2387
  };
2291
2388
  case "none":
2292
2389
  return {
2293
- icon: /* @__PURE__ */ React13.createElement(Circle, {
2390
+ icon: /* @__PURE__ */ React13.createElement(Circle2, {
2294
2391
  size: 14
2295
2392
  }),
2296
2393
  color: "#6b7280",
@@ -2441,7 +2538,7 @@ var TelemetryCoverageFileTree = ({
2441
2538
  opacity: 0.5
2442
2539
  },
2443
2540
  title: "No telemetry instrumentation"
2444
- }, /* @__PURE__ */ React13.createElement(Circle, {
2541
+ }, /* @__PURE__ */ React13.createElement(Circle2, {
2445
2542
  size: 14
2446
2543
  })) : null;
2447
2544
  return /* @__PURE__ */ React13.createElement(TreeNode, {
@@ -20,4 +20,10 @@ export declare const ThemeComparison: Story;
20
20
  export declare const CustomPadding: Story;
21
21
  export declare const WithOverviewNodes: Story;
22
22
  export declare const WithoutOverviewNodes: Story;
23
+ export declare const VersionGrouping: Story;
24
+ export declare const VersionGroupingWithTraces: Story;
25
+ export declare const VersionGroupingWithFilter: Story;
26
+ export declare const VersionEvolution: Story;
27
+ export declare const MultiServiceVersionGrouping: Story;
28
+ export declare const VersionGroupingWithCoverage: Story;
23
29
  //# sourceMappingURL=StoryboardWorkflowsTree.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoryboardWorkflowsTree.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTree.stories.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAyP5E,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,2BAA2B,CAOlD,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1D,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAQ3B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAuE7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAkEpC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAgE7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAU3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAwB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAiBlC,CAAC"}
1
+ {"version":3,"file":"StoryboardWorkflowsTree.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTree.stories.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAyP5E,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,2BAA2B,CAOlD,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1D,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAQ3B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAuE7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAkEpC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAgE7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAU3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAwB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAiBlC,CAAC;AA4CF,eAAO,MAAM,eAAe,EAAE,KAe7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,KAqEvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,KAyFvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAiH9B,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,KA2GzC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,KAyEzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StoryboardWorkflowsTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAO/C,OAAO,KAAK,EAEV,4BAA4B,EAG7B,MAAM,SAAS,CAAC;AAyIjB,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAsJ9E,CAAC"}
1
+ {"version":3,"file":"StoryboardWorkflowsTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAO/C,OAAO,KAAK,EAEV,4BAA4B,EAK7B,MAAM,SAAS,CAAC;AAyPjB,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAsM9E,CAAC"}
@@ -1,11 +1,19 @@
1
1
  import type { Theme } from '@principal-ade/industry-theme';
2
- import type { DiscoveredStoryboard, DiscoveredCanvas, DiscoveredWorkflow, WorkflowTemplate } from '@principal-ai/principal-view-core';
2
+ import type { DiscoveredStoryboard, DiscoveredCanvas, DiscoveredWorkflow, WorkflowTemplate, VersionSnapshot } from '@principal-ai/principal-view-core';
3
3
  import type { TreeNodeData } from '../TreeNode';
4
- export type { DiscoveredStoryboard, DiscoveredCanvas, DiscoveredWorkflow, WorkflowTemplate };
5
- export type StoryboardWorkflowNodeType = 'package' | 'storyboard' | 'overview' | 'canvas' | 'workflows' | 'workflow';
4
+ export type { DiscoveredStoryboard, DiscoveredCanvas, DiscoveredWorkflow, WorkflowTemplate, VersionSnapshot };
5
+ export type StoryboardWorkflowNodeType = 'version' | 'package' | 'storyboard' | 'overview' | 'canvas' | 'workflows' | 'workflow';
6
+ /**
7
+ * Workflow filter mode
8
+ * - 'all': Show all workflows (default)
9
+ * - 'with-traces': Show only workflows that have traces
10
+ * - 'without-traces': Show only workflows that don't have traces
11
+ */
12
+ export type WorkflowFilterMode = 'all' | 'with-traces' | 'without-traces';
6
13
  export interface StoryboardWorkflowNodeData extends TreeNodeData {
7
14
  type: StoryboardWorkflowNodeType;
8
15
  children?: StoryboardWorkflowNodeData[];
16
+ versionSnapshot?: VersionSnapshot;
9
17
  storyboard?: DiscoveredStoryboard;
10
18
  canvas?: DiscoveredCanvas;
11
19
  workflow?: DiscoveredWorkflow;
@@ -14,6 +22,9 @@ export interface StoryboardWorkflowNodeData extends TreeNodeData {
14
22
  scope?: 'package' | 'root';
15
23
  markdownPath?: string;
16
24
  isFullyCovered?: boolean;
25
+ hasTraces?: boolean;
26
+ repositoryUrl?: string;
27
+ commitSha?: string;
17
28
  }
18
29
  export interface StoryboardWorkflowsTreeProps {
19
30
  storyboards: DiscoveredStoryboard[];
@@ -27,5 +38,8 @@ export interface StoryboardWorkflowsTreeProps {
27
38
  verticalPadding?: string;
28
39
  enableDragAndDrop?: boolean;
29
40
  workflowCoverageMap?: Record<string, boolean>;
41
+ versionSnapshots?: VersionSnapshot[];
42
+ workflowFilterMode?: WorkflowFilterMode;
43
+ traceWorkflowsSet?: Set<string>;
30
44
  }
31
45
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAEtI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AAE7F,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAErH,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D,IAAI,EAAE,0BAA0B,CAAC;IACjC,QAAQ,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAGxC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEvJ,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;AAE9G,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjI;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE1E,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D,IAAI,EAAE,0BAA0B,CAAC;IACjC,QAAQ,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAGxC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAG9C,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACjC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ade/dynamic-file-tree",
3
- "version": "0.1.58",
3
+ "version": "0.1.59",
4
4
  "description": "React component for selective directory filtering and file tree visualization",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@principal-ade/industry-theme": ">=0.1.0",
51
- "@principal-ai/principal-view-core": "^0.21.0",
51
+ "@principal-ai/principal-view-core": "^0.22.1",
52
52
  "@principal-ai/repository-abstraction": "^0.5.2",
53
53
  "lucide-react": ">=0.263.0",
54
54
  "react": ">=19.0.0",
@@ -69,10 +69,10 @@
69
69
  }
70
70
  },
71
71
  "devDependencies": {
72
+ "@eslint/js": "^9.32.0",
72
73
  "@principal-ade/industry-theme": "^0.1.0",
73
- "@principal-ai/principal-view-core": "^0.21.0",
74
+ "@principal-ai/principal-view-core": "^0.22.1",
74
75
  "@principal-ai/repository-abstraction": "^0.5.2",
75
- "@eslint/js": "^9.32.0",
76
76
  "@storybook/addon-docs": "^9.1.3",
77
77
  "@storybook/addon-onboarding": "^9.1.3",
78
78
  "@storybook/addon-webpack5-compiler-swc": "^3.0.0",