mx-ui-components
Version:
mobius ui library
54 lines (53 loc) • 1.74 kB
TypeScript
import { type ComponentMetadata } from "../utils/loader";
import BaseComponent from "../Counter/BaseComponent";
interface OrgNodeData {
node: DocumentFragment;
userData: any;
children: OrgNodeData[];
level: number;
parent?: OrgNodeData;
width?: number;
x?: number;
}
export default class OrgChart extends BaseComponent {
props: Record<string, any>;
data: any[];
chartContainer: HTMLDivElement | null;
nodesMap: Map<string, OrgNodeData>;
rootNodes: OrgNodeData[];
levels: OrgNodeData[][];
nodeWidth: number;
nodeHeight: number;
horizontalSpacing: number;
verticalSpacing: number;
component: ComponentMetadata | null;
chartArea: HTMLDivElement | null;
scale: number;
minScale: number;
maxScale: number;
zoomStep: number;
isDragging: boolean;
lastMouseX: number;
lastMouseY: number;
translateX: number;
translateY: number;
connectedCallback(): Promise<void>;
initializeChart(): void;
buildHierarchy(data: any[]): void;
calculateLevels(nodes: OrgNodeData[], level: number): void;
organizeLevels(): void;
calculateNodePositions(): void;
calculateSubtreeWidths(nodes: OrgNodeData[]): number;
assignNodePositions(node: OrgNodeData, startX: number): void;
renderChart(): void;
drawConnectorLines(container: HTMLElement): void;
createConnector(container: HTMLElement, startX: number, startY: number, endX: number, endY: number): void;
setupZoomAndDrag(): void;
handleZoom(e: WheelEvent): void;
handleDragStart(e: MouseEvent): void;
handleDragMove(e: MouseEvent): void;
handleDragEnd(): void;
updateTransform(): void;
disconnectedCallback(): void;
}
export {};