@principal-ade/dynamic-file-tree 0.1.57 → 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.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +364 -101
- package/dist/src/components/CanvasListTree/CanvasListTree.stories.d.ts +12 -0
- package/dist/src/components/CanvasListTree/CanvasListTree.stories.d.ts.map +1 -0
- package/dist/src/components/CanvasListTree/CanvasListTreeCore.d.ts +4 -0
- package/dist/src/components/CanvasListTree/CanvasListTreeCore.d.ts.map +1 -0
- package/dist/src/components/CanvasListTree/types.d.ts +26 -0
- package/dist/src/components/CanvasListTree/types.d.ts.map +1 -0
- 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/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 { CanvasListTreeCore } from './src/components/CanvasListTree/CanvasListTreeCore';
|
|
24
|
+
export type { CanvasListTreeProps, CanvasListNodeData, CanvasListNodeType, DiscoveredCanvas, } from './src/components/CanvasListTree/types';
|
|
23
25
|
export { TelemetryCoverageFileTree, calculateTelemetryCoverageStats, } from './src/components/TelemetryCoverageFileTree';
|
|
24
26
|
export type { TelemetryCoverageFileTreeProps, FileTelemetryCoverage, TelemetryCoverageStatus, } from './src/components/TelemetryCoverageFileTree';
|
|
25
27
|
export { TelemetryCoverageFileTreeContainer } from './src/components/TelemetryCoverageFileTreeContainer';
|
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,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,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
|
+
}
|
|
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:
|
|
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,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(() =>
|
|
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 === "
|
|
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 =
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
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,6 +2167,171 @@ var StoryboardWorkflowsTreeCore = ({
|
|
|
2070
2167
|
...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
|
|
2071
2168
|
}
|
|
2072
2169
|
}, /* @__PURE__ */ React11.createElement(Tree3, {
|
|
2170
|
+
data: treeData,
|
|
2171
|
+
onSelect: handleSelect,
|
|
2172
|
+
openByDefault: defaultOpen,
|
|
2173
|
+
...initialOpenState !== undefined && { initialOpenState },
|
|
2174
|
+
...selectedNodeId !== undefined && { selection: selectedNodeId },
|
|
2175
|
+
width: "100%",
|
|
2176
|
+
height: containerHeight,
|
|
2177
|
+
rowHeight,
|
|
2178
|
+
...dndProps
|
|
2179
|
+
}, NodeRenderer));
|
|
2180
|
+
};
|
|
2181
|
+
// src/components/CanvasListTree/CanvasListTreeCore.tsx
|
|
2182
|
+
import { Package as Package2, Folder, LayoutDashboard as LayoutDashboard2, FileText } from "lucide-react";
|
|
2183
|
+
import React12, { useMemo as useMemo10, useRef as useRef6 } from "react";
|
|
2184
|
+
import { Tree as Tree4 } from "react-arborist";
|
|
2185
|
+
var buildTreeData = (canvases) => {
|
|
2186
|
+
const packagesMap = new Map;
|
|
2187
|
+
const rootCanvases = [];
|
|
2188
|
+
for (const canvas of canvases) {
|
|
2189
|
+
if (canvas.scope === "package" && canvas.packageName) {
|
|
2190
|
+
const existing = packagesMap.get(canvas.packageName) || [];
|
|
2191
|
+
existing.push(canvas);
|
|
2192
|
+
packagesMap.set(canvas.packageName, existing);
|
|
2193
|
+
} else {
|
|
2194
|
+
rootCanvases.push(canvas);
|
|
2195
|
+
}
|
|
2196
|
+
}
|
|
2197
|
+
const buildCanvasNode = (canvas) => {
|
|
2198
|
+
const children = [];
|
|
2199
|
+
children.push({
|
|
2200
|
+
id: `canvas:${canvas.id}`,
|
|
2201
|
+
name: "Canvas",
|
|
2202
|
+
type: "canvas",
|
|
2203
|
+
canvas
|
|
2204
|
+
});
|
|
2205
|
+
if (canvas.markdownPath) {
|
|
2206
|
+
children.push({
|
|
2207
|
+
id: `overview:${canvas.id}`,
|
|
2208
|
+
name: "Overview",
|
|
2209
|
+
type: "overview",
|
|
2210
|
+
canvas,
|
|
2211
|
+
markdownPath: canvas.markdownPath
|
|
2212
|
+
});
|
|
2213
|
+
}
|
|
2214
|
+
return {
|
|
2215
|
+
id: `canvas-folder:${canvas.id}`,
|
|
2216
|
+
name: canvas.name,
|
|
2217
|
+
type: "canvas-folder",
|
|
2218
|
+
canvas,
|
|
2219
|
+
children
|
|
2220
|
+
};
|
|
2221
|
+
};
|
|
2222
|
+
const hasMultiplePackages = packagesMap.size > 1;
|
|
2223
|
+
const hasRootAndPackages = packagesMap.size > 0 && rootCanvases.length > 0;
|
|
2224
|
+
const shouldShowPackageLevel = hasMultiplePackages || hasRootAndPackages;
|
|
2225
|
+
if (shouldShowPackageLevel) {
|
|
2226
|
+
const result = [];
|
|
2227
|
+
for (const [packageName, packageCanvases] of packagesMap) {
|
|
2228
|
+
const canvasNodes = packageCanvases.map(buildCanvasNode).sort((a, b) => a.name.localeCompare(b.name));
|
|
2229
|
+
result.push({
|
|
2230
|
+
id: `package:${packageName}`,
|
|
2231
|
+
name: packageName,
|
|
2232
|
+
type: "package",
|
|
2233
|
+
packageName,
|
|
2234
|
+
scope: "package",
|
|
2235
|
+
children: canvasNodes
|
|
2236
|
+
});
|
|
2237
|
+
}
|
|
2238
|
+
if (rootCanvases.length > 0) {
|
|
2239
|
+
const rootCanvasNodes = rootCanvases.map(buildCanvasNode).sort((a, b) => a.name.localeCompare(b.name));
|
|
2240
|
+
result.push({
|
|
2241
|
+
id: "package:root",
|
|
2242
|
+
name: "Root",
|
|
2243
|
+
type: "package",
|
|
2244
|
+
packageName: "root",
|
|
2245
|
+
scope: "root",
|
|
2246
|
+
children: rootCanvasNodes
|
|
2247
|
+
});
|
|
2248
|
+
}
|
|
2249
|
+
return result.sort((a, b) => {
|
|
2250
|
+
if (a.packageName === "root")
|
|
2251
|
+
return 1;
|
|
2252
|
+
if (b.packageName === "root")
|
|
2253
|
+
return -1;
|
|
2254
|
+
return a.name.localeCompare(b.name);
|
|
2255
|
+
});
|
|
2256
|
+
} else {
|
|
2257
|
+
const allCanvases = [...rootCanvases];
|
|
2258
|
+
for (const packageCanvases of packagesMap.values()) {
|
|
2259
|
+
allCanvases.push(...packageCanvases);
|
|
2260
|
+
}
|
|
2261
|
+
return allCanvases.map(buildCanvasNode).sort((a, b) => a.name.localeCompare(b.name));
|
|
2262
|
+
}
|
|
2263
|
+
};
|
|
2264
|
+
var CanvasListTreeCore = ({
|
|
2265
|
+
canvases,
|
|
2266
|
+
theme,
|
|
2267
|
+
onClick,
|
|
2268
|
+
selectedNodeId,
|
|
2269
|
+
defaultOpen = false,
|
|
2270
|
+
initialOpenState,
|
|
2271
|
+
horizontalNodePadding = "16px",
|
|
2272
|
+
verticalNodePadding = "6px",
|
|
2273
|
+
verticalPadding = "20px",
|
|
2274
|
+
enableDragAndDrop = false
|
|
2275
|
+
}) => {
|
|
2276
|
+
const dndProps = getDndProps(enableDragAndDrop);
|
|
2277
|
+
const rowHeight = useMemo10(() => {
|
|
2278
|
+
const paddingValue = parseFloat(verticalNodePadding);
|
|
2279
|
+
const contentLineHeight = 20;
|
|
2280
|
+
const borderHeight = 2;
|
|
2281
|
+
return contentLineHeight + paddingValue * 2 + borderHeight;
|
|
2282
|
+
}, [verticalNodePadding]);
|
|
2283
|
+
const treeData = useMemo10(() => buildTreeData(canvases), [canvases]);
|
|
2284
|
+
const NodeRenderer = (props) => {
|
|
2285
|
+
const { node } = props;
|
|
2286
|
+
const data = node.data;
|
|
2287
|
+
const icon = data.type === "package" ? /* @__PURE__ */ React12.createElement(Package2, {
|
|
2288
|
+
size: 16
|
|
2289
|
+
}) : data.type === "canvas-folder" ? /* @__PURE__ */ React12.createElement(Folder, {
|
|
2290
|
+
size: 16
|
|
2291
|
+
}) : data.type === "overview" ? /* @__PURE__ */ React12.createElement(FileText, {
|
|
2292
|
+
size: 16
|
|
2293
|
+
}) : /* @__PURE__ */ React12.createElement(LayoutDashboard2, {
|
|
2294
|
+
size: 16
|
|
2295
|
+
});
|
|
2296
|
+
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";
|
|
2297
|
+
const nodeHorizontalPadding = data.type === "overview" || data.type === "canvas" ? `calc(${horizontalNodePadding} + 12px)` : horizontalNodePadding;
|
|
2298
|
+
return /* @__PURE__ */ React12.createElement(TreeNode, {
|
|
2299
|
+
...props,
|
|
2300
|
+
theme,
|
|
2301
|
+
nameColor,
|
|
2302
|
+
leftIcon: icon,
|
|
2303
|
+
horizontalNodePadding: nodeHorizontalPadding,
|
|
2304
|
+
verticalNodePadding
|
|
2305
|
+
});
|
|
2306
|
+
};
|
|
2307
|
+
const lastSelectionRef = useRef6(null);
|
|
2308
|
+
const handleSelect = (selectedNodes) => {
|
|
2309
|
+
if (selectedNodes.length === 0)
|
|
2310
|
+
return;
|
|
2311
|
+
const node = selectedNodes[0];
|
|
2312
|
+
const nodeData = node.data;
|
|
2313
|
+
const now = Date.now();
|
|
2314
|
+
const lastSelection = lastSelectionRef.current;
|
|
2315
|
+
if (lastSelection && lastSelection.nodeId === nodeData.id && now - lastSelection.timestamp < 50) {
|
|
2316
|
+
return;
|
|
2317
|
+
}
|
|
2318
|
+
lastSelectionRef.current = { nodeId: nodeData.id, timestamp: now };
|
|
2319
|
+
if (nodeData.type === "overview" || nodeData.type === "canvas") {
|
|
2320
|
+
onClick(nodeData);
|
|
2321
|
+
}
|
|
2322
|
+
};
|
|
2323
|
+
const initialHeight = 600;
|
|
2324
|
+
const [containerRef, containerHeight] = useContainerHeight(initialHeight);
|
|
2325
|
+
return /* @__PURE__ */ React12.createElement("div", {
|
|
2326
|
+
ref: containerRef,
|
|
2327
|
+
style: {
|
|
2328
|
+
backgroundColor: theme.colors.background,
|
|
2329
|
+
color: theme.colors.text,
|
|
2330
|
+
fontFamily: theme.fonts.body,
|
|
2331
|
+
height: "100%",
|
|
2332
|
+
...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
|
|
2333
|
+
}
|
|
2334
|
+
}, /* @__PURE__ */ React12.createElement(Tree4, {
|
|
2073
2335
|
initialData: treeData,
|
|
2074
2336
|
onSelect: handleSelect,
|
|
2075
2337
|
openByDefault: defaultOpen,
|
|
@@ -2084,13 +2346,13 @@ var StoryboardWorkflowsTreeCore = ({
|
|
|
2084
2346
|
// src/components/TelemetryCoverageFileTree.tsx
|
|
2085
2347
|
import {
|
|
2086
2348
|
Activity,
|
|
2087
|
-
CircleDot,
|
|
2088
|
-
Circle,
|
|
2349
|
+
CircleDot as CircleDot2,
|
|
2350
|
+
Circle as Circle2,
|
|
2089
2351
|
TestTube
|
|
2090
2352
|
} from "lucide-react";
|
|
2091
|
-
import
|
|
2092
|
-
import { Tree as
|
|
2093
|
-
var TelemetryCoverageContext =
|
|
2353
|
+
import React13, { useMemo as useMemo11, useRef as useRef7 } from "react";
|
|
2354
|
+
import { Tree as Tree5 } from "react-arborist";
|
|
2355
|
+
var TelemetryCoverageContext = React13.createContext(null);
|
|
2094
2356
|
var DEFAULT_TEST_PATTERNS = [
|
|
2095
2357
|
/\.test\.[jt]sx?$/,
|
|
2096
2358
|
/\.spec\.[jt]sx?$/,
|
|
@@ -2107,7 +2369,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
|
|
|
2107
2369
|
switch (status) {
|
|
2108
2370
|
case "covered":
|
|
2109
2371
|
return {
|
|
2110
|
-
icon: /* @__PURE__ */
|
|
2372
|
+
icon: /* @__PURE__ */ React13.createElement(Activity, {
|
|
2111
2373
|
size: 14
|
|
2112
2374
|
}),
|
|
2113
2375
|
color: "#22c55e",
|
|
@@ -2116,7 +2378,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
|
|
|
2116
2378
|
};
|
|
2117
2379
|
case "partial":
|
|
2118
2380
|
return {
|
|
2119
|
-
icon: /* @__PURE__ */
|
|
2381
|
+
icon: /* @__PURE__ */ React13.createElement(CircleDot2, {
|
|
2120
2382
|
size: 14
|
|
2121
2383
|
}),
|
|
2122
2384
|
color: "#eab308",
|
|
@@ -2125,7 +2387,7 @@ var getCoverageStatusDisplay = (coverage, _theme) => {
|
|
|
2125
2387
|
};
|
|
2126
2388
|
case "none":
|
|
2127
2389
|
return {
|
|
2128
|
-
icon: /* @__PURE__ */
|
|
2390
|
+
icon: /* @__PURE__ */ React13.createElement(Circle2, {
|
|
2129
2391
|
size: 14
|
|
2130
2392
|
}),
|
|
2131
2393
|
color: "#6b7280",
|
|
@@ -2227,7 +2489,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2227
2489
|
enableDragAndDrop = false
|
|
2228
2490
|
}) => {
|
|
2229
2491
|
const dndProps = getDndProps(enableDragAndDrop);
|
|
2230
|
-
const coverageMap =
|
|
2492
|
+
const coverageMap = useMemo11(() => {
|
|
2231
2493
|
const map = new Map;
|
|
2232
2494
|
coverageData.forEach((item) => {
|
|
2233
2495
|
map.set(item.filePath, item);
|
|
@@ -2236,7 +2498,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2236
2498
|
}, [coverageData]);
|
|
2237
2499
|
const NodeRenderer = (props) => {
|
|
2238
2500
|
const { node } = props;
|
|
2239
|
-
const ctx =
|
|
2501
|
+
const ctx = React13.useContext(TelemetryCoverageContext);
|
|
2240
2502
|
const coverage = ctx?.coverageMap.get(node.data.id);
|
|
2241
2503
|
const hasTracedChildren = ctx?.hasTracedChildrenMap.get(node.data.id);
|
|
2242
2504
|
const coverageDisplay = coverage ? getCoverageStatusDisplay(coverage, theme) : null;
|
|
@@ -2248,11 +2510,11 @@ var TelemetryCoverageFileTree = ({
|
|
|
2248
2510
|
} else if (node.data.isTestFile) {
|
|
2249
2511
|
nameColor = "#6b728080";
|
|
2250
2512
|
}
|
|
2251
|
-
const leftIcon = node.data.isTestFile && !coverage ? /* @__PURE__ */
|
|
2513
|
+
const leftIcon = node.data.isTestFile && !coverage ? /* @__PURE__ */ React13.createElement(TestTube, {
|
|
2252
2514
|
size: 14,
|
|
2253
2515
|
style: { marginRight: 4, color: "#6b7280" }
|
|
2254
2516
|
}) : null;
|
|
2255
|
-
const rightContent = coverageDisplay ? /* @__PURE__ */
|
|
2517
|
+
const rightContent = coverageDisplay ? /* @__PURE__ */ React13.createElement("div", {
|
|
2256
2518
|
style: {
|
|
2257
2519
|
display: "flex",
|
|
2258
2520
|
alignItems: "center",
|
|
@@ -2260,14 +2522,14 @@ var TelemetryCoverageFileTree = ({
|
|
|
2260
2522
|
marginRight: "8px"
|
|
2261
2523
|
},
|
|
2262
2524
|
title: coverageDisplay.label
|
|
2263
|
-
}, coverageDisplay.icon, /* @__PURE__ */
|
|
2525
|
+
}, coverageDisplay.icon, /* @__PURE__ */ React13.createElement("span", {
|
|
2264
2526
|
style: {
|
|
2265
2527
|
marginLeft: "4px",
|
|
2266
2528
|
fontSize: theme.fontSizes[0],
|
|
2267
2529
|
fontWeight: "bold",
|
|
2268
2530
|
fontFamily: "monospace"
|
|
2269
2531
|
}
|
|
2270
|
-
}, coverageDisplay.badge)) : node.data.isTestFile ? /* @__PURE__ */
|
|
2532
|
+
}, coverageDisplay.badge)) : node.data.isTestFile ? /* @__PURE__ */ React13.createElement("div", {
|
|
2271
2533
|
style: {
|
|
2272
2534
|
display: "flex",
|
|
2273
2535
|
alignItems: "center",
|
|
@@ -2276,10 +2538,10 @@ var TelemetryCoverageFileTree = ({
|
|
|
2276
2538
|
opacity: 0.5
|
|
2277
2539
|
},
|
|
2278
2540
|
title: "No telemetry instrumentation"
|
|
2279
|
-
}, /* @__PURE__ */
|
|
2541
|
+
}, /* @__PURE__ */ React13.createElement(Circle2, {
|
|
2280
2542
|
size: 14
|
|
2281
2543
|
})) : null;
|
|
2282
|
-
return /* @__PURE__ */
|
|
2544
|
+
return /* @__PURE__ */ React13.createElement(TreeNode, {
|
|
2283
2545
|
...props,
|
|
2284
2546
|
theme,
|
|
2285
2547
|
rightContent,
|
|
@@ -2294,16 +2556,16 @@ var TelemetryCoverageFileTree = ({
|
|
|
2294
2556
|
}
|
|
2295
2557
|
});
|
|
2296
2558
|
};
|
|
2297
|
-
const treeStructure =
|
|
2559
|
+
const treeStructure = useMemo11(() => {
|
|
2298
2560
|
return transformTreeStructure2(fileTree, showOnlyTestFiles, testFilePatterns);
|
|
2299
2561
|
}, [fileTree, showOnlyTestFiles, testFilePatterns]);
|
|
2300
|
-
const treeData =
|
|
2562
|
+
const treeData = useMemo11(() => {
|
|
2301
2563
|
if (showUncoveredFiles) {
|
|
2302
2564
|
return treeStructure;
|
|
2303
2565
|
}
|
|
2304
2566
|
return filterCoveredNodes(treeStructure, coverageMap);
|
|
2305
2567
|
}, [treeStructure, showUncoveredFiles, coverageMap]);
|
|
2306
|
-
const hasTracedChildrenMap =
|
|
2568
|
+
const hasTracedChildrenMap = useMemo11(() => {
|
|
2307
2569
|
const map = new Map;
|
|
2308
2570
|
const markTracedParents = (nodes) => {
|
|
2309
2571
|
let hasTraced = false;
|
|
@@ -2325,7 +2587,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2325
2587
|
markTracedParents(treeData);
|
|
2326
2588
|
return map;
|
|
2327
2589
|
}, [treeData, coverageMap]);
|
|
2328
|
-
const lastSelectionRef =
|
|
2590
|
+
const lastSelectionRef = useRef7(null);
|
|
2329
2591
|
const handleSelect = (selectedNodes) => {
|
|
2330
2592
|
const selectedFiles = selectedNodes.filter((node) => !node.data.children).map((node) => node.data.id);
|
|
2331
2593
|
const selectedDirs = selectedNodes.filter((node) => node.data.children).map((node) => node.data.id);
|
|
@@ -2344,7 +2606,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2344
2606
|
onDirectorySelect(selectedDirs);
|
|
2345
2607
|
}
|
|
2346
2608
|
};
|
|
2347
|
-
const calculatedHeight =
|
|
2609
|
+
const calculatedHeight = useMemo11(() => {
|
|
2348
2610
|
if (autoHeight) {
|
|
2349
2611
|
const visibleNodeCount = countVisibleNodes3(treeData, openByDefault);
|
|
2350
2612
|
return visibleNodeCount * 28;
|
|
@@ -2352,7 +2614,7 @@ var TelemetryCoverageFileTree = ({
|
|
|
2352
2614
|
return initialHeight;
|
|
2353
2615
|
}, [autoHeight, treeData, openByDefault, initialHeight]);
|
|
2354
2616
|
const [containerRef, containerHeight] = useContainerHeight(calculatedHeight);
|
|
2355
|
-
return /* @__PURE__ */
|
|
2617
|
+
return /* @__PURE__ */ React13.createElement("div", {
|
|
2356
2618
|
ref: containerRef,
|
|
2357
2619
|
style: {
|
|
2358
2620
|
backgroundColor: transparentBackground ? "transparent" : theme.colors.background,
|
|
@@ -2361,9 +2623,9 @@ var TelemetryCoverageFileTree = ({
|
|
|
2361
2623
|
...autoHeight ? {} : { height: "100%" },
|
|
2362
2624
|
...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
|
|
2363
2625
|
}
|
|
2364
|
-
}, /* @__PURE__ */
|
|
2626
|
+
}, /* @__PURE__ */ React13.createElement(TelemetryCoverageContext.Provider, {
|
|
2365
2627
|
value: { coverageMap, hasTracedChildrenMap }
|
|
2366
|
-
}, /* @__PURE__ */
|
|
2628
|
+
}, /* @__PURE__ */ React13.createElement(Tree5, {
|
|
2367
2629
|
data: treeData,
|
|
2368
2630
|
onSelect: handleSelect,
|
|
2369
2631
|
...selectedFile !== undefined && { selection: selectedFile },
|
|
@@ -2392,7 +2654,7 @@ var calculateTelemetryCoverageStats = (coverageData) => {
|
|
|
2392
2654
|
};
|
|
2393
2655
|
// src/components/TelemetryCoverageFileTreeContainer.tsx
|
|
2394
2656
|
import { RefreshCw as RefreshCw2, Eye as Eye2, EyeOff as EyeOff2, AlertCircle as AlertCircle4, Activity as Activity2 } from "lucide-react";
|
|
2395
|
-
import
|
|
2657
|
+
import React14, { useState as useState7, useMemo as useMemo12 } from "react";
|
|
2396
2658
|
var TelemetryCoverageFileTreeContainer = ({
|
|
2397
2659
|
fileTree,
|
|
2398
2660
|
theme,
|
|
@@ -2414,10 +2676,10 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2414
2676
|
}) => {
|
|
2415
2677
|
const [filters, setFilters] = useState7([]);
|
|
2416
2678
|
const [showUncoveredFiles, setShowUncoveredFiles] = useState7(true);
|
|
2417
|
-
const selectedDirectories =
|
|
2679
|
+
const selectedDirectories = useMemo12(() => {
|
|
2418
2680
|
return filters.filter((f) => f.mode === "include").map((f) => f.path);
|
|
2419
2681
|
}, [filters]);
|
|
2420
|
-
const stats =
|
|
2682
|
+
const stats = useMemo12(() => calculateTelemetryCoverageStats(coverageData), [coverageData]);
|
|
2421
2683
|
const handleRefresh = () => {
|
|
2422
2684
|
onRefresh?.();
|
|
2423
2685
|
};
|
|
@@ -2425,34 +2687,34 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2425
2687
|
setShowUncoveredFiles(!showUncoveredFiles);
|
|
2426
2688
|
};
|
|
2427
2689
|
const percentageColor = stats.percentage >= 80 ? "#22c55e" : stats.percentage >= 50 ? "#eab308" : stats.percentage > 0 ? "#f97316" : "#6b7280";
|
|
2428
|
-
return /* @__PURE__ */
|
|
2690
|
+
return /* @__PURE__ */ React14.createElement("div", {
|
|
2429
2691
|
style: { display: "flex", flexDirection: "column", height: "100%" }
|
|
2430
|
-
}, showControls && /* @__PURE__ */
|
|
2692
|
+
}, showControls && /* @__PURE__ */ React14.createElement("div", {
|
|
2431
2693
|
style: {
|
|
2432
2694
|
padding: "12px",
|
|
2433
2695
|
borderBottom: `1px solid ${theme.colors.border || "#e0e0e0"}`,
|
|
2434
2696
|
backgroundColor: theme.colors.backgroundSecondary || theme.colors.background
|
|
2435
2697
|
}
|
|
2436
|
-
}, /* @__PURE__ */
|
|
2698
|
+
}, /* @__PURE__ */ React14.createElement("div", {
|
|
2437
2699
|
style: {
|
|
2438
2700
|
display: "flex",
|
|
2439
2701
|
alignItems: "center",
|
|
2440
2702
|
justifyContent: "space-between",
|
|
2441
2703
|
marginBottom: "8px"
|
|
2442
2704
|
}
|
|
2443
|
-
}, /* @__PURE__ */
|
|
2705
|
+
}, /* @__PURE__ */ React14.createElement("div", {
|
|
2444
2706
|
style: { display: "flex", alignItems: "center", gap: "8px" }
|
|
2445
|
-
}, /* @__PURE__ */
|
|
2707
|
+
}, /* @__PURE__ */ React14.createElement(Activity2, {
|
|
2446
2708
|
size: 16,
|
|
2447
2709
|
color: theme.colors.primary
|
|
2448
|
-
}), /* @__PURE__ */
|
|
2710
|
+
}), /* @__PURE__ */ React14.createElement("h3", {
|
|
2449
2711
|
style: {
|
|
2450
2712
|
margin: 0,
|
|
2451
2713
|
fontSize: theme.fontSizes[1],
|
|
2452
2714
|
fontWeight: "bold",
|
|
2453
2715
|
color: theme.colors.text
|
|
2454
2716
|
}
|
|
2455
|
-
}, title), stats.testFiles > 0 && /* @__PURE__ */
|
|
2717
|
+
}, title), stats.testFiles > 0 && /* @__PURE__ */ React14.createElement("span", {
|
|
2456
2718
|
style: {
|
|
2457
2719
|
backgroundColor: percentageColor,
|
|
2458
2720
|
color: "#ffffff",
|
|
@@ -2462,14 +2724,14 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2462
2724
|
fontWeight: "bold",
|
|
2463
2725
|
fontFamily: "monospace"
|
|
2464
2726
|
}
|
|
2465
|
-
}, stats.percentage, "%"), isLoading && /* @__PURE__ */
|
|
2727
|
+
}, stats.percentage, "%"), isLoading && /* @__PURE__ */ React14.createElement(RefreshCw2, {
|
|
2466
2728
|
size: 16,
|
|
2467
2729
|
color: theme.colors.text,
|
|
2468
2730
|
className: "telemetry-coverage-spinner",
|
|
2469
2731
|
style: { animation: "spin 1s linear infinite" }
|
|
2470
|
-
})), /* @__PURE__ */
|
|
2732
|
+
})), /* @__PURE__ */ React14.createElement("div", {
|
|
2471
2733
|
style: { display: "flex", gap: "8px" }
|
|
2472
|
-
}, /* @__PURE__ */
|
|
2734
|
+
}, /* @__PURE__ */ React14.createElement("button", {
|
|
2473
2735
|
onClick: toggleShowUncoveredFiles,
|
|
2474
2736
|
style: {
|
|
2475
2737
|
background: "none",
|
|
@@ -2484,11 +2746,11 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2484
2746
|
color: theme.colors.text
|
|
2485
2747
|
},
|
|
2486
2748
|
title: showUncoveredFiles ? "Show only covered files" : "Show all test files"
|
|
2487
|
-
}, showUncoveredFiles ? /* @__PURE__ */
|
|
2749
|
+
}, showUncoveredFiles ? /* @__PURE__ */ React14.createElement(EyeOff2, {
|
|
2488
2750
|
size: 14
|
|
2489
|
-
}) : /* @__PURE__ */
|
|
2751
|
+
}) : /* @__PURE__ */ React14.createElement(Eye2, {
|
|
2490
2752
|
size: 14
|
|
2491
|
-
}), showUncoveredFiles ? "Hide uncovered" : "Show all"), onRefresh && /* @__PURE__ */
|
|
2753
|
+
}), showUncoveredFiles ? "Hide uncovered" : "Show all"), onRefresh && /* @__PURE__ */ React14.createElement("button", {
|
|
2492
2754
|
onClick: handleRefresh,
|
|
2493
2755
|
disabled: isLoading,
|
|
2494
2756
|
style: {
|
|
@@ -2505,9 +2767,9 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2505
2767
|
opacity: isLoading ? 0.6 : 1
|
|
2506
2768
|
},
|
|
2507
2769
|
title: "Refresh coverage data"
|
|
2508
|
-
}, /* @__PURE__ */
|
|
2770
|
+
}, /* @__PURE__ */ React14.createElement(RefreshCw2, {
|
|
2509
2771
|
size: 14
|
|
2510
|
-
}), "Refresh"))), error && /* @__PURE__ */
|
|
2772
|
+
}), "Refresh"))), error && /* @__PURE__ */ React14.createElement("div", {
|
|
2511
2773
|
style: {
|
|
2512
2774
|
display: "flex",
|
|
2513
2775
|
alignItems: "center",
|
|
@@ -2520,36 +2782,36 @@ var TelemetryCoverageFileTreeContainer = ({
|
|
|
2520
2782
|
color: "#856404",
|
|
2521
2783
|
marginBottom: "8px"
|
|
2522
2784
|
}
|
|
2523
|
-
}, /* @__PURE__ */
|
|
2785
|
+
}, /* @__PURE__ */ React14.createElement(AlertCircle4, {
|
|
2524
2786
|
size: 14
|
|
2525
|
-
}), error), !error && stats.testFiles > 0 && /* @__PURE__ */
|
|
2787
|
+
}), error), !error && stats.testFiles > 0 && /* @__PURE__ */ React14.createElement("div", {
|
|
2526
2788
|
style: {
|
|
2527
2789
|
display: "flex",
|
|
2528
2790
|
gap: "16px",
|
|
2529
2791
|
fontSize: theme.fontSizes[0],
|
|
2530
2792
|
color: theme.colors.textSecondary || "#666"
|
|
2531
2793
|
}
|
|
2532
|
-
}, /* @__PURE__ */
|
|
2794
|
+
}, /* @__PURE__ */ React14.createElement("span", null, /* @__PURE__ */ React14.createElement("strong", {
|
|
2533
2795
|
style: { color: "#22c55e" }
|
|
2534
|
-
}, stats.coveredFiles), " covered"), stats.partialFiles > 0 && /* @__PURE__ */
|
|
2796
|
+
}, stats.coveredFiles), " covered"), stats.partialFiles > 0 && /* @__PURE__ */ React14.createElement("span", null, /* @__PURE__ */ React14.createElement("strong", {
|
|
2535
2797
|
style: { color: "#eab308" }
|
|
2536
|
-
}, stats.partialFiles), " partial"), /* @__PURE__ */
|
|
2798
|
+
}, stats.partialFiles), " partial"), /* @__PURE__ */ React14.createElement("span", null, /* @__PURE__ */ React14.createElement("strong", {
|
|
2537
2799
|
style: { color: "#6b7280" }
|
|
2538
|
-
}, stats.uncoveredFiles), " uncovered"), /* @__PURE__ */
|
|
2800
|
+
}, stats.uncoveredFiles), " uncovered"), /* @__PURE__ */ React14.createElement("span", {
|
|
2539
2801
|
style: { marginLeft: "auto" }
|
|
2540
|
-
}, stats.totalTraced, "/", stats.totalTests, " tests traced")), !error && stats.testFiles === 0 && /* @__PURE__ */
|
|
2802
|
+
}, stats.totalTraced, "/", stats.totalTests, " tests traced")), !error && stats.testFiles === 0 && /* @__PURE__ */ React14.createElement("div", {
|
|
2541
2803
|
style: {
|
|
2542
2804
|
fontSize: theme.fontSizes[0],
|
|
2543
2805
|
color: theme.colors.textSecondary || "#666"
|
|
2544
2806
|
}
|
|
2545
|
-
}, "No test files with coverage data found")), /* @__PURE__ */
|
|
2807
|
+
}, "No test files with coverage data found")), /* @__PURE__ */ React14.createElement(DirectoryFilterInput, {
|
|
2546
2808
|
fileTree,
|
|
2547
2809
|
theme,
|
|
2548
2810
|
filters,
|
|
2549
2811
|
onFiltersChange: setFilters
|
|
2550
|
-
}), /* @__PURE__ */
|
|
2812
|
+
}), /* @__PURE__ */ React14.createElement("div", {
|
|
2551
2813
|
style: { flex: 1, marginTop: "1rem", overflow: "hidden" }
|
|
2552
|
-
}, /* @__PURE__ */
|
|
2814
|
+
}, /* @__PURE__ */ React14.createElement(TelemetryCoverageFileTree, {
|
|
2553
2815
|
fileTree,
|
|
2554
2816
|
theme,
|
|
2555
2817
|
coverageData,
|
|
@@ -2587,5 +2849,6 @@ export {
|
|
|
2587
2849
|
GitOrderedFileList,
|
|
2588
2850
|
FileTreeContainer,
|
|
2589
2851
|
DynamicFileTree,
|
|
2590
|
-
DirectoryFilterInput
|
|
2852
|
+
DirectoryFilterInput,
|
|
2853
|
+
CanvasListTreeCore
|
|
2591
2854
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { CanvasListTreeCore } from './CanvasListTreeCore';
|
|
3
|
+
declare const meta: Meta<typeof CanvasListTreeCore>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof CanvasListTreeCore>;
|
|
6
|
+
export declare const MultiPackage: Story;
|
|
7
|
+
export declare const SinglePackage: Story;
|
|
8
|
+
export declare const RootOnly: Story;
|
|
9
|
+
export declare const Empty: Story;
|
|
10
|
+
export declare const TerminalTheme: Story;
|
|
11
|
+
export declare const MatrixTheme: Story;
|
|
12
|
+
//# sourceMappingURL=CanvasListTree.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasListTree.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/CanvasListTree/CanvasListTree.stories.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA0G1D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,CAmCzC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAyBjD,eAAO,MAAM,YAAY,EAAE,KAU1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAU3B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAUnB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAU3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAUzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CanvasListTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/CanvasListTree/CanvasListTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAO/C,OAAO,KAAK,EAEV,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAkHjB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAuI5D,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Theme } from '@principal-ade/industry-theme';
|
|
2
|
+
import type { DiscoveredCanvas } from '@principal-ai/principal-view-core';
|
|
3
|
+
import type { TreeNodeData } from '../TreeNode';
|
|
4
|
+
export type { DiscoveredCanvas };
|
|
5
|
+
export type CanvasListNodeType = 'package' | 'canvas-folder' | 'canvas' | 'overview';
|
|
6
|
+
export interface CanvasListNodeData extends TreeNodeData {
|
|
7
|
+
type: CanvasListNodeType;
|
|
8
|
+
children?: CanvasListNodeData[];
|
|
9
|
+
canvas?: DiscoveredCanvas;
|
|
10
|
+
packageName?: string;
|
|
11
|
+
scope?: 'package' | 'root';
|
|
12
|
+
markdownPath?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface CanvasListTreeProps {
|
|
15
|
+
canvases: DiscoveredCanvas[];
|
|
16
|
+
theme: Theme;
|
|
17
|
+
onClick: (node: CanvasListNodeData) => void;
|
|
18
|
+
selectedNodeId?: string;
|
|
19
|
+
defaultOpen?: boolean;
|
|
20
|
+
initialOpenState?: Record<string, boolean>;
|
|
21
|
+
horizontalNodePadding?: string;
|
|
22
|
+
verticalNodePadding?: string;
|
|
23
|
+
verticalPadding?: string;
|
|
24
|
+
enableDragAndDrop?: boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/CanvasListTree/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,GAAG,UAAU,CAAC;AAErF,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAGhC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5C,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;CAC7B"}
|
|
@@ -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;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;
|
|
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.
|
|
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.
|
|
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",
|