feat(blockly): Phase A foundation - Blockly setup, custom blocks, and generators

- Install blockly package (~500KB)
- Create BlocklyWorkspace React component with serialization
- Define custom Noodl blocks (Input/Output, Variables, Objects, Arrays)
- Implement JavaScript code generators for all custom blocks
- Add theme-aware styling for Blockly workspace
- Export initialization functions for easy integration

Part of TASK-012: Blockly Visual Logic Integration
This commit is contained in:
Richard Osborne
2026-01-11 13:30:13 +01:00
parent 6f08163590
commit 554dd9f3b4
21 changed files with 4670 additions and 83 deletions

View File

@@ -132,11 +132,18 @@ const SimpleJavascriptNode = {
}
}
// Create Noodl API and augment with Inputs/Outputs for backward compatibility
// Legacy code used: Noodl.Outputs.foo = 'bar'
// New code uses: Outputs.foo = 'bar' (direct parameter)
const noodlAPI = JavascriptNodeParser.createNoodlAPI(this.nodeScope.modelScope);
noodlAPI.Inputs = inputs;
noodlAPI.Outputs = outputs;
try {
await func.apply(this._internal._this, [
inputs,
outputs,
JavascriptNodeParser.createNoodlAPI(this.nodeScope.modelScope),
noodlAPI,
JavascriptNodeParser.getComponentScopeForNode(this)
]);
} catch (e) {