@furystack/shades 11.0.35 → 12.0.0

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.
Files changed (215) hide show
  1. package/CHANGELOG.md +337 -0
  2. package/README.md +99 -13
  3. package/esm/compile-route.spec.d.ts +2 -0
  4. package/esm/compile-route.spec.d.ts.map +1 -0
  5. package/esm/compile-route.spec.js +34 -0
  6. package/esm/compile-route.spec.js.map +1 -0
  7. package/esm/component-factory.spec.js +13 -5
  8. package/esm/component-factory.spec.js.map +1 -1
  9. package/esm/components/index.d.ts +4 -1
  10. package/esm/components/index.d.ts.map +1 -1
  11. package/esm/components/index.js +4 -1
  12. package/esm/components/index.js.map +1 -1
  13. package/esm/components/lazy-load.d.ts +2 -4
  14. package/esm/components/lazy-load.d.ts.map +1 -1
  15. package/esm/components/lazy-load.js +40 -24
  16. package/esm/components/lazy-load.js.map +1 -1
  17. package/esm/components/lazy-load.spec.js +57 -50
  18. package/esm/components/lazy-load.spec.js.map +1 -1
  19. package/esm/components/link-to-route.d.ts +2 -0
  20. package/esm/components/link-to-route.d.ts.map +1 -1
  21. package/esm/components/link-to-route.js +3 -2
  22. package/esm/components/link-to-route.js.map +1 -1
  23. package/esm/components/link-to-route.spec.js +13 -9
  24. package/esm/components/link-to-route.spec.js.map +1 -1
  25. package/esm/components/nested-route-link.d.ts +62 -0
  26. package/esm/components/nested-route-link.d.ts.map +1 -0
  27. package/esm/components/nested-route-link.js +66 -0
  28. package/esm/components/nested-route-link.js.map +1 -0
  29. package/esm/components/nested-route-link.spec.d.ts +2 -0
  30. package/esm/components/nested-route-link.spec.d.ts.map +1 -0
  31. package/esm/components/nested-route-link.spec.js +179 -0
  32. package/esm/components/nested-route-link.spec.js.map +1 -0
  33. package/esm/components/nested-route-types.d.ts +37 -0
  34. package/esm/components/nested-route-types.d.ts.map +1 -0
  35. package/esm/components/nested-route-types.js +2 -0
  36. package/esm/components/nested-route-types.js.map +1 -0
  37. package/esm/components/nested-router.d.ts +103 -0
  38. package/esm/components/nested-router.d.ts.map +1 -0
  39. package/esm/components/nested-router.js +178 -0
  40. package/esm/components/nested-router.js.map +1 -0
  41. package/esm/components/nested-router.spec.d.ts +2 -0
  42. package/esm/components/nested-router.spec.d.ts.map +1 -0
  43. package/esm/components/nested-router.spec.js +659 -0
  44. package/esm/components/nested-router.spec.js.map +1 -0
  45. package/esm/components/route-link.d.ts +4 -0
  46. package/esm/components/route-link.d.ts.map +1 -1
  47. package/esm/components/route-link.js +9 -10
  48. package/esm/components/route-link.js.map +1 -1
  49. package/esm/components/route-link.spec.js +16 -12
  50. package/esm/components/route-link.spec.js.map +1 -1
  51. package/esm/components/router.d.ts +20 -2
  52. package/esm/components/router.d.ts.map +1 -1
  53. package/esm/components/router.js +3 -0
  54. package/esm/components/router.js.map +1 -1
  55. package/esm/components/router.spec.js +75 -74
  56. package/esm/components/router.spec.js.map +1 -1
  57. package/esm/css-generator.d.ts +50 -0
  58. package/esm/css-generator.d.ts.map +1 -0
  59. package/esm/css-generator.js +107 -0
  60. package/esm/css-generator.js.map +1 -0
  61. package/esm/css-generator.spec.d.ts +2 -0
  62. package/esm/css-generator.spec.d.ts.map +1 -0
  63. package/esm/css-generator.spec.js +162 -0
  64. package/esm/css-generator.spec.js.map +1 -0
  65. package/esm/index.d.ts +2 -0
  66. package/esm/index.d.ts.map +1 -1
  67. package/esm/index.js +2 -0
  68. package/esm/index.js.map +1 -1
  69. package/esm/initialize.d.ts +11 -0
  70. package/esm/initialize.d.ts.map +1 -1
  71. package/esm/initialize.js +5 -0
  72. package/esm/initialize.js.map +1 -1
  73. package/esm/jsx.d.ts +83 -2
  74. package/esm/jsx.d.ts.map +1 -1
  75. package/esm/models/children-list.d.ts +5 -1
  76. package/esm/models/children-list.d.ts.map +1 -1
  77. package/esm/models/css-object.d.ts +33 -0
  78. package/esm/models/css-object.d.ts.map +1 -0
  79. package/esm/models/css-object.js +2 -0
  80. package/esm/models/css-object.js.map +1 -0
  81. package/esm/models/index.d.ts +1 -0
  82. package/esm/models/index.d.ts.map +1 -1
  83. package/esm/models/index.js +1 -0
  84. package/esm/models/index.js.map +1 -1
  85. package/esm/models/partial-element.d.ts +12 -2
  86. package/esm/models/partial-element.d.ts.map +1 -1
  87. package/esm/models/render-options.d.ts +89 -3
  88. package/esm/models/render-options.d.ts.map +1 -1
  89. package/esm/models/selection-state.d.ts +4 -0
  90. package/esm/models/selection-state.d.ts.map +1 -1
  91. package/esm/services/location-service.d.ts +11 -0
  92. package/esm/services/location-service.d.ts.map +1 -1
  93. package/esm/services/location-service.js +11 -0
  94. package/esm/services/location-service.js.map +1 -1
  95. package/esm/services/resource-manager.d.ts +24 -0
  96. package/esm/services/resource-manager.d.ts.map +1 -1
  97. package/esm/services/resource-manager.js +30 -0
  98. package/esm/services/resource-manager.js.map +1 -1
  99. package/esm/services/resource-manager.spec.js +93 -0
  100. package/esm/services/resource-manager.spec.js.map +1 -1
  101. package/esm/services/screen-service.d.ts +81 -4
  102. package/esm/services/screen-service.d.ts.map +1 -1
  103. package/esm/services/screen-service.js +75 -4
  104. package/esm/services/screen-service.js.map +1 -1
  105. package/esm/services/screen-service.spec.js +91 -7
  106. package/esm/services/screen-service.spec.js.map +1 -1
  107. package/esm/shade-component.d.ts +17 -4
  108. package/esm/shade-component.d.ts.map +1 -1
  109. package/esm/shade-component.js +67 -5
  110. package/esm/shade-component.js.map +1 -1
  111. package/esm/shade-host-props-ref.integration.spec.d.ts +2 -0
  112. package/esm/shade-host-props-ref.integration.spec.d.ts.map +1 -0
  113. package/esm/shade-host-props-ref.integration.spec.js +381 -0
  114. package/esm/shade-host-props-ref.integration.spec.js.map +1 -0
  115. package/esm/shade-resources.integration.spec.js +208 -39
  116. package/esm/shade-resources.integration.spec.js.map +1 -1
  117. package/esm/shade.d.ts +34 -15
  118. package/esm/shade.d.ts.map +1 -1
  119. package/esm/shade.js +180 -33
  120. package/esm/shade.js.map +1 -1
  121. package/esm/shade.spec.d.ts +2 -0
  122. package/esm/shade.spec.d.ts.map +1 -0
  123. package/esm/shade.spec.js +198 -0
  124. package/esm/shade.spec.js.map +1 -0
  125. package/esm/shades.integration.spec.js +135 -72
  126. package/esm/shades.integration.spec.js.map +1 -1
  127. package/esm/style-manager.d.ts +65 -0
  128. package/esm/style-manager.d.ts.map +1 -0
  129. package/esm/style-manager.js +95 -0
  130. package/esm/style-manager.js.map +1 -0
  131. package/esm/style-manager.spec.d.ts +2 -0
  132. package/esm/style-manager.spec.d.ts.map +1 -0
  133. package/esm/style-manager.spec.js +179 -0
  134. package/esm/style-manager.spec.js.map +1 -0
  135. package/esm/styled-element.spec.d.ts +2 -0
  136. package/esm/styled-element.spec.d.ts.map +1 -0
  137. package/esm/styled-element.spec.js +86 -0
  138. package/esm/styled-element.spec.js.map +1 -0
  139. package/esm/styled-shade.spec.d.ts +2 -0
  140. package/esm/styled-shade.spec.d.ts.map +1 -0
  141. package/esm/styled-shade.spec.js +66 -0
  142. package/esm/styled-shade.spec.js.map +1 -0
  143. package/esm/svg-types.d.ts +389 -0
  144. package/esm/svg-types.d.ts.map +1 -0
  145. package/esm/svg-types.js +9 -0
  146. package/esm/svg-types.js.map +1 -0
  147. package/esm/svg.d.ts +15 -0
  148. package/esm/svg.d.ts.map +1 -0
  149. package/esm/svg.js +76 -0
  150. package/esm/svg.js.map +1 -0
  151. package/esm/svg.spec.d.ts +2 -0
  152. package/esm/svg.spec.d.ts.map +1 -0
  153. package/esm/svg.spec.js +80 -0
  154. package/esm/svg.spec.js.map +1 -0
  155. package/esm/vnode.d.ts +103 -0
  156. package/esm/vnode.d.ts.map +1 -0
  157. package/esm/vnode.integration.spec.d.ts +2 -0
  158. package/esm/vnode.integration.spec.d.ts.map +1 -0
  159. package/esm/vnode.integration.spec.js +494 -0
  160. package/esm/vnode.integration.spec.js.map +1 -0
  161. package/esm/vnode.js +453 -0
  162. package/esm/vnode.js.map +1 -0
  163. package/esm/vnode.spec.d.ts +2 -0
  164. package/esm/vnode.spec.d.ts.map +1 -0
  165. package/esm/vnode.spec.js +473 -0
  166. package/esm/vnode.spec.js.map +1 -0
  167. package/package.json +3 -3
  168. package/src/compile-route.spec.ts +39 -0
  169. package/src/component-factory.spec.tsx +18 -5
  170. package/src/components/index.ts +4 -1
  171. package/src/components/lazy-load.spec.tsx +82 -75
  172. package/src/components/lazy-load.tsx +49 -27
  173. package/src/components/link-to-route.spec.tsx +25 -21
  174. package/src/components/link-to-route.tsx +4 -2
  175. package/src/components/nested-route-link.spec.tsx +303 -0
  176. package/src/components/nested-route-link.tsx +100 -0
  177. package/src/components/nested-route-types.ts +42 -0
  178. package/src/components/nested-router.spec.tsx +817 -0
  179. package/src/components/nested-router.tsx +256 -0
  180. package/src/components/route-link.spec.tsx +22 -18
  181. package/src/components/route-link.tsx +10 -10
  182. package/src/components/router.spec.tsx +109 -108
  183. package/src/components/router.tsx +15 -2
  184. package/src/css-generator.spec.ts +183 -0
  185. package/src/css-generator.ts +117 -0
  186. package/src/index.ts +2 -0
  187. package/src/initialize.ts +12 -0
  188. package/src/jsx.ts +129 -2
  189. package/src/models/children-list.ts +7 -1
  190. package/src/models/css-object.ts +34 -0
  191. package/src/models/index.ts +1 -0
  192. package/src/models/partial-element.ts +13 -2
  193. package/src/models/render-options.ts +90 -3
  194. package/src/models/selection-state.ts +4 -0
  195. package/src/services/location-service.tsx +11 -0
  196. package/src/services/resource-manager.spec.ts +116 -0
  197. package/src/services/resource-manager.ts +30 -0
  198. package/src/services/screen-service.spec.ts +109 -7
  199. package/src/services/screen-service.ts +81 -4
  200. package/src/shade-component.ts +72 -6
  201. package/src/shade-host-props-ref.integration.spec.tsx +460 -0
  202. package/src/shade-resources.integration.spec.tsx +276 -52
  203. package/src/shade.spec.tsx +239 -0
  204. package/src/shade.ts +211 -56
  205. package/src/shades.integration.spec.tsx +154 -80
  206. package/src/style-manager.spec.ts +229 -0
  207. package/src/style-manager.ts +104 -0
  208. package/src/styled-element.spec.tsx +117 -0
  209. package/src/styled-shade.spec.ts +86 -0
  210. package/src/svg-types.ts +437 -0
  211. package/src/svg.spec.ts +89 -0
  212. package/src/svg.ts +78 -0
  213. package/src/vnode.integration.spec.tsx +657 -0
  214. package/src/vnode.spec.ts +579 -0
  215. package/src/vnode.ts +508 -0
@@ -0,0 +1,389 @@
1
+ /**
2
+ * SVG element attribute types for JSX support.
3
+ *
4
+ * Unlike HTML elements where JSX props map to DOM properties, SVG elements
5
+ * use XML attributes set via `setAttribute`. These types describe the
6
+ * attribute-based API rather than the DOM property interfaces.
7
+ */
8
+ import type { RefObject } from './models/render-options.js';
9
+ /**
10
+ * Common event handlers available on SVG elements.
11
+ */
12
+ export type SvgEventHandlers = {
13
+ onclick?: (ev: MouseEvent) => void;
14
+ ondblclick?: (ev: MouseEvent) => void;
15
+ onmousedown?: (ev: MouseEvent) => void;
16
+ onmouseup?: (ev: MouseEvent) => void;
17
+ onmousemove?: (ev: MouseEvent) => void;
18
+ onmouseenter?: (ev: MouseEvent) => void;
19
+ onmouseleave?: (ev: MouseEvent) => void;
20
+ onmouseover?: (ev: MouseEvent) => void;
21
+ onmouseout?: (ev: MouseEvent) => void;
22
+ onfocus?: (ev: FocusEvent) => void;
23
+ onblur?: (ev: FocusEvent) => void;
24
+ onkeydown?: (ev: KeyboardEvent) => void;
25
+ onkeyup?: (ev: KeyboardEvent) => void;
26
+ ontouchstart?: (ev: TouchEvent) => void;
27
+ ontouchmove?: (ev: TouchEvent) => void;
28
+ ontouchend?: (ev: TouchEvent) => void;
29
+ };
30
+ /**
31
+ * SVG presentation attributes shared by most SVG elements.
32
+ * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation
33
+ */
34
+ export type SvgPresentationAttributes = {
35
+ 'clip-path'?: string;
36
+ 'clip-rule'?: 'nonzero' | 'evenodd';
37
+ color?: string;
38
+ cursor?: string;
39
+ display?: string;
40
+ fill?: string;
41
+ 'fill-opacity'?: string | number;
42
+ 'fill-rule'?: 'nonzero' | 'evenodd';
43
+ filter?: string;
44
+ 'flood-color'?: string;
45
+ 'flood-opacity'?: string | number;
46
+ 'font-family'?: string;
47
+ 'font-size'?: string | number;
48
+ 'font-style'?: 'normal' | 'italic' | 'oblique';
49
+ 'font-weight'?: string | number;
50
+ 'letter-spacing'?: string | number;
51
+ 'lighting-color'?: string;
52
+ marker?: string;
53
+ 'marker-end'?: string;
54
+ 'marker-mid'?: string;
55
+ 'marker-start'?: string;
56
+ mask?: string;
57
+ opacity?: string | number;
58
+ overflow?: string;
59
+ 'pointer-events'?: string;
60
+ 'shape-rendering'?: 'auto' | 'optimizeSpeed' | 'crispEdges' | 'geometricPrecision';
61
+ 'stop-color'?: string;
62
+ 'stop-opacity'?: string | number;
63
+ stroke?: string;
64
+ 'stroke-dasharray'?: string;
65
+ 'stroke-dashoffset'?: string | number;
66
+ 'stroke-linecap'?: 'butt' | 'round' | 'square';
67
+ 'stroke-linejoin'?: 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
68
+ 'stroke-miterlimit'?: string | number;
69
+ 'stroke-opacity'?: string | number;
70
+ 'stroke-width'?: string | number;
71
+ 'text-anchor'?: 'start' | 'middle' | 'end';
72
+ 'text-decoration'?: string;
73
+ 'dominant-baseline'?: string;
74
+ 'alignment-baseline'?: string;
75
+ transform?: string;
76
+ 'transform-origin'?: string;
77
+ visibility?: 'visible' | 'hidden' | 'collapse';
78
+ 'word-spacing'?: string | number;
79
+ };
80
+ /**
81
+ * Core attributes available on all SVG elements.
82
+ */
83
+ export type SvgCoreAttributes = {
84
+ id?: string;
85
+ className?: string;
86
+ style?: Partial<CSSStyleDeclaration>;
87
+ tabIndex?: number;
88
+ ref?: RefObject<Element>;
89
+ } & SvgPresentationAttributes & SvgEventHandlers;
90
+ /** Attributes for the `<svg>` element. */
91
+ export type SvgSvgAttributes = SvgCoreAttributes & {
92
+ viewBox?: string;
93
+ width?: string | number;
94
+ height?: string | number;
95
+ xmlns?: string;
96
+ preserveAspectRatio?: string;
97
+ x?: string | number;
98
+ y?: string | number;
99
+ };
100
+ /** Attributes for the `<g>` element. */
101
+ export type SvgGAttributes = SvgCoreAttributes;
102
+ /** Attributes for the `<defs>` element. */
103
+ export type SvgDefsAttributes = SvgCoreAttributes;
104
+ /** Attributes for the `<symbol>` element. */
105
+ export type SvgSymbolAttributes = SvgCoreAttributes & {
106
+ viewBox?: string;
107
+ preserveAspectRatio?: string;
108
+ x?: string | number;
109
+ y?: string | number;
110
+ width?: string | number;
111
+ height?: string | number;
112
+ refX?: string | number;
113
+ refY?: string | number;
114
+ };
115
+ /** Attributes for the `<use>` element. */
116
+ export type SvgUseAttributes = SvgCoreAttributes & {
117
+ href?: string;
118
+ x?: string | number;
119
+ y?: string | number;
120
+ width?: string | number;
121
+ height?: string | number;
122
+ };
123
+ /** Attributes for the `<path>` element. */
124
+ export type SvgPathAttributes = SvgCoreAttributes & {
125
+ d: string;
126
+ pathLength?: number;
127
+ };
128
+ /** Attributes for the `<rect>` element. */
129
+ export type SvgRectAttributes = SvgCoreAttributes & {
130
+ x?: string | number;
131
+ y?: string | number;
132
+ width?: string | number;
133
+ height?: string | number;
134
+ rx?: string | number;
135
+ ry?: string | number;
136
+ pathLength?: number;
137
+ };
138
+ /** Attributes for the `<circle>` element. */
139
+ export type SvgCircleAttributes = SvgCoreAttributes & {
140
+ cx?: string | number;
141
+ cy?: string | number;
142
+ r?: string | number;
143
+ pathLength?: number;
144
+ };
145
+ /** Attributes for the `<ellipse>` element. */
146
+ export type SvgEllipseAttributes = SvgCoreAttributes & {
147
+ cx?: string | number;
148
+ cy?: string | number;
149
+ rx?: string | number;
150
+ ry?: string | number;
151
+ pathLength?: number;
152
+ };
153
+ /** Attributes for the `<line>` element. */
154
+ export type SvgLineAttributes = SvgCoreAttributes & {
155
+ x1?: string | number;
156
+ y1?: string | number;
157
+ x2?: string | number;
158
+ y2?: string | number;
159
+ pathLength?: number;
160
+ };
161
+ /** Attributes for the `<polyline>` element. */
162
+ export type SvgPolylineAttributes = SvgCoreAttributes & {
163
+ points?: string;
164
+ pathLength?: number;
165
+ };
166
+ /** Attributes for the `<polygon>` element. */
167
+ export type SvgPolygonAttributes = SvgCoreAttributes & {
168
+ points?: string;
169
+ pathLength?: number;
170
+ };
171
+ /** Attributes for the `<text>` element. */
172
+ export type SvgTextAttributes = SvgCoreAttributes & {
173
+ x?: string | number;
174
+ y?: string | number;
175
+ dx?: string | number;
176
+ dy?: string | number;
177
+ rotate?: string;
178
+ textLength?: string | number;
179
+ lengthAdjust?: 'spacing' | 'spacingAndGlyphs';
180
+ };
181
+ /** Attributes for the `<tspan>` element. */
182
+ export type SvgTspanAttributes = SvgCoreAttributes & {
183
+ x?: string | number;
184
+ y?: string | number;
185
+ dx?: string | number;
186
+ dy?: string | number;
187
+ rotate?: string;
188
+ textLength?: string | number;
189
+ lengthAdjust?: 'spacing' | 'spacingAndGlyphs';
190
+ };
191
+ /** Attributes for the `<textPath>` element. */
192
+ export type SvgTextPathAttributes = SvgCoreAttributes & {
193
+ href?: string;
194
+ method?: 'align' | 'stretch';
195
+ spacing?: 'auto' | 'exact';
196
+ startOffset?: string | number;
197
+ textLength?: string | number;
198
+ lengthAdjust?: 'spacing' | 'spacingAndGlyphs';
199
+ };
200
+ /** Attributes for the `<clipPath>` element. */
201
+ export type SvgClipPathAttributes = SvgCoreAttributes & {
202
+ clipPathUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
203
+ };
204
+ /** Attributes for the `<mask>` element. */
205
+ export type SvgMaskAttributes = SvgCoreAttributes & {
206
+ maskUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
207
+ maskContentUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
208
+ x?: string | number;
209
+ y?: string | number;
210
+ width?: string | number;
211
+ height?: string | number;
212
+ };
213
+ /** Attributes for the `<linearGradient>` element. */
214
+ export type SvgLinearGradientAttributes = SvgCoreAttributes & {
215
+ x1?: string | number;
216
+ y1?: string | number;
217
+ x2?: string | number;
218
+ y2?: string | number;
219
+ gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
220
+ gradientTransform?: string;
221
+ spreadMethod?: 'pad' | 'reflect' | 'repeat';
222
+ href?: string;
223
+ };
224
+ /** Attributes for the `<radialGradient>` element. */
225
+ export type SvgRadialGradientAttributes = SvgCoreAttributes & {
226
+ cx?: string | number;
227
+ cy?: string | number;
228
+ r?: string | number;
229
+ fx?: string | number;
230
+ fy?: string | number;
231
+ fr?: string | number;
232
+ gradientUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
233
+ gradientTransform?: string;
234
+ spreadMethod?: 'pad' | 'reflect' | 'repeat';
235
+ href?: string;
236
+ };
237
+ /** Attributes for the `<stop>` element. */
238
+ export type SvgStopAttributes = SvgCoreAttributes & {
239
+ offset?: string | number;
240
+ 'stop-color'?: string;
241
+ 'stop-opacity'?: string | number;
242
+ };
243
+ /** Attributes for the `<pattern>` element. */
244
+ export type SvgPatternAttributes = SvgCoreAttributes & {
245
+ x?: string | number;
246
+ y?: string | number;
247
+ width?: string | number;
248
+ height?: string | number;
249
+ patternUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
250
+ patternContentUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
251
+ patternTransform?: string;
252
+ viewBox?: string;
253
+ preserveAspectRatio?: string;
254
+ href?: string;
255
+ };
256
+ /** Attributes for the `<marker>` element. */
257
+ export type SvgMarkerAttributes = SvgCoreAttributes & {
258
+ viewBox?: string;
259
+ preserveAspectRatio?: string;
260
+ refX?: string | number;
261
+ refY?: string | number;
262
+ markerUnits?: 'strokeWidth' | 'userSpaceOnUse';
263
+ markerWidth?: string | number;
264
+ markerHeight?: string | number;
265
+ orient?: string;
266
+ };
267
+ /** Attributes for the `<filter>` element. */
268
+ export type SvgFilterAttributes = SvgCoreAttributes & {
269
+ x?: string | number;
270
+ y?: string | number;
271
+ width?: string | number;
272
+ height?: string | number;
273
+ filterUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
274
+ primitiveUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
275
+ };
276
+ /** Common attributes for SVG filter primitive elements. */
277
+ type SvgFilterPrimitiveAttributes = SvgCoreAttributes & {
278
+ x?: string | number;
279
+ y?: string | number;
280
+ width?: string | number;
281
+ height?: string | number;
282
+ result?: string;
283
+ };
284
+ /** Attributes for the `<feGaussianBlur>` element. */
285
+ export type SvgFeGaussianBlurAttributes = SvgFilterPrimitiveAttributes & {
286
+ in?: string;
287
+ stdDeviation?: string | number;
288
+ edgeMode?: 'duplicate' | 'wrap' | 'none';
289
+ };
290
+ /** Attributes for the `<feBlend>` element. */
291
+ export type SvgFeBlendAttributes = SvgFilterPrimitiveAttributes & {
292
+ in?: string;
293
+ in2?: string;
294
+ mode?: 'normal' | 'multiply' | 'screen' | 'overlay' | 'darken' | 'lighten';
295
+ };
296
+ /** Attributes for the `<feColorMatrix>` element. */
297
+ export type SvgFeColorMatrixAttributes = SvgFilterPrimitiveAttributes & {
298
+ in?: string;
299
+ type?: 'matrix' | 'saturate' | 'hueRotate' | 'luminanceToAlpha';
300
+ values?: string;
301
+ };
302
+ /** Attributes for the `<feOffset>` element. */
303
+ export type SvgFeOffsetAttributes = SvgFilterPrimitiveAttributes & {
304
+ in?: string;
305
+ dx?: string | number;
306
+ dy?: string | number;
307
+ };
308
+ /** Attributes for the `<feFlood>` element. */
309
+ export type SvgFeFloodAttributes = SvgFilterPrimitiveAttributes & {
310
+ 'flood-color'?: string;
311
+ 'flood-opacity'?: string | number;
312
+ };
313
+ /** Attributes for the `<feMerge>` element. */
314
+ export type SvgFeMergeAttributes = SvgFilterPrimitiveAttributes;
315
+ /** Attributes for the `<feMergeNode>` element. */
316
+ export type SvgFeMergeNodeAttributes = SvgCoreAttributes & {
317
+ in?: string;
318
+ };
319
+ /** Attributes for the `<feComposite>` element. */
320
+ export type SvgFeCompositeAttributes = SvgFilterPrimitiveAttributes & {
321
+ in?: string;
322
+ in2?: string;
323
+ operator?: 'over' | 'in' | 'out' | 'atop' | 'xor' | 'lighter' | 'arithmetic';
324
+ k1?: number;
325
+ k2?: number;
326
+ k3?: number;
327
+ k4?: number;
328
+ };
329
+ /** Attributes for the `<image>` element (SVG). */
330
+ export type SvgImageAttributes = SvgCoreAttributes & {
331
+ href?: string;
332
+ x?: string | number;
333
+ y?: string | number;
334
+ width?: string | number;
335
+ height?: string | number;
336
+ preserveAspectRatio?: string;
337
+ crossorigin?: 'anonymous' | 'use-credentials';
338
+ };
339
+ /** Attributes for the `<foreignObject>` element. */
340
+ export type SvgForeignObjectAttributes = SvgCoreAttributes & {
341
+ x?: string | number;
342
+ y?: string | number;
343
+ width?: string | number;
344
+ height?: string | number;
345
+ };
346
+ /** Common attributes for SVG animation elements. */
347
+ type SvgAnimationAttributes = SvgCoreAttributes & {
348
+ attributeName?: string;
349
+ begin?: string;
350
+ dur?: string;
351
+ end?: string;
352
+ repeatCount?: string | number;
353
+ repeatDur?: string;
354
+ fill?: 'freeze' | 'remove';
355
+ from?: string;
356
+ to?: string;
357
+ by?: string;
358
+ values?: string;
359
+ keyTimes?: string;
360
+ keySplines?: string;
361
+ calcMode?: 'discrete' | 'linear' | 'paced' | 'spline';
362
+ };
363
+ /** Attributes for the `<animate>` element. */
364
+ export type SvgAnimateAttributes = SvgAnimationAttributes;
365
+ /** Attributes for the `<animateMotion>` element. */
366
+ export type SvgAnimateMotionAttributes = SvgAnimationAttributes & {
367
+ path?: string;
368
+ rotate?: string;
369
+ };
370
+ /** Attributes for the `<animateTransform>` element. */
371
+ export type SvgAnimateTransformAttributes = SvgAnimationAttributes & {
372
+ type?: 'translate' | 'scale' | 'rotate' | 'skewX' | 'skewY';
373
+ };
374
+ /** Attributes for the `<set>` element. */
375
+ export type SvgSetAttributes = SvgCoreAttributes & {
376
+ attributeName?: string;
377
+ to?: string;
378
+ begin?: string;
379
+ dur?: string;
380
+ end?: string;
381
+ repeatCount?: string | number;
382
+ fill?: 'freeze' | 'remove';
383
+ };
384
+ /** Attributes for the `<title>` element (SVG). */
385
+ export type SvgTitleAttributes = SvgCoreAttributes;
386
+ /** Attributes for the `<desc>` element. */
387
+ export type SvgDescAttributes = SvgCoreAttributes;
388
+ export {};
389
+ //# sourceMappingURL=svg-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-types.d.ts","sourceRoot":"","sources":["../src/svg-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SVG element attribute types for JSX support.
3
+ *
4
+ * Unlike HTML elements where JSX props map to DOM properties, SVG elements
5
+ * use XML attributes set via `setAttribute`. These types describe the
6
+ * attribute-based API rather than the DOM property interfaces.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=svg-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-types.js","sourceRoot":"","sources":["../src/svg-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
package/esm/svg.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SVG namespace and tag detection helpers.
3
+ */
4
+ export declare const SVG_NS = "http://www.w3.org/2000/svg";
5
+ /**
6
+ * Set of known SVG element tag names.
7
+ * Used to determine whether to create elements with `createElementNS`
8
+ * and to apply attributes via `setAttribute` instead of property assignment.
9
+ */
10
+ export declare const SVG_TAGS: ReadonlySet<string>;
11
+ /**
12
+ * Returns true if the given tag name is a known SVG element.
13
+ */
14
+ export declare const isSvgTag: (tag: string) => boolean;
15
+ //# sourceMappingURL=svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,MAAM,+BAA+B,CAAA;AAElD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,MAAM,CA6DvC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,OAA4B,CAAA"}
package/esm/svg.js ADDED
@@ -0,0 +1,76 @@
1
+ /**
2
+ * SVG namespace and tag detection helpers.
3
+ */
4
+ export const SVG_NS = 'http://www.w3.org/2000/svg';
5
+ /**
6
+ * Set of known SVG element tag names.
7
+ * Used to determine whether to create elements with `createElementNS`
8
+ * and to apply attributes via `setAttribute` instead of property assignment.
9
+ */
10
+ export const SVG_TAGS = new Set([
11
+ // Root
12
+ 'svg',
13
+ // Container / structural
14
+ 'g',
15
+ 'defs',
16
+ 'symbol',
17
+ 'use',
18
+ 'foreignObject',
19
+ // Shape elements
20
+ 'path',
21
+ 'rect',
22
+ 'circle',
23
+ 'ellipse',
24
+ 'line',
25
+ 'polyline',
26
+ 'polygon',
27
+ // Text
28
+ 'text',
29
+ 'tspan',
30
+ 'textPath',
31
+ // Gradient / pattern
32
+ 'linearGradient',
33
+ 'radialGradient',
34
+ 'stop',
35
+ 'pattern',
36
+ // Clipping / masking
37
+ 'clipPath',
38
+ 'mask',
39
+ // Marker
40
+ 'marker',
41
+ // Filter
42
+ 'filter',
43
+ 'feBlend',
44
+ 'feColorMatrix',
45
+ 'feComponentTransfer',
46
+ 'feComposite',
47
+ 'feConvolveMatrix',
48
+ 'feDiffuseLighting',
49
+ 'feDisplacementMap',
50
+ 'feFlood',
51
+ 'feGaussianBlur',
52
+ 'feImage',
53
+ 'feMerge',
54
+ 'feMergeNode',
55
+ 'feMorphology',
56
+ 'feOffset',
57
+ 'feSpecularLighting',
58
+ 'feTile',
59
+ 'feTurbulence',
60
+ // Animation
61
+ 'animate',
62
+ 'animateMotion',
63
+ 'animateTransform',
64
+ 'set',
65
+ // Descriptive
66
+ 'title',
67
+ 'desc',
68
+ 'metadata',
69
+ // Other
70
+ 'image',
71
+ ]);
72
+ /**
73
+ * Returns true if the given tag name is a known SVG element.
74
+ */
75
+ export const isSvgTag = (tag) => SVG_TAGS.has(tag);
76
+ //# sourceMappingURL=svg.js.map
package/esm/svg.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,4BAA4B,CAAA;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC;IACnD,OAAO;IACP,KAAK;IACL,yBAAyB;IACzB,GAAG;IACH,MAAM;IACN,QAAQ;IACR,KAAK;IACL,eAAe;IACf,iBAAiB;IACjB,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,MAAM;IACN,OAAO;IACP,UAAU;IACV,qBAAqB;IACrB,gBAAgB;IAChB,gBAAgB;IAChB,MAAM;IACN,SAAS;IACT,qBAAqB;IACrB,UAAU;IACV,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,eAAe;IACf,qBAAqB;IACrB,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,SAAS;IACT,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,aAAa;IACb,cAAc;IACd,UAAU;IACV,oBAAoB;IACpB,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,SAAS;IACT,eAAe;IACf,kBAAkB;IAClB,KAAK;IACL,cAAc;IACd,OAAO;IACP,MAAM;IACN,UAAU;IACV,QAAQ;IACR,OAAO;CACR,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=svg.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.spec.d.ts","sourceRoot":"","sources":["../src/svg.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,80 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { isSvgTag, SVG_NS, SVG_TAGS } from './svg.js';
3
+ describe('svg', () => {
4
+ describe('SVG_NS', () => {
5
+ it('should be the standard SVG namespace URI', () => {
6
+ expect(SVG_NS).toBe('http://www.w3.org/2000/svg');
7
+ });
8
+ });
9
+ describe('SVG_TAGS', () => {
10
+ it('should contain core SVG element tags', () => {
11
+ const coreTags = ['svg', 'g', 'path', 'rect', 'circle', 'ellipse', 'line', 'polyline', 'polygon'];
12
+ for (const tag of coreTags) {
13
+ expect(SVG_TAGS.has(tag)).toBe(true);
14
+ }
15
+ });
16
+ it('should contain text-related SVG tags', () => {
17
+ expect(SVG_TAGS.has('text')).toBe(true);
18
+ expect(SVG_TAGS.has('tspan')).toBe(true);
19
+ expect(SVG_TAGS.has('textPath')).toBe(true);
20
+ });
21
+ it('should contain gradient and pattern tags', () => {
22
+ expect(SVG_TAGS.has('linearGradient')).toBe(true);
23
+ expect(SVG_TAGS.has('radialGradient')).toBe(true);
24
+ expect(SVG_TAGS.has('stop')).toBe(true);
25
+ expect(SVG_TAGS.has('pattern')).toBe(true);
26
+ });
27
+ it('should contain filter primitive tags', () => {
28
+ const filterTags = [
29
+ 'filter',
30
+ 'feBlend',
31
+ 'feColorMatrix',
32
+ 'feGaussianBlur',
33
+ 'feOffset',
34
+ 'feFlood',
35
+ 'feMerge',
36
+ 'feMergeNode',
37
+ 'feComposite',
38
+ ];
39
+ for (const tag of filterTags) {
40
+ expect(SVG_TAGS.has(tag)).toBe(true);
41
+ }
42
+ });
43
+ it('should contain animation tags', () => {
44
+ expect(SVG_TAGS.has('animate')).toBe(true);
45
+ expect(SVG_TAGS.has('animateMotion')).toBe(true);
46
+ expect(SVG_TAGS.has('animateTransform')).toBe(true);
47
+ expect(SVG_TAGS.has('set')).toBe(true);
48
+ });
49
+ it('should not contain HTML element tags', () => {
50
+ const htmlTags = ['div', 'span', 'p', 'button', 'input', 'form', 'table', 'a', 'img'];
51
+ for (const tag of htmlTags) {
52
+ expect(SVG_TAGS.has(tag)).toBe(false);
53
+ }
54
+ });
55
+ });
56
+ describe('isSvgTag', () => {
57
+ it('should return true for known SVG tags', () => {
58
+ expect(isSvgTag('svg')).toBe(true);
59
+ expect(isSvgTag('path')).toBe(true);
60
+ expect(isSvgTag('circle')).toBe(true);
61
+ expect(isSvgTag('g')).toBe(true);
62
+ expect(isSvgTag('feGaussianBlur')).toBe(true);
63
+ expect(isSvgTag('linearGradient')).toBe(true);
64
+ expect(isSvgTag('clipPath')).toBe(true);
65
+ expect(isSvgTag('foreignObject')).toBe(true);
66
+ });
67
+ it('should return false for HTML tags', () => {
68
+ expect(isSvgTag('div')).toBe(false);
69
+ expect(isSvgTag('span')).toBe(false);
70
+ expect(isSvgTag('button')).toBe(false);
71
+ expect(isSvgTag('input')).toBe(false);
72
+ });
73
+ it('should return false for unknown tags', () => {
74
+ expect(isSvgTag('my-component')).toBe(false);
75
+ expect(isSvgTag('')).toBe(false);
76
+ expect(isSvgTag('SVG')).toBe(false);
77
+ });
78
+ });
79
+ });
80
+ //# sourceMappingURL=svg.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.spec.js","sourceRoot":"","sources":["../src/svg.spec.ts"],"names":[],"mappings":"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"}