@flywheel-io/vision 0.11.2 → 0.12.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 (109) hide show
  1. package/components/button/button.component.d.ts +2 -1
  2. package/components/button/button.directives.d.ts +37 -0
  3. package/components/button/button.module.d.ts +5 -4
  4. package/components/card/card-attribute/card-attribute.component.d.ts +7 -0
  5. package/components/card/card-author/card-author.component.d.ts +7 -0
  6. package/components/card/card-content/card-content.component.d.ts +5 -0
  7. package/components/card/card-footer/card-footer.component.d.ts +9 -0
  8. package/components/card/card-header/card-header.component.d.ts +8 -0
  9. package/components/card/card.component.d.ts +12 -0
  10. package/components/card/card.module.d.ts +15 -0
  11. package/components/dialog/dialog-confirm.component.d.ts +22 -0
  12. package/components/dialog/dialog-simple.component.d.ts +19 -0
  13. package/components/dialog/dialog.component.d.ts +41 -0
  14. package/components/dialog/dialogs.module.d.ts +15 -0
  15. package/components/icon-button/icon-button.component.d.ts +1 -0
  16. package/components/{dialog → legacy/dialog}/choice-dialog.component.d.ts +4 -1
  17. package/components/{dialog → legacy/dialog}/confirm-dialog.component.d.ts +4 -1
  18. package/components/{dialog → legacy/dialog}/dialog.module.d.ts +4 -1
  19. package/components/{dialog → legacy/dialog}/dialog.service.d.ts +3 -0
  20. package/components/{dialog → legacy/dialog}/error-dialog.component.d.ts +4 -1
  21. package/components/{dialog → legacy/dialog}/portal-dialog.component.d.ts +4 -1
  22. package/components/{notification → legacy/notification}/notification.module.d.ts +2 -2
  23. package/components/stepper/step.component.d.ts +20 -0
  24. package/components/stepper/stepper.component.d.ts +23 -0
  25. package/components/stepper/stepper.module.d.ts +11 -0
  26. package/esm2020/components/alert/alert.component.mjs +2 -2
  27. package/esm2020/components/button/button.component.mjs +7 -4
  28. package/esm2020/components/button/button.directives.mjs +129 -0
  29. package/esm2020/components/button/button.module.mjs +24 -3
  30. package/esm2020/components/button-group/button-group.component.mjs +2 -2
  31. package/esm2020/components/card/card-attribute/card-attribute.component.mjs +17 -0
  32. package/esm2020/components/card/card-author/card-author.component.mjs +15 -0
  33. package/esm2020/components/card/card-content/card-content.component.mjs +11 -0
  34. package/esm2020/components/card/card-footer/card-footer.component.mjs +29 -0
  35. package/esm2020/components/card/card-header/card-header.component.mjs +19 -0
  36. package/esm2020/components/card/card.component.mjs +27 -0
  37. package/esm2020/components/card/card.module.mjs +57 -0
  38. package/esm2020/components/dialog/dialog-confirm.component.mjs +56 -0
  39. package/esm2020/components/dialog/dialog-simple.component.mjs +46 -0
  40. package/esm2020/components/dialog/dialog.component.mjs +122 -0
  41. package/esm2020/components/dialog/dialogs.module.mjs +66 -0
  42. package/esm2020/components/icon-button/icon-button.component.mjs +6 -3
  43. package/esm2020/components/legacy/dialog/choice-dialog.component.mjs +107 -0
  44. package/esm2020/components/legacy/dialog/confirm-dialog.component.mjs +61 -0
  45. package/esm2020/components/legacy/dialog/dialog.module.mjs +82 -0
  46. package/esm2020/components/legacy/dialog/dialog.service.mjs +75 -0
  47. package/esm2020/components/legacy/dialog/error-dialog.component.mjs +52 -0
  48. package/esm2020/components/legacy/dialog/portal-dialog.component.mjs +109 -0
  49. package/esm2020/components/legacy/notification/notification/notification.component.mjs +74 -0
  50. package/esm2020/components/legacy/notification/notification/notification.model.mjs +9 -0
  51. package/esm2020/components/legacy/notification/notification-container/notification-container.component.mjs +98 -0
  52. package/esm2020/components/legacy/notification/notification-timer.service.mjs +29 -0
  53. package/esm2020/components/legacy/notification/notification.module.mjs +51 -0
  54. package/esm2020/components/legacy/notification/notification.service.mjs +36 -0
  55. package/esm2020/components/legacy/popover/popover-trigger.component.mjs +66 -0
  56. package/esm2020/components/legacy/popover/popover-trigger.directive.mjs +139 -0
  57. package/esm2020/components/{popover → legacy/popover}/popover.component.mjs +1 -1
  58. package/esm2020/components/{popover → legacy/popover}/popover.module.mjs +1 -1
  59. package/esm2020/components/stepper/step.component.mjs +52 -0
  60. package/esm2020/components/stepper/stepper.component.mjs +95 -0
  61. package/esm2020/components/stepper/stepper.module.mjs +37 -0
  62. package/esm2020/components/text-input/text-input.component.mjs +2 -2
  63. package/esm2020/public-api.mjs +31 -16
  64. package/fesm2015/flywheel-io-vision.mjs +962 -192
  65. package/fesm2015/flywheel-io-vision.mjs.map +1 -1
  66. package/fesm2020/flywheel-io-vision.mjs +951 -187
  67. package/fesm2020/flywheel-io-vision.mjs.map +1 -1
  68. package/package.json +1 -9
  69. package/public-api.d.ts +30 -15
  70. package/scss/config/general.scss +4 -0
  71. package/scss/config/typography.scss +1 -1
  72. package/scss/config/vision-colors.scss +2 -2
  73. package/styles.css +8 -4
  74. package/elements/README.md +0 -20
  75. package/elements/elements.d.ts +0 -3
  76. package/elements/index.d.ts +0 -5
  77. package/elements/polyfills.d.ts +0 -57
  78. package/elements/public-api.d.ts +0 -1
  79. package/esm2020/components/dialog/choice-dialog.component.mjs +0 -90
  80. package/esm2020/components/dialog/confirm-dialog.component.mjs +0 -54
  81. package/esm2020/components/dialog/dialog.module.mjs +0 -79
  82. package/esm2020/components/dialog/dialog.service.mjs +0 -72
  83. package/esm2020/components/dialog/error-dialog.component.mjs +0 -49
  84. package/esm2020/components/dialog/portal-dialog.component.mjs +0 -106
  85. package/esm2020/components/notification/notification/notification.component.mjs +0 -74
  86. package/esm2020/components/notification/notification/notification.model.mjs +0 -9
  87. package/esm2020/components/notification/notification-container/notification-container.component.mjs +0 -98
  88. package/esm2020/components/notification/notification-timer.service.mjs +0 -29
  89. package/esm2020/components/notification/notification.module.mjs +0 -51
  90. package/esm2020/components/notification/notification.service.mjs +0 -36
  91. package/esm2020/components/popover/popover-trigger.component.mjs +0 -66
  92. package/esm2020/components/popover/popover-trigger.directive.mjs +0 -139
  93. package/esm2020/elements/elements.mjs +0 -59
  94. package/esm2020/elements/flywheel-io-vision-elements.mjs +0 -5
  95. package/esm2020/elements/polyfills.mjs +0 -60
  96. package/esm2020/elements/public-api.mjs +0 -2
  97. package/fesm2015/flywheel-io-vision-elements.mjs +0 -83
  98. package/fesm2015/flywheel-io-vision-elements.mjs.map +0 -1
  99. package/fesm2020/flywheel-io-vision-elements.mjs +0 -83
  100. package/fesm2020/flywheel-io-vision-elements.mjs.map +0 -1
  101. /package/components/{notification → legacy/notification}/notification/notification.component.d.ts +0 -0
  102. /package/components/{notification → legacy/notification}/notification/notification.model.d.ts +0 -0
  103. /package/components/{notification → legacy/notification}/notification-container/notification-container.component.d.ts +0 -0
  104. /package/components/{notification → legacy/notification}/notification-timer.service.d.ts +0 -0
  105. /package/components/{notification → legacy/notification}/notification.service.d.ts +0 -0
  106. /package/components/{popover → legacy/popover}/popover-trigger.component.d.ts +0 -0
  107. /package/components/{popover → legacy/popover}/popover-trigger.directive.d.ts +0 -0
  108. /package/components/{popover → legacy/popover}/popover.component.d.ts +0 -0
  109. /package/components/{popover → legacy/popover}/popover.module.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flywheel-io/vision",
3
- "version": "0.11.2",
3
+ "version": "0.12.0",
4
4
  "description": "Flywheel UI elements provided as Angular components and native web components",
5
5
  "author": "Jody Zeitler <jody.zeitler@gmail.com>",
6
6
  "license": "MIT",
@@ -28,14 +28,6 @@
28
28
  },
29
29
  "./package.json": {
30
30
  "default": "./package.json"
31
- },
32
- "./elements": {
33
- "types": "./elements/index.d.ts",
34
- "esm2020": "./esm2020/elements/flywheel-io-vision-elements.mjs",
35
- "es2020": "./fesm2020/flywheel-io-vision-elements.mjs",
36
- "es2015": "./fesm2015/flywheel-io-vision-elements.mjs",
37
- "node": "./fesm2015/flywheel-io-vision-elements.mjs",
38
- "default": "./fesm2020/flywheel-io-vision-elements.mjs"
39
31
  }
40
32
  },
41
33
  "module": "fesm2015/flywheel-io-vision.mjs",
package/public-api.d.ts CHANGED
@@ -3,30 +3,45 @@ export * from './components/alert/alert.module';
3
3
  export * from './components/avatar/avatar.component';
4
4
  export * from './components/avatar/avatar.module';
5
5
  export * from './components/button/button.component';
6
+ export * from './components/button/button.directives';
6
7
  export * from './components/button/button.module';
8
+ export * from './components/card/card.component';
9
+ export * from './components/card/card.module';
10
+ export * from './components/card/card-attribute/card-attribute.component';
11
+ export * from './components/card/card-author/card-author.component';
12
+ export * from './components/card/card-content/card-content.component';
13
+ export * from './components/card/card-footer/card-footer.component';
14
+ export * from './components/card/card-header/card-header.component';
7
15
  export * from './components/chip/chip.component';
8
16
  export * from './components/chip/chip.module';
9
- export * from './components/dialog/choice-dialog.component';
10
- export * from './components/dialog/confirm-dialog.component';
11
- export * from './components/dialog/dialog.module';
12
- export * from './components/dialog/dialog.service';
13
- export * from './components/dialog/error-dialog.component';
14
- export * from './components/dialog/portal-dialog.component';
17
+ export * from './components/dialog/dialog.component';
18
+ export * from './components/dialog/dialog-confirm.component';
19
+ export * from './components/dialog/dialog-simple.component';
20
+ export * from './components/dialog/dialogs.module';
15
21
  export * from './components/icon/icon.component';
16
22
  export * from './components/icon/icon.module';
17
23
  export * from './components/icon-button/icon-button.component';
18
24
  export * from './components/icon-button/icon-button.module';
19
- export * from './components/notification/notification.module';
20
- export * from './components/notification/notification.service';
21
- export * from './components/notification/notification/notification.component';
22
- export * from './components/notification/notification/notification.model';
23
- export * from './components/notification/notification-container/notification-container.component';
24
- export * from './components/popover/popover.component';
25
- export * from './components/popover/popover.module';
26
- export * from './components/popover/popover-trigger.component';
27
- export * from './components/popover/popover-trigger.directive';
25
+ export * from './components/legacy/dialog/choice-dialog.component';
26
+ export * from './components/legacy/dialog/confirm-dialog.component';
27
+ export * from './components/legacy/dialog/dialog.module';
28
+ export * from './components/legacy/dialog/dialog.service';
29
+ export * from './components/legacy/dialog/error-dialog.component';
30
+ export * from './components/legacy/dialog/portal-dialog.component';
31
+ export * from './components/legacy/notification/notification.module';
32
+ export * from './components/legacy/notification/notification.service';
33
+ export * from './components/legacy/notification/notification/notification.component';
34
+ export * from './components/legacy/notification/notification/notification.model';
35
+ export * from './components/legacy/notification/notification-container/notification-container.component';
36
+ export * from './components/legacy/popover/popover.component';
37
+ export * from './components/legacy/popover/popover.module';
38
+ export * from './components/legacy/popover/popover-trigger.component';
39
+ export * from './components/legacy/popover/popover-trigger.directive';
28
40
  export * from './components/section-heading/section-heading.component';
29
41
  export * from './components/section-heading/section-heading.module';
30
42
  export * from './components/shared/translation.service';
43
+ export * from './components/stepper/step.component';
44
+ export * from './components/stepper/stepper.component';
45
+ export * from './components/stepper/stepper.module';
31
46
  export * from './components/text-input/text-input.component';
32
47
  export * from './components/text-input/text-input.module';
@@ -39,3 +39,7 @@ html {
39
39
  html, body {
40
40
  height: 100%;
41
41
  }
42
+
43
+ .vision-overlay {
44
+ background-color: var(--separations-overlay);
45
+ }
@@ -49,7 +49,7 @@
49
49
  }
50
50
 
51
51
  @mixin p2 {
52
- font-size: 16px;
52
+ font-size: 14px;
53
53
  @include shared-paragraph-style;
54
54
  }
55
55
 
@@ -11,7 +11,7 @@
11
11
  --separations-base: #e3e6ea;
12
12
  --separations-input: #0000003f;
13
13
  --separations-divider: #00000026;
14
- --separations-overlay: #0000003f;
14
+ --separations-overlay: #00000040;
15
15
  --primary-base: #1b68fa;
16
16
  --primary-medium: #1653c8;
17
17
  --primary-dark: #103e96;
@@ -70,7 +70,7 @@
70
70
  --separations-base: #1e3154;
71
71
  --separations-input: #ffffff3f;
72
72
  --separations-divider: #ffffff26;
73
- --separations-overlay: #0000003f;
73
+ --separations-overlay: #00000059;
74
74
  --primary-base: #76a4fc;
75
75
  --primary-medium: #5b83ce;
76
76
  --primary-dark: #4466a4;
package/styles.css CHANGED
@@ -1109,7 +1109,7 @@
1109
1109
  --separations-base: #e3e6ea;
1110
1110
  --separations-input: #0000003f;
1111
1111
  --separations-divider: #00000026;
1112
- --separations-overlay: #0000003f;
1112
+ --separations-overlay: #00000040;
1113
1113
  --primary-base: #1b68fa;
1114
1114
  --primary-medium: #1653c8;
1115
1115
  --primary-dark: #103e96;
@@ -1170,7 +1170,7 @@
1170
1170
  --separations-base: #1e3154;
1171
1171
  --separations-input: #ffffff3f;
1172
1172
  --separations-divider: #ffffff26;
1173
- --separations-overlay: #0000003f;
1173
+ --separations-overlay: #00000059;
1174
1174
  --primary-base: #76a4fc;
1175
1175
  --primary-medium: #5b83ce;
1176
1176
  --primary-dark: #4466a4;
@@ -1262,7 +1262,7 @@
1262
1262
  }
1263
1263
 
1264
1264
  .vision-p2 {
1265
- font-size: 16px;
1265
+ font-size: 14px;
1266
1266
  font-family: Inter, sans-serif;
1267
1267
  color: var(--typography-base);
1268
1268
  font-weight: 400;
@@ -1319,7 +1319,7 @@ h5 {
1319
1319
  }
1320
1320
 
1321
1321
  p {
1322
- font-size: 16px;
1322
+ font-size: 14px;
1323
1323
  font-family: Inter, sans-serif;
1324
1324
  color: var(--typography-base);
1325
1325
  font-weight: 400;
@@ -5194,6 +5194,10 @@ html, body {
5194
5194
  height: 100%;
5195
5195
  }
5196
5196
 
5197
+ .vision-overlay {
5198
+ background-color: var(--separations-overlay);
5199
+ }
5200
+
5197
5201
  :root {
5198
5202
  --color-gray: var(--color-gray-100);
5199
5203
  --color-gray-50: #f6f7f8;
@@ -1,20 +0,0 @@
1
- @flywheel-io/vision/elements
2
- ============================
3
-
4
- For an application using another or no framework, register component modules to make their elements available in the DOM.
5
- This process is asynchronous and elements will not be available until the returned Promise is resolved.
6
-
7
- ```js
8
- import '@flywheel-io/vision/styles.css'; // global styles and theme
9
- import { FwButtonModule, FwButtonGroupModule } from '@flywheel-io/vision';
10
- import { registerElements } from '@flywheel-io/vision/elements';
11
-
12
- registerElements(FwButtonModule, FwButtonGroupModule).then(() => {
13
- document.body.innerHTML = `
14
- <fw-button-group>
15
- <fw-button type="flat" color="primary">Primary Flat Button</fw-button>
16
- <fw-button type="stroked">Stroked Button<fw-button>
17
- </fw-button-group>
18
- `;
19
- });
20
- ```
@@ -1,3 +0,0 @@
1
- import './polyfills';
2
- import { Type } from '@angular/core';
3
- export declare function registerElements(...modules: Type<unknown>[]): Promise<string[]>;
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@flywheel-io/vision/elements" />
5
- export * from './public-api';
@@ -1,57 +0,0 @@
1
- /**
2
- * This file includes polyfills needed by Angular and is loaded before the app.
3
- * You can add your own extra polyfills to this file.
4
- *
5
- * This file is divided into 2 sections:
6
- * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
7
- * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
8
- * file.
9
- *
10
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
11
- * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
12
- * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
13
- *
14
- * Learn more in https://angular.io/guide/browser-support
15
- */
16
- /***************************************************************************************************
17
- * BROWSER POLYFILLS
18
- */
19
- /**
20
- * IE11 requires the following for NgClass support on SVG elements
21
- */
22
- /**
23
- * Web Animations `@angular/platform-browser/animations`
24
- * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
25
- * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
26
- */
27
- /**
28
- * By default, zone.js will patch all possible macroTask and DomEvents
29
- * user can disable parts of macroTask/DomEvents patch by setting following flags
30
- * because those flags need to be set before `zone.js` being loaded, and webpack
31
- * will put import in the top of bundle, so user need to create a separate file
32
- * in this directory (for example: zone-flags.ts), and put the following flags
33
- * into that file, and then add the following code before importing zone.js.
34
- * import './zone-flags';
35
- *
36
- * The flags allowed in zone-flags.ts are listed here.
37
- *
38
- * The following flags will work for all browsers.
39
- *
40
- * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
41
- * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
42
- * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
43
- *
44
- * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
45
- * with the following flag, it will bypass `zone.js` patch for IE/Edge
46
- *
47
- * (window as any).__Zone_enable_cross_context_check = true;
48
- *
49
- */
50
- /***************************************************************************************************
51
- * Zone JS is required by default for Angular itself.
52
- */
53
- import 'zone.js/dist/zone';
54
- /***************************************************************************************************
55
- * APPLICATION IMPORTS
56
- */
57
- import 'document-register-element';
@@ -1 +0,0 @@
1
- export * from './elements';
@@ -1,90 +0,0 @@
1
- import { Component, HostBinding, Inject } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/button";
6
- import * as i3 from "@angular/material/dialog";
7
- import * as i4 from "@angular/material/icon";
8
- export class FwChoiceDialogComponent {
9
- constructor(data) {
10
- this.data = data;
11
- this.class = 'mat-dialog-component';
12
- this['test-id'] = 'choice-dialog';
13
- this.alignActions = this.data.alignActions || 'start';
14
- this.choices = this.data.choices;
15
- this.closeValue = this.data.closeValue;
16
- this.content = this.data.content;
17
- this.title = this.data.title;
18
- }
19
- get showCloseButton() {
20
- return 'closeValue' in this.data;
21
- }
22
- getTestId(choice) {
23
- return choice.testId || `${String(choice.label ?? choice.value).toLowerCase()}-button`;
24
- }
25
- }
26
- FwChoiceDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwChoiceDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
27
- FwChoiceDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwChoiceDialogComponent, selector: "fw-choice-dialog", host: { properties: { "attr.class": "this.class", "attr.test-id": "this['test-id']" } }, ngImport: i0, template: `
28
- <h1 mat-dialog-title *ngIf="title">{{ title }}</h1>
29
- <button *ngIf="showCloseButton" test-id="dialog-close-corner" mat-icon-button
30
- [mat-dialog-close]="closeValue" [class]="{'mat-dialog-close-button': true, 'no-title': !title}">
31
- <mat-icon>close</mat-icon>
32
- </button>
33
- <div mat-dialog-content>{{ content }}</div>
34
- <div mat-dialog-actions [align]="alignActions">
35
- <ng-container *ngFor="let choice of choices" [ngSwitch]="choice.variant">
36
- <button *ngSwitchCase="'raised'" mat-raised-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
37
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
38
- <button *ngSwitchCase="'stroked'" mat-stroked-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
39
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
40
- <button *ngSwitchCase="'flat'" mat-flat-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
41
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
42
- <ng-container *ngSwitchDefault>
43
- <button *ngIf="choice.color" mat-flat-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
44
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
45
- <button *ngIf="!choice.color" mat-stroked-button [attr.test-id]="getTestId(choice)"
46
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
47
- </ng-container>
48
- </ng-container>
49
- </div>
50
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwChoiceDialogComponent, decorators: [{
52
- type: Component,
53
- args: [{
54
- selector: 'fw-choice-dialog',
55
- template: `
56
- <h1 mat-dialog-title *ngIf="title">{{ title }}</h1>
57
- <button *ngIf="showCloseButton" test-id="dialog-close-corner" mat-icon-button
58
- [mat-dialog-close]="closeValue" [class]="{'mat-dialog-close-button': true, 'no-title': !title}">
59
- <mat-icon>close</mat-icon>
60
- </button>
61
- <div mat-dialog-content>{{ content }}</div>
62
- <div mat-dialog-actions [align]="alignActions">
63
- <ng-container *ngFor="let choice of choices" [ngSwitch]="choice.variant">
64
- <button *ngSwitchCase="'raised'" mat-raised-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
65
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
66
- <button *ngSwitchCase="'stroked'" mat-stroked-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
67
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
68
- <button *ngSwitchCase="'flat'" mat-flat-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
69
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
70
- <ng-container *ngSwitchDefault>
71
- <button *ngIf="choice.color" mat-flat-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
72
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
73
- <button *ngIf="!choice.color" mat-stroked-button [attr.test-id]="getTestId(choice)"
74
- [mat-dialog-close]="choice.value">{{ choice.label }}</button>
75
- </ng-container>
76
- </ng-container>
77
- </div>
78
- `,
79
- }]
80
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
81
- type: Inject,
82
- args: [MAT_DIALOG_DATA]
83
- }] }]; }, propDecorators: { class: [{
84
- type: HostBinding,
85
- args: ['attr.class']
86
- }], 'test-id': [{
87
- type: HostBinding,
88
- args: ['attr.test-id']
89
- }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvY2hvaWNlLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBNkMzRCxNQUFNLE9BQU8sdUJBQXVCO0lBU2xDLFlBQ21DLElBQXdCO1FBQXhCLFNBQUksR0FBSixJQUFJLENBQW9CO1FBVGhDLFVBQUssR0FBRyxzQkFBc0IsQ0FBQztRQUM3QixlQUFTLEdBQUcsZUFBZSxDQUFDO1FBQ2hELGlCQUFZLEdBQStCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQztRQUM3RSxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFLakMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLFlBQVksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUN0QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFHLFNBQVMsQ0FBQztJQUMzRixDQUFDOztvSEFwQlUsdUJBQXVCLGtCQVV4QixlQUFlO3dHQVZkLHVCQUF1QixpSkF6QnhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCVDsyRkFFVSx1QkFBdUI7a0JBM0JuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7aUJBQ0Y7OzBCQVdJLE1BQU07MkJBQUMsZUFBZTs0Q0FURSxLQUFLO3NCQUEvQixXQUFXO3VCQUFDLFlBQVk7Z0JBQ0ksU0FBUztzQkFBckMsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmludGVyZmFjZSBDaG9pY2Uge1xuICBjb2xvcj86IFRoZW1lUGFsZXR0ZTtcbiAgbGFiZWw6IHN0cmluZztcbiAgdGVzdElkPzogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICB2YXJpYW50PzogJ3JhaXNlZCcgfCAnc3Ryb2tlZCcgfCAnZmxhdCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRndDaG9pY2VEaWFsb2dEYXRhIHtcbiAgYWxpZ25BY3Rpb25zPzogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIGNob2ljZXM6IENob2ljZVtdO1xuICBjbG9zZVZhbHVlPzogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1jaG9pY2UtZGlhbG9nJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZSAqbmdJZj1cInRpdGxlXCI+e3sgdGl0bGUgfX08L2gxPlxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIiB0ZXN0LWlkPVwiZGlhbG9nLWNsb3NlLWNvcm5lclwiIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2xvc2VWYWx1ZVwiIFtjbGFzc109XCJ7J21hdC1kaWFsb2ctY2xvc2UtYnV0dG9uJzogdHJ1ZSwgJ25vLXRpdGxlJzogIXRpdGxlfVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD57eyBjb250ZW50IH19PC9kaXY+XG4gICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgW2FsaWduXT1cImFsaWduQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hvaWNlIG9mIGNob2ljZXNcIiBbbmdTd2l0Y2hdPVwiY2hvaWNlLnZhcmlhbnRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdTd2l0Y2hDYXNlPVwiJ3JhaXNlZCdcIiBtYXQtcmFpc2VkLWJ1dHRvbiBbY29sb3JdPVwiY2hvaWNlLmNvbG9yXCIgW2F0dHIudGVzdC1pZF09XCJnZXRUZXN0SWQoY2hvaWNlKVwiXG4gICAgICAgICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nU3dpdGNoQ2FzZT1cIidzdHJva2VkJ1wiIG1hdC1zdHJva2VkLWJ1dHRvbiBbY29sb3JdPVwiY2hvaWNlLmNvbG9yXCIgW2F0dHIudGVzdC1pZF09XCJnZXRUZXN0SWQoY2hvaWNlKVwiXG4gICAgICAgICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nU3dpdGNoQ2FzZT1cIidmbGF0J1wiIG1hdC1mbGF0LWJ1dHRvbiBbY29sb3JdPVwiY2hvaWNlLmNvbG9yXCIgW2F0dHIudGVzdC1pZF09XCJnZXRUZXN0SWQoY2hvaWNlKVwiXG4gICAgICAgICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2hvaWNlLmNvbG9yXCIgbWF0LWZsYXQtYnV0dG9uIFtjb2xvcl09XCJjaG9pY2UuY29sb3JcIiBbYXR0ci50ZXN0LWlkXT1cImdldFRlc3RJZChjaG9pY2UpXCJcbiAgICAgICAgICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cImNob2ljZS52YWx1ZVwiPnt7IGNob2ljZS5sYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhY2hvaWNlLmNvbG9yXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFthdHRyLnRlc3QtaWRdPVwiZ2V0VGVzdElkKGNob2ljZSlcIlxuICAgICAgICAgICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZ3Q2hvaWNlRGlhbG9nQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgY2xhc3MgPSAnbWF0LWRpYWxvZy1jb21wb25lbnQnO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGVzdC1pZCcpICd0ZXN0LWlkJyA9ICdjaG9pY2UtZGlhbG9nJztcbiAgcmVhZG9ubHkgYWxpZ25BY3Rpb25zOiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyA9IHRoaXMuZGF0YS5hbGlnbkFjdGlvbnMgfHwgJ3N0YXJ0JztcbiAgcmVhZG9ubHkgY2hvaWNlcyA9IHRoaXMuZGF0YS5jaG9pY2VzO1xuICByZWFkb25seSBjbG9zZVZhbHVlID0gdGhpcy5kYXRhLmNsb3NlVmFsdWU7XG4gIHJlYWRvbmx5IGNvbnRlbnQgPSB0aGlzLmRhdGEuY29udGVudDtcbiAgcmVhZG9ubHkgdGl0bGUgPSB0aGlzLmRhdGEudGl0bGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YTogRndDaG9pY2VEaWFsb2dEYXRhLFxuICApIHtcbiAgfVxuXG4gIGdldCBzaG93Q2xvc2VCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdjbG9zZVZhbHVlJyBpbiB0aGlzLmRhdGE7XG4gIH1cblxuICBnZXRUZXN0SWQoY2hvaWNlOiBDaG9pY2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBjaG9pY2UudGVzdElkIHx8IGAkeyBTdHJpbmcoY2hvaWNlLmxhYmVsID8/IGNob2ljZS52YWx1ZSkudG9Mb3dlckNhc2UoKSB9LWJ1dHRvbmA7XG4gIH1cbn1cbiJdfQ==
@@ -1,54 +0,0 @@
1
- import { Component, HostBinding, Inject } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/button";
6
- import * as i3 from "@angular/material/dialog";
7
- import * as i4 from "../shared/pipes/translate.pipe";
8
- import * as i5 from "../shared/pipes/trusthtml.pipe";
9
- export class FwConfirmDialogComponent {
10
- constructor(data) {
11
- this.data = data;
12
- this.class = 'mat-dialog-component';
13
- this['test-id'] = 'confirm-dialog';
14
- this.title = this.data.title;
15
- this.content = this.data.content;
16
- this.html = this.data.html;
17
- }
18
- }
19
- FwConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwConfirmDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
20
- FwConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwConfirmDialogComponent, selector: "fw-confirm-dialog", host: { properties: { "attr.class": "this.class", "attr.test-id": "this['test-id']" } }, ngImport: i0, template: `
21
- <h1 mat-dialog-title *ngIf="title">{{ title }}</h1>
22
- <div mat-dialog-content *ngIf="html" class="markup" [innerHTML]="html | trusthtml"></div>
23
- <div mat-dialog-content *ngIf="!html">{{ content || ('confirmDialog.body' | translate) }}</div>
24
- <div mat-dialog-actions align="center">
25
- <button test-id="no-button" mat-stroked-button
26
- [mat-dialog-close]="false">{{ 'confirmDialog.no' | translate }}</button>
27
- <button test-id="yes-button" mat-flat-button color="primary"
28
- [mat-dialog-close]="true">{{ 'confirmDialog.yes' | translate }}</button>
29
- </div>
30
- `, isInline: true, styles: ["[mat-dialog-content]{text-align:center}[mat-dialog-content].markup{text-align:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i5.TrustHtmlPipe, name: "trusthtml" }] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwConfirmDialogComponent, decorators: [{
32
- type: Component,
33
- args: [{ selector: 'fw-confirm-dialog', template: `
34
- <h1 mat-dialog-title *ngIf="title">{{ title }}</h1>
35
- <div mat-dialog-content *ngIf="html" class="markup" [innerHTML]="html | trusthtml"></div>
36
- <div mat-dialog-content *ngIf="!html">{{ content || ('confirmDialog.body' | translate) }}</div>
37
- <div mat-dialog-actions align="center">
38
- <button test-id="no-button" mat-stroked-button
39
- [mat-dialog-close]="false">{{ 'confirmDialog.no' | translate }}</button>
40
- <button test-id="yes-button" mat-flat-button color="primary"
41
- [mat-dialog-close]="true">{{ 'confirmDialog.yes' | translate }}</button>
42
- </div>
43
- `, styles: ["[mat-dialog-content]{text-align:center}[mat-dialog-content].markup{text-align:inherit}\n"] }]
44
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
45
- type: Inject,
46
- args: [MAT_DIALOG_DATA]
47
- }] }]; }, propDecorators: { class: [{
48
- type: HostBinding,
49
- args: ['attr.class']
50
- }], 'test-id': [{
51
- type: HostBinding,
52
- args: ['attr.test-id']
53
- }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7O0FBK0IzRCxNQUFNLE9BQU8sd0JBQXdCO0lBT25DLFlBQ21DLElBQXlCO1FBQXpCLFNBQUksR0FBSixJQUFJLENBQXFCO1FBUGpDLFVBQUssR0FBRyxzQkFBc0IsQ0FBQztRQUM3QixlQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDMUQsVUFBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixTQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFLdEIsQ0FBQzs7cUhBVlUsd0JBQXdCLGtCQVF6QixlQUFlO3lHQVJkLHdCQUF3QixrSkFyQnpCOzs7Ozs7Ozs7O0dBVVQ7MkZBV1Usd0JBQXdCO2tCQXZCcEMsU0FBUzsrQkFDRSxtQkFBbUIsWUFDbkI7Ozs7Ozs7Ozs7R0FVVDs7MEJBbUJFLE1BQU07MkJBQUMsZUFBZTs0Q0FQRSxLQUFLO3NCQUEvQixXQUFXO3VCQUFDLFlBQVk7Z0JBQ0ksU0FBUztzQkFBckMsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ3Q29uZmlybURpYWxvZ0RhdGEge1xuICB0aXRsZT86IHN0cmluZyxcbiAgY29udGVudD86IHN0cmluZyxcbiAgaHRtbD86IHN0cmluZyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctY29uZmlybS1kaWFsb2cnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlICpuZ0lmPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDE+XG4gICAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgKm5nSWY9XCJodG1sXCIgY2xhc3M9XCJtYXJrdXBcIiBbaW5uZXJIVE1MXT1cImh0bWwgfCB0cnVzdGh0bWxcIj48L2Rpdj5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudCAqbmdJZj1cIiFodG1sXCI+e3sgY29udGVudCB8fCAoJ2NvbmZpcm1EaWFsb2cuYm9keScgfCB0cmFuc2xhdGUpIH19PC9kaXY+XG4gICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgYWxpZ249XCJjZW50ZXJcIj5cbiAgICAgIDxidXR0b24gdGVzdC1pZD1cIm5vLWJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJmYWxzZVwiPnt7ICdjb25maXJtRGlhbG9nLm5vJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0ZXN0LWlkPVwieWVzLWJ1dHRvblwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCI+e3sgJ2NvbmZpcm1EaWFsb2cueWVzJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgW21hdC1kaWFsb2ctY29udGVudF0ge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIFttYXQtZGlhbG9nLWNvbnRlbnRdLm1hcmt1cCB7XG4gICAgICB0ZXh0LWFsaWduOiBpbmhlcml0O1xuICAgIH1cbiAgYF0sXG59KVxuZXhwb3J0IGNsYXNzIEZ3Q29uZmlybURpYWxvZ0NvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpIGNsYXNzID0gJ21hdC1kaWFsb2ctY29tcG9uZW50JztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRlc3QtaWQnKSAndGVzdC1pZCcgPSAnY29uZmlybS1kaWFsb2cnO1xuICB0aXRsZSA9IHRoaXMuZGF0YS50aXRsZTtcbiAgY29udGVudCA9IHRoaXMuZGF0YS5jb250ZW50O1xuICBodG1sID0gdGhpcy5kYXRhLmh0bWw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YTogRndDb25maXJtRGlhbG9nRGF0YSxcbiAgKSB7XG4gIH1cbn1cbiJdfQ==
@@ -1,79 +0,0 @@
1
- import { PortalModule } from '@angular/cdk/portal';
2
- import { CommonModule } from '@angular/common';
3
- import { NgModule } from '@angular/core';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogModule } from '@angular/material/dialog';
6
- import { MatIconModule } from '@angular/material/icon';
7
- import { PipesModule } from '../shared/pipes/pipes.module';
8
- import { FwChoiceDialogComponent } from './choice-dialog.component';
9
- import { FwConfirmDialogComponent } from './confirm-dialog.component';
10
- import { FwDialogService } from './dialog.service';
11
- import { FwErrorDialogComponent } from './error-dialog.component';
12
- import { FwPortalDialogComponent } from './portal-dialog.component';
13
- import * as i0 from "@angular/core";
14
- export class FwDialogModule {
15
- }
16
- FwDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- FwDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwDialogModule, declarations: [FwChoiceDialogComponent,
18
- FwConfirmDialogComponent,
19
- FwErrorDialogComponent,
20
- FwPortalDialogComponent], imports: [CommonModule,
21
- MatButtonModule,
22
- MatDialogModule,
23
- MatIconModule,
24
- PipesModule,
25
- PortalModule], exports: [FwChoiceDialogComponent,
26
- FwConfirmDialogComponent,
27
- FwErrorDialogComponent,
28
- FwPortalDialogComponent] });
29
- FwDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwDialogModule, providers: [
30
- FwDialogService,
31
- {
32
- provide: MAT_DIALOG_DEFAULT_OPTIONS,
33
- useValue: {
34
- disableClose: true,
35
- hasBackdrop: true,
36
- },
37
- },
38
- ], imports: [CommonModule,
39
- MatButtonModule,
40
- MatDialogModule,
41
- MatIconModule,
42
- PipesModule,
43
- PortalModule] });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwDialogModule, decorators: [{
45
- type: NgModule,
46
- args: [{
47
- declarations: [
48
- FwChoiceDialogComponent,
49
- FwConfirmDialogComponent,
50
- FwErrorDialogComponent,
51
- FwPortalDialogComponent,
52
- ],
53
- imports: [
54
- CommonModule,
55
- MatButtonModule,
56
- MatDialogModule,
57
- MatIconModule,
58
- PipesModule,
59
- PortalModule,
60
- ],
61
- providers: [
62
- FwDialogService,
63
- {
64
- provide: MAT_DIALOG_DEFAULT_OPTIONS,
65
- useValue: {
66
- disableClose: true,
67
- hasBackdrop: true,
68
- },
69
- },
70
- ],
71
- exports: [
72
- FwChoiceDialogComponent,
73
- FwConfirmDialogComponent,
74
- FwErrorDialogComponent,
75
- FwPortalDialogComponent,
76
- ],
77
- }]
78
- }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2cubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQWtDcEUsTUFBTSxPQUFPLGNBQWM7OzJHQUFkLGNBQWM7NEdBQWQsY0FBYyxpQkE5QnZCLHVCQUF1QjtRQUN2Qix3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLHVCQUF1QixhQUd2QixZQUFZO1FBQ1osZUFBZTtRQUNmLGVBQWU7UUFDZixhQUFhO1FBQ2IsV0FBVztRQUNYLFlBQVksYUFhWix1QkFBdUI7UUFDdkIsd0JBQXdCO1FBQ3hCLHNCQUFzQjtRQUN0Qix1QkFBdUI7NEdBR2QsY0FBYyxhQWpCZDtRQUNULGVBQWU7UUFDZjtZQUNFLE9BQU8sRUFBRSwwQkFBMEI7WUFDbkMsUUFBUSxFQUFFO2dCQUNSLFlBQVksRUFBRSxJQUFJO2dCQUNsQixXQUFXLEVBQUUsSUFBSTthQUNsQjtTQUNGO0tBQ0YsWUFoQkMsWUFBWTtRQUNaLGVBQWU7UUFDZixlQUFlO1FBQ2YsYUFBYTtRQUNiLFdBQVc7UUFDWCxZQUFZOzJGQW1CSCxjQUFjO2tCQWhDMUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3FCQUN4QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixXQUFXO3dCQUNYLFlBQVk7cUJBQ2I7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULGVBQWU7d0JBQ2Y7NEJBQ0UsT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsUUFBUSxFQUFFO2dDQUNSLFlBQVksRUFBRSxJQUFJO2dDQUNsQixXQUFXLEVBQUUsSUFBSTs2QkFDbEI7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLHVCQUF1QjtxQkFDeEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREVGQVVMVF9PUFRJT05TLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5pbXBvcnQgeyBQaXBlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9waXBlcy9waXBlcy5tb2R1bGUnO1xuaW1wb3J0IHsgRndDaG9pY2VEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2Nob2ljZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3RGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRndFcnJvckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZXJyb3ItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGd1BvcnRhbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vcG9ydGFsLWRpYWxvZy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGd0Nob2ljZURpYWxvZ0NvbXBvbmVudCxcbiAgICBGd0NvbmZpcm1EaWFsb2dDb21wb25lbnQsXG4gICAgRndFcnJvckRpYWxvZ0NvbXBvbmVudCxcbiAgICBGd1BvcnRhbERpYWxvZ0NvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgUGlwZXNNb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBGd0RpYWxvZ1NlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX0RJQUxPR19ERUZBVUxUX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgfSxcbiAgICB9LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRndDaG9pY2VEaWFsb2dDb21wb25lbnQsXG4gICAgRndDb25maXJtRGlhbG9nQ29tcG9uZW50LFxuICAgIEZ3RXJyb3JEaWFsb2dDb21wb25lbnQsXG4gICAgRndQb3J0YWxEaWFsb2dDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZ3RGlhbG9nTW9kdWxlIHtcbn1cbiJdfQ==
@@ -1,72 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/material/dialog";
4
- export class FwDialogService {
5
- constructor(matDialog) {
6
- this.matDialog = matDialog;
7
- this.dialogs = [];
8
- this.config = new Map();
9
- }
10
- closeAll(component) {
11
- if (component) {
12
- this.dialogs
13
- .filter((el) => el.component === component)
14
- .forEach((el) => el.ref.close());
15
- }
16
- else {
17
- this.matDialog.closeAll();
18
- }
19
- }
20
- open(component, config) {
21
- const index = this.dialogs.findIndex(el => el.component === component);
22
- let ref = null;
23
- const baseConfig = {
24
- multi: 'allow',
25
- ...this.config.get(component),
26
- };
27
- switch (baseConfig.multi) {
28
- case 'ignore':
29
- // if an existing dialog of the same type doesn't exist, open one
30
- if (index === -1) {
31
- ref = this.matDialog.open(component, { ...baseConfig, ...config });
32
- this.dialogs.push({ component, ref });
33
- }
34
- break;
35
- case 'replace':
36
- // if an existing dialog of the same type exists, replace it.
37
- if (index > -1) {
38
- this.dialogs[index].ref.close();
39
- ref = this.matDialog.open(component, { ...baseConfig, ...config });
40
- this.dialogs.splice(index, 1, { component, ref });
41
- }
42
- else {
43
- ref = this.matDialog.open(component, { ...baseConfig, ...config });
44
- this.dialogs.push({ component, ref });
45
- }
46
- break;
47
- default:
48
- ref = this.matDialog.open(component, { ...baseConfig, ...config });
49
- this.dialogs.push({ component, ref });
50
- break;
51
- }
52
- if (ref) {
53
- ref.afterClosed().subscribe(() => {
54
- // clean up open dialog reference
55
- const index = this.dialogs.findIndex(el => el.ref === ref);
56
- if (index >= 0) {
57
- this.dialogs.splice(index, 1);
58
- }
59
- });
60
- }
61
- return ref;
62
- }
63
- registerDialog(component, config) {
64
- this.config.set(component, config);
65
- }
66
- }
67
- FwDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwDialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
68
- FwDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwDialogService });
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwDialogService, decorators: [{
70
- type: Injectable
71
- }], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQzs7O0FBcUJqRCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNVLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFMckIsWUFBTyxHQUEwQixFQUFFLENBQUM7UUFFckMsV0FBTSxHQUFHLElBQUksR0FBRyxFQUF3QyxDQUFDO0lBS2pFLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBeUI7UUFDaEMsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTztpQkFDVCxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO2lCQUMxQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxJQUFJLENBQVUsU0FBa0IsRUFBRSxNQUEyQjtRQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDdkUsSUFBSSxHQUFHLEdBQXVCLElBQUksQ0FBQztRQUNuQyxNQUFNLFVBQVUsR0FBRztZQUNqQixLQUFLLEVBQUUsT0FBTztZQUNkLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1NBQzlCLENBQUM7UUFFRixRQUFRLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDeEIsS0FBSyxRQUFRO2dCQUNYLGlFQUFpRTtnQkFDakUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2hCLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ3ZDO2dCQUNELE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osNkRBQTZEO2dCQUM3RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDaEMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2lCQUNuRDtxQkFBTTtvQkFDTCxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxNQUFNO1lBQ1I7Z0JBQ0UsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdEMsTUFBTTtTQUNUO1FBRUQsSUFBSSxHQUFHLEVBQUU7WUFDUCxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDL0IsaUNBQWlDO2dCQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzNELElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQy9CO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUF3QixFQUFFLE1BQTZCO1FBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs0R0FwRVUsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuLypcbiogdHlwZSBTdGFja2luZ1N0cmF0ZWd5XG4qIGFsbG93IC0gd2lsbCBhbGxvdyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgZGlhbG9nIHRvIGRpc3BsYXkgYXQgb25jZVxuKiByZXBsYWNlIC0gd2lsbCBjbG9zZSBleGlzdGluZyBkaWFsb2dzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIG9wZW4gYSBuZXcgb25lXG4qIGlnbm9yZSAtIHdpbGwga2VlcCBhIGRpYWxvZyBvZiB0aGUgc2FtZSB0eXBlIG9wZW5cbiovXG5leHBvcnQgdHlwZSBTdGFja2luZ1N0cmF0ZWd5ID0gJ2FsbG93JyB8ICdyZXBsYWNlJyB8ICdpZ25vcmUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nQ29uZmlnPFQ+IGV4dGVuZHMgTWF0RGlhbG9nQ29uZmlnPFQ+IHtcbiAgbXVsdGk6IFN0YWNraW5nU3RyYXRlZ3k7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkRpYWxvZzxUPiB7XG4gIGNvbXBvbmVudDogVHlwZTxUPjtcbiAgcmVmOiBNYXREaWFsb2dSZWY8VD47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGd0RpYWxvZ1NlcnZpY2Uge1xuICByZWFkb25seSBkaWFsb2dzOiBPcGVuRGlhbG9nPHVua25vd24+W10gPSBbXTtcblxuICBwcml2YXRlIGNvbmZpZyA9IG5ldyBNYXA8VHlwZTx1bmtub3duPiwgRGlhbG9nQ29uZmlnPHVua25vd24+PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICkge1xuICB9XG5cbiAgY2xvc2VBbGwoY29tcG9uZW50PzogVHlwZTx1bmtub3duPik6IHZvaWQge1xuICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgIHRoaXMuZGlhbG9nc1xuICAgICAgICAuZmlsdGVyKChlbCkgPT4gZWwuY29tcG9uZW50ID09PSBjb21wb25lbnQpXG4gICAgICAgIC5mb3JFYWNoKChlbCkgPT4gZWwucmVmLmNsb3NlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW48VCwgRCwgUj4oY29tcG9uZW50OiBUeXBlPFQ+LCBjb25maWc/OiBNYXREaWFsb2dDb25maWc8RD4pOiBNYXREaWFsb2dSZWY8VCwgUj4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kaWFsb2dzLmZpbmRJbmRleChlbCA9PiBlbC5jb21wb25lbnQgPT09IGNvbXBvbmVudCk7XG4gICAgbGV0IHJlZjogTWF0RGlhbG9nUmVmPFQsIFI+ID0gbnVsbDtcbiAgICBjb25zdCBiYXNlQ29uZmlnID0ge1xuICAgICAgbXVsdGk6ICdhbGxvdycsXG4gICAgICAuLi50aGlzLmNvbmZpZy5nZXQoY29tcG9uZW50KSxcbiAgICB9O1xuXG4gICAgc3dpdGNoIChiYXNlQ29uZmlnLm11bHRpKSB7XG4gICAgICBjYXNlICdpZ25vcmUnOlxuICAgICAgICAvLyBpZiBhbiBleGlzdGluZyBkaWFsb2cgb2YgdGhlIHNhbWUgdHlwZSBkb2Vzbid0IGV4aXN0LCBvcGVuIG9uZVxuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgcmVmID0gdGhpcy5tYXREaWFsb2cub3Blbihjb21wb25lbnQsIHsgLi4uYmFzZUNvbmZpZywgLi4uY29uZmlnIH0pO1xuICAgICAgICAgIHRoaXMuZGlhbG9ncy5wdXNoKHsgY29tcG9uZW50LCByZWYgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXBsYWNlJzpcbiAgICAgICAgLy8gaWYgYW4gZXhpc3RpbmcgZGlhbG9nIG9mIHRoZSBzYW1lIHR5cGUgZXhpc3RzLCByZXBsYWNlIGl0LlxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgIHRoaXMuZGlhbG9nc1tpbmRleF0ucmVmLmNsb3NlKCk7XG4gICAgICAgICAgcmVmID0gdGhpcy5tYXREaWFsb2cub3Blbihjb21wb25lbnQsIHsgLi4uYmFzZUNvbmZpZywgLi4uY29uZmlnIH0pO1xuICAgICAgICAgIHRoaXMuZGlhbG9ncy5zcGxpY2UoaW5kZXgsIDEsIHsgY29tcG9uZW50LCByZWYgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmID0gdGhpcy5tYXREaWFsb2cub3Blbihjb21wb25lbnQsIHsgLi4uYmFzZUNvbmZpZywgLi4uY29uZmlnIH0pO1xuICAgICAgICAgIHRoaXMuZGlhbG9ncy5wdXNoKHsgY29tcG9uZW50LCByZWYgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKGNvbXBvbmVudCwgeyAuLi5iYXNlQ29uZmlnLCAuLi5jb25maWcgfSk7XG4gICAgICAgIHRoaXMuZGlhbG9ncy5wdXNoKHsgY29tcG9uZW50LCByZWYgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChyZWYpIHtcbiAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIGNsZWFuIHVwIG9wZW4gZGlhbG9nIHJlZmVyZW5jZVxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGlhbG9ncy5maW5kSW5kZXgoZWwgPT4gZWwucmVmID09PSByZWYpO1xuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgIHRoaXMuZGlhbG9ncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmO1xuICB9XG5cbiAgcmVnaXN0ZXJEaWFsb2coY29tcG9uZW50OiBUeXBlPHVua25vd24+LCBjb25maWc6IERpYWxvZ0NvbmZpZzx1bmtub3duPik6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnLnNldChjb21wb25lbnQsIGNvbmZpZyk7XG4gIH1cbn1cbiJdfQ==