⚠️ STRICT USAGE RULES — MANDATORY FOR ALL CODE GENERATION
These rules are non-negotiable and must be followed for every code generation request.
Rule A — Use Only Provided Reference Files
- Always read
references/getting-started.md for every request
- Read additional reference files only if they match the user's query (see Navigation Guide below)
- No external knowledge allowed:
- ❌ Do NOT use internet documentation
- ❌ Do NOT use training-data assumptions about Syncfusion APIs
- ❌ Do NOT reference older EJ1 APIs or deprecated syntax
- ✅ If a feature cannot be confirmed from reference files, apply Rule B
Rule B — No Guessing, No Inference
If a feature, property, API, or behavior is not explicitly documented in the reference files:
You must NOT:
- Invent class properties, subclasses, or constructor overloads
- Infer JavaScript/TypeScript callback signatures or method names
- Assume module injections exist beyond those documented
- Generalize from other Syncfusion components
- Use deprecated or undocumented shape types
Instead, respond with:
⚠️ NOT DOCUMENTED: [feature name] is not covered in the reference files.
Skipping this feature to avoid generating incorrect code.
Rule C — Enforce Required Module Injections
Before generating code for these features, always include the corresponding injection:
| Feature |
Required Injection |
| Entity Relationship Diagrams |
Diagram.Inject(ErDiagrams) |
| BPMN diagrams |
Diagram.Inject(BpmnDiagrams) |
| Export / Print |
Diagram.Inject(PrintAndExport) |
| Mind Map layout |
Diagram.Inject(MindMap) |
| Complex Hierarchical layout |
Diagram.Inject(ComplexHierarchicalTree) |
| Hierarchical or Organizational layout |
Diagram.Inject(HierarchicalTree) |
| UML Sequence Diagrams |
No additional injection required |
| Undo/Redo |
Diagram.Inject(UndoRedo) |
| Line Distribution |
Diagram.Inject(LineDistribution) |
| Line Routing |
Diagram.Inject(LineRouting) |
| Mermaid Syntax |
Diagram.Inject(FlowchartLayout, DataBinding) or Diagram.Inject(MindMap, DataBinding) |
Do NOT assume any other injections exist unless confirmed in reference files.
Diagram Component Overview
The Diagram control is a feature-rich component for creating interactive, editable diagrams in TypeScript/JavaScript applications.
Core Elements
| Element |
Purpose |
Common Properties |
| Nodes |
Graphical shapes representing entities |
id, offsetX, offsetY, width, height, shape, style |
| Connectors |
Lines/arrows connecting nodes |
id, sourceID, targetID, type, style, targetDecorator |
| Labels |
Text annotations on nodes/connectors |
content, font, alignment, offset |
Key Features
✅ Automatic Layout (flowchart, hierarchical, organizational)
✅ Data Binding (JSON, parent-child relationships)
✅ Interactive Tools (drawing, selection, pan, zoom, drag-drop)
✅ Styling (CSS customization, themes, conditional styles)
✅ Serialization (save/load as JSON)
✅ Export (PNG, JPG, SVG, PDF)
✅ User Interactions (events, constraints, undo/redo)
Navigation Guide
Always read references/getting-started.md first, then read only files relevant to the request.
| Reference File |
Read When the Query Involves |
| 📄 getting-started.md |
Every request — Package installation, imports, first diagram, initialization |
| 📄 nodes-and-shapes.md |
Creating/styling nodes, shapes, positioning, BPMN/UML shapes, annotations |
| 📄 connectors-and-connections.md |
Lines (Straight/Orthogonal/Bezier), arrows, routing, sourceID/targetID, segments |
| 📄 labels-and-annotations.md |
Text labels, font, alignment, hyperlinks on nodes/connectors |
| 📄 ports.md |
Connection points, port positioning, port constraints |
| 📄 shapes-and-styles.md |
Flow/Basic/Path/Image/HTML/Native shapes, fill, stroke, gradient, opacity |
| 📄 data-binding-and-loading.md |
DataSourceSettings, JSON loading, parent-child mapping, dynamic updates |
| 📄 layout-and-automation.md |
Hierarchical, org chart, mind map, radial, symmetric layouts, orientation |
| 📄 bpmn-diagrams.md |
BPMN module injection, events, gateways, activities, data objects, annotations |
| 📄 uml-diagrams.md |
UML class diagrams, UML sequence diagrams, classifiers, relationships, participants, messages, fragments |
| 📄 entity-relationship-diagrams.md |
ER entities, entity fields, data types, primary/foreign keys, relationships, Crow's Foot multiplicity, ERD styling |
| 📄 swimlanes.md |
Swimlane structure, lanes, phases, header config, interaction |
| 📄 groups-and-containers.md |
Grouping nodes, Canvas/Stack/Grid containers, nesting, boundaries |
| 📄 symbol-palette.md |
SymbolPaletteComponent, drag-drop, categories, custom symbols, search |
| 📄 interaction-and-tools.md |
Drawing tools, selection, constraints, pan/zoom, events, undo/redo |
| 📄 styling-and-appearance.md |
CSS theming, colors, fonts, accessibility, responsive design |
| 📄 serialization-and-export.md |
Save/load diagrams as JSON, prevent defaults, detect unsaved changes, export to image/PDF/Visio, Mermaid syntax, uploader support |
| 📄 diagram-settings.md |
Layers, virtualization, grid, ruler, scroll, page settings, tooltip, localization |
| 📄 advanced-features.md |
Undo/redo, custom commands, toolbars, performance optimization |
Quick Start
1. Install Package
npm install @syncfusion/ej2-diagrams
2. Import Required Modules
import { Diagram, NodeModel, ConnectorModel } from '@syncfusion/ej2-diagrams';
3. Create Diagram with Nodes & Connectors
// Define nodes
let nodes: NodeModel[] = [
{
id: 'node1',
offsetX: 250,
offsetY: 250,
width: 100,
height: 100,
style: { fill: '#6BA5D7' },
annotations: [{ content: 'Start' }]
},
{
id: 'node2',
offsetX: 400,
offsetY: 250,
width: 100,
height: 100,
style: { fill: '#FFD700' },
annotations: [{ content: 'Process' }]
}
];
// Define connector between nodes
let connectors: ConnectorModel[] = [
{
id: 'connector1',
sourceID: 'node1',
targetID: 'node2',
style: { strokeColor: '#6BA5D7' },
targetDecorator: { shape: 'Arrow' }
}
];
// Create diagram
let diagram: Diagram = new Diagram({
width: '100%',
height: '500px',
nodes: nodes,
connectors: connectors
});
diagram.appendTo('#diagram-container');
HTML:
<div id="diagram-container"></div>
Common Patterns
Flowchart Pattern
Creating a simple flowchart with decision points:
- Use rectangle shapes for processes
- Use diamond shapes for decisions
- Connect with arrows
- Apply Flowchart auto-layout
Organizational Chart Pattern
Creating hierarchical structures:
- Use data binding with parent-child relationships
- Apply HierarchicalTree layout
- Define employee nodes with names/photos
- Show reporting relationships via connectors
Network Diagram Pattern
Creating system architecture diagrams:
- Use predefined shapes (server, database, client)
- Connect with labeled lines showing data flow
- Organize using grid-based positioning
- Add icons and styling for clarity
Interactive Diagram Pattern
Building user-editable diagrams:
- Enable drawing tools
- Allow node/connector creation and deletion
- Add context menus for operations
- Implement save/load with serialization
- Handle user events (selection, drag, resize)
When to Use This Skill
✅ Creating any diagram type in TypeScript/JavaScript
✅ Building flowcharts, process flows, or hierarchies
✅ Implementing BPMN or UML diagrams
✅ Configuring node/connector shapes, styles, annotations
✅ Setting up automatic layouts
✅ Adding symbol palettes for drag-and-drop
✅ Binding diagram data from APIs or JSON
✅ Exporting diagrams or printing
✅ Enabling drawing tools, undo/redo, layers
Do NOT use for: Simple static charts or graphs (use Chart component), data tables (use Grid component)
Key TypeScript Interfaces
| Interface |
Purpose |
Key Properties |
NodeModel |
Node configuration |
id, offsetX, offsetY, width, height, shape, style, annotations |
ConnectorModel |
Connector configuration |
id, sourceID, targetID, type, style, targetDecorator |
ShapeModel |
Shape definition |
type (Basic/BPMN/UML/Flow), shape name |
AnnotationModel |
Label on node/connector |
content, font, alignment, offset |
PortModel |
Connection point |
id, offset, shape, visibility, constraints |
Common Shape Types
Flow Shapes
Terminator, Process, Decision, Document, DirectData, MultiDocument, PreDefinedProcess, Delay, Annotation, ManualOperation, ManualInput, Card, Or, SummingJunction, Extract, Merge, Sort, OffPageReference
Usage:
shape: { type: 'Flow', shape: 'Process' }
Basic Shapes
Rectangle, Ellipse, Triangle, Pentagon, Hexagon, Heptagon, Octagon, Star, Cross, Diamond, CylindricalShape, Trapezoid, Parallelogram, Rhombus
Usage:
shape: { type: 'Basic', shape: 'Rectangle' }
1---2name: syncfusion-javascript-diagram3description: Create and edit visual diagrams with Syncfusion JavaScript Diagram (flowcharts, BPMN, swimlanes, UML, org charts, network topologies). Trigger for diagram rendering, node/connector modeling, layouts, data binding, palettes, interactive tools, exporting, and workflow visualization tasks.4---56# ⚠️ STRICT USAGE RULES — MANDATORY FOR ALL CODE GENERATION78These rules are **non-negotiable** and must be followed for **every** code generation request.910## Rule A — Use Only Provided Reference Files11121. **Always read** `references/getting-started.md` for every request132. Read **additional** reference files **only if they match the user's query** (see Navigation Guide below)143. **No external knowledge** allowed:15 - ❌ Do NOT use internet documentation16 - ❌ Do NOT use training-data assumptions about Syncfusion APIs17 - ❌ Do NOT reference older EJ1 APIs or deprecated syntax18 - ✅ If a feature cannot be confirmed from reference files, apply Rule B1920## Rule B — No Guessing, No Inference2122If a feature, property, API, or behavior is **not explicitly documented** in the reference files:2324**You must NOT:**25- Invent class properties, subclasses, or constructor overloads26- Infer JavaScript/TypeScript callback signatures or method names27- Assume module injections exist beyond those documented28- Generalize from other Syncfusion components29- Use deprecated or undocumented shape types3031**Instead, respond with:**32```33⚠️ NOT DOCUMENTED: [feature name] is not covered in the reference files.34Skipping this feature to avoid generating incorrect code.35```3637## Rule C — Enforce Required Module Injections3839Before generating code for these features, **always include** the corresponding injection:4041| Feature | Required Injection |42|---|---|43| Entity Relationship Diagrams | `Diagram.Inject(ErDiagrams)` |44| BPMN diagrams | `Diagram.Inject(BpmnDiagrams)` |45| Export / Print | `Diagram.Inject(PrintAndExport)` |46| Mind Map layout | `Diagram.Inject(MindMap)` |47| Complex Hierarchical layout | `Diagram.Inject(ComplexHierarchicalTree)` |48| Hierarchical or Organizational layout | `Diagram.Inject(HierarchicalTree)` |49| UML Sequence Diagrams | No additional injection required |50| Undo/Redo | `Diagram.Inject(UndoRedo)` |51| Line Distribution | `Diagram.Inject(LineDistribution)` |52| Line Routing | `Diagram.Inject(LineRouting)` |53| Mermaid Syntax | `Diagram.Inject(FlowchartLayout, DataBinding)` or `Diagram.Inject(MindMap, DataBinding)` |5455Do **NOT** assume any other injections exist unless confirmed in reference files.5657---5859# Diagram Component Overview6061The Diagram control is a feature-rich component for creating interactive, editable diagrams in TypeScript/JavaScript applications.6263## Core Elements6465| Element | Purpose | Common Properties |66|---|---|---|67| **Nodes** | Graphical shapes representing entities | `id`, `offsetX`, `offsetY`, `width`, `height`, `shape`, `style` |68| **Connectors** | Lines/arrows connecting nodes | `id`, `sourceID`, `targetID`, `type`, `style`, `targetDecorator` |69| **Labels** | Text annotations on nodes/connectors | `content`, `font`, `alignment`, `offset` |7071## Key Features7273✅ Automatic Layout (flowchart, hierarchical, organizational) 74✅ Data Binding (JSON, parent-child relationships) 75✅ Interactive Tools (drawing, selection, pan, zoom, drag-drop) 76✅ Styling (CSS customization, themes, conditional styles) 77✅ Serialization (save/load as JSON) 78✅ Export (PNG, JPG, SVG, PDF) 79✅ User Interactions (events, constraints, undo/redo) 8081---8283# Navigation Guide8485**Always read `references/getting-started.md` first**, then read only files relevant to the request.8687| Reference File | Read When the Query Involves |88|---|---|89| 📄 [getting-started.md](references/getting-started.md) | **Every request** — Package installation, imports, first diagram, initialization |90| 📄 [nodes-and-shapes.md](references/nodes-and-shapes.md) | Creating/styling nodes, shapes, positioning, BPMN/UML shapes, annotations |91| 📄 [connectors-and-connections.md](references/connectors-and-connections.md) | Lines (Straight/Orthogonal/Bezier), arrows, routing, sourceID/targetID, segments |92| 📄 [labels-and-annotations.md](references/labels-and-annotations.md) | Text labels, font, alignment, hyperlinks on nodes/connectors |93| 📄 [ports.md](references/ports.md) | Connection points, port positioning, port constraints |94| 📄 [shapes-and-styles.md](references/shapes-and-styles.md) | Flow/Basic/Path/Image/HTML/Native shapes, fill, stroke, gradient, opacity |95| 📄 [data-binding-and-loading.md](references/data-binding-and-loading.md) | DataSourceSettings, JSON loading, parent-child mapping, dynamic updates |96| 📄 [layout-and-automation.md](references/layout-and-automation.md) | Hierarchical, org chart, mind map, radial, symmetric layouts, orientation |97| 📄 [bpmn-diagrams.md](references/bpmn-diagrams.md) | BPMN module injection, events, gateways, activities, data objects, annotations |98| 📄 [uml-diagrams.md](references/uml-diagrams.md) | UML class diagrams, UML sequence diagrams, classifiers, relationships, participants, messages, fragments |99| 📄 [entity-relationship-diagrams.md](references/entity-relationship-diagrams.md) | ER entities, entity fields, data types, primary/foreign keys, relationships, Crow's Foot multiplicity, ERD styling |100| 📄 [swimlanes.md](references/swimlanes.md) | Swimlane structure, lanes, phases, header config, interaction |101| 📄 [groups-and-containers.md](references/groups-and-containers.md) | Grouping nodes, Canvas/Stack/Grid containers, nesting, boundaries |102| 📄 [symbol-palette.md](references/symbol-palette.md) | SymbolPaletteComponent, drag-drop, categories, custom symbols, search |103| 📄 [interaction-and-tools.md](references/interaction-and-tools.md) | Drawing tools, selection, constraints, pan/zoom, events, undo/redo |104| 📄 [styling-and-appearance.md](references/styling-and-appearance.md) | CSS theming, colors, fonts, accessibility, responsive design |105| 📄 [serialization-and-export.md](references/serialization-and-export.md) | Save/load diagrams as JSON, prevent defaults, detect unsaved changes, export to image/PDF/Visio, Mermaid syntax, uploader support |106| 📄 [diagram-settings.md](references/diagram-settings.md) | Layers, virtualization, grid, ruler, scroll, page settings, tooltip, localization |107| 📄 [advanced-features.md](references/advanced-features.md) | Undo/redo, custom commands, toolbars, performance optimization |108109---110111# Quick Start112113## 1. Install Package114115```bash116npm install @syncfusion/ej2-diagrams117```118119## 2. Import Required Modules120121```ts122import { Diagram, NodeModel, ConnectorModel } from '@syncfusion/ej2-diagrams';123```124125## 3. Create Diagram with Nodes & Connectors126127```ts128// Define nodes129let nodes: NodeModel[] = [130 {131 id: 'node1',132 offsetX: 250,133 offsetY: 250,134 width: 100,135 height: 100,136 style: { fill: '#6BA5D7' },137 annotations: [{ content: 'Start' }]138 },139 {140 id: 'node2',141 offsetX: 400,142 offsetY: 250,143 width: 100,144 height: 100,145 style: { fill: '#FFD700' },146 annotations: [{ content: 'Process' }]147 }148];149150// Define connector between nodes151let connectors: ConnectorModel[] = [152 {153 id: 'connector1',154 sourceID: 'node1',155 targetID: 'node2',156 style: { strokeColor: '#6BA5D7' },157 targetDecorator: { shape: 'Arrow' }158 }159];160161// Create diagram162let diagram: Diagram = new Diagram({163 width: '100%',164 height: '500px',165 nodes: nodes,166 connectors: connectors167});168169diagram.appendTo('#diagram-container');170```171172**HTML:**173```html174<div id="diagram-container"></div>175```176177---178179# Common Patterns180181## Flowchart Pattern182Creating a simple flowchart with decision points:183- Use rectangle shapes for processes184- Use diamond shapes for decisions185- Connect with arrows186- Apply Flowchart auto-layout187188## Organizational Chart Pattern189Creating hierarchical structures:190- Use data binding with parent-child relationships191- Apply HierarchicalTree layout192- Define employee nodes with names/photos193- Show reporting relationships via connectors194195## Network Diagram Pattern196Creating system architecture diagrams:197- Use predefined shapes (server, database, client)198- Connect with labeled lines showing data flow199- Organize using grid-based positioning200- Add icons and styling for clarity201202## Interactive Diagram Pattern203Building user-editable diagrams:204- Enable drawing tools205- Allow node/connector creation and deletion206- Add context menus for operations207- Implement save/load with serialization208- Handle user events (selection, drag, resize)209210---211212## When to Use This Skill213214✅ Creating any diagram type in TypeScript/JavaScript 215✅ Building flowcharts, process flows, or hierarchies 216✅ Implementing BPMN or UML diagrams 217✅ Configuring node/connector shapes, styles, annotations 218✅ Setting up automatic layouts 219✅ Adding symbol palettes for drag-and-drop 220✅ Binding diagram data from APIs or JSON 221✅ Exporting diagrams or printing 222✅ Enabling drawing tools, undo/redo, layers 223224**Do NOT use for:** Simple static charts or graphs (use Chart component), data tables (use Grid component)225226---227228## Key TypeScript Interfaces229230| Interface | Purpose | Key Properties |231|---|---|---|232| `NodeModel` | Node configuration | `id`, `offsetX`, `offsetY`, `width`, `height`, `shape`, `style`, `annotations` |233| `ConnectorModel` | Connector configuration | `id`, `sourceID`, `targetID`, `type`, `style`, `targetDecorator` |234| `ShapeModel` | Shape definition | `type` (Basic/BPMN/UML/Flow), `shape` name |235| `AnnotationModel` | Label on node/connector | `content`, `font`, `alignment`, `offset` |236| `PortModel` | Connection point | `id`, `offset`, `shape`, `visibility`, `constraints` |237238---239240## Common Shape Types241242### Flow Shapes243`Terminator`, `Process`, `Decision`, `Document`, `DirectData`, `MultiDocument`, `PreDefinedProcess`, `Delay`, `Annotation`, `ManualOperation`, `ManualInput`, `Card`, `Or`, `SummingJunction`, `Extract`, `Merge`, `Sort`, `OffPageReference`244245**Usage:**246```ts247shape: { type: 'Flow', shape: 'Process' }248```249250### Basic Shapes251`Rectangle`, `Ellipse`, `Triangle`, `Pentagon`, `Hexagon`, `Heptagon`, `Octagon`, `Star`, `Cross`, `Diamond`, `CylindricalShape`, `Trapezoid`, `Parallelogram`, `Rhombus`252253**Usage:**254```ts255shape: { type: 'Basic', shape: 'Rectangle' }256```