script.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. """Wrapper for the script element. Uses the Helmet component to manage the head."""
  2. from __future__ import annotations
  3. from reflex.components import el as elements
  4. from reflex.components.core.helmet import helmet
  5. from reflex.utils import console
  6. class Script(elements.Script):
  7. """Wrapper for the script element."""
  8. @classmethod
  9. def create(
  10. cls,
  11. *children,
  12. **props,
  13. ):
  14. """Display the script element.
  15. Args:
  16. *children: The children of the element.
  17. **props: The properties of the element.
  18. Returns:
  19. The script element.
  20. Raises:
  21. ValueError: If neither children nor src is specified.
  22. """
  23. async_ = props.pop("async_", None)
  24. char_set = props.pop("char_set", None)
  25. cross_origin = props.pop("cross_origin", None)
  26. defer = props.pop("defer", None)
  27. integrity = props.pop("integrity", None)
  28. referrer_policy = props.pop("referrer_policy", None)
  29. src = props.pop("src", None)
  30. type = props.pop("type", None)
  31. key = props.pop("key", None)
  32. id = props.pop("id", None)
  33. class_name = props.pop("class_name", None)
  34. autofocus = props.pop("autofocus", None)
  35. custom_attrs = props.pop("custom_attrs", None)
  36. on_mount = props.pop("on_mount", None)
  37. on_unmount = props.pop("on_unmount", None)
  38. if props:
  39. console.warn(
  40. f"rx.script does not support the following properties: {list(props.keys())}"
  41. )
  42. if not children and not src:
  43. raise ValueError(
  44. "You must specify either children or src for the script element."
  45. )
  46. return helmet(
  47. elements.Script.create(
  48. *children,
  49. async_=async_,
  50. char_set=char_set,
  51. cross_origin=cross_origin,
  52. defer=defer,
  53. integrity=integrity,
  54. referrer_policy=referrer_policy,
  55. src=src,
  56. type=type,
  57. key=key,
  58. id=id,
  59. class_name=class_name,
  60. autofocus=autofocus,
  61. custom_attrs=custom_attrs,
  62. on_mount=on_mount,
  63. on_unmount=on_unmount,
  64. )
  65. )
  66. script = Script.create