FlowCraft is a drag-and-drop canvas editor block for OutSystems 11 Reactive Web apps. Use it to build flows, diagrams, resumes, UI mock-ups and mind maps, then save them as JSON or export them as PNG.
FlowCraft needs OutSystems 11 Reactive Web, OutSystems UI (for its InlineSVG block) and a desktop browser. The canvas is at least 1200px wide and scrolls inside its container on smaller screens.
These libraries are bundled with the component, so there is nothing else to install:
Library
Used for
Moveable
Drag, resize, scale, rotate, snapping
Selecto
Click and drag-box selection
hotkeys-js
Keyboard shortcuts
html2canvas
PNG export
Add the block to a screen inside a container that has a fixed height; that is the only required setup.
height: 760px;
InitialStateJSON
ExportedJSON
The block has two optional inputs and one event. The parameter name CustomeDiv is kept as-is for backward compatibility.
CustomeDiv
Name
Kind
Type
Description
Input (optional)
Text
Canvas state to load, in the format produced by ExportedJSON. Applied when the editor is ready and again whenever the value changes. Invalid JSON is rejected and the current canvas is kept.
HTML added when the user clicks Add custom element in the toolbar. Scripts, iframes, inline on* handlers and javascript: URLs are removed.
on*
javascript:
Event
JSON (Text)
Triggered when the user clicks Export JSON. Store JSON and pass it back through InitialStateJSON to restore the diagram.
JSON
Save the JSON from the ExportedJSON event, then bind it to InitialStateJSON to load it again.
OnCanvasExported
GetDiagram.List.Current.Diagram.StateJSON
InitialStateJSON only re-applies when its value changes. To reload identical JSON, add a toggled trailing space:
CanvasJSON = SavedJSON + If(ReloadToggle, " ", "") ReloadToggle = not ReloadToggle
{ "elements": [ { "id": "1", "html": "<div class=\"editable\">Editable Text</div>", "left": "100px", "top": "100px", "width": "280px", "height": "240px", "transform": "rotate(15deg)", "zIndex": "2" } ], "connections": [ { "from": "1", "to": "2" } ] }
id
connections
elements
html
Every toolbar control shows its name on hover. Text formatting applies to the text currently being edited; size and layer actions apply to the selection.
Control
Action
Colour picker
Text colour of the element being edited; also the fill colour for new shapes
Font family, Font size
Applied to the text being edited
Add Shape menu
Square, Rectangle, Circle, Oval, Triangle Up, Triangle Down, Diamond, Pentagon, Hexagon, Star, Arrow Right, Parallelogram, Capsule
Undo, Redo, Clear canvas
History controls; Clear asks for confirmation
Add card (+)
Card with image, title and description
Add custom element
Adds the HTML from CustomeDiv
Add text
Editable text box
Add shape
Filled shape in the selected colour
Add image
Placeholder image
Connect two elements
Click it, then click the source and target elements
Duplicate, Delete
Applies to the selection
Bring forward, Send backward
Changes stacking order
Export JSON
Triggers the ExportedJSON event
Export PNG
Downloads file.png of the canvas
file.png
Bold, Italic, Align left / center / right
Increase size, Decrease size
Resizes the selection by 20px
How
Select
Click an element, or drag a box on an empty part of the canvas
Multi-select
Shift + click
Move, resize, rotate
Use the handles around the selection
Edit text
Double-click the text; click outside it to finish
Change an image URL
Double-click the image
Upload an image
Right-click the image
Select from layers
Click an entry in the Layers panel
Shortcuts are ignored while typing in inputs, text areas, dropdowns or text being edited.
Keys
Delete / Backspace
Delete selection
Ctrl/Cmd + D
Duplicate selection
Ctrl/Cmd + Z
Undo
Ctrl/Cmd + Y
Redo
Arrow keys
Move selection 1px
Shift + Arrow keys
Move selection 10px
All FlowCraft styles are scoped to .flowcraft-root and don't affect the rest of your app. Override these CSS variables in your theme to change its look.
.flowcraft-root
Variable
Default
Controls
--fc-accent
#2563eb
Selection handles, layer highlight, focus outlines, scrollbars
--fc-accent-2
#4f46e5
Second gradient colour
--fc-toolbar-bg
#ffffff
Toolbar background
--fc-canvas-bg
Canvas background
--fc-wrapper-bg
Light blue gradient
Area around the canvas
--fc-border
#e5e7eb
Toolbar border
--fc-text
#111827
Default text colour
.my-editor .flowcraft-root { --fc-accent: #e11d48; --fc-accent-2: #7f1d1d; --fc-wrapper-bg: linear-gradient(180deg, #1a1a22, #0f0f14); }
HTML from CustomeDiv and from imported JSON is sanitised before it reaches the canvas.
<script>
<iframe>
<object>
<embed>
<link>
<meta>
<base>
picsum.photos
Problem
Fix
Editor not visible or has no height
Put the block in a container with a fixed height.
InitialStateJSON doesn't reload
The value didn't change; use the toggle in Saving and restoring a diagram.
Diagram didn't load
The JSON is invalid; check the browser console for FlowCraft: invalid JSON.
FlowCraft: invalid JSON
Image missing from the PNG
The image server blocks cross-origin requests; upload the image instead.
Keyboard shortcuts don't work
Click the canvas first; shortcuts are ignored while a text field has focus.
The FlowCraftDemo app shows every feature:
FlowCraft is a powerful drag-and-drop visual editor for OutSystems that allows users to create diagrams, workflows, resumes, UI layouts, mind maps, and custom visual structures dynamically inside applications.
The component is delivered as a Web Block containing a fully interactive canvas editor with support for:
Simply drag the FlowCraft web block into your screen.
The component automatically initializes the editor and toolbar.
Used to load a previously saved editor state into the canvas.
{ "elements": [], "connections": [] } 2. CustomeDivTypeTextDescriptionAllows rendering fully custom HTML blocks directly inside the FlowCraft canvas.Example<div class="editable"> <h2>Resume Title</h2> <p>Custom HTML Content</p> </div>
{ "elements": [], "connections": [] }
Allows rendering fully custom HTML blocks directly inside the FlowCraft canvas.
<div class="editable"> <h2>Resume Title</h2> <p>Custom HTML Content</p> </div>