Static ReadonlypropertiesElement property declarations.
All four "data" properties (schema, value, resolver,
widgets) carry attribute: false: Custom Element attributes
are strings, and these payloads (an arbitrary Zod schema, an
arbitrary JS value, a resolver function map, a widget tag map)
cannot round-trip through attribute serialisation. Set them via
direct property assignment.
readOnly is a boolean attribute (and reflects to DOM) so the
common "render read-only view" case is reachable from plain
HTML markup (<schema-component readonly></schema-component>).
The capitalisation is readOnly on the property and readonly
on the attribute — matching the HTML readonly attribute on
<input> / <textarea>.
Reactive property declarations. Each field is declared with
declare (no runtime emit) so Lit's static properties
accessors are not shadowed by class-field initialisers. Default
values are seeded in the constructor.
ProtectedmakeBuild the recursive renderChild closure threaded through every
container renderer.
ProtectedrenderDispatch a single walked field through the resolver, widget
registry, and recursion limit. Parallel to
renderField in react/SchemaComponent.tsx.
Lit Custom Element for editable schema-driven UI.
Tag:
<schema-component>(default) or<{prefix}schema-component>(whenregisterSchemaComponents(prefix)is called).Required: call registerSchemaComponents once at module setup before instantiating this element in HTML markup, otherwise none of the per-type
<sc-*>children will upgrade and the tree will render as unknown elements.