Open Ekhorn opened 1 week ago
The concept of decorators and allowed descendants, should maybe change to just descendants as decorators threaten to reintroduce what components already inherently do.
What I really meant to bring up by decorators, is more or less where descendants are allowed and in what way.
The default theme itself must also be configurable as per https://github.com/Ekhorn/spaced/issues/4
Missing
Default controls such as: drag & dropping a descendant into any component (that allows) a descendant, deleting a component at any level, adding a component directly inside another component.
How to interactively wire components to states / operations.
Should consider menu's such as context-menu's.
Description
The interactive rendering engine would be designed to be as close to HTML elements as possible and their properties. The item schema will contain the component, and it's attributes. All components can have custom styles, but inherit the default configured styles from the users' settings.
The engine should allow dragging and dropping components based on a grid, and resizing them relative to the columns and rows present. To add a component a grid cell can be clicked.
All components have a read-only variant. Most components have a write variant as well which can be hooked up to any exposed internal operation or (reactive) state.
Some components could have additional decorators, like inputs to place an icon at the start or end inside the input box. This may change to something flexible later on, however it does bring forward that custom SVGs should also be configurable.
Any component can be composed together with others to create a template, these templates should be reusable.
Additionally some very custom components may be implemented through some form of plugin system if none of HTML elements individually or combined, can solve the needed use case.
The engine can be very useful as standalone HTML generator. Creating a library out of it, and being able to integrate either it as runtime or generate static HTML would be ideal (maybe even a hybrid).
Components
<canvas>
or<img>
tag can do.Requirements
Ref #24, #25