Architecture
┈┈Dashed lines indicate non-reactive relationships.──Solid lines indicate reactive relationships.━━Heavy lines indicate main reactive relationships.
Key points:
- Watcher and Validator observe your model, and Form and FormField utilize them.
- Form has no reactive dependencies on FormField/FormBinding.
- State synchronization is only broadcast from Form to FormField (and Watcher).
graph TB %%subgraph external %% Object((Object)) %%end subgraph core package nested(["@nested"]) StandardNestedFetcher -.-> |retrieves| nested %%StandardNestedFetcher -.-> |reads| Object watch(["@watch, @watch.ref, @unwatch"]) Watcher -.-> |retrieves| watch Watcher -.-> |uses| StandardNestedFetcher %%Watcher --> |observes| Object Validator Validator --> |delegates| AsyncJob["AsyncJob<br>(internal)"] Validator -.-> |uses| StandardNestedFetcher %%Validator --> |observes| Object watch & Watcher & nested & StandardNestedFetcher -.-> |uses| AnnotationProcessor["AnnotationProcessor<br>(internal)"] end subgraph form package Form -.-> |manages/updates| FormField Form -.-> |manages| FormBinding["<<interface>><br>FormBinding"] %%FormBinding -.-> |references| Form & FormField Form ==> Watcher FormField & Form ==> Validator Form -.-> |uses| StandardNestedFetcher Form --> |delegates| Submission["Submission<br>(internal)"] end subgraph react package Hooks --> |updates| Form Bindings -.-> |implements| FormBinding Bindings ==> Form & FormField end