import { useStore } from '../../hooks/useStore'; import { useGlobalKeyHandler } from '../../hooks/useGlobalKeyHandler'; import { useKeyPress } from '../../hooks/useKeyPress'; import { GraphViewProps } from '../GraphView'; import { ZoomPane } from '../ZoomPane'; import { Pane } from '../Pane'; import { NodesSelection } from '../../components/NodesSelection'; import type { SolidFlowState, Node } from '../../types'; import { ParentProps, Show, createEffect } from 'solid-js'; export type FlowRendererProps = ParentProps, | 'snapToGrid' | 'nodeTypes' | 'edgeTypes' | 'snapGrid' | 'connectionLineType' | 'connectionLineContainerStyle' | 'arrowHeadColor' | 'onlyRenderVisibleElements' | 'selectNodesOnDrag' | 'defaultMarkerColor' | 'rfId' | 'nodeOrigin' > & { isControlledViewport: boolean; }>; const selector = (s: SolidFlowState) => { return { nodesSelectionActive: s.nodesSelectionActive, userSelectionActive: s.userSelectionActive }; }; function FlowRendererComponent(p: FlowRendererProps){ // children, // onPaneClick, // onPaneMouseEnter, // onPaneMouseMove, // onPaneMouseLeave, // onPaneContextMenu, // onPaneScroll, // deleteKeyCode, // selectionKeyCode, // selectionOnDrag, // selectionMode, // onSelectionStart, // onSelectionEnd, // multiSelectionKeyCode, // panActivationKeyCode, // zoomActivationKeyCode, // elementsSelectable, // zoomOnScroll, // zoomOnPinch, // panOnScroll: _panOnScroll, // panOnScrollSpeed, // panOnScrollMode, // zoomOnDoubleClick, // panOnDrag: _panOnDrag, // defaultViewport, // translateExtent, // minZoom, // maxZoom, // preventScrolling, // onSelectionContextMenu, // noWheelClassName, // noPanClassName, // disableKeyboardA11y, // onViewportChange, // isControlledViewport, // }: FlowRendererProps) { const { nodesSelectionActive, userSelectionActive } = useStore(selector); // console.log("selectionKeyCode", p.selectionKeyCode) const selectionKeyPressed = useKeyPress(() => p.selectionKeyCode); const panActivationKeyPressed = useKeyPress(() => p.panActivationKeyCode); const panOnDrag = () => panActivationKeyPressed() || p.panOnDrag; const panOnScroll = () => panActivationKeyPressed() || p.panOnScroll; const isSelecting = () => selectionKeyPressed() || userSelectionActive.get() || (p.selectionOnDrag && panOnDrag() !== true); useGlobalKeyHandler({ deleteKeyCode: () => p.deleteKeyCode, multiSelectionKeyCode: () => p.multiSelectionKeyCode }); createEffect(() => { console.log("paneOnDrag", panOnDrag()) }); createEffect(() => { console.log("selection keypressed", selectionKeyPressed()) }) return ( {p.children} ); } FlowRendererComponent.displayName = 'FlowRenderer'; export const FlowRenderer = FlowRendererComponent ;