@odx/angular 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +20 -0
  3. package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +10 -6
  4. package/cdk/expandable/lib/directives/index.d.ts +1 -1
  5. package/cdk/expandable/lib/expandable.module.d.ts +1 -1
  6. package/cdk/expandable/lib/expandable.tokens.d.ts +2 -1
  7. package/cdk/expandable/lib/facade/expandable-container.d.ts +6 -3
  8. package/cdk/expandable/lib/facade/expandable-item.d.ts +6 -3
  9. package/components/accordion/lib/accordion.component.d.ts +3 -3
  10. package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +4 -3
  11. package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +4 -7
  12. package/components/list/lib/components/list-item/list-item.component.d.ts +1 -1
  13. package/components/list/lib/list.component.d.ts +3 -4
  14. package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +4 -3
  15. package/components/rich-list/lib/rich-list.component.d.ts +3 -4
  16. package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +59 -0
  17. package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +27 -10
  18. package/esm2022/cdk/expandable/lib/directives/index.mjs +2 -2
  19. package/esm2022/cdk/expandable/lib/expandable.tokens.mjs +2 -1
  20. package/esm2022/cdk/expandable/lib/facade/expandable-container.mjs +1 -1
  21. package/esm2022/cdk/expandable/lib/facade/expandable-item.mjs +1 -1
  22. package/esm2022/components/accordion/lib/accordion.component.mjs +9 -11
  23. package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +17 -17
  24. package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +16 -31
  25. package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +7 -8
  26. package/esm2022/components/list/lib/list.component.mjs +11 -15
  27. package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +17 -17
  28. package/esm2022/components/rich-list/lib/rich-list.component.mjs +9 -12
  29. package/esm2022/rxjs/index.mjs +2 -1
  30. package/esm2022/rxjs/lib/from-element-mutation.mjs +10 -0
  31. package/esm2022/rxjs/lib/from-element-resize.mjs +2 -2
  32. package/fesm2022/odx-angular-cdk-expandable.mjs +84 -57
  33. package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
  34. package/fesm2022/odx-angular-components-accordion.mjs +22 -25
  35. package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
  36. package/fesm2022/odx-angular-components-list.mjs +26 -47
  37. package/fesm2022/odx-angular-components-list.mjs.map +1 -1
  38. package/fesm2022/odx-angular-components-rich-list.mjs +22 -26
  39. package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
  40. package/fesm2022/odx-angular-rxjs.mjs +11 -3
  41. package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
  42. package/package.json +7 -7
  43. package/rxjs/index.d.ts +1 -0
  44. package/rxjs/lib/from-element-mutation.d.ts +2 -0
  45. package/cdk/expandable/lib/directives/extandable-container.directive.d.ts +0 -13
  46. package/esm2022/cdk/expandable/lib/directives/extandable-container.directive.mjs +0 -50
@@ -1,5 +1,5 @@
1
1
  import { switchMap, timer, map, takeUntil, startWith, Observable, debounceTime, merge, fromEvent } from 'rxjs';
2
- import { createResizeObserver } from '@odx/angular/utils';
2
+ import { createMutationObserver, createResizeObserver } from '@odx/angular/utils';
3
3
 
4
4
  function delayUntil(delay, notifier) {
5
5
  return (source$) => source$.pipe(switchMap((value) => timer(delay()).pipe(map(() => value), takeUntil(notifier))));
@@ -9,11 +9,19 @@ function fromQueryList(queryList) {
9
9
  return queryList.changes.pipe(startWith(queryList));
10
10
  }
11
11
 
12
+ function fromElementMutation$(element, options) {
13
+ return new Observable((observer) => {
14
+ const mutationObserver = createMutationObserver(observer, (events) => events.length > 0);
15
+ observer.add(() => mutationObserver.disconnect());
16
+ mutationObserver.observe(element, options);
17
+ });
18
+ }
19
+
12
20
  function fromElementResize$(element, debounceDuration = 50) {
13
21
  return new Observable((observer) => {
14
22
  const resizeObserver = createResizeObserver((events) => {
15
23
  if (events.length > 0) {
16
- observer.next();
24
+ observer.next(events);
17
25
  }
18
26
  });
19
27
  observer.add(() => resizeObserver.disconnect());
@@ -29,5 +37,5 @@ function fromEvents(target, ...events) {
29
37
  * Generated bundle index. Do not edit.
30
38
  */
31
39
 
32
- export { delayUntil, fromElementResize$, fromEvents, fromQueryList };
40
+ export { delayUntil, fromElementMutation$, fromElementResize$, fromEvents, fromQueryList };
33
41
  //# sourceMappingURL=odx-angular-rxjs.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-rxjs.mjs","sources":["../../../../libs/angular/rxjs/src/lib/delay-until.ts","../../../../libs/angular/rxjs/src/lib/form-query-list.ts","../../../../libs/angular/rxjs/src/lib/from-element-resize.ts","../../../../libs/angular/rxjs/src/lib/from-events.ts","../../../../libs/angular/rxjs/src/odx-angular-rxjs.ts"],"sourcesContent":["import { map, MonoTypeOperatorFunction, Observable, switchMap, takeUntil, timer } from 'rxjs';\n\nexport function delayUntil<T>(delay: () => number, notifier: Observable<unknown>): MonoTypeOperatorFunction<T> {\n return (source$: Observable<T>) =>\n source$.pipe(\n switchMap((value: T) =>\n timer(delay()).pipe(\n map(() => value),\n takeUntil(notifier)\n )\n )\n );\n}\n","import { QueryList } from '@angular/core';\nimport { Observable, startWith } from 'rxjs';\n\nexport function fromQueryList<T>(queryList: QueryList<T>): Observable<QueryList<T>> {\n return queryList.changes.pipe(startWith(queryList));\n}\n","import { createResizeObserver } from '@odx/angular/utils';\nimport { debounceTime, Observable } from 'rxjs';\n\nexport function fromElementResize$(element: Element, debounceDuration = 50): Observable<ResizeObserverEntry[]> {\n return new Observable<ResizeObserverEntry[]>((observer) => {\n const resizeObserver = createResizeObserver((events) => {\n if (events.length > 0) {\n observer.next();\n }\n });\n observer.add(() => resizeObserver.disconnect());\n resizeObserver.observe(element);\n }).pipe(debounceTime(debounceDuration));\n}\n","import { fromEvent, merge, Observable } from 'rxjs';\nimport { HasEventTargetAddRemove } from 'rxjs/internal/observable/fromEvent';\n\nexport function fromEvents<T>(target: HasEventTargetAddRemove<T> | HasEventTargetAddRemove<T>[], ...events: string[]): Observable<T> {\n return merge(...events.map((event) => fromEvent(target, event)));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEgB,SAAA,UAAU,CAAI,KAAmB,EAAE,QAA6B,EAAA;AAC9E,IAAA,OAAO,CAAC,OAAsB,KAC5B,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,CAAC,KAAQ,KACjB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CACjB,GAAG,CAAC,MAAM,KAAK,CAAC,EAChB,SAAS,CAAC,QAAQ,CAAC,CACpB,CACF,CACF,CAAC;AACN;;ACTM,SAAU,aAAa,CAAI,SAAuB,EAAA;IACtD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD;;SCFgB,kBAAkB,CAAC,OAAgB,EAAE,gBAAgB,GAAG,EAAE,EAAA;AACxE,IAAA,OAAO,IAAI,UAAU,CAAwB,CAAC,QAAQ,KAAI;AACxD,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,MAAM,KAAI;AACrD,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjB,aAAA;AACH,SAAC,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;AAChD,QAAA,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACjC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC1C;;SCVgB,UAAU,CAAI,MAAiE,EAAE,GAAG,MAAgB,EAAA;IAClH,OAAO,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE;;ACLA;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-rxjs.mjs","sources":["../../../../libs/angular/rxjs/src/lib/delay-until.ts","../../../../libs/angular/rxjs/src/lib/form-query-list.ts","../../../../libs/angular/rxjs/src/lib/from-element-mutation.ts","../../../../libs/angular/rxjs/src/lib/from-element-resize.ts","../../../../libs/angular/rxjs/src/lib/from-events.ts","../../../../libs/angular/rxjs/src/odx-angular-rxjs.ts"],"sourcesContent":["import { map, MonoTypeOperatorFunction, Observable, switchMap, takeUntil, timer } from 'rxjs';\n\nexport function delayUntil<T>(delay: () => number, notifier: Observable<unknown>): MonoTypeOperatorFunction<T> {\n return (source$: Observable<T>) =>\n source$.pipe(\n switchMap((value: T) =>\n timer(delay()).pipe(\n map(() => value),\n takeUntil(notifier)\n )\n )\n );\n}\n","import { QueryList } from '@angular/core';\nimport { Observable, startWith } from 'rxjs';\n\nexport function fromQueryList<T>(queryList: QueryList<T>): Observable<QueryList<T>> {\n return queryList.changes.pipe(startWith(queryList));\n}\n","import { createMutationObserver } from '@odx/angular/utils';\nimport { Observable } from 'rxjs';\n\nexport function fromElementMutation$(element: Element, options: MutationObserverInit): Observable<MutationRecord> {\n return new Observable<MutationRecord>((observer) => {\n const mutationObserver = createMutationObserver(observer, (events) => events.length > 0);\n observer.add(() => mutationObserver.disconnect());\n mutationObserver.observe(element, options);\n });\n}\n","import { createResizeObserver } from '@odx/angular/utils';\nimport { debounceTime, Observable } from 'rxjs';\n\nexport function fromElementResize$(element: Element, debounceDuration = 50): Observable<ResizeObserverEntry[]> {\n return new Observable<ResizeObserverEntry[]>((observer) => {\n const resizeObserver = createResizeObserver((events) => {\n if (events.length > 0) {\n observer.next(events);\n }\n });\n observer.add(() => resizeObserver.disconnect());\n resizeObserver.observe(element);\n }).pipe(debounceTime(debounceDuration));\n}\n","import { fromEvent, merge, Observable } from 'rxjs';\nimport { HasEventTargetAddRemove } from 'rxjs/internal/observable/fromEvent';\n\nexport function fromEvents<T>(target: HasEventTargetAddRemove<T> | HasEventTargetAddRemove<T>[], ...events: string[]): Observable<T> {\n return merge(...events.map((event) => fromEvent(target, event)));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEgB,SAAA,UAAU,CAAI,KAAmB,EAAE,QAA6B,EAAA;AAC9E,IAAA,OAAO,CAAC,OAAsB,KAC5B,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,CAAC,KAAQ,KACjB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CACjB,GAAG,CAAC,MAAM,KAAK,CAAC,EAChB,SAAS,CAAC,QAAQ,CAAC,CACpB,CACF,CACF,CAAC;AACN;;ACTM,SAAU,aAAa,CAAI,SAAuB,EAAA;IACtD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD;;ACFgB,SAAA,oBAAoB,CAAC,OAAgB,EAAE,OAA6B,EAAA;AAClF,IAAA,OAAO,IAAI,UAAU,CAAiB,CAAC,QAAQ,KAAI;AACjD,QAAA,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzF,QAAQ,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;AAClD,QAAA,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,KAAC,CAAC,CAAC;AACL;;SCNgB,kBAAkB,CAAC,OAAgB,EAAE,gBAAgB,GAAG,EAAE,EAAA;AACxE,IAAA,OAAO,IAAI,UAAU,CAAwB,CAAC,QAAQ,KAAI;AACxD,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,MAAM,KAAI;AACrD,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,aAAA;AACH,SAAC,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;AAChD,QAAA,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACjC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC1C;;SCVgB,UAAU,CAAI,MAAiE,EAAE,GAAG,MAAgB,EAAA;IAClH,OAAO,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE;;ACLA;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -259,18 +259,18 @@
259
259
  "esm": "./esm2022/components/content-box/odx-angular-components-content-box.mjs",
260
260
  "default": "./fesm2022/odx-angular-components-content-box.mjs"
261
261
  },
262
- "./components/datepicker": {
263
- "types": "./components/datepicker/index.d.ts",
264
- "esm2022": "./esm2022/components/datepicker/odx-angular-components-datepicker.mjs",
265
- "esm": "./esm2022/components/datepicker/odx-angular-components-datepicker.mjs",
266
- "default": "./fesm2022/odx-angular-components-datepicker.mjs"
267
- },
268
262
  "./components/dropdown": {
269
263
  "types": "./components/dropdown/index.d.ts",
270
264
  "esm2022": "./esm2022/components/dropdown/odx-angular-components-dropdown.mjs",
271
265
  "esm": "./esm2022/components/dropdown/odx-angular-components-dropdown.mjs",
272
266
  "default": "./fesm2022/odx-angular-components-dropdown.mjs"
273
267
  },
268
+ "./components/datepicker": {
269
+ "types": "./components/datepicker/index.d.ts",
270
+ "esm2022": "./esm2022/components/datepicker/odx-angular-components-datepicker.mjs",
271
+ "esm": "./esm2022/components/datepicker/odx-angular-components-datepicker.mjs",
272
+ "default": "./fesm2022/odx-angular-components-datepicker.mjs"
273
+ },
274
274
  "./components/form-field": {
275
275
  "types": "./components/form-field/index.d.ts",
276
276
  "esm2022": "./esm2022/components/form-field/odx-angular-components-form-field.mjs",
package/rxjs/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './lib/delay-until';
2
2
  export * from './lib/form-query-list';
3
+ export * from './lib/from-element-mutation';
3
4
  export * from './lib/from-element-resize';
4
5
  export * from './lib/from-events';
@@ -0,0 +1,2 @@
1
+ import { Observable } from 'rxjs';
2
+ export declare function fromElementMutation$(element: Element, options: MutationObserverInit): Observable<MutationRecord>;
@@ -1,13 +0,0 @@
1
- import { ExpandableContainer, ExpandableItem } from '../facade';
2
- import * as i0 from "@angular/core";
3
- export declare class ExpandableContainerDirective implements ExpandableContainer {
4
- private openItems;
5
- multiple: boolean;
6
- close(item: ExpandableItem): void;
7
- closeAll(): void;
8
- open(item: ExpandableItem): void;
9
- hasExpandedItem(): boolean;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<ExpandableContainerDirective, never>;
11
- static ɵdir: i0.ɵɵDirectiveDeclaration<ExpandableContainerDirective, "[odxExpandableContainer]", never, { "multiple": { "alias": "multiple"; "required": false; }; }, {}, never, never, true, never>;
12
- static ngAcceptInputType_multiple: unknown;
13
- }
@@ -1,50 +0,0 @@
1
- import { booleanAttribute, Directive, Input } from '@angular/core';
2
- import { ODX_EXPANDABLE_CONTAINER } from '../expandable.tokens';
3
- import * as i0 from "@angular/core";
4
- export class ExpandableContainerDirective {
5
- constructor() {
6
- this.openItems = {};
7
- this.multiple = false;
8
- }
9
- close(item) {
10
- delete this.openItems[item.id];
11
- }
12
- closeAll() {
13
- for (const item of Object.values(this.openItems)) {
14
- item.close();
15
- }
16
- }
17
- open(item) {
18
- if (!this.multiple) {
19
- this.closeAll();
20
- }
21
- this.openItems[item.id] = item;
22
- }
23
- hasExpandedItem() {
24
- return Object.values(this.openItems).length > 0;
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandableContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
27
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "16.2.12", type: ExpandableContainerDirective, isStandalone: true, selector: "[odxExpandableContainer]", inputs: { multiple: ["multiple", "multiple", booleanAttribute] }, providers: [
28
- {
29
- provide: ODX_EXPANDABLE_CONTAINER,
30
- useExisting: ExpandableContainerDirective,
31
- },
32
- ], ngImport: i0 }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ExpandableContainerDirective, decorators: [{
35
- type: Directive,
36
- args: [{
37
- standalone: true,
38
- selector: '[odxExpandableContainer]',
39
- providers: [
40
- {
41
- provide: ODX_EXPANDABLE_CONTAINER,
42
- useExisting: ExpandableContainerDirective,
43
- },
44
- ],
45
- }]
46
- }], propDecorators: { multiple: [{
47
- type: Input,
48
- args: [{ transform: booleanAttribute }]
49
- }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0YW5kYWJsZS1jb250YWluZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9leHBhbmRhYmxlL3NyYy9saWIvZGlyZWN0aXZlcy9leHRhbmRhYmxlLWNvbnRhaW5lci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBYWhFLE1BQU0sT0FBTyw0QkFBNEI7SUFWekM7UUFXVSxjQUFTLEdBQW1DLEVBQUUsQ0FBQztRQUdoRCxhQUFRLEdBQUcsS0FBSyxDQUFDO0tBc0J6QjtJQXBCUSxLQUFLLENBQUMsSUFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUTtRQUNiLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRU0sSUFBSSxDQUFDLElBQW9CO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQzsrR0F6QlUsNEJBQTRCO21HQUE1Qiw0QkFBNEIseUdBR25CLGdCQUFnQixnQkFWekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsd0JBQXdCO2dCQUNqQyxXQUFXLEVBQUUsNEJBQTRCO2FBQzFDO1NBQ0Y7OzRGQUVVLDRCQUE0QjtrQkFWeEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ2pDLFdBQVcsOEJBQThCO3lCQUMxQztxQkFDRjtpQkFDRjs4QkFLUSxRQUFRO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPRFhfRVhQQU5EQUJMRV9DT05UQUlORVIgfSBmcm9tICcuLi9leHBhbmRhYmxlLnRva2Vucyc7XG5pbXBvcnQgeyBFeHBhbmRhYmxlQ29udGFpbmVyLCBFeHBhbmRhYmxlSXRlbSB9IGZyb20gJy4uL2ZhY2FkZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tvZHhFeHBhbmRhYmxlQ29udGFpbmVyXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9EWF9FWFBBTkRBQkxFX0NPTlRBSU5FUixcbiAgICAgIHVzZUV4aXN0aW5nOiBFeHBhbmRhYmxlQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEV4cGFuZGFibGVDb250YWluZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBFeHBhbmRhYmxlQ29udGFpbmVyIHtcbiAgcHJpdmF0ZSBvcGVuSXRlbXM6IFJlY29yZDxzdHJpbmcsIEV4cGFuZGFibGVJdGVtPiA9IHt9O1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICBwdWJsaWMgY2xvc2UoaXRlbTogRXhwYW5kYWJsZUl0ZW0pOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5vcGVuSXRlbXNbaXRlbS5pZF07XG4gIH1cblxuICBwdWJsaWMgY2xvc2VBbGwoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIE9iamVjdC52YWx1ZXModGhpcy5vcGVuSXRlbXMpKSB7XG4gICAgICBpdGVtLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW4oaXRlbTogRXhwYW5kYWJsZUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuY2xvc2VBbGwoKTtcbiAgICB9XG4gICAgdGhpcy5vcGVuSXRlbXNbaXRlbS5pZF0gPSBpdGVtO1xuICB9XG5cbiAgcHVibGljIGhhc0V4cGFuZGVkSXRlbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLm9wZW5JdGVtcykubGVuZ3RoID4gMDtcbiAgfVxufVxuIl19