import { MinusOutlined, PlusOutlined } from '@ant-design/icons'; import { ProvidedZoom, TransformMatrix } from '@visx/zoom/lib/types'; import { Button } from 'antd'; import React, { useEffect, useState } from 'react'; import styled from 'styled-components/macro'; import LineageVizRootSvg from '@app/lineage/LineageVizRootSvg'; import { LineageVizControls } from '@app/lineage/controls/LineageVizControls'; import { ColumnEdge, EntityAndType, EntitySelectParams, FetchedEntity } from '@app/lineage/types'; import { LineageExplorerContext } from '@app/lineage/utils/LineageExplorerContext'; import { useIsShowColumnsMode } from '@app/lineage/utils/useIsShowColumnsMode'; import { useAppConfig } from '@app/useAppConfig'; import { SchemaField, SchemaFieldRef } from '@types'; const ControlsDiv = styled.div` display: flex; justify-content: space-between; align-items: center; height: 60px; `; const ZoomContainer = styled.div` position: relative; `; const ZoomControls = styled.div` position: absolute; top: 20px; right: 20px; `; const ZoomButton = styled(Button)` display: block; margin-bottom: 12px; `; type Props = { margin: { top: number; right: number; bottom: number; left: number }; entityAndType?: EntityAndType | null; fetchedEntities: Map; onEntityClick: (EntitySelectParams) => void; onEntityCenter: (EntitySelectParams) => void; onLineageExpand: (data: EntityAndType) => void; selectedEntity?: EntitySelectParams; zoom: ProvidedZoom & { transformMatrix: TransformMatrix; isDragging: boolean; }; width: number; height: number; fineGrainedMap?: any; refetchCenterNode: () => void; }; export default function LineageVizInsideZoom({ zoom, margin, entityAndType, fetchedEntities, onEntityClick, onEntityCenter, onLineageExpand, selectedEntity, width, height, fineGrainedMap, refetchCenterNode, }: Props) { const appConfig = useAppConfig(); const showFullTitle = appConfig.config.visualConfig.showFullTitleInLineage; const [collapsedColumnsNodes, setCollapsedColumnsNodes] = useState>({}); const [selectedField, setSelectedField] = useState(null); const [highlightedEdges, setHighlightedEdges] = useState([]); const [visibleColumnsByUrn, setVisibleColumnsByUrn] = useState>>({}); const [columnsByUrn, setColumnsByUrn] = useState>({}); const [showExpandedTitles, setShowExpandedTitles] = useState(showFullTitle ?? false); const showColumns = useIsShowColumnsMode(); useEffect(() => { zoom.setTransformMatrix({ ...zoom.transformMatrix, translateY: 0, translateX: width / 2 }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [entityAndType?.entity?.urn]); return ( <> zoom.scale({ scaleX: 1.2, scaleY: 1.2 })}> ); }