def create_element(tag: str, name: str = None, base: type = None,
                   attr: dict = None) -> Node:
    """Create element with a tag of ``name``.

    :arg str name: html tag.
    :arg type base: Base class of the created element
                       (defatlt: ``WdomElement``)
    :arg dict attr: Attributes (key-value pairs dict) of the new element.
    """
    from wdom.web_node import WdomElement
    from wdom.tag import Tag
    from wdom.window import customElements
    if attr is None:
        attr = {}
    if name:
        base_class = customElements.get((name, tag))
    else:
        base_class = customElements.get((tag, None))
    if base_class is None:
        attr['_registered'] = False
        base_class = base or WdomElement
    if issubclass(base_class, Tag):
        return base_class(**attr)
    return base_class(tag, **attr)
Create element with a tag of ``name``.

    :arg str name: html tag.
    :arg type base: Base class of the created element
                       (defatlt: ``WdomElement``)
    :arg dict attr: Attributes (key-value pairs dict) of the new element.