@joist/element 4.0.1-next.1 → 4.1.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 (97) hide show
  1. package/README.md +142 -29
  2. package/package.json +7 -9
  3. package/src/lib/attr-changed.test.ts +34 -0
  4. package/src/lib/attr-changed.ts +15 -0
  5. package/src/lib/attr.test.ts +175 -47
  6. package/src/lib/attr.ts +60 -40
  7. package/src/lib/element.test.ts +111 -18
  8. package/src/lib/element.ts +141 -39
  9. package/src/lib/lifecycle.test.ts +31 -0
  10. package/src/lib/lifecycle.ts +12 -0
  11. package/src/lib/listen.test.ts +104 -0
  12. package/src/lib/listen.ts +31 -5
  13. package/src/lib/metadata.ts +31 -9
  14. package/src/lib/query-all.test.ts +153 -0
  15. package/src/lib/query-all.ts +81 -0
  16. package/src/lib/query.test.ts +142 -0
  17. package/src/lib/query.ts +72 -0
  18. package/src/lib/result.ts +2 -26
  19. package/src/lib/tags.ts +26 -65
  20. package/src/lib/template.test.ts +123 -0
  21. package/src/lib/template.ts +130 -0
  22. package/src/lib.ts +8 -7
  23. package/target/lib/attr-changed.d.ts +2 -0
  24. package/target/lib/attr-changed.js +10 -0
  25. package/target/lib/attr-changed.js.map +1 -0
  26. package/target/lib/attr-changed.test.js +54 -0
  27. package/target/lib/attr-changed.test.js.map +1 -0
  28. package/target/lib/attr.d.ts +6 -1
  29. package/target/lib/attr.js +50 -31
  30. package/target/lib/attr.js.map +1 -1
  31. package/target/lib/attr.test.js +395 -148
  32. package/target/lib/attr.test.js.map +1 -1
  33. package/target/lib/element.d.ts +11 -334
  34. package/target/lib/element.js +105 -32
  35. package/target/lib/element.js.map +1 -1
  36. package/target/lib/element.test.js +162 -66
  37. package/target/lib/element.test.js.map +1 -1
  38. package/target/lib/lifecycle.d.ts +1 -0
  39. package/target/lib/lifecycle.js +8 -0
  40. package/target/lib/lifecycle.js.map +1 -0
  41. package/target/lib/lifecycle.test.js +48 -0
  42. package/target/lib/lifecycle.test.js.map +1 -0
  43. package/target/lib/listen.d.ts +2 -1
  44. package/target/lib/listen.js +22 -4
  45. package/target/lib/listen.js.map +1 -1
  46. package/target/lib/listen.test.js +167 -0
  47. package/target/lib/listen.test.js.map +1 -0
  48. package/target/lib/metadata.d.ts +25 -6
  49. package/target/lib/metadata.js +9 -4
  50. package/target/lib/metadata.js.map +1 -1
  51. package/target/lib/query-all.d.ts +10 -0
  52. package/target/lib/query-all.js +40 -0
  53. package/target/lib/query-all.js.map +1 -0
  54. package/target/lib/query-all.test.d.ts +1 -0
  55. package/target/lib/query-all.test.js +195 -0
  56. package/target/lib/query-all.test.js.map +1 -0
  57. package/target/lib/query.d.ts +10 -0
  58. package/target/lib/query.js +36 -0
  59. package/target/lib/query.js.map +1 -0
  60. package/target/lib/query.test.d.ts +1 -0
  61. package/target/lib/query.test.js +188 -0
  62. package/target/lib/query.test.js.map +1 -0
  63. package/target/lib/result.d.ts +2 -8
  64. package/target/lib/result.js +1 -19
  65. package/target/lib/result.js.map +1 -1
  66. package/target/lib/tags.d.ts +10 -20
  67. package/target/lib/tags.js +21 -30
  68. package/target/lib/tags.js.map +1 -1
  69. package/target/lib/template.d.ts +11 -0
  70. package/target/lib/template.js +89 -0
  71. package/target/lib/template.js.map +1 -0
  72. package/target/lib/template.test.d.ts +1 -0
  73. package/target/lib/template.test.js +91 -0
  74. package/target/lib/template.test.js.map +1 -0
  75. package/target/lib.d.ts +8 -7
  76. package/target/lib.js +8 -7
  77. package/target/lib.js.map +1 -1
  78. package/src/lib/shadow.test.ts +0 -40
  79. package/src/lib/shadow.ts +0 -16
  80. package/src/lib/tag-name.test.ts +0 -13
  81. package/src/lib/tag-name.ts +0 -10
  82. package/src/lib/tags.test.ts +0 -28
  83. package/target/lib/shadow.d.ts +0 -2
  84. package/target/lib/shadow.js +0 -10
  85. package/target/lib/shadow.js.map +0 -1
  86. package/target/lib/shadow.test.js +0 -69
  87. package/target/lib/shadow.test.js.map +0 -1
  88. package/target/lib/tag-name.d.ts +0 -1
  89. package/target/lib/tag-name.js +0 -6
  90. package/target/lib/tag-name.js.map +0 -1
  91. package/target/lib/tag-name.test.js +0 -36
  92. package/target/lib/tag-name.test.js.map +0 -1
  93. package/target/lib/tags.test.js +0 -23
  94. package/target/lib/tags.test.js.map +0 -1
  95. /package/target/lib/{shadow.test.d.ts → attr-changed.test.d.ts} +0 -0
  96. /package/target/lib/{tag-name.test.d.ts → lifecycle.test.d.ts} +0 -0
  97. /package/target/lib/{tags.test.d.ts → listen.test.d.ts} +0 -0
@@ -1,334 +1,11 @@
1
- export declare function element<Target extends CustomElementConstructor>(Base: Target, ctx: ClassDecoratorContext<Target>): {
2
- new (...args: any[]): {
3
- connectedCallback(): void;
4
- accessKey: string;
5
- readonly accessKeyLabel: string;
6
- autocapitalize: string;
7
- dir: string;
8
- draggable: boolean;
9
- hidden: boolean;
10
- inert: boolean;
11
- innerText: string;
12
- lang: string;
13
- readonly offsetHeight: number;
14
- readonly offsetLeft: number;
15
- readonly offsetParent: Element | null;
16
- readonly offsetTop: number;
17
- readonly offsetWidth: number;
18
- outerText: string;
19
- popover: string | null;
20
- spellcheck: boolean;
21
- title: string;
22
- translate: boolean;
23
- attachInternals(): ElementInternals;
24
- click(): void;
25
- hidePopover(): void;
26
- showPopover(): void;
27
- togglePopover(force?: boolean): boolean;
28
- addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
29
- addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
30
- removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
31
- removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
32
- disconnectedCallback?(): void;
33
- readonly attributes: NamedNodeMap;
34
- readonly classList: DOMTokenList;
35
- className: string;
36
- readonly clientHeight: number;
37
- readonly clientLeft: number;
38
- readonly clientTop: number;
39
- readonly clientWidth: number;
40
- id: string;
41
- readonly localName: string;
42
- readonly namespaceURI: string | null;
43
- onfullscreenchange: ((this: Element, ev: Event) => any) | null;
44
- onfullscreenerror: ((this: Element, ev: Event) => any) | null;
45
- outerHTML: string;
46
- readonly ownerDocument: Document;
47
- readonly part: DOMTokenList;
48
- readonly prefix: string | null;
49
- readonly scrollHeight: number;
50
- scrollLeft: number;
51
- scrollTop: number;
52
- readonly scrollWidth: number;
53
- readonly shadowRoot: ShadowRoot | null;
54
- slot: string;
55
- readonly tagName: string;
56
- attachShadow(init: ShadowRootInit): ShadowRoot;
57
- checkVisibility(options?: CheckVisibilityOptions): boolean;
58
- closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;
59
- closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;
60
- closest<K extends keyof MathMLElementTagNameMap>(selector: K): MathMLElementTagNameMap[K] | null;
61
- closest<E extends Element = Element>(selectors: string): E | null;
62
- computedStyleMap(): StylePropertyMapReadOnly;
63
- getAttribute(qualifiedName: string): string | null;
64
- getAttributeNS(namespace: string | null, localName: string): string | null;
65
- getAttributeNames(): string[];
66
- getAttributeNode(qualifiedName: string): Attr | null;
67
- getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;
68
- getBoundingClientRect(): DOMRect;
69
- getClientRects(): DOMRectList;
70
- getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
71
- getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
72
- getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
73
- getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;
74
- getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;
75
- getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
76
- getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
77
- getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
78
- getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf<MathMLElement>;
79
- getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
80
- hasAttribute(qualifiedName: string): boolean;
81
- hasAttributeNS(namespace: string | null, localName: string): boolean;
82
- hasAttributes(): boolean;
83
- hasPointerCapture(pointerId: number): boolean;
84
- insertAdjacentElement(where: InsertPosition, element: Element): Element | null;
85
- insertAdjacentHTML(position: InsertPosition, text: string): void;
86
- insertAdjacentText(where: InsertPosition, data: string): void;
87
- matches(selectors: string): boolean;
88
- releasePointerCapture(pointerId: number): void;
89
- removeAttribute(qualifiedName: string): void;
90
- removeAttributeNS(namespace: string | null, localName: string): void;
91
- removeAttributeNode(attr: Attr): Attr;
92
- requestFullscreen(options?: FullscreenOptions): Promise<void>;
93
- requestPointerLock(): void;
94
- scroll(options?: ScrollToOptions): void;
95
- scroll(x: number, y: number): void;
96
- scrollBy(options?: ScrollToOptions): void;
97
- scrollBy(x: number, y: number): void;
98
- scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
99
- scrollTo(options?: ScrollToOptions): void;
100
- scrollTo(x: number, y: number): void;
101
- setAttribute(qualifiedName: string, value: string): void;
102
- setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
103
- setAttributeNode(attr: Attr): Attr | null;
104
- setAttributeNodeNS(attr: Attr): Attr | null;
105
- setHTMLUnsafe(html: string): void;
106
- setPointerCapture(pointerId: number): void;
107
- toggleAttribute(qualifiedName: string, force?: boolean): boolean;
108
- webkitMatchesSelector(selectors: string): boolean;
109
- readonly baseURI: string;
110
- readonly childNodes: NodeListOf<ChildNode>;
111
- readonly firstChild: ChildNode | null;
112
- readonly isConnected: boolean;
113
- readonly lastChild: ChildNode | null;
114
- readonly nextSibling: ChildNode | null;
115
- readonly nodeName: string;
116
- readonly nodeType: number;
117
- nodeValue: string | null;
118
- readonly parentElement: HTMLElement | null;
119
- readonly parentNode: ParentNode | null;
120
- readonly previousSibling: ChildNode | null;
121
- textContent: string | null;
122
- appendChild<T extends Node>(node: T): T;
123
- cloneNode(deep?: boolean): Node;
124
- compareDocumentPosition(other: Node): number;
125
- contains(other: Node | null): boolean;
126
- getRootNode(options?: GetRootNodeOptions): Node;
127
- hasChildNodes(): boolean;
128
- insertBefore<T extends Node>(node: T, child: Node | null): T;
129
- isDefaultNamespace(namespace: string | null): boolean;
130
- isEqualNode(otherNode: Node | null): boolean;
131
- isSameNode(otherNode: Node | null): boolean;
132
- lookupNamespaceURI(prefix: string | null): string | null;
133
- lookupPrefix(namespace: string | null): string | null;
134
- normalize(): void;
135
- removeChild<T extends Node>(child: T): T;
136
- replaceChild<T extends Node>(node: Node, child: T): T;
137
- readonly ELEMENT_NODE: 1;
138
- readonly ATTRIBUTE_NODE: 2;
139
- readonly TEXT_NODE: 3;
140
- readonly CDATA_SECTION_NODE: 4;
141
- readonly ENTITY_REFERENCE_NODE: 5;
142
- readonly ENTITY_NODE: 6;
143
- readonly PROCESSING_INSTRUCTION_NODE: 7;
144
- readonly COMMENT_NODE: 8;
145
- readonly DOCUMENT_NODE: 9;
146
- readonly DOCUMENT_TYPE_NODE: 10;
147
- readonly DOCUMENT_FRAGMENT_NODE: 11;
148
- readonly NOTATION_NODE: 12;
149
- readonly DOCUMENT_POSITION_DISCONNECTED: 1;
150
- readonly DOCUMENT_POSITION_PRECEDING: 2;
151
- readonly DOCUMENT_POSITION_FOLLOWING: 4;
152
- readonly DOCUMENT_POSITION_CONTAINS: 8;
153
- readonly DOCUMENT_POSITION_CONTAINED_BY: 16;
154
- readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32;
155
- dispatchEvent(event: Event): boolean;
156
- ariaAtomic: string | null;
157
- ariaAutoComplete: string | null;
158
- ariaBrailleLabel: string | null;
159
- ariaBrailleRoleDescription: string | null;
160
- ariaBusy: string | null;
161
- ariaChecked: string | null;
162
- ariaColCount: string | null;
163
- ariaColIndex: string | null;
164
- ariaColSpan: string | null;
165
- ariaCurrent: string | null;
166
- ariaDescription: string | null;
167
- ariaDisabled: string | null;
168
- ariaExpanded: string | null;
169
- ariaHasPopup: string | null;
170
- ariaHidden: string | null;
171
- ariaInvalid: string | null;
172
- ariaKeyShortcuts: string | null;
173
- ariaLabel: string | null;
174
- ariaLevel: string | null;
175
- ariaLive: string | null;
176
- ariaModal: string | null;
177
- ariaMultiLine: string | null;
178
- ariaMultiSelectable: string | null;
179
- ariaOrientation: string | null;
180
- ariaPlaceholder: string | null;
181
- ariaPosInSet: string | null;
182
- ariaPressed: string | null;
183
- ariaReadOnly: string | null;
184
- ariaRequired: string | null;
185
- ariaRoleDescription: string | null;
186
- ariaRowCount: string | null;
187
- ariaRowIndex: string | null;
188
- ariaRowSpan: string | null;
189
- ariaSelected: string | null;
190
- ariaSetSize: string | null;
191
- ariaSort: string | null;
192
- ariaValueMax: string | null;
193
- ariaValueMin: string | null;
194
- ariaValueNow: string | null;
195
- ariaValueText: string | null;
196
- role: string | null;
197
- animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;
198
- getAnimations(options?: GetAnimationsOptions): Animation[];
199
- after(...nodes: (Node | string)[]): void;
200
- before(...nodes: (Node | string)[]): void;
201
- remove(): void;
202
- replaceWith(...nodes: (Node | string)[]): void;
203
- innerHTML: string;
204
- readonly nextElementSibling: Element | null;
205
- readonly previousElementSibling: Element | null;
206
- readonly childElementCount: number;
207
- readonly children: HTMLCollection;
208
- readonly firstElementChild: Element | null;
209
- readonly lastElementChild: Element | null;
210
- append(...nodes: (Node | string)[]): void;
211
- prepend(...nodes: (Node | string)[]): void;
212
- querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
213
- querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
214
- querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;
215
- querySelector<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): HTMLElementDeprecatedTagNameMap[K] | null;
216
- querySelector<E extends Element = Element>(selectors: string): E | null;
217
- querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
218
- querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
219
- querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
220
- querySelectorAll<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): NodeListOf<HTMLElementDeprecatedTagNameMap[K]>;
221
- querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
222
- replaceChildren(...nodes: (Node | string)[]): void;
223
- readonly assignedSlot: HTMLSlotElement | null;
224
- readonly attributeStyleMap: StylePropertyMap;
225
- readonly style: CSSStyleDeclaration;
226
- contentEditable: string;
227
- enterKeyHint: string;
228
- inputMode: string;
229
- readonly isContentEditable: boolean;
230
- onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
231
- onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
232
- onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
233
- onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
234
- onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
235
- onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
236
- onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;
237
- onbeforetoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
238
- onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
239
- oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;
240
- oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
241
- oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
242
- onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
243
- onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
244
- onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
245
- oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
246
- oncopy: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
247
- oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
248
- oncut: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
249
- ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
250
- ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
251
- ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
252
- ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
253
- ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
254
- ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
255
- ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
256
- ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
257
- ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
258
- onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
259
- onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
260
- onerror: OnErrorEventHandler;
261
- onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
262
- onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;
263
- ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
264
- oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;
265
- oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
266
- onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
267
- onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
268
- onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
269
- onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
270
- onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
271
- onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
272
- onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
273
- onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
274
- onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
275
- onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
276
- onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
277
- onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
278
- onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
279
- onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
280
- onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
281
- onpaste: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
282
- onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
283
- onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
284
- onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
285
- onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
286
- onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
287
- onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
288
- onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
289
- onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
290
- onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
291
- onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
292
- onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
293
- onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;
294
- onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
295
- onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
296
- onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
297
- onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
298
- onscrollend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
299
- onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
300
- onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
301
- onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
302
- onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
303
- onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
304
- onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
305
- onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
306
- onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
307
- onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;
308
- onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
309
- ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
310
- ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
311
- ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
312
- ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
313
- ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
314
- ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
315
- ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
316
- ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
317
- ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
318
- ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
319
- onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
320
- onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
321
- onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
322
- onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;
323
- onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
324
- onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
325
- onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
326
- autofocus: boolean;
327
- readonly dataset: DOMStringMap;
328
- nonce?: string;
329
- tabIndex: number;
330
- blur(): void;
331
- focus(options?: FocusOptions): void;
332
- };
333
- observedAttributes: string[];
334
- } & Target;
1
+ import type { ShadowResult } from "./result.js";
2
+ export interface ElementOpts {
3
+ tagName?: string;
4
+ shadowDom?: ShadowResult[];
5
+ shadowDomOpts?: ShadowRootInit;
6
+ }
7
+ interface ElementConstructor {
8
+ new (...args: any[]): HTMLElement;
9
+ }
10
+ export declare function element<T extends ElementConstructor>(opts?: ElementOpts): (Base: T, ctx: ClassDecoratorContext<T>) => T;
11
+ export {};
@@ -1,41 +1,114 @@
1
- import { metadataStore } from './metadata.js';
2
- export function element(Base, ctx) {
3
- const meta = metadataStore.read(ctx.metadata);
4
- ctx.addInitializer(function () {
5
- if (meta.tagName) {
6
- const val = meta.tagName(this);
7
- if (!customElements.get(val)) {
8
- customElements.define(val, this);
9
- }
10
- }
11
- });
12
- return class JoistElement extends Base {
13
- static observedAttributes = [...meta.attrs];
14
- constructor(...args) {
15
- super(...args);
16
- const root = this.shadowRoot || this;
17
- for (let [event, listener] of meta.listeners) {
18
- root.addEventListener(event, listener.bind(this));
1
+ import { metadataStore } from "./metadata.js";
2
+ export function element(opts) {
3
+ return function elementDecorator(Base, ctx) {
4
+ const meta = metadataStore.read(ctx.metadata);
5
+ ctx.addInitializer(function () {
6
+ if (opts?.tagName) {
7
+ if (!customElements.get(opts.tagName)) {
8
+ customElements.define(opts.tagName, this);
9
+ }
19
10
  }
20
- }
21
- connectedCallback() {
22
- for (let attr of meta.attrs) {
23
- const value = Reflect.get(this, attr);
24
- if (value !== null && value !== undefined && value !== '') {
25
- if (typeof value === 'boolean') {
26
- if (value === true) {
27
- this.setAttribute(attr, '');
11
+ });
12
+ const def = {
13
+ [Base.name]: class extends Base {
14
+ static observedAttributes = Array.from(meta.attrs.keys());
15
+ #abortController = null;
16
+ constructor(...args) {
17
+ super(...args);
18
+ if (opts?.shadowDom) {
19
+ if (!this.shadowRoot) {
20
+ this.attachShadow(opts.shadowDomOpts ?? { mode: "open" });
21
+ }
22
+ for (const res of opts.shadowDom) {
23
+ res.apply(this);
28
24
  }
29
25
  }
30
- else {
31
- this.setAttribute(attr, String(value));
26
+ for (const cb of meta.onReady) {
27
+ cb.call(this);
28
+ }
29
+ }
30
+ attributeChangedCallback(name, oldValue, newValue) {
31
+ const attr = meta.attrs.get(name);
32
+ const cbs = meta.attrChanges.get(name);
33
+ if (attr) {
34
+ if (oldValue !== newValue) {
35
+ const ogValue = attr.getPropValue.call(this);
36
+ if (newValue === "") {
37
+ attr.setPropValue.call(this, true);
38
+ }
39
+ else if (typeof ogValue === "number") {
40
+ attr.setPropValue.call(this, Number(newValue));
41
+ }
42
+ else {
43
+ attr.setPropValue.call(this, newValue);
44
+ }
45
+ }
46
+ if (cbs) {
47
+ for (const cb of cbs) {
48
+ cb.call(this, oldValue, newValue);
49
+ }
50
+ }
51
+ if (attr.observe) {
52
+ if (super.attributeChangedCallback) {
53
+ super.attributeChangedCallback(name, oldValue, newValue);
54
+ }
55
+ }
56
+ }
57
+ }
58
+ connectedCallback() {
59
+ if (this.isConnected) {
60
+ for (const { event, cb, selector } of meta.listeners) {
61
+ const root = selector(this);
62
+ if (root) {
63
+ this.#abortController = new AbortController();
64
+ root.addEventListener(event, cb.bind(this), {
65
+ signal: this.#abortController.signal,
66
+ });
67
+ }
68
+ else {
69
+ throw new Error(`could not add listener to ${root}`);
70
+ }
71
+ }
72
+ reflectAttributeValues(this, meta.attrs);
73
+ if (super.connectedCallback) {
74
+ super.connectedCallback();
75
+ }
76
+ }
77
+ }
78
+ disconnectedCallback() {
79
+ if (this.#abortController) {
80
+ this.#abortController.abort();
81
+ this.#abortController = null;
82
+ }
83
+ if (super.disconnectedCallback) {
84
+ super.disconnectedCallback();
85
+ }
86
+ }
87
+ },
88
+ };
89
+ return def[Base.name];
90
+ };
91
+ }
92
+ function reflectAttributeValues(el, attrs) {
93
+ for (const [attrName, { getPropValue, reflect }] of attrs) {
94
+ if (reflect) {
95
+ const value = getPropValue.call(el);
96
+ if (value !== null && value !== undefined && value !== "") {
97
+ if (typeof value === "boolean") {
98
+ if (value === true) {
99
+ if (!el.hasAttribute(attrName)) {
100
+ el.setAttribute(attrName, "");
101
+ }
102
+ }
103
+ }
104
+ else {
105
+ const strValue = String(value);
106
+ if (el.getAttribute(attrName) !== strValue) {
107
+ el.setAttribute(attrName, strValue);
32
108
  }
33
109
  }
34
- }
35
- if (super.connectedCallback) {
36
- super.connectedCallback();
37
110
  }
38
111
  }
39
- };
112
+ }
40
113
  }
41
114
  //# sourceMappingURL=element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/lib/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,OAAO,CACrB,IAAY,EACZ,GAAkC;IAElC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE9C,GAAG,CAAC,cAAc,CAAC;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,YAAa,SAAQ,IAAI;QAEpC,MAAM,CAAC,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAEf,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;YAErC,KAAK,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,iBAAiB;YACf,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAGtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBAC1D,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BAEnB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC9B,CAAC;oBACH,CAAC;yBAAM,CAAC;wBAEN,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/lib/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,MAAM,eAAe,CAAC;AAajE,MAAM,UAAU,OAAO,CAA+B,IAAkB;IACtE,OAAO,SAAS,gBAAgB,CAAC,IAAO,EAAE,GAA6B;QACrE,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9C,GAAG,CAAC,cAAc,CAAC;YACjB,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG;YACV,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAM,SAAQ,IAAI;gBAC7B,MAAM,CAAC,kBAAkB,GAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAEpE,gBAAgB,GAA2B,IAAI,CAAC;gBAEhD,YAAY,GAAG,IAAW;oBACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;oBAEf,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;wBACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;4BACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;wBAC5D,CAAC;wBAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACjC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC;oBACH,CAAC;oBAED,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC9B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC;gBAED,wBAAwB,CACtB,IAAY,EACZ,QAAgB,EAChB,QAAgB;oBAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAClC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAEvC,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;4BAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAE7C,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gCAEpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;4BACrC,CAAC;iCAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gCAEvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACjD,CAAC;iCAAM,CAAC;gCAEN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;4BACzC,CAAC;wBACH,CAAC;wBAED,IAAI,GAAG,EAAE,CAAC;4BACR,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gCACrB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BACpC,CAAC;wBACH,CAAC;wBAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;4BACjB,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;gCACnC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BAC3D,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,iBAAiB;oBACf,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,KAAK,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;4BAE5B,IAAI,IAAI,EAAE,CAAC;gCACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;gCAE9C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oCAC1C,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM;iCACrC,CAAC,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;4BACvD,CAAC;wBACH,CAAC;wBAED,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;wBAEzC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;4BAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,oBAAoB;oBAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;wBAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAC/B,CAAC;oBAED,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;wBAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;aACF;SACF,CAAC;QAEF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,EAAK,EACL,KAAmB;IAEnB,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAGpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC1D,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAEnB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC/B,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBAChC,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBAEN,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAE/B,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC3C,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}