@joist/di 4.0.0-next.1 → 4.0.0-next.11
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 +52 -34
- package/package.json +4 -14
- package/src/lib/dom-injector.test.ts +16 -18
- package/src/lib/dom-injector.ts +3 -4
- package/src/lib/inject.test.ts +33 -56
- package/src/lib/inject.ts +4 -6
- package/src/lib/injectable-el.test.ts +130 -0
- package/src/lib/injectable-el.ts +63 -0
- package/src/lib/injectable.test.ts +19 -116
- package/src/lib/injectable.ts +21 -57
- package/src/lib/injector.test.ts +132 -130
- package/src/lib/injector.ts +33 -19
- package/src/lib/lifecycle.test.ts +68 -64
- package/src/lib/lifecycle.ts +19 -4
- package/src/lib/metadata.ts +12 -0
- package/src/lib/provider.ts +16 -8
- package/src/lib.ts +1 -1
- package/target/lib/dom-injector.js +3 -4
- package/target/lib/dom-injector.js.map +1 -1
- package/target/lib/dom-injector.test.js +16 -18
- package/target/lib/dom-injector.test.js.map +1 -1
- package/target/lib/inject.js +3 -3
- package/target/lib/inject.js.map +1 -1
- package/target/lib/inject.test.js +58 -90
- package/target/lib/inject.test.js.map +1 -1
- package/target/lib/injectable-el.d.ts +334 -0
- package/target/lib/injectable-el.js +40 -0
- package/target/lib/injectable-el.js.map +1 -0
- package/target/lib/injectable-el.test.js +238 -0
- package/target/lib/injectable-el.test.js.map +1 -0
- package/target/lib/injectable.d.ts +5 -7
- package/target/lib/injectable.js +13 -42
- package/target/lib/injectable.js.map +1 -1
- package/target/lib/injectable.test.js +49 -204
- package/target/lib/injectable.test.js.map +1 -1
- package/target/lib/injector.d.ts +1 -1
- package/target/lib/injector.js +18 -14
- package/target/lib/injector.js.map +1 -1
- package/target/lib/injector.test.js +215 -216
- package/target/lib/injector.test.js.map +1 -1
- package/target/lib/lifecycle.d.ts +2 -4
- package/target/lib/lifecycle.js +15 -4
- package/target/lib/lifecycle.js.map +1 -1
- package/target/lib/lifecycle.test.js +142 -123
- package/target/lib/lifecycle.test.js.map +1 -1
- package/target/lib/metadata.d.ts +6 -0
- package/target/lib/metadata.js +5 -0
- package/target/lib/metadata.js.map +1 -0
- package/target/lib/provider.d.ts +6 -5
- package/target/lib/provider.js +10 -4
- package/target/lib/provider.js.map +1 -1
- package/target/lib.d.ts +1 -1
- package/target/lib.js +1 -1
- package/target/lib.js.map +1 -1
- package/src/lib/injectable-map.test.ts +0 -18
- package/src/lib/injectable-map.ts +0 -3
- package/src/lib/injector.test-node.ts +0 -187
- package/target/lib/injectable-map.d.ts +0 -3
- package/target/lib/injectable-map.js +0 -3
- package/target/lib/injectable-map.js.map +0 -1
- package/target/lib/injectable-map.test.js +0 -15
- package/target/lib/injectable-map.test.js.map +0 -1
- package/target/lib/injector.test-node.d.ts +0 -1
- package/target/lib/injector.test-node.js +0 -231
- package/target/lib/injector.test-node.js.map +0 -1
- /package/target/lib/{injectable-map.test.d.ts → injectable-el.test.d.ts} +0 -0
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { ConstructableToken } from './provider.js';
|
|
2
|
+
export declare function injectableEl<T extends ConstructableToken<HTMLElement>>(Base: T, _ctx: ClassDecoratorContext): {
|
|
3
|
+
new (..._: any[]): {
|
|
4
|
+
connectedCallback(): void;
|
|
5
|
+
disconnectedCallback(): void;
|
|
6
|
+
accessKey: string;
|
|
7
|
+
readonly accessKeyLabel: string;
|
|
8
|
+
autocapitalize: string;
|
|
9
|
+
dir: string;
|
|
10
|
+
draggable: boolean;
|
|
11
|
+
hidden: boolean;
|
|
12
|
+
inert: boolean;
|
|
13
|
+
innerText: string;
|
|
14
|
+
lang: string;
|
|
15
|
+
readonly offsetHeight: number;
|
|
16
|
+
readonly offsetLeft: number;
|
|
17
|
+
readonly offsetParent: Element | null;
|
|
18
|
+
readonly offsetTop: number;
|
|
19
|
+
readonly offsetWidth: number;
|
|
20
|
+
outerText: string;
|
|
21
|
+
popover: string | null;
|
|
22
|
+
spellcheck: boolean;
|
|
23
|
+
title: string;
|
|
24
|
+
translate: boolean;
|
|
25
|
+
attachInternals(): ElementInternals;
|
|
26
|
+
click(): void;
|
|
27
|
+
hidePopover(): void;
|
|
28
|
+
showPopover(): void;
|
|
29
|
+
togglePopover(force?: boolean): boolean;
|
|
30
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
31
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
32
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
33
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
34
|
+
readonly attributes: NamedNodeMap;
|
|
35
|
+
readonly classList: DOMTokenList;
|
|
36
|
+
className: string;
|
|
37
|
+
readonly clientHeight: number;
|
|
38
|
+
readonly clientLeft: number;
|
|
39
|
+
readonly clientTop: number;
|
|
40
|
+
readonly clientWidth: number;
|
|
41
|
+
id: string;
|
|
42
|
+
readonly localName: string;
|
|
43
|
+
readonly namespaceURI: string | null;
|
|
44
|
+
onfullscreenchange: ((this: Element, ev: Event) => any) | null;
|
|
45
|
+
onfullscreenerror: ((this: Element, ev: Event) => any) | null;
|
|
46
|
+
outerHTML: string;
|
|
47
|
+
readonly ownerDocument: Document;
|
|
48
|
+
readonly part: DOMTokenList;
|
|
49
|
+
readonly prefix: string | null;
|
|
50
|
+
readonly scrollHeight: number;
|
|
51
|
+
scrollLeft: number;
|
|
52
|
+
scrollTop: number;
|
|
53
|
+
readonly scrollWidth: number;
|
|
54
|
+
readonly shadowRoot: ShadowRoot | null;
|
|
55
|
+
slot: string;
|
|
56
|
+
readonly tagName: string;
|
|
57
|
+
attachShadow(init: ShadowRootInit): ShadowRoot;
|
|
58
|
+
checkVisibility(options?: CheckVisibilityOptions): boolean;
|
|
59
|
+
closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;
|
|
60
|
+
closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;
|
|
61
|
+
closest<K extends keyof MathMLElementTagNameMap>(selector: K): MathMLElementTagNameMap[K] | null;
|
|
62
|
+
closest<E extends Element = Element>(selectors: string): E | null;
|
|
63
|
+
computedStyleMap(): StylePropertyMapReadOnly;
|
|
64
|
+
getAttribute(qualifiedName: string): string | null;
|
|
65
|
+
getAttributeNS(namespace: string | null, localName: string): string | null;
|
|
66
|
+
getAttributeNames(): string[];
|
|
67
|
+
getAttributeNode(qualifiedName: string): Attr | null;
|
|
68
|
+
getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;
|
|
69
|
+
getBoundingClientRect(): DOMRect;
|
|
70
|
+
getClientRects(): DOMRectList;
|
|
71
|
+
getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
|
|
72
|
+
getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
|
|
73
|
+
getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
|
|
74
|
+
getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;
|
|
75
|
+
getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;
|
|
76
|
+
getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
|
|
77
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
|
|
78
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
|
|
79
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf<MathMLElement>;
|
|
80
|
+
getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
|
|
81
|
+
hasAttribute(qualifiedName: string): boolean;
|
|
82
|
+
hasAttributeNS(namespace: string | null, localName: string): boolean;
|
|
83
|
+
hasAttributes(): boolean;
|
|
84
|
+
hasPointerCapture(pointerId: number): boolean;
|
|
85
|
+
insertAdjacentElement(where: InsertPosition, element: Element): Element | null;
|
|
86
|
+
insertAdjacentHTML(position: InsertPosition, text: string): void;
|
|
87
|
+
insertAdjacentText(where: InsertPosition, data: string): void;
|
|
88
|
+
matches(selectors: string): boolean;
|
|
89
|
+
releasePointerCapture(pointerId: number): void;
|
|
90
|
+
removeAttribute(qualifiedName: string): void;
|
|
91
|
+
removeAttributeNS(namespace: string | null, localName: string): void;
|
|
92
|
+
removeAttributeNode(attr: Attr): Attr;
|
|
93
|
+
requestFullscreen(options?: FullscreenOptions): Promise<void>;
|
|
94
|
+
requestPointerLock(): void;
|
|
95
|
+
scroll(options?: ScrollToOptions): void;
|
|
96
|
+
scroll(x: number, y: number): void;
|
|
97
|
+
scrollBy(options?: ScrollToOptions): void;
|
|
98
|
+
scrollBy(x: number, y: number): void;
|
|
99
|
+
scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
|
|
100
|
+
scrollTo(options?: ScrollToOptions): void;
|
|
101
|
+
scrollTo(x: number, y: number): void;
|
|
102
|
+
setAttribute(qualifiedName: string, value: string): void;
|
|
103
|
+
setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
|
|
104
|
+
setAttributeNode(attr: Attr): Attr | null;
|
|
105
|
+
setAttributeNodeNS(attr: Attr): Attr | null;
|
|
106
|
+
setHTMLUnsafe(html: string): void;
|
|
107
|
+
setPointerCapture(pointerId: number): void;
|
|
108
|
+
toggleAttribute(qualifiedName: string, force?: boolean): boolean;
|
|
109
|
+
webkitMatchesSelector(selectors: string): boolean;
|
|
110
|
+
readonly baseURI: string;
|
|
111
|
+
readonly childNodes: NodeListOf<ChildNode>;
|
|
112
|
+
readonly firstChild: ChildNode | null;
|
|
113
|
+
readonly isConnected: boolean;
|
|
114
|
+
readonly lastChild: ChildNode | null;
|
|
115
|
+
readonly nextSibling: ChildNode | null;
|
|
116
|
+
readonly nodeName: string;
|
|
117
|
+
readonly nodeType: number;
|
|
118
|
+
nodeValue: string | null;
|
|
119
|
+
readonly parentElement: HTMLElement | null;
|
|
120
|
+
readonly parentNode: ParentNode | null;
|
|
121
|
+
readonly previousSibling: ChildNode | null;
|
|
122
|
+
textContent: string | null;
|
|
123
|
+
appendChild<T_1 extends Node>(node: T_1): T_1;
|
|
124
|
+
cloneNode(deep?: boolean): Node;
|
|
125
|
+
compareDocumentPosition(other: Node): number;
|
|
126
|
+
contains(other: Node | null): boolean;
|
|
127
|
+
getRootNode(options?: GetRootNodeOptions): Node;
|
|
128
|
+
hasChildNodes(): boolean;
|
|
129
|
+
insertBefore<T_1 extends Node>(node: T_1, child: Node | null): T_1;
|
|
130
|
+
isDefaultNamespace(namespace: string | null): boolean;
|
|
131
|
+
isEqualNode(otherNode: Node | null): boolean;
|
|
132
|
+
isSameNode(otherNode: Node | null): boolean;
|
|
133
|
+
lookupNamespaceURI(prefix: string | null): string | null;
|
|
134
|
+
lookupPrefix(namespace: string | null): string | null;
|
|
135
|
+
normalize(): void;
|
|
136
|
+
removeChild<T_1 extends Node>(child: T_1): T_1;
|
|
137
|
+
replaceChild<T_1 extends Node>(node: Node, child: T_1): T_1;
|
|
138
|
+
readonly ELEMENT_NODE: 1;
|
|
139
|
+
readonly ATTRIBUTE_NODE: 2;
|
|
140
|
+
readonly TEXT_NODE: 3;
|
|
141
|
+
readonly CDATA_SECTION_NODE: 4;
|
|
142
|
+
readonly ENTITY_REFERENCE_NODE: 5;
|
|
143
|
+
readonly ENTITY_NODE: 6;
|
|
144
|
+
readonly PROCESSING_INSTRUCTION_NODE: 7;
|
|
145
|
+
readonly COMMENT_NODE: 8;
|
|
146
|
+
readonly DOCUMENT_NODE: 9;
|
|
147
|
+
readonly DOCUMENT_TYPE_NODE: 10;
|
|
148
|
+
readonly DOCUMENT_FRAGMENT_NODE: 11;
|
|
149
|
+
readonly NOTATION_NODE: 12;
|
|
150
|
+
readonly DOCUMENT_POSITION_DISCONNECTED: 1;
|
|
151
|
+
readonly DOCUMENT_POSITION_PRECEDING: 2;
|
|
152
|
+
readonly DOCUMENT_POSITION_FOLLOWING: 4;
|
|
153
|
+
readonly DOCUMENT_POSITION_CONTAINS: 8;
|
|
154
|
+
readonly DOCUMENT_POSITION_CONTAINED_BY: 16;
|
|
155
|
+
readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32;
|
|
156
|
+
dispatchEvent(event: Event): boolean;
|
|
157
|
+
ariaAtomic: string | null;
|
|
158
|
+
ariaAutoComplete: string | null;
|
|
159
|
+
ariaBrailleLabel: string | null;
|
|
160
|
+
ariaBrailleRoleDescription: string | null;
|
|
161
|
+
ariaBusy: string | null;
|
|
162
|
+
ariaChecked: string | null;
|
|
163
|
+
ariaColCount: string | null;
|
|
164
|
+
ariaColIndex: string | null;
|
|
165
|
+
ariaColSpan: string | null;
|
|
166
|
+
ariaCurrent: string | null;
|
|
167
|
+
ariaDescription: string | null;
|
|
168
|
+
ariaDisabled: string | null;
|
|
169
|
+
ariaExpanded: string | null;
|
|
170
|
+
ariaHasPopup: string | null;
|
|
171
|
+
ariaHidden: string | null;
|
|
172
|
+
ariaInvalid: string | null;
|
|
173
|
+
ariaKeyShortcuts: string | null;
|
|
174
|
+
ariaLabel: string | null;
|
|
175
|
+
ariaLevel: string | null;
|
|
176
|
+
ariaLive: string | null;
|
|
177
|
+
ariaModal: string | null;
|
|
178
|
+
ariaMultiLine: string | null;
|
|
179
|
+
ariaMultiSelectable: string | null;
|
|
180
|
+
ariaOrientation: string | null;
|
|
181
|
+
ariaPlaceholder: string | null;
|
|
182
|
+
ariaPosInSet: string | null;
|
|
183
|
+
ariaPressed: string | null;
|
|
184
|
+
ariaReadOnly: string | null;
|
|
185
|
+
ariaRequired: string | null;
|
|
186
|
+
ariaRoleDescription: string | null;
|
|
187
|
+
ariaRowCount: string | null;
|
|
188
|
+
ariaRowIndex: string | null;
|
|
189
|
+
ariaRowSpan: string | null;
|
|
190
|
+
ariaSelected: string | null;
|
|
191
|
+
ariaSetSize: string | null;
|
|
192
|
+
ariaSort: string | null;
|
|
193
|
+
ariaValueMax: string | null;
|
|
194
|
+
ariaValueMin: string | null;
|
|
195
|
+
ariaValueNow: string | null;
|
|
196
|
+
ariaValueText: string | null;
|
|
197
|
+
role: string | null;
|
|
198
|
+
animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;
|
|
199
|
+
getAnimations(options?: GetAnimationsOptions): Animation[];
|
|
200
|
+
after(...nodes: (Node | string)[]): void;
|
|
201
|
+
before(...nodes: (Node | string)[]): void;
|
|
202
|
+
remove(): void;
|
|
203
|
+
replaceWith(...nodes: (Node | string)[]): void;
|
|
204
|
+
innerHTML: string;
|
|
205
|
+
readonly nextElementSibling: Element | null;
|
|
206
|
+
readonly previousElementSibling: Element | null;
|
|
207
|
+
readonly childElementCount: number;
|
|
208
|
+
readonly children: HTMLCollection;
|
|
209
|
+
readonly firstElementChild: Element | null;
|
|
210
|
+
readonly lastElementChild: Element | null;
|
|
211
|
+
append(...nodes: (Node | string)[]): void;
|
|
212
|
+
prepend(...nodes: (Node | string)[]): void;
|
|
213
|
+
querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
|
|
214
|
+
querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
|
|
215
|
+
querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;
|
|
216
|
+
querySelector<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): HTMLElementDeprecatedTagNameMap[K] | null;
|
|
217
|
+
querySelector<E extends Element = Element>(selectors: string): E | null;
|
|
218
|
+
querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
|
|
219
|
+
querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
|
|
220
|
+
querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
|
|
221
|
+
querySelectorAll<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): NodeListOf<HTMLElementDeprecatedTagNameMap[K]>;
|
|
222
|
+
querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
|
|
223
|
+
replaceChildren(...nodes: (Node | string)[]): void;
|
|
224
|
+
readonly assignedSlot: HTMLSlotElement | null;
|
|
225
|
+
readonly attributeStyleMap: StylePropertyMap;
|
|
226
|
+
readonly style: CSSStyleDeclaration;
|
|
227
|
+
contentEditable: string;
|
|
228
|
+
enterKeyHint: string;
|
|
229
|
+
inputMode: string;
|
|
230
|
+
readonly isContentEditable: boolean;
|
|
231
|
+
onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
|
|
232
|
+
onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
233
|
+
onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
234
|
+
onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
235
|
+
onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
236
|
+
onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
237
|
+
onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;
|
|
238
|
+
onbeforetoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
239
|
+
onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
|
|
240
|
+
oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
241
|
+
oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
242
|
+
oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
243
|
+
onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
244
|
+
onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
245
|
+
onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
246
|
+
oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
247
|
+
oncopy: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
248
|
+
oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
249
|
+
oncut: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
250
|
+
ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
251
|
+
ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
252
|
+
ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
253
|
+
ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
254
|
+
ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
255
|
+
ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
256
|
+
ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
257
|
+
ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
258
|
+
ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
259
|
+
onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
260
|
+
onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
261
|
+
onerror: OnErrorEventHandler;
|
|
262
|
+
onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
|
|
263
|
+
onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;
|
|
264
|
+
ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
265
|
+
oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
266
|
+
oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
267
|
+
onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
268
|
+
onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
269
|
+
onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
270
|
+
onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
271
|
+
onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
272
|
+
onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
273
|
+
onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
274
|
+
onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
275
|
+
onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
276
|
+
onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
277
|
+
onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
278
|
+
onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
279
|
+
onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
280
|
+
onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
281
|
+
onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
282
|
+
onpaste: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
283
|
+
onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
284
|
+
onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
285
|
+
onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
286
|
+
onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
287
|
+
onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
288
|
+
onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
289
|
+
onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
290
|
+
onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
291
|
+
onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
292
|
+
onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
293
|
+
onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
294
|
+
onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;
|
|
295
|
+
onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
296
|
+
onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
297
|
+
onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
|
|
298
|
+
onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
299
|
+
onscrollend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
300
|
+
onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
|
|
301
|
+
onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
302
|
+
onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
303
|
+
onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
304
|
+
onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
305
|
+
onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
306
|
+
onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
307
|
+
onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
308
|
+
onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;
|
|
309
|
+
onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
310
|
+
ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
311
|
+
ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
312
|
+
ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
313
|
+
ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
314
|
+
ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
315
|
+
ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
316
|
+
ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
317
|
+
ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
318
|
+
ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
319
|
+
ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
320
|
+
onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
321
|
+
onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
322
|
+
onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
323
|
+
onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
324
|
+
onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
325
|
+
onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
326
|
+
onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
|
|
327
|
+
autofocus: boolean;
|
|
328
|
+
readonly dataset: DOMStringMap;
|
|
329
|
+
nonce?: string;
|
|
330
|
+
tabIndex: number;
|
|
331
|
+
blur(): void;
|
|
332
|
+
focus(options?: FocusOptions): void;
|
|
333
|
+
};
|
|
334
|
+
} & T;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { injectables } from './injector.js';
|
|
2
|
+
export function injectableEl(Base, _ctx) {
|
|
3
|
+
return class InjectablElement extends Base {
|
|
4
|
+
constructor(..._) {
|
|
5
|
+
super();
|
|
6
|
+
this.addEventListener('finddiroot', (e) => {
|
|
7
|
+
const parentInjector = findInjectorRoot(e);
|
|
8
|
+
if (parentInjector) {
|
|
9
|
+
injectables.get(this)?.setParent(parentInjector);
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
connectedCallback() {
|
|
14
|
+
if (this.isConnected) {
|
|
15
|
+
this.dispatchEvent(new Event('finddiroot', { bubbles: true }));
|
|
16
|
+
if (super.connectedCallback) {
|
|
17
|
+
super.connectedCallback();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
disconnectedCallback() {
|
|
22
|
+
injectables.get(this)?.setParent(undefined);
|
|
23
|
+
if (super.disconnectedCallback) {
|
|
24
|
+
super.disconnectedCallback();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function findInjectorRoot(e) {
|
|
30
|
+
const path = e.composedPath();
|
|
31
|
+
for (let i = 1; i < path.length; i++) {
|
|
32
|
+
const part = path[i];
|
|
33
|
+
const injector = injectables.get(part);
|
|
34
|
+
if (injector) {
|
|
35
|
+
return injector;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=injectable-el.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectable-el.js","sourceRoot":"","sources":["../../src/lib/injectable-el.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,eAAe,CAAC;AAGtD,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,IAA2B;IAE3B,OAAO,MAAM,gBAAiB,SAAQ,IAAI;QACxC,YAAY,GAAG,CAAQ;YACrB,KAAK,EAAE,CAAC;YAQR,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;gBACxC,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAE3C,IAAI,cAAc,EAAE,CAAC;oBACnB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,iBAAiB;YACf,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAE/D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,oBAAoB;YAClB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAQ;IAChC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;IAI9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { assert } from 'chai';
|
|
3
|
+
import { inject } from './inject.js';
|
|
4
|
+
import { injectable } from './injectable.js';
|
|
5
|
+
it('should allow services to be injected into custom element', () => {
|
|
6
|
+
class Foo {
|
|
7
|
+
}
|
|
8
|
+
let MyElement = (() => {
|
|
9
|
+
let _classDecorators = [injectable()];
|
|
10
|
+
let _classDescriptor;
|
|
11
|
+
let _classExtraInitializers = [];
|
|
12
|
+
let _classThis;
|
|
13
|
+
let _classSuper = HTMLElement;
|
|
14
|
+
var MyElement = class extends _classSuper {
|
|
15
|
+
static { _classThis = this; }
|
|
16
|
+
static {
|
|
17
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
18
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
19
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
20
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
21
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
22
|
+
}
|
|
23
|
+
foo = inject(Foo);
|
|
24
|
+
};
|
|
25
|
+
return MyElement = _classThis;
|
|
26
|
+
})();
|
|
27
|
+
customElements.define('injectable-1', MyElement);
|
|
28
|
+
const el = new MyElement();
|
|
29
|
+
assert.instanceOf(el.foo(), Foo);
|
|
30
|
+
});
|
|
31
|
+
it('should allow services to be injected into custom elements that has been extended', () => {
|
|
32
|
+
class Foo {
|
|
33
|
+
}
|
|
34
|
+
class MyBaseElement extends HTMLElement {
|
|
35
|
+
}
|
|
36
|
+
let MyElement = (() => {
|
|
37
|
+
let _classDecorators = [injectable()];
|
|
38
|
+
let _classDescriptor;
|
|
39
|
+
let _classExtraInitializers = [];
|
|
40
|
+
let _classThis;
|
|
41
|
+
let _classSuper = MyBaseElement;
|
|
42
|
+
var MyElement = class extends _classSuper {
|
|
43
|
+
static { _classThis = this; }
|
|
44
|
+
static {
|
|
45
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
46
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
47
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
48
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
49
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
50
|
+
}
|
|
51
|
+
foo = inject(Foo);
|
|
52
|
+
};
|
|
53
|
+
return MyElement = _classThis;
|
|
54
|
+
})();
|
|
55
|
+
customElements.define('injectable-2', MyElement);
|
|
56
|
+
const el = new MyElement();
|
|
57
|
+
assert.instanceOf(el.foo(), Foo);
|
|
58
|
+
});
|
|
59
|
+
it('should handle parent HTML Injectors', async () => {
|
|
60
|
+
let A = (() => {
|
|
61
|
+
let _classDecorators = [injectable()];
|
|
62
|
+
let _classDescriptor;
|
|
63
|
+
let _classExtraInitializers = [];
|
|
64
|
+
let _classThis;
|
|
65
|
+
var A = class {
|
|
66
|
+
static { _classThis = this; }
|
|
67
|
+
static {
|
|
68
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
69
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
70
|
+
A = _classThis = _classDescriptor.value;
|
|
71
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
72
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
return A = _classThis;
|
|
76
|
+
})();
|
|
77
|
+
let B = (() => {
|
|
78
|
+
let _classDecorators = [injectable()];
|
|
79
|
+
let _classDescriptor;
|
|
80
|
+
let _classExtraInitializers = [];
|
|
81
|
+
let _classThis;
|
|
82
|
+
var B = class {
|
|
83
|
+
static { _classThis = this; }
|
|
84
|
+
static {
|
|
85
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
86
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
87
|
+
B = _classThis = _classDescriptor.value;
|
|
88
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
89
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
90
|
+
}
|
|
91
|
+
a = inject(A);
|
|
92
|
+
};
|
|
93
|
+
return B = _classThis;
|
|
94
|
+
})();
|
|
95
|
+
class AltA {
|
|
96
|
+
}
|
|
97
|
+
let Parent = (() => {
|
|
98
|
+
let _classDecorators = [injectable({
|
|
99
|
+
providers: [
|
|
100
|
+
{ provide: B, use: B },
|
|
101
|
+
{ provide: A, use: AltA }
|
|
102
|
+
]
|
|
103
|
+
})];
|
|
104
|
+
let _classDescriptor;
|
|
105
|
+
let _classExtraInitializers = [];
|
|
106
|
+
let _classThis;
|
|
107
|
+
let _classSuper = HTMLElement;
|
|
108
|
+
var Parent = class extends _classSuper {
|
|
109
|
+
static { _classThis = this; }
|
|
110
|
+
static {
|
|
111
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
112
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
113
|
+
Parent = _classThis = _classDescriptor.value;
|
|
114
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
115
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
return Parent = _classThis;
|
|
119
|
+
})();
|
|
120
|
+
let Child = (() => {
|
|
121
|
+
let _classDecorators = [injectable()];
|
|
122
|
+
let _classDescriptor;
|
|
123
|
+
let _classExtraInitializers = [];
|
|
124
|
+
let _classThis;
|
|
125
|
+
let _classSuper = HTMLElement;
|
|
126
|
+
var Child = class extends _classSuper {
|
|
127
|
+
static { _classThis = this; }
|
|
128
|
+
static {
|
|
129
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
130
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
131
|
+
Child = _classThis = _classDescriptor.value;
|
|
132
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
133
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
134
|
+
}
|
|
135
|
+
b = inject(B);
|
|
136
|
+
};
|
|
137
|
+
return Child = _classThis;
|
|
138
|
+
})();
|
|
139
|
+
customElements.define('injectable-parent-1', Parent);
|
|
140
|
+
customElements.define('injectable-child-1', Child);
|
|
141
|
+
const el = document.createElement('div');
|
|
142
|
+
el.innerHTML = `
|
|
143
|
+
<injectable-parent-1>
|
|
144
|
+
<injectable-child-1></injectable-child-1>
|
|
145
|
+
</injectable-parent-1>
|
|
146
|
+
`;
|
|
147
|
+
document.body.append(el);
|
|
148
|
+
const child = el.querySelector('injectable-child-1');
|
|
149
|
+
assert.instanceOf(child.b().a(), AltA);
|
|
150
|
+
el.remove();
|
|
151
|
+
});
|
|
152
|
+
it('should handle changing contexts', async () => {
|
|
153
|
+
class A {
|
|
154
|
+
}
|
|
155
|
+
class AltA {
|
|
156
|
+
}
|
|
157
|
+
let Ctx1 = (() => {
|
|
158
|
+
let _classDecorators = [injectable({
|
|
159
|
+
providers: [{ provide: A, use: A }]
|
|
160
|
+
})];
|
|
161
|
+
let _classDescriptor;
|
|
162
|
+
let _classExtraInitializers = [];
|
|
163
|
+
let _classThis;
|
|
164
|
+
let _classSuper = HTMLElement;
|
|
165
|
+
var Ctx1 = class extends _classSuper {
|
|
166
|
+
static { _classThis = this; }
|
|
167
|
+
static {
|
|
168
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
169
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
170
|
+
Ctx1 = _classThis = _classDescriptor.value;
|
|
171
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
172
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
return Ctx1 = _classThis;
|
|
176
|
+
})();
|
|
177
|
+
let Ctx2 = (() => {
|
|
178
|
+
let _classDecorators = [injectable({
|
|
179
|
+
providers: [{ provide: A, use: AltA }]
|
|
180
|
+
})];
|
|
181
|
+
let _classDescriptor;
|
|
182
|
+
let _classExtraInitializers = [];
|
|
183
|
+
let _classThis;
|
|
184
|
+
let _classSuper = HTMLElement;
|
|
185
|
+
var Ctx2 = class extends _classSuper {
|
|
186
|
+
static { _classThis = this; }
|
|
187
|
+
static {
|
|
188
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
189
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
190
|
+
Ctx2 = _classThis = _classDescriptor.value;
|
|
191
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
192
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
return Ctx2 = _classThis;
|
|
196
|
+
})();
|
|
197
|
+
let Child = (() => {
|
|
198
|
+
let _classDecorators = [injectable()];
|
|
199
|
+
let _classDescriptor;
|
|
200
|
+
let _classExtraInitializers = [];
|
|
201
|
+
let _classThis;
|
|
202
|
+
let _classSuper = HTMLElement;
|
|
203
|
+
var Child = class extends _classSuper {
|
|
204
|
+
static { _classThis = this; }
|
|
205
|
+
static {
|
|
206
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
207
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
208
|
+
Child = _classThis = _classDescriptor.value;
|
|
209
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
210
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
211
|
+
}
|
|
212
|
+
a = inject(A);
|
|
213
|
+
};
|
|
214
|
+
return Child = _classThis;
|
|
215
|
+
})();
|
|
216
|
+
customElements.define('ctx-1', Ctx1);
|
|
217
|
+
customElements.define('ctx-2', Ctx2);
|
|
218
|
+
customElements.define('ctx-child', Child);
|
|
219
|
+
const el = document.createElement('div');
|
|
220
|
+
el.innerHTML = `
|
|
221
|
+
<div>
|
|
222
|
+
<ctx-1>
|
|
223
|
+
<ctx-child></ctx-child>
|
|
224
|
+
</ctx-1>
|
|
225
|
+
|
|
226
|
+
<ctx-2></ctx-2>
|
|
227
|
+
</div>
|
|
228
|
+
`;
|
|
229
|
+
document.body.append(el);
|
|
230
|
+
const ctx2 = el.querySelector('ctx-2');
|
|
231
|
+
let child = el.querySelector('ctx-child');
|
|
232
|
+
assert.instanceOf(child.a(), A);
|
|
233
|
+
child.remove();
|
|
234
|
+
ctx2.append(child);
|
|
235
|
+
child = el.querySelector('ctx-child');
|
|
236
|
+
assert.instanceOf(child.a(), AltA);
|
|
237
|
+
});
|
|
238
|
+
//# sourceMappingURL=injectable-el.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectable-el.test.js","sourceRoot":"","sources":["../../src/lib/injectable-el.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { ConstructableToken } from './provider.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ConstructableToken, Provider } from './provider.js';
|
|
2
|
+
export interface InjectableOpts {
|
|
3
|
+
providers?: Provider<unknown>[];
|
|
4
|
+
}
|
|
5
|
+
export declare function injectable(opts?: InjectableOpts): <T extends ConstructableToken<any>>(Base: T, ctx: ClassDecoratorContext) => {
|
|
5
6
|
new (..._: any[]): {
|
|
6
7
|
[x: string]: any;
|
|
7
|
-
connectedCallback(): void;
|
|
8
|
-
disconnectedCallback(): void;
|
|
9
8
|
};
|
|
10
|
-
providers?: import("./provider.js").Provider<any>[];
|
|
11
9
|
} & T;
|