reflex 0.8.15a2__py3-none-any.whl → 0.8.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reflex might be problematic. Click here for more details.

Files changed (139) hide show
  1. reflex/app.py +40 -46
  2. reflex/app_mixins/lifespan.py +12 -5
  3. reflex/base.py +1 -0
  4. reflex/compiler/compiler.py +4 -6
  5. reflex/compiler/templates.py +25 -31
  6. reflex/compiler/utils.py +6 -5
  7. reflex/components/base/body.pyi +1 -195
  8. reflex/components/base/link.pyi +1 -407
  9. reflex/components/base/meta.pyi +1 -405
  10. reflex/components/base/script.pyi +1 -237
  11. reflex/components/component.py +41 -46
  12. reflex/components/core/auto_scroll.pyi +1 -195
  13. reflex/components/core/banner.pyi +1 -391
  14. reflex/components/core/breakpoints.py +14 -18
  15. reflex/components/core/html.pyi +1 -197
  16. reflex/components/core/match.py +2 -2
  17. reflex/components/core/sticky.py +11 -15
  18. reflex/components/core/sticky.pyi +0 -788
  19. reflex/components/core/upload.py +1 -3
  20. reflex/components/core/window_events.pyi +6 -5
  21. reflex/components/datadisplay/code.pyi +1 -0
  22. reflex/components/datadisplay/dataeditor.py +4 -6
  23. reflex/components/datadisplay/shiki_code_block.py +106 -110
  24. reflex/components/dynamic.py +4 -6
  25. reflex/components/el/elements/__init__.py +5 -7
  26. reflex/components/el/elements/__init__.pyi +5 -7
  27. reflex/components/el/elements/base.py +1 -1
  28. reflex/components/el/elements/base.pyi +1 -195
  29. reflex/components/el/elements/forms.py +7 -9
  30. reflex/components/el/elements/forms.pyi +12 -3112
  31. reflex/components/el/elements/inline.pyi +0 -5481
  32. reflex/components/el/elements/media.pyi +0 -10280
  33. reflex/components/el/elements/metadata.pyi +1 -835
  34. reflex/components/el/elements/other.pyi +1 -1365
  35. reflex/components/el/elements/scripts.pyi +1 -625
  36. reflex/components/el/elements/sectioning.pyi +1 -2911
  37. reflex/components/el/elements/tables.pyi +1 -1973
  38. reflex/components/el/elements/typography.pyi +1 -3125
  39. reflex/components/lucide/icon.py +4 -4
  40. reflex/components/lucide/icon.pyi +0 -4
  41. reflex/components/markdown/markdown.py +15 -19
  42. reflex/components/markdown/markdown.pyi +1 -0
  43. reflex/components/moment/moment.pyi +0 -49
  44. reflex/components/props.py +3 -3
  45. reflex/components/radix/primitives/accordion.py +4 -6
  46. reflex/components/radix/primitives/accordion.pyi +0 -14
  47. reflex/components/radix/primitives/base.pyi +0 -5
  48. reflex/components/radix/primitives/dialog.py +2 -0
  49. reflex/components/radix/primitives/dialog.pyi +1 -233
  50. reflex/components/radix/primitives/drawer.pyi +0 -18
  51. reflex/components/radix/primitives/form.pyi +30 -632
  52. reflex/components/radix/primitives/progress.pyi +0 -10
  53. reflex/components/radix/primitives/slider.pyi +0 -10
  54. reflex/components/radix/themes/color_mode.pyi +1 -284
  55. reflex/components/radix/themes/components/alert_dialog.pyi +0 -207
  56. reflex/components/radix/themes/components/aspect_ratio.pyi +0 -2
  57. reflex/components/radix/themes/components/avatar.pyi +0 -80
  58. reflex/components/radix/themes/components/badge.pyi +1 -270
  59. reflex/components/radix/themes/components/button.pyi +1 -274
  60. reflex/components/radix/themes/components/callout.pyi +0 -1197
  61. reflex/components/radix/themes/components/card.pyi +1 -209
  62. reflex/components/radix/themes/components/checkbox.pyi +0 -261
  63. reflex/components/radix/themes/components/checkbox_cards.pyi +1 -96
  64. reflex/components/radix/themes/components/checkbox_group.pyi +1 -80
  65. reflex/components/radix/themes/components/context_menu.pyi +13 -321
  66. reflex/components/radix/themes/components/data_list.pyi +1 -107
  67. reflex/components/radix/themes/components/dialog.pyi +1 -210
  68. reflex/components/radix/themes/components/dropdown_menu.pyi +0 -209
  69. reflex/components/radix/themes/components/hover_card.pyi +1 -246
  70. reflex/components/radix/themes/components/icon_button.pyi +1 -195
  71. reflex/components/radix/themes/components/inset.pyi +0 -252
  72. reflex/components/radix/themes/components/popover.pyi +1 -234
  73. reflex/components/radix/themes/components/progress.pyi +1 -84
  74. reflex/components/radix/themes/components/radio.pyi +1 -72
  75. reflex/components/radix/themes/components/radio_cards.pyi +1 -123
  76. reflex/components/radix/themes/components/scroll_area.pyi +1 -11
  77. reflex/components/radix/themes/components/select.pyi +1 -376
  78. reflex/components/radix/themes/components/separator.pyi +0 -77
  79. reflex/components/radix/themes/components/skeleton.pyi +0 -30
  80. reflex/components/radix/themes/components/slider.py +3 -5
  81. reflex/components/radix/themes/components/spinner.pyi +0 -5
  82. reflex/components/radix/themes/components/switch.pyi +0 -89
  83. reflex/components/radix/themes/components/table.pyi +0 -1453
  84. reflex/components/radix/themes/components/text_area.pyi +7 -282
  85. reflex/components/radix/themes/components/text_field.pyi +6 -392
  86. reflex/components/radix/themes/components/tooltip.pyi +0 -42
  87. reflex/components/radix/themes/layout/box.pyi +1 -195
  88. reflex/components/radix/themes/layout/center.pyi +0 -194
  89. reflex/components/radix/themes/layout/container.pyi +0 -178
  90. reflex/components/radix/themes/layout/flex.pyi +0 -194
  91. reflex/components/radix/themes/layout/grid.pyi +0 -194
  92. reflex/components/radix/themes/layout/list.pyi +0 -978
  93. reflex/components/radix/themes/layout/section.pyi +0 -194
  94. reflex/components/radix/themes/layout/spacer.pyi +0 -194
  95. reflex/components/radix/themes/layout/stack.pyi +0 -582
  96. reflex/components/radix/themes/typography/blockquote.pyi +0 -196
  97. reflex/components/radix/themes/typography/code.pyi +0 -194
  98. reflex/components/radix/themes/typography/heading.pyi +0 -194
  99. reflex/components/radix/themes/typography/link.pyi +0 -237
  100. reflex/components/radix/themes/typography/text.pyi +0 -1360
  101. reflex/components/react_router/dom.pyi +0 -237
  102. reflex/components/recharts/cartesian.py +12 -18
  103. reflex/components/recharts/general.py +12 -18
  104. reflex/constants/installer.py +5 -5
  105. reflex/custom_components/custom_components.py +6 -5
  106. reflex/environment.py +30 -7
  107. reflex/event.py +14 -12
  108. reflex/experimental/client_state.py +11 -12
  109. reflex/istate/data.py +8 -10
  110. reflex/istate/manager/__init__.py +3 -0
  111. reflex/istate/manager/disk.py +151 -5
  112. reflex/model.py +1 -1
  113. reflex/plugins/_screenshot.py +2 -2
  114. reflex/plugins/shared_tailwind.py +9 -14
  115. reflex/reflex.py +7 -9
  116. reflex/state.py +30 -37
  117. reflex/style.py +6 -6
  118. reflex/testing.py +54 -30
  119. reflex/utils/codespaces.py +1 -1
  120. reflex/utils/compat.py +1 -0
  121. reflex/utils/decorator.py +3 -3
  122. reflex/utils/format.py +18 -22
  123. reflex/utils/prerequisites.py +1 -1
  124. reflex/utils/pyi_generator.py +51 -57
  125. reflex/utils/serializers.py +1 -1
  126. reflex/utils/telemetry.py +1 -1
  127. reflex/utils/templates.py +4 -4
  128. reflex/utils/types.py +3 -3
  129. reflex/vars/base.py +26 -29
  130. reflex/vars/color.py +6 -8
  131. reflex/vars/dep_tracking.py +5 -3
  132. reflex/vars/function.py +3 -3
  133. reflex/vars/object.py +9 -13
  134. reflex/vars/sequence.py +18 -24
  135. {reflex-0.8.15a2.dist-info → reflex-0.8.16.dist-info}/METADATA +1 -1
  136. {reflex-0.8.15a2.dist-info → reflex-0.8.16.dist-info}/RECORD +139 -139
  137. {reflex-0.8.15a2.dist-info → reflex-0.8.16.dist-info}/WHEEL +0 -0
  138. {reflex-0.8.15a2.dist-info → reflex-0.8.16.dist-info}/entry_points.txt +0 -0
  139. {reflex-0.8.15a2.dist-info → reflex-0.8.16.dist-info}/licenses/LICENSE +0 -0
@@ -823,12 +823,9 @@ class Component(BaseComponent, ABC):
823
823
  ]
824
824
  if special_attributes:
825
825
  custom_attrs = kwargs.setdefault("custom_attrs", {})
826
- custom_attrs.update(
827
- {
828
- format.to_kebab_case(key): kwargs.pop(key)
829
- for key in special_attributes
830
- }
831
- )
826
+ custom_attrs.update({
827
+ format.to_kebab_case(key): kwargs.pop(key) for key in special_attributes
828
+ })
832
829
 
833
830
  # Add style props to the component.
834
831
  style = kwargs.get("style", {})
@@ -851,13 +848,11 @@ class Component(BaseComponent, ABC):
851
848
 
852
849
  fields_style = self.get_fields()["style"]
853
850
 
854
- kwargs["style"] = Style(
855
- {
856
- **fields_style.default_value(),
857
- **style,
858
- **{attr: value for attr, value in kwargs.items() if attr not in fields},
859
- }
860
- )
851
+ kwargs["style"] = Style({
852
+ **fields_style.default_value(),
853
+ **style,
854
+ **{attr: value for attr, value in kwargs.items() if attr not in fields},
855
+ })
861
856
 
862
857
  # Convert class_name to str if it's list
863
858
  class_name = kwargs.get("class_name", "")
@@ -1131,10 +1126,10 @@ class Component(BaseComponent, ABC):
1131
1126
  if s is not None:
1132
1127
  styles.append(s)
1133
1128
 
1134
- _style = Style()
1129
+ style_ = Style()
1135
1130
  for s in reversed(styles):
1136
- _style.update(s)
1137
- return _style
1131
+ style_.update(s)
1132
+ return style_
1138
1133
 
1139
1134
  def _get_component_style(self, styles: ComponentStyle | Style) -> Style | None:
1140
1135
  """Get the style to the component from `App.style`.
@@ -1298,9 +1293,9 @@ class Component(BaseComponent, ABC):
1298
1293
  *self._valid_children,
1299
1294
  *allowed_components,
1300
1295
  ]:
1301
- valid_child_list = ", ".join(
1302
- [f"`{v_child}`" for v_child in self._valid_children]
1303
- )
1296
+ valid_child_list = ", ".join([
1297
+ f"`{v_child}`" for v_child in self._valid_children
1298
+ ])
1304
1299
  msg = f"The component `{comp_name}` only allows the components: {valid_child_list} as children. Got `{child_name}` instead."
1305
1300
  raise ValueError(msg)
1306
1301
 
@@ -1308,9 +1303,9 @@ class Component(BaseComponent, ABC):
1308
1303
  clz_name not in [*child._valid_parents, *allowed_components]
1309
1304
  for clz_name in self._iter_parent_classes_names()
1310
1305
  ):
1311
- valid_parent_list = ", ".join(
1312
- [f"`{v_parent}`" for v_parent in child._valid_parents]
1313
- )
1306
+ valid_parent_list = ", ".join([
1307
+ f"`{v_parent}`" for v_parent in child._valid_parents
1308
+ ])
1314
1309
  msg = f"The component `{child_name}` can only be a child of the components: {valid_parent_list}. Got `{comp_name}` instead."
1315
1310
  raise ValueError(msg)
1316
1311
 
@@ -1568,18 +1563,18 @@ class Component(BaseComponent, ABC):
1568
1563
  Returns:
1569
1564
  The imports required for all selected hooks.
1570
1565
  """
1571
- _imports = {}
1566
+ imports_ = {}
1572
1567
 
1573
1568
  if self._get_ref_hook() is not None:
1574
1569
  # Handle hooks needed for attaching react refs to DOM nodes.
1575
- _imports.setdefault("react", set()).add(ImportVar(tag="useRef"))
1576
- _imports.setdefault(f"$/{Dirs.STATE_PATH}", set()).add(
1570
+ imports_.setdefault("react", set()).add(ImportVar(tag="useRef"))
1571
+ imports_.setdefault(f"$/{Dirs.STATE_PATH}", set()).add(
1577
1572
  ImportVar(tag="refs")
1578
1573
  )
1579
1574
 
1580
1575
  if self._get_mount_lifecycle_hook():
1581
1576
  # Handle hooks for `on_mount` / `on_unmount`.
1582
- _imports.setdefault("react", set()).add(ImportVar(tag="useEffect"))
1577
+ imports_.setdefault("react", set()).add(ImportVar(tag="useEffect"))
1583
1578
 
1584
1579
  other_imports = []
1585
1580
  user_hooks = self._get_hooks()
@@ -1596,7 +1591,7 @@ class Component(BaseComponent, ABC):
1596
1591
  if hook_vardata is not None
1597
1592
  )
1598
1593
 
1599
- return imports.merge_imports(_imports, *other_imports)
1594
+ return imports.merge_imports(imports_, *other_imports)
1600
1595
 
1601
1596
  def _get_imports(self) -> ParsedImportDict:
1602
1597
  """Get all the libraries and fields that are used by the component.
@@ -1604,7 +1599,7 @@ class Component(BaseComponent, ABC):
1604
1599
  Returns:
1605
1600
  The imports needed by the component.
1606
1601
  """
1607
- _imports = (
1602
+ imports_ = (
1608
1603
  {self.library: [self.import_var]}
1609
1604
  if self.library is not None and self.tag is not None
1610
1605
  else {}
@@ -1627,14 +1622,14 @@ class Component(BaseComponent, ABC):
1627
1622
  if not isinstance(list_of_import_dict, list):
1628
1623
  added_import_dicts.append(imports.parse_imports(list_of_import_dict))
1629
1624
  else:
1630
- added_import_dicts.extend(
1631
- [imports.parse_imports(item) for item in list_of_import_dict]
1632
- )
1625
+ added_import_dicts.extend([
1626
+ imports.parse_imports(item) for item in list_of_import_dict
1627
+ ])
1633
1628
 
1634
1629
  return imports.merge_parsed_imports(
1635
1630
  self._get_dependencies_imports(),
1636
1631
  self._get_hooks_imports(),
1637
- _imports,
1632
+ imports_,
1638
1633
  event_imports,
1639
1634
  *var_imports,
1640
1635
  *added_import_dicts,
@@ -1649,10 +1644,10 @@ class Component(BaseComponent, ABC):
1649
1644
  Returns:
1650
1645
  The import dict with the required imports.
1651
1646
  """
1652
- _imports = imports.merge_parsed_imports(
1647
+ imports_ = imports.merge_parsed_imports(
1653
1648
  self._get_imports(), *[child._get_all_imports() for child in self.children]
1654
1649
  )
1655
- return imports.collapse_imports(_imports) if collapse else _imports
1650
+ return imports.collapse_imports(imports_) if collapse else imports_
1656
1651
 
1657
1652
  def _get_mount_lifecycle_hook(self) -> str | None:
1658
1653
  """Generate the component lifecycle hook.
@@ -2220,7 +2215,7 @@ memo = custom_component
2220
2215
  class NoSSRComponent(Component):
2221
2216
  """A dynamic component that is not rendered on the server."""
2222
2217
 
2223
- def _get_import_name(self) -> None | str:
2218
+ def _get_import_name(self) -> str | None:
2224
2219
  if not self.library:
2225
2220
  return None
2226
2221
  return f"${self.library}" if self.library.startswith("/") else self.library
@@ -2238,18 +2233,18 @@ class NoSSRComponent(Component):
2238
2233
  }
2239
2234
 
2240
2235
  # The normal imports for this component.
2241
- _imports = super()._get_imports()
2236
+ imports_ = super()._get_imports()
2242
2237
 
2243
2238
  # Do NOT import the main library/tag statically.
2244
2239
  import_name = self._get_import_name()
2245
2240
  if import_name is not None:
2246
2241
  with contextlib.suppress(ValueError):
2247
- _imports[import_name].remove(self.import_var)
2248
- _imports[import_name].append(ImportVar(tag=None, render=False))
2242
+ imports_[import_name].remove(self.import_var)
2243
+ imports_[import_name].append(ImportVar(tag=None, render=False))
2249
2244
 
2250
2245
  return imports.merge_imports(
2251
2246
  dynamic_import,
2252
- _imports,
2247
+ imports_,
2253
2248
  self._get_dependencies_imports(),
2254
2249
  )
2255
2250
 
@@ -2269,7 +2264,7 @@ class NoSSRComponent(Component):
2269
2264
  else ""
2270
2265
  )
2271
2266
  return (
2272
- f"const {self.alias if self.alias else self.tag} = ClientSide(lazy(() => "
2267
+ f"const {self.alias or self.tag} = ClientSide(lazy(() => "
2273
2268
  + library_import
2274
2269
  + mod_import
2275
2270
  + "))"
@@ -2649,9 +2644,9 @@ class StatefulComponent(BaseComponent):
2649
2644
  """
2650
2645
  if self.rendered_as_shared:
2651
2646
  return {}
2652
- return self.component._get_all_custom_code() | (
2653
- {self._render_stateful_code(export=export): None}
2654
- )
2647
+ return self.component._get_all_custom_code() | ({
2648
+ self._render_stateful_code(export=export): None
2649
+ })
2655
2650
 
2656
2651
  def _get_all_refs(self) -> dict[str, None]:
2657
2652
  """Get the refs for the children of the component.
@@ -2772,9 +2767,9 @@ def render_dict_to_var(tag: dict | Component | str) -> Var:
2772
2767
  return Var(tag["contents"])
2773
2768
 
2774
2769
  if "iterable" in tag:
2775
- function_return = LiteralArrayVar.create(
2776
- [render_dict_to_var(child.render()) for child in tag["children"]]
2777
- )
2770
+ function_return = LiteralArrayVar.create([
2771
+ render_dict_to_var(child.render()) for child in tag["children"]
2772
+ ])
2778
2773
 
2779
2774
  func = ArgsFunctionOperation.create(
2780
2775
  (tag["arg_var_name"], tag["index_var_name"]),
@@ -4,7 +4,7 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, Literal
7
+ from typing import Any
8
8
 
9
9
  from reflex.components.core.breakpoints import Breakpoints
10
10
  from reflex.components.el.elements.typography import Div
@@ -17,184 +17,6 @@ class AutoScroll(Div):
17
17
  def create(
18
18
  cls,
19
19
  *children,
20
- access_key: Var[str] | str | None = None,
21
- auto_capitalize: Literal[
22
- "characters", "none", "off", "on", "sentences", "words"
23
- ]
24
- | Var[Literal["characters", "none", "off", "on", "sentences", "words"]]
25
- | None = None,
26
- content_editable: Literal["inherit", "plaintext-only", False, True]
27
- | Var[Literal["inherit", "plaintext-only", False, True]]
28
- | None = None,
29
- context_menu: Var[str] | str | None = None,
30
- dir: Var[str] | str | None = None,
31
- draggable: Var[bool] | bool | None = None,
32
- enter_key_hint: Literal[
33
- "done", "enter", "go", "next", "previous", "search", "send"
34
- ]
35
- | Var[Literal["done", "enter", "go", "next", "previous", "search", "send"]]
36
- | None = None,
37
- hidden: Var[bool] | bool | None = None,
38
- input_mode: Literal[
39
- "decimal", "email", "none", "numeric", "search", "tel", "text", "url"
40
- ]
41
- | Var[
42
- Literal[
43
- "decimal", "email", "none", "numeric", "search", "tel", "text", "url"
44
- ]
45
- ]
46
- | None = None,
47
- item_prop: Var[str] | str | None = None,
48
- lang: Var[str] | str | None = None,
49
- role: Literal[
50
- "alert",
51
- "alertdialog",
52
- "application",
53
- "article",
54
- "banner",
55
- "button",
56
- "cell",
57
- "checkbox",
58
- "columnheader",
59
- "combobox",
60
- "complementary",
61
- "contentinfo",
62
- "definition",
63
- "dialog",
64
- "directory",
65
- "document",
66
- "feed",
67
- "figure",
68
- "form",
69
- "grid",
70
- "gridcell",
71
- "group",
72
- "heading",
73
- "img",
74
- "link",
75
- "list",
76
- "listbox",
77
- "listitem",
78
- "log",
79
- "main",
80
- "marquee",
81
- "math",
82
- "menu",
83
- "menubar",
84
- "menuitem",
85
- "menuitemcheckbox",
86
- "menuitemradio",
87
- "navigation",
88
- "none",
89
- "note",
90
- "option",
91
- "presentation",
92
- "progressbar",
93
- "radio",
94
- "radiogroup",
95
- "region",
96
- "row",
97
- "rowgroup",
98
- "rowheader",
99
- "scrollbar",
100
- "search",
101
- "searchbox",
102
- "separator",
103
- "slider",
104
- "spinbutton",
105
- "status",
106
- "switch",
107
- "tab",
108
- "table",
109
- "tablist",
110
- "tabpanel",
111
- "term",
112
- "textbox",
113
- "timer",
114
- "toolbar",
115
- "tooltip",
116
- "tree",
117
- "treegrid",
118
- "treeitem",
119
- ]
120
- | Var[
121
- Literal[
122
- "alert",
123
- "alertdialog",
124
- "application",
125
- "article",
126
- "banner",
127
- "button",
128
- "cell",
129
- "checkbox",
130
- "columnheader",
131
- "combobox",
132
- "complementary",
133
- "contentinfo",
134
- "definition",
135
- "dialog",
136
- "directory",
137
- "document",
138
- "feed",
139
- "figure",
140
- "form",
141
- "grid",
142
- "gridcell",
143
- "group",
144
- "heading",
145
- "img",
146
- "link",
147
- "list",
148
- "listbox",
149
- "listitem",
150
- "log",
151
- "main",
152
- "marquee",
153
- "math",
154
- "menu",
155
- "menubar",
156
- "menuitem",
157
- "menuitemcheckbox",
158
- "menuitemradio",
159
- "navigation",
160
- "none",
161
- "note",
162
- "option",
163
- "presentation",
164
- "progressbar",
165
- "radio",
166
- "radiogroup",
167
- "region",
168
- "row",
169
- "rowgroup",
170
- "rowheader",
171
- "scrollbar",
172
- "search",
173
- "searchbox",
174
- "separator",
175
- "slider",
176
- "spinbutton",
177
- "status",
178
- "switch",
179
- "tab",
180
- "table",
181
- "tablist",
182
- "tabpanel",
183
- "term",
184
- "textbox",
185
- "timer",
186
- "toolbar",
187
- "tooltip",
188
- "tree",
189
- "treegrid",
190
- "treeitem",
191
- ]
192
- ]
193
- | None = None,
194
- slot: Var[str] | str | None = None,
195
- spell_check: Var[bool] | bool | None = None,
196
- tab_index: Var[int] | int | None = None,
197
- title: Var[str] | str | None = None,
198
20
  style: Sequence[Mapping[str, Any]]
199
21
  | Mapping[str, Any]
200
22
  | Var[Mapping[str, Any]]
@@ -227,22 +49,6 @@ class AutoScroll(Div):
227
49
 
228
50
  Args:
229
51
  *children: The children of the component.
230
- access_key: Provides a hint for generating a keyboard shortcut for the current element.
231
- auto_capitalize: Controls whether and how text input is automatically capitalized as it is entered/edited by the user.
232
- content_editable: Indicates whether the element's content is editable.
233
- context_menu: Defines the ID of a <menu> element which will serve as the element's context menu.
234
- dir: Defines the text direction. Allowed values are ltr (Left-To-Right) or rtl (Right-To-Left)
235
- draggable: Defines whether the element can be dragged.
236
- enter_key_hint: Hints what media types the media element is able to play.
237
- hidden: Defines whether the element is hidden.
238
- input_mode: Defines the type of the element.
239
- item_prop: Defines the name of the element for metadata purposes.
240
- lang: Defines the language used in the element.
241
- role: Defines the role of the element.
242
- slot: Assigns a slot in a shadow DOM shadow tree to an element.
243
- spell_check: Defines whether the element may be checked for spelling errors.
244
- tab_index: Defines the position of the current element in the tabbing order.
245
- title: Defines a tooltip for the element.
246
52
  style: The style of the component.
247
53
  key: A unique key for the component.
248
54
  id: The id for the component.