@trimble-oss/moduswebcomponents-angular 1.10.0-ng17 → 1.10.0-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.
@@ -88,7 +88,7 @@ export declare class ModusWcAppMenu {
88
88
  protected z: NgZone;
89
89
  protected el: HTMLModusWcAppMenuElement;
90
90
  layoutChange: EventEmitter<ModusWcAppMenuCustomEvent<{
91
- layout: 'list' | 'grid';
91
+ layout: "list" | "grid";
92
92
  }>>;
93
93
  itemsOrderChange: EventEmitter<ModusWcAppMenuCustomEvent<IModusWcAppMenuIAppMenuItem[]>>;
94
94
  itemClick: EventEmitter<ModusWcAppMenuCustomEvent<{
@@ -521,7 +521,7 @@ export declare class ModusWcMenuItem {
521
521
  protected el: HTMLModusWcMenuItemElement;
522
522
  itemSelect: EventEmitter<ModusWcMenuItemCustomEvent<{
523
523
  value: string;
524
- selected?: boolean | undefined;
524
+ selected?: boolean;
525
525
  }>>;
526
526
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
527
527
  static ɵfac: i0.ɵɵFactoryDeclaration<ModusWcMenuItem, never>;
@@ -1083,7 +1083,7 @@ export declare class ModusWcTreeItem {
1083
1083
  protected el: HTMLModusWcTreeItemElement;
1084
1084
  itemSelect: EventEmitter<ModusWcTreeItemCustomEvent<{
1085
1085
  value: string;
1086
- selected?: boolean | undefined;
1086
+ selected?: boolean;
1087
1087
  }>>;
1088
1088
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
1089
1089
  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.10.0-ng17",
3
+ "version": "1.10.0-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.10.0"
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