Sets the application defined property of the UI element with the specified name to the given value.
Applications may associate arbitrary objects with the UI element. This data is not used for rendering by UI elements.
Loads HTML attributes from a map.
For all top-level keys except ``class``, ``style``, and ``data`` attribute value is produced by converting the value to string for scalars and to JSON string for lists and maps.
"children" key is ignored - it is used to define a hierarchy of attributes.
For class attribute its value is formed by concatenating elements using space as a separator. If elements are hierarchical then class name is formed by concatenation with a dash (``-``) as a separator.
If value of ``data`` attribute is a map then keys of that map get concatenated with ``data`` using dash (``-``) as a separator, them same applies to nested maps. Non-map values become attribute values - scalars are converted to string,
lists are converted to JSON string.
Style can be defined as a string, list or map. If style is defined as a list, all list values are concatenated with a space as a separator - it is a convent way for long unstructured definitions.
If style value is a map then the value and its contained map values are processed in the following fashion:
a) Keys are concatenated with dash as a separator.
b) List values are concatenated with space as a separator.