elements-kit 0.0.1 → 0.0.2

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.
package/README.md CHANGED
@@ -1,22 +1,258 @@
1
- # Web Elements
1
+ # ElementsKit
2
2
 
3
- Web Elements is a lightweight reactive UI library that transforms native HTMLElements into reactive elements. Perfect for framework-agnostic applications and web component development.
3
+ A lightweight reactive UI library built on JSX and native DOM APIs. No virtual DOM, no diffing — fine-grained reactivity that updates only what changes.
4
4
 
5
5
  ```tsx
6
- const externalSignal = signal("something")
7
-
8
- function Elements(property1, property2, children): ReactiveHTMLElement{
9
- const value = signal(0)
10
- return div()
11
- .style.color("green")
12
- .title("tooltip")(
13
- header("This is my header"),
14
- main("Second children")
15
- b(value),
16
- span(externalSignal),
17
- ...children
18
- )
6
+ import { signal, computed } from "elements-kit/signals";
7
+
8
+ class Counter {
9
+ #count = signal(0);
10
+
11
+ render() {
12
+ return (
13
+ <section>
14
+ <p>Count: <strong>{this.#count}</strong></p>
15
+ <button onClick={() => this.#count(this.#count() + 1)}>+1</button>
16
+ </section>
17
+ ) as Element;
18
+ }
19
19
  }
20
20
 
21
- document.body.appendChild(render(Elements))
21
+ document.getElementById("app")!.appendChild(new Counter().render());
22
22
  ```
23
+
24
+ ## Principles
25
+
26
+ - **Direct DOM Manipulation** — Works with native HTMLElements, no virtual DOM or diffing overhead
27
+ - **Fine-Grained Reactivity** — Only the exact DOM nodes that depend on a changed signal update
28
+ - **JSX Without a Framework** — Standard JSX syntax compiled to real DOM nodes, no plugin required
29
+ - **Decorator-Driven** — `@reactive()` turns any class field into a signal transparently
30
+ - **Web Component Ready** — First-class support for custom elements and `attributeChangedCallback`
31
+ - **Type-Safe** — Full TypeScript support with comprehensive type inference
32
+
33
+ ---
34
+
35
+ ## Signals
36
+
37
+ ```ts
38
+ import { signal, computed, effect, batch, untracked } from "elements-kit/signals";
39
+
40
+ const count = signal(0); // writable signal
41
+ const doubled = computed(() => count() * 2); // derived, read-only
42
+
43
+ effect(() => console.log(count())); // runs whenever count changes
44
+
45
+ count(count() + 1); // write by calling with a value
46
+ console.log(count()); // read by calling with no arguments
47
+
48
+ batch(() => { // defer updates until the batch ends
49
+ count(10);
50
+ count(20);
51
+ });
52
+
53
+ const raw = untracked(() => count()); // read without subscribing
54
+ ```
55
+
56
+ Signals are the reactive primitive. Passing a signal directly as a JSX child or prop creates a live binding — no wrapper needed:
57
+
58
+ ```tsx
59
+ const name = signal("world");
60
+
61
+ // Both are equivalent live bindings:
62
+ <p>{name}</p>
63
+ <p>{() => name()}</p>
64
+ ```
65
+
66
+ ---
67
+
68
+ ## JSX
69
+
70
+ Configure your `tsconfig.json` to use the built-in JSX runtime:
71
+
72
+ ```json
73
+ {
74
+ "compilerOptions": {
75
+ "jsx": "react-jsx",
76
+ "jsxImportSource": "elements-kit"
77
+ }
78
+ }
79
+ ```
80
+
81
+ ### Props
82
+
83
+ | Syntax | Effect |
84
+ | --- | --- |
85
+ | `value={signal}` | Live-bound — updates DOM when signal changes |
86
+ | `value={42}` | Set once at render time |
87
+ | `onClick={fn}` | Camel-case event listener (`onclick`) |
88
+ | `on:click={fn}` | Explicit event namespace |
89
+ | `style:color={signal}` | Reactive inline style property |
90
+ | `class:active={signal}` | Reactive `classList.toggle` |
91
+ | `prop:foo={val}` | Force property assignment (bypasses `setAttribute`) |
92
+
93
+ ```tsx
94
+ const active = signal(false);
95
+ const label = signal("Submit");
96
+
97
+ <button
98
+ class:active={active}
99
+ style:opacity={computed(() => active() ? "1" : "0.5")}
100
+ onClick={() => (active(!active()))}
101
+ >
102
+ {label}
103
+ </button>
104
+ ```
105
+
106
+ ### Children
107
+
108
+ Any of the following are valid children:
109
+
110
+ - Primitive values (`string`, `number`, …)
111
+ - `Node` / `Element`
112
+ - A signal or `computed` — re-renders in place when it changes
113
+ - A plain function `() => value` — re-evaluated reactively
114
+ - Arrays of the above
115
+
116
+ ```tsx
117
+ const show = signal(true);
118
+
119
+ <div>
120
+ <strong>Static text</strong>
121
+ {count} // signal — live
122
+ {() => count() * 2} // thunk — live
123
+ {() => show() && <span>Conditional</span>}
124
+ </div>
125
+ ```
126
+
127
+ ---
128
+
129
+ ## `@reactive()` Decorator
130
+
131
+ Makes any class field behave like a signal — reads subscribe, writes trigger updates.
132
+
133
+ ```ts
134
+ import { computed, reactive } from "elements-kit/signals";
135
+
136
+ class Todo {
137
+ text: string;
138
+ @reactive() done: boolean;
139
+ }
140
+
141
+ class TodoApp {
142
+ @reactive()
143
+ todos: Todo[] = [];
144
+
145
+ @reactive()
146
+ showDone = true;
147
+
148
+ // Bind to an existing computed
149
+ @reactive((self) => computed(() => self.todos.filter(t => !t.done)))
150
+ readonly pending: Todo[] = [];
151
+ }
152
+ ```
153
+
154
+ `@reactive()` without arguments auto-wraps the field's initial value in a `signal`. Pass a factory `(self) => signal | computed` to bind the field to an existing reactive value.
155
+
156
+ ---
157
+
158
+ ## `@attributes` Decorator
159
+
160
+ Automatically wires `observedAttributes` and `attributeChangedCallback` for custom elements from a static `[ATTRIBUTES]` map.
161
+
162
+ ```ts
163
+ import { attributes, ATTRIBUTES as attr } from "elements-kit/attributes";
164
+ import { signal, reactive } from "elements-kit/signals";
165
+
166
+ @attributes
167
+ class Counter extends HTMLElement {
168
+ static [attr] = {
169
+ count(this: Counter, value: string | null) {
170
+ this.count = Number(value); // calls the @reactive setter
171
+ },
172
+ };
173
+
174
+ #count = signal(0);
175
+
176
+ @reactive((s) => s.#count)
177
+ count: number = 0;
178
+
179
+ connectedCallback() {
180
+ const Host = this;
181
+ <Host>
182
+ <p>Count: <strong>{this.#count}</strong></p>
183
+ <button onClick={() => this.count++}>+1</button>
184
+ </Host>;
185
+ }
186
+ }
187
+
188
+ customElements.define("x-counter", Counter);
189
+ ```
190
+
191
+ Use `<x-counter count={signal(9)} />` to pass a reactive attribute from JSX.
192
+
193
+ ---
194
+
195
+ ## `For` — Keyed List Rendering
196
+
197
+ Efficiently reconciles a reactive array into the DOM. Each item is rendered once per unique key — no full re-renders on reorder, add, or remove.
198
+
199
+ ```tsx
200
+ import { For } from "elements-kit";
201
+
202
+ const todos = computed(() => state.todos.filter(t => !t.done));
203
+
204
+ <ul>
205
+ <For each={todos} by={(todo) => todo.id}>
206
+ {(todo) => (
207
+ <li
208
+ style:text-decoration={computed(() => todo.done ? "line-through" : "none")}
209
+ >
210
+ <input
211
+ type="checkbox"
212
+ checked={computed(() => todo.done)}
213
+ on:change={() => (todo.done = !todo.done)}
214
+ />{" "}
215
+ {todo.text}
216
+ </li>
217
+ )}
218
+ </For>
219
+ </ul>
220
+ ```
221
+
222
+ | Prop | Type | Description |
223
+ | --- | --- | --- |
224
+ | `each` | `T[] \| (() => T[])` | Reactive array to render |
225
+ | `by` | `(item: T, index: number) => string \| number` | Key function — defaults to index |
226
+ | `children` | `(item: T, index: number) => Element` | Render function, called once per new key |
227
+
228
+ ---
229
+
230
+ ## Class Components
231
+
232
+ Any class with a `render()` method returning an `Element` or `DocumentFragment` works as a component. JSX instantiates it automatically:
233
+
234
+ ```tsx
235
+ class App {
236
+ render() {
237
+ return (
238
+ <div style="max-width: 480px; margin: 40px auto">
239
+ <h1>My App</h1>
240
+ <x-counter count={signal(0)} />
241
+ <TodoApp />
242
+ </div>
243
+ ) as Element;
244
+ }
245
+ }
246
+
247
+ document.getElementById("app")!.appendChild(new App().render());
248
+ ```
249
+
250
+ ---
251
+
252
+ ## TO-DO
253
+
254
+ - [ ] Complete type safety
255
+ - [ ] Async signal
256
+ - [ ] URLPattern signal
257
+ - [ ] Context
258
+ - [ ] `Key` component (conditional key-gated subtrees)
@@ -0,0 +1,90 @@
1
+ //#region src/attributes.d.ts
2
+ interface AttrChangeHandler<T> {
3
+ (this: T, value: string | null, oldValue?: string | null): void;
4
+ }
5
+ declare const ATTRIBUTES: unique symbol;
6
+ /**
7
+ * Dispatches an attribute change to the matching handler in the static `attributes` map,
8
+ * walking the prototype chain for inherited handlers.
9
+ * @example
10
+ * ```ts
11
+ * class MyElement extends HTMLElement {
12
+ * static [ATTRIBUTES]: Attributes<MyElement> = {
13
+ * count(value) {
14
+ * this.#count = Number(value);
15
+ * },
16
+ * };
17
+ * static observedAttributes: string[] = observedAttributes(MyElement);
18
+ *
19
+ * attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {
20
+ * dispatchAttrChange.call(this, name, oldValue, newValue);
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ declare function dispatchAttrChange<T extends {
26
+ constructor: {
27
+ [ATTRIBUTES]: Record<string, AttrChangeHandler<T>>;
28
+ };
29
+ }>(this: T, name: string, oldValue: string | null, newValue: string | null): void;
30
+ type Attributes<T> = Record<string, AttrChangeHandler<T>>;
31
+ /**
32
+ * Returns a deduplicated array of all observed attribute names for a custom element class and its ancestors.
33
+ *
34
+ * Call after defining static `[ATTRIBUTES]`, and assign to static `observedAttributes`.
35
+ *
36
+ * Example:
37
+ * ```ts
38
+ * class MyElement extends HTMLElement {
39
+ * static [ATTRIBUTES]: Attributes<MyElement> = {
40
+ * count(value) {
41
+ * this.#count = Number(value);
42
+ * },
43
+ * };
44
+ * static observedAttributes: string[] = observedAttributes(MyElement);
45
+ * }
46
+ *
47
+ * class ChildElement extends MyElement {
48
+ * static [ATTRIBUTES]: Attributes<ChildElement> = {
49
+ * bar(value) {
50
+ * // ...
51
+ * },
52
+ * };
53
+ * static observedAttributes: string[] = observedAttributes(ChildElement);
54
+ * }
55
+ * // ChildElement.observedAttributes will include both 'count' and 'bar', deduplicated.
56
+ * ```
57
+ *
58
+ * @param cls The custom element class constructor
59
+ * @returns Array of unique attribute names to observe
60
+ */
61
+ declare function observedAttributes(cls: any): string[];
62
+ /**
63
+ * A class decorator that automatically wires up `observedAttributes` and `attributeChangedCallback`
64
+ * from a static `[ATTRIBUTES]` map.
65
+ *
66
+ * The `this` type inside attribute handlers is automatically inferred from the decorated class.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * @attributes
71
+ * class MyElement extends HTMLElement {
72
+ * static [ATTRIBUTES] = {
73
+ * count(this: MyElement, value: string | null) {
74
+ * this.count = Number(value);
75
+ * },
76
+ * };
77
+ * }
78
+ * ```
79
+ */
80
+ type AttributeTarget<T extends abstract new (...args: any[]) => HTMLElement> = T & {
81
+ [ATTRIBUTES]: Record<string, AttrChangeHandler<InstanceType<T>>>;
82
+ };
83
+ type AttributeDecorated<T extends abstract new (...args: any[]) => HTMLElement> = T & (new (...args: any[]) => InstanceType<T> & {
84
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
85
+ }) & {
86
+ observedAttributes: string[];
87
+ };
88
+ declare function attributes<T extends abstract new (...args: any[]) => HTMLElement>(target: AttributeTarget<T>, context: ClassDecoratorContext<T>): AttributeDecorated<T>;
89
+ //#endregion
90
+ export { ATTRIBUTES, AttrChangeHandler, AttributeDecorated, AttributeTarget, Attributes, attributes, dispatchAttrChange, observedAttributes };
@@ -0,0 +1,82 @@
1
+ //#region src/attributes.ts
2
+ const ATTRIBUTES = Symbol("attributes");
3
+ /**
4
+ * Dispatches an attribute change to the matching handler in the static `attributes` map,
5
+ * walking the prototype chain for inherited handlers.
6
+ * @example
7
+ * ```ts
8
+ * class MyElement extends HTMLElement {
9
+ * static [ATTRIBUTES]: Attributes<MyElement> = {
10
+ * count(value) {
11
+ * this.#count = Number(value);
12
+ * },
13
+ * };
14
+ * static observedAttributes: string[] = observedAttributes(MyElement);
15
+ *
16
+ * attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {
17
+ * dispatchAttrChange.call(this, name, oldValue, newValue);
18
+ * }
19
+ * }
20
+ * ```
21
+ */
22
+ function dispatchAttrChange(name, oldValue, newValue) {
23
+ let cls = this.constructor;
24
+ while (cls) {
25
+ if (cls[ATTRIBUTES] && name in cls[ATTRIBUTES]) {
26
+ cls[ATTRIBUTES][name].call(this, newValue, oldValue);
27
+ return;
28
+ }
29
+ cls = Object.getPrototypeOf(cls);
30
+ }
31
+ }
32
+ /**
33
+ * Returns a deduplicated array of all observed attribute names for a custom element class and its ancestors.
34
+ *
35
+ * Call after defining static `[ATTRIBUTES]`, and assign to static `observedAttributes`.
36
+ *
37
+ * Example:
38
+ * ```ts
39
+ * class MyElement extends HTMLElement {
40
+ * static [ATTRIBUTES]: Attributes<MyElement> = {
41
+ * count(value) {
42
+ * this.#count = Number(value);
43
+ * },
44
+ * };
45
+ * static observedAttributes: string[] = observedAttributes(MyElement);
46
+ * }
47
+ *
48
+ * class ChildElement extends MyElement {
49
+ * static [ATTRIBUTES]: Attributes<ChildElement> = {
50
+ * bar(value) {
51
+ * // ...
52
+ * },
53
+ * };
54
+ * static observedAttributes: string[] = observedAttributes(ChildElement);
55
+ * }
56
+ * // ChildElement.observedAttributes will include both 'count' and 'bar', deduplicated.
57
+ * ```
58
+ *
59
+ * @param cls The custom element class constructor
60
+ * @returns Array of unique attribute names to observe
61
+ */
62
+ function observedAttributes(cls) {
63
+ const s = new Set(Object.keys(cls[ATTRIBUTES] || {}));
64
+ let _cls = Object.getPrototypeOf(cls);
65
+ while (_cls) {
66
+ if (_cls.observedAttributes) _cls.observedAttributes.forEach((attr) => s.add(attr));
67
+ _cls = Object.getPrototypeOf(_cls);
68
+ }
69
+ return Array.from(s);
70
+ }
71
+ function attributes(target, context) {
72
+ context.addInitializer(function() {
73
+ target.observedAttributes = observedAttributes(target);
74
+ });
75
+ target.prototype.attributeChangedCallback = function(name, oldValue, newValue) {
76
+ dispatchAttrChange.call(this, name, oldValue, newValue);
77
+ };
78
+ return target;
79
+ }
80
+
81
+ //#endregion
82
+ export { ATTRIBUTES, attributes, dispatchAttrChange, observedAttributes };
@@ -0,0 +1,213 @@
1
+ import "../polyfill-Bvo2e52W.mjs";
2
+ import { ReactiveElementOf } from "./index.mjs";
3
+
4
+ //#region src/builder/dom.d.ts
5
+ interface Lifecycle {
6
+ connectedCallback?(): void;
7
+ disconnectedCallback?(): void;
8
+ attributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;
9
+ adoptedCallback?(): void;
10
+ }
11
+ declare const a: () => ReactiveElementOf<HTMLAnchorElement>;
12
+ declare const abbr: () => ReactiveElementOf<HTMLElement>;
13
+ declare const address: () => ReactiveElementOf<HTMLElement>;
14
+ declare const area: () => ReactiveElementOf<HTMLAreaElement>;
15
+ declare const article: () => ReactiveElementOf<HTMLElement>;
16
+ declare const aside: () => ReactiveElementOf<HTMLElement>;
17
+ declare const audio: () => ReactiveElementOf<HTMLAudioElement>;
18
+ declare const b: () => ReactiveElementOf<HTMLElement>;
19
+ declare const base: () => ReactiveElementOf<HTMLBaseElement>;
20
+ declare const bdi: () => ReactiveElementOf<HTMLElement>;
21
+ declare const bdo: () => ReactiveElementOf<HTMLElement>;
22
+ declare const blockquote: () => ReactiveElementOf<HTMLQuoteElement>;
23
+ declare const body: () => ReactiveElementOf<HTMLBodyElement>;
24
+ declare const br: () => ReactiveElementOf<HTMLBRElement>;
25
+ declare const button: () => ReactiveElementOf<HTMLButtonElement>;
26
+ declare const canvas: () => ReactiveElementOf<HTMLCanvasElement>;
27
+ declare const caption: () => ReactiveElementOf<HTMLTableCaptionElement>;
28
+ declare const cite: () => ReactiveElementOf<HTMLElement>;
29
+ declare const code: () => ReactiveElementOf<HTMLElement>;
30
+ declare const col: () => ReactiveElementOf<HTMLTableColElement>;
31
+ declare const colgroup: () => ReactiveElementOf<HTMLTableColElement>;
32
+ declare const data: () => ReactiveElementOf<HTMLDataElement>;
33
+ declare const datalist: () => ReactiveElementOf<HTMLDataListElement>;
34
+ declare const dd: () => ReactiveElementOf<HTMLElement>;
35
+ declare const del: () => ReactiveElementOf<HTMLModElement>;
36
+ declare const details: () => ReactiveElementOf<HTMLDetailsElement>;
37
+ declare const dfn: () => ReactiveElementOf<HTMLElement>;
38
+ declare const dialog: () => ReactiveElementOf<HTMLDialogElement>;
39
+ declare const div: () => ReactiveElementOf<HTMLDivElement>;
40
+ declare const dl: () => ReactiveElementOf<HTMLDListElement>;
41
+ declare const dt: () => ReactiveElementOf<HTMLElement>;
42
+ declare const em: () => ReactiveElementOf<HTMLElement>;
43
+ declare const embed: () => ReactiveElementOf<HTMLEmbedElement>;
44
+ declare const fieldset: () => ReactiveElementOf<HTMLFieldSetElement>;
45
+ declare const figcaption: () => ReactiveElementOf<HTMLElement>;
46
+ declare const figure: () => ReactiveElementOf<HTMLElement>;
47
+ declare const footer: () => ReactiveElementOf<HTMLElement>;
48
+ declare const form: () => ReactiveElementOf<HTMLFormElement>;
49
+ declare const h1: () => ReactiveElementOf<HTMLHeadingElement>;
50
+ declare const h2: () => ReactiveElementOf<HTMLHeadingElement>;
51
+ declare const h3: () => ReactiveElementOf<HTMLHeadingElement>;
52
+ declare const h4: () => ReactiveElementOf<HTMLHeadingElement>;
53
+ declare const h5: () => ReactiveElementOf<HTMLHeadingElement>;
54
+ declare const h6: () => ReactiveElementOf<HTMLHeadingElement>;
55
+ declare const head: () => ReactiveElementOf<HTMLHeadElement>;
56
+ declare const header: () => ReactiveElementOf<HTMLElement>;
57
+ declare const hgroup: () => ReactiveElementOf<HTMLElement>;
58
+ declare const hr: () => ReactiveElementOf<HTMLHRElement>;
59
+ declare const html: () => ReactiveElementOf<HTMLHtmlElement>;
60
+ declare const i: () => ReactiveElementOf<HTMLElement>;
61
+ declare const iframe: () => ReactiveElementOf<HTMLIFrameElement>;
62
+ declare const img: () => ReactiveElementOf<HTMLImageElement>;
63
+ declare const input: () => ReactiveElementOf<HTMLInputElement>;
64
+ declare const ins: () => ReactiveElementOf<HTMLModElement>;
65
+ declare const kbd: () => ReactiveElementOf<HTMLElement>;
66
+ declare const label: () => ReactiveElementOf<HTMLLabelElement>;
67
+ declare const legend: () => ReactiveElementOf<HTMLLegendElement>;
68
+ declare const li: () => ReactiveElementOf<HTMLLIElement>;
69
+ declare const link: () => ReactiveElementOf<HTMLLinkElement>;
70
+ declare const main: () => ReactiveElementOf<HTMLElement>;
71
+ declare const map: () => ReactiveElementOf<HTMLMapElement>;
72
+ declare const mark: () => ReactiveElementOf<HTMLElement>;
73
+ declare const menu: () => ReactiveElementOf<HTMLMenuElement>;
74
+ declare const meta: () => ReactiveElementOf<HTMLMetaElement>;
75
+ declare const meter: () => ReactiveElementOf<HTMLMeterElement>;
76
+ declare const nav: () => ReactiveElementOf<HTMLElement>;
77
+ declare const noscript: () => ReactiveElementOf<HTMLElement>;
78
+ declare const object: () => ReactiveElementOf<HTMLObjectElement>;
79
+ declare const ol: () => ReactiveElementOf<HTMLOListElement>;
80
+ declare const optgroup: () => ReactiveElementOf<HTMLOptGroupElement>;
81
+ declare const option: () => ReactiveElementOf<HTMLOptionElement>;
82
+ declare const output: () => ReactiveElementOf<HTMLOutputElement>;
83
+ declare const p: () => ReactiveElementOf<HTMLParagraphElement>;
84
+ declare const picture: () => ReactiveElementOf<HTMLPictureElement>;
85
+ declare const pre: () => ReactiveElementOf<HTMLPreElement>;
86
+ declare const progress: () => ReactiveElementOf<HTMLProgressElement>;
87
+ declare const q: () => ReactiveElementOf<HTMLQuoteElement>;
88
+ declare const rp: () => ReactiveElementOf<HTMLElement>;
89
+ declare const rt: () => ReactiveElementOf<HTMLElement>;
90
+ declare const ruby: () => ReactiveElementOf<HTMLElement>;
91
+ declare const s: () => ReactiveElementOf<HTMLElement>;
92
+ declare const samp: () => ReactiveElementOf<HTMLElement>;
93
+ declare const script: () => ReactiveElementOf<HTMLScriptElement>;
94
+ declare const search: () => ReactiveElementOf<HTMLElement>;
95
+ declare const section: () => ReactiveElementOf<HTMLElement>;
96
+ declare const select: () => ReactiveElementOf<HTMLSelectElement>;
97
+ declare const slot: () => ReactiveElementOf<HTMLSlotElement>;
98
+ declare const small: () => ReactiveElementOf<HTMLElement>;
99
+ declare const source: () => ReactiveElementOf<HTMLSourceElement>;
100
+ declare const span: () => ReactiveElementOf<HTMLSpanElement>;
101
+ declare const strong: () => ReactiveElementOf<HTMLElement>;
102
+ declare const style: () => ReactiveElementOf<HTMLStyleElement>;
103
+ declare const sub: () => ReactiveElementOf<HTMLElement>;
104
+ declare const summary: () => ReactiveElementOf<HTMLElement>;
105
+ declare const sup: () => ReactiveElementOf<HTMLElement>;
106
+ declare const table: () => ReactiveElementOf<HTMLTableElement>;
107
+ declare const tbody: () => ReactiveElementOf<HTMLTableSectionElement>;
108
+ declare const td: () => ReactiveElementOf<HTMLTableCellElement>;
109
+ declare const template: () => ReactiveElementOf<HTMLTemplateElement>;
110
+ declare const textarea: () => ReactiveElementOf<HTMLTextAreaElement>;
111
+ declare const tfoot: () => ReactiveElementOf<HTMLTableSectionElement>;
112
+ declare const th: () => ReactiveElementOf<HTMLTableCellElement>;
113
+ declare const thead: () => ReactiveElementOf<HTMLTableSectionElement>;
114
+ declare const time: () => ReactiveElementOf<HTMLTimeElement>;
115
+ declare const title: () => ReactiveElementOf<HTMLTitleElement>;
116
+ declare const tr: () => ReactiveElementOf<HTMLTableRowElement>;
117
+ declare const track: () => ReactiveElementOf<HTMLTrackElement>;
118
+ declare const u: () => ReactiveElementOf<HTMLElement>;
119
+ declare const ul: () => ReactiveElementOf<HTMLUListElement>;
120
+ declare const mathVar: () => ReactiveElementOf<HTMLElement>;
121
+ declare const video: () => ReactiveElementOf<HTMLVideoElement>;
122
+ declare const wbr: () => ReactiveElementOf<HTMLElement>;
123
+ declare const animate: () => ReactiveElementOf<SVGAnimateElement>;
124
+ declare const animateMotion: () => ReactiveElementOf<SVGAnimateMotionElement>;
125
+ declare const animateTransform: () => ReactiveElementOf<SVGAnimateTransformElement>;
126
+ declare const circle: () => ReactiveElementOf<SVGCircleElement>;
127
+ declare const clipPath: () => ReactiveElementOf<SVGClipPathElement>;
128
+ declare const defs: () => ReactiveElementOf<SVGDefsElement>;
129
+ declare const desc: () => ReactiveElementOf<SVGDescElement>;
130
+ declare const ellipse: () => ReactiveElementOf<SVGEllipseElement>;
131
+ declare const feBlend: () => ReactiveElementOf<SVGFEBlendElement>;
132
+ declare const feColorMatrix: () => ReactiveElementOf<SVGFEColorMatrixElement>;
133
+ declare const feComponentTransfer: () => ReactiveElementOf<SVGFEComponentTransferElement>;
134
+ declare const feComposite: () => ReactiveElementOf<SVGFECompositeElement>;
135
+ declare const feConvolveMatrix: () => ReactiveElementOf<SVGFEConvolveMatrixElement>;
136
+ declare const feDiffuseLighting: () => ReactiveElementOf<SVGFEDiffuseLightingElement>;
137
+ declare const feDisplacementMap: () => ReactiveElementOf<SVGFEDisplacementMapElement>;
138
+ declare const feDistantLight: () => ReactiveElementOf<SVGFEDistantLightElement>;
139
+ declare const feDropShadow: () => ReactiveElementOf<SVGFEDropShadowElement>;
140
+ declare const feFlood: () => ReactiveElementOf<SVGFEFloodElement>;
141
+ declare const feFuncA: () => ReactiveElementOf<SVGFEFuncAElement>;
142
+ declare const feFuncB: () => ReactiveElementOf<SVGFEFuncBElement>;
143
+ declare const feFuncG: () => ReactiveElementOf<SVGFEFuncGElement>;
144
+ declare const feFuncR: () => ReactiveElementOf<SVGFEFuncRElement>;
145
+ declare const feGaussianBlur: () => ReactiveElementOf<SVGFEGaussianBlurElement>;
146
+ declare const feImage: () => ReactiveElementOf<SVGFEImageElement>;
147
+ declare const feMerge: () => ReactiveElementOf<SVGFEMergeElement>;
148
+ declare const feMergeNode: () => ReactiveElementOf<SVGFEMergeNodeElement>;
149
+ declare const feMorphology: () => ReactiveElementOf<SVGFEMorphologyElement>;
150
+ declare const feOffset: () => ReactiveElementOf<SVGFEOffsetElement>;
151
+ declare const fePointLight: () => ReactiveElementOf<SVGFEPointLightElement>;
152
+ declare const feSpecularLighting: () => ReactiveElementOf<SVGFESpecularLightingElement>;
153
+ declare const feSpotLight: () => ReactiveElementOf<SVGFESpotLightElement>;
154
+ declare const feTile: () => ReactiveElementOf<SVGFETileElement>;
155
+ declare const feTurbulence: () => ReactiveElementOf<SVGFETurbulenceElement>;
156
+ declare const filter: () => ReactiveElementOf<SVGFilterElement>;
157
+ declare const foreignObject: () => ReactiveElementOf<SVGForeignObjectElement>;
158
+ declare const g: () => ReactiveElementOf<SVGGElement>;
159
+ declare const image: () => ReactiveElementOf<SVGImageElement>;
160
+ declare const line: () => ReactiveElementOf<SVGLineElement>;
161
+ declare const linearGradient: () => ReactiveElementOf<SVGLinearGradientElement>;
162
+ declare const marker: () => ReactiveElementOf<SVGMarkerElement>;
163
+ declare const mask: () => ReactiveElementOf<SVGMaskElement>;
164
+ declare const metadata: () => ReactiveElementOf<SVGMetadataElement>;
165
+ declare const mpath: () => ReactiveElementOf<SVGMPathElement>;
166
+ declare const path: () => ReactiveElementOf<SVGPathElement>;
167
+ declare const pattern: () => ReactiveElementOf<SVGPatternElement>;
168
+ declare const polygon: () => ReactiveElementOf<SVGPolygonElement>;
169
+ declare const polyline: () => ReactiveElementOf<SVGPolylineElement>;
170
+ declare const radialGradient: () => ReactiveElementOf<SVGRadialGradientElement>;
171
+ declare const rect: () => ReactiveElementOf<SVGRectElement>;
172
+ declare const set: () => ReactiveElementOf<SVGSetElement>;
173
+ declare const stop: () => ReactiveElementOf<SVGStopElement>;
174
+ declare const svg: () => ReactiveElementOf<SVGSVGElement>;
175
+ declare const svgSwitch: () => ReactiveElementOf<SVGSwitchElement>;
176
+ declare const symbol: () => ReactiveElementOf<SVGSymbolElement>;
177
+ declare const text: () => ReactiveElementOf<SVGTextElement>;
178
+ declare const textPath: () => ReactiveElementOf<SVGTextPathElement>;
179
+ declare const tspan: () => ReactiveElementOf<SVGTSpanElement>;
180
+ declare const use: () => ReactiveElementOf<SVGUseElement>;
181
+ declare const view: () => ReactiveElementOf<SVGViewElement>;
182
+ declare const annotation: () => ReactiveElementOf<MathMLElement>;
183
+ declare const annotationXml: () => ReactiveElementOf<MathMLElement>;
184
+ declare const maction: () => ReactiveElementOf<MathMLElement>;
185
+ declare const math: () => ReactiveElementOf<MathMLElement>;
186
+ declare const merror: () => ReactiveElementOf<MathMLElement>;
187
+ declare const mfrac: () => ReactiveElementOf<MathMLElement>;
188
+ declare const mi: () => ReactiveElementOf<MathMLElement>;
189
+ declare const mmultiscripts: () => ReactiveElementOf<MathMLElement>;
190
+ declare const mn: () => ReactiveElementOf<MathMLElement>;
191
+ declare const mo: () => ReactiveElementOf<MathMLElement>;
192
+ declare const mover: () => ReactiveElementOf<MathMLElement>;
193
+ declare const mpadded: () => ReactiveElementOf<MathMLElement>;
194
+ declare const mphantom: () => ReactiveElementOf<MathMLElement>;
195
+ declare const mprescripts: () => ReactiveElementOf<MathMLElement>;
196
+ declare const mroot: () => ReactiveElementOf<MathMLElement>;
197
+ declare const mrow: () => ReactiveElementOf<MathMLElement>;
198
+ declare const ms: () => ReactiveElementOf<MathMLElement>;
199
+ declare const mspace: () => ReactiveElementOf<MathMLElement>;
200
+ declare const msqrt: () => ReactiveElementOf<MathMLElement>;
201
+ declare const mstyle: () => ReactiveElementOf<MathMLElement>;
202
+ declare const msub: () => ReactiveElementOf<MathMLElement>;
203
+ declare const msubsup: () => ReactiveElementOf<MathMLElement>;
204
+ declare const msup: () => ReactiveElementOf<MathMLElement>;
205
+ declare const mtable: () => ReactiveElementOf<MathMLElement>;
206
+ declare const mtd: () => ReactiveElementOf<MathMLElement>;
207
+ declare const mtext: () => ReactiveElementOf<MathMLElement>;
208
+ declare const mtr: () => ReactiveElementOf<MathMLElement>;
209
+ declare const munder: () => ReactiveElementOf<MathMLElement>;
210
+ declare const munderover: () => ReactiveElementOf<MathMLElement>;
211
+ declare const semantics: () => ReactiveElementOf<MathMLElement>;
212
+ //#endregion
213
+ export { Lifecycle, a, abbr, address, animate, animateMotion, animateTransform, annotation, annotationXml, area, article, aside, audio, b, base, bdi, bdo, blockquote, body, br, button, canvas, caption, circle, cite, clipPath, code, col, colgroup, data, datalist, dd, defs, del, desc, details, dfn, dialog, div, dl, dt, ellipse, em, embed, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feDistantLight, feDropShadow, feFlood, feFuncA, feFuncB, feFuncG, feFuncR, feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset, fePointLight, feSpecularLighting, feSpotLight, feTile, feTurbulence, fieldset, figcaption, figure, filter, footer, foreignObject, form, g, h1, h2, h3, h4, h5, h6, head, header, hgroup, hr, html, i, iframe, image, img, input, ins, kbd, label, legend, li, line, linearGradient, link, maction, main, map, mark, marker, mask, math, mathVar, menu, merror, meta, metadata, meter, mfrac, mi, mmultiscripts, mn, mo, mover, mpadded, mpath, mphantom, mprescripts, mroot, mrow, ms, mspace, msqrt, mstyle, msub, msubsup, msup, mtable, mtd, mtext, mtr, munder, munderover, nav, noscript, object, ol, optgroup, option, output, p, path, pattern, picture, polygon, polyline, pre, progress, q, radialGradient, rect, rp, rt, ruby, s, samp, script, search, section, select, semantics, set, slot, small, source, span, stop, strong, style, sub, summary, sup, svg, svgSwitch, symbol, table, tbody, td, template, text, textPath, textarea, tfoot, th, thead, time, title, tr, track, tspan, u, ul, use, video, view, wbr };