@joist/di 2.0.0-next.8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -36
- package/package.json +20 -4
- package/target/build/lib/dom/environment.d.ts +3 -0
- package/target/build/lib/dom/environment.js +9 -0
- package/target/build/lib/dom/injectable.d.ts +317 -0
- package/target/build/lib/dom/injectable.js +49 -0
- package/target/build/lib/dom.d.ts +2 -0
- package/target/build/lib/dom.js +2 -0
- package/target/build/lib/environment.d.ts +2 -4
- package/target/build/lib/environment.js +5 -12
- package/target/build/lib/injectable.d.ts +310 -6
- package/target/build/lib/injectable.js +41 -9
- package/target/build/lib/injector.d.ts +7 -24
- package/target/build/lib/injector.js +37 -55
- package/target/build/lib/provider.d.ts +2 -1
- package/target/build/lib/provider.js +0 -1
- package/target/build/lib/service.d.ts +2 -2
- package/target/build/lib/service.js +7 -2
- package/target/build/lib/utils.d.ts +2 -2
- package/target/build/lib/utils.js +1 -2
- package/target/build/lib.d.ts +6 -6
- package/target/build/lib.js +5 -6
- package/target/build/lib/environment.js.map +0 -1
- package/target/build/lib/injectable.js.map +0 -1
- package/target/build/lib/injector.js.map +0 -1
- package/target/build/lib/provider.js.map +0 -1
- package/target/build/lib/service.js.map +0 -1
- package/target/build/lib/utils.js.map +0 -1
- package/target/build/lib.js.map +0 -1
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
import { Injector } from './injector';
|
|
2
|
-
|
|
3
|
-
export function
|
|
4
|
-
rootInjector = new Injector({ providers });
|
|
1
|
+
import { Injector } from './injector.js';
|
|
2
|
+
const rootInjector = new Injector();
|
|
3
|
+
export function environment() {
|
|
5
4
|
return rootInjector;
|
|
6
5
|
}
|
|
7
|
-
export function getEnvironmentRef() {
|
|
8
|
-
if (rootInjector) {
|
|
9
|
-
return rootInjector;
|
|
10
|
-
}
|
|
11
|
-
return defineEnvironment();
|
|
12
|
-
}
|
|
13
6
|
export function clearEnvironment() {
|
|
14
|
-
rootInjector =
|
|
7
|
+
rootInjector.providers = [];
|
|
8
|
+
rootInjector.instances = new WeakMap();
|
|
15
9
|
}
|
|
16
|
-
//# sourceMappingURL=environment.js.map
|
|
@@ -1,13 +1,317 @@
|
|
|
1
|
-
import { Provider, ProviderToken } from './provider';
|
|
1
|
+
import { Provider, ProviderToken } from './provider.js';
|
|
2
|
+
import { Injector } from './injector.js';
|
|
2
3
|
export interface Injectable {
|
|
3
|
-
|
|
4
|
+
inject?: ProviderToken<any>[];
|
|
4
5
|
providers?: Provider<any>[];
|
|
5
|
-
new (...args: any[]):
|
|
6
|
+
new (...args: any[]): HTMLElement;
|
|
6
7
|
}
|
|
7
|
-
export declare function injectable<T extends Injectable>(
|
|
8
|
+
export declare function injectable<T extends Injectable>(CustomElement: T): {
|
|
8
9
|
new (...args: any[]): {
|
|
9
|
-
|
|
10
|
+
injector: Injector;
|
|
11
|
+
connectedCallback(): void;
|
|
12
|
+
disconnectedCallback(): void;
|
|
13
|
+
accessKey: string;
|
|
14
|
+
readonly accessKeyLabel: string;
|
|
15
|
+
autocapitalize: string;
|
|
16
|
+
dir: string;
|
|
17
|
+
draggable: boolean;
|
|
18
|
+
hidden: boolean;
|
|
19
|
+
innerText: string;
|
|
20
|
+
lang: string;
|
|
21
|
+
readonly offsetHeight: number;
|
|
22
|
+
readonly offsetLeft: number;
|
|
23
|
+
readonly offsetParent: Element | null;
|
|
24
|
+
readonly offsetTop: number;
|
|
25
|
+
readonly offsetWidth: number;
|
|
26
|
+
outerText: string;
|
|
27
|
+
spellcheck: boolean;
|
|
28
|
+
title: string;
|
|
29
|
+
translate: boolean;
|
|
30
|
+
attachInternals(): ElementInternals;
|
|
31
|
+
click(): void;
|
|
32
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
33
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
34
|
+
removeEventListener<K_1 extends keyof HTMLElementEventMap>(type: K_1, listener: (this: HTMLElement, ev: HTMLElementEventMap[K_1]) => any, options?: boolean | EventListenerOptions | undefined): void;
|
|
35
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
|
|
36
|
+
readonly attributes: NamedNodeMap;
|
|
37
|
+
readonly classList: DOMTokenList;
|
|
38
|
+
className: string;
|
|
39
|
+
readonly clientHeight: number;
|
|
40
|
+
readonly clientLeft: number;
|
|
41
|
+
readonly clientTop: number;
|
|
42
|
+
readonly clientWidth: number;
|
|
43
|
+
id: string;
|
|
44
|
+
readonly localName: string;
|
|
45
|
+
readonly namespaceURI: string | null;
|
|
46
|
+
onfullscreenchange: ((this: Element, ev: Event) => any) | null;
|
|
47
|
+
onfullscreenerror: ((this: Element, ev: Event) => any) | null;
|
|
48
|
+
outerHTML: string;
|
|
49
|
+
readonly ownerDocument: Document;
|
|
50
|
+
readonly part: DOMTokenList;
|
|
51
|
+
readonly prefix: string | null;
|
|
52
|
+
readonly scrollHeight: number;
|
|
53
|
+
scrollLeft: number;
|
|
54
|
+
scrollTop: number;
|
|
55
|
+
readonly scrollWidth: number;
|
|
56
|
+
readonly shadowRoot: ShadowRoot | null;
|
|
57
|
+
slot: string;
|
|
58
|
+
readonly tagName: string;
|
|
59
|
+
attachShadow(init: ShadowRootInit): ShadowRoot;
|
|
60
|
+
closest<K_2 extends keyof HTMLElementTagNameMap>(selector: K_2): HTMLElementTagNameMap[K_2] | null;
|
|
61
|
+
closest<K_3 extends keyof SVGElementTagNameMap>(selector: K_3): SVGElementTagNameMap[K_3] | null;
|
|
62
|
+
closest<E extends Element = Element>(selectors: string): E | null;
|
|
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_4 extends keyof HTMLElementTagNameMap>(qualifiedName: K_4): HTMLCollectionOf<HTMLElementTagNameMap[K_4]>;
|
|
72
|
+
getElementsByTagName<K_5 extends keyof SVGElementTagNameMap>(qualifiedName: K_5): HTMLCollectionOf<SVGElementTagNameMap[K_5]>;
|
|
73
|
+
getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
|
|
74
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
|
|
75
|
+
getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
|
|
76
|
+
getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
|
|
77
|
+
hasAttribute(qualifiedName: string): boolean;
|
|
78
|
+
hasAttributeNS(namespace: string | null, localName: string): boolean;
|
|
79
|
+
hasAttributes(): boolean;
|
|
80
|
+
hasPointerCapture(pointerId: number): boolean;
|
|
81
|
+
insertAdjacentElement(where: InsertPosition, element: Element): Element | null;
|
|
82
|
+
insertAdjacentHTML(position: InsertPosition, text: string): void;
|
|
83
|
+
insertAdjacentText(where: InsertPosition, data: string): void;
|
|
84
|
+
matches(selectors: string): boolean;
|
|
85
|
+
releasePointerCapture(pointerId: number): void;
|
|
86
|
+
removeAttribute(qualifiedName: string): void;
|
|
87
|
+
removeAttributeNS(namespace: string | null, localName: string): void;
|
|
88
|
+
removeAttributeNode(attr: Attr): Attr;
|
|
89
|
+
requestFullscreen(options?: FullscreenOptions | undefined): Promise<void>;
|
|
90
|
+
requestPointerLock(): void;
|
|
91
|
+
scroll(options?: ScrollToOptions | undefined): void;
|
|
92
|
+
scroll(x: number, y: number): void;
|
|
93
|
+
scrollBy(options?: ScrollToOptions | undefined): void;
|
|
94
|
+
scrollBy(x: number, y: number): void;
|
|
95
|
+
scrollIntoView(arg?: boolean | ScrollIntoViewOptions | undefined): void;
|
|
96
|
+
scrollTo(options?: ScrollToOptions | undefined): void;
|
|
97
|
+
scrollTo(x: number, y: number): void;
|
|
98
|
+
setAttribute(qualifiedName: string, value: string): void;
|
|
99
|
+
setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
|
|
100
|
+
setAttributeNode(attr: Attr): Attr | null;
|
|
101
|
+
setAttributeNodeNS(attr: Attr): Attr | null;
|
|
102
|
+
setPointerCapture(pointerId: number): void;
|
|
103
|
+
toggleAttribute(qualifiedName: string, force?: boolean | undefined): boolean;
|
|
104
|
+
webkitMatchesSelector(selectors: string): boolean;
|
|
105
|
+
readonly baseURI: string;
|
|
106
|
+
readonly childNodes: NodeListOf<ChildNode>;
|
|
107
|
+
readonly firstChild: ChildNode | null;
|
|
108
|
+
readonly isConnected: boolean;
|
|
109
|
+
readonly lastChild: ChildNode | null;
|
|
110
|
+
readonly nextSibling: ChildNode | null;
|
|
111
|
+
readonly nodeName: string;
|
|
112
|
+
readonly nodeType: number;
|
|
113
|
+
nodeValue: string | null;
|
|
114
|
+
readonly parentElement: HTMLElement | null;
|
|
115
|
+
readonly parentNode: ParentNode | null;
|
|
116
|
+
readonly previousSibling: ChildNode | null;
|
|
117
|
+
textContent: string | null;
|
|
118
|
+
appendChild<T_1 extends Node>(node: T_1): T_1;
|
|
119
|
+
cloneNode(deep?: boolean | undefined): Node;
|
|
120
|
+
compareDocumentPosition(other: Node): number;
|
|
121
|
+
contains(other: Node | null): boolean;
|
|
122
|
+
getRootNode(options?: GetRootNodeOptions | undefined): Node;
|
|
123
|
+
hasChildNodes(): boolean;
|
|
124
|
+
insertBefore<T_2 extends Node>(node: T_2, child: Node | null): T_2;
|
|
125
|
+
isDefaultNamespace(namespace: string | null): boolean;
|
|
126
|
+
isEqualNode(otherNode: Node | null): boolean;
|
|
127
|
+
isSameNode(otherNode: Node | null): boolean;
|
|
128
|
+
lookupNamespaceURI(prefix: string | null): string | null;
|
|
129
|
+
lookupPrefix(namespace: string | null): string | null;
|
|
130
|
+
normalize(): void;
|
|
131
|
+
removeChild<T_3 extends Node>(child: T_3): T_3;
|
|
132
|
+
replaceChild<T_4 extends Node>(node: Node, child: T_4): T_4;
|
|
133
|
+
readonly ATTRIBUTE_NODE: number;
|
|
134
|
+
readonly CDATA_SECTION_NODE: number;
|
|
135
|
+
readonly COMMENT_NODE: number;
|
|
136
|
+
readonly DOCUMENT_FRAGMENT_NODE: number;
|
|
137
|
+
readonly DOCUMENT_NODE: number;
|
|
138
|
+
readonly DOCUMENT_POSITION_CONTAINED_BY: number;
|
|
139
|
+
readonly DOCUMENT_POSITION_CONTAINS: number;
|
|
140
|
+
readonly DOCUMENT_POSITION_DISCONNECTED: number;
|
|
141
|
+
readonly DOCUMENT_POSITION_FOLLOWING: number;
|
|
142
|
+
readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: number;
|
|
143
|
+
readonly DOCUMENT_POSITION_PRECEDING: number;
|
|
144
|
+
readonly DOCUMENT_TYPE_NODE: number;
|
|
145
|
+
readonly ELEMENT_NODE: number;
|
|
146
|
+
readonly ENTITY_NODE: number;
|
|
147
|
+
readonly ENTITY_REFERENCE_NODE: number;
|
|
148
|
+
readonly NOTATION_NODE: number;
|
|
149
|
+
readonly PROCESSING_INSTRUCTION_NODE: number;
|
|
150
|
+
readonly TEXT_NODE: number;
|
|
151
|
+
dispatchEvent(event: Event): boolean;
|
|
152
|
+
ariaAtomic: string | null;
|
|
153
|
+
ariaAutoComplete: string | null;
|
|
154
|
+
ariaBusy: string | null;
|
|
155
|
+
ariaChecked: string | null;
|
|
156
|
+
ariaColCount: string | null;
|
|
157
|
+
ariaColIndex: string | null;
|
|
158
|
+
ariaColSpan: string | null;
|
|
159
|
+
ariaCurrent: string | null;
|
|
160
|
+
ariaDisabled: string | null;
|
|
161
|
+
ariaExpanded: string | null;
|
|
162
|
+
ariaHasPopup: string | null;
|
|
163
|
+
ariaHidden: string | null;
|
|
164
|
+
ariaKeyShortcuts: string | null;
|
|
165
|
+
ariaLabel: string | null;
|
|
166
|
+
ariaLevel: string | null;
|
|
167
|
+
ariaLive: string | null;
|
|
168
|
+
ariaModal: string | null;
|
|
169
|
+
ariaMultiLine: string | null;
|
|
170
|
+
ariaMultiSelectable: string | null;
|
|
171
|
+
ariaOrientation: string | null;
|
|
172
|
+
ariaPlaceholder: string | null;
|
|
173
|
+
ariaPosInSet: string | null;
|
|
174
|
+
ariaPressed: string | null;
|
|
175
|
+
ariaReadOnly: string | null;
|
|
176
|
+
ariaRequired: string | null;
|
|
177
|
+
ariaRoleDescription: string | null;
|
|
178
|
+
ariaRowCount: string | null;
|
|
179
|
+
ariaRowIndex: string | null;
|
|
180
|
+
ariaRowSpan: string | null;
|
|
181
|
+
ariaSelected: string | null;
|
|
182
|
+
ariaSetSize: string | null;
|
|
183
|
+
ariaSort: string | null;
|
|
184
|
+
ariaValueMax: string | null;
|
|
185
|
+
ariaValueMin: string | null;
|
|
186
|
+
ariaValueNow: string | null;
|
|
187
|
+
ariaValueText: string | null;
|
|
188
|
+
animate(keyframes: PropertyIndexedKeyframes | Keyframe[] | null, options?: number | KeyframeAnimationOptions | undefined): Animation;
|
|
189
|
+
getAnimations(options?: GetAnimationsOptions | undefined): Animation[];
|
|
190
|
+
after(...nodes: (string | Node)[]): void;
|
|
191
|
+
before(...nodes: (string | Node)[]): void;
|
|
192
|
+
remove(): void;
|
|
193
|
+
replaceWith(...nodes: (string | Node)[]): void;
|
|
194
|
+
innerHTML: string;
|
|
195
|
+
readonly nextElementSibling: Element | null;
|
|
196
|
+
readonly previousElementSibling: Element | null;
|
|
197
|
+
readonly childElementCount: number;
|
|
198
|
+
readonly children: HTMLCollection;
|
|
199
|
+
readonly firstElementChild: Element | null;
|
|
200
|
+
readonly lastElementChild: Element | null;
|
|
201
|
+
append(...nodes: (string | Node)[]): void;
|
|
202
|
+
prepend(...nodes: (string | Node)[]): void;
|
|
203
|
+
querySelector<K_6 extends keyof HTMLElementTagNameMap>(selectors: K_6): HTMLElementTagNameMap[K_6] | null;
|
|
204
|
+
querySelector<K_7 extends keyof SVGElementTagNameMap>(selectors: K_7): SVGElementTagNameMap[K_7] | null;
|
|
205
|
+
querySelector<E_1 extends Element = Element>(selectors: string): E_1 | null;
|
|
206
|
+
querySelectorAll<K_8 extends keyof HTMLElementTagNameMap>(selectors: K_8): NodeListOf<HTMLElementTagNameMap[K_8]>;
|
|
207
|
+
querySelectorAll<K_9 extends keyof SVGElementTagNameMap>(selectors: K_9): NodeListOf<SVGElementTagNameMap[K_9]>;
|
|
208
|
+
querySelectorAll<E_2 extends Element = Element>(selectors: string): NodeListOf<E_2>;
|
|
209
|
+
replaceChildren(...nodes: (string | Node)[]): void;
|
|
210
|
+
readonly assignedSlot: HTMLSlotElement | null;
|
|
211
|
+
oncopy: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
212
|
+
oncut: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
213
|
+
onpaste: ((this: DocumentAndElementEventHandlers, ev: ClipboardEvent) => any) | null;
|
|
214
|
+
readonly style: CSSStyleDeclaration;
|
|
215
|
+
contentEditable: string;
|
|
216
|
+
enterKeyHint: string;
|
|
217
|
+
inputMode: string;
|
|
218
|
+
readonly isContentEditable: boolean;
|
|
219
|
+
onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
|
|
220
|
+
onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
221
|
+
onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
222
|
+
onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
223
|
+
onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
|
|
224
|
+
onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
225
|
+
onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
|
|
226
|
+
oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
227
|
+
oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
228
|
+
onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
229
|
+
onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
230
|
+
onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
231
|
+
oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
232
|
+
oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
233
|
+
ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
234
|
+
ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
235
|
+
ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
236
|
+
ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
237
|
+
ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
238
|
+
ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
239
|
+
ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
240
|
+
ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
|
|
241
|
+
ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
242
|
+
onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
243
|
+
onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
244
|
+
onerror: OnErrorEventHandler;
|
|
245
|
+
onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
|
|
246
|
+
onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;
|
|
247
|
+
ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
248
|
+
oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
249
|
+
oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
250
|
+
onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
251
|
+
onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
252
|
+
onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
|
|
253
|
+
onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
254
|
+
onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
255
|
+
onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
256
|
+
onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
257
|
+
onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
258
|
+
onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
259
|
+
onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
260
|
+
onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
261
|
+
onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
262
|
+
onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
263
|
+
onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
264
|
+
onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
|
|
265
|
+
onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
266
|
+
onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
267
|
+
onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
268
|
+
onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
269
|
+
onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
270
|
+
onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
271
|
+
onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
272
|
+
onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
273
|
+
onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
274
|
+
onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
275
|
+
onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
|
|
276
|
+
onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent<EventTarget>) => any) | null;
|
|
277
|
+
onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
278
|
+
onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
279
|
+
onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
|
|
280
|
+
onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
281
|
+
onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
|
|
282
|
+
onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
283
|
+
onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
284
|
+
onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
285
|
+
onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
286
|
+
onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
287
|
+
onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
288
|
+
onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
289
|
+
onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;
|
|
290
|
+
onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
291
|
+
ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
292
|
+
ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
293
|
+
ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
294
|
+
ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
295
|
+
ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
296
|
+
ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
|
|
297
|
+
ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
298
|
+
ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
299
|
+
ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
300
|
+
ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
|
|
301
|
+
onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
302
|
+
onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
303
|
+
onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
304
|
+
onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
305
|
+
onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
306
|
+
onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
|
|
307
|
+
onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
|
|
308
|
+
autofocus: boolean;
|
|
309
|
+
readonly dataset: DOMStringMap;
|
|
310
|
+
nonce?: string | undefined;
|
|
311
|
+
tabIndex: number;
|
|
312
|
+
blur(): void;
|
|
313
|
+
focus(options?: FocusOptions | undefined): void;
|
|
10
314
|
};
|
|
11
|
-
|
|
315
|
+
inject?: ProviderToken<any>[] | undefined;
|
|
12
316
|
providers?: Provider<any>[] | undefined;
|
|
13
317
|
} & T;
|
|
@@ -1,17 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export function injectable(
|
|
4
|
-
const {
|
|
5
|
-
return class InjectableElement extends
|
|
1
|
+
import { Injector } from './injector.js';
|
|
2
|
+
import { environment } from './environment.js';
|
|
3
|
+
export function injectable(CustomElement) {
|
|
4
|
+
const { inject, providers } = CustomElement;
|
|
5
|
+
return class InjectableElement extends CustomElement {
|
|
6
6
|
constructor(...args) {
|
|
7
|
-
|
|
7
|
+
const injector = new Injector(providers, environment());
|
|
8
|
+
if (args.length || !inject) {
|
|
8
9
|
super(...args);
|
|
9
10
|
}
|
|
10
11
|
else {
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
super(...inject.map((dep) => () => injector.get(dep)));
|
|
13
|
+
}
|
|
14
|
+
this.injector = injector;
|
|
15
|
+
}
|
|
16
|
+
connectedCallback() {
|
|
17
|
+
// only mark as an injector root if element defines providers
|
|
18
|
+
if (providers) {
|
|
19
|
+
this.setAttribute('joist-injector-root', 'true');
|
|
20
|
+
}
|
|
21
|
+
this.addEventListener('finddiroot', (e) => {
|
|
22
|
+
const parentInjector = findInjectorRoot(e);
|
|
23
|
+
if (parentInjector) {
|
|
24
|
+
this.injector.parent = parentInjector;
|
|
25
|
+
}
|
|
26
|
+
if (super.connectedCallback) {
|
|
27
|
+
super.connectedCallback();
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
this.dispatchEvent(new Event('finddiroot'));
|
|
31
|
+
}
|
|
32
|
+
disconnectedCallback() {
|
|
33
|
+
delete this.injector.parent;
|
|
34
|
+
if (super.disconnectedCallback) {
|
|
35
|
+
super.disconnectedCallback();
|
|
13
36
|
}
|
|
14
37
|
}
|
|
15
38
|
};
|
|
16
39
|
}
|
|
17
|
-
|
|
40
|
+
function findInjectorRoot(e) {
|
|
41
|
+
const path = e.composedPath();
|
|
42
|
+
const parentInjector = path.find((el) => {
|
|
43
|
+
return el instanceof HTMLElement && el !== e.target && el.hasAttribute('joist-injector-root');
|
|
44
|
+
});
|
|
45
|
+
if (parentInjector) {
|
|
46
|
+
return Reflect.get(parentInjector, 'injector');
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
|
-
import { ProviderToken, Provider, ClassProviderToken } from './provider';
|
|
2
|
-
export
|
|
3
|
-
providers?: Provider<any>[];
|
|
4
|
-
bootstrap?: ProviderToken<any>[];
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Create an instance of a Dependency injector.
|
|
8
|
-
* Can be used to create a singleton of any class that is property annotated with dependencies.
|
|
9
|
-
*
|
|
10
|
-
* @param options configuration options for the current instance of Injector
|
|
11
|
-
* @param parent a parent instance of Injector
|
|
12
|
-
*/
|
|
1
|
+
import { ProviderToken, Provider, ClassProviderToken } from './provider.js';
|
|
2
|
+
export declare type Injected<T> = () => T;
|
|
13
3
|
export declare class Injector {
|
|
14
|
-
|
|
4
|
+
providers: Provider<any>[];
|
|
15
5
|
parent?: Injector | undefined;
|
|
16
|
-
|
|
17
|
-
constructor(
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* recursively check if a singleton instance is available for a provider
|
|
21
|
-
*/
|
|
22
|
-
has(token: ProviderToken<any>): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* fetches a singleton instance of a provider
|
|
25
|
-
*/
|
|
6
|
+
instances: WeakMap<ProviderToken<any>, any>;
|
|
7
|
+
constructor(providers?: Provider<any>[], parent?: Injector | undefined);
|
|
8
|
+
has<T>(token: ProviderToken<T>): boolean;
|
|
26
9
|
get<T>(token: ProviderToken<T>): T;
|
|
27
10
|
create<T>(P: ClassProviderToken<T>): T;
|
|
28
|
-
private
|
|
11
|
+
private createAndCache;
|
|
29
12
|
private findProvider;
|
|
30
13
|
}
|
|
@@ -1,74 +1,56 @@
|
|
|
1
|
-
import { readProviderDeps, isProvidedInRoot } from './utils';
|
|
2
|
-
/**
|
|
3
|
-
* Create an instance of a Dependency injector.
|
|
4
|
-
* Can be used to create a singleton of any class that is property annotated with dependencies.
|
|
5
|
-
*
|
|
6
|
-
* @param options configuration options for the current instance of Injector
|
|
7
|
-
* @param parent a parent instance of Injector
|
|
8
|
-
*/
|
|
1
|
+
import { readProviderDeps, isProvidedInRoot } from './utils.js';
|
|
9
2
|
export class Injector {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
providerMap = new WeakMap();
|
|
13
|
-
constructor(options = {}, parent) {
|
|
14
|
-
this.options = options;
|
|
15
|
-
this.parent = parent;
|
|
16
|
-
if (this.options.bootstrap) {
|
|
17
|
-
this.options.bootstrap.forEach((provider) => this.get(provider));
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
setParent(parent) {
|
|
3
|
+
constructor(providers = [], parent) {
|
|
4
|
+
this.providers = providers;
|
|
21
5
|
this.parent = parent;
|
|
6
|
+
this.instances = new WeakMap();
|
|
22
7
|
}
|
|
23
|
-
/**
|
|
24
|
-
* recursively check if a singleton instance is available for a provider
|
|
25
|
-
*/
|
|
26
8
|
has(token) {
|
|
27
|
-
|
|
9
|
+
const hasLocally = this.instances.has(token) || !!this.findProvider(token);
|
|
10
|
+
if (hasLocally) {
|
|
28
11
|
return true;
|
|
29
12
|
}
|
|
30
|
-
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
else if (this.parent) {
|
|
34
|
-
return this.parent.has(token);
|
|
35
|
-
}
|
|
36
|
-
return false;
|
|
13
|
+
return this.parent ? this.parent.has(token) : false;
|
|
37
14
|
}
|
|
38
|
-
/**
|
|
39
|
-
* fetches a singleton instance of a provider
|
|
40
|
-
*/
|
|
41
15
|
get(token) {
|
|
42
|
-
|
|
43
|
-
|
|
16
|
+
// check for a local instance
|
|
17
|
+
if (this.instances.has(token)) {
|
|
18
|
+
return this.instances.get(token);
|
|
44
19
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
20
|
+
const provider = this.findProvider(token);
|
|
21
|
+
// check for a provider definition
|
|
22
|
+
if (provider) {
|
|
23
|
+
if ('use' in provider) {
|
|
24
|
+
return this.createAndCache(provider.use);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return this.createAndCache(provider);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// check for a parent and attempt to get there
|
|
31
|
+
if (this.parent) {
|
|
32
|
+
if (this.parent.has(token) || isProvidedInRoot(token)) {
|
|
33
|
+
return this.parent.get(token);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// If nothing else treat as a local class provider
|
|
37
|
+
return this.createAndCache(token);
|
|
48
38
|
}
|
|
49
39
|
create(P) {
|
|
50
40
|
const deps = readProviderDeps(P);
|
|
51
|
-
return new P(...deps.map((dep) => this.get(dep)));
|
|
41
|
+
return new P(...deps.map((dep) => () => this.get(dep)));
|
|
52
42
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// If provider is defined in current scope use that implementation
|
|
58
|
-
return this.create(provider.use);
|
|
59
|
-
}
|
|
60
|
-
if (this.parent && (isProvidedInRoot(token) || this.parent.has(token))) {
|
|
61
|
-
// if a parent is available and contains an instance of the provider already use that
|
|
62
|
-
return this.parent.get(token);
|
|
63
|
-
}
|
|
64
|
-
// if nothing else found assume ClassProviderToken
|
|
65
|
-
return this.create(token);
|
|
43
|
+
createAndCache(token) {
|
|
44
|
+
const instance = this.create(token);
|
|
45
|
+
this.instances.set(token, instance);
|
|
46
|
+
return instance;
|
|
66
47
|
}
|
|
67
48
|
findProvider(token) {
|
|
68
|
-
if (!this.
|
|
49
|
+
if (!this.providers) {
|
|
69
50
|
return undefined;
|
|
70
51
|
}
|
|
71
|
-
return this.
|
|
52
|
+
return this.providers.find((provider) => {
|
|
53
|
+
return provider === token || provider.provide === token;
|
|
54
|
+
});
|
|
72
55
|
}
|
|
73
56
|
}
|
|
74
|
-
//# sourceMappingURL=injector.js.map
|
|
@@ -7,7 +7,8 @@ export declare type AbstractClassProviderToken<T> = Function & {
|
|
|
7
7
|
[key: string]: any;
|
|
8
8
|
};
|
|
9
9
|
export declare type ProviderToken<T> = ClassProviderToken<T> | AbstractClassProviderToken<T>;
|
|
10
|
-
export interface
|
|
10
|
+
export interface ProviderDef<T> {
|
|
11
11
|
provide: ProviderToken<T>;
|
|
12
12
|
use: ClassProviderToken<T>;
|
|
13
13
|
}
|
|
14
|
+
export declare type Provider<T> = ProviderDef<T> | ClassProviderToken<T>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ProviderToken } from '
|
|
2
|
-
export declare function service(provider: ProviderToken<any>):
|
|
1
|
+
import { ProviderToken } from './provider.js';
|
|
2
|
+
export declare function service(provider: ProviderToken<any>): any;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export function service(provider) {
|
|
2
|
-
Object.defineProperty(provider, 'provideInRoot', {
|
|
2
|
+
Object.defineProperty(provider, 'provideInRoot', {
|
|
3
|
+
get() {
|
|
4
|
+
return true;
|
|
5
|
+
},
|
|
6
|
+
enumerable: false,
|
|
7
|
+
configurable: false,
|
|
8
|
+
});
|
|
3
9
|
return provider;
|
|
4
10
|
}
|
|
5
|
-
//# sourceMappingURL=service.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProviderToken } from './provider';
|
|
2
|
-
export declare const PROVIDER_DEPS_KEY = "
|
|
1
|
+
import { ProviderToken } from './provider.js';
|
|
2
|
+
export declare const PROVIDER_DEPS_KEY = "inject";
|
|
3
3
|
export declare function readProviderDeps(provider: ProviderToken<any>): ProviderToken<any>[];
|
|
4
4
|
export declare function isProvidedInRoot(provider: ProviderToken<any>): any;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export const PROVIDER_DEPS_KEY = '
|
|
1
|
+
export const PROVIDER_DEPS_KEY = 'inject';
|
|
2
2
|
export function readProviderDeps(provider) {
|
|
3
3
|
return provider[PROVIDER_DEPS_KEY] || provider.prototype[PROVIDER_DEPS_KEY] || [];
|
|
4
4
|
}
|
|
5
5
|
export function isProvidedInRoot(provider) {
|
|
6
6
|
return provider.provideInRoot || false;
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=utils.js.map
|
package/target/build/lib.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { Injector,
|
|
2
|
-
export { Provider, ProviderToken } from './lib/provider';
|
|
3
|
-
export { readProviderDeps } from './lib/utils';
|
|
4
|
-
export { service } from './lib/service';
|
|
5
|
-
export {
|
|
6
|
-
export { injectable } from './lib/injectable';
|
|
1
|
+
export { Injector, Injected } from './lib/injector.js';
|
|
2
|
+
export { ProviderDef, Provider, ProviderToken } from './lib/provider.js';
|
|
3
|
+
export { readProviderDeps } from './lib/utils.js';
|
|
4
|
+
export { service } from './lib/service.js';
|
|
5
|
+
export { environment } from './lib/environment.js';
|
|
6
|
+
export { injectable } from './lib/injectable.js';
|
package/target/build/lib.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { Injector } from './lib/injector';
|
|
2
|
-
export { readProviderDeps } from './lib/utils';
|
|
3
|
-
export { service } from './lib/service';
|
|
4
|
-
export {
|
|
5
|
-
export { injectable } from './lib/injectable';
|
|
6
|
-
//# sourceMappingURL=lib.js.map
|
|
1
|
+
export { Injector } from './lib/injector.js';
|
|
2
|
+
export { readProviderDeps } from './lib/utils.js';
|
|
3
|
+
export { service } from './lib/service.js';
|
|
4
|
+
export { environment } from './lib/environment.js';
|
|
5
|
+
export { injectable } from './lib/injectable.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../lib/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,IAAI,YAAY,GAAoB,IAAI,CAAC;AAEzC,MAAM,UAAU,iBAAiB,CAAC,YAA6B,EAAE;IAC/D,YAAY,GAAG,IAAI,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAE3C,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAC;KACrB;IAED,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../../lib/injectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUtC,MAAM,UAAU,UAAU,CAAuB,KAAQ;IACvD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAElC,OAAO,MAAM,iBAAkB,SAAQ,KAAK;QAC1C,YAAY,GAAG,IAAW;YACxB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC/B,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;aAChB;iBAAM;gBACL,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBAE3D,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACzC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../lib/injector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAO7D;;;;;;GAMG;AACH,MAAM,OAAO,QAAQ;IAGA;IAAsC;IAFjD,WAAW,GAAG,IAAI,OAAO,EAA2B,CAAC;IAE7D,YAAmB,UAA2B,EAAE,EAAS,MAAiB;QAAvD,YAAO,GAAP,OAAO,CAAsB;QAAS,WAAM,GAAN,MAAM,CAAW;QACxE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;SAClE;IACH,CAAC;IAED,SAAS,CAAC,MAAiB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,KAAyB;QAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC/B;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,KAAuB;QAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,IAAI,QAAQ,GAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAI,CAAwB;QAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,OAAO,CAAI,KAAuB;QACxC,uDAAuD;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,QAAQ,EAAE;YACZ,kEAAkE;YAClE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAClC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACtE,qFAAqF;YACrF,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC/B;QAED,kDAAkD;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,KAA8B,CAAC,CAAC;IACrD,CAAC;IAEO,YAAY,CAAC,KAAyB;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC3B,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;IAC/E,CAAC;CACF"}
|