@principal-ade/dynamic-file-tree 0.2.10 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1952,7 +1952,7 @@ var MultiFileTree = ({
1952
1952
  };
1953
1953
  // src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.tsx
1954
1954
  import { Package, FolderKanban, LayoutDashboard, Workflow, BookOpen, FolderOpen, GitCommit, ExternalLink, List, ListX, Eye as Eye2, EyeOff as EyeOff2 } from "lucide-react";
1955
- import React13, { useMemo as useMemo9, useRef as useRef5, useState as useState7, useEffect as useEffect3 } from "react";
1955
+ import React13, { useMemo as useMemo9, useRef as useRef5 } from "react";
1956
1956
  import { Tree as Tree3 } from "react-arborist";
1957
1957
 
1958
1958
  // src/utils/gitStatus.tsx
@@ -2481,7 +2481,7 @@ var StoryboardWorkflowsTreeCore = ({
2481
2481
  storyboards,
2482
2482
  theme,
2483
2483
  onClick,
2484
- selectedNodeId,
2484
+ selectedNodeId: _selectedNodeId,
2485
2485
  defaultOpen = false,
2486
2486
  initialOpenState,
2487
2487
  openState,
@@ -2768,14 +2768,6 @@ var StoryboardWorkflowsTreeCore = ({
2768
2768
  const initialHeight = 600;
2769
2769
  const [containerRef, containerHeight] = useContainerHeight(initialHeight);
2770
2770
  const treeRef = useRef5(null);
2771
- const [treeKey, setTreeKey] = useState7(0);
2772
- const prevOpenStateRef = useRef5(openState);
2773
- useEffect3(() => {
2774
- if (openState !== undefined && openState !== prevOpenStateRef.current) {
2775
- prevOpenStateRef.current = openState;
2776
- setTreeKey((k) => k + 1);
2777
- }
2778
- }, [openState]);
2779
2771
  const handleToggle = (id) => {
2780
2772
  if (onToggle && treeRef.current) {
2781
2773
  const node = treeRef.current.get(id);
@@ -2795,13 +2787,11 @@ var StoryboardWorkflowsTreeCore = ({
2795
2787
  ...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
2796
2788
  }
2797
2789
  }, /* @__PURE__ */ React13.createElement(Tree3, {
2798
- key: treeKey,
2799
2790
  ref: treeRef,
2800
- data: treeData,
2791
+ initialData: treeData,
2801
2792
  onSelect: handleSelect,
2802
2793
  openByDefault: defaultOpen,
2803
2794
  ...effectiveInitialOpenState !== undefined && { initialOpenState: effectiveInitialOpenState },
2804
- ...selectedNodeId !== undefined && { selection: selectedNodeId },
2805
2795
  ...onToggle !== undefined && { onToggle: handleToggle },
2806
2796
  width: "100%",
2807
2797
  height: containerHeight,
@@ -3047,7 +3037,7 @@ var WorkflowScenarioTreeCore = ({
3047
3037
  };
3048
3038
  // src/components/CanvasListTree/CanvasListTreeCore.tsx
3049
3039
  import { Package as Package3, Folder, LayoutDashboard as LayoutDashboard2, FileText } from "lucide-react";
3050
- import React15, { useMemo as useMemo11, useRef as useRef6, useState as useState8, useEffect as useEffect4 } from "react";
3040
+ import React15, { useMemo as useMemo11, useRef as useRef6 } from "react";
3051
3041
  import { Tree as Tree5 } from "react-arborist";
3052
3042
  var buildTreeData = (canvases, gitStatusMap) => {
3053
3043
  const packagesMap = new Map;
@@ -3303,14 +3293,6 @@ var CanvasListTreeCore = ({
3303
3293
  const initialHeight = 600;
3304
3294
  const [containerRef, containerHeight] = useContainerHeight(initialHeight);
3305
3295
  const treeRef = useRef6(null);
3306
- const [treeKey, setTreeKey] = useState8(0);
3307
- const prevOpenStateRef = useRef6(openState);
3308
- useEffect4(() => {
3309
- if (openState !== undefined && openState !== prevOpenStateRef.current) {
3310
- prevOpenStateRef.current = openState;
3311
- setTreeKey((k) => k + 1);
3312
- }
3313
- }, [openState]);
3314
3296
  const handleToggle = (id) => {
3315
3297
  if (onToggle && treeRef.current) {
3316
3298
  const node = treeRef.current.get(id);
@@ -3330,7 +3312,6 @@ var CanvasListTreeCore = ({
3330
3312
  ...verticalPadding ? { paddingTop: verticalPadding, paddingBottom: verticalPadding } : {}
3331
3313
  }
3332
3314
  }, /* @__PURE__ */ React15.createElement(Tree5, {
3333
- key: treeKey,
3334
3315
  ref: treeRef,
3335
3316
  initialData: treeData,
3336
3317
  onSelect: handleSelect,
@@ -3850,7 +3831,7 @@ var calculateTelemetryCoverageStats = (coverageData) => {
3850
3831
  };
3851
3832
  // src/components/TelemetryCoverageFileTreeContainer.tsx
3852
3833
  import { RefreshCw as RefreshCw2, Eye as Eye3, EyeOff as EyeOff3, AlertCircle as AlertCircle5, Activity as Activity2 } from "lucide-react";
3853
- import React18, { useState as useState9, useMemo as useMemo14 } from "react";
3834
+ import React18, { useState as useState7, useMemo as useMemo14 } from "react";
3854
3835
  var TelemetryCoverageFileTreeContainer = ({
3855
3836
  fileTree,
3856
3837
  theme,
@@ -3870,8 +3851,8 @@ var TelemetryCoverageFileTreeContainer = ({
3870
3851
  verticalNodePadding,
3871
3852
  verticalPadding
3872
3853
  }) => {
3873
- const [filters, setFilters] = useState9([]);
3874
- const [showUncoveredFiles, setShowUncoveredFiles] = useState9(true);
3854
+ const [filters, setFilters] = useState7([]);
3855
+ const [showUncoveredFiles, setShowUncoveredFiles] = useState7(true);
3875
3856
  const selectedDirectories = useMemo14(() => {
3876
3857
  return filters.filter((f) => f.mode === "include").map((f) => f.path);
3877
3858
  }, [filters]);
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasListTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/CanvasListTree/CanvasListTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAQpE,OAAO,KAAK,EAEV,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAuNjB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0M5D,CAAC"}
1
+ {"version":3,"file":"CanvasListTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/CanvasListTree/CanvasListTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAQ/C,OAAO,KAAK,EAEV,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAuNjB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA6L5D,CAAC"}
@@ -39,5 +39,12 @@ export declare const WithStatusBars: Story;
39
39
  * the scenarios are shown as expandable children under the workflow node.
40
40
  * Each scenario displays its description and trace count.
41
41
  */
42
+ /**
43
+ * Scroll Preservation Test - Many Storyboards
44
+ *
45
+ * Tests that expanding nodes at the bottom of a long list preserves scroll position.
46
+ * This was a bug where the tree would re-mount and reset scroll to top.
47
+ */
48
+ export declare const ScrollPreservationTest: Story;
42
49
  export declare const WorkflowsWithScenarios: Story;
43
50
  //# sourceMappingURL=StoryboardWorkflowsTree.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoryboardWorkflowsTree.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTree.stories.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAyP5E,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,2BAA2B,CAOlD,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1D,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAQ3B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAuE7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAkEpC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAgE7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAU3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAwB/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAiBlC,CAAC;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;AAMF,eAAO,MAAM,aAAa,EAAE,KAwF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KA0H/B,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,KAwF1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,KAuIrC,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,KAqK7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAoH5B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,KA0JpC,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;AAMF,eAAO,MAAM,aAAa,EAAE,KAwF3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KA0H/B,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,KAwF1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,KAuIrC,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,KAqK7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAoH5B,CAAC;AAEF;;;;;;GAMG;AACH;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAmEpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KA0JpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StoryboardWorkflowsTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+C,MAAM,OAAO,CAAC;AASpE,OAAO,KAAK,EAEV,4BAA4B,EAQ7B,MAAM,SAAS,CAAC;AA6ejB,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAke9E,CAAC"}
1
+ {"version":3,"file":"StoryboardWorkflowsTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAS/C,OAAO,KAAK,EAEV,4BAA4B,EAQ7B,MAAM,SAAS,CAAC;AA6ejB,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAod9E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ade/dynamic-file-tree",
3
- "version": "0.2.10",
3
+ "version": "0.2.12",
4
4
  "description": "React component for selective directory filtering and file tree visualization",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",