@bian-womp/spark-workbench 0.3.53 → 0.3.55

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/lib/cjs/index.cjs CHANGED
@@ -3930,6 +3930,7 @@ function WorkbenchProvider({ wb, runner, overrides, uiVersion, children, }) {
3930
3930
  const [registryErrors, setRegistryErrors] = React.useState([]);
3931
3931
  const [inputValidationErrors, setInputValidationErrors] = React.useState([]);
3932
3932
  const [registryVersion, setRegistryVersion] = React.useState(0);
3933
+ const [registryReady, setRegistryReady] = React.useState(false);
3933
3934
  const clearSystemErrors = React.useCallback(() => setSystemErrors([]), []);
3934
3935
  const clearRegistryErrors = React.useCallback(() => setRegistryErrors([]), []);
3935
3936
  const clearInputValidationErrors = React.useCallback(() => setInputValidationErrors([]), []);
@@ -4627,6 +4628,7 @@ function WorkbenchProvider({ wb, runner, overrides, uiVersion, children, }) {
4627
4628
  // Registry updates: swap registry and refresh graph validation/UI
4628
4629
  const offRunnerRegistry = runner.on("registry", async (registry) => {
4629
4630
  wb.setRegistry(registry);
4631
+ setRegistryReady(true);
4630
4632
  });
4631
4633
  const offFlowViewport = runner.on("viewport", (event) => {
4632
4634
  const viewport = event.viewport;
@@ -4635,6 +4637,17 @@ function WorkbenchProvider({ wb, runner, overrides, uiVersion, children, }) {
4635
4637
  }
4636
4638
  });
4637
4639
  const offRunnerTransport = runner.on("transport", (t) => {
4640
+ // Remote registry is only considered ready once we've received at least one "registry" event.
4641
+ // Reset readiness whenever transport is not stable.
4642
+ if (t.state === "local") {
4643
+ setRegistryReady(true);
4644
+ }
4645
+ else if (t.state === "connecting" || t.state === "retrying") {
4646
+ setRegistryReady(false);
4647
+ }
4648
+ else if (t.state === "disconnected") {
4649
+ setRegistryReady(false);
4650
+ }
4638
4651
  if (t.state === "disconnected") {
4639
4652
  console.info("[WorkbenchContext] Transport disconnected, resetting node status");
4640
4653
  // Reinitialize node status with invalidated=true for all nodes
@@ -4829,6 +4842,7 @@ function WorkbenchProvider({ wb, runner, overrides, uiVersion, children, }) {
4829
4842
  triggerExternal,
4830
4843
  uiVersion,
4831
4844
  registryVersion,
4845
+ registryReady,
4832
4846
  overrides,
4833
4847
  getNodeDisplayName,
4834
4848
  setNodeName,
@@ -4870,6 +4884,7 @@ function WorkbenchProvider({ wb, runner, overrides, uiVersion, children, }) {
4870
4884
  runner,
4871
4885
  uiVersion,
4872
4886
  registryVersion,
4887
+ registryReady,
4873
4888
  overrides,
4874
4889
  getNodeDisplayName,
4875
4890
  setNodeName,
@@ -6092,7 +6107,7 @@ const SelectionBoundOverlay = ({ selection, rfInstance, viewportTick }) => {
6092
6107
  };
6093
6108
 
6094
6109
  const WorkbenchCanvasComponent = React.forwardRef((props, ref) => {
6095
- const { showValues, toString, toElement, getDefaultNodeSize, reactFlowProps, } = props;
6110
+ const { showValues, toString, toElement, getDefaultNodeSize, reactFlowProps, children, } = props;
6096
6111
  const { wb, handlesMap, inputsMap, inputDefaultsMap, outputsMap, outputTypesMap, valuesTick, nodeStatus, edgeStatus, validationByNode, validationByEdge, uiVersion, registryVersion, runner, overrides, runNode, runFromHere, runMode, } = useWorkbenchContext();
6097
6112
  const nodeValidation = validationByNode;
6098
6113
  const edgeValidation = validationByEdge.errors;
@@ -6766,7 +6781,7 @@ const WorkbenchCanvasComponent = React.forwardRef((props, ref) => {
6766
6781
  if (userOnInit) {
6767
6782
  userOnInit(inst);
6768
6783
  }
6769
- }, onConnect: onConnect, onEdgesChange: onEdgesChange, onEdgesDelete: onEdgesDelete, onNodesDelete: onNodesDelete, onNodesChange: onNodesChange, onMove: onMove, onMoveEnd: onMoveEnd, deleteKeyCode: ["Backspace", "Delete"], proOptions: { hideAttribution: true }, noDragClassName: "wb-nodrag", noWheelClassName: "wb-nowheel", noPanClassName: "wb-nopan", children: [BackgroundRenderer ? (jsxRuntime.jsx(BackgroundRenderer, {})) : (jsxRuntime.jsx(react.Background, { id: "workbench-canvas-background", variant: react.BackgroundVariant.Dots, gap: 12, size: 1 })), MinimapRenderer ? jsxRuntime.jsx(MinimapRenderer, {}) : jsxRuntime.jsx(react.MiniMap, {}), ControlsRenderer ? jsxRuntime.jsx(ControlsRenderer, {}) : jsxRuntime.jsx(react.Controls, {}), menuState?.type === "default" &&
6784
+ }, onConnect: onConnect, onEdgesChange: onEdgesChange, onEdgesDelete: onEdgesDelete, onNodesDelete: onNodesDelete, onNodesChange: onNodesChange, onMove: onMove, onMoveEnd: onMoveEnd, deleteKeyCode: ["Backspace", "Delete"], proOptions: { hideAttribution: true }, noDragClassName: "wb-nodrag", noWheelClassName: "wb-nowheel", noPanClassName: "wb-nopan", children: [children, BackgroundRenderer ? (jsxRuntime.jsx(BackgroundRenderer, {})) : (jsxRuntime.jsx(react.Background, { id: "workbench-canvas-background", variant: react.BackgroundVariant.Dots, gap: 12, size: 1 })), MinimapRenderer ? jsxRuntime.jsx(MinimapRenderer, {}) : jsxRuntime.jsx(react.MiniMap, {}), ControlsRenderer ? jsxRuntime.jsx(ControlsRenderer, {}) : jsxRuntime.jsx(react.Controls, {}), menuState?.type === "default" &&
6770
6785
  (DefaultContextMenuRenderer ? (jsxRuntime.jsx(DefaultContextMenuRenderer, { open: true, clientPos: menuState.menuPos, handlers: defaultContextMenuHandlers, registry: wb.registry, nodeIds: nodeIds, keyboardShortcuts: keyboardShortcuts })) : (jsxRuntime.jsx(DefaultContextMenu, { open: true, clientPos: menuState.menuPos, handlers: defaultContextMenuHandlers, registry: wb.registry, nodeIds: nodeIds, keyboardShortcuts: keyboardShortcuts }))), menuState?.type === "node" &&
6771
6786
  nodeContextMenuHandlers &&
6772
6787
  (NodeContextMenuRenderer ? (jsxRuntime.jsx(NodeContextMenuRenderer, { open: true, clientPos: menuState.menuPos, nodeId: menuState.nodeId, handlers: nodeContextMenuHandlers, bakeableOutputs: bakeableOutputs, runMode: runMode, wb: wb, keyboardShortcuts: keyboardShortcuts })) : (jsxRuntime.jsx(NodeContextMenu, { open: true, clientPos: menuState.menuPos, nodeId: menuState.nodeId, handlers: nodeContextMenuHandlers, bakeableOutputs: bakeableOutputs, runMode: runMode }))), menuState?.type === "selection" &&