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

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 } from "react";
1955
+ import React13, { useMemo as useMemo9, useRef as useRef5, useLayoutEffect } from "react";
1956
1956
  import { Tree as Tree3 } from "react-arborist";
1957
1957
 
1958
1958
  // src/utils/gitStatus.tsx
@@ -2477,7 +2477,7 @@ var getDefaultDragConfig = (node) => {
2477
2477
  }
2478
2478
  return;
2479
2479
  };
2480
- var StoryboardWorkflowsTreeCore = ({
2480
+ var StoryboardWorkflowsTreeCoreInner = ({
2481
2481
  storyboards,
2482
2482
  theme,
2483
2483
  onClick,
@@ -2768,6 +2768,27 @@ var StoryboardWorkflowsTreeCore = ({
2768
2768
  const initialHeight = 600;
2769
2769
  const [containerRef, containerHeight] = useContainerHeight(initialHeight);
2770
2770
  const treeRef = useRef5(null);
2771
+ const scrollTopRef = useRef5(0);
2772
+ const listElementRef = useRef5(null);
2773
+ useLayoutEffect(() => {
2774
+ if (containerRef.current && !listElementRef.current) {
2775
+ const listElement = containerRef.current.querySelector('[role="tree"]')?.parentElement;
2776
+ if (listElement) {
2777
+ listElementRef.current = listElement;
2778
+ const handleScroll = () => {
2779
+ scrollTopRef.current = listElement.scrollTop;
2780
+ };
2781
+ listElement.addEventListener("scroll", handleScroll);
2782
+ return () => listElement.removeEventListener("scroll", handleScroll);
2783
+ }
2784
+ }
2785
+ return;
2786
+ });
2787
+ useLayoutEffect(() => {
2788
+ if (listElementRef.current && scrollTopRef.current > 0) {
2789
+ listElementRef.current.scrollTop = scrollTopRef.current;
2790
+ }
2791
+ });
2771
2792
  const handleToggle = (id) => {
2772
2793
  if (onToggle && treeRef.current) {
2773
2794
  const node = treeRef.current.get(id);
@@ -2800,6 +2821,9 @@ var StoryboardWorkflowsTreeCore = ({
2800
2821
  ...dndProps
2801
2822
  }, NodeRenderer));
2802
2823
  };
2824
+ var StoryboardWorkflowsTreeCore = React13.memo(StoryboardWorkflowsTreeCoreInner, (prevProps, nextProps) => {
2825
+ return prevProps.storyboards === nextProps.storyboards && prevProps.theme === nextProps.theme && prevProps.onClick === nextProps.onClick && prevProps.defaultOpen === nextProps.defaultOpen && prevProps.initialOpenState === nextProps.initialOpenState && prevProps.openState === nextProps.openState && prevProps.onToggle === nextProps.onToggle && prevProps.horizontalNodePadding === nextProps.horizontalNodePadding && prevProps.verticalNodePadding === nextProps.verticalNodePadding && prevProps.verticalPadding === nextProps.verticalPadding && prevProps.enableDragAndDrop === nextProps.enableDragAndDrop && prevProps.workflowCoverageMap === nextProps.workflowCoverageMap && prevProps.versionSnapshots === nextProps.versionSnapshots && prevProps.workflowFilterMode === nextProps.workflowFilterMode && prevProps.traceWorkflowsSet === nextProps.traceWorkflowsSet && prevProps.gitStatusData === nextProps.gitStatusData && prevProps.enablePanelDrag === nextProps.enablePanelDrag && prevProps.getDragConfig === nextProps.getDragConfig && prevProps.scenarioStatusMap === nextProps.scenarioStatusMap && prevProps.canvasNodeStatusMap === nextProps.canvasNodeStatusMap && prevProps.statusBarDisplay === nextProps.statusBarDisplay && prevProps.onVersionOpen === nextProps.onVersionOpen && prevProps.scenarioTraceCounts === nextProps.scenarioTraceCounts && prevProps.scenarioVisibilityMap === nextProps.scenarioVisibilityMap && prevProps.onScenarioVisibilityToggle === nextProps.onScenarioVisibilityToggle && prevProps.showScenarios === nextProps.showScenarios;
2826
+ });
2803
2827
  // src/components/StoryboardWorkflowsTree/types.ts
2804
2828
  function hasWorkflowContent(node) {
2805
2829
  return node.workflow !== undefined && "content" in node.workflow && node.workflow.content !== undefined;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import type { StoryboardWorkflowsTreeProps } from './types';
3
- export declare const StoryboardWorkflowsTreeCore: React.FC<StoryboardWorkflowsTreeProps>;
3
+ export declare const StoryboardWorkflowsTreeCore: React.NamedExoticComponent<StoryboardWorkflowsTreeProps>;
4
4
  //# sourceMappingURL=StoryboardWorkflowsTreeCore.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"StoryboardWorkflowsTreeCore.d.ts","sourceRoot":"","sources":["../../../../src/components/StoryboardWorkflowsTree/StoryboardWorkflowsTreeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAShE,OAAO,KAAK,EAEV,4BAA4B,EAQ7B,MAAM,SAAS,CAAC;AAk+BjB,eAAO,MAAM,2BAA2B,0DA8BtC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ade/dynamic-file-tree",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "description": "React component for selective directory filtering and file tree visualization",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",