git.iko.soy/rowtype-yoga/purescript-yoga-react-dom
on main help sign in
feat(svg): add SVG element modules (svg, g, path, circle, line, polygon, rect)

Adds Yoga.React.DOM.SVG namespace following the same per-tag module pattern as HTML. All shapes share a single permissive SVGAttributes row because SVG presentation attributes (fill/stroke/opacity/…) apply to nearly every element. Bumps to 2.1.0.

commitfb7454979280f51676b37f39e16c02ff762cc3e0 authorMark <mark.eibes@gmail.com> dateWed 27 May 2026, 22:22 (4 months ago) parentc887c46
11 files changed+213−525
spago.lock+23−521 spago.yaml+4−4 src/Yoga/React/DOM/SVG.purs+19 src/Yoga/React/DOM/SVG/Attributes.purs+76 src/Yoga/React/DOM/SVG/Circle.purs+12 src/Yoga/React/DOM/SVG/G.purs+13 src/Yoga/React/DOM/SVG/Line.purs+12 src/Yoga/React/DOM/SVG/Path.purs+12 src/Yoga/React/DOM/SVG/Polygon.purs+12 src/Yoga/React/DOM/SVG/Rect.purs+12 src/Yoga/React/DOM/SVG/Svg.purs+18
spago.lock+23−521
@@ -68,512 +68,13 @@
6868 }
6969 }
7070 },
71− "package_set": {
72− "address": {
73− "registry": "51.2.0"
74− },
75− "compiler": ">=0.15.15 <0.16.0",
76− "content": {
77− "abc-parser": "2.0.1",
78− "ace": "9.1.0",
79− "address-rfc2821": "0.1.1",
80− "aff": "7.1.0",
81− "aff-bus": "6.0.0",
82− "aff-coroutines": "9.0.0",
83− "aff-promise": "4.0.0",
84− "aff-retry": "2.0.0",
85− "affjax": "13.0.0",
86− "affjax-node": "1.0.0",
87− "affjax-web": "1.0.0",
88− "ansi": "7.0.0",
89− "apexcharts": "0.5.0",
90− "applicative-phases": "1.0.0",
91− "argonaut": "9.0.0",
92− "argonaut-aeson-generic": "0.4.1",
93− "argonaut-codecs": "9.1.0",
94− "argonaut-core": "7.0.0",
95− "argonaut-generic": "8.0.0",
96− "argonaut-traversals": "10.0.0",
97− "argparse-basic": "2.0.0",
98− "array-builder": "0.1.2",
99− "array-search": "0.5.6",
100− "arraybuffer": "13.2.0",
101− "arraybuffer-builder": "3.1.0",
102− "arraybuffer-types": "3.0.2",
103− "arrays": "7.3.0",
104− "arrays-extra": "0.6.1",
105− "arrays-zipper": "2.0.1",
106− "ask": "1.0.0",
107− "assert": "6.0.0",
108− "assert-multiple": "0.3.4",
109− "avar": "5.0.0",
110− "b64": "0.0.8",
111− "barbies": "1.0.1",
112− "barlow-lens": "0.9.0",
113− "bifunctors": "6.0.0",
114− "bigints": "7.0.1",
115− "bolson": "0.3.9",
116− "bookhound": "0.1.7",
117− "bower-json": "3.0.0",
118− "call-by-name": "4.0.1",
119− "canvas": "6.0.0",
120− "canvas-action": "9.0.0",
121− "cartesian": "1.0.6",
122− "catenable-lists": "7.0.0",
123− "cbor-stream": "1.0.4",
124− "chameleon": "1.0.0",
125− "chameleon-halogen": "1.0.3",
126− "chameleon-react-basic": "1.1.0",
127− "chameleon-styled": "2.5.0",
128− "chameleon-transformers": "1.0.0",
129− "channel": "1.0.0",
130− "checked-exceptions": "3.1.1",
131− "choku": "1.0.1",
132− "classless": "0.1.1",
133− "classless-arbitrary": "0.1.1",
134− "classless-decode-json": "0.1.1",
135− "classless-encode-json": "0.1.3",
136− "classnames": "2.0.0",
137− "codec": "6.1.0",
138− "codec-argonaut": "10.0.0",
139− "codec-json": "1.2.0",
140− "colors": "7.0.1",
141− "concur-core": "0.5.0",
142− "concur-react": "0.5.0",
143− "concurrent-queues": "3.0.0",
144− "console": "6.1.0",
145− "const": "6.0.0",
146− "contravariant": "6.0.0",
147− "control": "6.0.0",
148− "convertable-options": "1.0.0",
149− "coroutines": "7.0.0",
150− "css": "6.0.0",
151− "css-frameworks": "1.0.1",
152− "csv-stream": "2.0.2",
153− "data-mvc": "0.0.2",
154− "datetime": "6.1.0",
155− "datetime-parsing": "0.2.0",
156− "debounce": "0.1.0",
157− "debug": "6.0.2",
158− "decimals": "7.1.0",
159− "default-values": "1.0.1",
160− "deku": "0.9.23",
161− "deno": "0.0.5",
162− "dissect": "1.0.0",
163− "distributive": "6.0.0",
164− "dom-filereader": "7.0.0",
165− "dom-indexed": "12.0.0",
166− "dom-simple": "0.4.0",
167− "dotenv": "4.0.3",
168− "droplet": "0.6.0",
169− "dts": "1.0.0",
170− "dual-numbers": "1.0.2",
171− "dynamic-buffer": "3.0.1",
172− "echarts-simple": "0.0.1",
173− "effect": "4.0.0",
174− "either": "6.1.0",
175− "elmish": "0.11.3",
176− "elmish-enzyme": "0.1.1",
177− "elmish-hooks": "0.10.0",
178− "elmish-html": "0.8.2",
179− "elmish-testing-library": "0.3.2",
180− "email-validate": "7.0.0",
181− "encoding": "0.0.9",
182− "enums": "6.0.1",
183− "env-names": "0.3.4",
184− "error": "2.0.0",
185− "eta-conversion": "0.3.2",
186− "exceptions": "6.0.0",
187− "exists": "6.0.0",
188− "exitcodes": "4.0.0",
189− "expect-inferred": "3.0.0",
190− "ezfetch": "1.0.0",
191− "fahrtwind": "2.0.0",
192− "fallback": "0.1.0",
193− "fast-vect": "1.2.0",
194− "fetch": "4.1.0",
195− "fetch-argonaut": "1.0.1",
196− "fetch-core": "5.1.0",
197− "fetch-yoga-json": "1.1.0",
198− "ffi-simple": "0.5.1",
199− "fft-js": "0.1.0",
200− "filterable": "5.0.0",
201− "fix-functor": "0.1.0",
202− "fixed-points": "7.0.0",
203− "fixed-precision": "5.0.0",
204− "flame": "1.3.0",
205− "float32": "2.0.0",
206− "fmt": "0.2.1",
207− "foldable-traversable": "6.0.0",
208− "foldable-traversable-extra": "0.0.6",
209− "foreign": "7.0.0",
210− "foreign-object": "4.1.0",
211− "foreign-readwrite": "3.4.0",
212− "forgetmenot": "0.1.0",
213− "fork": "6.0.0",
214− "form-urlencoded": "7.0.0",
215− "formatters": "7.0.0",
216− "framer-motion": "1.0.1",
217− "free": "7.1.0",
218− "freeap": "7.0.0",
219− "freer-free": "0.0.1",
220− "freet": "7.0.0",
221− "functions": "6.0.0",
222− "functor1": "3.0.0",
223− "functors": "5.0.0",
224− "fuzzy": "0.4.0",
225− "gen": "4.0.0",
226− "generate-values": "1.0.1",
227− "generic-router": "0.0.1",
228− "geojson": "0.0.5",
229− "geometry-plane": "1.0.3",
230− "gojs": "0.1.1",
231− "grain": "3.0.0",
232− "grain-router": "3.0.0",
233− "grain-virtualized": "3.0.0",
234− "graphs": "8.1.0",
235− "group": "4.1.1",
236− "halogen": "7.0.0",
237− "halogen-bootstrap5": "5.3.2",
238− "halogen-canvas": "1.0.0",
239− "halogen-css": "10.0.0",
240− "halogen-echarts-simple": "0.0.4",
241− "halogen-formless": "4.0.3",
242− "halogen-helix": "1.0.0",
243− "halogen-hooks": "0.6.3",
244− "halogen-hooks-extra": "0.9.0",
245− "halogen-infinite-scroll": "1.1.0",
246− "halogen-store": "0.5.4",
247− "halogen-storybook": "2.0.0",
248− "halogen-subscriptions": "2.0.0",
249− "halogen-svg-elems": "8.0.0",
250− "halogen-typewriter": "1.0.4",
251− "halogen-vdom": "8.0.0",
252− "halogen-vdom-string-renderer": "0.5.0",
253− "halogen-xterm": "2.0.0",
254− "heckin": "2.0.1",
255− "heterogeneous": "0.6.0",
256− "homogeneous": "0.4.0",
257− "http-methods": "6.0.0",
258− "httpurple": "4.0.0",
259− "humdrum": "0.0.1",
260− "hyrule": "2.3.8",
261− "identity": "6.0.0",
262− "identy": "4.0.1",
263− "indexed-db": "1.0.0",
264− "indexed-monad": "3.0.0",
265− "int64": "3.0.0",
266− "integers": "6.0.0",
267− "interpolate": "5.0.2",
268− "intersection-observer": "1.0.1",
269− "invariant": "6.0.0",
270− "jarilo": "1.0.1",
271− "jelly": "0.10.0",
272− "jelly-router": "0.3.0",
273− "jelly-signal": "0.4.0",
274− "jest": "1.0.0",
275− "js-abort-controller": "1.0.0",
276− "js-bigints": "2.2.1",
277− "js-date": "8.0.0",
278− "js-fetch": "0.2.1",
279− "js-fileio": "3.0.0",
280− "js-intl": "1.0.4",
281− "js-iterators": "0.1.1",
282− "js-maps": "0.1.2",
283− "js-promise": "1.0.0",
284− "js-promise-aff": "1.0.0",
285− "js-timers": "6.1.0",
286− "js-uri": "3.1.0",
287− "json": "1.1.0",
288− "json-codecs": "5.0.0",
289− "justifill": "0.5.0",
290− "jwt": "0.0.9",
291− "labeled-data": "0.2.0",
292− "language-cst-parser": "0.14.0",
293− "lazy": "6.0.0",
294− "lazy-joe": "1.0.0",
295− "lcg": "4.0.0",
296− "leibniz": "5.0.0",
297− "leveldb": "1.0.1",
298− "liminal": "1.0.1",
299− "linalg": "6.0.0",
300− "lists": "7.0.0",
301− "literals": "1.0.2",
302− "logging": "3.0.0",
303− "logging-journald": "0.4.0",
304− "lumi-components": "18.0.0",
305− "machines": "7.0.0",
306− "maps-eager": "0.4.1",
307− "marionette": "1.0.0",
308− "marionette-react-basic-hooks": "0.1.1",
309− "marked": "0.1.0",
310− "matrices": "5.0.1",
311− "matryoshka": "1.0.0",
312− "maybe": "6.0.0",
313− "media-types": "6.0.0",
314− "meowclient": "1.0.0",
315− "midi": "4.0.0",
316− "milkis": "9.0.0",
317− "minibench": "4.0.1",
318− "mmorph": "7.0.0",
319− "monad-control": "5.0.0",
320− "monad-logger": "1.3.1",
321− "monad-loops": "0.5.0",
322− "monad-unlift": "1.0.1",
323− "monoid-extras": "0.0.1",
324− "monoidal": "0.16.0",
325− "morello": "0.4.0",
326− "mote": "3.0.0",
327− "motsunabe": "2.0.0",
328− "mvc": "0.0.1",
329− "mysql": "6.0.1",
330− "n3": "0.1.0",
331− "nano-id": "1.1.0",
332− "nanoid": "0.1.0",
333− "naturals": "3.0.0",
334− "nested-functor": "0.2.1",
335− "newtype": "5.0.0",
336− "nextjs": "0.1.1",
337− "nextui": "0.2.0",
338− "node-buffer": "9.0.0",
339− "node-child-process": "11.1.0",
340− "node-event-emitter": "3.0.0",
341− "node-execa": "5.0.0",
342− "node-fs": "9.1.0",
343− "node-glob-basic": "1.3.0",
344− "node-http": "9.1.0",
345− "node-http2": "1.1.1",
346− "node-human-signals": "1.0.0",
347− "node-net": "5.1.0",
348− "node-os": "5.1.0",
349− "node-path": "5.0.0",
350− "node-process": "11.2.0",
351− "node-readline": "8.1.0",
352− "node-sqlite3": "8.0.0",
353− "node-stream-pipes": "1.4.1",
354− "node-streams": "9.0.0",
355− "node-tls": "0.3.1",
356− "node-url": "7.0.1",
357− "node-zlib": "0.4.0",
358− "nonempty": "7.0.0",
359− "now": "6.0.0",
360− "npm-package-json": "2.0.0",
361− "nullable": "6.0.0",
362− "numberfield": "0.1.0",
363− "numbers": "9.0.1",
364− "oak": "3.1.1",
365− "oak-debug": "1.2.2",
366− "object-maps": "0.3.0",
367− "ocarina": "1.5.4",
368− "open-folds": "6.3.0",
369− "open-memoize": "6.1.0",
370− "open-pairing": "6.1.0",
371− "options": "7.0.0",
372− "optparse": "5.0.1",
373− "ordered-collections": "3.2.0",
374− "ordered-set": "0.4.0",
375− "orders": "6.0.0",
376− "owoify": "1.2.0",
377− "pairs": "9.0.1",
378− "parallel": "7.0.0",
379− "parsing": "10.2.0",
380− "parsing-dataview": "3.2.4",
381− "partial": "4.0.0",
382− "pathy": "9.0.0",
383− "pha": "0.13.0",
384− "phaser": "0.7.0",
385− "phylio": "1.1.2",
386− "pipes": "8.0.0",
387− "pirates-charm": "0.0.1",
388− "pmock": "0.9.0",
389− "point-free": "1.0.0",
390− "pointed-list": "0.5.1",
391− "polymorphic-vectors": "4.0.0",
392− "posix-types": "6.0.0",
393− "postgresql": "1.6.3",
394− "precise": "6.0.0",
395− "precise-datetime": "7.0.0",
396− "prelude": "6.0.1",
397− "prettier-printer": "3.0.0",
398− "profunctor": "6.0.1",
399− "profunctor-lenses": "8.0.0",
400− "protobuf": "4.3.0",
401− "psa-utils": "8.0.0",
402− "psci-support": "6.0.0",
403− "punycode": "1.0.0",
404− "qualified-do": "2.2.0",
405− "quantities": "12.2.0",
406− "quickcheck": "8.0.1",
407− "quickcheck-combinators": "0.1.3",
408− "quickcheck-laws": "7.0.0",
409− "quickcheck-utf8": "0.0.0",
410− "random": "6.0.0",
411− "rationals": "6.0.0",
412− "rdf": "0.1.0",
413− "react": "11.0.0",
414− "react-aria": "0.2.0",
415− "react-basic": "17.0.0",
416− "react-basic-classic": "3.0.0",
417− "react-basic-dnd": "10.1.0",
418− "react-basic-dom": "6.1.0",
419− "react-basic-emotion": "7.1.0",
420− "react-basic-hooks": "8.2.0",
421− "react-basic-storybook": "2.0.0",
422− "react-dom": "8.0.0",
423− "react-halo": "3.0.0",
424− "react-icons": "1.1.5",
425− "react-markdown": "0.1.0",
426− "react-testing-library": "4.0.1",
427− "react-virtuoso": "1.0.0",
428− "reactix": "0.6.1",
429− "read": "1.0.1",
430− "recharts": "1.1.0",
431− "record": "4.0.0",
432− "record-extra": "5.0.1",
433− "record-ptional-fields": "0.1.2",
434− "record-studio": "1.0.4",
435− "refs": "6.0.0",
436− "remotedata": "5.0.1",
437− "resize-observer": "1.0.0",
438− "resource": "2.0.1",
439− "resourcet": "1.0.0",
440− "result": "1.0.3",
441− "return": "0.2.0",
442− "ring-modules": "5.0.1",
443− "rito": "0.3.4",
444− "rough-notation": "1.0.2",
445− "routing": "11.0.0",
446− "routing-duplex": "0.7.0",
447− "run": "5.0.0",
448− "safe-coerce": "2.0.0",
449− "safely": "4.0.1",
450− "school-of-music": "1.3.0",
451− "selection-foldable": "0.2.0",
452− "selective-functors": "1.0.1",
453− "semirings": "7.0.0",
454− "signal": "13.0.0",
455− "simple-emitter": "3.0.1",
456− "simple-i18n": "2.0.1",
457− "simple-json": "9.0.0",
458− "simple-json-generics": "0.2.1",
459− "simple-ulid": "3.0.0",
460− "sized-matrices": "1.0.0",
461− "sized-vectors": "5.0.2",
462− "slug": "3.0.8",
463− "small-ffi": "4.0.1",
464− "soundfonts": "4.1.0",
465− "sparse-matrices": "1.3.0",
466− "sparse-polynomials": "2.0.5",
467− "spec": "7.6.0",
468− "spec-mocha": "5.1.0",
469− "spec-quickcheck": "5.0.0",
470− "splitmix": "2.1.0",
471− "ssrs": "1.0.0",
472− "st": "6.2.0",
473− "statistics": "0.3.2",
474− "strictlypositiveint": "1.0.1",
475− "string-parsers": "8.0.0",
476− "strings": "6.0.1",
477− "strings-extra": "4.0.0",
478− "stringutils": "0.0.12",
479− "substitute": "0.2.3",
480− "supply": "0.2.0",
481− "svg-parser": "3.0.0",
482− "systemd-journald": "0.3.0",
483− "tagged": "4.0.2",
484− "tailrec": "6.1.0",
485− "tecton": "0.2.1",
486− "tecton-halogen": "0.2.0",
487− "test-unit": "17.0.0",
488− "thermite": "6.3.1",
489− "thermite-dom": "0.3.1",
490− "these": "6.0.0",
491− "toestand": "0.9.0",
492− "transformation-matrix": "1.0.1",
493− "transformers": "6.0.0",
494− "tree-rose": "4.0.2",
495− "ts-bridge": "4.0.0",
496− "tuples": "7.0.0",
497− "two-or-more": "1.0.0",
498− "type-equality": "4.0.1",
499− "typedenv": "2.0.1",
500− "typelevel": "6.0.0",
501− "typelevel-lists": "2.1.0",
502− "typelevel-peano": "1.0.1",
503− "typelevel-prelude": "7.0.0",
504− "typelevel-regex": "0.0.3",
505− "typelevel-rows": "0.1.0",
506− "typisch": "0.4.0",
507− "uint": "7.0.0",
508− "ulid": "3.0.1",
509− "uncurried-transformers": "1.1.0",
510− "undefined": "2.0.0",
511− "undefined-is-not-a-problem": "1.1.0",
512− "unfoldable": "6.0.0",
513− "unicode": "6.0.0",
514− "unique": "0.6.1",
515− "unlift": "1.0.1",
516− "unordered-collections": "3.1.0",
517− "unsafe-coerce": "6.0.0",
518− "unsafe-reference": "5.0.0",
519− "untagged-to-tagged": "0.1.4",
520− "untagged-union": "1.0.0",
521− "uri": "9.0.0",
522− "url-immutable": "1.0.0",
523− "uuid": "9.0.0",
524− "uuidv4": "1.0.0",
525− "validation": "6.0.0",
526− "variant": "8.0.0",
527− "variant-encodings": "2.0.0",
528− "vectorfield": "1.0.1",
529− "vectors": "2.1.0",
530− "versions": "7.0.0",
531− "visx": "0.0.2",
532− "web-clipboard": "5.0.0",
533− "web-cssom": "2.0.0",
534− "web-cssom-view": "0.1.0",
535− "web-dom": "6.0.0",
536− "web-dom-parser": "8.0.0",
537− "web-dom-xpath": "3.0.0",
538− "web-encoding": "3.0.0",
539− "web-events": "4.0.0",
540− "web-fetch": "4.0.1",
541− "web-file": "4.0.0",
542− "web-geometry": "0.1.0",
543− "web-html": "4.1.0",
544− "web-pointerevents": "2.0.0",
545− "web-proletarian": "1.0.0",
546− "web-promise": "3.2.0",
547− "web-resize-observer": "2.1.0",
548− "web-router": "1.0.0",
549− "web-socket": "4.0.0",
550− "web-storage": "5.0.0",
551− "web-streams": "4.0.0",
552− "web-touchevents": "4.0.0",
553− "web-uievents": "5.0.0",
554− "web-url": "2.0.0",
555− "web-workers": "1.1.0",
556− "web-xhr": "5.0.1",
557− "webextension-polyfill": "0.1.0",
558− "webgpu": "0.0.1",
559− "which": "2.0.0",
560− "xterm": "1.0.0",
561− "yoga-fetch": "1.0.1",
562− "yoga-json": "5.1.0",
563− "yoga-om": "0.1.0",
564− "yoga-postgres": "6.0.0",
565− "yoga-tree": "1.0.0",
566− "z3": "0.0.2",
567− "zipperarray": "2.0.0"
568− }
569− },
57071 "extra_packages": {}
57172 },
57273 "packages": {
57374 "aff": {
57475 "type": "registry",
575− "version": "7.1.0",
576− "integrity": "sha256-/nOpDQVnKIoP1pQ1ZZBYpadK0TuMlG4WwufGzJpsfD0=",
76+ "version": "8.0.0",
77+ "integrity": "sha256-9BRIrSdRoYybfiUmBqgKJ66cPqxYHb277bVWQMn/9sg=",
57778 "dependencies": [
57879 "control",
57980 "datetime",
@@ -645,8 +146,8 @@
645146 },
646147 "avar": {
647148 "type": "registry",
648− "version": "5.0.0",
649− "integrity": "sha256-9tAeYrHAFSPkbJ7UCtpyLq7QawSrwf/nwLT9BcmfUx8=",
149+ "version": "5.0.1",
150+ "integrity": "sha256-8V4SxF4TIWZ9Ik1P4lPzIRUAZeFBe8w5WA2VcCEKsIk=",
650151 "dependencies": [
651152 "aff",
652153 "effect",
@@ -659,8 +160,8 @@
659160 },
660161 "bifunctors": {
661162 "type": "registry",
662− "version": "6.0.0",
663− "integrity": "sha256-tXhmlMiyVy6mbUreVZQt/2EGEsPr0T1PjJi+YCG5J7E=",
163+ "version": "6.1.0",
164+ "integrity": "sha256-CvZRb8uI75eKIqiYntR+k05Wk6tKlMS5w8sCA2AFna0=",
664165 "dependencies": [
665166 "const",
666167 "either",
@@ -796,8 +297,8 @@
796297 },
797298 "exceptions": {
798299 "type": "registry",
799− "version": "6.0.0",
800− "integrity": "sha256-z65UIKhOyVXzV8QUxtky4OiYVESNPegtuBFUdAddbTM=",
300+ "version": "6.1.0",
301+ "integrity": "sha256-nRrr+N0wk0TUFOWLR7e1n1oxcXo/X345bQUtoY9lW6A=",
801302 "dependencies": [
802303 "effect",
803304 "either",
@@ -1091,8 +592,8 @@
1091592 },
1092593 "node-fs": {
1093594 "type": "registry",
1094− "version": "9.1.0",
1095− "integrity": "sha256-W+tEwFVdXsaD/m26LYedlec6nsAgaFhXqrgvhZWqdGc=",
595+ "version": "9.2.0",
596+ "integrity": "sha256-fxioTSm9y47WuYs9F/7nxCh/RVDCl3Kr3Hg779J4SJA=",
1096597 "dependencies": [
1097598 "aff",
1098599 "datetime",
@@ -1115,16 +616,16 @@
1115616 },
1116617 "node-path": {
1117618 "type": "registry",
1118− "version": "5.0.0",
1119− "integrity": "sha256-ki3WfT2DT1mj6wECNmhJ99d/a9aqohne3Gj48yH53Tk=",
619+ "version": "5.0.1",
620+ "integrity": "sha256-j7n/SmpVz0FOMJl4XZop3ofJ+MeIPkMNqUEUKHEL6Us=",
1120621 "dependencies": [
1121622 "effect"
1122623 ]
1123624 },
1124625 "node-streams": {
1125626 "type": "registry",
1126− "version": "9.0.0",
1127− "integrity": "sha256-EUpw7EDZCHstxj0vqJUR4BXORmRBN2LTlHw6/te+jxs=",
627+ "version": "9.0.1",
628+ "integrity": "sha256-yuVGm/R/tBr4Nphi+a1a984Z0fkmN9Q5wWtSmbmJTpA=",
1128629 "dependencies": [
1129630 "aff",
1130631 "arrays",
@@ -1262,8 +763,8 @@
1262763 },
1263764 "prelude": {
1264765 "type": "registry",
1265− "version": "6.0.1",
1266− "integrity": "sha256-qicw3g9AkjIxyVp73o1dF9BiTCMWouPk9rYe6AASBCU=",
766+ "version": "6.0.2",
767+ "integrity": "sha256-IqykrDRquGUD/LRSad7y75hZv3bUsGQ4knc8tdez8Qw=",
1267768 "dependencies": []
1268769 },
1269770 "profunctor": {
@@ -1353,8 +854,8 @@
1353854 },
1354855 "spec": {
1355856 "type": "registry",
1356− "version": "7.6.0",
1357− "integrity": "sha256-CLwN4VGULEM64zwgffT1kQ0BuxAiwjarCW7gSexcQvs=",
857+ "version": "8.1.2",
858+ "integrity": "sha256-klPPJ6lBQI1CGOAdLJ+ZoGRt8XZippkTKjn53BrSkL0=",
1358859 "dependencies": [
1359860 "aff",
1360861 "ansi",
@@ -1437,8 +938,8 @@
1437938 },
1438939 "transformers": {
1439940 "type": "registry",
1440− "version": "6.0.0",
1441− "integrity": "sha256-Nl3yXAIeeTzP6MyrkazkK7pbgeVqUm+ynLv7U5cpJYQ=",
941+ "version": "6.1.0",
942+ "integrity": "sha256-QJmgNT/y7ljPHSsXaW4zxF/982BFiQ90KNL1g/NtEOQ=",
1442943 "dependencies": [
1443944 "control",
1444945 "distributive",
@@ -1451,6 +952,7 @@
1451952 "maybe",
1452953 "newtype",
1453954 "prelude",
955+ "st",
1454956 "tailrec",
1455957 "tuples",
1456958 "unfoldable"
@@ -1563,8 +1065,8 @@
15631065 },
15641066 "web-html": {
15651067 "type": "registry",
1566− "version": "4.1.0",
1567− "integrity": "sha256-sMwdo5u2DBOFoQzcJLKBp9b4ChU8YSRBjSi9g1Wk42g=",
1068+ "version": "4.1.1",
1069+ "integrity": "sha256-yOuZJGUxFrivHKpo/jKuKzFZaq6PPPE64ftSysXFssk=",
15681070 "dependencies": [
15691071 "effect",
15701072 "enums",
spago.yaml+4−4
@@ -5,16 +5,16 @@ package:
55 - forgetmenot: ">=0.1.0 <0.2.0"
66 - functions: ">=6.0.0 <7.0.0"
77 - nullable: ">=6.0.0 <7.0.0"
8− - prelude: ">=6.0.1 <7.0.0"
8+ - prelude: ">=6.0.2 <7.0.0"
99 - react-basic: ">=17.0.0 <18.0.0"
10− - react-basic-hooks: ">=8.2.0 <10.0.0"
10+ - react-basic-hooks: ">=8.2.0 <9.0.0"
1111 - record: ">=4.0.0 <5.0.0"
1212 - type-equality: ">=4.0.1 <5.0.0"
1313 - typelevel-prelude: ">=7.0.0 <8.0.0"
1414 - unsafe-coerce: ">=6.0.0 <7.0.0"
1515 - web-dom: ">=6.0.0 <7.0.0"
1616 - web-events: ">=4.0.0 <5.0.0"
17− - web-html: ">=4.1.0 <5.0.0"
17+ - web-html: ">=4.1.1 <5.0.0"
1818 - web-touchevents: ">=4.0.0 <5.0.0"
1919 name: yoga-react-dom
2020 test:
@@ -30,7 +30,7 @@ package:
3030 # Optional section for configuring the `spago publish` command.
3131 # If you intend to publish your package, this section becomes mandatory.
3232 publish:
33− version: 2.0.1
33+ version: 2.1.0
3434 license: WTFPL
3535 location:
3636 githubOwner: rowtype-yoga
src/Yoga/React/DOM/SVG.pursnew file+19
@@ -0,0 +1,19 @@
1+module Yoga.React.DOM.SVG
2+ ( module Yoga.React.DOM.SVG.Attributes
3+ , module Yoga.React.DOM.SVG.Svg
4+ , module Yoga.React.DOM.SVG.G
5+ , module Yoga.React.DOM.SVG.Path
6+ , module Yoga.React.DOM.SVG.Circle
7+ , module Yoga.React.DOM.SVG.Line
8+ , module Yoga.React.DOM.SVG.Polygon
9+ , module Yoga.React.DOM.SVG.Rect
10+ ) where
11+
12+import Yoga.React.DOM.SVG.Attributes
13+import Yoga.React.DOM.SVG.Svg
14+import Yoga.React.DOM.SVG.G
15+import Yoga.React.DOM.SVG.Path
16+import Yoga.React.DOM.SVG.Circle
17+import Yoga.React.DOM.SVG.Line
18+import Yoga.React.DOM.SVG.Polygon
19+import Yoga.React.DOM.SVG.Rect
src/Yoga/React/DOM/SVG/Attributes.pursnew file+76
@@ -0,0 +1,76 @@
1+module Yoga.React.DOM.SVG.Attributes where
2+
3+import Yoga.React.DOM.Attributes (BaseAttributesR)
4+
5+-- | Attribute row shared by SVG elements. Intentionally permissive: SVG
6+-- | presentation attributes (fill, stroke, opacity…) apply to nearly every
7+-- | shape element, so per-tag splitting buys little safety.
8+type SVGAttributes = BaseAttributesR SVGAttributesR
9+
10+type SVGAttributesR =
11+ -- Layout / viewport
12+ ( viewBox :: String
13+ , width :: String
14+ , height :: String
15+ , preserveAspectRatio :: String
16+ , x :: String
17+ , y :: String
18+ , dx :: String
19+ , dy :: String
20+ , transform :: String
21+ -- Stroke
22+ , stroke :: String
23+ , strokeWidth :: String
24+ , strokeLinecap :: String
25+ , strokeLinejoin :: String
26+ , strokeDasharray :: String
27+ , strokeDashoffset :: String
28+ , strokeMiterlimit :: String
29+ , strokeOpacity :: String
30+ -- Fill
31+ , fill :: String
32+ , fillOpacity :: String
33+ , fillRule :: String
34+ , opacity :: String
35+ -- Path / shape geometry
36+ , d :: String
37+ , points :: String
38+ , cx :: String
39+ , cy :: String
40+ , r :: String
41+ , rx :: String
42+ , ry :: String
43+ , x1 :: String
44+ , y1 :: String
45+ , x2 :: String
46+ , y2 :: String
47+ -- Text
48+ , textAnchor :: String
49+ , dominantBaseline :: String
50+ , fontSize :: String
51+ , fontFamily :: String
52+ , fontWeight :: String
53+ -- Gradients / refs
54+ , href :: String
55+ , xlinkHref :: String
56+ , offset :: String
57+ , stopColor :: String
58+ , stopOpacity :: String
59+ , gradientUnits :: String
60+ , gradientTransform :: String
61+ , spreadMethod :: String
62+ -- Misc
63+ , clipPath :: String
64+ , clipRule :: String
65+ , mask :: String
66+ , filter :: String
67+ , markerEnd :: String
68+ , markerMid :: String
69+ , markerStart :: String
70+ , vectorEffect :: String
71+ , pointerEvents :: String
72+ -- SVG root only
73+ , xmlns :: String
74+ , xmlnsXlink :: String
75+ , version :: String
76+ )
src/Yoga/React/DOM/SVG/Circle.pursnew file+12
@@ -0,0 +1,12 @@
1+module Yoga.React.DOM.SVG.Circle (circle, circle_) where
2+
3+import Yoga.React.DOM.Internal (FFIComponent, FFIComponent_, createBuiltinElement, createBuiltinElement_)
4+import Yoga.React.DOM.SVG.Attributes (SVGAttributes)
5+
6+-- | The `<circle>` SVG element draws a circle, based on a center point and a
7+-- | radius. Use `cx`, `cy`, and `r`.
8+circle :: FFIComponent SVGAttributes
9+circle = createBuiltinElement "circle"
10+
11+circle_ :: FFIComponent_ SVGAttributes
12+circle_ = createBuiltinElement_ "circle"
src/Yoga/React/DOM/SVG/G.pursnew file+13
@@ -0,0 +1,13 @@
1+module Yoga.React.DOM.SVG.G (g, g_) where
2+
3+import Yoga.React.DOM.Internal (FFIComponent, FFIComponent_, createBuiltinElement, createBuiltinElement_)
4+import Yoga.React.DOM.SVG.Attributes (SVGAttributes)
5+
6+-- | The `<g>` SVG element groups other SVG elements. Transforms applied to a
7+-- | `<g>` are performed on its child elements, and its presentation attributes
8+-- | are inherited by children.
9+g :: FFIComponent SVGAttributes
10+g = createBuiltinElement "g"
11+
12+g_ :: FFIComponent_ SVGAttributes
13+g_ = createBuiltinElement_ "g"
src/Yoga/React/DOM/SVG/Line.pursnew file+12
@@ -0,0 +1,12 @@
1+module Yoga.React.DOM.SVG.Line (line, line_) where
2+
3+import Yoga.React.DOM.Internal (FFIComponent, FFIComponent_, createBuiltinElement, createBuiltinElement_)
4+import Yoga.React.DOM.SVG.Attributes (SVGAttributes)
5+
6+-- | The `<line>` SVG element draws a line connecting two points (`x1`,`y1`)
7+-- | and (`x2`,`y2`).
8+line :: FFIComponent SVGAttributes
9+line = createBuiltinElement "line"
10+
11+line_ :: FFIComponent_ SVGAttributes
12+line_ = createBuiltinElement_ "line"
src/Yoga/React/DOM/SVG/Path.pursnew file+12
@@ -0,0 +1,12 @@
1+module Yoga.React.DOM.SVG.Path (path, path_) where
2+
3+import Yoga.React.DOM.Internal (FFIComponent, FFIComponent_, createBuiltinElement, createBuiltinElement_)
4+import Yoga.React.DOM.SVG.Attributes (SVGAttributes)
5+
6+-- | The `<path>` SVG element is the generic shape used to draw all kinds of
7+-- | shapes. The `d` attribute holds the shape geometry as a path string.
8+path :: FFIComponent SVGAttributes
9+path = createBuiltinElement "path"
10+
11+path_ :: FFIComponent_ SVGAttributes
12+path_ = createBuiltinElement_ "path"
src/Yoga/React/DOM/SVG/Polygon.pursnew file+12
@@ -0,0 +1,12 @@
1+module Yoga.React.DOM.SVG.Polygon (polygon, polygon_) where
2+
3+import Yoga.React.DOM.Internal (FFIComponent, FFIComponent_, createBuiltinElement, createBuiltinElement_)
4+import Yoga.React.DOM.SVG.Attributes (SVGAttributes)
5+
6+-- | The `<polygon>` SVG element defines a closed shape from a set of points
7+-- | given by the `points` attribute (a string of `x,y` pairs).
8+polygon :: FFIComponent SVGAttributes
9+polygon = createBuiltinElement "polygon"
10+
11+polygon_ :: FFIComponent_ SVGAttributes
12+polygon_ = createBuiltinElement_ "polygon"
src/Yoga/React/DOM/SVG/Rect.pursnew file+12
@@ -0,0 +1,12 @@
1+module Yoga.React.DOM.SVG.Rect (rect, rect_) where
2+
3+import Yoga.React.DOM.Internal (FFIComponent, FFIComponent_, createBuiltinElement, createBuiltinElement_)
4+import Yoga.React.DOM.SVG.Attributes (SVGAttributes)
5+
6+-- | The `<rect>` SVG element draws an axis-aligned rectangle. Use `x`, `y`,
7+-- | `width`, `height`, optionally `rx`/`ry` for rounded corners.
8+rect :: FFIComponent SVGAttributes
9+rect = createBuiltinElement "rect"
10+
11+rect_ :: FFIComponent_ SVGAttributes
12+rect_ = createBuiltinElement_ "rect"
src/Yoga/React/DOM/SVG/Svg.pursnew file+18
@@ -0,0 +1,18 @@
1+module Yoga.React.DOM.SVG.Svg (svg, svg_) where
2+
3+import Yoga.React.DOM.Internal (FFIComponent, FFIComponent_, createBuiltinElement, createBuiltinElement_)
4+import Yoga.React.DOM.SVG.Attributes (SVGAttributes)
5+
6+-- | The `<svg>` root element. Container that defines a new coordinate system
7+-- | and viewport for child SVG content.
8+-- |
9+-- | #### Example:
10+-- | ```purescript
11+-- | svg { viewBox: "0 0 24 24", width: "20", height: "20" }
12+-- | [ path { d: "M..." } ]
13+-- | ```
14+svg :: FFIComponent SVGAttributes
15+svg = createBuiltinElement "svg"
16+
17+svg_ :: FFIComponent_ SVGAttributes
18+svg_ = createBuiltinElement_ "svg"