Add a new Component-based API and a much more flexible rendering system #61
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ElementRenderer
class with a new, general-purposeRenderer
struct, and by refactoring theNode
enum into a struct that carries a free-formrendering
closure. All of these changes are pure refactors - they don't affect the public API at all.Component
API that enables HTML<body>
components to be defined in a very SwiftUI-like way. The new API ships with lots of built-in implementations that map to commonly used elements (such asdiv
,a
,ul
, and so on), and enables the API user to easily define their own components as well. It also features an environment API (similar to the one that SwiftUI offers), the ability to apply modifiers to components, and complete interoperability with the existingNode
-based API.Node
value was being switched on. Since it's now no longer an enum, that will no longer work, but it's highly unlikely that Plot's API has been used this way by any API user.Component
API.