reflex 0.3.5a1__tar.gz → 0.3.5a3__tar.gz

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 (377) hide show
  1. {reflex-0.3.5a1 → reflex-0.3.5a3}/PKG-INFO +1 -1
  2. {reflex-0.3.5a1 → reflex-0.3.5a3}/pyproject.toml +1 -1
  3. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +3 -0
  4. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/utils/context.js.jinja2 +5 -0
  5. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/state.js +9 -4
  6. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/app.py +6 -5
  7. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/app.pyi +1 -1
  8. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/templates.py +1 -0
  9. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/utils.py +1 -0
  10. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/head.py +2 -2
  11. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/head.pyi +4 -7
  12. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/component.py +69 -18
  13. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/input.py +3 -1
  14. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/input.pyi +1 -1
  15. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/charts.pyi +2 -5
  16. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/general.py +2 -1
  17. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/general.pyi +4 -6
  18. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/recharts.py +4 -4
  19. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/recharts.pyi +4 -7
  20. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/cond.py +2 -2
  21. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/foreach.py +3 -0
  22. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/icon.py +2 -2
  23. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/icon.pyi +2 -2
  24. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/markdown.py +19 -5
  25. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/markdown.pyi +4 -0
  26. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/__init__.py +6 -0
  27. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/compiler.py +23 -0
  28. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/route.py +4 -0
  29. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/event.py +11 -1
  30. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/middleware/hydrate_middleware.py +2 -8
  31. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/state.py +21 -1
  32. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/prerequisites.py +8 -0
  33. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/vars.py +23 -0
  34. {reflex-0.3.5a1 → reflex-0.3.5a3}/LICENSE +0 -0
  35. {reflex-0.3.5a1 → reflex-0.3.5a3}/README.md +0 -0
  36. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  37. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  38. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/blank/code/blank.py +0 -0
  39. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/.gitignore +0 -0
  40. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/favicon.ico +0 -0
  41. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/github.svg +0 -0
  42. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/icon.svg +0 -0
  43. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/logo.svg +0 -0
  44. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/paneleft.svg +0 -0
  45. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/__init__.py +0 -0
  46. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/demo.py +0 -0
  47. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/__init__.py +0 -0
  48. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/chatapp.py +0 -0
  49. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/datatable.py +0 -0
  50. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/forms.py +0 -0
  51. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/graphing.py +0 -0
  52. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/home.py +0 -0
  53. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/sidebar.py +0 -0
  54. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/state.py +0 -0
  55. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/states/form_state.py +0 -0
  56. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/states/pie_state.py +0 -0
  57. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/styles.py +0 -0
  58. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
  59. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -0
  60. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/chat.py +0 -0
  61. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -0
  62. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/modal.py +0 -0
  63. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -0
  64. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -0
  65. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/state.py +0 -0
  66. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/styles.py +0 -0
  67. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/README.md +0 -0
  68. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/favicon.ico +0 -0
  69. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/github.svg +0 -0
  70. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/icon.svg +0 -0
  71. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/logo.svg +0 -0
  72. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/paneleft.svg +0 -0
  73. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/__init__.py +0 -0
  74. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/components/__init__.py +0 -0
  75. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/components/sidebar.py +0 -0
  76. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/__init__.py +0 -0
  77. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/dashboard.py +0 -0
  78. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/index.py +0 -0
  79. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/settings.py +0 -0
  80. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/sidebar.py +0 -0
  81. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/state.py +0 -0
  82. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/styles.py +0 -0
  83. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/templates/__init__.py +0 -0
  84. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/templates/template.py +0 -0
  85. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  86. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  87. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  88. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  89. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  90. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  91. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  92. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  93. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  94. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  95. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  96. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  97. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  98. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/.gitignore +0 -0
  99. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -0
  100. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  101. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/jsconfig.json +0 -0
  102. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/next.config.js +0 -0
  103. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/postcss.config.js +0 -0
  104. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/styles/tailwind.css +0 -0
  105. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  106. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  107. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/helpers/range.js +0 -0
  108. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/__init__.py +0 -0
  109. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/__init__.pyi +0 -0
  110. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/__main__.py +0 -0
  111. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/admin.py +0 -0
  112. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/base.py +0 -0
  113. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/__init__.py +0 -0
  114. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/compiler.py +0 -0
  115. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/__init__.py +0 -0
  116. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/__init__.py +0 -0
  117. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/app_wrap.py +0 -0
  118. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/app_wrap.pyi +0 -0
  119. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/bare.py +0 -0
  120. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/body.py +0 -0
  121. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/body.pyi +0 -0
  122. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/document.py +0 -0
  123. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/document.pyi +0 -0
  124. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/link.py +0 -0
  125. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/link.pyi +0 -0
  126. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/meta.py +0 -0
  127. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/meta.pyi +0 -0
  128. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/script.py +0 -0
  129. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/script.pyi +0 -0
  130. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/__init__.py +0 -0
  131. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/badge.py +0 -0
  132. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/badge.pyi +0 -0
  133. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/code.py +0 -0
  134. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/code.pyi +0 -0
  135. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/dataeditor.py +0 -0
  136. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  137. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/datatable.py +0 -0
  138. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/datatable.pyi +0 -0
  139. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/divider.py +0 -0
  140. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/divider.pyi +0 -0
  141. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/keyboard_key.py +0 -0
  142. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/keyboard_key.pyi +0 -0
  143. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/list.py +0 -0
  144. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/list.pyi +0 -0
  145. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/moment.py +0 -0
  146. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/moment.pyi +0 -0
  147. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/stat.py +0 -0
  148. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/stat.pyi +0 -0
  149. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/table.py +0 -0
  150. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/table.pyi +0 -0
  151. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/tag.py +0 -0
  152. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/tag.pyi +0 -0
  153. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/__init__.py +0 -0
  154. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/accordion.py +0 -0
  155. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/accordion.pyi +0 -0
  156. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/tabs.py +0 -0
  157. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/tabs.pyi +0 -0
  158. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/transition.py +0 -0
  159. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/transition.pyi +0 -0
  160. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/visuallyhidden.py +0 -0
  161. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/visuallyhidden.pyi +0 -0
  162. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/__init__.py +0 -0
  163. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/__init__.py +0 -0
  164. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/html.py +0 -0
  165. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/react.py +0 -0
  166. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/reflex.py +0 -0
  167. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/element.py +0 -0
  168. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/element.pyi +0 -0
  169. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/__init__.py +0 -0
  170. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/base.py +0 -0
  171. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/base.pyi +0 -0
  172. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/forms.py +0 -0
  173. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/forms.pyi +0 -0
  174. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/inline.py +0 -0
  175. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/inline.pyi +0 -0
  176. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/media.py +0 -0
  177. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/media.pyi +0 -0
  178. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/metadata.py +0 -0
  179. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/metadata.pyi +0 -0
  180. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/other.py +0 -0
  181. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/other.pyi +0 -0
  182. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/scripts.py +0 -0
  183. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/scripts.pyi +0 -0
  184. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/sectioning.py +0 -0
  185. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/sectioning.pyi +0 -0
  186. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/tables.py +0 -0
  187. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/tables.pyi +0 -0
  188. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/typography.py +0 -0
  189. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/typography.pyi +0 -0
  190. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/__init__.py +0 -0
  191. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/alert.py +0 -0
  192. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/alert.pyi +0 -0
  193. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/circularprogress.py +0 -0
  194. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/circularprogress.pyi +0 -0
  195. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/progress.py +0 -0
  196. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/progress.pyi +0 -0
  197. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/skeleton.py +0 -0
  198. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/skeleton.pyi +0 -0
  199. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/spinner.py +0 -0
  200. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/spinner.pyi +0 -0
  201. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/__init__.py +0 -0
  202. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/button.py +0 -0
  203. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/button.pyi +0 -0
  204. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/checkbox.py +0 -0
  205. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/checkbox.pyi +0 -0
  206. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/colormodeswitch.py +0 -0
  207. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/colormodeswitch.pyi +0 -0
  208. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_picker.py +0 -0
  209. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_picker.pyi +0 -0
  210. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_time_picker.py +0 -0
  211. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_time_picker.pyi +0 -0
  212. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/debounce.py +0 -0
  213. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/debounce.pyi +0 -0
  214. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editable.py +0 -0
  215. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editable.pyi +0 -0
  216. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editor.py +0 -0
  217. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editor.pyi +0 -0
  218. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/email.py +0 -0
  219. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/email.pyi +0 -0
  220. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/form.py +0 -0
  221. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/form.pyi +0 -0
  222. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/iconbutton.py +0 -0
  223. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/iconbutton.pyi +0 -0
  224. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/multiselect.py +0 -0
  225. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/numberinput.py +0 -0
  226. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/numberinput.pyi +0 -0
  227. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/password.py +0 -0
  228. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/password.pyi +0 -0
  229. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/pininput.py +0 -0
  230. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/pininput.pyi +0 -0
  231. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/radio.py +0 -0
  232. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/radio.pyi +0 -0
  233. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/rangeslider.py +0 -0
  234. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/rangeslider.pyi +0 -0
  235. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/select.py +0 -0
  236. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/select.pyi +0 -0
  237. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/slider.py +0 -0
  238. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/slider.pyi +0 -0
  239. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/switch.py +0 -0
  240. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/switch.pyi +0 -0
  241. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/textarea.py +0 -0
  242. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/textarea.pyi +0 -0
  243. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/upload.py +0 -0
  244. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/upload.pyi +0 -0
  245. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/__init__.py +0 -0
  246. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/plotly.py +0 -0
  247. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/plotly.pyi +0 -0
  248. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/__init__.py +0 -0
  249. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/cartesian.py +0 -0
  250. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/cartesian.pyi +0 -0
  251. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/charts.py +0 -0
  252. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/polar.py +0 -0
  253. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/polar.pyi +0 -0
  254. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/__init__.py +0 -0
  255. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/aspect_ratio.py +0 -0
  256. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/aspect_ratio.pyi +0 -0
  257. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/box.py +0 -0
  258. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/box.pyi +0 -0
  259. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/card.py +0 -0
  260. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/card.pyi +0 -0
  261. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/center.py +0 -0
  262. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/center.pyi +0 -0
  263. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/container.py +0 -0
  264. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/container.pyi +0 -0
  265. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/flex.py +0 -0
  266. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/flex.pyi +0 -0
  267. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/fragment.py +0 -0
  268. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/fragment.pyi +0 -0
  269. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/grid.py +0 -0
  270. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/grid.pyi +0 -0
  271. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/html.py +0 -0
  272. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/html.pyi +0 -0
  273. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/responsive.py +0 -0
  274. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/spacer.py +0 -0
  275. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/spacer.pyi +0 -0
  276. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/stack.py +0 -0
  277. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/stack.pyi +0 -0
  278. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/wrap.py +0 -0
  279. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/wrap.pyi +0 -0
  280. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/__init__.py +0 -0
  281. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/chakra.py +0 -0
  282. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/chakra.pyi +0 -0
  283. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/react_player.py +0 -0
  284. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/react_player.pyi +0 -0
  285. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/literals.py +0 -0
  286. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/__init__.py +0 -0
  287. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/audio.py +0 -0
  288. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/audio.pyi +0 -0
  289. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/avatar.py +0 -0
  290. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/avatar.pyi +0 -0
  291. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/image.py +0 -0
  292. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/image.pyi +0 -0
  293. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/video.py +0 -0
  294. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/video.pyi +0 -0
  295. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/__init__.py +0 -0
  296. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/breadcrumb.py +0 -0
  297. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/breadcrumb.pyi +0 -0
  298. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/client_side_routing.py +0 -0
  299. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/client_side_routing.pyi +0 -0
  300. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/link.py +0 -0
  301. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/link.pyi +0 -0
  302. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/linkoverlay.py +0 -0
  303. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/linkoverlay.pyi +0 -0
  304. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/nextlink.py +0 -0
  305. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/nextlink.pyi +0 -0
  306. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/stepper.py +0 -0
  307. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/stepper.pyi +0 -0
  308. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/__init__.py +0 -0
  309. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/alertdialog.py +0 -0
  310. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/alertdialog.pyi +0 -0
  311. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/banner.py +0 -0
  312. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/banner.pyi +0 -0
  313. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/drawer.py +0 -0
  314. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/drawer.pyi +0 -0
  315. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/menu.py +0 -0
  316. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/menu.pyi +0 -0
  317. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/modal.py +0 -0
  318. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/modal.pyi +0 -0
  319. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/popover.py +0 -0
  320. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/popover.pyi +0 -0
  321. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/tooltip.py +0 -0
  322. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/tooltip.pyi +0 -0
  323. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/__init__.py +0 -0
  324. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/__init__.py +0 -0
  325. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/base.py +0 -0
  326. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/base.pyi +0 -0
  327. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/components.py +0 -0
  328. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/components.pyi +0 -0
  329. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/layout.py +0 -0
  330. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/layout.pyi +0 -0
  331. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/typography.py +0 -0
  332. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/typography.pyi +0 -0
  333. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/__init__.py +0 -0
  334. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/cond_tag.py +0 -0
  335. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/iter_tag.py +0 -0
  336. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/tag.py +0 -0
  337. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/tagless.py +0 -0
  338. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/__init__.py +0 -0
  339. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/heading.py +0 -0
  340. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/heading.pyi +0 -0
  341. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/highlight.py +0 -0
  342. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/highlight.pyi +0 -0
  343. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/span.py +0 -0
  344. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/span.pyi +0 -0
  345. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/text.py +0 -0
  346. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/text.pyi +0 -0
  347. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/config.py +0 -0
  348. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/config.pyi +0 -0
  349. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/base.py +0 -0
  350. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/config.py +0 -0
  351. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/event.py +0 -0
  352. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/installer.py +0 -0
  353. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/style.py +0 -0
  354. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/middleware/__init__.py +0 -0
  355. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/middleware/middleware.py +0 -0
  356. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/model.py +0 -0
  357. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/page.py +0 -0
  358. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/page.pyi +0 -0
  359. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/reflex.py +0 -0
  360. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/route.py +0 -0
  361. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/style.py +0 -0
  362. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/testing.py +0 -0
  363. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/__init__.py +0 -0
  364. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/build.py +0 -0
  365. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/console.py +0 -0
  366. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/exceptions.py +0 -0
  367. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/exec.py +0 -0
  368. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/export.py +0 -0
  369. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/format.py +0 -0
  370. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/imports.py +0 -0
  371. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/path_ops.py +0 -0
  372. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/processes.py +0 -0
  373. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/serializers.py +0 -0
  374. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/telemetry.py +0 -0
  375. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/types.py +0 -0
  376. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/watch.py +0 -0
  377. {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/vars.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.3.5a1
3
+ Version: 0.3.5a3
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "reflex"
3
- version = "0.3.5a1"
3
+ version = "0.3.5a3"
4
4
  description = "Web apps in pure Python."
5
5
  license = "Apache-2.0"
6
6
  authors = [
@@ -22,6 +22,9 @@ export const {{component.name}} = memo(({ {{-component.props|join(", ")-}} }) =>
22
22
 
23
23
  }
24
24
  {% endif %}
25
+ {% for hook in component.hooks %}
26
+ {{ hook }}
27
+ {% endfor %}
25
28
  return(
26
29
  {{utils.render(component.render)}}
27
30
  )
@@ -23,10 +23,15 @@ export const clientStorage = {}
23
23
  {% endif %}
24
24
 
25
25
  {% if state_name %}
26
+ export const onLoadInternalEvent = () => [Event('{{state_name}}.{{const.on_load_internal}}')]
27
+
26
28
  export const initialEvents = () => [
27
29
  Event('{{state_name}}.{{const.hydrate}}', hydrateClientStorage(clientStorage)),
30
+ ...onLoadInternalEvent()
28
31
  ]
29
32
  {% else %}
33
+ export const onLoadInternalEvent = () => []
34
+
30
35
  export const initialEvents = () => []
31
36
  {% endif %}
32
37
 
@@ -6,7 +6,7 @@ import env from "env.json";
6
6
  import Cookies from "universal-cookie";
7
7
  import { useEffect, useReducer, useRef, useState } from "react";
8
8
  import Router, { useRouter } from "next/router";
9
- import { initialEvents, initialState } from "utils/context.js"
9
+ import { initialEvents, initialState, onLoadInternalEvent } from "utils/context.js"
10
10
 
11
11
  // Endpoint URLs.
12
12
  const EVENTURL = env.EVENT
@@ -529,10 +529,15 @@ export const useEventLoop = (
529
529
  }
530
530
 
531
531
  const sentHydrate = useRef(false); // Avoid double-hydrate due to React strict-mode
532
- // initial state hydrate
533
532
  useEffect(() => {
534
533
  if (router.isReady && !sentHydrate.current) {
535
- addEvents(initial_events())
534
+ const events = initial_events()
535
+ addEvents(events.map((e) => (
536
+ {
537
+ ...e,
538
+ router_data: (({ pathname, query, asPath }) => ({ pathname, query, asPath }))(router)
539
+ }
540
+ )))
536
541
  sentHydrate.current = true
537
542
  }
538
543
  }, [router.isReady])
@@ -560,7 +565,7 @@ export const useEventLoop = (
560
565
 
561
566
  // Route after the initial page hydration.
562
567
  useEffect(() => {
563
- const change_complete = () => addEvents(initial_events())
568
+ const change_complete = () => addEvents(onLoadInternalEvent())
564
569
  router.events.on('routeChangeComplete', change_complete)
565
570
  return () => {
566
571
  router.events.off('routeChangeComplete', change_complete)
@@ -161,11 +161,12 @@ class App(Base):
161
161
  "rx.BaseState cannot be subclassed multiple times. use rx.State instead"
162
162
  )
163
163
 
164
- # verify that provided state is valid
165
- if self.state and self.state is not State:
166
- console.warn(
167
- f"Using substate ({self.state.__name__}) as root state in `rx.App` is currently not supported."
168
- f" Defaulting to root state: ({State.__name__})"
164
+ if "state" in kwargs:
165
+ console.deprecate(
166
+ feature_name="`state` argument for App()",
167
+ reason="due to all `rx.State` subclasses being inferred.",
168
+ deprecation_version="0.3.5",
169
+ removal_version="0.4.0",
169
170
  )
170
171
  self.state = State
171
172
  # Get the config
@@ -125,7 +125,7 @@ class App(Base):
125
125
  self, state: State, event: Event
126
126
  ) -> asyncio.Task | None: ...
127
127
 
128
- async def process(
128
+ def process(
129
129
  app: App, event: Event, sid: str, headers: Dict, client_ip: str
130
130
  ) -> AsyncIterator[StateUpdate]: ...
131
131
  async def ping() -> str: ...
@@ -40,6 +40,7 @@ class ReflexJinjaEnvironment(Environment):
40
40
  "toggle_color_mode": constants.ColorMode.TOGGLE,
41
41
  "use_color_mode": constants.ColorMode.USE,
42
42
  "hydrate": constants.CompileVars.HYDRATE,
43
+ "on_load_internal": constants.CompileVars.ON_LOAD_INTERNAL,
43
44
  }
44
45
 
45
46
 
@@ -254,6 +254,7 @@ def compile_custom_component(
254
254
  "name": component.tag,
255
255
  "props": props,
256
256
  "render": render.render(),
257
+ "hooks": render.get_hooks(),
257
258
  "custom_code": render.get_custom_code(),
258
259
  },
259
260
  imports,
@@ -1,6 +1,6 @@
1
1
  """The head component."""
2
2
 
3
- from reflex.components.component import Component
3
+ from reflex.components.component import Component, MemoizationLeaf
4
4
 
5
5
 
6
6
  class NextHeadLib(Component):
@@ -9,7 +9,7 @@ class NextHeadLib(Component):
9
9
  library = "next/head"
10
10
 
11
11
 
12
- class Head(NextHeadLib):
12
+ class Head(NextHeadLib, MemoizationLeaf):
13
13
  """Head Component."""
14
14
 
15
15
  tag = "NextHead"
@@ -7,7 +7,7 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from reflex.components.component import Component
10
+ from reflex.components.component import Component, MemoizationLeaf
11
11
 
12
12
  class NextHeadLib(Component):
13
13
  @overload
@@ -88,7 +88,7 @@ class NextHeadLib(Component):
88
88
  """
89
89
  ...
90
90
 
91
- class Head(NextHeadLib):
91
+ class Head(NextHeadLib, MemoizationLeaf):
92
92
  @overload
93
93
  @classmethod
94
94
  def create( # type: ignore
@@ -147,7 +147,7 @@ class Head(NextHeadLib):
147
147
  ] = None,
148
148
  **props
149
149
  ) -> "Head":
150
- """Create the component.
150
+ """Create a new memoization leaf component.
151
151
 
152
152
  Args:
153
153
  *children: The children of the component.
@@ -160,9 +160,6 @@ class Head(NextHeadLib):
160
160
  **props: The props of the component.
161
161
 
162
162
  Returns:
163
- The component.
164
-
165
- Raises:
166
- TypeError: If an invalid child is passed.
163
+ The memoization leaf
167
164
  """
168
165
  ...
@@ -23,7 +23,15 @@ from typing import (
23
23
  from reflex.base import Base
24
24
  from reflex.compiler.templates import STATEFUL_COMPONENT
25
25
  from reflex.components.tags import Tag
26
- from reflex.constants import Dirs, EventTriggers, Hooks, Imports, PageNames
26
+ from reflex.constants import (
27
+ Dirs,
28
+ EventTriggers,
29
+ Hooks,
30
+ Imports,
31
+ MemoizationDisposition,
32
+ MemoizationMode,
33
+ PageNames,
34
+ )
27
35
  from reflex.event import (
28
36
  EventChain,
29
37
  EventHandler,
@@ -150,6 +158,9 @@ class Component(BaseComponent, ABC):
150
158
  # custom attribute
151
159
  custom_attrs: Dict[str, Union[Var, str]] = {}
152
160
 
161
+ # When to memoize this component and its children.
162
+ _memoization_mode: MemoizationMode = MemoizationMode()
163
+
153
164
  @classmethod
154
165
  def __init_subclass__(cls, **kwargs):
155
166
  """Set default properties.
@@ -1353,20 +1364,29 @@ class StatefulComponent(BaseComponent):
1353
1364
  """
1354
1365
  from reflex.components.layout.foreach import Foreach
1355
1366
 
1367
+ if component._memoization_mode.disposition == MemoizationDisposition.NEVER:
1368
+ # Never memoize this component.
1369
+ return None
1370
+
1356
1371
  if component.tag is None:
1357
1372
  # Only memoize components with a tag.
1358
1373
  return None
1359
1374
 
1360
1375
  # If _var_data is found in this component, it is a candidate for auto-memoization.
1361
- has_var_data = False
1376
+ should_memoize = False
1362
1377
 
1363
- # Determine if any Vars have associated data.
1364
- for prop_var in component._get_vars():
1365
- if prop_var._var_data:
1366
- has_var_data = True
1367
- break
1378
+ # If the component requests to be memoized, then ignore other checks.
1379
+ if component._memoization_mode.disposition == MemoizationDisposition.ALWAYS:
1380
+ should_memoize = True
1368
1381
 
1369
- if not has_var_data:
1382
+ if not should_memoize:
1383
+ # Determine if any Vars have associated data.
1384
+ for prop_var in component._get_vars():
1385
+ if prop_var._var_data:
1386
+ should_memoize = True
1387
+ break
1388
+
1389
+ if not should_memoize:
1370
1390
  # Check for special-cases in child components.
1371
1391
  for child in component.children:
1372
1392
  # Skip BaseComponent and StatefulComponent children.
@@ -1374,14 +1394,14 @@ class StatefulComponent(BaseComponent):
1374
1394
  continue
1375
1395
  # Always consider Foreach something that must be memoized by the parent.
1376
1396
  if isinstance(child, Foreach):
1377
- has_var_data = True
1397
+ should_memoize = True
1378
1398
  break
1379
1399
  child = cls._child_var(child)
1380
1400
  if isinstance(child, Var) and child._var_data:
1381
- has_var_data = True
1401
+ should_memoize = True
1382
1402
  break
1383
1403
 
1384
- if has_var_data or component.event_triggers:
1404
+ if should_memoize or component.event_triggers:
1385
1405
  # Render the component to determine tag+hash based on component code.
1386
1406
  tag_name = cls._get_tag_name(component)
1387
1407
  if tag_name is None:
@@ -1643,15 +1663,46 @@ class StatefulComponent(BaseComponent):
1643
1663
  Returns:
1644
1664
  The memoized component tree.
1645
1665
  """
1646
- from reflex.components.layout.foreach import Foreach
1647
-
1648
- # Foreach must be memoized as a single component to retain index Var context.
1649
- if not isinstance(component, Foreach):
1650
- component.children = [
1651
- cls.compile_from(child) for child in component.children
1652
- ]
1653
1666
  if isinstance(component, Component):
1667
+ if component._memoization_mode.recursive:
1668
+ # Recursively memoize stateful children (default).
1669
+ component.children = [
1670
+ cls.compile_from(child) for child in component.children
1671
+ ]
1672
+ # Memoize this component if it depends on state.
1654
1673
  stateful_component = cls.create(component)
1655
1674
  if stateful_component is not None:
1656
1675
  return stateful_component
1657
1676
  return component
1677
+
1678
+
1679
+ class MemoizationLeaf(Component):
1680
+ """A component that does not separately memoize its children.
1681
+
1682
+ Any component which depends on finding the exact names of children
1683
+ components within it, should be a memoization leaf so the compiler
1684
+ does not replace the provided child tags with memoized tags.
1685
+
1686
+ During creation, a memoization leaf will mark itself as wanting to be
1687
+ memoized if any of its children return any hooks.
1688
+ """
1689
+
1690
+ _memoization_mode = MemoizationMode(recursive=False)
1691
+
1692
+ @classmethod
1693
+ def create(cls, *children, **props) -> Component:
1694
+ """Create a new memoization leaf component.
1695
+
1696
+ Args:
1697
+ *children: The children of the component.
1698
+ **props: The props of the component.
1699
+
1700
+ Returns:
1701
+ The memoization leaf
1702
+ """
1703
+ comp = super().create(*children, **props)
1704
+ if comp.get_hooks():
1705
+ comp._memoization_mode = cls._memoization_mode.copy(
1706
+ update={"disposition": MemoizationDisposition.ALWAYS}
1707
+ )
1708
+ return comp
@@ -9,7 +9,7 @@ from reflex.components.libs.chakra import (
9
9
  LiteralButtonSize,
10
10
  LiteralInputVariant,
11
11
  )
12
- from reflex.constants import EventTriggers
12
+ from reflex.constants import EventTriggers, MemoizationMode
13
13
  from reflex.utils import imports
14
14
  from reflex.vars import Var
15
15
 
@@ -107,6 +107,8 @@ class InputGroup(ChakraComponent):
107
107
 
108
108
  tag = "InputGroup"
109
109
 
110
+ _memoization_mode = MemoizationMode(recursive=False)
111
+
110
112
 
111
113
  class InputLeftAddon(ChakraComponent):
112
114
  """The InputLeftAddon component is a component that is used to add an addon to the left of an input."""
@@ -15,7 +15,7 @@ from reflex.components.libs.chakra import (
15
15
  LiteralButtonSize,
16
16
  LiteralInputVariant,
17
17
  )
18
- from reflex.constants import EventTriggers
18
+ from reflex.constants import EventTriggers, MemoizationMode
19
19
  from reflex.utils import imports
20
20
  from reflex.vars import Var
21
21
 
@@ -770,7 +770,7 @@ class FunnelChart(RechartsCharts):
770
770
  ] = None,
771
771
  **props
772
772
  ) -> "FunnelChart":
773
- """Create the component.
773
+ """Create a new memoization leaf component.
774
774
 
775
775
  Args:
776
776
  *children: The children of the component.
@@ -791,10 +791,7 @@ class FunnelChart(RechartsCharts):
791
791
  **props: The props of the component.
792
792
 
793
793
  Returns:
794
- The component.
795
-
796
- Raises:
797
- TypeError: If an invalid child is passed.
794
+ The memoization leaf
798
795
  """
799
796
  ...
800
797
 
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  from typing import Any, Dict, List, Union
5
5
 
6
+ from reflex.components.component import MemoizationLeaf
6
7
  from reflex.constants import EventTriggers
7
8
  from reflex.vars import Var
8
9
 
@@ -16,7 +17,7 @@ from .recharts import (
16
17
  )
17
18
 
18
19
 
19
- class ResponsiveContainer(Recharts):
20
+ class ResponsiveContainer(Recharts, MemoizationLeaf):
20
21
  """A base class for responsive containers in Recharts."""
21
22
 
22
23
  tag = "ResponsiveContainer"
@@ -8,6 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  from typing import Any, Dict, List, Union
11
+ from reflex.components.component import MemoizationLeaf
11
12
  from reflex.constants import EventTriggers
12
13
  from reflex.vars import Var
13
14
  from .recharts import (
@@ -19,7 +20,7 @@ from .recharts import (
19
20
  Recharts,
20
21
  )
21
22
 
22
- class ResponsiveContainer(Recharts):
23
+ class ResponsiveContainer(Recharts, MemoizationLeaf):
23
24
  @overload
24
25
  @classmethod
25
26
  def create( # type: ignore
@@ -84,7 +85,7 @@ class ResponsiveContainer(Recharts):
84
85
  ] = None,
85
86
  **props
86
87
  ) -> "ResponsiveContainer":
87
- """Create the component.
88
+ """Create a new memoization leaf component.
88
89
 
89
90
  Args:
90
91
  *children: The children of the component.
@@ -103,10 +104,7 @@ class ResponsiveContainer(Recharts):
103
104
  **props: The props of the component.
104
105
 
105
106
  Returns:
106
- The component.
107
-
108
- Raises:
109
- TypeError: If an invalid child is passed.
107
+ The memoization leaf
110
108
  """
111
109
  ...
112
110
 
@@ -1,17 +1,17 @@
1
1
  """A component that wraps a recharts lib."""
2
2
  from typing import Literal
3
3
 
4
- from reflex.components.component import Component, NoSSRComponent
4
+ from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
5
5
 
6
6
 
7
7
  class Recharts(Component):
8
- """A component that wraps a victory lib."""
8
+ """A component that wraps a recharts lib."""
9
9
 
10
10
  library = "recharts@2.8.0"
11
11
 
12
12
 
13
- class RechartsCharts(NoSSRComponent):
14
- """A component that wraps a victory lib."""
13
+ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
14
+ """A component that wraps a recharts lib."""
15
15
 
16
16
  library = "recharts@2.8.0"
17
17
 
@@ -8,7 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  from typing import Literal
11
- from reflex.components.component import Component, NoSSRComponent
11
+ from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
12
12
 
13
13
  class Recharts(Component):
14
14
  @overload
@@ -89,7 +89,7 @@ class Recharts(Component):
89
89
  """
90
90
  ...
91
91
 
92
- class RechartsCharts(NoSSRComponent):
92
+ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
93
93
  @overload
94
94
  @classmethod
95
95
  def create( # type: ignore
@@ -148,7 +148,7 @@ class RechartsCharts(NoSSRComponent):
148
148
  ] = None,
149
149
  **props
150
150
  ) -> "RechartsCharts":
151
- """Create the component.
151
+ """Create a new memoization leaf component.
152
152
 
153
153
  Args:
154
154
  *children: The children of the component.
@@ -161,10 +161,7 @@ class RechartsCharts(NoSSRComponent):
161
161
  **props: The props of the component.
162
162
 
163
163
  Returns:
164
- The component.
165
-
166
- Raises:
167
- TypeError: If an invalid child is passed.
164
+ The memoization leaf
168
165
  """
169
166
  ...
170
167
 
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  from typing import Any, Dict, Optional, overload
5
5
 
6
- from reflex.components.component import BaseComponent, Component
6
+ from reflex.components.component import BaseComponent, Component, MemoizationLeaf
7
7
  from reflex.components.layout.fragment import Fragment
8
8
  from reflex.components.tags import CondTag, Tag
9
9
  from reflex.constants import Dirs
@@ -15,7 +15,7 @@ _IS_TRUE_IMPORT = {
15
15
  }
16
16
 
17
17
 
18
- class Cond(Component):
18
+ class Cond(MemoizationLeaf):
19
19
  """Render one of two components based on a condition."""
20
20
 
21
21
  # The cond to determine which component to render.
@@ -8,12 +8,15 @@ from typing import Any, Callable, Iterable
8
8
  from reflex.components.component import Component
9
9
  from reflex.components.layout.fragment import Fragment
10
10
  from reflex.components.tags import IterTag
11
+ from reflex.constants import MemoizationMode
11
12
  from reflex.vars import Var
12
13
 
13
14
 
14
15
  class Foreach(Component):
15
16
  """A component that takes in an iterable and a render function and renders a list of components."""
16
17
 
18
+ _memoization_mode = MemoizationMode(recursive=False)
19
+
17
20
  # The iterable to create components from.
18
21
  iterable: Var[Iterable]
19
22
 
@@ -1,11 +1,11 @@
1
1
  """An icon component."""
2
2
  from typing import List
3
3
 
4
- from reflex.components.component import Component
4
+ from reflex.components.libs.chakra import ChakraComponent
5
5
  from reflex.utils import format
6
6
 
7
7
 
8
- class ChakraIconComponent(Component):
8
+ class ChakraIconComponent(ChakraComponent):
9
9
  """A component that wraps a Chakra icon component."""
10
10
 
11
11
  library = "@chakra-ui/icons@2.0.19"
@@ -8,10 +8,10 @@ from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  from typing import List
11
- from reflex.components.component import Component
11
+ from reflex.components.libs.chakra import ChakraComponent
12
12
  from reflex.utils import format
13
13
 
14
- class ChakraIconComponent(Component):
14
+ class ChakraIconComponent(ChakraComponent):
15
15
  @overload
16
16
  @classmethod
17
17
  def create( # type: ignore
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import textwrap
6
+ from functools import lru_cache
6
7
  from hashlib import md5
7
8
  from typing import Any, Callable, Dict, Union
8
9
 
@@ -35,6 +36,7 @@ _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
35
36
 
36
37
 
37
38
  # Component Mapping
39
+ @lru_cache
38
40
  def get_base_component_map() -> dict[str, Callable]:
39
41
  """Get the base component map.
40
42
 
@@ -89,6 +91,9 @@ class Markdown(Component):
89
91
  # Custom styles for the markdown (deprecated in v0.2.9).
90
92
  custom_styles: Dict[str, Any] = {}
91
93
 
94
+ # The hash of the component map, generated at create() time.
95
+ component_map_hash: str = ""
96
+
92
97
  @classmethod
93
98
  def create(cls, *children, **props) -> Component:
94
99
  """Create a markdown component.
@@ -124,7 +129,12 @@ class Markdown(Component):
124
129
  src = textwrap.dedent(src)
125
130
 
126
131
  # Create the component.
127
- return super().create(src, component_map=component_map, **props)
132
+ return super().create(
133
+ src,
134
+ component_map=component_map,
135
+ component_map_hash=cls._component_map_hash(component_map),
136
+ **props,
137
+ )
128
138
 
129
139
  def get_custom_components(
130
140
  self, seen: set[str] | None = None
@@ -264,11 +274,15 @@ class Markdown(Component):
264
274
 
265
275
  return components
266
276
 
267
- def _component_map_hash(self) -> str:
268
- return md5(str(self.component_map).encode()).hexdigest()
277
+ @staticmethod
278
+ def _component_map_hash(component_map) -> str:
279
+ inp = str(
280
+ {tag: component(_MOCK_ARG) for tag, component in component_map.items()}
281
+ ).encode()
282
+ return md5(inp).hexdigest()
269
283
 
270
284
  def _get_component_map_name(self) -> str:
271
- return f"ComponentMap_{self._component_map_hash()}"
285
+ return f"ComponentMap_{self.component_map_hash}"
272
286
 
273
287
  def _get_custom_code(self) -> str | None:
274
288
  hooks = set()
@@ -292,7 +306,7 @@ class Markdown(Component):
292
306
  remark_plugins=_REMARK_PLUGINS,
293
307
  rehype_plugins=_REHYPE_PLUGINS,
294
308
  )
295
- .remove_props("componentMap")
309
+ .remove_props("componentMap", "componentMapHash")
296
310
  )
297
311
  tag.special_props.add(
298
312
  Var.create_safe(
@@ -8,6 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  import textwrap
11
+ from functools import lru_cache
11
12
  from hashlib import md5
12
13
  from typing import Any, Callable, Dict, Union
13
14
  from reflex.compiler import utils
@@ -32,6 +33,7 @@ _REHYPE_KATEX = Var.create_safe("rehypeKatex", _var_is_local=False)
32
33
  _REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False)
33
34
  _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
34
35
 
36
+ @lru_cache
35
37
  def get_base_component_map() -> dict[str, Callable]: ...
36
38
 
37
39
  class Markdown(Component):
@@ -42,6 +44,7 @@ class Markdown(Component):
42
44
  *children,
43
45
  component_map: Optional[Dict[str, Any]] = None,
44
46
  custom_styles: Optional[Dict[str, Any]] = None,
47
+ component_map_hash: Optional[str] = None,
45
48
  style: Optional[Style] = None,
46
49
  key: Optional[Any] = None,
47
50
  id: Optional[Any] = None,
@@ -101,6 +104,7 @@ class Markdown(Component):
101
104
  *children: The children of the component.
102
105
  component_map: The component map from a tag to a lambda that creates a component.
103
106
  custom_styles: Custom styles for the markdown (deprecated in v0.2.9).
107
+ component_map_hash: The hash of the component map, generated at create() time.
104
108
  style: The style of the component.
105
109
  key: A unique key for the component.
106
110
  id: The id for the component.