Skip to content

Commit f69f420

Browse files
authored
expose svg elements at the el level (#4962)
1 parent 5190ff2 commit f69f420

File tree

7 files changed

+108
-4
lines changed

7 files changed

+108
-4
lines changed

reflex/components/core/banner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ def create(cls, **props) -> Component:
382382
),
383383
rx.hstack(
384384
rx.el.svg(
385-
rx.el.svg.path(
385+
rx.el.path(
386386
d="M6.90816 1.34341C7.61776 1.10786 8.38256 1.10786 9.09216 1.34341C9.7989 1.57799 10.3538 2.13435 10.9112 2.91605C11.4668 3.69515 12.0807 4.78145 12.872 6.18175L12.9031 6.23672C13.6946 7.63721 14.3085 8.72348 14.6911 9.60441C15.0755 10.4896 15.267 11.2539 15.1142 11.9881C14.9604 12.7275 14.5811 13.3997 14.0287 13.9079C13.4776 14.4147 12.7273 14.6286 11.7826 14.7313C10.8432 14.8334 9.6143 14.8334 8.0327 14.8334H7.9677C6.38604 14.8334 5.15719 14.8334 4.21778 14.7313C3.27301 14.6286 2.52269 14.4147 1.97164 13.9079C1.41924 13.3997 1.03995 12.7275 0.88613 11.9881C0.733363 11.2539 0.92483 10.4896 1.30926 9.60441C1.69184 8.72348 2.30573 7.63721 3.09722 6.23671L3.12828 6.18175C3.91964 4.78146 4.53355 3.69515 5.08914 2.91605C5.64658 2.13435 6.20146 1.57799 6.90816 1.34341ZM7.3335 11.3334C7.3335 10.9652 7.63063 10.6667 7.99716 10.6667H8.00316C8.3697 10.6667 8.66683 10.9652 8.66683 11.3334C8.66683 11.7016 8.3697 12.0001 8.00316 12.0001H7.99716C7.63063 12.0001 7.3335 11.7016 7.3335 11.3334ZM7.3335 8.66675C7.3335 9.03495 7.63196 9.33341 8.00016 9.33341C8.36836 9.33341 8.66683 9.03495 8.66683 8.66675V6.00008C8.66683 5.63189 8.36836 5.33341 8.00016 5.33341C7.63196 5.33341 7.3335 5.63189 7.3335 6.00008V8.66675Z",
387387
fill_rule="evenodd",
388388
clip_rule="evenodd",

reflex/components/datadisplay/logo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def svg_logo(
1818
"""
1919

2020
def logo_path(d: str):
21-
return rx.el.svg.path(d=d)
21+
return rx.el.path(d=d)
2222

2323
paths = [
2424
"M0 11.5999V0.399902H8.96V4.8799H6.72V2.6399H2.24V4.8799H6.72V7.1199H2.24V11.5999H0ZM6.72 11.5999V7.1199H8.96V11.5999H6.72Z",

reflex/components/el/__init__.pyi

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,29 +90,51 @@ from .elements.inline import u as u
9090
from .elements.inline import wbr as wbr
9191
from .elements.media import Area as Area
9292
from .elements.media import Audio as Audio
93+
from .elements.media import Circle as Circle
94+
from .elements.media import Defs as Defs
95+
from .elements.media import Ellipse as Ellipse
9396
from .elements.media import Embed as Embed
9497
from .elements.media import Iframe as Iframe
9598
from .elements.media import Img as Img
99+
from .elements.media import Line as Line
100+
from .elements.media import LinearGradient as LinearGradient
96101
from .elements.media import Map as Map
97102
from .elements.media import Object as Object
103+
from .elements.media import Path as Path
98104
from .elements.media import Picture as Picture
105+
from .elements.media import Polygon as Polygon
99106
from .elements.media import Portal as Portal
107+
from .elements.media import RadialGradient as RadialGradient
108+
from .elements.media import Rect as Rect
100109
from .elements.media import Source as Source
110+
from .elements.media import Stop as Stop
101111
from .elements.media import Svg as Svg
112+
from .elements.media import Text as Text
102113
from .elements.media import Track as Track
103114
from .elements.media import Video as Video
104115
from .elements.media import area as area
105116
from .elements.media import audio as audio
117+
from .elements.media import circle as circle
118+
from .elements.media import defs as defs
119+
from .elements.media import ellipse as ellipse
106120
from .elements.media import embed as embed
107121
from .elements.media import iframe as iframe
108122
from .elements.media import image as image
109123
from .elements.media import img as img
124+
from .elements.media import line as line
125+
from .elements.media import linear_gradient as linear_gradient
110126
from .elements.media import map as map
111127
from .elements.media import object as object
128+
from .elements.media import path as path
112129
from .elements.media import picture as picture
130+
from .elements.media import polygon as polygon
113131
from .elements.media import portal as portal
132+
from .elements.media import radial_gradient as radial_gradient
133+
from .elements.media import rect as rect
114134
from .elements.media import source as source
135+
from .elements.media import stop as stop
115136
from .elements.media import svg as svg
137+
from .elements.media import text as text
116138
from .elements.media import track as track
117139
from .elements.media import video as video
118140
from .elements.metadata import Base as Base

reflex/components/el/elements/__init__.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,17 @@
6666
"portal",
6767
"source",
6868
"svg",
69+
"text",
70+
"line",
71+
"circle",
72+
"ellipse",
73+
"rect",
74+
"polygon",
75+
"path",
76+
"stop",
77+
"linear_gradient",
78+
"radial_gradient",
79+
"defs",
6980
],
7081
"metadata": [
7182
"base",
@@ -128,7 +139,15 @@
128139

129140
EXCLUDE = ["del_", "Del", "image"]
130141
for v in _MAPPING.values():
131-
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
142+
from reflex.utils.format import to_camel_case
143+
144+
v.extend(
145+
[
146+
to_camel_case(mod)[0].upper() + to_camel_case(mod)[1:]
147+
for mod in v
148+
if mod not in EXCLUDE
149+
]
150+
)
132151

133152
_SUBMOD_ATTRS: dict[str, list[str]] = _MAPPING
134153

reflex/components/el/elements/__init__.pyi

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,29 +89,51 @@ from .inline import u as u
8989
from .inline import wbr as wbr
9090
from .media import Area as Area
9191
from .media import Audio as Audio
92+
from .media import Circle as Circle
93+
from .media import Defs as Defs
94+
from .media import Ellipse as Ellipse
9295
from .media import Embed as Embed
9396
from .media import Iframe as Iframe
9497
from .media import Img as Img
98+
from .media import Line as Line
99+
from .media import LinearGradient as LinearGradient
95100
from .media import Map as Map
96101
from .media import Object as Object
102+
from .media import Path as Path
97103
from .media import Picture as Picture
104+
from .media import Polygon as Polygon
98105
from .media import Portal as Portal
106+
from .media import RadialGradient as RadialGradient
107+
from .media import Rect as Rect
99108
from .media import Source as Source
109+
from .media import Stop as Stop
100110
from .media import Svg as Svg
111+
from .media import Text as Text
101112
from .media import Track as Track
102113
from .media import Video as Video
103114
from .media import area as area
104115
from .media import audio as audio
116+
from .media import circle as circle
117+
from .media import defs as defs
118+
from .media import ellipse as ellipse
105119
from .media import embed as embed
106120
from .media import iframe as iframe
107121
from .media import image as image
108122
from .media import img as img
123+
from .media import line as line
124+
from .media import linear_gradient as linear_gradient
109125
from .media import map as map
110126
from .media import object as object
127+
from .media import path as path
111128
from .media import picture as picture
129+
from .media import polygon as polygon
112130
from .media import portal as portal
131+
from .media import radial_gradient as radial_gradient
132+
from .media import rect as rect
113133
from .media import source as source
134+
from .media import stop as stop
114135
from .media import svg as svg
136+
from .media import text as text
115137
from .media import track as track
116138
from .media import video as video
117139
from .metadata import Base as Base
@@ -287,6 +309,17 @@ _MAPPING = {
287309
"portal",
288310
"source",
289311
"svg",
312+
"text",
313+
"line",
314+
"circle",
315+
"ellipse",
316+
"rect",
317+
"polygon",
318+
"path",
319+
"stop",
320+
"linear_gradient",
321+
"radial_gradient",
322+
"defs",
290323
],
291324
"metadata": ["base", "head", "link", "meta", "title", "style"],
292325
"other": ["details", "dialog", "summary", "slot", "template", "math", "html"],
@@ -340,4 +373,12 @@ _MAPPING = {
340373
}
341374
EXCLUDE = ["del_", "Del", "image"]
342375
for v in _MAPPING.values():
343-
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
376+
from reflex.utils.format import to_camel_case
377+
378+
v.extend(
379+
[
380+
to_camel_case(mod)[0].upper() + to_camel_case(mod)[1:]
381+
for mod in v
382+
if mod not in EXCLUDE
383+
]
384+
)

reflex/components/el/elements/media.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,17 @@ class SVG(ComponentNamespace):
501501
__call__ = staticmethod(Svg.create)
502502

503503

504+
text = Text.create
505+
line = Line.create
506+
circle = Circle.create
507+
ellipse = Ellipse.create
508+
rect = Rect.create
509+
polygon = Polygon.create
510+
path = Path.create
511+
stop = Stop.create
512+
linear_gradient = LinearGradient.create
513+
radial_gradient = RadialGradient.create
514+
defs = Defs.create
504515
area = Area.create
505516
audio = Audio.create
506517
image = img = Img.create

reflex/components/el/elements/media.pyi

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6345,6 +6345,17 @@ class SVG(ComponentNamespace):
63456345
"""
63466346
...
63476347

6348+
text = Text.create
6349+
line = Line.create
6350+
circle = Circle.create
6351+
ellipse = Ellipse.create
6352+
rect = Rect.create
6353+
polygon = Polygon.create
6354+
path = Path.create
6355+
stop = Stop.create
6356+
linear_gradient = LinearGradient.create
6357+
radial_gradient = RadialGradient.create
6358+
defs = Defs.create
63486359
area = Area.create
63496360
audio = Audio.create
63506361
image = img = Img.create

0 commit comments

Comments
 (0)