reflex 0.6.1a2__tar.gz → 0.6.2__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 (383) hide show
  1. {reflex-0.6.1a2 → reflex-0.6.2}/PKG-INFO +1 -2
  2. {reflex-0.6.1a2 → reflex-0.6.2}/pyproject.toml +1 -2
  3. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +6 -8
  4. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/utils/state.js +17 -5
  5. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/app.py +3 -14
  6. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/compiler/compiler.py +25 -1
  7. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/compiler/utils.py +4 -5
  8. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/component.py +32 -18
  9. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/dynamic.py +39 -9
  10. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/media.py +89 -0
  11. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/media.pyi +480 -0
  12. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/config.py +3 -2
  13. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/base.py +22 -12
  14. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/config.py +3 -4
  15. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/custom_components.py +4 -3
  16. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/installer.py +14 -15
  17. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/custom_components/custom_components.py +32 -41
  18. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/event.py +199 -4
  19. reflex-0.6.2/reflex/istate/data.py +126 -0
  20. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/model.py +2 -3
  21. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/reflex.py +5 -14
  22. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/state.py +127 -164
  23. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/build.py +21 -16
  24. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/compat.py +25 -4
  25. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/exceptions.py +12 -0
  26. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/exec.py +2 -2
  27. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/format.py +1 -13
  28. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/path_ops.py +3 -3
  29. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/prerequisites.py +49 -88
  30. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/processes.py +2 -2
  31. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/vars/base.py +48 -37
  32. {reflex-0.6.1a2 → reflex-0.6.2}/LICENSE +0 -0
  33. {reflex-0.6.1a2 → reflex-0.6.2}/README.md +0 -0
  34. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  35. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  36. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/apps/blank/code/blank.py +0 -0
  37. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  38. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  39. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  40. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  41. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  42. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  43. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  44. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  45. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  46. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  47. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  48. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  49. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  50. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  51. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  52. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  53. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  54. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  55. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  56. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/.gitignore +0 -0
  57. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  58. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/jsconfig.json +0 -0
  59. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/next.config.js +0 -0
  60. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/postcss.config.js +0 -0
  61. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/styles/tailwind.css +0 -0
  62. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  63. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  64. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  65. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  66. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/utils/helpers/range.js +0 -0
  67. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  68. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/__init__.py +0 -0
  69. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/__init__.pyi +0 -0
  70. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/__main__.py +0 -0
  71. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/admin.py +0 -0
  72. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/app_mixins/__init__.py +0 -0
  73. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/app_mixins/lifespan.py +0 -0
  74. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/app_mixins/middleware.py +0 -0
  75. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/app_mixins/mixin.py +0 -0
  76. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/app_module_for_backend.py +0 -0
  77. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/base.py +0 -0
  78. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/compiler/__init__.py +0 -0
  79. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/compiler/templates.py +0 -0
  80. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/__init__.py +0 -0
  81. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/__init__.pyi +0 -0
  82. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/__init__.py +0 -0
  83. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/__init__.pyi +0 -0
  84. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/app_wrap.py +0 -0
  85. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/app_wrap.pyi +0 -0
  86. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/bare.py +0 -0
  87. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/body.py +0 -0
  88. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/body.pyi +0 -0
  89. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/document.py +0 -0
  90. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/document.pyi +0 -0
  91. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/error_boundary.py +0 -0
  92. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/error_boundary.pyi +0 -0
  93. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/fragment.py +0 -0
  94. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/fragment.pyi +0 -0
  95. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/head.py +0 -0
  96. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/head.pyi +0 -0
  97. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/link.py +0 -0
  98. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/link.pyi +0 -0
  99. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/meta.py +0 -0
  100. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/meta.pyi +0 -0
  101. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/script.py +0 -0
  102. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/base/script.pyi +0 -0
  103. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/__init__.py +0 -0
  104. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/__init__.pyi +0 -0
  105. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/banner.py +0 -0
  106. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/banner.pyi +0 -0
  107. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/breakpoints.py +0 -0
  108. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/client_side_routing.py +0 -0
  109. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/client_side_routing.pyi +0 -0
  110. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/clipboard.py +0 -0
  111. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/clipboard.pyi +0 -0
  112. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/colors.py +0 -0
  113. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/cond.py +0 -0
  114. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/debounce.py +0 -0
  115. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/debounce.pyi +0 -0
  116. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/foreach.py +0 -0
  117. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/html.py +0 -0
  118. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/html.pyi +0 -0
  119. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/layout/__init__.py +0 -0
  120. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/match.py +0 -0
  121. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/responsive.py +0 -0
  122. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/upload.py +0 -0
  123. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/core/upload.pyi +0 -0
  124. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/datadisplay/__init__.py +0 -0
  125. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/datadisplay/__init__.pyi +0 -0
  126. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/datadisplay/code.py +0 -0
  127. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/datadisplay/code.pyi +0 -0
  128. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/datadisplay/dataeditor.py +0 -0
  129. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  130. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/datadisplay/logo.py +0 -0
  131. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/__init__.py +0 -0
  132. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/__init__.pyi +0 -0
  133. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/constants/__init__.py +0 -0
  134. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/constants/html.py +0 -0
  135. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/constants/react.py +0 -0
  136. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/constants/reflex.py +0 -0
  137. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/element.py +0 -0
  138. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/element.pyi +0 -0
  139. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/__init__.py +0 -0
  140. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/__init__.pyi +0 -0
  141. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/base.py +0 -0
  142. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/base.pyi +0 -0
  143. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/forms.py +0 -0
  144. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/forms.pyi +0 -0
  145. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/inline.py +0 -0
  146. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/inline.pyi +0 -0
  147. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/metadata.py +0 -0
  148. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/metadata.pyi +0 -0
  149. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/other.py +0 -0
  150. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/other.pyi +0 -0
  151. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/scripts.py +0 -0
  152. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/scripts.pyi +0 -0
  153. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/sectioning.py +0 -0
  154. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/sectioning.pyi +0 -0
  155. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/tables.py +0 -0
  156. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/tables.pyi +0 -0
  157. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/typography.py +0 -0
  158. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/el/elements/typography.pyi +0 -0
  159. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/gridjs/__init__.py +0 -0
  160. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/gridjs/datatable.py +0 -0
  161. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/gridjs/datatable.pyi +0 -0
  162. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/literals.py +0 -0
  163. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/lucide/__init__.py +0 -0
  164. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/lucide/icon.py +0 -0
  165. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/lucide/icon.pyi +0 -0
  166. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/markdown/__init__.py +0 -0
  167. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/markdown/markdown.py +0 -0
  168. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/markdown/markdown.pyi +0 -0
  169. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/moment/__init__.py +0 -0
  170. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/moment/moment.py +0 -0
  171. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/moment/moment.pyi +0 -0
  172. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/__init__.py +0 -0
  173. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/base.py +0 -0
  174. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/base.pyi +0 -0
  175. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/image.py +0 -0
  176. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/image.pyi +0 -0
  177. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/link.py +0 -0
  178. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/link.pyi +0 -0
  179. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/video.py +0 -0
  180. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/next/video.pyi +0 -0
  181. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/plotly/__init__.py +0 -0
  182. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/plotly/plotly.py +0 -0
  183. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/plotly/plotly.pyi +0 -0
  184. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/props.py +0 -0
  185. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/__init__.py +0 -0
  186. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/__init__.pyi +0 -0
  187. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/__init__.py +0 -0
  188. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/__init__.pyi +0 -0
  189. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/accordion.py +0 -0
  190. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/accordion.pyi +0 -0
  191. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/base.py +0 -0
  192. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/base.pyi +0 -0
  193. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/drawer.py +0 -0
  194. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/drawer.pyi +0 -0
  195. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/form.py +0 -0
  196. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/form.pyi +0 -0
  197. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/progress.py +0 -0
  198. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/progress.pyi +0 -0
  199. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/slider.py +0 -0
  200. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/primitives/slider.pyi +0 -0
  201. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/__init__.py +0 -0
  202. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/__init__.pyi +0 -0
  203. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/base.py +0 -0
  204. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/base.pyi +0 -0
  205. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/color_mode.py +0 -0
  206. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/color_mode.pyi +0 -0
  207. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/__init__.py +0 -0
  208. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  209. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  210. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  211. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  212. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  213. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/avatar.py +0 -0
  214. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  215. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/badge.py +0 -0
  216. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/badge.pyi +0 -0
  217. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/button.py +0 -0
  218. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/button.pyi +0 -0
  219. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/callout.py +0 -0
  220. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/callout.pyi +0 -0
  221. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/card.py +0 -0
  222. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/card.pyi +0 -0
  223. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/checkbox.py +0 -0
  224. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  225. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  226. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  227. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  228. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  229. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/context_menu.py +0 -0
  230. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  231. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/data_list.py +0 -0
  232. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  233. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/dialog.py +0 -0
  234. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  235. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  236. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  237. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/hover_card.py +0 -0
  238. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  239. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/icon_button.py +0 -0
  240. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  241. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/inset.py +0 -0
  242. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/inset.pyi +0 -0
  243. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/popover.py +0 -0
  244. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/popover.pyi +0 -0
  245. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/progress.py +0 -0
  246. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/progress.pyi +0 -0
  247. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/radio.py +0 -0
  248. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/radio.pyi +0 -0
  249. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  250. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  251. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/radio_group.py +0 -0
  252. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  253. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  254. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  255. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  256. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  257. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/select.py +0 -0
  258. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/select.pyi +0 -0
  259. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/separator.py +0 -0
  260. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/separator.pyi +0 -0
  261. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/skeleton.py +0 -0
  262. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  263. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/slider.py +0 -0
  264. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/slider.pyi +0 -0
  265. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/spinner.py +0 -0
  266. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  267. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/switch.py +0 -0
  268. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/switch.pyi +0 -0
  269. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/table.py +0 -0
  270. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/table.pyi +0 -0
  271. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/tabs.py +0 -0
  272. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  273. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/text_area.py +0 -0
  274. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  275. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/text_field.py +0 -0
  276. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  277. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/tooltip.py +0 -0
  278. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  279. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/__init__.py +0 -0
  280. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  281. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/base.py +0 -0
  282. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/base.pyi +0 -0
  283. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/box.py +0 -0
  284. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/box.pyi +0 -0
  285. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/center.py +0 -0
  286. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/center.pyi +0 -0
  287. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/container.py +0 -0
  288. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/container.pyi +0 -0
  289. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/flex.py +0 -0
  290. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  291. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/grid.py +0 -0
  292. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  293. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/list.py +0 -0
  294. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/list.pyi +0 -0
  295. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/section.py +0 -0
  296. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/section.pyi +0 -0
  297. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/spacer.py +0 -0
  298. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  299. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/stack.py +0 -0
  300. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  301. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/__init__.py +0 -0
  302. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  303. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/base.py +0 -0
  304. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  305. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  306. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/code.py +0 -0
  307. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/code.pyi +0 -0
  308. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/heading.py +0 -0
  309. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  310. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/link.py +0 -0
  311. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/link.pyi +0 -0
  312. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/text.py +0 -0
  313. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/radix/themes/typography/text.pyi +0 -0
  314. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/react_player/__init__.py +0 -0
  315. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/react_player/audio.py +0 -0
  316. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/react_player/audio.pyi +0 -0
  317. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/react_player/react_player.py +0 -0
  318. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/react_player/react_player.pyi +0 -0
  319. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/react_player/video.py +0 -0
  320. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/react_player/video.pyi +0 -0
  321. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/__init__.py +0 -0
  322. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/__init__.pyi +0 -0
  323. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/cartesian.py +0 -0
  324. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/cartesian.pyi +0 -0
  325. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/charts.py +0 -0
  326. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/charts.pyi +0 -0
  327. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/general.py +0 -0
  328. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/general.pyi +0 -0
  329. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/polar.py +0 -0
  330. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/polar.pyi +0 -0
  331. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/recharts.py +0 -0
  332. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/recharts/recharts.pyi +0 -0
  333. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/sonner/__init__.py +0 -0
  334. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/sonner/toast.py +0 -0
  335. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/sonner/toast.pyi +0 -0
  336. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/suneditor/__init__.py +0 -0
  337. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/suneditor/editor.py +0 -0
  338. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/suneditor/editor.pyi +0 -0
  339. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/tags/__init__.py +0 -0
  340. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/tags/cond_tag.py +0 -0
  341. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/tags/iter_tag.py +0 -0
  342. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/tags/match_tag.py +0 -0
  343. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/tags/tag.py +0 -0
  344. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/components/tags/tagless.py +0 -0
  345. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/__init__.py +0 -0
  346. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/colors.py +0 -0
  347. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/compiler.py +0 -0
  348. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/event.py +0 -0
  349. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/route.py +0 -0
  350. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/constants/style.py +0 -0
  351. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/custom_components/__init__.py +0 -0
  352. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/experimental/__init__.py +0 -0
  353. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/experimental/assets.py +0 -0
  354. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/experimental/client_state.py +0 -0
  355. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/experimental/hooks.py +0 -0
  356. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/experimental/layout.py +0 -0
  357. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/experimental/layout.pyi +0 -0
  358. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/experimental/misc.py +0 -0
  359. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/middleware/__init__.py +0 -0
  360. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/middleware/hydrate_middleware.py +0 -0
  361. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/middleware/middleware.py +0 -0
  362. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/page.py +0 -0
  363. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/route.py +0 -0
  364. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/style.py +0 -0
  365. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/testing.py +0 -0
  366. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/__init__.py +0 -0
  367. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/codespaces.py +0 -0
  368. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/console.py +0 -0
  369. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/export.py +0 -0
  370. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/imports.py +0 -0
  371. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/lazy_loader.py +0 -0
  372. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/net.py +0 -0
  373. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/pyi_generator.py +0 -0
  374. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/redir.py +0 -0
  375. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/registry.py +0 -0
  376. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/serializers.py +0 -0
  377. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/telemetry.py +0 -0
  378. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/utils/types.py +0 -0
  379. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/vars/__init__.py +0 -0
  380. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/vars/function.py +0 -0
  381. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/vars/number.py +0 -0
  382. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/vars/object.py +0 -0
  383. {reflex-0.6.1a2 → reflex-0.6.2}/reflex/vars/sequence.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.6.1a2
3
+ Version: 0.6.2
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -18,7 +18,6 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Requires-Dist: alembic (>=1.11.1,<2.0)
19
19
  Requires-Dist: build (>=1.0.3,<2.0)
20
20
  Requires-Dist: charset-normalizer (>=3.3.2,<4.0)
21
- Requires-Dist: dill (>=0.3.8,<0.4)
22
21
  Requires-Dist: distro (>=1.8.0,<2.0) ; sys_platform == "linux"
23
22
  Requires-Dist: fastapi (>=0.96.0,!=0.111.0,!=0.111.1)
24
23
  Requires-Dist: gunicorn (>=20.1.0,<24.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "reflex"
3
- version = "0.6.1a2"
3
+ version = "0.6.2"
4
4
  description = "Web apps in pure Python."
5
5
  license = "Apache-2.0"
6
6
  authors = [
@@ -27,7 +27,6 @@ packages = [
27
27
 
28
28
  [tool.poetry.dependencies]
29
29
  python = "^3.9"
30
- dill = ">=0.3.8,<0.4"
31
30
  fastapi = ">=0.96.0,!=0.111.0,!=0.111.1"
32
31
  gunicorn = ">=20.1.0,<24.0"
33
32
  jinja2 = ">=3.1.2,<4.0"
@@ -7,10 +7,9 @@ import '/styles/styles.css'
7
7
  {% block declaration %}
8
8
  import { EventLoopProvider, StateProvider, defaultColorMode } from "/utils/context.js";
9
9
  import { ThemeProvider } from 'next-themes'
10
- import * as React from "react";
11
- import * as utils_context from "/utils/context.js";
12
- import * as utils_state from "/utils/state.js";
13
- import * as radix from "@radix-ui/themes";
10
+ {% for library_alias, library_path in window_libraries %}
11
+ import * as {{library_alias}} from "{{library_path}}";
12
+ {% endfor %}
14
13
 
15
14
  {% for custom_code in custom_codes %}
16
15
  {{custom_code}}
@@ -33,10 +32,9 @@ export default function MyApp({ Component, pageProps }) {
33
32
  React.useEffect(() => {
34
33
  // Make contexts and state objects available globally for dynamic eval'd components
35
34
  let windowImports = {
36
- "react": React,
37
- "@radix-ui/themes": radix,
38
- "/utils/context": utils_context,
39
- "/utils/state": utils_state,
35
+ {% for library_alias, library_path in window_libraries %}
36
+ "{{library_path}}": {{library_alias}},
37
+ {% endfor %}
40
38
  };
41
39
  window["__reflex"] = windowImports;
42
40
  }, []);
@@ -544,13 +544,19 @@ export const uploadFiles = async (
544
544
 
545
545
  /**
546
546
  * Create an event object.
547
- * @param name The name of the event.
548
- * @param payload The payload of the event.
549
- * @param handler The client handler to process event.
547
+ * @param {string} name The name of the event.
548
+ * @param {Object.<string, Any>} payload The payload of the event.
549
+ * @param {Object.<string, (number|boolean)>} event_actions The actions to take on the event.
550
+ * @param {string} handler The client handler to process event.
550
551
  * @returns The event object.
551
552
  */
552
- export const Event = (name, payload = {}, handler = null) => {
553
- return { name, payload, handler };
553
+ export const Event = (
554
+ name,
555
+ payload = {},
556
+ event_actions = {},
557
+ handler = null
558
+ ) => {
559
+ return { name, payload, handler, event_actions };
554
560
  };
555
561
 
556
562
  /**
@@ -676,6 +682,12 @@ export const useEventLoop = (
676
682
  if (!(args instanceof Array)) {
677
683
  args = [args];
678
684
  }
685
+
686
+ event_actions = events.reduce(
687
+ (acc, e) => ({ ...acc, ...e.event_actions }),
688
+ event_actions ?? {}
689
+ );
690
+
679
691
  const _e = args.filter((o) => o?.preventDefault !== undefined)[0];
680
692
 
681
693
  if (event_actions?.preventDefault && _e?.preventDefault) {
@@ -431,25 +431,12 @@ class App(MiddlewareMixin, LifespanMixin, Base):
431
431
  The generated component.
432
432
 
433
433
  Raises:
434
- VarOperationTypeError: When an invalid component var related function is passed.
435
- TypeError: When an invalid component function is passed.
436
434
  exceptions.MatchTypeError: If the return types of match cases in rx.match are different.
437
435
  """
438
- from reflex.utils.exceptions import VarOperationTypeError
439
-
440
436
  try:
441
437
  return component if isinstance(component, Component) else component()
442
438
  except exceptions.MatchTypeError:
443
439
  raise
444
- except TypeError as e:
445
- message = str(e)
446
- if "Var" in message:
447
- raise VarOperationTypeError(
448
- "You may be trying to use an invalid Python function on a state var. "
449
- "When referencing a var inside your render code, only limited var operations are supported. "
450
- "See the var operation docs here: https://reflex.dev/docs/vars/var-operations/"
451
- ) from e
452
- raise e
453
440
 
454
441
  def add_page(
455
442
  self,
@@ -1536,7 +1523,9 @@ class EventNamespace(AsyncNamespace):
1536
1523
  """
1537
1524
  fields = json.loads(data)
1538
1525
  # Get the event.
1539
- event = Event(**{k: v for k, v in fields.items() if k != "handler"})
1526
+ event = Event(
1527
+ **{k: v for k, v in fields.items() if k not in ("handler", "event_actions")}
1528
+ )
1540
1529
 
1541
1530
  self.token_to_sid[event.token] = sid
1542
1531
  self.sid_to_token[sid] = event.token
@@ -40,6 +40,20 @@ def _compile_document_root(root: Component) -> str:
40
40
  )
41
41
 
42
42
 
43
+ def _normalize_library_name(lib: str) -> str:
44
+ """Normalize the library name.
45
+
46
+ Args:
47
+ lib: The library name to normalize.
48
+
49
+ Returns:
50
+ The normalized library name.
51
+ """
52
+ if lib == "react":
53
+ return "React"
54
+ return lib.replace("@", "").replace("/", "_").replace("-", "_")
55
+
56
+
43
57
  def _compile_app(app_root: Component) -> str:
44
58
  """Compile the app template component.
45
59
 
@@ -49,10 +63,20 @@ def _compile_app(app_root: Component) -> str:
49
63
  Returns:
50
64
  The compiled app.
51
65
  """
66
+ from reflex.components.dynamic import bundled_libraries
67
+
68
+ window_libraries = [
69
+ (_normalize_library_name(name), name) for name in bundled_libraries
70
+ ] + [
71
+ ("utils_context", f"/{constants.Dirs.UTILS}/context"),
72
+ ("utils_state", f"/{constants.Dirs.UTILS}/state"),
73
+ ]
74
+
52
75
  return templates.APP_ROOT.render(
53
76
  imports=utils.compile_imports(app_root._get_all_imports()),
54
77
  custom_codes=app_root._get_all_custom_code(),
55
78
  hooks={**app_root._get_all_hooks_internal(), **app_root._get_all_hooks()},
79
+ window_libraries=window_libraries,
56
80
  render=app_root.render(),
57
81
  )
58
82
 
@@ -171,7 +195,7 @@ def _compile_root_stylesheet(stylesheets: list[str]) -> str:
171
195
  stylesheet_full_path = (
172
196
  Path.cwd() / constants.Dirs.APP_ASSETS / stylesheet.strip("/")
173
197
  )
174
- if not os.path.exists(stylesheet_full_path):
198
+ if not stylesheet_full_path.exists():
175
199
  raise FileNotFoundError(
176
200
  f"The stylesheet file {stylesheet_full_path} does not exist."
177
201
  )
@@ -2,7 +2,6 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- import os
6
5
  from pathlib import Path
7
6
  from typing import Any, Callable, Dict, Optional, Type, Union
8
7
  from urllib.parse import urlparse
@@ -457,16 +456,16 @@ def add_meta(
457
456
  return page
458
457
 
459
458
 
460
- def write_page(path: str, code: str):
459
+ def write_page(path: str | Path, code: str):
461
460
  """Write the given code to the given path.
462
461
 
463
462
  Args:
464
463
  path: The path to write the code to.
465
464
  code: The code to write.
466
465
  """
467
- path_ops.mkdir(os.path.dirname(path))
468
- with open(path, "w", encoding="utf-8") as f:
469
- f.write(code)
466
+ path = Path(path)
467
+ path_ops.mkdir(path.parent)
468
+ path.write_text(code, encoding="utf-8")
470
469
 
471
470
 
472
471
  def empty_dir(path: str | Path, keep_files: list[str] | None = None):
@@ -38,8 +38,10 @@ from reflex.constants import (
38
38
  )
39
39
  from reflex.event import (
40
40
  EventChain,
41
+ EventChainVar,
41
42
  EventHandler,
42
43
  EventSpec,
44
+ EventVar,
43
45
  call_event_fn,
44
46
  call_event_handler,
45
47
  get_handler_args,
@@ -514,7 +516,7 @@ class Component(BaseComponent, ABC):
514
516
  Var,
515
517
  EventHandler,
516
518
  EventSpec,
517
- List[Union[EventHandler, EventSpec]],
519
+ List[Union[EventHandler, EventSpec, EventVar]],
518
520
  Callable,
519
521
  ],
520
522
  ) -> Union[EventChain, Var]:
@@ -532,11 +534,16 @@ class Component(BaseComponent, ABC):
532
534
  """
533
535
  # If it's an event chain var, return it.
534
536
  if isinstance(value, Var):
535
- if value._var_type is not EventChain:
537
+ if isinstance(value, EventChainVar):
538
+ return value
539
+ elif isinstance(value, EventVar):
540
+ value = [value]
541
+ elif issubclass(value._var_type, (EventChain, EventSpec)):
542
+ return self._create_event_chain(args_spec, value.guess_type())
543
+ else:
536
544
  raise ValueError(
537
- f"Invalid event chain: {repr(value)} of type {type(value)}"
545
+ f"Invalid event chain: {str(value)} of type {value._var_type}"
538
546
  )
539
- return value
540
547
  elif isinstance(value, EventChain):
541
548
  # Trust that the caller knows what they're doing passing an EventChain directly
542
549
  return value
@@ -547,7 +554,7 @@ class Component(BaseComponent, ABC):
547
554
 
548
555
  # If the input is a list of event handlers, create an event chain.
549
556
  if isinstance(value, List):
550
- events: list[EventSpec] = []
557
+ events: List[Union[EventSpec, EventVar]] = []
551
558
  for v in value:
552
559
  if isinstance(v, (EventHandler, EventSpec)):
553
560
  # Call the event handler to get the event.
@@ -561,6 +568,8 @@ class Component(BaseComponent, ABC):
561
568
  "lambda inside an EventChain list."
562
569
  )
563
570
  events.extend(result)
571
+ elif isinstance(v, EventVar):
572
+ events.append(v)
564
573
  else:
565
574
  raise ValueError(f"Invalid event: {v}")
566
575
 
@@ -570,32 +579,30 @@ class Component(BaseComponent, ABC):
570
579
  if isinstance(result, Var):
571
580
  # Recursively call this function if the lambda returned an EventChain Var.
572
581
  return self._create_event_chain(args_spec, result)
573
- events = result
582
+ events = [*result]
574
583
 
575
584
  # Otherwise, raise an error.
576
585
  else:
577
586
  raise ValueError(f"Invalid event chain: {value}")
578
587
 
579
588
  # Add args to the event specs if necessary.
580
- events = [e.with_args(get_handler_args(e)) for e in events]
581
-
582
- # Collect event_actions from each spec
583
- event_actions = {}
584
- for e in events:
585
- event_actions.update(e.event_actions)
589
+ events = [
590
+ (e.with_args(get_handler_args(e)) if isinstance(e, EventSpec) else e)
591
+ for e in events
592
+ ]
586
593
 
587
594
  # Return the event chain.
588
595
  if isinstance(args_spec, Var):
589
596
  return EventChain(
590
597
  events=events,
591
598
  args_spec=None,
592
- event_actions=event_actions,
599
+ event_actions={},
593
600
  )
594
601
  else:
595
602
  return EventChain(
596
603
  events=events,
597
604
  args_spec=args_spec,
598
- event_actions=event_actions,
605
+ event_actions={},
599
606
  )
600
607
 
601
608
  def get_event_triggers(self) -> Dict[str, Any]:
@@ -1030,8 +1037,11 @@ class Component(BaseComponent, ABC):
1030
1037
  elif isinstance(event, EventChain):
1031
1038
  event_args = []
1032
1039
  for spec in event.events:
1033
- for args in spec.args:
1034
- event_args.extend(args)
1040
+ if isinstance(spec, EventSpec):
1041
+ for args in spec.args:
1042
+ event_args.extend(args)
1043
+ else:
1044
+ event_args.append(spec)
1035
1045
  yield event_trigger, event_args
1036
1046
 
1037
1047
  def _get_vars(self, include_children: bool = False) -> list[Var]:
@@ -1105,8 +1115,12 @@ class Component(BaseComponent, ABC):
1105
1115
  for trigger in self.event_triggers.values():
1106
1116
  if isinstance(trigger, EventChain):
1107
1117
  for event in trigger.events:
1108
- if event.handler.state_full_name:
1109
- return True
1118
+ if isinstance(event, EventSpec):
1119
+ if event.handler.state_full_name:
1120
+ return True
1121
+ else:
1122
+ if event._var_state:
1123
+ return True
1110
1124
  elif isinstance(trigger, Var) and trigger._var_state:
1111
1125
  return True
1112
1126
  return False
@@ -1,11 +1,18 @@
1
1
  """Components that are dynamically generated on the backend."""
2
2
 
3
+ from typing import TYPE_CHECKING
4
+
3
5
  from reflex import constants
4
6
  from reflex.utils import imports
7
+ from reflex.utils.exceptions import DynamicComponentMissingLibrary
8
+ from reflex.utils.format import format_library_name
5
9
  from reflex.utils.serializers import serializer
6
10
  from reflex.vars import Var, get_unique_variable_name
7
11
  from reflex.vars.base import VarData, transform
8
12
 
13
+ if TYPE_CHECKING:
14
+ from reflex.components.component import Component
15
+
9
16
 
10
17
  def get_cdn_url(lib: str) -> str:
11
18
  """Get the CDN URL for a library.
@@ -19,6 +26,27 @@ def get_cdn_url(lib: str) -> str:
19
26
  return f"https://cdn.jsdelivr.net/npm/{lib}" + "/+esm"
20
27
 
21
28
 
29
+ bundled_libraries = {
30
+ "react",
31
+ "@radix-ui/themes",
32
+ "@emotion/react",
33
+ }
34
+
35
+
36
+ def bundle_library(component: "Component"):
37
+ """Bundle a library with the component.
38
+
39
+ Args:
40
+ component: The component to bundle the library with.
41
+
42
+ Raises:
43
+ DynamicComponentMissingLibrary: Raised when a dynamic component is missing a library.
44
+ """
45
+ if component.library is None:
46
+ raise DynamicComponentMissingLibrary("Component must have a library to bundle.")
47
+ bundled_libraries.add(format_library_name(component.library))
48
+
49
+
22
50
  def load_dynamic_serializer():
23
51
  """Load the serializer for dynamic components."""
24
52
  # Causes a circular import, so we import here.
@@ -57,20 +85,15 @@ def load_dynamic_serializer():
57
85
  )
58
86
  ] = None
59
87
 
60
- libs_in_window = [
61
- "react",
62
- "@radix-ui/themes",
63
- ]
88
+ libs_in_window = bundled_libraries
64
89
 
65
90
  imports = {}
66
91
  for lib, names in component._get_all_imports().items():
92
+ formatted_lib_name = format_library_name(lib)
67
93
  if (
68
94
  not lib.startswith((".", "/"))
69
95
  and not lib.startswith("http")
70
- and all(
71
- not lib.startswith(lib_in_window)
72
- for lib_in_window in libs_in_window
73
- )
96
+ and formatted_lib_name not in libs_in_window
74
97
  ):
75
98
  imports[get_cdn_url(lib)] = names
76
99
  else:
@@ -108,7 +131,14 @@ def load_dynamic_serializer():
108
131
 
109
132
  module_code_lines.insert(0, "const React = window.__reflex.react;")
110
133
 
111
- return "//__reflex_evaluate\n" + "\n".join(module_code_lines)
134
+ return "\n".join(
135
+ [
136
+ "//__reflex_evaluate",
137
+ "/** @jsx jsx */",
138
+ "const { jsx } = window.__reflex['@emotion/react']",
139
+ *module_code_lines,
140
+ ]
141
+ )
112
142
 
113
143
  @transform
114
144
  def evaluate_component(js_string: Var[str]) -> Var[Component]:
@@ -317,6 +317,42 @@ class Svg(BaseHTML):
317
317
  xmlns: Var[str]
318
318
 
319
319
 
320
+ class Text(BaseHTML):
321
+ """The SVG text component."""
322
+
323
+ tag = "text"
324
+ # The x coordinate of the starting point of the text baseline.
325
+ x: Var[Union[str, int]]
326
+ # The y coordinate of the starting point of the text baseline.
327
+ y: Var[Union[str, int]]
328
+ # Shifts the text position horizontally from a previous text element.
329
+ dx: Var[Union[str, int]]
330
+ # Shifts the text position vertically from a previous text element.
331
+ dy: Var[Union[str, int]]
332
+ # Rotates orientation of each individual glyph.
333
+ rotate: Var[Union[str, int]]
334
+ # How the text is stretched or compressed to fit the width defined by the text_length attribute.
335
+ length_adjust: Var[str]
336
+ # A width that the text should be scaled to fit.
337
+ text_length: Var[Union[str, int]]
338
+
339
+
340
+ class Line(BaseHTML):
341
+ """The SVG line component."""
342
+
343
+ tag = "line"
344
+ # The x-axis coordinate of the line starting point.
345
+ x1: Var[Union[str, int]]
346
+ # The x-axis coordinate of the the line ending point.
347
+ x2: Var[Union[str, int]]
348
+ # The y-axis coordinate of the line starting point.
349
+ y1: Var[Union[str, int]]
350
+ # The y-axis coordinate of the the line ending point.
351
+ y2: Var[Union[str, int]]
352
+ # The total path length, in user units.
353
+ path_length: Var[int]
354
+
355
+
320
356
  class Circle(BaseHTML):
321
357
  """The SVG circle component."""
322
358
 
@@ -331,6 +367,22 @@ class Circle(BaseHTML):
331
367
  path_length: Var[int]
332
368
 
333
369
 
370
+ class Ellipse(BaseHTML):
371
+ """The SVG ellipse component."""
372
+
373
+ tag = "ellipse"
374
+ # The x position of the center of the ellipse.
375
+ cx: Var[Union[str, int]]
376
+ # The y position of the center of the ellipse.
377
+ cy: Var[Union[str, int]]
378
+ # The radius of the ellipse on the x axis.
379
+ rx: Var[Union[str, int]]
380
+ # The radius of the ellipse on the y axis.
381
+ ry: Var[Union[str, int]]
382
+ # The total length for the ellipse's circumference, in user units.
383
+ path_length: Var[int]
384
+
385
+
334
386
  class Rect(BaseHTML):
335
387
  """The SVG rect component."""
336
388
 
@@ -394,6 +446,39 @@ class LinearGradient(BaseHTML):
394
446
  y2: Var[Union[str, int, bool]]
395
447
 
396
448
 
449
+ class RadialGradient(BaseHTML):
450
+ """Display the radialGradient element."""
451
+
452
+ tag = "radialGradient"
453
+
454
+ # The x coordinate of the end circle of the radial gradient.
455
+ cx: Var[Union[str, int, bool]]
456
+
457
+ # The y coordinate of the end circle of the radial gradient.
458
+ cy: Var[Union[str, int, bool]]
459
+
460
+ # The radius of the start circle of the radial gradient.
461
+ fr: Var[Union[str, int, bool]]
462
+
463
+ # The x coordinate of the start circle of the radial gradient.
464
+ fx: Var[Union[str, int, bool]]
465
+
466
+ # The y coordinate of the start circle of the radial gradient.
467
+ fy: Var[Union[str, int, bool]]
468
+
469
+ # Units for the gradient.
470
+ gradient_units: Var[Union[str, bool]]
471
+
472
+ # Transform applied to the gradient.
473
+ gradient_transform: Var[Union[str, bool]]
474
+
475
+ # The radius of the end circle of the radial gradient.
476
+ r: Var[Union[str, int, bool]]
477
+
478
+ # Method used to spread the gradient.
479
+ spread_method: Var[Union[str, bool]]
480
+
481
+
397
482
  class Stop(BaseHTML):
398
483
  """Display the stop element."""
399
484
 
@@ -421,12 +506,16 @@ class Path(BaseHTML):
421
506
  class SVG(ComponentNamespace):
422
507
  """SVG component namespace."""
423
508
 
509
+ text = staticmethod(Text.create)
510
+ line = staticmethod(Line.create)
424
511
  circle = staticmethod(Circle.create)
512
+ ellipse = staticmethod(Ellipse.create)
425
513
  rect = staticmethod(Rect.create)
426
514
  polygon = staticmethod(Polygon.create)
427
515
  path = staticmethod(Path.create)
428
516
  stop = staticmethod(Stop.create)
429
517
  linear_gradient = staticmethod(LinearGradient.create)
518
+ radial_gradient = staticmethod(RadialGradient.create)
430
519
  defs = staticmethod(Defs.create)
431
520
  __call__ = staticmethod(Svg.create)
432
521