@principal-ade/dynamic-file-tree 0.1.58 → 0.1.60
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.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +465 -113
- package/dist/src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTree.stories.d.ts +6 -0
- package/dist/src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTree.stories.d.ts.map +1 -1
- package/dist/src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.d.ts.map +1 -1
- package/dist/src/components/StoryboardWorkflowsTree/types.d.ts +17 -3
- package/dist/src/components/StoryboardWorkflowsTree/types.d.ts.map +1 -1
- package/dist/src/components/WorkflowScenarioTree/WorkflowScenarioTree.stories.d.ts +9 -0
- package/dist/src/components/WorkflowScenarioTree/WorkflowScenarioTree.stories.d.ts.map +1 -0
- package/dist/src/components/WorkflowScenarioTree/WorkflowScenarioTreeCore.d.ts +4 -0
- package/dist/src/components/WorkflowScenarioTree/WorkflowScenarioTreeCore.d.ts.map +1 -0
- package/dist/src/components/WorkflowScenarioTree/index.d.ts +3 -0
- package/dist/src/components/WorkflowScenarioTree/index.d.ts.map +1 -0
- package/dist/src/components/WorkflowScenarioTree/types.d.ts +76 -0
- package/dist/src/components/WorkflowScenarioTree/types.d.ts.map +1 -0
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export { MultiFileTree, MultiFileTreeCore } from './src/components/MultiFileTree
|
|
|
20
20
|
export type { MultiFileTreeProps, MultiFileTreeCoreProps } from './src/components/MultiFileTree';
|
|
21
21
|
export { StoryboardWorkflowsTreeCore } from './src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore';
|
|
22
22
|
export type { StoryboardWorkflowsTreeProps, StoryboardWorkflowNodeData, StoryboardWorkflowNodeType, DiscoveredStoryboard, DiscoveredWorkflow, } from './src/components/StoryboardWorkflowsTree/types';
|
|
23
|
+
export { WorkflowScenarioTreeCore } from './src/components/WorkflowScenarioTree';
|
|
24
|
+
export type { WorkflowScenarioTreeProps, WorkflowScenarioNodeData, WorkflowScenarioNodeType, WorkflowWithScenarios, WorkflowFilterMode, } from './src/components/WorkflowScenarioTree';
|
|
23
25
|
export { CanvasListTreeCore } from './src/components/CanvasListTree/CanvasListTreeCore';
|
|
24
26
|
export type { CanvasListTreeProps, CanvasListNodeData, CanvasListNodeType, DiscoveredCanvas, } from './src/components/CanvasListTree/types';
|
|
25
27
|
export { TelemetryCoverageFileTree, calculateTelemetryCoverageStats, } from './src/components/TelemetryCoverageFileTree';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAGxG,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAGhG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAGnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAGjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,SAAS,EACV,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,YAAY,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAGnG,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAClF,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGjG,OAAO,EAAE,2BAA2B,EAAE,MAAM,sEAAsE,CAAC;AACnH,YAAY,EACV,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,gDAAgD,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,4CAA4C,CAAC;AACpD,YAAY,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,kCAAkC,EAAE,MAAM,qDAAqD,CAAC;AACzG,YAAY,EAAE,uCAAuC,EAAE,MAAM,qDAAqD,CAAC;AAGnH,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAGxG,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAGhG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAGnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAGjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,SAAS,EACV,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,YAAY,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAGnG,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAClF,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGjG,OAAO,EAAE,2BAA2B,EAAE,MAAM,sEAAsE,CAAC;AACnH,YAAY,EACV,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,gDAAgD,CAAC;AAGxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,4CAA4C,CAAC;AACpD,YAAY,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,kCAAkC,EAAE,MAAM,qDAAqD,CAAC;AACzG,YAAY,EAAE,uCAAuC,EAAE,MAAM,qDAAqD,CAAC;AAGnH,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
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
|
|
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:
|
|
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:
|
|
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
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
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
|
+
}
|
|
1941
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;
|
|
1964
|
+
}
|
|
1965
|
+
const storyboardId = versionPrefix ? `storyboard:${versionPrefix}:${storyboard.id}` : `storyboard:${storyboard.id}`;
|
|
1942
1966
|
return {
|
|
1943
|
-
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
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
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
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
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,55 @@ 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
|
+
console.log("[buildTreeDataFromVersions] Called with:", {
|
|
2025
|
+
snapshotCount: versionSnapshots.length,
|
|
2026
|
+
filterMode,
|
|
2027
|
+
traceWorkflowsSet
|
|
2028
|
+
});
|
|
2029
|
+
const result = [];
|
|
2030
|
+
for (const snapshot of versionSnapshots) {
|
|
2031
|
+
const versionKey = `${snapshot.repositoryUrl}@${snapshot.commitSha}`;
|
|
2032
|
+
console.log("[buildTreeDataFromVersions] Processing version:", versionKey);
|
|
2033
|
+
console.log("[buildTreeDataFromVersions] Storyboards in snapshot:", snapshot.storyboards.length);
|
|
2034
|
+
const versionHasTracedWorkflows = snapshot.storyboards.some((storyboard) => storyboard.workflows.some((workflow) => traceWorkflowsSet?.has(workflow.id) ?? false));
|
|
2035
|
+
const versionHasUntracedWorkflows = snapshot.storyboards.some((storyboard) => storyboard.workflows.some((workflow) => !(traceWorkflowsSet?.has(workflow.id) ?? false)));
|
|
2036
|
+
console.log("[buildTreeDataFromVersions] Version has traced workflows:", versionHasTracedWorkflows);
|
|
2037
|
+
console.log("[buildTreeDataFromVersions] Version has untraced workflows:", versionHasUntracedWorkflows);
|
|
2038
|
+
if (filterMode === "with-traces" && !versionHasTracedWorkflows) {
|
|
2039
|
+
console.log("[buildTreeDataFromVersions] Skipping version (no traced workflows)");
|
|
2040
|
+
continue;
|
|
2041
|
+
}
|
|
2042
|
+
if (filterMode === "without-traces" && !versionHasUntracedWorkflows) {
|
|
2043
|
+
console.log("[buildTreeDataFromVersions] Skipping version (no untraced workflows)");
|
|
2044
|
+
continue;
|
|
2045
|
+
}
|
|
2046
|
+
console.log("[buildTreeDataFromVersions] Building storyboard children...");
|
|
2047
|
+
const storyboardChildren = buildTreeDataFromStoryboards(snapshot.storyboards, workflowCoverageMap, traceWorkflowsSet, filterMode, versionKey);
|
|
2048
|
+
console.log("[buildTreeDataFromVersions] Storyboard children:", storyboardChildren);
|
|
2049
|
+
console.log("[buildTreeDataFromVersions] Storyboard children length:", storyboardChildren.length);
|
|
2050
|
+
if (storyboardChildren.length === 0) {
|
|
2051
|
+
console.log("[buildTreeDataFromVersions] Skipping version (no children after filtering)");
|
|
2052
|
+
continue;
|
|
2053
|
+
}
|
|
2054
|
+
const repoName = snapshot.repositoryUrl.replace("https://github.com/", "");
|
|
2055
|
+
const shortSha = snapshot.commitSha.substring(0, 8);
|
|
2056
|
+
result.push({
|
|
2057
|
+
id: `version:${versionKey}`,
|
|
2058
|
+
name: `${repoName}@${shortSha}`,
|
|
2059
|
+
type: "version",
|
|
2060
|
+
versionSnapshot: snapshot,
|
|
2061
|
+
repositoryUrl: snapshot.repositoryUrl,
|
|
2062
|
+
commitSha: snapshot.commitSha,
|
|
2063
|
+
hasTraces: versionHasTracedWorkflows,
|
|
2064
|
+
children: storyboardChildren
|
|
2065
|
+
});
|
|
2066
|
+
}
|
|
2067
|
+
return result;
|
|
2068
|
+
};
|
|
1992
2069
|
var StoryboardWorkflowsTreeCore = ({
|
|
1993
2070
|
storyboards,
|
|
1994
2071
|
theme,
|
|
@@ -2000,7 +2077,10 @@ var StoryboardWorkflowsTreeCore = ({
|
|
|
2000
2077
|
verticalNodePadding = "6px",
|
|
2001
2078
|
verticalPadding = "20px",
|
|
2002
2079
|
enableDragAndDrop = false,
|
|
2003
|
-
workflowCoverageMap
|
|
2080
|
+
workflowCoverageMap,
|
|
2081
|
+
versionSnapshots,
|
|
2082
|
+
workflowFilterMode = "all",
|
|
2083
|
+
traceWorkflowsSet
|
|
2004
2084
|
}) => {
|
|
2005
2085
|
const dndProps = getDndProps(enableDragAndDrop);
|
|
2006
2086
|
const rowHeight = useMemo9(() => {
|
|
@@ -2009,11 +2089,29 @@ var StoryboardWorkflowsTreeCore = ({
|
|
|
2009
2089
|
const borderHeight = 2;
|
|
2010
2090
|
return contentLineHeight + paddingValue * 2 + borderHeight;
|
|
2011
2091
|
}, [verticalNodePadding]);
|
|
2012
|
-
const treeData = useMemo9(() =>
|
|
2092
|
+
const treeData = useMemo9(() => {
|
|
2093
|
+
console.log("[StoryboardWorkflowsTreeCore] Building tree data...");
|
|
2094
|
+
console.log("[StoryboardWorkflowsTreeCore] versionSnapshots:", versionSnapshots);
|
|
2095
|
+
console.log("[StoryboardWorkflowsTreeCore] versionSnapshots.length:", versionSnapshots?.length);
|
|
2096
|
+
console.log("[StoryboardWorkflowsTreeCore] workflowFilterMode:", workflowFilterMode);
|
|
2097
|
+
console.log("[StoryboardWorkflowsTreeCore] traceWorkflowsSet:", traceWorkflowsSet);
|
|
2098
|
+
if (versionSnapshots && versionSnapshots.length > 0) {
|
|
2099
|
+
const result = buildTreeDataFromVersions(versionSnapshots, workflowCoverageMap, workflowFilterMode, traceWorkflowsSet);
|
|
2100
|
+
console.log("[StoryboardWorkflowsTreeCore] buildTreeDataFromVersions result:", result);
|
|
2101
|
+
console.log("[StoryboardWorkflowsTreeCore] result.length:", result.length);
|
|
2102
|
+
return result;
|
|
2103
|
+
} else {
|
|
2104
|
+
const result = buildTreeDataFromStoryboards(storyboards, workflowCoverageMap, traceWorkflowsSet, workflowFilterMode);
|
|
2105
|
+
console.log("[StoryboardWorkflowsTreeCore] buildTreeDataFromStoryboards result:", result);
|
|
2106
|
+
return result;
|
|
2107
|
+
}
|
|
2108
|
+
}, [storyboards, versionSnapshots, workflowCoverageMap, traceWorkflowsSet, workflowFilterMode]);
|
|
2013
2109
|
const NodeRenderer = (props) => {
|
|
2014
2110
|
const { node } = props;
|
|
2015
2111
|
const data = node.data;
|
|
2016
|
-
const icon = data.type === "
|
|
2112
|
+
const icon = data.type === "version" ? /* @__PURE__ */ React11.createElement(GitCommit, {
|
|
2113
|
+
size: 16
|
|
2114
|
+
}) : data.type === "package" ? /* @__PURE__ */ React11.createElement(Package, {
|
|
2017
2115
|
size: 16
|
|
2018
2116
|
}) : data.type === "storyboard" ? /* @__PURE__ */ React11.createElement(FolderKanban, {
|
|
2019
2117
|
size: 16
|
|
@@ -2026,12 +2124,36 @@ var StoryboardWorkflowsTreeCore = ({
|
|
|
2026
2124
|
}) : /* @__PURE__ */ React11.createElement(Workflow, {
|
|
2027
2125
|
size: 16
|
|
2028
2126
|
});
|
|
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;
|
|
2127
|
+
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
2128
|
const nodeHorizontalPadding = data.type === "overview" || data.type === "canvas" || data.type === "workflows" || data.type === "workflow" ? `calc(${horizontalNodePadding} + 12px)` : horizontalNodePadding;
|
|
2031
|
-
const rightContent =
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2129
|
+
const rightContent = (() => {
|
|
2130
|
+
if (data.type === "workflow") {
|
|
2131
|
+
if (data.isFullyCovered) {
|
|
2132
|
+
return /* @__PURE__ */ React11.createElement(CheckCircle2, {
|
|
2133
|
+
size: 14,
|
|
2134
|
+
style: { color: "#10b981", marginLeft: "6px" }
|
|
2135
|
+
});
|
|
2136
|
+
} else if (data.hasTraces !== undefined) {
|
|
2137
|
+
return data.hasTraces ? /* @__PURE__ */ React11.createElement(CircleDot, {
|
|
2138
|
+
size: 14,
|
|
2139
|
+
style: { color: "#10b981", marginLeft: "6px" }
|
|
2140
|
+
}) : /* @__PURE__ */ React11.createElement(Circle, {
|
|
2141
|
+
size: 14,
|
|
2142
|
+
style: { color: theme.colors.textMuted, marginLeft: "6px" }
|
|
2143
|
+
});
|
|
2144
|
+
}
|
|
2145
|
+
}
|
|
2146
|
+
if ((data.type === "version" || data.type === "storyboard") && data.hasTraces !== undefined) {
|
|
2147
|
+
return data.hasTraces ? /* @__PURE__ */ React11.createElement(CircleDot, {
|
|
2148
|
+
size: 14,
|
|
2149
|
+
style: { color: "#10b981", marginLeft: "6px" }
|
|
2150
|
+
}) : /* @__PURE__ */ React11.createElement(Circle, {
|
|
2151
|
+
size: 14,
|
|
2152
|
+
style: { color: theme.colors.textMuted, marginLeft: "6px" }
|
|
2153
|
+
});
|
|
2154
|
+
}
|
|
2155
|
+
return;
|
|
2156
|
+
})();
|
|
2035
2157
|
return /* @__PURE__ */ React11.createElement(TreeNode, {
|
|
2036
2158
|
...props,
|
|
2037
2159
|
theme,
|
|
@@ -2070,7 +2192,7 @@ var StoryboardWorkflowsTreeCore = ({
|
|
|
2070
2192
|
...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
|
|
2071
2193
|
}
|
|
2072
2194
|
}, /* @__PURE__ */ React11.createElement(Tree3, {
|
|
2073
|
-
|
|
2195
|
+
data: treeData,
|
|
2074
2196
|
onSelect: handleSelect,
|
|
2075
2197
|
openByDefault: defaultOpen,
|
|
2076
2198
|
...initialOpenState !== undefined && { initialOpenState },
|
|
@@ -2081,11 +2203,240 @@ var StoryboardWorkflowsTreeCore = ({
|
|
|
2081
2203
|
...dndProps
|
|
2082
2204
|
}, NodeRenderer));
|
|
2083
2205
|
};
|
|
2084
|
-
// src/components/
|
|
2085
|
-
import { Package as Package2,
|
|
2086
|
-
import React12, { useMemo as useMemo10
|
|
2206
|
+
// src/components/WorkflowScenarioTree/WorkflowScenarioTreeCore.tsx
|
|
2207
|
+
import { Package as Package2, Workflow as Workflow2, GitCommit as GitCommit2, ListChecks, List } from "lucide-react";
|
|
2208
|
+
import React12, { useMemo as useMemo10 } from "react";
|
|
2087
2209
|
import { Tree as Tree4 } from "react-arborist";
|
|
2088
|
-
var
|
|
2210
|
+
var buildTreeDataFromWorkflows = (workflows, workflowTraceCounts, scenarioTraceCounts, filterMode, minTraceCount) => {
|
|
2211
|
+
const packagesMap = new Map;
|
|
2212
|
+
const rootWorkflows = [];
|
|
2213
|
+
for (const workflow of workflows) {
|
|
2214
|
+
if (workflow.scope === "package" && workflow.packageName) {
|
|
2215
|
+
const existing = packagesMap.get(workflow.packageName) || [];
|
|
2216
|
+
existing.push(workflow);
|
|
2217
|
+
packagesMap.set(workflow.packageName, existing);
|
|
2218
|
+
} else {
|
|
2219
|
+
rootWorkflows.push(workflow);
|
|
2220
|
+
}
|
|
2221
|
+
}
|
|
2222
|
+
const buildWorkflowNode = (workflow) => {
|
|
2223
|
+
const workflowTraceCount = workflowTraceCounts?.[workflow.id] ?? 0;
|
|
2224
|
+
const hasTraces = workflowTraceCount > 0;
|
|
2225
|
+
if (filterMode === "with-traces" && !hasTraces) {
|
|
2226
|
+
return null;
|
|
2227
|
+
}
|
|
2228
|
+
if (filterMode === "without-traces" && hasTraces) {
|
|
2229
|
+
return null;
|
|
2230
|
+
}
|
|
2231
|
+
if (filterMode === "minimum-traces" && workflowTraceCount < (minTraceCount ?? 1)) {
|
|
2232
|
+
return null;
|
|
2233
|
+
}
|
|
2234
|
+
const scenarioNodes = workflow.scenarios.map((scenario) => {
|
|
2235
|
+
const scenarioKey = `${workflow.id}/${scenario.id}`;
|
|
2236
|
+
const scenarioTraceCount = scenarioTraceCounts?.[scenarioKey] ?? 0;
|
|
2237
|
+
return {
|
|
2238
|
+
id: `scenario:${workflow.id}:${scenario.id}`,
|
|
2239
|
+
name: scenario.description,
|
|
2240
|
+
type: "scenario",
|
|
2241
|
+
scenario,
|
|
2242
|
+
workflow,
|
|
2243
|
+
traceCount: scenarioTraceCount,
|
|
2244
|
+
hasTraces: scenarioTraceCount > 0
|
|
2245
|
+
};
|
|
2246
|
+
}).sort((a, b) => (b.traceCount ?? 0) - (a.traceCount ?? 0));
|
|
2247
|
+
const displayName = `${workflow.storyboard.name}: ${workflow.name}`;
|
|
2248
|
+
return {
|
|
2249
|
+
id: `workflow:${workflow.id}`,
|
|
2250
|
+
name: displayName,
|
|
2251
|
+
type: "workflow",
|
|
2252
|
+
workflow,
|
|
2253
|
+
storyboard: workflow.storyboard,
|
|
2254
|
+
traceCount: workflowTraceCount,
|
|
2255
|
+
hasTraces,
|
|
2256
|
+
children: scenarioNodes.length > 0 ? scenarioNodes : undefined
|
|
2257
|
+
};
|
|
2258
|
+
};
|
|
2259
|
+
const hasMultiplePackages = packagesMap.size > 1;
|
|
2260
|
+
const hasRootAndPackages = packagesMap.size > 0 && rootWorkflows.length > 0;
|
|
2261
|
+
const shouldShowPackageLevel = hasMultiplePackages || hasRootAndPackages;
|
|
2262
|
+
if (shouldShowPackageLevel) {
|
|
2263
|
+
const result = [];
|
|
2264
|
+
for (const [packageName, packageWorkflows] of packagesMap) {
|
|
2265
|
+
const workflowNodes = packageWorkflows.map(buildWorkflowNode).filter((node) => node !== null).sort((a, b) => (b.traceCount ?? 0) - (a.traceCount ?? 0));
|
|
2266
|
+
if (workflowNodes.length > 0) {
|
|
2267
|
+
result.push({
|
|
2268
|
+
id: `package:${packageName}`,
|
|
2269
|
+
name: packageName,
|
|
2270
|
+
type: "package",
|
|
2271
|
+
packageName,
|
|
2272
|
+
scope: "package",
|
|
2273
|
+
children: workflowNodes
|
|
2274
|
+
});
|
|
2275
|
+
}
|
|
2276
|
+
}
|
|
2277
|
+
if (rootWorkflows.length > 0) {
|
|
2278
|
+
const rootWorkflowNodes = rootWorkflows.map(buildWorkflowNode).filter((node) => node !== null).sort((a, b) => (b.traceCount ?? 0) - (a.traceCount ?? 0));
|
|
2279
|
+
if (rootWorkflowNodes.length > 0) {
|
|
2280
|
+
result.push({
|
|
2281
|
+
id: "package:root",
|
|
2282
|
+
name: "Root",
|
|
2283
|
+
type: "package",
|
|
2284
|
+
packageName: "root",
|
|
2285
|
+
scope: "root",
|
|
2286
|
+
children: rootWorkflowNodes
|
|
2287
|
+
});
|
|
2288
|
+
}
|
|
2289
|
+
}
|
|
2290
|
+
return result.sort((a, b) => {
|
|
2291
|
+
if (a.packageName === "root")
|
|
2292
|
+
return 1;
|
|
2293
|
+
if (b.packageName === "root")
|
|
2294
|
+
return -1;
|
|
2295
|
+
return a.name.localeCompare(b.name);
|
|
2296
|
+
});
|
|
2297
|
+
} else {
|
|
2298
|
+
const allWorkflows = [...rootWorkflows];
|
|
2299
|
+
for (const packageWorkflows of packagesMap.values()) {
|
|
2300
|
+
allWorkflows.push(...packageWorkflows);
|
|
2301
|
+
}
|
|
2302
|
+
return allWorkflows.map(buildWorkflowNode).filter((node) => node !== null).sort((a, b) => (b.traceCount ?? 0) - (a.traceCount ?? 0));
|
|
2303
|
+
}
|
|
2304
|
+
};
|
|
2305
|
+
var buildTreeDataFromVersions2 = (versionSnapshots, workflowsByVersion, workflowTraceCounts, scenarioTraceCounts, filterMode, minTraceCount) => {
|
|
2306
|
+
const result = [];
|
|
2307
|
+
for (const snapshot of versionSnapshots) {
|
|
2308
|
+
const versionKey = `${snapshot.repositoryUrl}@${snapshot.commitSha}`;
|
|
2309
|
+
const versionWorkflows = workflowsByVersion.get(versionKey) || [];
|
|
2310
|
+
const workflowChildren = buildTreeDataFromWorkflows(versionWorkflows, workflowTraceCounts, scenarioTraceCounts, filterMode, minTraceCount);
|
|
2311
|
+
if (workflowChildren.length === 0) {
|
|
2312
|
+
continue;
|
|
2313
|
+
}
|
|
2314
|
+
const versionTraceCount = versionWorkflows.reduce((sum, workflow) => {
|
|
2315
|
+
return sum + (workflowTraceCounts?.[workflow.id] ?? 0);
|
|
2316
|
+
}, 0);
|
|
2317
|
+
const repoName = snapshot.repositoryUrl.replace("https://github.com/", "");
|
|
2318
|
+
const shortSha = snapshot.commitSha.substring(0, 8);
|
|
2319
|
+
result.push({
|
|
2320
|
+
id: `version:${versionKey}`,
|
|
2321
|
+
name: `${repoName}@${shortSha}`,
|
|
2322
|
+
type: "version",
|
|
2323
|
+
versionSnapshot: snapshot,
|
|
2324
|
+
repositoryUrl: snapshot.repositoryUrl,
|
|
2325
|
+
commitSha: snapshot.commitSha,
|
|
2326
|
+
traceCount: versionTraceCount,
|
|
2327
|
+
hasTraces: versionTraceCount > 0,
|
|
2328
|
+
children: workflowChildren
|
|
2329
|
+
});
|
|
2330
|
+
}
|
|
2331
|
+
return result.sort((a, b) => (b.traceCount ?? 0) - (a.traceCount ?? 0));
|
|
2332
|
+
};
|
|
2333
|
+
var WorkflowScenarioTreeCore = ({
|
|
2334
|
+
workflows,
|
|
2335
|
+
theme,
|
|
2336
|
+
onClick,
|
|
2337
|
+
selectedNodeId,
|
|
2338
|
+
defaultOpen = false,
|
|
2339
|
+
initialOpenState,
|
|
2340
|
+
horizontalNodePadding = "16px",
|
|
2341
|
+
verticalNodePadding = "6px",
|
|
2342
|
+
verticalPadding = "20px",
|
|
2343
|
+
versionSnapshots,
|
|
2344
|
+
workflowTraceCounts,
|
|
2345
|
+
scenarioTraceCounts,
|
|
2346
|
+
workflowFilterMode = "all",
|
|
2347
|
+
minTraceCount = 1
|
|
2348
|
+
}) => {
|
|
2349
|
+
const rowHeight = useMemo10(() => {
|
|
2350
|
+
const paddingValue = parseFloat(verticalNodePadding);
|
|
2351
|
+
const contentLineHeight = 20;
|
|
2352
|
+
const borderHeight = 2;
|
|
2353
|
+
return contentLineHeight + paddingValue * 2 + borderHeight;
|
|
2354
|
+
}, [verticalNodePadding]);
|
|
2355
|
+
const treeData = useMemo10(() => {
|
|
2356
|
+
if (versionSnapshots && versionSnapshots.length > 0) {
|
|
2357
|
+
const workflowsByVersion = new Map;
|
|
2358
|
+
for (const snapshot of versionSnapshots) {
|
|
2359
|
+
const versionKey = `${snapshot.repositoryUrl}@${snapshot.commitSha}`;
|
|
2360
|
+
const versionWorkflows = workflows.filter((workflow) => {
|
|
2361
|
+
return snapshot.storyboards.some((sb) => sb.id === workflow.storyboardId);
|
|
2362
|
+
});
|
|
2363
|
+
workflowsByVersion.set(versionKey, versionWorkflows);
|
|
2364
|
+
}
|
|
2365
|
+
return buildTreeDataFromVersions2(versionSnapshots, workflowsByVersion, workflowTraceCounts, scenarioTraceCounts, workflowFilterMode, minTraceCount);
|
|
2366
|
+
} else {
|
|
2367
|
+
return buildTreeDataFromWorkflows(workflows, workflowTraceCounts, scenarioTraceCounts, workflowFilterMode, minTraceCount);
|
|
2368
|
+
}
|
|
2369
|
+
}, [workflows, versionSnapshots, workflowTraceCounts, scenarioTraceCounts, workflowFilterMode, minTraceCount]);
|
|
2370
|
+
const NodeRenderer = (props) => {
|
|
2371
|
+
const { node } = props;
|
|
2372
|
+
const data = node.data;
|
|
2373
|
+
const icon = data.type === "version" ? /* @__PURE__ */ React12.createElement(GitCommit2, {
|
|
2374
|
+
size: 16
|
|
2375
|
+
}) : data.type === "package" ? /* @__PURE__ */ React12.createElement(Package2, {
|
|
2376
|
+
size: 16
|
|
2377
|
+
}) : data.type === "workflow" ? /* @__PURE__ */ React12.createElement(Workflow2, {
|
|
2378
|
+
size: 16
|
|
2379
|
+
}) : data.type === "scenario" ? data.hasTraces ? /* @__PURE__ */ React12.createElement(ListChecks, {
|
|
2380
|
+
size: 16
|
|
2381
|
+
}) : /* @__PURE__ */ React12.createElement(List, {
|
|
2382
|
+
size: 16
|
|
2383
|
+
}) : null;
|
|
2384
|
+
const nameColor = data.type === "version" ? data.hasTraces ? "#a855f7" : theme.colors.textMuted : data.type === "package" ? theme.colors.primary : data.type === "workflow" ? data.hasTraces ? theme.colors.success : theme.colors.textSecondary : data.hasTraces ? theme.colors.secondary : theme.colors.textMuted;
|
|
2385
|
+
const nodeHorizontalPadding = data.type === "workflow" || data.type === "scenario" ? `calc(${horizontalNodePadding} + 12px)` : horizontalNodePadding;
|
|
2386
|
+
const rightContent = data.traceCount !== undefined ? /* @__PURE__ */ React12.createElement("span", {
|
|
2387
|
+
style: {
|
|
2388
|
+
marginLeft: "8px",
|
|
2389
|
+
fontSize: "12px",
|
|
2390
|
+
color: data.hasTraces ? data.type === "scenario" ? theme.colors.secondary : theme.colors.success : theme.colors.textMuted,
|
|
2391
|
+
fontWeight: 500
|
|
2392
|
+
}
|
|
2393
|
+
}, data.traceCount) : undefined;
|
|
2394
|
+
return /* @__PURE__ */ React12.createElement(TreeNode, {
|
|
2395
|
+
...props,
|
|
2396
|
+
theme,
|
|
2397
|
+
nameColor,
|
|
2398
|
+
leftIcon: icon,
|
|
2399
|
+
rightContent,
|
|
2400
|
+
horizontalNodePadding: nodeHorizontalPadding,
|
|
2401
|
+
verticalNodePadding
|
|
2402
|
+
});
|
|
2403
|
+
};
|
|
2404
|
+
const handleSelect = (selectedNodes) => {
|
|
2405
|
+
if (selectedNodes.length === 0)
|
|
2406
|
+
return;
|
|
2407
|
+
const node = selectedNodes[0];
|
|
2408
|
+
const nodeData = node.data;
|
|
2409
|
+
if (nodeData.type === "workflow" || nodeData.type === "scenario") {
|
|
2410
|
+
onClick(nodeData);
|
|
2411
|
+
}
|
|
2412
|
+
};
|
|
2413
|
+
const initialHeight = 600;
|
|
2414
|
+
const [containerRef, containerHeight] = useContainerHeight(initialHeight);
|
|
2415
|
+
return /* @__PURE__ */ React12.createElement("div", {
|
|
2416
|
+
ref: containerRef,
|
|
2417
|
+
style: {
|
|
2418
|
+
backgroundColor: theme.colors.background,
|
|
2419
|
+
color: theme.colors.text,
|
|
2420
|
+
fontFamily: theme.fonts.body,
|
|
2421
|
+
height: "100%",
|
|
2422
|
+
...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
|
|
2423
|
+
}
|
|
2424
|
+
}, /* @__PURE__ */ React12.createElement(Tree4, {
|
|
2425
|
+
data: treeData,
|
|
2426
|
+
onSelect: handleSelect,
|
|
2427
|
+
openByDefault: defaultOpen,
|
|
2428
|
+
...initialOpenState !== undefined && { initialOpenState },
|
|
2429
|
+
...selectedNodeId !== undefined && { selection: selectedNodeId },
|
|
2430
|
+
width: "100%",
|
|
2431
|
+
height: containerHeight,
|
|
2432
|
+
rowHeight
|
|
2433
|
+
}, NodeRenderer));
|
|
2434
|
+
};
|
|
2435
|
+
// src/components/CanvasListTree/CanvasListTreeCore.tsx
|
|
2436
|
+
import { Package as Package3, Folder, LayoutDashboard as LayoutDashboard2, FileText } from "lucide-react";
|
|
2437
|
+
import React13, { useMemo as useMemo11, useRef as useRef6 } from "react";
|
|
2438
|
+
import { Tree as Tree5 } from "react-arborist";
|
|
2439
|
+
var buildTreeData = (canvases) => {
|
|
2089
2440
|
const packagesMap = new Map;
|
|
2090
2441
|
const rootCanvases = [];
|
|
2091
2442
|
for (const canvas of canvases) {
|
|
@@ -2177,28 +2528,28 @@ var CanvasListTreeCore = ({
|
|
|
2177
2528
|
enableDragAndDrop = false
|
|
2178
2529
|
}) => {
|
|
2179
2530
|
const dndProps = getDndProps(enableDragAndDrop);
|
|
2180
|
-
const rowHeight =
|
|
2531
|
+
const rowHeight = useMemo11(() => {
|
|
2181
2532
|
const paddingValue = parseFloat(verticalNodePadding);
|
|
2182
2533
|
const contentLineHeight = 20;
|
|
2183
2534
|
const borderHeight = 2;
|
|
2184
2535
|
return contentLineHeight + paddingValue * 2 + borderHeight;
|
|
2185
2536
|
}, [verticalNodePadding]);
|
|
2186
|
-
const treeData =
|
|
2537
|
+
const treeData = useMemo11(() => buildTreeData(canvases), [canvases]);
|
|
2187
2538
|
const NodeRenderer = (props) => {
|
|
2188
2539
|
const { node } = props;
|
|
2189
2540
|
const data = node.data;
|
|
2190
|
-
const icon = data.type === "package" ? /* @__PURE__ */
|
|
2541
|
+
const icon = data.type === "package" ? /* @__PURE__ */ React13.createElement(Package3, {
|
|
2191
2542
|
size: 16
|
|
2192
|
-
}) : data.type === "canvas-folder" ? /* @__PURE__ */
|
|
2543
|
+
}) : data.type === "canvas-folder" ? /* @__PURE__ */ React13.createElement(Folder, {
|
|
2193
2544
|
size: 16
|
|
2194
|
-
}) : data.type === "overview" ? /* @__PURE__ */
|
|
2545
|
+
}) : data.type === "overview" ? /* @__PURE__ */ React13.createElement(FileText, {
|
|
2195
2546
|
size: 16
|
|
2196
|
-
}) : /* @__PURE__ */
|
|
2547
|
+
}) : /* @__PURE__ */ React13.createElement(LayoutDashboard2, {
|
|
2197
2548
|
size: 16
|
|
2198
2549
|
});
|
|
2199
2550
|
const nameColor = data.type === "package" ? theme.colors.primary : data.type === "canvas-folder" ? theme.colors.textSecondary : data.type === "overview" ? theme.colors.info || "#3b82f6" : theme.colors.warning || "#f59e0b";
|
|
2200
2551
|
const nodeHorizontalPadding = data.type === "overview" || data.type === "canvas" ? `calc(${horizontalNodePadding} + 12px)` : horizontalNodePadding;
|
|
2201
|
-
return /* @__PURE__ */
|
|
2552
|
+
return /* @__PURE__ */ React13.createElement(TreeNode, {
|
|
2202
2553
|
...props,
|
|
2203
2554
|
theme,
|
|
2204
2555
|
nameColor,
|
|
@@ -2225,7 +2576,7 @@ var CanvasListTreeCore = ({
|
|
|
2225
2576
|
};
|
|
2226
2577
|
const initialHeight = 600;
|
|
2227
2578
|
const [containerRef, containerHeight] = useContainerHeight(initialHeight);
|
|
2228
|
-
return /* @__PURE__ */
|
|
2579
|
+
return /* @__PURE__ */ React13.createElement("div", {
|
|
2229
2580
|
ref: containerRef,
|
|
2230
2581
|
style: {
|
|
2231
2582
|
backgroundColor: theme.colors.background,
|
|
@@ -2234,7 +2585,7 @@ var CanvasListTreeCore = ({
|
|
|
2234
2585
|
height: "100%",
|
|
2235
2586
|
...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
|
|
2236
2587
|
}
|
|
2237
|
-
}, /* @__PURE__ */
|
|
2588
|
+
}, /* @__PURE__ */ React13.createElement(Tree5, {
|
|
2238
2589
|
initialData: treeData,
|
|
2239
2590
|
onSelect: handleSelect,
|
|
2240
2591
|
openByDefault: defaultOpen,
|
|
@@ -2249,13 +2600,13 @@ var CanvasListTreeCore = ({
|
|
|
2249
2600
|
// src/components/TelemetryCoverageFileTree.tsx
|
|
2250
2601
|
import {
|
|
2251
2602
|
Activity,
|
|
2252
|
-
CircleDot,
|
|
2253
|
-
Circle,
|
|
2603
|
+
CircleDot as CircleDot2,
|
|
2604
|
+
Circle as Circle2,
|
|
2254
2605
|
TestTube
|
|
2255
2606
|
} from "lucide-react";
|
|
2256
|
-
import
|
|
2257
|
-
import { Tree as
|
|
2258
|
-
var TelemetryCoverageContext =
|
|
2607
|
+
import React14, { useMemo as useMemo12, useRef as useRef7 } from "react";
|
|
2608
|
+
import { Tree as Tree6 } from "react-arborist";
|
|
2609
|
+
var TelemetryCoverageContext = React14.createContext(null);
|
|
2259
2610
|
var DEFAULT_TEST_PATTERNS = [
|
|
2260
2611
|
/\.test\.[jt]sx?$/,
|
|
2261
2612
|
/\.spec\.[jt]sx?$/,
|
|
@@ -2272,7 +2623,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
|
|
|
2272
2623
|
switch (status) {
|
|
2273
2624
|
case "covered":
|
|
2274
2625
|
return {
|
|
2275
|
-
icon: /* @__PURE__ */
|
|
2626
|
+
icon: /* @__PURE__ */ React14.createElement(Activity, {
|
|
2276
2627
|
size: 14
|
|
2277
2628
|
}),
|
|
2278
2629
|
color: "#22c55e",
|
|
@@ -2281,7 +2632,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
|
|
|
2281
2632
|
};
|
|
2282
2633
|
case "partial":
|
|
2283
2634
|
return {
|
|
2284
|
-
icon: /* @__PURE__ */
|
|
2635
|
+
icon: /* @__PURE__ */ React14.createElement(CircleDot2, {
|
|
2285
2636
|
size: 14
|
|
2286
2637
|
}),
|
|
2287
2638
|
color: "#eab308",
|
|
@@ -2290,7 +2641,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
|
|
|
2290
2641
|
};
|
|
2291
2642
|
case "none":
|
|
2292
2643
|
return {
|
|
2293
|
-
icon: /* @__PURE__ */
|
|
2644
|
+
icon: /* @__PURE__ */ React14.createElement(Circle2, {
|
|
2294
2645
|
size: 14
|
|
2295
2646
|
}),
|
|
2296
2647
|
color: "#6b7280",
|
|
@@ -2392,7 +2743,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2392
2743
|
enableDragAndDrop = false
|
|
2393
2744
|
}) => {
|
|
2394
2745
|
const dndProps = getDndProps(enableDragAndDrop);
|
|
2395
|
-
const coverageMap =
|
|
2746
|
+
const coverageMap = useMemo12(() => {
|
|
2396
2747
|
const map = new Map;
|
|
2397
2748
|
coverageData.forEach((item) => {
|
|
2398
2749
|
map.set(item.filePath, item);
|
|
@@ -2401,7 +2752,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2401
2752
|
}, [coverageData]);
|
|
2402
2753
|
const NodeRenderer = (props) => {
|
|
2403
2754
|
const { node } = props;
|
|
2404
|
-
const ctx =
|
|
2755
|
+
const ctx = React14.useContext(TelemetryCoverageContext);
|
|
2405
2756
|
const coverage = ctx?.coverageMap.get(node.data.id);
|
|
2406
2757
|
const hasTracedChildren = ctx?.hasTracedChildrenMap.get(node.data.id);
|
|
2407
2758
|
const coverageDisplay = coverage ? getCoverageStatusDisplay(coverage, theme) : null;
|
|
@@ -2413,11 +2764,11 @@ var TelemetryCoverageFileTree = ({
|
|
|
2413
2764
|
} else if (node.data.isTestFile) {
|
|
2414
2765
|
nameColor = "#6b728080";
|
|
2415
2766
|
}
|
|
2416
|
-
const leftIcon = node.data.isTestFile && !coverage ? /* @__PURE__ */
|
|
2767
|
+
const leftIcon = node.data.isTestFile && !coverage ? /* @__PURE__ */ React14.createElement(TestTube, {
|
|
2417
2768
|
size: 14,
|
|
2418
2769
|
style: { marginRight: 4, color: "#6b7280" }
|
|
2419
2770
|
}) : null;
|
|
2420
|
-
const rightContent = coverageDisplay ? /* @__PURE__ */
|
|
2771
|
+
const rightContent = coverageDisplay ? /* @__PURE__ */ React14.createElement("div", {
|
|
2421
2772
|
style: {
|
|
2422
2773
|
display: "flex",
|
|
2423
2774
|
alignItems: "center",
|
|
@@ -2425,14 +2776,14 @@ var TelemetryCoverageFileTree = ({
|
|
|
2425
2776
|
marginRight: "8px"
|
|
2426
2777
|
},
|
|
2427
2778
|
title: coverageDisplay.label
|
|
2428
|
-
}, coverageDisplay.icon, /* @__PURE__ */
|
|
2779
|
+
}, coverageDisplay.icon, /* @__PURE__ */ React14.createElement("span", {
|
|
2429
2780
|
style: {
|
|
2430
2781
|
marginLeft: "4px",
|
|
2431
2782
|
fontSize: theme.fontSizes[0],
|
|
2432
2783
|
fontWeight: "bold",
|
|
2433
2784
|
fontFamily: "monospace"
|
|
2434
2785
|
}
|
|
2435
|
-
}, coverageDisplay.badge)) : node.data.isTestFile ? /* @__PURE__ */
|
|
2786
|
+
}, coverageDisplay.badge)) : node.data.isTestFile ? /* @__PURE__ */ React14.createElement("div", {
|
|
2436
2787
|
style: {
|
|
2437
2788
|
display: "flex",
|
|
2438
2789
|
alignItems: "center",
|
|
@@ -2441,10 +2792,10 @@ var TelemetryCoverageFileTree = ({
|
|
|
2441
2792
|
opacity: 0.5
|
|
2442
2793
|
},
|
|
2443
2794
|
title: "No telemetry instrumentation"
|
|
2444
|
-
}, /* @__PURE__ */
|
|
2795
|
+
}, /* @__PURE__ */ React14.createElement(Circle2, {
|
|
2445
2796
|
size: 14
|
|
2446
2797
|
})) : null;
|
|
2447
|
-
return /* @__PURE__ */
|
|
2798
|
+
return /* @__PURE__ */ React14.createElement(TreeNode, {
|
|
2448
2799
|
...props,
|
|
2449
2800
|
theme,
|
|
2450
2801
|
rightContent,
|
|
@@ -2459,16 +2810,16 @@ var TelemetryCoverageFileTree = ({
|
|
|
2459
2810
|
}
|
|
2460
2811
|
});
|
|
2461
2812
|
};
|
|
2462
|
-
const treeStructure =
|
|
2813
|
+
const treeStructure = useMemo12(() => {
|
|
2463
2814
|
return transformTreeStructure2(fileTree, showOnlyTestFiles, testFilePatterns);
|
|
2464
2815
|
}, [fileTree, showOnlyTestFiles, testFilePatterns]);
|
|
2465
|
-
const treeData =
|
|
2816
|
+
const treeData = useMemo12(() => {
|
|
2466
2817
|
if (showUncoveredFiles) {
|
|
2467
2818
|
return treeStructure;
|
|
2468
2819
|
}
|
|
2469
2820
|
return filterCoveredNodes(treeStructure, coverageMap);
|
|
2470
2821
|
}, [treeStructure, showUncoveredFiles, coverageMap]);
|
|
2471
|
-
const hasTracedChildrenMap =
|
|
2822
|
+
const hasTracedChildrenMap = useMemo12(() => {
|
|
2472
2823
|
const map = new Map;
|
|
2473
2824
|
const markTracedParents = (nodes) => {
|
|
2474
2825
|
let hasTraced = false;
|
|
@@ -2509,7 +2860,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2509
2860
|
onDirectorySelect(selectedDirs);
|
|
2510
2861
|
}
|
|
2511
2862
|
};
|
|
2512
|
-
const calculatedHeight =
|
|
2863
|
+
const calculatedHeight = useMemo12(() => {
|
|
2513
2864
|
if (autoHeight) {
|
|
2514
2865
|
const visibleNodeCount = countVisibleNodes3(treeData, openByDefault);
|
|
2515
2866
|
return visibleNodeCount * 28;
|
|
@@ -2517,7 +2868,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2517
2868
|
return initialHeight;
|
|
2518
2869
|
}, [autoHeight, treeData, openByDefault, initialHeight]);
|
|
2519
2870
|
const [containerRef, containerHeight] = useContainerHeight(calculatedHeight);
|
|
2520
|
-
return /* @__PURE__ */
|
|
2871
|
+
return /* @__PURE__ */ React14.createElement("div", {
|
|
2521
2872
|
ref: containerRef,
|
|
2522
2873
|
style: {
|
|
2523
2874
|
backgroundColor: transparentBackground ? "transparent" : theme.colors.background,
|
|
@@ -2526,9 +2877,9 @@ var TelemetryCoverageFileTree = ({
|
|
|
2526
2877
|
...autoHeight ? {} : { height: "100%" },
|
|
2527
2878
|
...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
|
|
2528
2879
|
}
|
|
2529
|
-
}, /* @__PURE__ */
|
|
2880
|
+
}, /* @__PURE__ */ React14.createElement(TelemetryCoverageContext.Provider, {
|
|
2530
2881
|
value: { coverageMap, hasTracedChildrenMap }
|
|
2531
|
-
}, /* @__PURE__ */
|
|
2882
|
+
}, /* @__PURE__ */ React14.createElement(Tree6, {
|
|
2532
2883
|
data: treeData,
|
|
2533
2884
|
onSelect: handleSelect,
|
|
2534
2885
|
...selectedFile !== undefined && { selection: selectedFile },
|
|
@@ -2557,7 +2908,7 @@ var calculateTelemetryCoverageStats = (coverageData) => {
|
|
|
2557
2908
|
};
|
|
2558
2909
|
// src/components/TelemetryCoverageFileTreeContainer.tsx
|
|
2559
2910
|
import { RefreshCw as RefreshCw2, Eye as Eye2, EyeOff as EyeOff2, AlertCircle as AlertCircle4, Activity as Activity2 } from "lucide-react";
|
|
2560
|
-
import
|
|
2911
|
+
import React15, { useState as useState7, useMemo as useMemo13 } from "react";
|
|
2561
2912
|
var TelemetryCoverageFileTreeContainer = ({
|
|
2562
2913
|
fileTree,
|
|
2563
2914
|
theme,
|
|
@@ -2579,10 +2930,10 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2579
2930
|
}) => {
|
|
2580
2931
|
const [filters, setFilters] = useState7([]);
|
|
2581
2932
|
const [showUncoveredFiles, setShowUncoveredFiles] = useState7(true);
|
|
2582
|
-
const selectedDirectories =
|
|
2933
|
+
const selectedDirectories = useMemo13(() => {
|
|
2583
2934
|
return filters.filter((f) => f.mode === "include").map((f) => f.path);
|
|
2584
2935
|
}, [filters]);
|
|
2585
|
-
const stats =
|
|
2936
|
+
const stats = useMemo13(() => calculateTelemetryCoverageStats(coverageData), [coverageData]);
|
|
2586
2937
|
const handleRefresh = () => {
|
|
2587
2938
|
onRefresh?.();
|
|
2588
2939
|
};
|
|
@@ -2590,34 +2941,34 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2590
2941
|
setShowUncoveredFiles(!showUncoveredFiles);
|
|
2591
2942
|
};
|
|
2592
2943
|
const percentageColor = stats.percentage >= 80 ? "#22c55e" : stats.percentage >= 50 ? "#eab308" : stats.percentage > 0 ? "#f97316" : "#6b7280";
|
|
2593
|
-
return /* @__PURE__ */
|
|
2944
|
+
return /* @__PURE__ */ React15.createElement("div", {
|
|
2594
2945
|
style: { display: "flex", flexDirection: "column", height: "100%" }
|
|
2595
|
-
}, showControls && /* @__PURE__ */
|
|
2946
|
+
}, showControls && /* @__PURE__ */ React15.createElement("div", {
|
|
2596
2947
|
style: {
|
|
2597
2948
|
padding: "12px",
|
|
2598
2949
|
borderBottom: `1px solid ${theme.colors.border || "#e0e0e0"}`,
|
|
2599
2950
|
backgroundColor: theme.colors.backgroundSecondary || theme.colors.background
|
|
2600
2951
|
}
|
|
2601
|
-
}, /* @__PURE__ */
|
|
2952
|
+
}, /* @__PURE__ */ React15.createElement("div", {
|
|
2602
2953
|
style: {
|
|
2603
2954
|
display: "flex",
|
|
2604
2955
|
alignItems: "center",
|
|
2605
2956
|
justifyContent: "space-between",
|
|
2606
2957
|
marginBottom: "8px"
|
|
2607
2958
|
}
|
|
2608
|
-
}, /* @__PURE__ */
|
|
2959
|
+
}, /* @__PURE__ */ React15.createElement("div", {
|
|
2609
2960
|
style: { display: "flex", alignItems: "center", gap: "8px" }
|
|
2610
|
-
}, /* @__PURE__ */
|
|
2961
|
+
}, /* @__PURE__ */ React15.createElement(Activity2, {
|
|
2611
2962
|
size: 16,
|
|
2612
2963
|
color: theme.colors.primary
|
|
2613
|
-
}), /* @__PURE__ */
|
|
2964
|
+
}), /* @__PURE__ */ React15.createElement("h3", {
|
|
2614
2965
|
style: {
|
|
2615
2966
|
margin: 0,
|
|
2616
2967
|
fontSize: theme.fontSizes[1],
|
|
2617
2968
|
fontWeight: "bold",
|
|
2618
2969
|
color: theme.colors.text
|
|
2619
2970
|
}
|
|
2620
|
-
}, title), stats.testFiles > 0 && /* @__PURE__ */
|
|
2971
|
+
}, title), stats.testFiles > 0 && /* @__PURE__ */ React15.createElement("span", {
|
|
2621
2972
|
style: {
|
|
2622
2973
|
backgroundColor: percentageColor,
|
|
2623
2974
|
color: "#ffffff",
|
|
@@ -2627,14 +2978,14 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2627
2978
|
fontWeight: "bold",
|
|
2628
2979
|
fontFamily: "monospace"
|
|
2629
2980
|
}
|
|
2630
|
-
}, stats.percentage, "%"), isLoading && /* @__PURE__ */
|
|
2981
|
+
}, stats.percentage, "%"), isLoading && /* @__PURE__ */ React15.createElement(RefreshCw2, {
|
|
2631
2982
|
size: 16,
|
|
2632
2983
|
color: theme.colors.text,
|
|
2633
2984
|
className: "telemetry-coverage-spinner",
|
|
2634
2985
|
style: { animation: "spin 1s linear infinite" }
|
|
2635
|
-
})), /* @__PURE__ */
|
|
2986
|
+
})), /* @__PURE__ */ React15.createElement("div", {
|
|
2636
2987
|
style: { display: "flex", gap: "8px" }
|
|
2637
|
-
}, /* @__PURE__ */
|
|
2988
|
+
}, /* @__PURE__ */ React15.createElement("button", {
|
|
2638
2989
|
onClick: toggleShowUncoveredFiles,
|
|
2639
2990
|
style: {
|
|
2640
2991
|
background: "none",
|
|
@@ -2649,11 +3000,11 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2649
3000
|
color: theme.colors.text
|
|
2650
3001
|
},
|
|
2651
3002
|
title: showUncoveredFiles ? "Show only covered files" : "Show all test files"
|
|
2652
|
-
}, showUncoveredFiles ? /* @__PURE__ */
|
|
3003
|
+
}, showUncoveredFiles ? /* @__PURE__ */ React15.createElement(EyeOff2, {
|
|
2653
3004
|
size: 14
|
|
2654
|
-
}) : /* @__PURE__ */
|
|
3005
|
+
}) : /* @__PURE__ */ React15.createElement(Eye2, {
|
|
2655
3006
|
size: 14
|
|
2656
|
-
}), showUncoveredFiles ? "Hide uncovered" : "Show all"), onRefresh && /* @__PURE__ */
|
|
3007
|
+
}), showUncoveredFiles ? "Hide uncovered" : "Show all"), onRefresh && /* @__PURE__ */ React15.createElement("button", {
|
|
2657
3008
|
onClick: handleRefresh,
|
|
2658
3009
|
disabled: isLoading,
|
|
2659
3010
|
style: {
|
|
@@ -2670,9 +3021,9 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2670
3021
|
opacity: isLoading ? 0.6 : 1
|
|
2671
3022
|
},
|
|
2672
3023
|
title: "Refresh coverage data"
|
|
2673
|
-
}, /* @__PURE__ */
|
|
3024
|
+
}, /* @__PURE__ */ React15.createElement(RefreshCw2, {
|
|
2674
3025
|
size: 14
|
|
2675
|
-
}), "Refresh"))), error && /* @__PURE__ */
|
|
3026
|
+
}), "Refresh"))), error && /* @__PURE__ */ React15.createElement("div", {
|
|
2676
3027
|
style: {
|
|
2677
3028
|
display: "flex",
|
|
2678
3029
|
alignItems: "center",
|
|
@@ -2685,36 +3036,36 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2685
3036
|
color: "#856404",
|
|
2686
3037
|
marginBottom: "8px"
|
|
2687
3038
|
}
|
|
2688
|
-
}, /* @__PURE__ */
|
|
3039
|
+
}, /* @__PURE__ */ React15.createElement(AlertCircle4, {
|
|
2689
3040
|
size: 14
|
|
2690
|
-
}), error), !error && stats.testFiles > 0 && /* @__PURE__ */
|
|
3041
|
+
}), error), !error && stats.testFiles > 0 && /* @__PURE__ */ React15.createElement("div", {
|
|
2691
3042
|
style: {
|
|
2692
3043
|
display: "flex",
|
|
2693
3044
|
gap: "16px",
|
|
2694
3045
|
fontSize: theme.fontSizes[0],
|
|
2695
3046
|
color: theme.colors.textSecondary || "#666"
|
|
2696
3047
|
}
|
|
2697
|
-
}, /* @__PURE__ */
|
|
3048
|
+
}, /* @__PURE__ */ React15.createElement("span", null, /* @__PURE__ */ React15.createElement("strong", {
|
|
2698
3049
|
style: { color: "#22c55e" }
|
|
2699
|
-
}, stats.coveredFiles), " covered"), stats.partialFiles > 0 && /* @__PURE__ */
|
|
3050
|
+
}, stats.coveredFiles), " covered"), stats.partialFiles > 0 && /* @__PURE__ */ React15.createElement("span", null, /* @__PURE__ */ React15.createElement("strong", {
|
|
2700
3051
|
style: { color: "#eab308" }
|
|
2701
|
-
}, stats.partialFiles), " partial"), /* @__PURE__ */
|
|
3052
|
+
}, stats.partialFiles), " partial"), /* @__PURE__ */ React15.createElement("span", null, /* @__PURE__ */ React15.createElement("strong", {
|
|
2702
3053
|
style: { color: "#6b7280" }
|
|
2703
|
-
}, stats.uncoveredFiles), " uncovered"), /* @__PURE__ */
|
|
3054
|
+
}, stats.uncoveredFiles), " uncovered"), /* @__PURE__ */ React15.createElement("span", {
|
|
2704
3055
|
style: { marginLeft: "auto" }
|
|
2705
|
-
}, stats.totalTraced, "/", stats.totalTests, " tests traced")), !error && stats.testFiles === 0 && /* @__PURE__ */
|
|
3056
|
+
}, stats.totalTraced, "/", stats.totalTests, " tests traced")), !error && stats.testFiles === 0 && /* @__PURE__ */ React15.createElement("div", {
|
|
2706
3057
|
style: {
|
|
2707
3058
|
fontSize: theme.fontSizes[0],
|
|
2708
3059
|
color: theme.colors.textSecondary || "#666"
|
|
2709
3060
|
}
|
|
2710
|
-
}, "No test files with coverage data found")), /* @__PURE__ */
|
|
3061
|
+
}, "No test files with coverage data found")), /* @__PURE__ */ React15.createElement(DirectoryFilterInput, {
|
|
2711
3062
|
fileTree,
|
|
2712
3063
|
theme,
|
|
2713
3064
|
filters,
|
|
2714
3065
|
onFiltersChange: setFilters
|
|
2715
|
-
}), /* @__PURE__ */
|
|
3066
|
+
}), /* @__PURE__ */ React15.createElement("div", {
|
|
2716
3067
|
style: { flex: 1, marginTop: "1rem", overflow: "hidden" }
|
|
2717
|
-
}, /* @__PURE__ */
|
|
3068
|
+
}, /* @__PURE__ */ React15.createElement(TelemetryCoverageFileTree, {
|
|
2718
3069
|
fileTree,
|
|
2719
3070
|
theme,
|
|
2720
3071
|
coverageData,
|
|
@@ -2740,6 +3091,7 @@ export {
|
|
|
2740
3091
|
extractNameFromPath,
|
|
2741
3092
|
combineRepositoryTrees,
|
|
2742
3093
|
calculateTelemetryCoverageStats,
|
|
3094
|
+
WorkflowScenarioTreeCore,
|
|
2743
3095
|
TreeNode,
|
|
2744
3096
|
TelemetryCoverageFileTreeContainer,
|
|
2745
3097
|
TelemetryCoverageFileTree,
|
|
@@ -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
|
package/dist/src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTree.stories.d.ts.map
CHANGED
|
@@ -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,
|
|
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;AA2QjB,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAiN9E,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;
|
|
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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { WorkflowScenarioTreeCore } from './WorkflowScenarioTreeCore';
|
|
3
|
+
declare const meta: Meta<typeof WorkflowScenarioTreeCore>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof WorkflowScenarioTreeCore>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithFilterMode: Story;
|
|
8
|
+
export declare const WithVersions: Story;
|
|
9
|
+
//# sourceMappingURL=WorkflowScenarioTree.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowScenarioTree.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowScenarioTree/WorkflowScenarioTree.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AA8MtE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,wBAAwB,CAI/C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEvD,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAuG5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAwC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowScenarioTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowScenarioTree/WorkflowScenarioTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAEV,yBAAyB,EAI1B,MAAM,SAAS,CAAC;AAwMjB,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAgKxE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowScenarioTree/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Theme } from '@principal-ade/industry-theme';
|
|
2
|
+
import type { DiscoveredStoryboard, DiscoveredWorkflow, WorkflowScenario, VersionSnapshot } from '@principal-ai/principal-view-core';
|
|
3
|
+
import type { TreeNodeData } from '../TreeNode';
|
|
4
|
+
export type { DiscoveredStoryboard, DiscoveredWorkflow, WorkflowScenario, VersionSnapshot };
|
|
5
|
+
/**
|
|
6
|
+
* Workflow filter mode
|
|
7
|
+
* - 'all': Show all workflows
|
|
8
|
+
* - 'with-traces': Show only workflows that have traces
|
|
9
|
+
* - 'without-traces': Show only workflows that don't have traces
|
|
10
|
+
* - 'minimum-traces': Show workflows with at least N traces (use minTraceCount)
|
|
11
|
+
*/
|
|
12
|
+
export type WorkflowFilterMode = 'all' | 'with-traces' | 'without-traces' | 'minimum-traces';
|
|
13
|
+
/**
|
|
14
|
+
* Node types in the workflow-scenario tree
|
|
15
|
+
*/
|
|
16
|
+
export type WorkflowScenarioNodeType = 'version' | 'package' | 'workflow' | 'scenario';
|
|
17
|
+
/**
|
|
18
|
+
* Extended workflow with scenarios and parent storyboard info
|
|
19
|
+
*/
|
|
20
|
+
export interface WorkflowWithScenarios extends DiscoveredWorkflow {
|
|
21
|
+
/** Parent storyboard for context */
|
|
22
|
+
storyboard: DiscoveredStoryboard;
|
|
23
|
+
/** Workflow scenarios (from WorkflowTemplate.scenarios) */
|
|
24
|
+
scenarios: WorkflowScenario[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Node data for workflow-scenario tree
|
|
28
|
+
*/
|
|
29
|
+
export interface WorkflowScenarioNodeData extends TreeNodeData {
|
|
30
|
+
type: WorkflowScenarioNodeType;
|
|
31
|
+
children?: WorkflowScenarioNodeData[];
|
|
32
|
+
versionSnapshot?: VersionSnapshot;
|
|
33
|
+
repositoryUrl?: string;
|
|
34
|
+
commitSha?: string;
|
|
35
|
+
packageName?: string;
|
|
36
|
+
scope?: 'package' | 'root';
|
|
37
|
+
workflow?: WorkflowWithScenarios;
|
|
38
|
+
scenario?: WorkflowScenario;
|
|
39
|
+
storyboard?: DiscoveredStoryboard;
|
|
40
|
+
traceCount?: number;
|
|
41
|
+
hasTraces?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Props for WorkflowScenarioTree component
|
|
45
|
+
*/
|
|
46
|
+
export interface WorkflowScenarioTreeProps {
|
|
47
|
+
/** Workflows with scenarios and storyboard context */
|
|
48
|
+
workflows: WorkflowWithScenarios[];
|
|
49
|
+
/** Theme for styling */
|
|
50
|
+
theme: Theme;
|
|
51
|
+
/** Click handler */
|
|
52
|
+
onClick: (node: WorkflowScenarioNodeData) => void;
|
|
53
|
+
/** Selected node ID */
|
|
54
|
+
selectedNodeId?: string;
|
|
55
|
+
/** Default open state */
|
|
56
|
+
defaultOpen?: boolean;
|
|
57
|
+
/** Initial open state for specific nodes */
|
|
58
|
+
initialOpenState?: Record<string, boolean>;
|
|
59
|
+
/** Horizontal padding for nodes */
|
|
60
|
+
horizontalNodePadding?: string;
|
|
61
|
+
/** Vertical padding for nodes */
|
|
62
|
+
verticalNodePadding?: string;
|
|
63
|
+
/** Vertical padding for container */
|
|
64
|
+
verticalPadding?: string;
|
|
65
|
+
/** Optional version snapshots for grouping workflows by version */
|
|
66
|
+
versionSnapshots?: VersionSnapshot[];
|
|
67
|
+
/** Map of workflow ID to trace count */
|
|
68
|
+
workflowTraceCounts?: Record<string, number>;
|
|
69
|
+
/** Map of scenario ID to trace count (format: "workflowId/scenarioId") */
|
|
70
|
+
scenarioTraceCounts?: Record<string, number>;
|
|
71
|
+
/** Filter mode for workflows/scenarios */
|
|
72
|
+
workflowFilterMode?: WorkflowFilterMode;
|
|
73
|
+
/** Minimum trace count (when workflowFilterMode is 'minimum-traces') */
|
|
74
|
+
minTraceCount?: number;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/WorkflowScenarioTree/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAErI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;AAE5F;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE7F;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,oCAAoC;IACpC,UAAU,EAAE,oBAAoB,CAAC;IACjC,2DAA2D;IAC3D,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,IAAI,EAAE,wBAAwB,CAAC;IAC/B,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAGtC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAGlC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,wBAAwB;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,oBAAoB;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAClD,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,mCAAmC;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iCAAiC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IAGrC,wCAAwC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG7C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@principal-ade/dynamic-file-tree",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.60",
|
|
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.
|
|
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.
|
|
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",
|