blockly-fluid
v1.0.2
Published
A flexible proxy wrapper for Blockly blocks.
Maintainers
Readme
Blockly Dynamic Blocks Proxy 🎛️✨
A flexible Proxy wrapper for Blockly blocks that lets you define dynamic inputs, layouts, fields, and shadows with ease! Perfect for creating modular, reusable blocks that can adapt at runtime.
Features 🚀
Dynamic Inputs 🔌 Define
inputswith optionalchecktypes andshadow DOM— all can be functions for runtime evaluation.Flexible Layouts 🧩 Use
layoutarrays to arrange your block fields. Tokens can be functions or strings.Custom Fields ✏️ Supports:
text→FieldTextInputmultiline→FieldMultilineInputdropdown→FieldDropdown- Default → translated text
Dynamic Statements 📑
statementslabels can be functions for runtime flexibility.Previous / Next / Output / Tooltip / Color 🎨 All block properties can be static values or functions.
Automatic Shadow DOM 🌟 Automatically adds shadow DOM to inputs with
"String"or"Number"checks.Translation Ready 🌍 Built-in support for multi-language translations with placeholders.
Usage 💡
const Blockly = require("blockly");
const Blocks = require("blockly-fluid")(Blockly);
Blocks["controls_repeat_forever"] = {
layout: ["repeat forever", "DO"],
statements: {
DO: {
label: () => Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] || "do"
}
},
previous: true,
next: true,
tooltip: "Repeat the enclosed blocks forever"
};Features in action:
- Dynamic field labels ✅
- Custom multiline input ✅
- Shadow DOM automatically set ✅
- Runtime evaluated inputs, statements, colors, tooltips ✅
Example Block 🧱
Blocks["metadata_set_description"] = {
color: "#565353",
layout: ["set description", "DESCRIPTION"],
fields: {
DESCRIPTION: {
type: "multiline",
default: "Enter description..."
}
},
tooltip: "Metadata block to specify command's description."
};Supported Field Types ✨
| Type | Blockly Field |
| ----------- | ------------------- |
| text | FieldTextInput |
| multiline | FieldMultilineInput |
| dropdown | FieldDropdown |
| Default | Translated text |
Why use this module? 💖
- Save time creating complex Blockly blocks
- All block properties can be dynamic functions
- Built-in shadow DOM support
- Built-in translation handling
- Works for both static and runtime-generated blocks
License 📄
MIT License — free to use, modify, and distribute!
Made with ❤️ (and probably caffeine) by Dinoscape
