@ng-atomic/core 16.2.0 → 17.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 CHANGED
@@ -1,7 +1,60 @@
1
- # packages/@ng-atomic/core
1
+ # @ng-atomic/core
2
+ `@ng-atomic/core`は
2
3
 
3
- This library was generated with [Nx](https://nx.dev).
4
+ ## Concept
5
+ - Injectable Component
6
+ - Action and Effect
4
7
 
5
- ## Running unit tests
8
+ ## Install
9
+ ```sh
10
+ $ npm i @ng-atomic/core
11
+ ```
6
12
 
7
- Run `nx test packages/@ng-atomic/core` to execute the unit tests.
13
+ ## Example
14
+
15
+ ```ts
16
+ @Directive({standalone: true, selector: 'example'})
17
+ export class ExampleComponentStore extends InjectableComponent {
18
+ @Input() name: string;
19
+ }
20
+
21
+ @Component({
22
+ standalone: true,
23
+ selector: 'example',
24
+ hostDirectives: [ExampleComponentStore],
25
+ template: `<button (click)="onButtonClick()">{{ store.name }}</button>`
26
+ })
27
+ export class ExampleComponent extends NgAtomicComponent {
28
+ protected store = inject(ExampleComponentStore);
29
+
30
+ protected onButtonClick() {
31
+ this.dispatch({
32
+ id: ActionId.BUTTON_CLICK,
33
+ payload: 'Hello World!',
34
+ });
35
+ }
36
+ }
37
+
38
+ @Component({
39
+ standalone: true,
40
+ selector: 'example',
41
+ imports: [
42
+ // Import Injectable Component
43
+ ExampleComponentStore
44
+ ],
45
+ template: `<example [name]="'example'" (action)="dispatch($event)" injectable/>`,
46
+ provider: [
47
+ // Provide Component Implementation
48
+ provideComponent(ExampleComponentStore, () => ExampleComponent),
49
+ ],
50
+ })
51
+ export class AppComponent extends NgAtomicComponent {
52
+ @Effect(ExampleComponent.ActionId.BUTTON_CLICK)
53
+ protected onButtonClick(message: string) {
54
+ alert(message);
55
+ }
56
+ }
57
+ ```
58
+
59
+ # LISENCE
60
+ MIT
@@ -1,8 +1,8 @@
1
1
  import { EventEmitter, Injectable } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class NgAtomicRootActionStore {
4
+ actions$ = new EventEmitter();
4
5
  constructor() {
5
- this.actions$ = new EventEmitter();
6
6
  this.actions$.subscribe(action => this.log(action, 'root'));
7
7
  }
8
8
  dispatch(action) {
@@ -11,11 +11,11 @@ export class NgAtomicRootActionStore {
11
11
  log(action, scope = 'default') {
12
12
  console.debug(action, scope);
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgAtomicRootActionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgAtomicRootActionStore, providedIn: 'root' }); }
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
15
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, providedIn: 'root' });
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgAtomicRootActionStore, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NgAtomicRootActionStore, decorators: [{
18
18
  type: Injectable,
19
19
  args: [{ providedIn: 'root' }]
20
- }], ctorParameters: function () { return []; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvYWN0aW9uLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUl6RCxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDO1FBRlMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixTQUFTO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7K0dBYlUsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FEWCxNQUFNOzs0RkFDbEIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25cIjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdBdG9taWNSb290QWN0aW9uU3RvcmUge1xuICByZWFkb25seSBhY3Rpb25zJCA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYWN0aW9ucyQuc3Vic2NyaWJlKGFjdGlvbiA9PiB0aGlzLmxvZyhhY3Rpb24sICdyb290JykpO1xuICB9XG5cbiAgZGlzcGF0Y2goYWN0aW9uOiBBY3Rpb24pIHtcbiAgICB0aGlzLmFjdGlvbnMkLmVtaXQoYWN0aW9uKTtcbiAgfVxuXG4gIGxvZyhhY3Rpb246IEFjdGlvbiwgc2NvcGU6IHN0cmluZyA9ICdkZWZhdWx0Jykge1xuICAgIGNvbnNvbGUuZGVidWcoYWN0aW9uLCBzY29wZSk7XG4gIH1cbn1cbiJdfQ==
20
+ }], ctorParameters: () => [] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvYWN0aW9uLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUl6RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRS9DO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBYztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFnQixTQUFTO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7dUdBYlUsdUJBQXVCOzJHQUF2Qix1QkFBdUIsY0FEWCxNQUFNOzsyRkFDbEIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25cIjtcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTmdBdG9taWNSb290QWN0aW9uU3RvcmUge1xuICByZWFkb25seSBhY3Rpb25zJCA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYWN0aW9ucyQuc3Vic2NyaWJlKGFjdGlvbiA9PiB0aGlzLmxvZyhhY3Rpb24sICdyb290JykpO1xuICB9XG5cbiAgZGlzcGF0Y2goYWN0aW9uOiBBY3Rpb24pIHtcbiAgICB0aGlzLmFjdGlvbnMkLmVtaXQoYWN0aW9uKTtcbiAgfVxuXG4gIGxvZyhhY3Rpb246IEFjdGlvbiwgc2NvcGU6IHN0cmluZyA9ICdkZWZhdWx0Jykge1xuICAgIGNvbnNvbGUuZGVidWcoYWN0aW9uLCBzY29wZSk7XG4gIH1cbn1cbiJdfQ==
@@ -4,4 +4,7 @@ export function resolveActions(actions, ...args) {
4
4
  }
5
5
  return actions;
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0IsRUFBRSxHQUFHLElBQVc7SUFDN0QsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUU7UUFDakMsT0FBTyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUN6QjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFjdGlvbjxUID0gYW55PiB7XG4gIGlkOiBzdHJpbmc7XG4gIHBheWxvYWQ/OiBUO1xuICBuYW1lPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjaGlsZHJlbj86IEFjdGlvbjxUPltdLFxufVxuXG5leHBvcnQgdHlwZSBBY3Rpb25zID0gKCguLi5hcmdzOiBhbnlbXSkgPT4gQWN0aW9uW10pIHwgQWN0aW9uW107XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25zLCAuLi5hcmdzOiBhbnlbXSkge1xuICBpZiAodHlwZW9mIGFjdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gYWN0aW9ucyguLi5hcmdzKTtcbiAgfVxuICByZXR1cm4gYWN0aW9ucztcbn1cbiJdfQ==
7
+ export function wrapActions(actions) {
8
+ return typeof actions === 'function' ? actions : () => actions;
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0IsRUFBRSxHQUFHLElBQVc7SUFDN0QsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUU7UUFDakMsT0FBTyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUN6QjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQWdCO0lBQzFDLE9BQU8sT0FBTyxPQUFPLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBY3Rpb248VCA9IGFueT4ge1xuICBpZDogc3RyaW5nO1xuICBwYXlsb2FkPzogVDtcbiAgbmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBBY3Rpb248VD5bXSxcbiAgbWV0YT86IHtjb21wb25lbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGx9IHwgYW55O1xufVxuXG5leHBvcnQgdHlwZSBBY3Rpb25zRmFjdG9yeTxUID0gYW55PiA9ICguLi5hcmdzOiBhbnlbXSkgPT4gQWN0aW9uPFQ+W107XG5cbmV4cG9ydCB0eXBlIEFjdGlvbnMgPSBBY3Rpb25zRmFjdG9yeSB8IEFjdGlvbltdO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjdGlvbnMoYWN0aW9uczogQWN0aW9ucywgLi4uYXJnczogYW55W10pIHtcbiAgaWYgKHR5cGVvZiBhY3Rpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGFjdGlvbnMoLi4uYXJncyk7XG4gIH1cbiAgcmV0dXJuIGFjdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25zKTogQWN0aW9uc0ZhY3Rvcnkge1xuICByZXR1cm4gdHlwZW9mIGFjdGlvbnMgPT09ICdmdW5jdGlvbicgPyBhY3Rpb25zIDogKCkgPT4gYWN0aW9ucztcbn1cbiJdfQ==
@@ -0,0 +1,62 @@
1
+ import { isPlatformBrowser } from '@angular/common';
2
+ import { Directive, ElementRef, PLATFORM_ID, inject } from '@angular/core';
3
+ import { NG_ATOMIC_DEBUG } from '../ng-atomic-debug';
4
+ import * as i0 from "@angular/core";
5
+ const DEBUG_CONFIG = {
6
+ outline: '1px',
7
+ colors: {
8
+ 'templates': '#f00',
9
+ 'organisms': '#0f0',
10
+ 'molecules': '#00f',
11
+ 'atoms': '#ff0',
12
+ 'frames': 'transparent',
13
+ 'default': '#000',
14
+ },
15
+ excludes: ['frames', 'app', 'pages', 'atoms'],
16
+ };
17
+ export class DebugDirective {
18
+ el = inject(ElementRef);
19
+ platformId = inject(PLATFORM_ID);
20
+ isDebug = inject(NG_ATOMIC_DEBUG, { optional: true }) ?? false;
21
+ ngOnInit() {
22
+ if (isPlatformBrowser(this.platformId) && this.isDebug) {
23
+ const name = this.el.nativeElement.tagName.toLowerCase();
24
+ const type = name.split('-')[0];
25
+ if (DEBUG_CONFIG.excludes.includes(type))
26
+ return;
27
+ const color = DEBUG_CONFIG.colors?.[type] ?? DEBUG_CONFIG.colors.default;
28
+ // 1pxのアウトラインを設定
29
+ this.el.nativeElement.style.outline = `${DEBUG_CONFIG.outline} solid ${color}`;
30
+ // 疑似要素でコンポーネント名を表示
31
+ const labelEl = this.createLabelElement({
32
+ name: `${name}${this.el.nativeElement.hasAttribute('injected') ? '[injected]' : ''}`,
33
+ color
34
+ });
35
+ this.el.nativeElement.style.outlineOffset = '-1px';
36
+ this.el.nativeElement.style.position = 'relative';
37
+ this.el.nativeElement.appendChild(labelEl);
38
+ }
39
+ }
40
+ createLabelElement(options) {
41
+ const content = document.createElement('span');
42
+ content.textContent = options.name;
43
+ content.style.backgroundColor = `${options.color}`;
44
+ content.style.color = '#fff';
45
+ content.style.padding = '2px 4px';
46
+ content.style.position = 'absolute';
47
+ content.style.fontSize = '10px';
48
+ content.style.top = '0';
49
+ content.style.left = '0';
50
+ content.style.zIndex = '9999';
51
+ content.style.lineHeight = '1.5em';
52
+ content.style.whiteSpace = 'nowrap';
53
+ return content;
54
+ }
55
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DebugDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
56
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.2", type: DebugDirective, isStandalone: true, selector: "debug", ngImport: i0 });
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: DebugDirective, decorators: [{
59
+ type: Directive,
60
+ args: [{ standalone: true, selector: 'debug' }]
61
+ }] });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvZGVidWcvZGVidWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUVyRCxNQUFNLFlBQVksR0FBRztJQUNuQixPQUFPLEVBQUUsS0FBSztJQUNkLE1BQU0sRUFBRTtRQUNOLFdBQVcsRUFBRSxNQUFNO1FBQ25CLFdBQVcsRUFBRSxNQUFNO1FBQ25CLFdBQVcsRUFBRSxNQUFNO1FBQ25CLE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFLGFBQWE7UUFDdkIsU0FBUyxFQUFFLE1BQU07S0FDbEI7SUFDRCxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7Q0FDOUMsQ0FBQztBQUdGLE1BQU0sT0FBTyxjQUFjO0lBQ2YsRUFBRSxHQUE0QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxPQUFPLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUV2RSxRQUFRO1FBQ04sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFBRSxPQUFPO1lBQ2pELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUV6RSxnQkFBZ0I7WUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLFVBQVUsS0FBSyxFQUFFLENBQUM7WUFFL0UsbUJBQW1CO1lBQ25CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdEMsSUFBSSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BGLEtBQUs7YUFDTixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztZQUNuRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztZQUNsRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRVMsa0JBQWtCLENBQUMsT0FHNUI7UUFDQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuRCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUNwQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO3VHQTNDVSxjQUFjOzJGQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFNBQVM7bUJBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFBMQVRGT1JNX0lELCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX0FUT01JQ19ERUJVRyB9IGZyb20gJy4uL25nLWF0b21pYy1kZWJ1Zyc7XG5cbmNvbnN0IERFQlVHX0NPTkZJRyA9IHtcbiAgb3V0bGluZTogJzFweCcsXG4gIGNvbG9yczoge1xuICAgICd0ZW1wbGF0ZXMnOiAnI2YwMCcsXG4gICAgJ29yZ2FuaXNtcyc6ICcjMGYwJyxcbiAgICAnbW9sZWN1bGVzJzogJyMwMGYnLFxuICAgICdhdG9tcyc6ICcjZmYwJyxcbiAgICAnZnJhbWVzJzogJ3RyYW5zcGFyZW50JyxcbiAgICAnZGVmYXVsdCc6ICcjMDAwJyxcbiAgfSxcbiAgZXhjbHVkZXM6IFsnZnJhbWVzJywgJ2FwcCcsICdwYWdlcycsICdhdG9tcyddLFxufTtcblxuQERpcmVjdGl2ZSh7c3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICdkZWJ1Zyd9KVxuZXhwb3J0IGNsYXNzIERlYnVnRGlyZWN0aXZlIHtcbiAgcHJvdGVjdGVkIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJvdGVjdGVkIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcm90ZWN0ZWQgaXNEZWJ1ZyA9IGluamVjdChOR19BVE9NSUNfREVCVUcsIHtvcHRpb25hbDogdHJ1ZX0pID8/IGZhbHNlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHRoaXMuaXNEZWJ1Zykge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCB0eXBlID0gbmFtZS5zcGxpdCgnLScpWzBdO1xuICAgICAgaWYgKERFQlVHX0NPTkZJRy5leGNsdWRlcy5pbmNsdWRlcyh0eXBlKSkgcmV0dXJuO1xuICAgICAgY29uc3QgY29sb3IgPSBERUJVR19DT05GSUcuY29sb3JzPy5bdHlwZV0gPz8gREVCVUdfQ09ORklHLmNvbG9ycy5kZWZhdWx0O1xuXG4gICAgICAvLyAxcHjjga7jgqLjgqbjg4jjg6njgqTjg7PjgpLoqK3lrppcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5vdXRsaW5lID0gYCR7REVCVUdfQ09ORklHLm91dGxpbmV9IHNvbGlkICR7Y29sb3J9YDtcblxuICAgICAgLy8g55aR5Ly86KaB57Sg44Gn44Kz44Oz44Od44O844ON44Oz44OI5ZCN44KS6KGo56S6XG4gICAgICBjb25zdCBsYWJlbEVsID0gdGhpcy5jcmVhdGVMYWJlbEVsZW1lbnQoe1xuICAgICAgICBuYW1lOiBgJHtuYW1lfSR7dGhpcy5lbC5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnaW5qZWN0ZWQnKSA/ICdbaW5qZWN0ZWRdJyA6ICcnfWAsXG4gICAgICAgIGNvbG9yXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5vdXRsaW5lT2Zmc2V0ID0gJy0xcHgnO1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChsYWJlbEVsKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTGFiZWxFbGVtZW50KG9wdGlvbnM6IHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBjb2xvcjogc3RyaW5nXG4gIH0pOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICBjb250ZW50LnRleHRDb250ZW50ID0gb3B0aW9ucy5uYW1lO1xuICAgIGNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYCR7b3B0aW9ucy5jb2xvcn1gO1xuICAgIGNvbnRlbnQuc3R5bGUuY29sb3IgPSAnI2ZmZic7XG4gICAgY29udGVudC5zdHlsZS5wYWRkaW5nID0gJzJweCA0cHgnO1xuICAgIGNvbnRlbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNvbnRlbnQuc3R5bGUuZm9udFNpemUgPSAnMTBweCc7XG4gICAgY29udGVudC5zdHlsZS50b3AgPSAnMCc7XG4gICAgY29udGVudC5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIGNvbnRlbnQuc3R5bGUuekluZGV4ID0gJzk5OTknO1xuICAgIGNvbnRlbnQuc3R5bGUubGluZUhlaWdodCA9ICcxLjVlbSc7XG4gICAgY29udGVudC5zdHlsZS53aGl0ZVNwYWNlID0gJ25vd3JhcCc7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './debug.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvcmUvc3JjL2xpYi9kZWJ1Zy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWJ1Zy5kaXJlY3RpdmUnO1xuIl19
@@ -1,3 +1,5 @@
1
+ import { Injectable, InjectionToken, Injector, inject, runInInjectionContext } from "@angular/core";
2
+ import * as i0 from "@angular/core";
1
3
  export class EffectMap extends Map {
2
4
  get(key, scope = 'default') {
3
5
  return super.get(this.makeKey(key, scope));
@@ -18,4 +20,67 @@ export function Effect(id, { dispatch = false, scope = 'default', accessor = (ac
18
20
  target['_effectMap'].set(id, { key: propertyKey, props: { dispatch, scope, accessor } });
19
21
  };
20
22
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sT0FBTyxTQUFVLFNBQVEsR0FBOEM7SUFDbEUsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUEyQztRQUNuRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUM1QyxPQUFPLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsRUFBVSxFQUFFLEVBQ2pDLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLEtBQUssR0FBRyxTQUFTLEVBQ2pCLFFBQVEsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sTUFDckIsRUFBRTtJQUMxQixPQUFPLFVBQVUsTUFBVyxFQUFFLFdBQW1CLEVBQUUsVUFBOEI7UUFDL0UsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RQcm9wcyB7XG4gIGRpc3BhdGNoOiBib29sZWFuO1xuICBzY29wZTogc3RyaW5nO1xuICBhY2Nlc3NvcjogPFQgPSBhbnk+KGFjdGlvbjogQWN0aW9uKSA9PiBUO1xufVxuXG5leHBvcnQgY2xhc3MgRWZmZWN0TWFwIGV4dGVuZHMgTWFwPHN0cmluZywge2tleTogc3RyaW5nLCBwcm9wczogRWZmZWN0UHJvcHN9PiB7XG4gIG92ZXJyaWRlIGdldChrZXk6IHN0cmluZywgc2NvcGUgPSAnZGVmYXVsdCcpOiB7IGtleTogc3RyaW5nOyBwcm9wczogRWZmZWN0UHJvcHM7IH0ge1xuICAgIHJldHVybiBzdXBlci5nZXQodGhpcy5tYWtlS2V5KGtleSwgc2NvcGUpKSE7IFxuICB9XG5cbiAgb3ZlcnJpZGUgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogeyBrZXk6IHN0cmluZzsgcHJvcHM6IEVmZmVjdFByb3BzOyB9KTogdGhpcyB7XG4gICAgcmV0dXJuIHN1cGVyLnNldCh0aGlzLm1ha2VLZXkoa2V5LCB2YWx1ZS5wcm9wcy5zY29wZSksIHZhbHVlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGhhcyhrZXk6IHN0cmluZywgc2NvcGUgPSAnZGVmYXVsdCcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuaGFzKHRoaXMubWFrZUtleShrZXksIHNjb3BlKSk7XG4gIH1cblxuICBwcml2YXRlIG1ha2VLZXkoa2V5OiBzdHJpbmcsIHNjb3BlID0gJ2RlZmF1bHQnKSB7XG4gICAgcmV0dXJuIGBbJHtzY29wZX1dIyR7a2V5fWA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVmZmVjdChpZDogc3RyaW5nLCB7XG4gIGRpc3BhdGNoID0gZmFsc2UsXG4gIHNjb3BlID0gJ2RlZmF1bHQnLFxuICBhY2Nlc3NvciA9IChhY3Rpb246IEFjdGlvbikgPT4gYWN0aW9uLnBheWxvYWQsXG59OiBQYXJ0aWFsPEVmZmVjdFByb3BzPiA9IHt9KSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHRhcmdldFsnX2VmZmVjdE1hcCddID8/PSBuZXcgRWZmZWN0TWFwKCk7XG4gICAgdGFyZ2V0WydfZWZmZWN0TWFwJ10uc2V0KGlkLCB7a2V5OiBwcm9wZXJ0eUtleSwgcHJvcHM6IHtkaXNwYXRjaCwgc2NvcGUsIGFjY2Vzc29yfX0pO1xuICB9O1xufVxuIl19
23
+ export const EFFECT_ENTRY = new InjectionToken('EFFECT_ENTRY');
24
+ export function provideEffect(ActionIds, _effectFactory, options = { dispatch: false }) {
25
+ return {
26
+ provide: EFFECT_ENTRY,
27
+ useFactory: (injector) => {
28
+ const effectFactory = (hostInjector) => {
29
+ return runInInjectionContext(hostInjector, () => _effectFactory(injector));
30
+ };
31
+ return { actionIds: ActionIds, effectFactory, options };
32
+ },
33
+ multi: true,
34
+ deps: [Injector]
35
+ };
36
+ }
37
+ export function injectEffectEntries() {
38
+ return inject(EFFECT_ENTRY, { optional: true }) ?? [];
39
+ }
40
+ function buildEffectEntryMap(injector, effectEntries) {
41
+ const effectEntryMap = new Map();
42
+ for (const entry of effectEntries) {
43
+ const ids = Array.isArray(entry.actionIds) ? entry.actionIds : [entry.actionIds];
44
+ for (const id of ids) {
45
+ const effect = () => entry.effectFactory(injector);
46
+ effectEntryMap.set(id, { effect, options: entry.options });
47
+ }
48
+ }
49
+ return effectEntryMap;
50
+ }
51
+ export class EffectReducer {
52
+ injector = inject(Injector);
53
+ effectEntries = injectEffectEntries();
54
+ effectEntryMap = buildEffectEntryMap(this.injector, this.effectEntries);
55
+ async reduce(action) {
56
+ const entry = this.effectEntryMap.get(action.id);
57
+ if (entry) {
58
+ await runInInjectionContext(this.injector, () => {
59
+ return entry?.effect()(action.payload, { injector: this.injector });
60
+ });
61
+ return this.effectEntryMap.get(action.id)?.options ?? { dispatch: false };
62
+ }
63
+ return { dispatch: true };
64
+ }
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: EffectReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
66
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: EffectReducer });
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: EffectReducer, decorators: [{
69
+ type: Injectable
70
+ }] });
71
+ export function injectEffectReducer() {
72
+ const injector = inject(Injector);
73
+ const effectEntries = injectEffectEntries();
74
+ const effectEntryMap = buildEffectEntryMap(injector, effectEntries);
75
+ return async (action) => {
76
+ const entry = effectEntryMap.get(action.id);
77
+ if (entry) {
78
+ await runInInjectionContext(injector, () => {
79
+ return entry?.effect()(action.payload, { injector: injector });
80
+ });
81
+ return effectEntryMap.get(action.id)?.options ?? { dispatch: false };
82
+ }
83
+ return { dispatch: true };
84
+ };
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb3JlL3NyYy9saWIvZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBWSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzlHLE1BQU0sT0FBTyxTQUFVLFNBQVEsR0FBOEM7SUFDbEUsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUEyQztRQUNuRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUM1QyxPQUFPLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsRUFBVSxFQUFFLEVBQ2pDLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLEtBQUssR0FBRyxTQUFTLEVBQ2pCLFFBQVEsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxD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amVjdGlvblRva2VuLCBJbmplY3RvciwgUHJvdmlkZXIsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuL2FjdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdFByb3BzIHtcbiAgZGlzcGF0Y2g6IGJvb2xlYW47XG4gIHNjb3BlOiBzdHJpbmc7XG4gIGFjY2Vzc29yOiAoYWN0aW9uOiBBY3Rpb24pID0+IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEVmZmVjdE1hcCBleHRlbmRzIE1hcDxzdHJpbmcsIHtrZXk6IHN0cmluZywgcHJvcHM6IEVmZmVjdFByb3BzfT4ge1xuICBvdmVycmlkZSBnZXQoa2V5OiBzdHJpbmcsIHNjb3BlID0gJ2RlZmF1bHQnKTogeyBrZXk6IHN0cmluZzsgcHJvcHM6IEVmZmVjdFByb3BzOyB9IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0KHRoaXMubWFrZUtleShrZXksIHNjb3BlKSkhOyBcbiAgfVxuXG4gIG92ZXJyaWRlIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHsga2V5OiBzdHJpbmc7IHByb3BzOiBFZmZlY3RQcm9wczsgfSk6IHRoaXMge1xuICAgIHJldHVybiBzdXBlci5zZXQodGhpcy5tYWtlS2V5KGtleSwgdmFsdWUucHJvcHMuc2NvcGUpLCB2YWx1ZSk7XG4gIH1cblxuICBvdmVycmlkZSBoYXMoa2V5OiBzdHJpbmcsIHNjb3BlID0gJ2RlZmF1bHQnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmhhcyh0aGlzLm1ha2VLZXkoa2V5LCBzY29wZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYWtlS2V5KGtleTogc3RyaW5nLCBzY29wZSA9ICdkZWZhdWx0Jykge1xuICAgIHJldHVybiBgWyR7c2NvcGV9XSMke2tleX1gO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFZmZlY3QoaWQ6IHN0cmluZywge1xuICBkaXNwYXRjaCA9IGZhbHNlLFxuICBzY29wZSA9ICdkZWZhdWx0JyxcbiAgYWNjZXNzb3IgPSAoYWN0aW9uOiBBY3Rpb24pID0+IGFjdGlvbi5wYXlsb2FkLFxufTogUGFydGlhbDxFZmZlY3RQcm9wcz4gPSB7fSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICB0YXJnZXRbJ19lZmZlY3RNYXAnXSA/Pz0gbmV3IEVmZmVjdE1hcCgpO1xuICAgIHRhcmdldFsnX2VmZmVjdE1hcCddLnNldChpZCwge2tleTogcHJvcGVydHlLZXksIHByb3BzOiB7ZGlzcGF0Y2gsIHNjb3BlLCBhY2Nlc3Nvcn19KTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RGdW5jdGlvbk9wdGlvbnMge1xuICBkaXNwYXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWZmZWN0Q29udGV4dCB7XG4gIGluamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbmV4cG9ydCB0eXBlIEVmZmVjdEZ1bmN0aW9uID0gKHBheWxvYWQ/OiBhbnksIGNvbnRleHQ/OiBFZmZlY3RDb250ZXh0KSA9PiBhbnkgfCBQcm9taXNlPGFueT47XG5leHBvcnQgdHlwZSBFZmZlY3RGdW5jdGlvbkZhY3RvcnkgPSAoaG9zdEluamVjdG9yPzogSW5qZWN0b3IpID0+IEVmZmVjdEZ1bmN0aW9uO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdEVudHJ5IHtcblx0YWN0aW9uSWRzOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgZWZmZWN0RmFjdG9yeT86IEVmZmVjdEZ1bmN0aW9uRmFjdG9yeTtcbiAgb3B0aW9ucz86IEVmZmVjdEZ1bmN0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IEVGRkVDVF9FTlRSWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFZmZlY3RFbnRyeT4oJ0VGRkVDVF9FTlRSWScpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUVmZmVjdChcbiAgQWN0aW9uSWRzOiBzdHJpbmdbXSB8IHN0cmluZyxcbiAgX2VmZmVjdEZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEVmZmVjdEZ1bmN0aW9uLFxuICBvcHRpb25zOiBFZmZlY3RGdW5jdGlvbk9wdGlvbnMgPSB7ZGlzcGF0Y2g6IGZhbHNlfSxcbik6IFByb3ZpZGVyIHtcblx0cmV0dXJuIHtcblx0XHRwcm92aWRlOiBFRkZFQ1RfRU5UUlksXG5cdFx0dXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgY29uc3QgZWZmZWN0RmFjdG9yeSA9IChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaG9zdEluamVjdG9yLCAoKSA9PiBfZWZmZWN0RmFjdG9yeShpbmplY3RvcikpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7IGFjdGlvbklkczogQWN0aW9uSWRzLCBlZmZlY3RGYWN0b3J5LCBvcHRpb25zIH07XG4gICAgfSxcblx0XHRtdWx0aTogdHJ1ZSxcblx0XHRkZXBzOiBbSW5qZWN0b3JdXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RFZmZlY3RFbnRyaWVzKCk6IEVmZmVjdEVudHJ5W10ge1xuXHRyZXR1cm4gaW5qZWN0PEVmZmVjdEVudHJ5W10+KEVGRkVDVF9FTlRSWSwge29wdGlvbmFsOiB0cnVlfSkgPz8gW107XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRWZmZWN0RW50cnlNYXAoaW5qZWN0b3I6IEluamVjdG9yLCBlZmZlY3RFbnRyaWVzOiBFZmZlY3RFbnRyeVtdKSB7XG4gIGNvbnN0IGVmZmVjdEVudHJ5TWFwID0gbmV3IE1hcDxzdHJpbmcsIHtlZmZlY3Q6IEVmZmVjdEZ1bmN0aW9uLCBvcHRpb25zOiBFZmZlY3RGdW5jdGlvbk9wdGlvbnN9PigpO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZWZmZWN0RW50cmllcykge1xuICAgIGNvbnN0IGlkcyA9IEFycmF5LmlzQXJyYXkoZW50cnkuYWN0aW9uSWRzKSA/IGVudHJ5LmFjdGlvbklkcyA6IFtlbnRyeS5hY3Rpb25JZHNdO1xuICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG4gICAgICBjb25zdCBlZmZlY3QgPSAoKSA9PiBlbnRyeS5lZmZlY3RGYWN0b3J5KGluamVjdG9yKTtcbiAgICAgIGVmZmVjdEVudHJ5TWFwLnNldChpZCwgeyBlZmZlY3QsIG9wdGlvbnM6IGVudHJ5Lm9wdGlvbnMgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVmZmVjdEVudHJ5TWFwO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRWZmZWN0UmVkdWNlciB7XG4gIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0cmVhZG9ubHkgZWZmZWN0RW50cmllcyA9IGluamVjdEVmZmVjdEVudHJpZXMoKTtcbiAgcmVhZG9ubHkgZWZmZWN0RW50cnlNYXAgPSBidWlsZEVmZmVjdEVudHJ5TWFwKHRoaXMuaW5qZWN0b3IsIHRoaXMuZWZmZWN0RW50cmllcyk7XG5cblx0YXN5bmMgcmVkdWNlKGFjdGlvbjogQWN0aW9uKTogUHJvbWlzZTxFZmZlY3RGdW5jdGlvbk9wdGlvbnM+IHtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gZW50cnk/LmVmZmVjdCgpKGFjdGlvbi5wYXlsb2FkLCB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk/Lm9wdGlvbnMgPz8ge2Rpc3BhdGNoOiBmYWxzZX07XG4gICAgfVxuICAgIHJldHVybiB7ZGlzcGF0Y2g6IHRydWV9O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RFZmZlY3RSZWR1Y2VyKCkge1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdGNvbnN0IGVmZmVjdEVudHJpZXMgPSBpbmplY3RFZmZlY3RFbnRyaWVzKCk7XG4gIGNvbnN0IGVmZmVjdEVudHJ5TWFwID0gYnVpbGRFZmZlY3RFbnRyeU1hcChpbmplY3RvciwgZWZmZWN0RW50cmllcyk7XG5cbiAgcmV0dXJuIGFzeW5jIChhY3Rpb246IEFjdGlvbikgPT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICBhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGVudHJ5Py5lZmZlY3QoKShhY3Rpb24ucGF5bG9hZCwge2luamVjdG9yOiBpbmplY3Rvcn0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZWZmZWN0RW50cnlNYXAuZ2V0KGFjdGlvbi5pZCk/Lm9wdGlvbnMgPz8ge2Rpc3BhdGNoOiBmYWxzZX07XG4gICAgfVxuICAgIHJldHVybiB7ZGlzcGF0Y2g6IHRydWV9O1xuXHR9XG59XG4iXX0=
@@ -1,6 +1,9 @@
1
1
  export * from './action-store';
2
2
  export * from './action';
3
3
  export * from './effect';
4
- export * from './component-store';
5
4
  export * from './injectable-component';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvcmUvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZWZmZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50LXN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vaW5qZWN0YWJsZS1jb21wb25lbnQnO1xuIl19
5
+ export * from './ng-atomic-component';
6
+ export * from './signals';
7
+ export * from './debug';
8
+ export * from './ng-atomic-debug';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvcmUvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9lZmZlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9pbmplY3RhYmxlLWNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25nLWF0b21pYy1jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWduYWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVidWcnO1xuZXhwb3J0ICogZnJvbSAnLi9uZy1hdG9taWMtZGVidWcnO1xuIl19
@@ -1,7 +1,10 @@
1
- import { DestroyRef, Directive, ElementRef, EventEmitter, Injector, Input, Output, ViewContainerRef, inject } from "@angular/core";
1
+ import { DestroyRef, Directive, ɵoutput, ElementRef, InjectionToken, Injector, ViewContainerRef, inject, input, PLATFORM_ID } from "@angular/core";
2
2
  import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
3
3
  import { reflectComponentType } from "@angular/core";
4
+ import { proxyFakeComputedInputs } from "./signals";
5
+ import { isPlatformBrowser } from "@angular/common";
4
6
  import * as i0 from "@angular/core";
7
+ export const TOKEN = 'Δtkn';
5
8
  export function provideComponent(abstract, typeOrFactory) {
6
9
  async function loadComponentType() {
7
10
  if (typeof typeOrFactory === 'function' && !typeOrFactory.prototype) {
@@ -12,7 +15,15 @@ export function provideComponent(abstract, typeOrFactory) {
12
15
  }
13
16
  }
14
17
  ;
15
- return { provide: abstract['TOKEN'], useValue: loadComponentType };
18
+ return { provide: abstract[TOKEN], useValue: loadComponentType };
19
+ }
20
+ export function TokenizedType() {
21
+ return function (type) {
22
+ type[TOKEN] = new InjectionToken(type.name);
23
+ };
24
+ }
25
+ export function getToken(type) {
26
+ return type[TOKEN];
16
27
  }
17
28
  export var HostType;
18
29
  (function (HostType) {
@@ -24,11 +35,12 @@ export function getMeta(type) {
24
35
  }
25
36
  export function getInputs(type) {
26
37
  return Object.entries(getMeta(type)['inputs'])
27
- .map(([propName, templateName]) => ({ propName, templateName }));
38
+ .map(([templateName, [propName]]) => ({ propName, templateName }));
28
39
  }
29
40
  export function getOutputs(type) {
30
- return Object.entries(getMeta(type)['outputs'])
31
- .map(([propName, templateName]) => ({ propName, templateName }));
41
+ const meta = getMeta(type);
42
+ return Object.entries(meta['outputs'])
43
+ .map(([templateName, propName]) => ({ propName, templateName }));
32
44
  }
33
45
  export function getInputsByComponentRef(cmp) {
34
46
  return getInputs(cmp.instance.constructor);
@@ -37,77 +49,94 @@ export function getOutputsByInstance(cmp) {
37
49
  return getOutputs(cmp.instance.constructor);
38
50
  }
39
51
  export class InjectableComponent {
40
- constructor() {
41
- this.#outlet = inject(ViewContainerRef);
42
- this.#injector = inject(Injector);
43
- this.#destroy$ = inject(DestroyRef);
44
- this.#el = inject(ElementRef);
45
- this.#component = null;
46
- this.#componentMirror = null;
47
- this.injectable = false;
48
- this.action = new EventEmitter();
52
+ #platformId = inject(PLATFORM_ID);
53
+ #viewContainerRef = inject(ViewContainerRef);
54
+ #injector = inject(Injector);
55
+ #destroyRef = inject(DestroyRef);
56
+ #el = inject(ElementRef);
57
+ #component = null;
58
+ #componentMirror = null;
59
+ injectable = input(false, { transform: (value) => value === '' ? true : value, alias: 'injectable' });
60
+ __action = ɵoutput({ alias: 'action' });
61
+ dispatch(action) {
62
+ this.__action.emit(action);
63
+ }
64
+ get #inputs() {
65
+ const abs = getInputs(this.constructor);
66
+ return abs;
67
+ }
68
+ get #outputs() {
69
+ const abs = getOutputs(this.constructor);
70
+ return abs;
71
+ // const impl = this.#componentMirror!.outputs;
72
+ // return abs.filter(abstractOutput => impl.some(implOutput => implOutput.templateName === abstractOutput.templateName));
49
73
  }
50
- #outlet;
51
- #injector;
52
- #destroy$;
53
- #el;
54
- #component;
55
- #componentMirror;
56
74
  #setAttribute() {
57
75
  const hostElement = this.#component.hostView.rootNodes[0];
58
76
  const attributes = this.#el.nativeElement.attributes;
59
77
  for (let i = 0; i < attributes.length; i++) {
60
78
  const attr = attributes.item(i);
61
- if (attr.name.startsWith('_ngcontent')) {
79
+ if (attr.name === 'injectable') {
80
+ hostElement.setAttribute('injected', '');
81
+ }
82
+ else {
62
83
  hostElement.setAttribute(attr.name, attr.value);
63
84
  }
64
85
  }
65
86
  }
66
87
  #bindInputs() {
67
- // for (const input of this.#componentMirror!.inputs) {
68
- // if (input.propName === 'injectable') return;
69
- // this.#component!.setInput(input.propName, (this as any)[input.propName]);
70
- // }
71
- for (const input of getInputs(this.constructor)) {
88
+ for (const input of this.#inputs) {
72
89
  if (input.propName === 'injectable')
73
- return;
74
- this.#component.setInput(input.propName, this[input.propName]);
90
+ continue;
91
+ const valueOrInputValueFn = this[input.propName];
92
+ const value = typeof valueOrInputValueFn === 'function' ? valueOrInputValueFn() : valueOrInputValueFn;
93
+ this.#component.setInput(input.templateName, value);
75
94
  }
76
95
  }
96
+ get propNames() {
97
+ return this.#inputs.map(input => input.propName);
98
+ }
99
+ proxyFakeComputedInputs() {
100
+ proxyFakeComputedInputs(this, this.propNames);
101
+ }
77
102
  #bindOutputs() {
78
- // for (const output of this.#componentMirror!.outputs) {
79
- // (this.#component!.instance as any)[output.templateName].pipe(
80
- // takeUntilDestroyed(this.#destroy$)
81
- // ).subscribe((value: any) => (this as any)[output.templateName].emit(value));
82
- // }
83
- for (const output of getOutputs(this.constructor)) {
84
- this.#component.instance[output.templateName]?.pipe(takeUntilDestroyed(this.#destroy$)).subscribe((value) => {
85
- console.debug('output=>>', output.templateName, value);
86
- this[output.templateName].emit(value);
103
+ for (const output of this.#outputs) {
104
+ this.#component.instance[output.propName]?.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value) => this[output.propName].emit(value));
105
+ }
106
+ }
107
+ #bindEvents() {
108
+ for (const name of ['click']) {
109
+ this.#component.injector.get(ElementRef).nativeElement.addEventListener(name, (event) => {
110
+ this.#el.nativeElement.dispatchEvent(new Event(name, {}));
87
111
  });
88
112
  }
89
113
  }
114
+ constructor() {
115
+ this.proxyFakeComputedInputs();
116
+ }
90
117
  ngOnInit() {
91
- if (this.injectable) {
92
- this.#injector.get(this.constructor['TOKEN'])().then(type => {
93
- this.#component = this.#outlet.createComponent(type);
118
+ if (this.injectable() && isPlatformBrowser(this.#platformId)) {
119
+ this.#injector.get(getToken(this.constructor))().then(type => {
120
+ this.#component = this.#viewContainerRef.createComponent(type, {
121
+ projectableNodes: [
122
+ Array.from(this.#el.nativeElement.childNodes)
123
+ ],
124
+ });
94
125
  this.#componentMirror = reflectComponentType(type);
95
126
  this.#bindInputs();
96
127
  this.#bindOutputs();
128
+ this.#bindEvents();
97
129
  this.#setAttribute();
130
+ // this.#viewContainerRef.remove(0);
131
+ this.#component.changeDetectorRef.detectChanges();
132
+ // this.#el.nativeElement.remove();
98
133
  });
99
134
  }
135
+ this.proxyFakeComputedInputs();
100
136
  }
101
137
  ngOnChanges(simpleChanges) {
102
- if (this.injectable && this.#componentMirror) {
103
- // for (const input of this.#componentMirror.inputs) {
104
- // if (input.propName === 'injectable') return;
105
- // const change = simpleChanges[input.propName] as SimpleChange;
106
- // if (change) {
107
- // this.#component!.setInput(input.propName, change.currentValue);
108
- // }
109
- // }
110
- for (const input of getInputs(this.constructor)) {
138
+ if (this.injectable() && this.#componentMirror) {
139
+ for (const input of this.#inputs) {
111
140
  if (input.propName === 'injectable')
112
141
  return;
113
142
  const change = simpleChanges[input.propName];
@@ -117,16 +146,14 @@ export class InjectableComponent {
117
146
  }
118
147
  }
119
148
  }
120
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InjectableComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
121
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "16.2.12", type: InjectableComponent, isStandalone: true, inputs: { injectable: ["injectable", "injectable", (value) => value === '' ? true : value] }, outputs: { action: "action" }, usesOnChanges: true, ngImport: i0 }); }
149
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InjectableComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
150
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.2.2", type: InjectableComponent, isStandalone: true, inputs: { injectable: { classPropertyName: "injectable", publicName: "injectable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { __action: "action" }, usesOnChanges: true, ngImport: i0 });
122
151
  }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InjectableComponent, decorators: [{
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InjectableComponent, decorators: [{
124
153
  type: Directive,
125
- args: [{ standalone: true }]
126
- }], propDecorators: { injectable: [{
127
- type: Input,
128
- args: [{ transform: (value) => value === '' ? true : value }]
129
- }], action: [{
130
- type: Output
131
- }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvcmUvc3JjL2xpYi9pbmplY3RhYmxlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFtQixZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQXFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0TixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUXJELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsUUFBbUIsRUFDbkIsYUFBNkM7SUFFN0MsS0FBSyxVQUFVLGlCQUFpQjtRQUM5QixJQUFJLE9BQU8sYUFBYSxLQUFLLFVBQVUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUU7WUFDbkUsT0FBTyxNQUFPLGFBQW1DLEVBQUUsQ0FBQztTQUNyRDthQUFNO1lBQ0wsT0FBTyxhQUEyQixDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUFBLENBQUM7SUFDRixPQUFPLEVBQUUsT0FBTyxFQUFHLFFBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7QUFDOUUsQ0FBQztBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsNkJBQVksQ0FBQTtJQUNaLDZCQUFZLENBQUE7QUFDZCxDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkI7QUFJRCxNQUFNLFVBQVUsT0FBTyxDQUFJLElBQWE7SUFDdEMsT0FBUSxJQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFLLElBQVksQ0FBQyxRQUFRLENB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LElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzVDLHNEQUFzRDtZQUN0RCxpREFBaUQ7WUFDakQsa0VBQWtFO1lBQ2xFLGtCQUFrQjtZQUNsQixzRUFBc0U7WUFDdEUsTUFBTTtZQUNOLElBQUk7WUFFSixLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBc0IsQ0FBQyxFQUFFO2dCQUMxRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssWUFBWTtvQkFBRSxPQUFPO2dCQUM1QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBaUIsQ0FBQztnQkFDN0QsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLFVBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2hFO2FBQ0Y7U0FDRjtJQUNILENBQUM7K0dBOUVtQixtQkFBbUI7bUdBQW5CLG1CQUFtQix5RUFnRnBCLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7OzRGQWhGMUMsbUJBQW1CO2tCQUR4QyxTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs4QkFrRnJCLFVBQVU7c0JBRGpCLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDO2dCQUlyRCxNQUFNO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRNaXJyb3IsIENvbXBvbmVudFJlZiwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVHlwZSwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgcmVmbGVjdENvbXBvbmVudFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9uXCI7XG5pbXBvcnQgeyBOZ0F0b21pY0NvbXBvbmVudFN0b3JlIH0gZnJvbSBcIi4vY29tcG9uZW50LXN0b3JlXCI7XG5cbmV4cG9ydCB0eXBlIFR5cGVGYWN0b3J5QXN5bmM8VD4gPSAoKSA9PiBQcm9taXNlPFR5cGU8VD4+O1xuXG5leHBvcnQgdHlwZSBUeXBlRmFjdG9yeTxUPiA9ICgpID0+IChUeXBlPFQ+IHwgUHJvbWlzZTxUeXBlPFQ+Pik7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29tcG9uZW50PEFCUyA9IGFueSwgSU1QTCA9IGFueT4oXG4gIGFic3RyYWN0OiBUeXBlPEFCUz4sXG4gIHR5cGVPckZhY3Rvcnk6IFR5cGU8SU1QTD4gfCBUeXBlRmFjdG9yeTxJTVBMPixcbikge1xuICBhc3luYyBmdW5jdGlvbiBsb2FkQ29tcG9uZW50VHlwZSgpOiBQcm9taXNlPFR5cGU8SU1QTD4+IHtcbiAgICBpZiAodHlwZW9mIHR5cGVPckZhY3RvcnkgPT09ICdmdW5jdGlvbicgJiYgIXR5cGVPckZhY3RvcnkucHJvdG90eXBlKSB7XG4gICAgICByZXR1cm4gYXdhaXQgKHR5cGVPckZhY3RvcnkgYXMgVHlwZUZhY3Rvcnk8SU1QTD4pKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0eXBlT3JGYWN0b3J5IGFzIFR5cGU8SU1QTD47XG4gICAgfVxuICB9O1xuICByZXR1cm4geyBwcm92aWRlOiAoYWJzdHJhY3QgYXMgYW55KVsnVE9LRU4nXSwgdXNlVmFsdWU6IGxvYWRDb21wb25lbnRUeXBlIH07XG59XG5cbmV4cG9ydCBlbnVtIEhvc3RUeXBlIHtcbiAgRGlyID0gJ8m1ZGlyJyxcbiAgQ21wID0gJ8m1Y21wJyxcbn1cblxudHlwZSBJTyA9IHtwcm9wTmFtZTogc3RyaW5nLCB0ZW1wbGF0ZU5hbWU6IHN0cmluZ307XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhPFQ+KHR5cGU6IFR5cGU8VD4pIHtcbiAgcmV0dXJuICh0eXBlIGFzIGFueSlbSG9zdFR5cGUuQ21wXSB8fCAodHlwZSBhcyBhbnkpW0hvc3RUeXBlLkRpcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dHM8VD4odHlwZTogVHlwZTxUPik6IElPW10ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXM8c3RyaW5nPihnZXRNZXRhKHR5cGUpWydpbnB1dHMnXSlcbiAgICAubWFwKChbcHJvcE5hbWUsIHRlbXBsYXRlTmFtZV0pID0+ICh7cHJvcE5hbWUsIHRlbXBsYXRlTmFtZX0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE91dHB1dHM8VD4odHlwZTogVHlwZTxUPik6IElPW10ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXM8c3RyaW5nPihnZXRNZXRhKHR5cGUpWydvdXRwdXRzJ10pXG4gICAgLm1hcCgoW3Byb3BOYW1lLCB0ZW1wbGF0ZU5hbWVdKSA9PiAoe3Byb3BOYW1lLCB0ZW1wbGF0ZU5hbWV9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dHNCeUNvbXBvbmVudFJlZjxUIGV4dGVuZHMge30gPSBhbnk+KGNtcDogQ29tcG9uZW50UmVmPFQ+KTogSU9bXSB7XG4gIHJldHVybiBnZXRJbnB1dHMoY21wLmluc3RhbmNlLmNvbnN0cnVjdG9yIGFzIFR5cGU8VD4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0cHV0c0J5SW5zdGFuY2U8VCBleHRlbmRzIHt9ID0gYW55PihjbXA6IENvbXBvbmVudFJlZjxUPik6IElPW10ge1xuICByZXR1cm4gZ2V0T3V0cHV0cyhjbXAuaW5zdGFuY2UuY29uc3RydWN0b3IgYXMgVHlwZTxUPik7XG59XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5qZWN0YWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnRTdG9yZSA9IGFueT4ge1xuICByZWFkb25seSAjb3V0bGV0ID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHJlYWRvbmx5ICNlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI2NvbXBvbmVudDogQ29tcG9uZW50UmVmPFQ+IHwgbnVsbCA9IG51bGw7XG4gICNjb21wb25lbnRNaXJyb3I6IENvbXBvbmVudE1pcnJvcjxUPiB8IG51bGwgPSBudWxsO1xuXG4gICNzZXRBdHRyaWJ1dGUoKSB7XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSAodGhpcy4jY29tcG9uZW50IS5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGF0dHJpYnV0ZXM6IE5hbWVkTm9kZU1hcCA9IHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGF0dHIgPSBhdHRyaWJ1dGVzLml0ZW0oaSkhO1xuICAgICAgaWYgKGF0dHIubmFtZS5zdGFydHNXaXRoKCdfbmdjb250ZW50JykpIHtcbiAgICAgICAgaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHIubmFtZSwgYXR0ci52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2JpbmRJbnB1dHMoKSB7XG4gICAgLy8gZm9yIChjb25zdCBpbnB1dCBvZiB0aGlzLiNjb21wb25lbnRNaXJyb3IhLmlucHV0cykge1xuICAgIC8vICAgaWYgKGlucHV0LnByb3BOYW1lID09PSAnaW5qZWN0YWJsZScpIHJldHVybjtcbiAgICAvLyAgIHRoaXMuI2NvbXBvbmVudCEuc2V0SW5wdXQoaW5wdXQucHJvcE5hbWUsICh0aGlzIGFzIGFueSlbaW5wdXQucHJvcE5hbWVdKTtcbiAgICAvLyB9XG5cbiAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGdldElucHV0cyh0aGlzLmNvbnN0cnVjdG9yIGFzIFR5cGU8VD4pKSB7XG4gICAgICBpZiAoaW5wdXQucHJvcE5hbWUgPT09ICdpbmplY3RhYmxlJykgcmV0dXJuO1xuICAgICAgdGhpcy4jY29tcG9uZW50IS5zZXRJbnB1dChpbnB1dC5wcm9wTmFtZSwgKHRoaXMgYXMgYW55KVtpbnB1dC5wcm9wTmFtZV0pO1xuICAgIH1cbiAgfVxuXG4gICNiaW5kT3V0cHV0cygpIHtcbiAgICAvLyBmb3IgKGNvbnN0IG91dHB1dCBvZiB0aGlzLiNjb21wb25lbnRNaXJyb3IhLm91dHB1dHMpIHtcbiAgICAvLyAgICh0aGlzLiNjb21wb25lbnQhLmluc3RhbmNlIGFzIGFueSlbb3V0cHV0LnRlbXBsYXRlTmFtZV0ucGlwZShcbiAgICAvLyAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3kkKVxuICAgIC8vICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+ICh0aGlzIGFzIGFueSlbb3V0cHV0LnRlbXBsYXRlTmFtZV0uZW1pdCh2YWx1ZSkpO1xuICAgIC8vIH1cblxuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGdldE91dHB1dHModGhpcy5jb25zdHJ1Y3RvciBhcyBUeXBlPFQ+KSkge1xuICAgICAgKHRoaXMuI2NvbXBvbmVudCEuaW5zdGFuY2UgYXMgYW55KVtvdXRwdXQudGVtcGxhdGVOYW1lXT8ucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3kkKVxuICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1Zygnb3V0cHV0PT4+Jywgb3V0cHV0LnRlbXBsYXRlTmFtZSwgdmFsdWUpO1xuICAgICAgICAodGhpcyBhcyBhbnkpW291dHB1dC50ZW1wbGF0ZU5hbWVdLmVtaXQodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5qZWN0YWJsZSkge1xuICAgICAgdGhpcy4jaW5qZWN0b3IuZ2V0PFR5cGVGYWN0b3J5QXN5bmM8VD4+KCh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSlbJ1RPS0VOJ10pKCkudGhlbih0eXBlID0+IHtcbiAgICAgICAgdGhpcy4jY29tcG9uZW50ID0gdGhpcy4jb3V0bGV0LmNyZWF0ZUNvbXBvbmVudCh0eXBlKTtcbiAgICAgICAgdGhpcy4jY29tcG9uZW50TWlycm9yID0gcmVmbGVjdENvbXBvbmVudFR5cGUodHlwZSk7XG4gICAgICAgIHRoaXMuI2JpbmRJbnB1dHMoKTtcbiAgICAgICAgdGhpcy4jYmluZE91dHB1dHMoKTtcbiAgICAgICAgdGhpcy4jc2V0QXR0cmlidXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuaW5qZWN0YWJsZSAmJiB0aGlzLiNjb21wb25lbnRNaXJyb3IpIHtcbiAgICAgIC8vIGZvciAoY29uc3QgaW5wdXQgb2YgdGhpcy4jY29tcG9uZW50TWlycm9yLmlucHV0cykge1xuICAgICAgLy8gICBpZiAoaW5wdXQucHJvcE5hbWUgPT09ICdpbmplY3RhYmxlJykgcmV0dXJuO1xuICAgICAgLy8gICBjb25zdCBjaGFuZ2UgPSBzaW1wbGVDaGFuZ2VzW2lucHV0LnByb3BOYW1lXSBhcyBTaW1wbGVDaGFuZ2U7XG4gICAgICAvLyAgIGlmIChjaGFuZ2UpIHtcbiAgICAgIC8vICAgICB0aGlzLiNjb21wb25lbnQhLnNldElucHV0KGlucHV0LnByb3BOYW1lLCBjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuXG4gICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGdldElucHV0cyh0aGlzLmNvbnN0cnVjdG9yIGFzIFR5cGU8VD4pKSB7XG4gICAgICAgIGlmIChpbnB1dC5wcm9wTmFtZSA9PT0gJ2luamVjdGFibGUnKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHNpbXBsZUNoYW5nZXNbaW5wdXQucHJvcE5hbWVdIGFzIFNpbXBsZUNoYW5nZTtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgIHRoaXMuI2NvbXBvbmVudCEuc2V0SW5wdXQoaW5wdXQucHJvcE5hbWUsIGNoYW5nZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQElucHV0KHt0cmFuc2Zvcm06ICh2YWx1ZTogYW55KSA9PiB2YWx1ZSA9PT0gJycgPyB0cnVlIDogdmFsdWV9KVxuICBwcml2YXRlIGluamVjdGFibGUgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcHJvdGVjdGVkIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aW9uPigpO1xufVxuIl19
154
+ args: [{
155
+ standalone: true,
156
+ // host: {ngSkipHydration: 'true'}
157
+ }]
158
+ }], ctorParameters: () => [] });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvcmUvc3JjL2xpYi9pbmplY3RhYmxlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBbUIsY0FBYyxFQUFFLFFBQVEsRUFBcUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdE8sT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTXJELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFcEQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUU1QixNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFFBQW1CLEVBQ25CLGFBQTZDO0lBRTdDLEtBQUssVUFBVSxpQkFBaUI7UUFDOUIsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFO1lBQ25FLE9BQU8sTUFBTyxhQUFtQyxFQUFFLENBQUM7U0FDckQ7YUFBTTtZQUNMLE9BQU8sYUFBMkIsQ0FBQztTQUNwQztJQUNILENBQUM7SUFBQSxDQUFDO0lBQ0YsT0FBTyxFQUFFLE9BQU8sRUFBRyxRQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0FBQzVFLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLFVBQStCLElBQU87UUFDMUMsSUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksY0FBYyxDQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFlO0lBQ3RDLE9BQVEsSUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxNQUFNLENBQU4sSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2xCLDZCQUFZLENBQUE7SUFDWiw2QkFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CO0FBSUQsTUFBTSxVQUFVLE9BQU8sQ0FBSSxJQUFhO0lBQ3RDLE9BQVEsSUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSyxJQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFJLElBQWE7SUFDeEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFTLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFJLElBQWE7SUFDekMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0MsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQXFCLEdBQW9CO0lBQzlFLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBc0IsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQXFCLEdBQW9CO0lBQzNFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBc0IsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFNRCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLEdBQUcsR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNELFVBQVUsR0FBMkIsSUFBSSxDQUFDO0lBQzFDLGdCQUFnQixHQUE4QixJQUFJLENBQUM7SUFFMUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBQyxTQUFTLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQ3pHLFFBQVEsR0FBRyxPQUFPLENBQVMsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztJQUV2RCxRQUFRLENBQUMsTUFBYztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFzQixDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFzQixDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUM7UUFDWCwrQ0FBK0M7UUFDL0MseUhBQXlIO0lBQzNILENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxXQUFXLEdBQUksSUFBSSxDQUFDLFVBQVcsQ0FBQyxRQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDcEcsTUFBTSxVQUFVLEdBQWlCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUNuRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUU7Z0JBQzlCLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakQ7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxZQUFZO2dCQUFFLFNBQVM7WUFDOUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELE1BQU0sS0FBSyxHQUFHLE9BQU8sbUJBQW1CLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztZQUN0RyxJQUFJLENBQUMsVUFBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELHVCQUF1QjtRQUNyQix1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxZQUFZO1FBQ1YsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFXLENBQUMsUUFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUN2RCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3JDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7UUFDRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBc0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRTtvQkFDN0QsZ0JBQWdCLEVBQUU7d0JBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO3FCQUM5QztpQkFDRixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLG9DQUFvQztnQkFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbEQsbUNBQW1DO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVyxDQUFDLGFBQTRCO1FBQ3RDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM5QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxZQUFZO29CQUFFLE9BQU87Z0JBQzVDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFpQixDQUFDO2dCQUM3RCxJQUFJLE1BQU0sRUFBRTtvQkFDVixJQUFJLENBQUMsVUFBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDaEU7YUFDRjtTQUNGO0lBQ0gsQ0FBQzt1R0E3R1UsbUJBQW1COzJGQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGtDQUFrQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRNaXJyb3IsIENvbXBvbmVudFJlZiwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCDJtW91dHB1dCwgRWxlbWVudFJlZiwgRW1iZWRkZWRWaWV3UmVmLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVHlwZSwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0LCBpbnB1dCwgUExBVEZPUk1fSUQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyByZWZsZWN0Q29tcG9uZW50VHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25cIjtcblxuZXhwb3J0IHR5cGUgVHlwZUZhY3RvcnlBc3luYzxUPiA9ICgpID0+IFByb21pc2U8VHlwZTxUPj47XG5cbmV4cG9ydCB0eXBlIFR5cGVGYWN0b3J5PFQ+ID0gKCkgPT4gKFR5cGU8VD4gfCBQcm9taXNlPFR5cGU8VD4+KTtcbmltcG9ydCB7IHByb3h5RmFrZUNvbXB1dGVkSW5wdXRzIH0gZnJvbSBcIi4vc2lnbmFsc1wiO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbmV4cG9ydCBjb25zdCBUT0tFTiA9ICfOlHRrbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29tcG9uZW50PEFCUyA9IGFueSwgSU1QTCA9IGFueT4oXG4gIGFic3RyYWN0OiBUeXBlPEFCUz4sXG4gIHR5cGVPckZhY3Rvcnk6IFR5cGU8SU1QTD4gfCBUeXBlRmFjdG9yeTxJTVBMPixcbikge1xuICBhc3luYyBmdW5jdGlvbiBsb2FkQ29tcG9uZW50VHlwZSgpOiBQcm9taXNlPFR5cGU8SU1QTD4+IHtcbiAgICBpZiAodHlwZW9mIHR5cGVPckZhY3RvcnkgPT09ICdmdW5jdGlvbicgJiYgIXR5cGVPckZhY3RvcnkucHJvdG90eXBlKSB7XG4gICAgICByZXR1cm4gYXdhaXQgKHR5cGVPckZhY3RvcnkgYXMgVHlwZUZhY3Rvcnk8SU1QTD4pKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0eXBlT3JGYWN0b3J5IGFzIFR5cGU8SU1QTD47XG4gICAgfVxuICB9O1xuICByZXR1cm4geyBwcm92aWRlOiAoYWJzdHJhY3QgYXMgYW55KVtUT0tFTl0sIHVzZVZhbHVlOiBsb2FkQ29tcG9uZW50VHlwZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVG9rZW5pemVkVHlwZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgVHlwZTxhbnk+Pih0eXBlOiBUKSB7XG4gICAgKHR5cGUgYXMgYW55KVtUT0tFTl0gPSBuZXcgSW5qZWN0aW9uVG9rZW48VD4odHlwZS5uYW1lKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuKHR5cGU6IFR5cGU8YW55Pikge1xuICByZXR1cm4gKHR5cGUgYXMgYW55KVtUT0tFTl07XG59XG5cbmV4cG9ydCBlbnVtIEhvc3RUeXBlIHtcbiAgRGlyID0gJ8m1ZGlyJyxcbiAgQ21wID0gJ8m1Y21wJyxcbn1cblxudHlwZSBJTyA9IHtwcm9wTmFtZTogc3RyaW5nLCB0ZW1wbGF0ZU5hbWU6IHN0cmluZ307XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXRhPFQ+KHR5cGU6IFR5cGU8VD4pIHtcbiAgcmV0dXJuICh0eXBlIGFzIGFueSlbSG9zdFR5cGUuQ21wXSB8fCAodHlwZSBhcyBhbnkpW0hvc3RUeXBlLkRpcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dHM8VD4odHlwZTogVHlwZTxUPik6IElPW10ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXM8c3RyaW5nPihnZXRNZXRhKHR5cGUpWydpbnB1dHMnXSlcbiAgICAubWFwKChbdGVtcGxhdGVOYW1lLCBbcHJvcE5hbWVdXSkgPT4gKHtwcm9wTmFtZSwgdGVtcGxhdGVOYW1lfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0cHV0czxUPih0eXBlOiBUeXBlPFQ+KTogSU9bXSB7XG4gIGNvbnN0IG1ldGEgPSBnZXRNZXRhKHR5cGUpO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXM8c3RyaW5nPihtZXRhWydvdXRwdXRzJ10pXG4gICAgLm1hcCgoW3RlbXBsYXRlTmFtZSwgcHJvcE5hbWVdKSA9PiAoe3Byb3BOYW1lLCB0ZW1wbGF0ZU5hbWV9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnB1dHNCeUNvbXBvbmVudFJlZjxUIGV4dGVuZHMge30gPSBhbnk+KGNtcDogQ29tcG9uZW50UmVmPFQ+KTogSU9bXSB7XG4gIHJldHVybiBnZXRJbnB1dHMoY21wLmluc3RhbmNlLmNvbnN0cnVjdG9yIGFzIFR5cGU8VD4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3V0cHV0c0J5SW5zdGFuY2U8VCBleHRlbmRzIHt9ID0gYW55PihjbXA6IENvbXBvbmVudFJlZjxUPik6IElPW10ge1xuICByZXR1cm4gZ2V0T3V0cHV0cyhjbXAuaW5zdGFuY2UuY29uc3RydWN0b3IgYXMgVHlwZTxUPik7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyBob3N0OiB7bmdTa2lwSHlkcmF0aW9uOiAndHJ1ZSd9XG59KVxuZXhwb3J0IGNsYXNzIEluamVjdGFibGVDb21wb25lbnQ8VCA9IGFueT4ge1xuICByZWFkb25seSAjcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHJlYWRvbmx5ICN2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcmVhZG9ubHkgI2VsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI2NvbXBvbmVudDogQ29tcG9uZW50UmVmPFQ+IHwgbnVsbCA9IG51bGw7XG4gICNjb21wb25lbnRNaXJyb3I6IENvbXBvbmVudE1pcnJvcjxUPiB8IG51bGwgPSBudWxsO1xuXG4gIHJlYWRvbmx5IGluamVjdGFibGUgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogKHZhbHVlOiBhbnkpID0+IHZhbHVlID09PSAnJyA/IHRydWUgOiB2YWx1ZSwgYWxpYXM6ICdpbmplY3RhYmxlJ30pO1xuICByZWFkb25seSBfX2FjdGlvbiA9IMm1b3V0cHV0PEFjdGlvbj4oe2FsaWFzOiAnYWN0aW9uJ30pO1xuXG4gIGRpc3BhdGNoKGFjdGlvbjogQWN0aW9uKSB7XG4gICAgdGhpcy5fX2FjdGlvbi5lbWl0KGFjdGlvbik7XG4gIH1cblxuICBnZXQgI2lucHV0cygpOiBJT1tdIHtcbiAgICBjb25zdCBhYnMgPSBnZXRJbnB1dHModGhpcy5jb25zdHJ1Y3RvciBhcyBUeXBlPFQ+KTtcbiAgICByZXR1cm4gYWJzO1xuICB9XG5cbiAgZ2V0ICNvdXRwdXRzKCk6IElPW10ge1xuICAgIGNvbnN0IGFicyA9IGdldE91dHB1dHModGhpcy5jb25zdHJ1Y3RvciBhcyBUeXBlPFQ+KTtcbiAgICByZXR1cm4gYWJzO1xuICAgIC8vIGNvbnN0IGltcGwgPSB0aGlzLiNjb21wb25lbnRNaXJyb3IhLm91dHB1dHM7XG4gICAgLy8gcmV0dXJuIGFicy5maWx0ZXIoYWJzdHJhY3RPdXRwdXQgPT4gaW1wbC5zb21lKGltcGxPdXRwdXQgPT4gaW1wbE91dHB1dC50ZW1wbGF0ZU5hbWUgPT09IGFic3RyYWN0T3V0cHV0LnRlbXBsYXRlTmFtZSkpO1xuICB9XG5cbiAgI3NldEF0dHJpYnV0ZSgpIHtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9ICh0aGlzLiNjb21wb25lbnQhLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgYXR0cmlidXRlczogTmFtZWROb2RlTWFwID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYXR0ciA9IGF0dHJpYnV0ZXMuaXRlbShpKSE7XG4gICAgICBpZiAoYXR0ci5uYW1lID09PSAnaW5qZWN0YWJsZScpIHtcbiAgICAgICAgaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdpbmplY3RlZCcsICcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhvc3RFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLm5hbWUsIGF0dHIudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNiaW5kSW5wdXRzKCkge1xuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgdGhpcy4jaW5wdXRzKSB7XG4gICAgICBpZiAoaW5wdXQucHJvcE5hbWUgPT09ICdpbmplY3RhYmxlJykgY29udGludWU7XG4gICAgICBjb25zdCB2YWx1ZU9ySW5wdXRWYWx1ZUZuID0gdGhpc1tpbnB1dC5wcm9wTmFtZV07XG4gICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiB2YWx1ZU9ySW5wdXRWYWx1ZUZuID09PSAnZnVuY3Rpb24nID8gdmFsdWVPcklucHV0VmFsdWVGbigpIDogdmFsdWVPcklucHV0VmFsdWVGbjtcbiAgICAgIHRoaXMuI2NvbXBvbmVudCEuc2V0SW5wdXQoaW5wdXQudGVtcGxhdGVOYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHByb3BOYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy4jaW5wdXRzLm1hcChpbnB1dCA9PiBpbnB1dC5wcm9wTmFtZSk7XG4gIH1cblxuICBwcm94eUZha2VDb21wdXRlZElucHV0cygpIHtcbiAgICBwcm94eUZha2VDb21wdXRlZElucHV0cyh0aGlzLCB0aGlzLnByb3BOYW1lcyk7XG4gIH1cblxuICAjYmluZE91dHB1dHMoKSB7XG4gICAgZm9yIChjb25zdCBvdXRwdXQgb2YgdGhpcy4jb3V0cHV0cykge1xuICAgICAgKHRoaXMuI2NvbXBvbmVudCEuaW5zdGFuY2UgYXMgYW55KVtvdXRwdXQucHJvcE5hbWVdPy5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICAgICkuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB0aGlzW291dHB1dC5wcm9wTmFtZV0uZW1pdCh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICNiaW5kRXZlbnRzKCkge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBbJ2NsaWNrJ10pIHtcbiAgICAgIHRoaXMuI2NvbXBvbmVudC5pbmplY3Rvci5nZXQoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLiNlbC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KG5hbWUsIHt9KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucHJveHlGYWtlQ29tcHV0ZWRJbnB1dHMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmluamVjdGFibGUoKSAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLiNwbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy4jaW5qZWN0b3IuZ2V0PFR5cGVGYWN0b3J5QXN5bmM8VD4+KGdldFRva2VuKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KSkoKS50aGVuKHR5cGUgPT4ge1xuICAgICAgICB0aGlzLiNjb21wb25lbnQgPSB0aGlzLiN2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudCh0eXBlLCB7XG4gICAgICAgICAgcHJvamVjdGFibGVOb2RlczogW1xuICAgICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLiNlbC5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMpXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuI2NvbXBvbmVudE1pcnJvciA9IHJlZmxlY3RDb21wb25lbnRUeXBlKHR5cGUpO1xuICAgICAgICB0aGlzLiNiaW5kSW5wdXRzKCk7XG4gICAgICAgIHRoaXMuI2JpbmRPdXRwdXRzKCk7XG4gICAgICAgIHRoaXMuI2JpbmRFdmVudHMoKTtcbiAgICAgICAgdGhpcy4jc2V0QXR0cmlidXRlKCk7XG4gICAgICAgIC8vIHRoaXMuI3ZpZXdDb250YWluZXJSZWYucmVtb3ZlKDApO1xuICAgICAgICB0aGlzLiNjb21wb25lbnQuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAvLyB0aGlzLiNlbC5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJveHlGYWtlQ29tcHV0ZWRJbnB1dHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5pbmplY3RhYmxlKCkgJiYgdGhpcy4jY29tcG9uZW50TWlycm9yKSB7XG4gICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIHRoaXMuI2lucHV0cykge1xuICAgICAgICBpZiAoaW5wdXQucHJvcE5hbWUgPT09ICdpbmplY3RhYmxlJykgcmV0dXJuO1xuICAgICAgICBjb25zdCBjaGFuZ2UgPSBzaW1wbGVDaGFuZ2VzW2lucHV0LnByb3BOYW1lXSBhcyBTaW1wbGVDaGFuZ2U7XG4gICAgICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgICAgICB0aGlzLiNjb21wb25lbnQhLnNldElucHV0KGlucHV0LnByb3BOYW1lLCBjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19