@trimble-oss/moduswebcomponents-angular 1.9.1-ng17 → 1.9.1-ng19

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.
@@ -86,7 +86,7 @@ export declare class ModusWcAppMenu {
86
86
  protected z: NgZone;
87
87
  protected el: HTMLModusWcAppMenuElement;
88
88
  layoutChange: EventEmitter<ModusWcAppMenuCustomEvent<{
89
- layout: 'list' | 'grid';
89
+ layout: "list" | "grid";
90
90
  }>>;
91
91
  itemsOrderChange: EventEmitter<ModusWcAppMenuCustomEvent<IModusWcAppMenuIAppMenuItem[]>>;
92
92
  itemClick: EventEmitter<ModusWcAppMenuCustomEvent<{
@@ -514,7 +514,7 @@ export declare class ModusWcMenuItem {
514
514
  protected el: HTMLModusWcMenuItemElement;
515
515
  itemSelect: EventEmitter<ModusWcMenuItemCustomEvent<{
516
516
  value: string;
517
- selected?: boolean | undefined;
517
+ selected?: boolean;
518
518
  }>>;
519
519
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
520
520
  static ɵfac: i0.ɵɵFactoryDeclaration<ModusWcMenuItem, never>;
@@ -1076,7 +1076,7 @@ export declare class ModusWcTreeItem {
1076
1076
  protected el: HTMLModusWcTreeItemElement;
1077
1077
  itemSelect: EventEmitter<ModusWcTreeItemCustomEvent<{
1078
1078
  value: string;
1079
- selected?: boolean | undefined;
1079
+ selected?: boolean;
1080
1080
  }>>;
1081
1081
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
1082
1082
  static ɵfac: i0.ɵɵFactoryDeclaration<ModusWcTreeItem, never>;
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@trimble-oss/moduswebcomponents-angular",
3
- "version": "1.9.1-ng17",
3
+ "version": "1.9.1-ng19",
4
+ "description": "Trimble Modus Angular Component Library",
5
+ "license": "MIT",
6
+ "author": "Trimble Inc.",
4
7
  "peerDependencies": {
5
- "@angular/common": "^17.3.0",
6
- "@angular/core": "^17.3.0",
8
+ "@angular/common": "^19.0.0",
9
+ "@angular/core": "^19.0.0",
7
10
  "@trimble-oss/moduswebcomponents": "1.9.1"
8
11
  },
9
12
  "dependencies": {
@@ -21,8 +24,6 @@
21
24
  },
22
25
  ".": {
23
26
  "types": "./index.d.ts",
24
- "esm2022": "./esm2022/trimble-oss-moduswebcomponents-angular.mjs",
25
- "esm": "./esm2022/trimble-oss-moduswebcomponents-angular.mjs",
26
27
  "default": "./fesm2022/trimble-oss-moduswebcomponents-angular.mjs"
27
28
  }
28
29
  }
@@ -1,42 +0,0 @@
1
- import { APP_INITIALIZER, NgModule } from '@angular/core';
2
- import { defineCustomElements } from '@trimble-oss/moduswebcomponents/loader';
3
- import { setAssetPath } from '@trimble-oss/moduswebcomponents/components';
4
- import { DIRECTIVES } from './stencil-generated';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./stencil-generated/components";
7
- export class ModusAngularComponentsModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusAngularComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ModusAngularComponentsModule, declarations: [i1.ModusWcAccordion, i1.ModusWcAlert, i1.ModusWcAppMenu, i1.ModusWcAutocomplete, i1.ModusWcAvatar, i1.ModusWcBadge, i1.ModusWcBottomSheet, i1.ModusWcBreadcrumbs, i1.ModusWcButton, i1.ModusWcButtonGroup, i1.ModusWcCard, i1.ModusWcCheckbox, i1.ModusWcChip, i1.ModusWcCollapse, i1.ModusWcDate, i1.ModusWcDivider, i1.ModusWcDropdownMenu, i1.ModusWcFileDropzone, i1.ModusWcHandle, i1.ModusWcIcon, i1.ModusWcInputFeedback, i1.ModusWcInputLabel, i1.ModusWcLink, i1.ModusWcLoader, i1.ModusWcLogo, i1.ModusWcMenu, i1.ModusWcMenuItem, i1.ModusWcModal, i1.ModusWcNavbar, i1.ModusWcNumberInput, i1.ModusWcPagination, i1.ModusWcPanel, i1.ModusWcProfileMenu, i1.ModusWcProgress, i1.ModusWcRadio, i1.ModusWcRating, i1.ModusWcSelect, i1.ModusWcSideNavigation, i1.ModusWcSkeleton, i1.ModusWcSlider, i1.ModusWcStepper, i1.ModusWcSwitch, i1.ModusWcTable, i1.ModusWcTabs, i1.ModusWcTextInput, i1.ModusWcTextarea, i1.ModusWcThemeProvider, i1.ModusWcThemeSwitcher, i1.ModusWcTimeInput, i1.ModusWcToast, i1.ModusWcToolbar, i1.ModusWcTooltip, i1.ModusWcTreeItem, i1.ModusWcTreeMenu, i1.ModusWcTypography, i1.ModusWcUtilityPanel], exports: [i1.ModusWcAccordion, i1.ModusWcAlert, i1.ModusWcAppMenu, i1.ModusWcAutocomplete, i1.ModusWcAvatar, i1.ModusWcBadge, i1.ModusWcBottomSheet, i1.ModusWcBreadcrumbs, i1.ModusWcButton, i1.ModusWcButtonGroup, i1.ModusWcCard, i1.ModusWcCheckbox, i1.ModusWcChip, i1.ModusWcCollapse, i1.ModusWcDate, i1.ModusWcDivider, i1.ModusWcDropdownMenu, i1.ModusWcFileDropzone, i1.ModusWcHandle, i1.ModusWcIcon, i1.ModusWcInputFeedback, i1.ModusWcInputLabel, i1.ModusWcLink, i1.ModusWcLoader, i1.ModusWcLogo, i1.ModusWcMenu, i1.ModusWcMenuItem, i1.ModusWcModal, i1.ModusWcNavbar, i1.ModusWcNumberInput, i1.ModusWcPagination, i1.ModusWcPanel, i1.ModusWcProfileMenu, i1.ModusWcProgress, i1.ModusWcRadio, i1.ModusWcRating, i1.ModusWcSelect, i1.ModusWcSideNavigation, i1.ModusWcSkeleton, i1.ModusWcSlider, i1.ModusWcStepper, i1.ModusWcSwitch, i1.ModusWcTable, i1.ModusWcTabs, i1.ModusWcTextInput, i1.ModusWcTextarea, i1.ModusWcThemeProvider, i1.ModusWcThemeSwitcher, i1.ModusWcTimeInput, i1.ModusWcToast, i1.ModusWcToolbar, i1.ModusWcTooltip, i1.ModusWcTreeItem, i1.ModusWcTreeMenu, i1.ModusWcTypography, i1.ModusWcUtilityPanel] }); }
10
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusAngularComponentsModule, providers: [
11
- {
12
- provide: APP_INITIALIZER,
13
- useFactory: () => () => {
14
- // Configure asset path for Angular applications
15
- // Assets should be copied to /assets/ via angular.json configuration
16
- setAssetPath('/assets/');
17
- defineCustomElements(window);
18
- },
19
- multi: true,
20
- }
21
- ] }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusAngularComponentsModule, decorators: [{
24
- type: NgModule,
25
- args: [{
26
- declarations: [...DIRECTIVES],
27
- exports: [...DIRECTIVES],
28
- providers: [
29
- {
30
- provide: APP_INITIALIZER,
31
- useFactory: () => () => {
32
- // Configure asset path for Angular applications
33
- // Assets should be copied to /assets/ via angular.json configuration
34
- setAssetPath('/assets/');
35
- defineCustomElements(window);
36
- },
37
- multi: true,
38
- }
39
- ]
40
- }]
41
- }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdXMtd2MtYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMtYW5ndWxhci9zcmMvbGliL21vZHVzLXdjLWFuZ3VsYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWtCakQsTUFBTSxPQUFPLDRCQUE0QjsrR0FBNUIsNEJBQTRCO2dIQUE1Qiw0QkFBNEI7Z0hBQTVCLDRCQUE0QixhQWI1QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO29CQUNyQixnREFBZ0Q7b0JBQ2hELHFFQUFxRTtvQkFDckUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN6QixvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzRGQUVVLDRCQUE0QjtrQkFoQnhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUN4QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUU7Z0NBQ3JCLGdEQUFnRDtnQ0FDaEQscUVBQXFFO2dDQUNyRSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7Z0NBQ3pCLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUMvQixDQUFDOzRCQUNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudHMgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzL2xvYWRlcic7XG5pbXBvcnQgeyBzZXRBc3NldFBhdGggfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRElSRUNUSVZFUyB9IGZyb20gJy4vc3RlbmNpbC1nZW5lcmF0ZWQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFsuLi5ESVJFQ1RJVkVTXSxcbiAgZXhwb3J0czogWy4uLkRJUkVDVElWRVNdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiAoKSA9PiB7XG4gICAgICAgIC8vIENvbmZpZ3VyZSBhc3NldCBwYXRoIGZvciBBbmd1bGFyIGFwcGxpY2F0aW9uc1xuICAgICAgICAvLyBBc3NldHMgc2hvdWxkIGJlIGNvcGllZCB0byAvYXNzZXRzLyB2aWEgYW5ndWxhci5qc29uIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgc2V0QXNzZXRQYXRoKCcvYXNzZXRzLycpO1xuICAgICAgICBkZWZpbmVDdXN0b21FbGVtZW50cyh3aW5kb3cpO1xuICAgICAgfSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c0FuZ3VsYXJDb21wb25lbnRzTW9kdWxlIHt9XG4iXX0=
@@ -1,59 +0,0 @@
1
- /* eslint-disable */
2
- /* tslint:disable */
3
- import { fromEvent } from 'rxjs';
4
- export const proxyInputs = (Cmp, inputs) => {
5
- const Prototype = Cmp.prototype;
6
- inputs.forEach((item) => {
7
- Object.defineProperty(Prototype, item, {
8
- get() {
9
- return this.el[item];
10
- },
11
- set(val) {
12
- this.z.runOutsideAngular(() => (this.el[item] = val));
13
- },
14
- /**
15
- * In the event that proxyInputs is called
16
- * multiple times re-defining these inputs
17
- * will cause an error to be thrown. As a result
18
- * we set configurable: true to indicate these
19
- * properties can be changed.
20
- */
21
- configurable: true,
22
- });
23
- });
24
- };
25
- export const proxyMethods = (Cmp, methods) => {
26
- const Prototype = Cmp.prototype;
27
- methods.forEach((methodName) => {
28
- Prototype[methodName] = function () {
29
- const args = arguments;
30
- return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));
31
- };
32
- });
33
- };
34
- export const proxyOutputs = (instance, el, events) => {
35
- events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));
36
- };
37
- export const defineCustomElement = (tagName, customElement) => {
38
- if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {
39
- customElements.define(tagName, customElement);
40
- }
41
- };
42
- // tslint:disable-next-line: only-arrow-functions
43
- export function ProxyCmp(opts) {
44
- const decorator = function (cls) {
45
- const { defineCustomElementFn, inputs, methods } = opts;
46
- if (defineCustomElementFn !== undefined) {
47
- defineCustomElementFn();
48
- }
49
- if (inputs) {
50
- proxyInputs(cls, inputs);
51
- }
52
- if (methods) {
53
- proxyMethods(cls, methods);
54
- }
55
- return cls;
56
- };
57
- return decorator;
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMtYW5ndWxhci9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN0QixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7WUFDckMsR0FBRztnQkFDRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUNELEdBQUcsQ0FBQyxHQUFRO2dCQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUNEOzs7Ozs7ZUFNRztZQUNILFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBUSxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUM3QixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDdEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBTyxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN2RSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUFrQixFQUFFLEVBQUU7SUFDekUsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLE9BQU8sY0FBYyxLQUFLLFdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6RyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNoRCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsaURBQWlEO0FBQ2pELE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBeUU7SUFDaEcsTUFBTSxTQUFTLEdBQUcsVUFBVSxHQUFRO1FBQ2xDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXhELElBQUkscUJBQXFCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMscUJBQXFCLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBRUQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztJQUNGLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgcHJveHlJbnB1dHMgPSAoQ21wOiBhbnksIGlucHV0czogc3RyaW5nW10pID0+IHtcbiAgY29uc3QgUHJvdG90eXBlID0gQ21wLnByb3RvdHlwZTtcbiAgaW5wdXRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJvdG90eXBlLCBpdGVtLCB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsW2l0ZW1dO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLnoucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gKHRoaXMuZWxbaXRlbV0gPSB2YWwpKTtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIEluIHRoZSBldmVudCB0aGF0IHByb3h5SW5wdXRzIGlzIGNhbGxlZFxuICAgICAgICogbXVsdGlwbGUgdGltZXMgcmUtZGVmaW5pbmcgdGhlc2UgaW5wdXRzXG4gICAgICAgKiB3aWxsIGNhdXNlIGFuIGVycm9yIHRvIGJlIHRocm93bi4gQXMgYSByZXN1bHRcbiAgICAgICAqIHdlIHNldCBjb25maWd1cmFibGU6IHRydWUgdG8gaW5kaWNhdGUgdGhlc2VcbiAgICAgICAqIHByb3BlcnRpZXMgY2FuIGJlIGNoYW5nZWQuXG4gICAgICAgKi9cbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcHJveHlNZXRob2RzID0gKENtcDogYW55LCBtZXRob2RzOiBzdHJpbmdbXSkgPT4ge1xuICBjb25zdCBQcm90b3R5cGUgPSBDbXAucHJvdG90eXBlO1xuICBtZXRob2RzLmZvckVhY2goKG1ldGhvZE5hbWUpID0+IHtcbiAgICBQcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgcmV0dXJuIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmVsW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMuZWwsIGFyZ3MpKTtcbiAgICB9O1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm94eU91dHB1dHMgPSAoaW5zdGFuY2U6IGFueSwgZWw6IGFueSwgZXZlbnRzOiBzdHJpbmdbXSkgPT4ge1xuICBldmVudHMuZm9yRWFjaCgoZXZlbnROYW1lKSA9PiAoaW5zdGFuY2VbZXZlbnROYW1lXSA9IGZyb21FdmVudChlbCwgZXZlbnROYW1lKSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmluZUN1c3RvbUVsZW1lbnQgPSAodGFnTmFtZTogc3RyaW5nLCBjdXN0b21FbGVtZW50OiBhbnkpID0+IHtcbiAgaWYgKGN1c3RvbUVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgY3VzdG9tRWxlbWVudHMgIT09ICd1bmRlZmluZWQnICYmICFjdXN0b21FbGVtZW50cy5nZXQodGFnTmFtZSkpIHtcbiAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGFnTmFtZSwgY3VzdG9tRWxlbWVudCk7XG4gIH1cbn07XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb25seS1hcnJvdy1mdW5jdGlvbnNcbmV4cG9ydCBmdW5jdGlvbiBQcm94eUNtcChvcHRzOiB7IGRlZmluZUN1c3RvbUVsZW1lbnRGbj86ICgpID0+IHZvaWQ7IGlucHV0cz86IGFueTsgbWV0aG9kcz86IGFueSB9KSB7XG4gIGNvbnN0IGRlY29yYXRvciA9IGZ1bmN0aW9uIChjbHM6IGFueSkge1xuICAgIGNvbnN0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudEZuLCBpbnB1dHMsIG1ldGhvZHMgfSA9IG9wdHM7XG5cbiAgICBpZiAoZGVmaW5lQ3VzdG9tRWxlbWVudEZuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlZmluZUN1c3RvbUVsZW1lbnRGbigpO1xuICAgIH1cblxuICAgIGlmIChpbnB1dHMpIHtcbiAgICAgIHByb3h5SW5wdXRzKGNscywgaW5wdXRzKTtcbiAgICB9XG4gICAgaWYgKG1ldGhvZHMpIHtcbiAgICAgIHByb3h5TWV0aG9kcyhjbHMsIG1ldGhvZHMpO1xuICAgIH1cbiAgICByZXR1cm4gY2xzO1xuICB9O1xuICByZXR1cm4gZGVjb3JhdG9yO1xufVxuIl19