nuclo 0.1.23

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 (77) hide show
  1. package/dist/core/attributeManager.d.ts +3 -0
  2. package/dist/core/attributeManager.d.ts.map +1 -0
  3. package/dist/core/conditionalRenderer.d.ts +6 -0
  4. package/dist/core/conditionalRenderer.d.ts.map +1 -0
  5. package/dist/core/conditionalUpdater.d.ts +2 -0
  6. package/dist/core/conditionalUpdater.d.ts.map +1 -0
  7. package/dist/core/elementFactory.d.ts +3 -0
  8. package/dist/core/elementFactory.d.ts.map +1 -0
  9. package/dist/core/modifierProcessor.d.ts +4 -0
  10. package/dist/core/modifierProcessor.d.ts.map +1 -0
  11. package/dist/core/reactive.d.ts +8 -0
  12. package/dist/core/reactive.d.ts.map +1 -0
  13. package/dist/core/runtimeBootstrap.d.ts +5 -0
  14. package/dist/core/runtimeBootstrap.d.ts.map +1 -0
  15. package/dist/core/styleManager.d.ts +9 -0
  16. package/dist/core/styleManager.d.ts.map +1 -0
  17. package/dist/core/tagRegistry.d.ts +5 -0
  18. package/dist/core/tagRegistry.d.ts.map +1 -0
  19. package/dist/core/updateController.d.ts +2 -0
  20. package/dist/core/updateController.d.ts.map +1 -0
  21. package/dist/index.d.ts +15 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/internal/applyModifiers.d.ts +28 -0
  24. package/dist/internal/applyModifiers.d.ts.map +1 -0
  25. package/dist/list/index.d.ts +2 -0
  26. package/dist/list/index.d.ts.map +1 -0
  27. package/dist/list/renderer.d.ts +6 -0
  28. package/dist/list/renderer.d.ts.map +1 -0
  29. package/dist/list/runtime.d.ts +5 -0
  30. package/dist/list/runtime.d.ts.map +1 -0
  31. package/dist/list/types.d.ts +16 -0
  32. package/dist/list/types.d.ts.map +1 -0
  33. package/dist/nuclo.cjs +2 -0
  34. package/dist/nuclo.cjs.map +1 -0
  35. package/dist/nuclo.js +2 -0
  36. package/dist/nuclo.js.map +1 -0
  37. package/dist/nuclo.umd.js +2 -0
  38. package/dist/nuclo.umd.js.map +1 -0
  39. package/dist/style/index.d.ts +2 -0
  40. package/dist/style/index.d.ts.map +1 -0
  41. package/dist/utility/arrayUtils.d.ts +2 -0
  42. package/dist/utility/arrayUtils.d.ts.map +1 -0
  43. package/dist/utility/conditionalInfo.d.ts +20 -0
  44. package/dist/utility/conditionalInfo.d.ts.map +1 -0
  45. package/dist/utility/conditions.d.ts +4 -0
  46. package/dist/utility/conditions.d.ts.map +1 -0
  47. package/dist/utility/dom.d.ts +11 -0
  48. package/dist/utility/dom.d.ts.map +1 -0
  49. package/dist/utility/environment.d.ts +5 -0
  50. package/dist/utility/environment.d.ts.map +1 -0
  51. package/dist/utility/errorHandler.d.ts +7 -0
  52. package/dist/utility/errorHandler.d.ts.map +1 -0
  53. package/dist/utility/events.d.ts +2 -0
  54. package/dist/utility/events.d.ts.map +1 -0
  55. package/dist/utility/modifierPredicates.d.ts +10 -0
  56. package/dist/utility/modifierPredicates.d.ts.map +1 -0
  57. package/dist/utility/on.d.ts +31 -0
  58. package/dist/utility/on.d.ts.map +1 -0
  59. package/dist/utility/render.d.ts +10 -0
  60. package/dist/utility/render.d.ts.map +1 -0
  61. package/dist/utility/renderables.d.ts +2 -0
  62. package/dist/utility/renderables.d.ts.map +1 -0
  63. package/dist/utility/typeGuards.d.ts +9 -0
  64. package/dist/utility/typeGuards.d.ts.map +1 -0
  65. package/dist/when/index.d.ts +7 -0
  66. package/dist/when/index.d.ts.map +1 -0
  67. package/package.json +54 -0
  68. package/types/core/base.d.ts +70 -0
  69. package/types/features/list.d.ts +8 -0
  70. package/types/features/on.d.ts +54 -0
  71. package/types/features/render.d.ts +28 -0
  72. package/types/features/update.d.ts +6 -0
  73. package/types/features/when.d.ts +18 -0
  74. package/types/html/tags.d.ts +119 -0
  75. package/types/index.d.ts +24 -0
  76. package/types/svg/base.d.ts +25 -0
  77. package/types/svg/tags.d.ts +68 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/when/index.ts"],"names":[],"mappings":"AAOA,KAAK,aAAa,GAAG,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;AAC/C,KAAK,WAAW,CAAC,QAAQ,SAAS,cAAc,GAAG,cAAc,IAC/D,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAkK1C,wBAAgB,kBAAkB,IAAI,IAAI,CAQzC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,IAAI,CAAC,QAAQ,SAAS,cAAc,GAAG,cAAc,EACnE,SAAS,EAAE,aAAa,EACxB,GAAG,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,GAClC,WAAW,CAAC,QAAQ,CAAC,CAGvB"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "nuclo",
3
+ "private": false,
4
+ "version": "0.1.23",
5
+ "type": "module",
6
+ "main": "./dist/nuclo.cjs",
7
+ "module": "./dist/nuclo.js",
8
+ "browser": "./dist/nuclo.umd.js",
9
+ "types": "./types/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/nuclo.js",
14
+ "require": "./dist/nuclo.cjs"
15
+ },
16
+ "./types": {
17
+ "types": "./types/index.d.ts"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "types"
23
+ ],
24
+ "devDependencies": {
25
+ "@rollup/plugin-terser": "^0.4.4",
26
+ "@rollup/plugin-typescript": "^12.1.4",
27
+ "@types/node": "^24.7.0",
28
+ "@vitest/coverage-v8": "3.2.4",
29
+ "jsdom": "^27.0.0",
30
+ "rollup": "^4.52.4",
31
+ "tslib": "^2.8.1",
32
+ "typescript": "^5.9.3",
33
+ "vitest": "^3.2.4"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "git+https://github.com/dan2dev/nuclo.git"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/dan2dev/nuclo/issues"
41
+ },
42
+ "homepage": "https://dan2dev.github.io/nuclo/",
43
+ "scripts": {
44
+ "build": "rm -rf dist && rollup -c && tsc --emitDeclarationOnly",
45
+ "dev": "rm -rf dist && rollup -c -w & tsc --emitDeclarationOnly --watch",
46
+ "dev:all": "pnpm dev & cd examples/basic && npm run dev",
47
+ "build:watch": "rm -rf dist && rollup -c -w & tsc --emitDeclarationOnly --watch",
48
+ "build:rollup": "rollup -c",
49
+ "build:types": "tsc --emitDeclarationOnly",
50
+ "clean": "rm -rf dist *.tsbuildinfo",
51
+ "test": "vitest run --coverage",
52
+ "test:watch": "vitest --watch"
53
+ }
54
+ }
@@ -0,0 +1,70 @@
1
+
2
+
3
+ declare global {
4
+ export type Primitive = string | number | bigint | boolean | symbol | null | undefined;
5
+ export type ElementTagName = keyof HTMLElementTagNameMap;
6
+
7
+ // Core element attribute types
8
+ export type ExpandedElementAttributes<
9
+ TTagName extends ElementTagName = ElementTagName,
10
+ > = Omit<
11
+ {
12
+ [K in keyof HTMLElementTagNameMap[TTagName]]?:
13
+ | HTMLElementTagNameMap[TTagName][K]
14
+ | (() => HTMLElementTagNameMap[TTagName][K]);
15
+ },
16
+ "style"
17
+ > & {
18
+ style?: Partial<CSSStyleDeclaration> | (() => Partial<CSSStyleDeclaration>);
19
+ };
20
+
21
+ // Core element type
22
+ export type ExpandedElement<
23
+ TTagName extends ElementTagName = ElementTagName,
24
+ > = Partial<Omit<HTMLElementTagNameMap[TTagName], "tagName">> &
25
+ Pick<HTMLElementTagNameMap[TTagName], "tagName"> & {
26
+ rawMods?: NodeMod<TTagName> | NodeModFn<TTagName>[];
27
+ mods?: NodeMod<TTagName>[];
28
+ };
29
+
30
+ // Core modifier types
31
+ export type NodeMod<TTagName extends ElementTagName = ElementTagName> =
32
+ | Primitive
33
+ | (() => Primitive)
34
+ | ExpandedElementAttributes<TTagName>
35
+ | ExpandedElement<TTagName>;
36
+
37
+ export type NodeModFn<TTagName extends ElementTagName = ElementTagName> = (
38
+ parent: ExpandedElement<TTagName>,
39
+ index: number,
40
+ ) => NodeMod<TTagName> | void;
41
+
42
+ // Core modifier types (selfClosing)
43
+ // export type NodeSelfClosingMod<
44
+ // TTagName extends ElementTagName = ElementTagName,
45
+ // > = ExpandedElementAttributes<TTagName> | Primitive
46
+ // | (() => Primitive);
47
+
48
+
49
+
50
+ // Core builder types
51
+ export type ExpandedElementBuilder<
52
+ TTagName extends ElementTagName = ElementTagName,
53
+ > = (
54
+ ...rawMods: (NodeMod<TTagName> | NodeModFn<TTagName>)[]
55
+ ) => (
56
+ parent?: ExpandedElement<TTagName>,
57
+ index?: number,
58
+ ) => ExpandedElement<TTagName>;
59
+
60
+ // export type SelfClosingElementBuilder<
61
+ // TTagName extends ElementTagName = ElementTagName,
62
+ // > = (
63
+ // ...rawMods: NodeSelfClosingMod<TTagName>[]
64
+ // ) => (
65
+ // parent?: ExpandedElement<TTagName>,
66
+ // index?: number,
67
+ // ) => ExpandedElement<TTagName>;
68
+ }
69
+
70
+ export { };
@@ -0,0 +1,8 @@
1
+ declare global {
2
+ // Dynamic list function types
3
+ export type ListRenderFunction<T> = (item: T, index: number) => ExpandedElement<any> | NodeModFn<any>;
4
+ export type ListItemsProvider<T> = () => T[];
5
+ export function list<T>(itemsProvider: ListItemsProvider<T>, render: ListRenderFunction<T>): NodeModFn<any>;
6
+ }
7
+
8
+ export {};
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Typed event listener helper types for the `on()` modifier function.
3
+ *
4
+ * Usage example:
5
+ * button(
6
+ * "Click me",
7
+ * on("click", (e) => {
8
+ * // e is a MouseEvent (e.g., e.clientX is available)
9
+ * // example: console.log(e.clientX);
10
+ * })
11
+ * );
12
+ *
13
+ * Overloads:
14
+ * 1. DOM standard events (strongly typed via HTMLElementEventMap)
15
+ * 2. Custom / arbitrary event names with user-specified event type
16
+ */
17
+
18
+ declare global {
19
+ /**
20
+ * Add a strongly typed DOM event listener as a View Craft modifier.
21
+ *
22
+ * The returned modifier attaches the listener when the element is created.
23
+ *
24
+ * @param type Standard DOM event name (e.g. "click", "input", "change").
25
+ * @param listener Event listener with fully typed event object.
26
+ * @param options Native addEventListener options.
27
+ */
28
+ function on<
29
+ TTagName extends ElementTagName = ElementTagName,
30
+ K extends keyof HTMLElementEventMap = keyof HTMLElementEventMap,
31
+ >(
32
+ type: K,
33
+ listener: (this: HTMLElementTagNameMap[TTagName], ev: HTMLElementEventMap[K] & { currentTarget: HTMLElementTagNameMap[TTagName] }) => any,
34
+ options?: boolean | AddEventListenerOptions
35
+ ): NodeModFn<TTagName>;
36
+
37
+ /**
38
+ * Add a custom / arbitrary event listener (e.g. "my-event").
39
+ *
40
+ * Provide a custom Event subtype via the generic parameter E when needed:
41
+ * on<"my-event", CustomEvent<MyDetail>>("my-event", (e) => { ... })
42
+ */
43
+ function on<
44
+ K extends string,
45
+ E extends Event = Event,
46
+ TTagName extends ElementTagName = ElementTagName
47
+ >(
48
+ type: K,
49
+ listener: (this: HTMLElementTagNameMap[TTagName], ev: E & { currentTarget: HTMLElementTagNameMap[TTagName] }) => any,
50
+ options?: boolean | AddEventListenerOptions
51
+ ): NodeModFn<TTagName>;
52
+ }
53
+
54
+ export {};
@@ -0,0 +1,28 @@
1
+ declare global {
2
+ /**
3
+ * Renders a NodeModFn to a parent element by calling it and appending the result.
4
+ *
5
+ * @param nodeModFn The NodeModFn to render (created by tag builders like div(), h1(), etc.)
6
+ * @param parent The parent element to render into (defaults to document.body)
7
+ * @param index The index to pass to the NodeModFn (defaults to 0)
8
+ * @returns The rendered element
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const app = div(
13
+ * h1('Hello World'),
14
+ * button('Click me')
15
+ * );
16
+ *
17
+ * render(app); // Renders to document.body
18
+ * render(app, container); // Renders to specific container
19
+ * ```
20
+ */
21
+ function render<TTagName extends ElementTagName = ElementTagName>(
22
+ nodeModFn: NodeModFn<TTagName>,
23
+ parent?: Element,
24
+ index?: number
25
+ ): ExpandedElement<TTagName>;
26
+ }
27
+
28
+ export {};
@@ -0,0 +1,6 @@
1
+ declare global {
2
+ // Update controller function
3
+ export function update(): void;
4
+ }
5
+
6
+ export {};
@@ -0,0 +1,18 @@
1
+ declare global {
2
+ // When/conditional rendering types
3
+ export type WhenCondition = boolean | (() => boolean);
4
+ export type WhenContent<TTagName extends ElementTagName = ElementTagName> =
5
+ NodeMod<TTagName> | NodeModFn<TTagName>;
6
+
7
+ export interface WhenBuilder<TTagName extends ElementTagName = ElementTagName> extends NodeModFn<TTagName> {
8
+ when(condition: WhenCondition, ...content: WhenContent<TTagName>[]): WhenBuilder<TTagName>;
9
+ else(...content: WhenContent<TTagName>[]): WhenBuilder<TTagName>;
10
+ }
11
+
12
+ export function when<TTagName extends ElementTagName = ElementTagName>(
13
+ condition: WhenCondition,
14
+ ...content: WhenContent<TTagName>[]
15
+ ): WhenBuilder<TTagName>;
16
+ }
17
+
18
+ export {};
@@ -0,0 +1,119 @@
1
+ declare global {
2
+ // HTML tags
3
+ export const a: ExpandedElementBuilder<"a">;
4
+ export const abbr: ExpandedElementBuilder<"abbr">;
5
+ export const address: ExpandedElementBuilder<"address">;
6
+ export const article: ExpandedElementBuilder<"article">;
7
+ export const aside: ExpandedElementBuilder<"aside">;
8
+ export const audio: ExpandedElementBuilder<"audio">;
9
+ export const b: ExpandedElementBuilder<"b">;
10
+ export const bdi: ExpandedElementBuilder<"bdi">;
11
+ export const bdo: ExpandedElementBuilder<"bdo">;
12
+ export const blockquote: ExpandedElementBuilder<"blockquote">;
13
+ export const body: ExpandedElementBuilder<"body">;
14
+ export const button: ExpandedElementBuilder<"button">;
15
+ export const canvas: ExpandedElementBuilder<"canvas">;
16
+ export const caption: ExpandedElementBuilder<"caption">;
17
+ export const cite: ExpandedElementBuilder<"cite">;
18
+ export const code: ExpandedElementBuilder<"code">;
19
+ export const colgroup: ExpandedElementBuilder<"colgroup">;
20
+ export const data: ExpandedElementBuilder<"data">;
21
+ export const datalist: ExpandedElementBuilder<"datalist">;
22
+ export const dd: ExpandedElementBuilder<"dd">;
23
+ export const del: ExpandedElementBuilder<"del">;
24
+ export const details: ExpandedElementBuilder<"details">;
25
+ export const dfn: ExpandedElementBuilder<"dfn">;
26
+ export const dialog: ExpandedElementBuilder<"dialog">;
27
+ export const div: ExpandedElementBuilder<"div">;
28
+ export const dl: ExpandedElementBuilder<"dl">;
29
+ export const dt: ExpandedElementBuilder<"dt">;
30
+ export const em: ExpandedElementBuilder<"em">;
31
+ export const fieldset: ExpandedElementBuilder<"fieldset">;
32
+ export const figcaption: ExpandedElementBuilder<"figcaption">;
33
+ export const figure: ExpandedElementBuilder<"figure">;
34
+ export const footer: ExpandedElementBuilder<"footer">;
35
+ export const form: ExpandedElementBuilder<"form">;
36
+ export const h1: ExpandedElementBuilder<"h1">;
37
+ export const h2: ExpandedElementBuilder<"h2">;
38
+ export const h3: ExpandedElementBuilder<"h3">;
39
+ export const h4: ExpandedElementBuilder<"h4">;
40
+ export const h5: ExpandedElementBuilder<"h5">;
41
+ export const h6: ExpandedElementBuilder<"h6">;
42
+ export const head: ExpandedElementBuilder<"head">;
43
+ export const header: ExpandedElementBuilder<"header">;
44
+ export const hgroup: ExpandedElementBuilder<"hgroup">;
45
+ export const html: ExpandedElementBuilder<"html">;
46
+ export const i: ExpandedElementBuilder<"i">;
47
+ export const iframe: ExpandedElementBuilder<"iframe">;
48
+ export const ins: ExpandedElementBuilder<"ins">;
49
+ export const kbd: ExpandedElementBuilder<"kbd">;
50
+ export const label: ExpandedElementBuilder<"label">;
51
+ export const legend: ExpandedElementBuilder<"legend">;
52
+ export const li: ExpandedElementBuilder<"li">;
53
+ export const main: ExpandedElementBuilder<"main">;
54
+ export const map: ExpandedElementBuilder<"map">;
55
+ export const mark: ExpandedElementBuilder<"mark">;
56
+ export const menu: ExpandedElementBuilder<"menu">;
57
+ export const meter: ExpandedElementBuilder<"meter">;
58
+ export const nav: ExpandedElementBuilder<"nav">;
59
+ export const noscript: ExpandedElementBuilder<"noscript">;
60
+ export const object: ExpandedElementBuilder<"object">;
61
+ export const ol: ExpandedElementBuilder<"ol">;
62
+ export const optgroup: ExpandedElementBuilder<"optgroup">;
63
+ export const option: ExpandedElementBuilder<"option">;
64
+ export const output: ExpandedElementBuilder<"output">;
65
+ export const p: ExpandedElementBuilder<"p">;
66
+ export const picture: ExpandedElementBuilder<"picture">;
67
+ export const pre: ExpandedElementBuilder<"pre">;
68
+ export const progress: ExpandedElementBuilder<"progress">;
69
+ export const q: ExpandedElementBuilder<"q">;
70
+ export const rp: ExpandedElementBuilder<"rp">;
71
+ export const rt: ExpandedElementBuilder<"rt">;
72
+ export const ruby: ExpandedElementBuilder<"ruby">;
73
+ export const s: ExpandedElementBuilder<"s">;
74
+ export const samp: ExpandedElementBuilder<"samp">;
75
+ export const script: ExpandedElementBuilder<"script">;
76
+ export const search: ExpandedElementBuilder<"search">;
77
+ export const section: ExpandedElementBuilder<"section">;
78
+ export const select: ExpandedElementBuilder<"select">;
79
+ export const slot: ExpandedElementBuilder<"slot">;
80
+ export const small: ExpandedElementBuilder<"small">;
81
+ export const span: ExpandedElementBuilder<"span">;
82
+ export const strong: ExpandedElementBuilder<"strong">;
83
+ export const style: ExpandedElementBuilder<"style">;
84
+ export const sub: ExpandedElementBuilder<"sub">;
85
+ export const summary: ExpandedElementBuilder<"summary">;
86
+ export const sup: ExpandedElementBuilder<"sup">;
87
+ export const table: ExpandedElementBuilder<"table">;
88
+ export const tbody: ExpandedElementBuilder<"tbody">;
89
+ export const td: ExpandedElementBuilder<"td">;
90
+ export const template: ExpandedElementBuilder<"template">;
91
+ export const textarea: ExpandedElementBuilder<"textarea">;
92
+ export const tfoot: ExpandedElementBuilder<"tfoot">;
93
+ export const th: ExpandedElementBuilder<"th">;
94
+ export const thead: ExpandedElementBuilder<"thead">;
95
+ export const time: ExpandedElementBuilder<"time">;
96
+ export const title: ExpandedElementBuilder<"title">;
97
+ export const tr: ExpandedElementBuilder<"tr">;
98
+ export const u: ExpandedElementBuilder<"u">;
99
+ export const ul: ExpandedElementBuilder<"ul">;
100
+ export const var_: ExpandedElementBuilder<"var">;
101
+ export const video: ExpandedElementBuilder<"video">;
102
+
103
+ // Self-closing HTML tags (cannot have children)
104
+ export const area: ExpandedElementBuilder<"area">;
105
+ export const base: ExpandedElementBuilder<"base">;
106
+ export const br: ExpandedElementBuilder<"br">;
107
+ export const col: ExpandedElementBuilder<"col">;
108
+ export const embed: ExpandedElementBuilder<"embed">;
109
+ export const hr: ExpandedElementBuilder<"hr">;
110
+ export const img: ExpandedElementBuilder<"img">;
111
+ export const input: ExpandedElementBuilder<"input">;
112
+ export const link: ExpandedElementBuilder<"link">;
113
+ export const meta: ExpandedElementBuilder<"meta">;
114
+ export const source: ExpandedElementBuilder<"source">;
115
+ export const track: ExpandedElementBuilder<"track">;
116
+ export const wbr: ExpandedElementBuilder<"wbr">;
117
+ }
118
+
119
+ export {};
@@ -0,0 +1,24 @@
1
+ // Import all organized type definitions
2
+ import "./core/base";
3
+ import "./svg/base";
4
+ import "./html/tags";
5
+ import "./svg/tags";
6
+ import "./features/list";
7
+ import "./features/when";
8
+ import "./features/update";
9
+ import "./features/on";
10
+ import "./features/render";
11
+
12
+ // Re-export on() helper for module-style consumers (import { on } from "nuclo")
13
+ export function on<K extends keyof HTMLElementEventMap>(
14
+ type: K,
15
+ listener: (ev: HTMLElementEventMap[K]) => any,
16
+ options?: boolean | AddEventListenerOptions
17
+ ): NodeModFn<any>;
18
+ export function on<K extends string, E extends Event = Event>(
19
+ type: K,
20
+ listener: (ev: E) => any,
21
+ options?: boolean | AddEventListenerOptions
22
+ ): NodeModFn<any>;
23
+
24
+ export {};
@@ -0,0 +1,25 @@
1
+ declare global {
2
+ // SVG element modifier types
3
+ export type SVGElementModifier<TTagName extends keyof SVGElementTagNameMap = keyof SVGElementTagNameMap> =
4
+ | Primitive
5
+ | (() => Primitive)
6
+ | Partial<SVGElementTagNameMap[TTagName]>
7
+ | SVGElementTagNameMap[TTagName];
8
+
9
+ export type SVGElementModifierFn<TTagName extends keyof SVGElementTagNameMap = keyof SVGElementTagNameMap> = (
10
+ parent: SVGElementTagNameMap[TTagName],
11
+ index: number,
12
+ ) => SVGElementModifier<TTagName> | void;
13
+
14
+ // SVG builder type
15
+ export type ExpandedSVGElementBuilder<
16
+ TTagName extends keyof SVGElementTagNameMap = keyof SVGElementTagNameMap,
17
+ > = (
18
+ ...rawMods: Array<SVGElementModifier<TTagName> | SVGElementModifierFn<TTagName>>
19
+ ) => (
20
+ parent?: SVGElementTagNameMap[TTagName],
21
+ index?: number,
22
+ ) => SVGElementTagNameMap[TTagName];
23
+ }
24
+
25
+ export {};
@@ -0,0 +1,68 @@
1
+ declare global {
2
+ // SVG tags
3
+ export const a_svg: ExpandedSVGElementBuilder<"a">;
4
+ export const animate: ExpandedSVGElementBuilder<"animate">;
5
+ export const animateMotion: ExpandedSVGElementBuilder<"animateMotion">;
6
+ export const animateTransform: ExpandedSVGElementBuilder<"animateTransform">;
7
+ export const circle: ExpandedSVGElementBuilder<"circle">;
8
+ export const clipPath: ExpandedSVGElementBuilder<"clipPath">;
9
+ export const defs: ExpandedSVGElementBuilder<"defs">;
10
+ export const desc: ExpandedSVGElementBuilder<"desc">;
11
+ export const ellipse: ExpandedSVGElementBuilder<"ellipse">;
12
+ export const feBlend: ExpandedSVGElementBuilder<"feBlend">;
13
+ export const feColorMatrix: ExpandedSVGElementBuilder<"feColorMatrix">;
14
+ export const feComponentTransfer: ExpandedSVGElementBuilder<"feComponentTransfer">;
15
+ export const feComposite: ExpandedSVGElementBuilder<"feComposite">;
16
+ export const feConvolveMatrix: ExpandedSVGElementBuilder<"feConvolveMatrix">;
17
+ export const feDiffuseLighting: ExpandedSVGElementBuilder<"feDiffuseLighting">;
18
+ export const feDisplacementMap: ExpandedSVGElementBuilder<"feDisplacementMap">;
19
+ export const feDistantLight: ExpandedSVGElementBuilder<"feDistantLight">;
20
+ export const feDropShadow: ExpandedSVGElementBuilder<"feDropShadow">;
21
+ export const feFlood: ExpandedSVGElementBuilder<"feFlood">;
22
+ export const feFuncA: ExpandedSVGElementBuilder<"feFuncA">;
23
+ export const feFuncB: ExpandedSVGElementBuilder<"feFuncB">;
24
+ export const feFuncG: ExpandedSVGElementBuilder<"feFuncG">;
25
+ export const feFuncR: ExpandedSVGElementBuilder<"feFuncR">;
26
+ export const feGaussianBlur: ExpandedSVGElementBuilder<"feGaussianBlur">;
27
+ export const feImage: ExpandedSVGElementBuilder<"feImage">;
28
+ export const feMerge: ExpandedSVGElementBuilder<"feMerge">;
29
+ export const feMergeNode: ExpandedSVGElementBuilder<"feMergeNode">;
30
+ export const feMorphology: ExpandedSVGElementBuilder<"feMorphology">;
31
+ export const feOffset: ExpandedSVGElementBuilder<"feOffset">;
32
+ export const fePointLight: ExpandedSVGElementBuilder<"fePointLight">;
33
+ export const feSpecularLighting: ExpandedSVGElementBuilder<"feSpecularLighting">;
34
+ export const feSpotLight: ExpandedSVGElementBuilder<"feSpotLight">;
35
+ export const feTile: ExpandedSVGElementBuilder<"feTile">;
36
+ export const feTurbulence: ExpandedSVGElementBuilder<"feTurbulence">;
37
+ export const filter: ExpandedSVGElementBuilder<"filter">;
38
+ export const foreignObject: ExpandedSVGElementBuilder<"foreignObject">;
39
+ export const g: ExpandedSVGElementBuilder<"g">;
40
+ export const image: ExpandedSVGElementBuilder<"image">;
41
+ export const line: ExpandedSVGElementBuilder<"line">;
42
+ export const linearGradient: ExpandedSVGElementBuilder<"linearGradient">;
43
+ export const marker: ExpandedSVGElementBuilder<"marker">;
44
+ export const mask: ExpandedSVGElementBuilder<"mask">;
45
+ export const metadata: ExpandedSVGElementBuilder<"metadata">;
46
+ export const mpath: ExpandedSVGElementBuilder<"mpath">;
47
+ export const path: ExpandedSVGElementBuilder<"path">;
48
+ export const pattern: ExpandedSVGElementBuilder<"pattern">;
49
+ export const polygon: ExpandedSVGElementBuilder<"polygon">;
50
+ export const polyline: ExpandedSVGElementBuilder<"polyline">;
51
+ export const radialGradient: ExpandedSVGElementBuilder<"radialGradient">;
52
+ export const rect: ExpandedSVGElementBuilder<"rect">;
53
+ export const script_svg: ExpandedSVGElementBuilder<"script">;
54
+ export const set: ExpandedSVGElementBuilder<"set">;
55
+ export const stop_: ExpandedSVGElementBuilder<"stop">;
56
+ export const style_svg: ExpandedSVGElementBuilder<"style">;
57
+ export const svg: ExpandedSVGElementBuilder<"svg">;
58
+ export const switch_svg: ExpandedSVGElementBuilder<"switch">;
59
+ export const symbol: ExpandedSVGElementBuilder<"symbol">;
60
+ export const text: ExpandedSVGElementBuilder<"text">;
61
+ export const textPath: ExpandedSVGElementBuilder<"textPath">;
62
+ export const title_svg: ExpandedSVGElementBuilder<"title">;
63
+ export const tspan: ExpandedSVGElementBuilder<"tspan">;
64
+ export const use: ExpandedSVGElementBuilder<"use">;
65
+ export const view: ExpandedSVGElementBuilder<"view">;
66
+ }
67
+
68
+ export {};