1.5 KiB
1.5 KiB
| id | title | status | assignee | created_date | labels | milestone | dependencies | references | priority | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TASK-41 | Build dynamic Shape Registry to replace hardcoded switch statements | To Do | 2026-02-18 20:06 |
|
m-1 |
|
high |
Description
Replace the 170-line switch statement in canvas.html's createShapeElement() and the 100-line type-switch in community-sync.ts's #updateShapeElement() with a dynamic ShapeRegistry.
Create lib/shape-registry.ts with:
- ShapeRegistration interface (tagName, elementClass, defaults, category, portDescriptors, eventDescriptors)
- ShapeRegistry class with register(), createElement(), updateElement(), listAll(), getByCategory()
- Each folk-*.ts gets a static
registrationproperty and staticfromData()method
This is the prerequisite for all other ecosystem features (pipes, events, groups, nesting, embedding).
Acceptance Criteria
- #1 ShapeRegistry class created with register/createElement/updateElement methods
- #2 All 30+ folk-*.ts shapes have static registration property
- #3 canvas.html switch statement replaced with registry.createElement()
- #4 community-sync.ts type-switch replaced with registry.updateElement()
- #5 All existing shapes still create and sync correctly
- #6 No regression in shape creation or remote sync