__init__.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. """Namespace for experimental features."""
  2. from types import SimpleNamespace
  3. from reflex.components.datadisplay.shiki_code_block import code_block as code_block
  4. from reflex.components.props import PropsBase
  5. from reflex.components.radix.themes.components.progress import progress as progress
  6. from reflex.components.sonner.toast import toast as toast
  7. from ..utils.console import warn
  8. from . import hooks as hooks
  9. from .assets import asset as asset
  10. from .client_state import ClientStateVar as ClientStateVar
  11. from .layout import layout as layout
  12. from .misc import run_in_thread as run_in_thread
  13. warn(
  14. "`rx._x` contains experimental features and might be removed at any time in the future .",
  15. )
  16. _EMITTED_PROMOTION_WARNINGS = set()
  17. class ExperimentalNamespace(SimpleNamespace):
  18. """Namespace for experimental features."""
  19. @property
  20. def toast(self):
  21. """Temporary property returning the toast namespace.
  22. Remove this property when toast is fully promoted.
  23. Returns:
  24. The toast namespace.
  25. """
  26. self.register_component_warning("toast")
  27. return toast
  28. @property
  29. def progress(self):
  30. """Temporary property returning the toast namespace.
  31. Remove this property when toast is fully promoted.
  32. Returns:
  33. The toast namespace.
  34. """
  35. self.register_component_warning("progress")
  36. return progress
  37. @staticmethod
  38. def register_component_warning(component_name: str):
  39. """Add component to emitted warnings and throw a warning if it
  40. doesn't exist.
  41. Args:
  42. component_name: name of the component.
  43. """
  44. if component_name not in _EMITTED_PROMOTION_WARNINGS:
  45. _EMITTED_PROMOTION_WARNINGS.add(component_name)
  46. warn(f"`rx._x.{component_name}` was promoted to `rx.{component_name}`.")
  47. _x = ExperimentalNamespace(
  48. asset=asset,
  49. client_state=ClientStateVar.create,
  50. hooks=hooks,
  51. layout=layout,
  52. PropsBase=PropsBase,
  53. run_in_thread=run_in_thread,
  54. code_block=code_block,
  55. )