@bian-womp/spark-workbench 0.3.87 → 0.3.88

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.
@@ -1 +1 @@
1
- {"version":3,"file":"WorkbenchContext.provider.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAYjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAA2C,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAejG,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,MAAM,EACN,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAmhCA"}
1
+ {"version":3,"file":"WorkbenchContext.provider.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAYjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAA2C,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAejG,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,MAAM,EACN,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAygCA"}
package/lib/esm/index.js CHANGED
@@ -4473,125 +4473,94 @@ function WorkbenchProvider({ wb, runner, overrides, uiVersion, children, }) {
4473
4473
  const offWbGraphUiChangedForLog = wb.on("graphUiChanged", add("workbench", "graphUiChanged"));
4474
4474
  const offWbValidationChanged = wb.on("validationChanged", add("workbench", "validationChanged"));
4475
4475
  // Ensure newly added nodes start as invalidated until first evaluation
4476
- const offWbGraphChangedForUpdate = wb.on("graphChanged", async (event) => {
4477
- // Handle batched compound operations (duplicate, paste, delete, bake)
4478
- if (event.change?.type === "batch") {
4479
- const { changes } = event.change;
4480
- const isDry = !!event.dry;
4481
- const batchReason = event.reason ?? "batch";
4482
- try {
4483
- if (runner.isRunning()) {
4484
- const hasNodeOps = changes.some((c) => c.type === "addNode" && (c.inputs || c.copyOutputsFrom));
4485
- await runner.update(event.def, { dry: isDry || hasNodeOps });
4486
- for (const change of changes) {
4487
- if (change.type === "addNode") {
4488
- if (change.inputs) {
4489
- await runner.setInputs(change.nodeId, change.inputs, { dry: isDry });
4490
- }
4491
- if (change.copyOutputsFrom) {
4492
- await runner.copyOutputs(change.copyOutputsFrom, change.nodeId, { dry: isDry });
4493
- }
4494
- }
4495
- if (change.type === "setInputs") {
4496
- await runner.setInputs(change.nodeId, change.inputs, { dry: isDry });
4497
- }
4498
- }
4499
- }
4500
- if (event.commit) {
4501
- await saveUiRuntimeMetadata(wb, runner);
4502
- const history = await runner.commit(batchReason).catch((err) => {
4503
- console.error("[WorkbenchContext] Error committing batch:", err);
4504
- return undefined;
4505
- });
4506
- if (history)
4507
- wb.setHistory(history);
4508
- }
4509
- }
4510
- catch (err) {
4511
- console.error("[WorkbenchContext] Error processing batch:", err);
4512
- }
4476
+ const GRAPH_REASON_BY_CHANGE = {
4477
+ addNode: "add-node",
4478
+ removeNode: "remove-node",
4479
+ connect: "connect-edge",
4480
+ disconnect: "disconnect-edge",
4481
+ updateParams: "update-node-params",
4482
+ updateEdgeType: "update-edge-type",
4483
+ setInputs: "set-inputs",
4484
+ updateResolvedHandles: "update-resolved-handles",
4485
+ };
4486
+ const getGraphReason = (event) => {
4487
+ const changeType = event.change?.type;
4488
+ return (changeType && GRAPH_REASON_BY_CHANGE[changeType]) || "graph-changed";
4489
+ };
4490
+ const commitGraphChange = async (shouldCommit, reason, errorPrefix) => {
4491
+ if (!shouldCommit)
4513
4492
  return;
4493
+ await saveUiRuntimeMetadata(wb, runner);
4494
+ const history = await runner.commit(reason).catch((err) => {
4495
+ console.error(errorPrefix, err);
4496
+ return undefined;
4497
+ });
4498
+ if (history)
4499
+ wb.setHistory(history);
4500
+ };
4501
+ const applyAddNodeEffects = async (nodeId, inputs, copyOutputsFrom, dry) => {
4502
+ if (inputs) {
4503
+ await runner.setInputs(nodeId, inputs, { dry });
4514
4504
  }
4515
- // Build detailed reason from change type
4516
- let reason = "graph-changed";
4517
- if (event.change) {
4518
- const changeType = event.change.type;
4519
- if (changeType === "addNode") {
4520
- reason = "add-node";
4521
- }
4522
- else if (changeType === "removeNode") {
4523
- reason = "remove-node";
4524
- }
4525
- else if (changeType === "connect") {
4526
- reason = "connect-edge";
4527
- }
4528
- else if (changeType === "disconnect") {
4529
- reason = "disconnect-edge";
4530
- }
4531
- else if (changeType === "updateParams") {
4532
- reason = "update-node-params";
4533
- }
4534
- else if (changeType === "updateEdgeType") {
4535
- reason = "update-edge-type";
4536
- }
4537
- else if (changeType === "setInputs") {
4538
- reason = "set-inputs";
4505
+ if (copyOutputsFrom) {
4506
+ await runner.copyOutputs(copyOutputsFrom, nodeId, { dry });
4507
+ }
4508
+ };
4509
+ const applyBatchGraphChange = async (event) => {
4510
+ if (event.change?.type !== "batch")
4511
+ return;
4512
+ const { changes } = event.change;
4513
+ const dry = !!event.dry;
4514
+ if (!runner.isRunning())
4515
+ return;
4516
+ const hasNodeOps = changes.some((c) => c.type === "addNode" && (c.inputs || c.copyOutputsFrom));
4517
+ await runner.update(event.def, { dry: dry || hasNodeOps });
4518
+ for (const change of changes) {
4519
+ if (change.type === "addNode") {
4520
+ await applyAddNodeEffects(change.nodeId, change.inputs, change.copyOutputsFrom, dry);
4539
4521
  }
4540
- else if (changeType === "updateResolvedHandles") {
4541
- reason = "update-resolved-handles";
4522
+ else if (change.type === "setInputs") {
4523
+ await runner.setInputs(change.nodeId, change.inputs, { dry });
4542
4524
  }
4543
4525
  }
4526
+ };
4527
+ const applySingleGraphChange = async (event) => {
4528
+ if (event.change?.type === "batch")
4529
+ return;
4544
4530
  if (event.change?.type === "setInputs") {
4545
4531
  const { nodeId, inputs } = event.change;
4546
4532
  await runner.setInputs(nodeId, inputs, { dry: event.dry });
4547
4533
  }
4548
- if (!runner.isRunning()) {
4549
- if (event.commit) {
4550
- await saveUiRuntimeMetadata(wb, runner);
4551
- const history = await runner.commit(reason).catch((err) => {
4552
- console.error("[WorkbenchContext] Error committing:", err);
4553
- return undefined;
4554
- });
4555
- if (history)
4556
- wb.setHistory(history);
4534
+ if (!runner.isRunning())
4535
+ return;
4536
+ if (event.change?.type === "addNode") {
4537
+ const { nodeId, inputs, copyOutputsFrom } = event.change;
4538
+ if (event.dry) {
4539
+ await runner.update(event.def, { dry: true });
4540
+ await applyAddNodeEffects(nodeId, inputs, copyOutputsFrom, true);
4541
+ return;
4557
4542
  }
4543
+ await runner.update(event.def, { dry: !!inputs });
4544
+ await applyAddNodeEffects(nodeId, inputs, undefined, false);
4558
4545
  return;
4559
4546
  }
4547
+ if (event.change?.type !== "setInputs" && event.change?.type !== "updateResolvedHandles") {
4548
+ await runner.update(event.def, { dry: event.dry });
4549
+ }
4550
+ };
4551
+ const offWbGraphChangedForUpdate = wb.on("graphChanged", async (event) => {
4560
4552
  try {
4561
- if (event.change?.type === "addNode") {
4562
- const { nodeId, inputs, copyOutputsFrom } = event.change;
4563
- if (event.dry) {
4564
- await runner.update(event.def, { dry: true });
4565
- if (inputs) {
4566
- await runner.setInputs(nodeId, inputs, { dry: true });
4567
- }
4568
- if (copyOutputsFrom) {
4569
- await runner.copyOutputs(copyOutputsFrom, nodeId, { dry: true });
4570
- }
4571
- }
4572
- else {
4573
- await runner.update(event.def, { dry: !!inputs });
4574
- if (inputs) {
4575
- await runner.setInputs(nodeId, inputs, { dry: false });
4576
- }
4577
- }
4578
- }
4579
- else if (event.change?.type !== "setInputs" && event.change?.type !== "updateResolvedHandles") {
4580
- await runner.update(event.def, { dry: event.dry });
4581
- }
4582
- if (event.commit) {
4583
- await saveUiRuntimeMetadata(wb, runner);
4584
- const history = await runner.commit(event.reason ?? reason).catch((err) => {
4585
- console.error("[WorkbenchContext] Error committing after update:", err);
4586
- return undefined;
4587
- });
4588
- if (history) {
4589
- wb.setHistory(history);
4590
- }
4553
+ if (event.change?.type === "batch") {
4554
+ await applyBatchGraphChange(event);
4555
+ await commitGraphChange(event.commit, event.reason ?? "batch", "[WorkbenchContext] Error committing batch:");
4556
+ return;
4591
4557
  }
4558
+ const reason = getGraphReason(event);
4559
+ await applySingleGraphChange(event);
4560
+ await commitGraphChange(event.commit, event.reason ?? reason, "[WorkbenchContext] Error committing:");
4592
4561
  }
4593
4562
  catch (err) {
4594
- console.error("[WorkbenchContext] Error updating graph:", err);
4563
+ console.error("[WorkbenchContext] Error processing graph change:", err);
4595
4564
  }
4596
4565
  });
4597
4566
  const offWbSetValidation = wb.on("validationChanged", (r) => setValidation(r));