moduleProvider={@module("@xyflow/react")@react.componentexternalmake:(~children:React.element)=>React.element="ReactFlowProvider"}moduleControls={@module("@xyflow/react")@react.componentexternalmake:(~showInteractive:bool=?)=>React.element="Controls"}moduleMiniMap={@module("@xyflow/react")@react.componentexternalmake:(~zoomable:bool=?,~pannable:bool=?)=>React.element="MiniMap"}moduleBackground={@module("@xyflow/react")@react.componentexternalmake:(~color:string=?,~variant:string=?,~gap:int=?,~size:int=?,)=>React.element="Background"}moduleViewportPortal={@module("@xyflow/react")@react.componentexternalmake:(~children:React.element)=>React.element="ViewportPortal"}typeposition=[#top|#left|#bottom|#right]moduleHandle={typehandleType=[#source|#target]@module("@xyflow/react")@react.componentexternalmake:(@as("type")~type_:handleType,~position:position,~id:string=?,)=>React.element="Handle"}moduleNodeResizer={@module("@xyflow/react")@react.componentexternalmake:(~minWidth:float=?,~minHeight:float=?,~isVisible:bool=?,~maxWidth:float=?,~maxHeight:float=?,~lineStyle:ReactDOM.Style.t=?,)=>React.element="NodeResizer"}typenodeTypes<'props>=dict<React.componentLike<'props,React.element>>typeproOptions={hideAttribution:bool}typenodeXYPosition={x:float,y:float}@unboxedtypenodeExtent=|@as("parent")Parent|CoordinateExtent(((float,float),(float,float)))typenodeOrigin=(float,float)typenodeHandletypenodeMeasuredDimensions={width?:float,height?:float,}/** Documentation: https://reactflow.dev/api-reference/types/node#fields */typenode<'data>={id:string,position:nodeXYPosition,data:'data,@as("type")type_:string,sourcePosition?:position,targetPosition?:position,hidden?:bool,selected?:bool,dragging?:bool,draggable?:bool,selectable?:bool,connectable?:bool,resizing?:bool,deletable?:bool,dragHandle?:string,width:Nullable.t<float>,height:Nullable.t<float>,parentId?:string,zIndex?:float,extent?:nodeExtent,expandParent?:bool,ariaLabel?:string,focusable?:bool,style?:ReactDOM.Style.t,className?:string,origin?:nodeOrigin,handles?:array<nodeHandle>,measured?:nodeMeasuredDimensions,}typeedgeLabelOptions={label?:React.element,labelStyle?:ReactDOM.Style.t,labelShowBg?:bool,labelBgStyle?:ReactDOM.Style.t,labelBgPadding?:(float,float),labelBgBorderRadius?:float,}typeedgeMarkerType=[#arrow|#arrowclosed]typeedgeMarker={@as("type")type_:edgeMarkerType,color?:string,width?:float,height?:float,markerUnits?:string,orient?:string,strokeWidth?:float,}@unboxedtypereconnectable=|@as(true)True|@as(false)False|HandleType(Handle.handleType)typeedgePathOptions={// SmoothStepEdgeoffset?:float,borderRadius?:float,// BezierEdgecurvature?:float,}/** Documentation: https://reactflow.dev/api-reference/types/edge#variants */typeedge<'data>={...edgeLabelOptions,id:string,@as("type")type_?:string,style?:ReactDOM.Style.t,className?:string,source:string,target:string,sourceHandle?:Nullable.t<string>,targetHandle?:Nullable.t<string>,data:'data,hidden?:bool,animated?:bool,selected?:bool,selectable?:bool,deletable?:bool,focusable?:bool,reconnectable?:reconnectable,markerStart?:edgeMarker,markerEnd?:edgeMarker,zIndex?:float,interactionWidth?:float,ariaLabel?:string,// For SmoothStepEdge and BezierEdgeType variantpathOptions?:edgePathOptions,}// https://reactflow.dev/api-reference/types/node-change@tag("type")typerecnodeChange=|@as("dimensions")Dimensions({id:string,dimensions?:nodeMeasuredDimensions,resizing?:bool,setAttributes?:bool,})|@as("position")Position({id:string,position?:nodeXYPosition,positionAbsolute?:nodeXYPosition,dragging?:bool,})|@as("select")Selection({id:string,selected:bool})|@as("remove")Remove({id:string})|@as("add")Add({item:node<NodeData.t>})|@as("replace")Replace({id:string,item:node<NodeData.t>})// TODOtypeedgeChange@module("@xyflow/react")externalapplyNodeChanges:(array<nodeChange>,array<node<'a>>)=>array<node<'a>>="applyNodeChanges"@module("@xyflow/react")externalapplyEdgeChanges:(array<edgeChange>,array<edge<'a>>)=>array<edge<'a>>="applyEdgeChanges"@module("@xyflow/react")externaluseNodesState:array<node<'a>>=>(array<node<'a>>,(array<node<'a>>=>array<node<'a>>)=>unit,array<nodeChange>=>unit,)="useNodesState"@module("@xyflow/react")externaluseEdgesState:array<edge<'a>>=>(array<edge<'a>>,(array<edge<'a>>=>array<edge<'a>>)=>unit,array<edgeChange>=>unit,)="useEdgesState"typefitViewNode={id:string}typefitViewOptions={// TODO: padding can also be string ending with `px` or `%`padding?:float,includeHiddenNodes?:bool,minZoom?:float,maxZoom?:float,duration?:float,nodes?:array<fitViewNode>,}moduleViewport={typet={x:float,y:float,zoom:float}}moduleInstance={typettypezoomOptions={duration:float}typeposition={x:float,y:float}@sendexternalgetZoom:t=>float="getZoom"@sendexternalzoomTo:(t,float,~options:zoomOptions=?)=>unit="zoomTo"@sendexternalscreenToFlowPosition:(t,position)=>position="screenToFlowPosition"@sendexternalflowToScreenPosition:(t,position)=>position="flowToScreenPosition"@sendexternalfitView:(t,~options:fitViewOptions=?)=>bool="fitView"@sendexternalgetViewport:t=>Viewport.t="getViewport"@sendexternalsetViewport:(t,Viewport.t,~options:zoomOptions=?)=>promise<bool>="setViewport"typesetCenterOptions={duration:float,zoom:float,}/** setCenter(x, y, options) */@sendexternalsetCenter:(t,float,float,~options:setCenterOptions=?)=>promise<bool>="setCenter"@sendexternalgetNodes:t=>array<node<NodeData.t>>="getNodes"}@module("@xyflow/react")externaluseReactFlow:unit=>Instance.t="useReactFlow"@unboxedtypepanOnDrag=Bool(bool)|MouseButtons(array<int>)typeselectionMode=[#partial|#full]@module("@xyflow/react")@react.componentexternalmake:(~nodeTypes:nodeTypes<'props>,~nodes:array<node<'nodeData>>,~edges:array<edge<'edgeData>>,~onNodesChange:array<nodeChange>=>unit=?,~onEdgesChange:array<edgeChange>=>unit=?,~onViewportChange:Viewport.t=>unit=?,~onInit:Instance.t=>unit=?,~defaultViewport:Viewport.t=?,~fitView:bool=?,~fitViewOptions:fitViewOptions=?,~minZoom:float=?,~maxZoom:float=?,~onlyRenderVisibleElements:bool=?,~panOnDrag:panOnDrag=?,~panOnScroll:bool=?,~selectionOnDrag:bool=?,~selectionMode:selectionMode=?,~proOptions:proOptions=?,~nodesConnectable:bool=?,~edgesFocusable:bool=?,~elevateEdgesOnSelect:bool=?,~deleteKeyCode:array<string>=?,~zoomOnDoubleClick:bool=?,~onPaneClick:ReactEvent.Mouse.t=>unit=?,~onSelectionDragStart:(ReactEvent.Mouse.t,array<node<'nodeData>>)=>unit=?,~onSelectionDrag:(ReactEvent.Mouse.t,array<node<'nodeData>>)=>unit=?,~onSelectionDragStop:(ReactEvent.Mouse.t,array<node<'nodeData>>)=>unit=?,~onSelectionStart:ReactEvent.Mouse.t=>unit=?,~onSelectionEnd:ReactEvent.Mouse.t=>unit=?,~children:React.element=?,)=>React.element="ReactFlow"@module("@xyflow/react")externaluseUpdateNodeInternals:unit=>string=>unit="useUpdateNodeInternals"// See type definitions here for complete list of fields:// - https://github.com/xyflow/xyflow/blob/reactflow%4011.11.3/packages/core/src/types/general.ts#L144-L238// - https://github.com/xyflow/xyflow/blob/%40xyflow/react%4012.0.4/packages/react/src/types/store.ts#L50-L149typeuserSelectionRect={width:float,height:float,startX:float,startY:float,x:float,y:float,}typestoreState={nodesSelectionActive?:bool,userSelectionActive?:bool,userSelectionRect?:Nullable.t<userSelectionRect>,transform?:(float,float,float),}@module("@xyflow/react")externaluseStore:(storeState=>'a,~equalityFn:('a,'a)=>bool=?)=>'a="useStore"letuseUserSelectionActive=()=>useStore(state=>state.userSelectionActive,~equalityFn=Object.is)typestoreSubscribetypestore={getState:unit=>storeState,setState:storeState=>unit,subscribe:storeSubscribe}@module("@xyflow/react")externaluseStoreApi:unit=>store="useStoreApi"