reflex 0.8.6a0__py3-none-any.whl → 0.8.7a1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (41) hide show
  1. reflex/.templates/jinja/web/vite.config.js.jinja2 +4 -1
  2. reflex/.templates/web/app/routes.js +0 -1
  3. reflex/.templates/web/utils/state.js +1 -11
  4. reflex/app.py +27 -23
  5. reflex/components/base/error_boundary.py +2 -0
  6. reflex/components/component.py +6 -4
  7. reflex/components/lucide/icon.py +4 -1
  8. reflex/components/lucide/icon.pyi +4 -1
  9. reflex/components/plotly/plotly.py +9 -9
  10. reflex/components/recharts/recharts.py +2 -2
  11. reflex/components/sonner/toast.py +7 -7
  12. reflex/components/sonner/toast.pyi +8 -8
  13. reflex/config.py +9 -2
  14. reflex/constants/base.py +2 -0
  15. reflex/constants/installer.py +6 -6
  16. reflex/constants/state.py +1 -0
  17. reflex/custom_components/custom_components.py +3 -3
  18. reflex/istate/manager.py +2 -1
  19. reflex/plugins/__init__.py +2 -0
  20. reflex/plugins/_screenshot.py +144 -0
  21. reflex/plugins/base.py +14 -1
  22. reflex/reflex.py +7 -6
  23. reflex/route.py +4 -0
  24. reflex/state.py +2 -2
  25. reflex/testing.py +3 -5
  26. reflex/utils/build.py +21 -3
  27. reflex/utils/exec.py +11 -11
  28. reflex/utils/frontend_skeleton.py +254 -0
  29. reflex/utils/js_runtimes.py +411 -0
  30. reflex/utils/prerequisites.py +17 -1383
  31. reflex/utils/rename.py +170 -0
  32. reflex/utils/telemetry.py +101 -10
  33. reflex/utils/templates.py +443 -0
  34. reflex/vars/base.py +3 -3
  35. {reflex-0.8.6a0.dist-info → reflex-0.8.7a1.dist-info}/METADATA +2 -2
  36. {reflex-0.8.6a0.dist-info → reflex-0.8.7a1.dist-info}/RECORD +39 -36
  37. reflex/.templates/web/utils/client_side_routing.js +0 -45
  38. reflex/components/core/client_side_routing.py +0 -70
  39. {reflex-0.8.6a0.dist-info → reflex-0.8.7a1.dist-info}/WHEEL +0 -0
  40. {reflex-0.8.6a0.dist-info → reflex-0.8.7a1.dist-info}/entry_points.txt +0 -0
  41. {reflex-0.8.6a0.dist-info → reflex-0.8.7a1.dist-info}/licenses/LICENSE +0 -0
@@ -2,20 +2,20 @@ reflex/__init__.py,sha256=_1PVYjDeA6_JyfXvL6OuKjjO6AX2oMiNcAq8AEHf6xw,10161
2
2
  reflex/__init__.pyi,sha256=0D46kHVUJPE_kgYL-BjraERu-MXNCPsQTZQShrijmeQ,10148
3
3
  reflex/__main__.py,sha256=6cVrGEyT3j3tEvlEVUatpaYfbB5EF3UVY-6vc_Z7-hw,108
4
4
  reflex/admin.py,sha256=Nbc38y-M8iaRBvh1W6DQu_D3kEhO8JFvxrog4q2cB_E,434
5
- reflex/app.py,sha256=2Jay0aocK1_rzR9Gbao2dxugXGdEuo_IoCQgCKQfdgY,77374
5
+ reflex/app.py,sha256=SCsHNd0PxGES_B16vd5NFkZpHux5Q8BNkwhNgsmeuEk,77324
6
6
  reflex/assets.py,sha256=l5O_mlrTprC0lF7Rc_McOe3a0OtSLnRdNl_PqCpDCBA,3431
7
7
  reflex/base.py,sha256=Oh664QL3fZEHErhUasFqP7fE4olYf1y-9Oj6uZI2FCU,1173
8
- reflex/config.py,sha256=iL5hbdel04GzTtNiPwoNQ6xACJO1SkuvwzAyodDv028,19875
8
+ reflex/config.py,sha256=JhCChJ3WkOvC7sFIcKZ7T_JBobC0XiBlCPTlai6-fyU,20227
9
9
  reflex/environment.py,sha256=G-s20hBr-7K1_b6992XTgvNnBojcuL9Y33NAIUJLvT8,22940
10
10
  reflex/event.py,sha256=Yv9-tY-NH4q0Up72ljsABfBfnobnC0__DMvSWhFEo6M,74791
11
11
  reflex/model.py,sha256=l1-6fm7NHRFWH-xK9oV9UzAVfvKeUXG1f-tCrF7vmfI,19403
12
12
  reflex/page.py,sha256=ssCbMVFuIy60vH-YhJUzN0OxzUwXFCCD3ej56dVjp3g,3525
13
13
  reflex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- reflex/reflex.py,sha256=BkHnxKp3uZEllLWBbH8Y_EfSu80L4_0FEbSbZkg7JyQ,22506
15
- reflex/route.py,sha256=ZRlXl1HeKWM3W-yFCnRFIA_6I3W9JBqe2CKzCpWX7Vg,7699
16
- reflex/state.py,sha256=BunDGopplAH9qUagCv8j80m-IHnVX2LfF-bYo2aDspg,93055
14
+ reflex/reflex.py,sha256=KVlNh8nQGzuaYnpUtQ1D7Rcuqzp1TeKernlDucTXaQE,22578
15
+ reflex/route.py,sha256=TnS4m6Hm-b3LfGFpm37iAMEd-_JISAouPW5FqUxTAfU,7858
16
+ reflex/state.py,sha256=95dLzwoGaq6aC0dsSKIexaBUySnbeyRbfx2cTVixmx0,93059
17
17
  reflex/style.py,sha256=JxbXXA4MTnXrk0XHEoMBoNC7J-M2oL5Hl3W_QmXvmBg,13222
18
- reflex/testing.py,sha256=MgYxW3MLjd8TX5Lv7EWW-go3Fu_gL07i9HpxPJpBUDw,39951
18
+ reflex/testing.py,sha256=kR-imGVnWCp6xiryuZcJJIfogRg2tcNT4tw5mt0T3sY,39901
19
19
  reflex/.templates/apps/blank/assets/favicon.ico,sha256=baxxgDAQ2V4-G5Q4S2yK5uUJTUGkv-AOWBQ0xd6myUo,4286
20
20
  reflex/.templates/apps/blank/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  reflex/.templates/apps/blank/code/blank.py,sha256=wry9E3VjC7qtt_gzqNOyo4KZAAlzVyNp3uhFkcLZmM0,898
@@ -26,7 +26,7 @@ reflex/.templates/jinja/custom_components/demo_app.py.jinja2,sha256=ipbKtObNqQLc
26
26
  reflex/.templates/jinja/custom_components/pyproject.toml.jinja2,sha256=HG-k3pruUlMy7xYz339hgFkNMTLqB-C_FTLKkOgfBPM,630
27
27
  reflex/.templates/jinja/custom_components/src.py.jinja2,sha256=e80PwMI6NoeQtGJ0NXWhYrkqUe7jvvJTFuztYQe-R5w,2403
28
28
  reflex/.templates/jinja/web/package.json.jinja2,sha256=cS9M6ADYDoYL2Kc8m5dYhV8eDaehOXb6qK_IOijT3N0,673
29
- reflex/.templates/jinja/web/vite.config.js.jinja2,sha256=lx7G9abIKzSn0Sz98YWbAMIeLFM1p0iujj8IW_xBDAY,1639
29
+ reflex/.templates/jinja/web/vite.config.js.jinja2,sha256=pSrDq10Y4oSSO55CCsxsT2I0OUIoqBnEhxjG6ElFVN4,1715
30
30
  reflex/.templates/jinja/web/pages/_app.js.jinja2,sha256=tG-SRR7DCP3SxLoUl_5rIRmL1uBDVnkcenSUxy459hY,1575
31
31
  reflex/.templates/jinja/web/pages/_document.js.jinja2,sha256=v_r79GPGKnw1g9Bg4lK9o_ow5AzBnvKdz0nv3OgJyzU,166
32
32
  reflex/.templates/jinja/web/pages/base_page.js.jinja2,sha256=nteivFZgOhgwxlPvejgaoxKTPGvDRb7_JAXhsZDZeLM,361
@@ -46,13 +46,12 @@ reflex/.templates/web/postcss.config.js,sha256=6Hf540Ny078yfmJ_-tniZtmgHW6euyEyx
46
46
  reflex/.templates/web/react-router.config.js,sha256=5K1FBryYdPusn1nE513GwB5_5UdPzoyH8ZMANUbpodQ,84
47
47
  reflex/.templates/web/vite-plugin-safari-cachebust.js,sha256=FcyppYYBxUlZtQ-D_iyVaQIT6TBVisBH7DMzWxYm-zA,5300
48
48
  reflex/.templates/web/app/entry.client.js,sha256=2Jv-5SQWHhHmA07BP50f1ew1V-LOsX5VoLtSInnFDj8,264
49
- reflex/.templates/web/app/routes.js,sha256=OPPW82B079c4FGq_p5C5OBrkVnTNRFhgG3--WKlJSy0,312
49
+ reflex/.templates/web/app/routes.js,sha256=-16AwZFzrVSR7DBPYZbGx3lBA5hBFJ_XF2Y-6ilharo,254
50
50
  reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js,sha256=dnDHW49imtdalZJQqj7J_u7cj2z8Sve7OlhtOO0FbKE,916
51
51
  reflex/.templates/web/components/shiki/code.js,sha256=4Es1pxsr-lX4hTQ5mglrwwC6O_SI-z-O60k03z8VFzQ,1144
52
52
  reflex/.templates/web/styles/__reflex_style_reset.css,sha256=qbC6JIT643YEsvSQ0D7xBmWE5vXy94JGrKNihRuEjnA,8913
53
- reflex/.templates/web/utils/client_side_routing.js,sha256=lRNgEGCLfTejh8W3aCuBdFuko6UI2vetk64j8wLT5Uk,1650
54
53
  reflex/.templates/web/utils/react-theme.js,sha256=Aa-RND3ooGCXW6Zavzitc-v0ciKlcQDTFlDtE4mPkFI,2713
55
- reflex/.templates/web/utils/state.js,sha256=-RbOSjeggpR4VYffLYN59nTCEw8d9KHEqN_O_Lp33aM,36338
54
+ reflex/.templates/web/utils/state.js,sha256=hyd2XCme0vfTpW0FQHJmzlk7quXw8JrO3c3YkHhA6h4,36030
56
55
  reflex/.templates/web/utils/helpers/dataeditor.js,sha256=pG6MgsHuStDR7-qPipzfiK32j9bKDBa-4hZ0JSUo4JM,1623
57
56
  reflex/.templates/web/utils/helpers/debounce.js,sha256=xGhtTRtS_xIcaeqnYVvYJNseLgQVk-DW-eFiHJYO9As,528
58
57
  reflex/.templates/web/utils/helpers/paste.js,sha256=ef30HsR83jRzzvZnl8yV79yqFP8TC_u8SlN99cCS_OM,1799
@@ -68,7 +67,7 @@ reflex/compiler/templates.py,sha256=eWBtJBrriUyb7j4yRCi2X8MVauIVAfz0Ip6NaXLUhIM,
68
67
  reflex/compiler/utils.py,sha256=587KMP1BDYYigAY6looM9L69Eoq3PEOxCB8k7r9BW5A,18922
69
68
  reflex/components/__init__.py,sha256=eWpgWFbSQDj2TpGp6StEbxU7roQgzY7ZM0XIcIc5RE8,588
70
69
  reflex/components/__init__.pyi,sha256=7VFHtJGIjvGtD3IiPk848IPWYSCcPRT1EyPGljLhYlU,736
71
- reflex/components/component.py,sha256=DyeMdHSPkhYUXn18QcVZneJZKV8qzAlPMR9M8kY7_K8,98462
70
+ reflex/components/component.py,sha256=2eZlhNMh_unz-3wMJ2ZEuDT0CjKKOh5KUocbDgLb0t0,98541
72
71
  reflex/components/dynamic.py,sha256=AyOjAW5LQZlDShIFJ7d9P2dFTI-1pr1tZR32E2Rhr9s,7422
73
72
  reflex/components/field.py,sha256=j5JZFzNlET3GAIW91m1L31RypXylMAxJNm0-CJbtykM,5745
74
73
  reflex/components/literals.py,sha256=hogLnwTJxFJODIvqihg-GD9kFZVsEBDoYzaRit56Nuk,501
@@ -82,7 +81,7 @@ reflex/components/base/body.py,sha256=KLPOhxVsKyjPwrY9AziCOOG_c9ckOqIhI4n2i3_Q3N
82
81
  reflex/components/base/body.pyi,sha256=VG8N-0ocwgFOJR9mXfu6a5BtIY_jR7mK9lX3Y22g9GQ,8655
83
82
  reflex/components/base/document.py,sha256=Fr7y22NbeKeiz8kWPH2q5BpFjKdq-AmY-sxZilee_H8,636
84
83
  reflex/components/base/document.pyi,sha256=PlvclB2vyGcQ8zLJpFac_37LHeXLwpe8Qh0UqzXAPfE,11788
85
- reflex/components/base/error_boundary.py,sha256=hGp0yjFjBLutbplZkI3fkHBjIWBlYOoZ_1ISth7jEV0,6351
84
+ reflex/components/base/error_boundary.py,sha256=sp6W7G6uFWdls6nzl17XSizSSm6zS2OAu3ZqTE2W1CE,6438
86
85
  reflex/components/base/error_boundary.pyi,sha256=SvKnZ09jwIL_4-J5BKVZuATclrB4o3Eh457iTmmoNb4,2926
87
86
  reflex/components/base/fragment.py,sha256=ys7wkokq-N8WBxa9fqkEaNIrBlSximyD7vqlFVe02hQ,342
88
87
  reflex/components/base/fragment.pyi,sha256=1vl8p6SCWd0_QzYVAb-Em70IX6FwIWFvJLxMl5OJTwU,2401
@@ -101,7 +100,6 @@ reflex/components/core/auto_scroll.pyi,sha256=0R5NvVJ00X42-dSTX23zOGPbwGWGt1lQ_4
101
100
  reflex/components/core/banner.py,sha256=JEutUBT1UfpgnaDJthE2BoSzpIEE-cSHoQZlEvQb0dw,18471
102
101
  reflex/components/core/banner.pyi,sha256=F7LPVH4wkdsBnTaXG3NW3NkULYQSm5wAmvHerEOFdjQ,25480
103
102
  reflex/components/core/breakpoints.py,sha256=7nNG9Ewjvbk1hB0VoFiQxlDR333Mq2y977CNWjslAWA,2692
104
- reflex/components/core/client_side_routing.py,sha256=D5LWLTVW8WEuV17nNe14RKmuDhJegam0eYvOoHxh2Ts,1893
105
103
  reflex/components/core/client_side_routing.pyi,sha256=zY06iJEGGaqGE59If4VEnehg6-mvRlnxEOPqIWbUQuY,2616
106
104
  reflex/components/core/clipboard.py,sha256=lrM4KpbioSqBclhvtrgawgeg9Vq2dKsv40xP4bUgYmA,3339
107
105
  reflex/components/core/clipboard.pyi,sha256=Wt84ce1rd5vje-KuzAIkn_0riAD91_VtnZcRiRBsFLs,3230
@@ -162,8 +160,8 @@ reflex/components/gridjs/__init__.py,sha256=xJwDm1AZ70L5-t9LLqZwGUtDpijbf1KuMYDT
162
160
  reflex/components/gridjs/datatable.py,sha256=7JKrRw1zkpFB0_wwoaIhrVrldsm7-dyi3PASgqLq8Hc,4224
163
161
  reflex/components/gridjs/datatable.pyi,sha256=kFgv82vCgfdWZaUq4bZ73G8X3mkw6ecvSRkZ9G9-28E,5185
164
162
  reflex/components/lucide/__init__.py,sha256=EggTK2MuQKQeOBLKW-mF0VaDK9zdWBImu1HO2dvHZbE,73
165
- reflex/components/lucide/icon.py,sha256=aqjX1dq6-FxiMvvOF_002Bbfmz2fq5MnggbEQ5wn30w,35145
166
- reflex/components/lucide/icon.pyi,sha256=xxhLg-RZgUw0-cDT9F4898aG12EsoKZXrP3KAhkrI60,37939
163
+ reflex/components/lucide/icon.py,sha256=5rGGbkfNTftuDPllEsBQ8MCwFEjddG9pnsogKjFjp6w,35202
164
+ reflex/components/lucide/icon.pyi,sha256=F3gzfvQuyI1KJWnL2O5uAtwZeNNv0F60ARqWZVZr0uM,37996
167
165
  reflex/components/markdown/__init__.py,sha256=Dfl1At5uYoY7H4ufZU_RY2KOGQDLtj75dsZ2BTqqAns,87
168
166
  reflex/components/markdown/markdown.py,sha256=scDHnmn2n4KHXS2Imqa1jw1wTk1ewCB2MojC9NgKGHQ,15503
169
167
  reflex/components/markdown/markdown.pyi,sha256=oOlXZItHB0TPWsFz1Qjvr3KzG8sssthBp40UO_KkRIA,4322
@@ -171,7 +169,7 @@ reflex/components/moment/__init__.py,sha256=jGnZgRBivYJQPIcFgtLaXFteCeIG3gGH5ACX
171
169
  reflex/components/moment/moment.py,sha256=fhhzrun9USb8J30btpyyDD3JuXF_N7EL5Dou3x7NQYw,4080
172
170
  reflex/components/moment/moment.pyi,sha256=4YGqoKDFPV_Ve7G_UoN85UigtCExqp0qXR55Jb8WgfY,6013
173
171
  reflex/components/plotly/__init__.py,sha256=6B_woBJhkrVA9O_AbOTbsA_SxWsqjicYHmLA9FLjGfU,650
174
- reflex/components/plotly/plotly.py,sha256=c290oBd8Z5izaro-N8l8ymdcgxr5h3RlKhstDSAEjKM,15172
172
+ reflex/components/plotly/plotly.py,sha256=_HIMVHz2K4X9LO2PqdCiYlexG8cjbzSnbnp_gCqwwjQ,15172
175
173
  reflex/components/plotly/plotly.pyi,sha256=5Nhph2PL9eIb-Xd6CUZHQf79P-tOazy1alwRQl7CKWw,46821
176
174
  reflex/components/radix/__init__.py,sha256=fRsLvIO3MrTtPOXtmnxYDB9phvzlcbyB_utgpafYMho,474
177
175
  reflex/components/radix/__init__.pyi,sha256=ke_dGrpFMNHd3MgQ9qiStSQDlGcJ39KVSrpIxayBU3c,3927
@@ -322,11 +320,11 @@ reflex/components/recharts/general.py,sha256=DuPDfccUWWehc40ji7_JSYHX_AoJyGn_-4y
322
320
  reflex/components/recharts/general.pyi,sha256=e77vGL8lo-t1jI79h0O12qSK5e9wbjerPslCxQQgSBw,23462
323
321
  reflex/components/recharts/polar.py,sha256=zocHpwWQ0lbg4BTnEBwQ6J9SSJsOYRwZGf9UPzxoNKs,15682
324
322
  reflex/components/recharts/polar.pyi,sha256=8ShEcGK9KJyu0FN6KPys1kgAYrzOZ6wtiRuytHJ--38,26937
325
- reflex/components/recharts/recharts.py,sha256=CrkZ1Ez6QhDpDvlL0TkeT_qtBg0keLaGS9L2qfgr8zI,3221
323
+ reflex/components/recharts/recharts.py,sha256=pYJxI8UQBbF1TS0VcTJoFFGvJtZarZTSVaRjwkeqjoc,3221
326
324
  reflex/components/recharts/recharts.pyi,sha256=9j8cVSMqyBkkOBBrx9pzDpP1clnbM9kD0TTViTUGDYc,7084
327
325
  reflex/components/sonner/__init__.py,sha256=L_mdRIy7-ccRGSz5VK6J8O-c-e-D1p9xWw29_ErrvGg,68
328
- reflex/components/sonner/toast.py,sha256=rzSOAhb7tuT7IFOu7zSttya2GPjUNBahjQ_DEO-uocs,12392
329
- reflex/components/sonner/toast.pyi,sha256=jfNzgYUThyhz2lOjat61C8ObKawY16Bq_T3KLZ0aThY,7658
326
+ reflex/components/sonner/toast.py,sha256=sJ9E60VaMBwoev4aBrKr42ygN7e0jajNTooa5o5wYPQ,12505
327
+ reflex/components/sonner/toast.pyi,sha256=cj0zlkcFVmJ3CrHe2XIsF0MeBw61Bn-hrGkzHTFz8Og,7782
330
328
  reflex/components/tags/__init__.py,sha256=Pc0JU-Tv_W7KCsydXgbKmu7w2VtHNkI6Cx2hTkNhW_Q,152
331
329
  reflex/components/tags/cond_tag.py,sha256=kqN3FoDzr5fZUng1KDIvGmdQCLd7Tni3TQ_iaEz8F-w,641
332
330
  reflex/components/tags/iter_tag.py,sha256=6w0pLBJ4ZJq1B3mz9kV3b8fULCGhzqpMDHWPbHphFxA,4421
@@ -334,64 +332,69 @@ reflex/components/tags/match_tag.py,sha256=cMSa_hbuEV8uFg0iCwLhRJ0J6-oU5rKQf9Z2-
334
332
  reflex/components/tags/tag.py,sha256=AbB8MtmmMUAvlMtQe7XLL-afsb1rckzo4R1MJ1RsNQs,3865
335
333
  reflex/components/tags/tagless.py,sha256=qO7Gm4V0ITDyymHkyltfz53155ZBt-W_WIPDYy93ca0,587
336
334
  reflex/constants/__init__.py,sha256=q2Jf-LBbNcGrOmx5M7QotIAYW_t3m02TsmmdtJ5_IhM,2190
337
- reflex/constants/base.py,sha256=_ozsoSM6g0oILaqC_mjv0SaPu_DjQBbUnk62qfYures,7577
335
+ reflex/constants/base.py,sha256=ei3YERoOFdS3yrCYbr7GDcPNlFN9YkVIZRBcj-MWFYw,7619
338
336
  reflex/constants/colors.py,sha256=n-FN7stNrvk5rCN0TAvE28dqwUeQZHue-b5q1CO0EyQ,2048
339
337
  reflex/constants/compiler.py,sha256=bzmC1OW6kWr06rV1Gwoa2AtQ4yPoGhEzeoqpiNY0jwU,5703
340
338
  reflex/constants/config.py,sha256=8OIjiBdZZJrRVHsNBheMwopE9AwBFFzau0SXqXKcrPg,1715
341
339
  reflex/constants/custom_components.py,sha256=joJt4CEt1yKy7wsBH6vYo7_QRW0O_fWXrrTf0VY2q14,1317
342
340
  reflex/constants/event.py,sha256=tgoynWQi2L0_Kqc3XhXo7XXL76A-OKhJGHRrNjm7gFw,2885
343
- reflex/constants/installer.py,sha256=UqviYL10RH5LFyYbqCWy-8rKJE3HI5VGD8NoPDfq6TU,4167
341
+ reflex/constants/installer.py,sha256=VmJfwEUfgr9lcIVNlYoUXFHDYRfwrBtUKm6dSu4GOHg,4191
344
342
  reflex/constants/route.py,sha256=UBjqaAOxiUxlDZCSY4O2JJChKvA4MZrhUU0E5rNvKbM,2682
345
- reflex/constants/state.py,sha256=uF_7-M9Gid-P3DjAOq4F1ERplyZhiNccowo_jLrdJrg,323
343
+ reflex/constants/state.py,sha256=dkoVvO9JcJyHovHJlGsZx-dDxpM80OvS4cJEm_TUOiM,349
346
344
  reflex/constants/utils.py,sha256=e1ChEvbHfmE_V2UJvCSUhD_qTVAIhEGPpRJSqdSd6PA,780
347
345
  reflex/custom_components/__init__.py,sha256=R4zsvOi4dfPmHc18KEphohXnQFBPnUCb50cMR5hSLDE,36
348
- reflex/custom_components/custom_components.py,sha256=IPW7Kbtyr8vjk1FzXRsCyCaLJTlaLQMYjOxgf1WK_jg,20210
346
+ reflex/custom_components/custom_components.py,sha256=ho4C_Yf_tbf7iZaiqtk7GFllMSzoHHDXBxhKzapwZzo,20218
349
347
  reflex/experimental/__init__.py,sha256=P8fe8S2e2gy2HCwHFGQzr3lPMmh7qN5Ii2e8ukoPHuQ,1664
350
348
  reflex/experimental/client_state.py,sha256=1VOe6rYhpOBOZi7-tZwfOnSNPPdX3tsXzlfgNs7aDrg,10020
351
349
  reflex/experimental/hooks.py,sha256=CHYGrAE5t8riltrJmDFgJ4D2Vhmhw-y3B3MSGNlOQow,2366
352
350
  reflex/istate/__init__.py,sha256=afq_pCS5B_REC-Kl3Rbaa538uWi59xNz4INeuENcWnk,2039
353
351
  reflex/istate/data.py,sha256=KrANpAQFTZcfFWnxyykgK1FRNuXTwTin1WYpyqymV-U,7547
354
352
  reflex/istate/dynamic.py,sha256=xOQ9upZVPf6ngqcLQZ9HdAAYmoWwJ8kRFPH34Q5HTiM,91
355
- reflex/istate/manager.py,sha256=te5uQN6n-ctOGrf6NbZUVy6BKgWapLlMtCzDaO6RthU,30412
353
+ reflex/istate/manager.py,sha256=8EezUlCGkkg_UIs1xa460kZFdJ9qHo6naazphT4jqns,30446
356
354
  reflex/istate/proxy.py,sha256=Q8JrV1m6drVcTNJL9JuN-nKUXclazs96OHl_fhR0UBk,25928
357
355
  reflex/istate/storage.py,sha256=gCPoiZxuG-Rw0y-Pz3OC7rv4o08dQ_jK1fE2u8Jhxqg,4339
358
356
  reflex/istate/wrappers.py,sha256=p8uuioXRbR5hperwbOJHUcWdu7hukLikQdoR7qrnKsI,909
359
357
  reflex/middleware/__init__.py,sha256=x7xTeDuc73Hjj43k1J63naC9x8vzFxl4sq7cCFBX7sk,111
360
358
  reflex/middleware/hydrate_middleware.py,sha256=1ch7bx2ZhojOR15b-LHD2JztrWCnpPJjTe8MWHJe-5Y,1510
361
359
  reflex/middleware/middleware.py,sha256=p5VVoIgQ_NwOg_GOY6g0S4fmrV76_VE1zt-HiwbMw-s,1158
362
- reflex/plugins/__init__.py,sha256=aARE63iAH2pNVdGmFU4qkXDiPoeBxINfkFzwk-NZe0w,351
363
- reflex/plugins/base.py,sha256=Jgj7Xrpk0ztM57kl0hN3PUHYrGSXu7oj7OPyIWQJUcE,3059
360
+ reflex/plugins/__init__.py,sha256=jrMWQqMxCwDwgwQYTygeR_pIewMcvIFwAnngPbjSumQ,439
361
+ reflex/plugins/_screenshot.py,sha256=CAOaRpbrpTTIswwCXqhv7WYShB86Ao9MVv6dcXJzRb4,3958
362
+ reflex/plugins/base.py,sha256=5BgzCM7boj9kJ6FGzVzVlgQk-crJuVmOLCl1PXvv4-E,3372
364
363
  reflex/plugins/shared_tailwind.py,sha256=UXUndEEcYBZ02klymw-vSZv01IZVLJG3oSaBHpQ617U,6426
365
364
  reflex/plugins/sitemap.py,sha256=Jj47uSMnkxndl7awkl48EhlQylBfY00WuMBNyTBcZHA,6186
366
365
  reflex/plugins/tailwind_v3.py,sha256=7bXI-zsGoS1pW27-_gskxGaUOQ7NQMPcYkoI5lnmIMA,4819
367
366
  reflex/plugins/tailwind_v4.py,sha256=gDzQd9M1F03n6sU0xSKhNZZ3xFO5SJMBmSXL-dPteOM,5239
368
367
  reflex/utils/__init__.py,sha256=y-AHKiRQAhk2oAkvn7W8cRVTZVK625ff8tTwvZtO7S4,24
369
- reflex/utils/build.py,sha256=lk8hE69onG95dv-LxRhjtEugct1g-KcWPUDorzqeGIE,7964
368
+ reflex/utils/build.py,sha256=GLT2ycqgAe1cw__MFbfdlYrkzcTnY1oJ8cAv80jEcnQ,8641
370
369
  reflex/utils/codespaces.py,sha256=kEQ-j-jclTukFpXDlYgNp95kYMGDrQmP3VNEoYGZ1u4,3052
371
370
  reflex/utils/compat.py,sha256=aSJH_M6iomgHPQ4onQ153xh1MWqPi3HSYDzE68N6gZM,2635
372
371
  reflex/utils/console.py,sha256=QIOgyElaxSVM1Bbvz0zx77-MqkDZkfpu1d6l26VRkQ0,11580
373
372
  reflex/utils/decorator.py,sha256=QUZntENupeW5FA5mNRTx0I1GzGKFQXhMjVg24_IIM5o,3957
374
373
  reflex/utils/exceptions.py,sha256=Wwu7Ji2xgq521bJKtU2NgjwhmFfnG8erirEVN2h8S-g,8884
375
- reflex/utils/exec.py,sha256=KQ5tS5vz3wuu9zDGPR6clSE0IoY_vcIbJGCB5bqiDJM,21987
374
+ reflex/utils/exec.py,sha256=o0u81B6pHv5Yt982V1vFYEJDxgM-HxmM5KRUBbTYmZI,21965
376
375
  reflex/utils/export.py,sha256=Z2AHuhkxGQzOi9I90BejQ4qEcD0URr2i-ZU5qTJt7eQ,2562
377
376
  reflex/utils/format.py,sha256=FZe5NA0U3K0n0k7r8RIGcx-eHpN7sf8eQX9w1C8_uR8,21120
377
+ reflex/utils/frontend_skeleton.py,sha256=oPF7JUnRmBANbk3rBYPSCjKHvlgdN90kotVnNqHTfUI,8604
378
378
  reflex/utils/imports.py,sha256=Ov-lqv-PfsPl3kTEW13r5aDauIfn6TqzEMyv42RKLOA,3761
379
+ reflex/utils/js_runtimes.py,sha256=ipVrZCajiRcjow-nQeUuxPS_c6F_NpfvMtITOesbPjU,13153
379
380
  reflex/utils/lazy_loader.py,sha256=BiY9OvmAJDCz10qpuyTYv9duXgMFQa6RXKQmTO9hqKU,4453
380
381
  reflex/utils/misc.py,sha256=folEweZVCrhHNkkqut9KqQdTJ80HxwL_gI41m40FnNM,4592
381
382
  reflex/utils/monitoring.py,sha256=87fr9j6Y9Bvz2uF4tBxuX6CaU054h1UPx0ijcnyP_kw,5250
382
383
  reflex/utils/net.py,sha256=q3h5pNbAlFiqy8U15S9DTOvzy_OnenVVug5ROBTGRTA,4267
383
384
  reflex/utils/path_ops.py,sha256=_RS17IQDNr5vcoLLGZx2-z1E5WP-JgDHvaRAOgqrZiU,8154
384
- reflex/utils/prerequisites.py,sha256=JUv4VGPDJmZrJM1U5Ot87ZzPwd4sG-3AbsyuTt5o7K0,63118
385
+ reflex/utils/prerequisites.py,sha256=LEQCGg_PpvrNOBiOMZUZRrqWXYAW1Zkp56tHAPrpL9s,18643
385
386
  reflex/utils/processes.py,sha256=t-ufWwu9RDsSMXCSsmjS2TILP5s7-AY94Rgx2O2gHMw,18178
386
387
  reflex/utils/pyi_generator.py,sha256=HdmUVs50Bk7MAMFSvpATRhH--_50w-9URMFnjLlwT40,46086
387
388
  reflex/utils/redir.py,sha256=E6lJ6UYGQs_uCyQAKHT_dDMplo5IRZ9JarWfvgGAgGo,1731
388
389
  reflex/utils/registry.py,sha256=omKh5rrsybDuuKmh4K88lwdwwcpGsu3Vc4pCko_djKY,2239
390
+ reflex/utils/rename.py,sha256=qdE4SXHOaNs-TDGrnJz-h_nvLWA1C5osVrWb4wLSfyI,5262
389
391
  reflex/utils/serializers.py,sha256=sVLfbWIBKPpmo0CVVxoxXGu0K3R9mYMWgaI02LXZmcM,13952
390
- reflex/utils/telemetry.py,sha256=XpPbFmlFdEh5uJl5vXoLyCCFv1choJN8EMko0MujigQ,7452
392
+ reflex/utils/telemetry.py,sha256=Ps0Q98dD5RZUlt5skZx2Iopc-hXv5DUdomHZw4u3QcI,10696
393
+ reflex/utils/templates.py,sha256=ytAkuBadwlAxL3TA8AeqCIpdll6nENVgyC_jKbWvovY,14376
391
394
  reflex/utils/token_manager.py,sha256=o_HGbqT9WfYRmek2iY9nem4vDZMz8Q4Dra-eW1lKmuA,6999
392
395
  reflex/utils/types.py,sha256=jFHfd2-yHWV61L7YP2gc9Zj2ZLwdthHOOfRIc_PAWH0,38390
393
396
  reflex/vars/__init__.py,sha256=85eXMt32bFoKtMdH3KxYRMD8mtnKyYiQcThPxJLoW1k,1359
394
- reflex/vars/base.py,sha256=IGCU5iwZSsVMPVQqODEjmHJrskqfpfMIQ2yzcVFMoSQ,112940
397
+ reflex/vars/base.py,sha256=8tRs__Pp0qvtlV3b-_-u_9dhwbJ2y0IUoHpnpbWexhQ,112984
395
398
  reflex/vars/datetime.py,sha256=F2Jv_bfydipFSkIQ1F6x5MnSgFEyES9Vq5RG_uGH81E,5118
396
399
  reflex/vars/dep_tracking.py,sha256=LfDGgAGlqfC0DeiVcitRBcA1uCe1C3fNRARRekLgCz4,13738
397
400
  reflex/vars/function.py,sha256=0i-VkxHkDJmZtfQUwUfaF0rlS6WM8azjwQ8k7rEOkyk,13944
@@ -399,8 +402,8 @@ reflex/vars/number.py,sha256=tO7pnvFaBsedq1HWT4skytnSqHWMluGEhUbjAUMx8XQ,28190
399
402
  reflex/vars/object.py,sha256=BDmeiwG8v97s_BnR1Egq3NxOKVjv9TfnREB3cz0zZtk,17322
400
403
  reflex/vars/sequence.py,sha256=1kBrqihspyjyQ1XDqFPC8OpVGtZs_EVkOdIKBro5ilA,55249
401
404
  scripts/hatch_build.py,sha256=-4pxcLSFmirmujGpQX9UUxjhIC03tQ_fIQwVbHu9kc0,1861
402
- reflex-0.8.6a0.dist-info/METADATA,sha256=2RaX5LhTj99Yn0i6IbUON1L_nKWz5EHINSBMcYHeGpY,12541
403
- reflex-0.8.6a0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
404
- reflex-0.8.6a0.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
405
- reflex-0.8.6a0.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
406
- reflex-0.8.6a0.dist-info/RECORD,,
405
+ reflex-0.8.7a1.dist-info/METADATA,sha256=cwq5VPHjDivPS52LacmeljqDISsGRw2DSIeSq4EDITc,12541
406
+ reflex-0.8.7a1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
407
+ reflex-0.8.7a1.dist-info/entry_points.txt,sha256=Rxt4dXc7MLBNt5CSHTehVPuSe9Xqow4HLX55nD9tQQ0,45
408
+ reflex-0.8.7a1.dist-info/licenses/LICENSE,sha256=dw3zLrp9f5ObD7kqS32vWfhcImfO52PMmRqvtxq_YEE,11358
409
+ reflex-0.8.7a1.dist-info/RECORD,,
@@ -1,45 +0,0 @@
1
- import { useEffect, useRef, useState } from "react";
2
- import { useLocation, useNavigate } from "react-router-dom";
3
-
4
- /**
5
- * React hook for use in NotFound page to enable client-side routing.
6
- *
7
- * Uses React Router to redirect to the provided URL when loading
8
- * the NotFound page (for example as a fallback in static hosting situations).
9
- *
10
- * @returns {boolean} routeNotFound - true if the current route is an actual 404
11
- */
12
- export const useClientSideRouting = () => {
13
- const [routeNotFound, setRouteNotFound] = useState(false);
14
- const didRedirect = useRef(false);
15
- const location = useLocation();
16
- const navigate = useNavigate();
17
-
18
- useEffect(() => {
19
- if (!didRedirect.current) {
20
- // have not tried redirecting yet
21
- didRedirect.current = true; // never redirect twice to avoid navigation loops
22
-
23
- // attempt to redirect to the route in the browser address bar once
24
- const path = window.location.pathname;
25
- const search = window.location.search;
26
-
27
- // Use navigate instead of replace
28
- navigate(path + search, { replace: true, state: { fromNotFound: true } })
29
- .then(() => {
30
- // Check if we're still on a NotFound route
31
- // Note: This depends on how your routes are set up
32
- if (location.pathname === path) {
33
- setRouteNotFound(true); // Mark as an actual 404
34
- }
35
- })
36
- .catch(() => {
37
- setRouteNotFound(true); // navigation failed, so this is a real 404
38
- });
39
- }
40
- }, [location, navigate]);
41
-
42
- // Return the reactive bool, to avoid flashing 404 page until we know for sure
43
- // the route is not found.
44
- return routeNotFound;
45
- };
@@ -1,70 +0,0 @@
1
- """Handle dynamic routes in static exports via client-side routing.
2
-
3
- Works with /utils/client_side_routing.js to handle the redirect and state.
4
-
5
- When the user hits a 404 accessing a route, redirect them to the same page,
6
- setting a reactive state var "routeNotFound" to true if the redirect fails. The
7
- `wait_for_client_redirect` function will render the component only after
8
- routeNotFound becomes true.
9
- """
10
-
11
- from __future__ import annotations
12
-
13
- from reflex import constants
14
- from reflex.components.component import Component
15
- from reflex.components.core.cond import cond
16
- from reflex.vars.base import Var
17
-
18
- route_not_found: Var = Var(_js_expr=constants.ROUTE_NOT_FOUND)
19
-
20
-
21
- class ClientSideRouting(Component):
22
- """The client-side routing component."""
23
-
24
- library = "$/utils/client_side_routing"
25
- tag = "useClientSideRouting"
26
-
27
- def add_hooks(self) -> list[str | Var]:
28
- """Get the hooks to render.
29
-
30
- Returns:
31
- The useClientSideRouting hook.
32
- """
33
- return [f"const {constants.ROUTE_NOT_FOUND} = {self.tag}()"]
34
-
35
- def render(self) -> str:
36
- """Render the component.
37
-
38
- Returns:
39
- Empty string, because this component is only used for its hooks.
40
- """
41
- return ""
42
-
43
-
44
- def wait_for_client_redirect(component: Component) -> Component:
45
- """Wait for a redirect to occur before rendering a component.
46
-
47
- This prevents the 404 page from flashing while the redirect is happening.
48
-
49
- Args:
50
- component: The component to render after the redirect.
51
-
52
- Returns:
53
- The conditionally rendered component.
54
- """
55
- return cond(
56
- route_not_found,
57
- component,
58
- ClientSideRouting.create(),
59
- )
60
-
61
-
62
- def default_404_page() -> Component:
63
- """Render the default 404 page.
64
-
65
- Returns:
66
- The 404 page component.
67
- """
68
- import reflex as rx
69
-
70
- return rx.el.span("404: Page not found")