wijjit.core.element_registry.ElementRegistry

class wijjit.core.element_registry.ElementRegistry[source]

Registry mapping VNode types to Element factories.

The ElementRegistry maintains a mapping from VNode type strings (like “TextInput”, “Button”) to Element class constructors. During reconciliation, when a new element needs to be created, the registry provides the appropriate factory function.

Variables:

_factories (dict) – Mapping of type name to Element class/factory

Examples

>>> registry = ElementRegistry()
>>> from wijjit.core.vdom import VNode
>>> vnode = VNode.create("Button", props={"label": "OK"})
>>> element = registry.create_element(vnode)
>>> element.__class__.__name__
'Button'
__init__()[source]
Return type:

None

Methods

__init__()

create_element(vnode)

Create an Element instance from a VNode.

get_factory(type_name)

Get the factory for a type name.

has_type(type_name)

Check if a type is registered.

list_types()

List all registered type names.

register(type_name, factory)

Register a custom element type.

unregister(type_name)

Unregister an element type.

register(type_name, factory)[source]

Register a custom element type.

Parameters:
  • type_name (str) – VNode type name to register

  • factory (type) – Element class or factory function

Return type:

None

Examples

>>> registry = ElementRegistry()
>>> class CustomWidget(Element):
...     pass
>>> registry.register("CustomWidget", CustomWidget)
unregister(type_name)[source]

Unregister an element type.

Parameters:

type_name (str) – VNode type name to unregister

Raises:

KeyError – If type_name is not registered

Return type:

None

has_type(type_name)[source]

Check if a type is registered.

Parameters:

type_name (str) – VNode type name to check

Returns:

True if type is registered

Return type:

bool

create_element(vnode)[source]

Create an Element instance from a VNode.

Parameters:

vnode (VNode) – Virtual node describing the element

Returns:

New Element instance

Return type:

Element

Raises:

Examples

>>> from wijjit.core.vdom import VNode
>>> registry = ElementRegistry()
>>> vnode = VNode.create("TextInput", props={"id": "name", "placeholder": "Name"})
>>> element = registry.create_element(vnode)
>>> element.id
'name'
get_factory(type_name)[source]

Get the factory for a type name.

Parameters:

type_name (str) – VNode type name

Returns:

Element class/factory, or None if not registered

Return type:

type or None

list_types()[source]

List all registered type names.

Returns:

Sorted list of registered type names

Return type:

list of str