@danske/sapphire-angular 3.8.1 → 3.9.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 (27) hide show
  1. package/esm2020/lib/button/src/button-group.component.mjs +2 -2
  2. package/esm2020/lib/button/src/button.component.mjs +2 -2
  3. package/esm2020/lib/button/src/toggle-button.component.mjs +2 -2
  4. package/esm2020/lib/field/public_api.mjs +2 -1
  5. package/esm2020/lib/field/src/field-error.directive.mjs +1 -1
  6. package/esm2020/lib/field/src/field.component.mjs +78 -18
  7. package/esm2020/lib/field/src/field.module.mjs +7 -5
  8. package/esm2020/lib/menu/src/menu-trigger.directive.mjs +16 -11
  9. package/esm2020/lib/modal/src/dialog/dialog-trigger.directive.mjs +4 -7
  10. package/esm2020/lib/modal/src/modal-trigger.directive.mjs +19 -4
  11. package/esm2020/lib/modal/src/panel/panel-trigger.directive.mjs +4 -7
  12. package/esm2020/lib/select/src/select/select.component.mjs +5 -4
  13. package/esm2020/lib/select/src/select-button/select-button.component.mjs +2 -2
  14. package/esm2020/lib/text-field/src/text-field.component.mjs +2 -2
  15. package/esm2020/lib/theme/src/theme-base.directive.mjs +1 -2
  16. package/esm2020/lib/theme/src/themes.mjs +4 -4
  17. package/fesm2015/danske-sapphire-angular.mjs +169 -88
  18. package/fesm2015/danske-sapphire-angular.mjs.map +1 -1
  19. package/fesm2020/danske-sapphire-angular.mjs +167 -89
  20. package/fesm2020/danske-sapphire-angular.mjs.map +1 -1
  21. package/lib/field/public_api.d.ts +1 -0
  22. package/lib/field/src/field-error.directive.d.ts +9 -1
  23. package/lib/field/src/field.component.d.ts +10 -2
  24. package/lib/field/src/field.module.d.ts +1 -1
  25. package/lib/menu/src/menu-trigger.directive.d.ts +1 -0
  26. package/lib/modal/src/modal-trigger.directive.d.ts +5 -2
  27. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
- import { Component, ContentChild, ContentChildren, Injectable, Input, isDevMode, ViewChild, ViewChildren, } from '@angular/core';
2
+ import { Component, ContentChild, ContentChildren, Injectable, Input, isDevMode, Optional, SkipSelf, ViewChild, ViewChildren, } from '@angular/core';
3
3
  import { FieldNoteDirective } from './field-note.directive';
4
4
  import { FieldErrorDirective } from './field-error.directive';
5
5
  import { LabelComponent } from '../../label/src/label.component';
@@ -12,7 +12,7 @@ import { CdkPortalOutlet } from '@angular/cdk/portal';
12
12
  import { UseComponentStylesOnHost } from '../../common/sapphire-view-encapsulation';
13
13
  import { ICON_SIZE_PROVIDER, } from '../../icon/src/icon-size-provider';
14
14
  import { RadioGroupComponent } from '../../radio/src/radio-group.component';
15
- import { iconWarning, iconError, iconCheckmarkOutline, } from '@danske/sapphire-icons/js';
15
+ import { iconCheckmarkOutline, iconError, iconWarning, } from '@danske/sapphire-icons/js';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "../../icon/public_api";
18
18
  import * as i2 from "../../common/sapphire-view-encapsulation";
@@ -33,6 +33,13 @@ FieldIconSizeProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0"
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FieldIconSizeProvider, decorators: [{
34
34
  type: Injectable
35
35
  }], ctorParameters: function () { return [{ type: FieldComponent }]; } });
36
+ const fieldHostBinding = {
37
+ class: 'sapphire-field',
38
+ '[class.sapphire-field--label-placement-side]': 'labelPlacement === "side"',
39
+ '[class.sapphire-field--no-width]': 'noDefaultWidth || !controlHasDefaultWidth()',
40
+ '[class.sapphire-field--label-alignment-top]': 'labelPlacement === "side" && hasRadioGroupChild()',
41
+ '[class.sapphire-field--md]': 'size === "md"',
42
+ };
36
43
  /**
37
44
  * A field is a common container for labelable controls such as select, radio group, text field,
38
45
  * etc.
@@ -56,8 +63,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
56
63
  * is determined based on the presence of @angular/form's {@link RequiredValidator}.
57
64
  */
58
65
  export class FieldComponent {
59
- constructor(changeDetectorRef, iconRegistry) {
66
+ constructor(changeDetectorRef, iconRegistry, fieldset) {
60
67
  this.changeDetectorRef = changeDetectorRef;
68
+ this.fieldset = fieldset;
61
69
  /**
62
70
  * Label placement with respect to the form control.
63
71
  * @default "above"
@@ -111,10 +119,36 @@ export class FieldComponent {
111
119
  }
112
120
  /**
113
121
  * Whether the field contains an error message (sp-field-error).
122
+ * Also checks if a parent fieldset has an error.
114
123
  */
115
124
  hasError(targetField) {
116
- return (this.error !== undefined &&
117
- (!targetField || !this.error.target || this.error.target === targetField));
125
+ // Check if this field has its own error
126
+ if (this._hasOwnError(targetField)) {
127
+ return true;
128
+ }
129
+ // Check if parent fieldset has an error targetting this field
130
+ if (this.fieldset) {
131
+ return this.fieldset.hasError(targetField);
132
+ }
133
+ return false;
134
+ }
135
+ _hasOwnError(targetField) {
136
+ if (!this.error) {
137
+ return false;
138
+ }
139
+ const { target } = this.error;
140
+ // If no target is specified, error applies to all controls
141
+ if (!target) {
142
+ return true;
143
+ }
144
+ // If the target is a FieldControl, check if it matches
145
+ if (this._isFieldControl(target)) {
146
+ return target === targetField;
147
+ }
148
+ return false;
149
+ }
150
+ _isFieldControl(target) {
151
+ return (typeof target === 'object' && target !== null && 'isDisabled' in target);
118
152
  }
119
153
  /**
120
154
  * If there are multiple controls, the field is only disabled when all of them are disabled
@@ -169,13 +203,13 @@ export class FieldComponent {
169
203
  this.changed = true;
170
204
  }
171
205
  }
172
- FieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IconRegistry }], target: i0.ɵɵFactoryTarget.Component });
206
+ FieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IconRegistry }, { token: FieldsetComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
173
207
  FieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: FieldComponent, selector: "sp-field", inputs: { necessityIndicator: "necessityIndicator", labelPlacement: "labelPlacement", noDefaultWidth: "noDefaultWidth", allowNoteAndError: "allowNoteAndError", size: "size" }, host: { properties: { "class.sapphire-field--label-placement-side": "labelPlacement === \"side\"", "class.sapphire-field--no-width": "noDefaultWidth || !controlHasDefaultWidth()", "class.sapphire-field--label-alignment-top": "labelPlacement === \"side\" && hasRadioGroupChild()", "class.sapphire-field--md": "size === \"md\"" }, classAttribute: "sapphire-field" }, providers: [
174
208
  {
175
209
  provide: ICON_SIZE_PROVIDER,
176
210
  useClass: FieldIconSizeProvider,
177
211
  },
178
- ], queries: [{ propertyName: "note", first: true, predicate: FieldNoteDirective, descendants: true }, { propertyName: "error", first: true, predicate: FieldErrorDirective, descendants: true }, { propertyName: "_fieldLabel", first: true, predicate: FieldLabelDirective, descendants: true }, { propertyName: "radioGroup", first: true, predicate: RadioGroupComponent, descendants: true }, { propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }, { propertyName: "requiredValidator", first: true, predicate: RequiredValidator, descendants: true }, { propertyName: "controls", predicate: FieldControl }], viewQueries: [{ propertyName: "label", first: true, predicate: LabelComponent, descendants: true }, { propertyName: "suffixPortalOutlet", predicate: CdkPortalOutlet, descendants: true }], hostDirectives: [{ directive: i2.UseComponentStylesOnHost }], ngImport: i0, template: "<div class=\"sapphire-field__label\" *ngIf=\"_fieldLabel\">\n <sp-label\n [necessityIndicator]=\"labelNecessityIndicator\"\n [for]=\"control?.getId?.()\"\n [disabled]=\"isDisabled()\"\n (labelClick)=\"control?.focus?.('keyboard')\"\n [size]=\"size\"\n >\n <ng-content select=\"sp-field-label\"></ng-content>\n <ng-content\n select=\"sp-help-button\"\n ngProjectAs=\"sp-help-button\"\n ></ng-content>\n </sp-label>\n</div>\n<div\n class=\"sapphire-field__control\"\n [ngClass]=\"{\n 'sapphire-field__control--group': isGroup\n }\"\n>\n <ng-content></ng-content>\n</div>\n<div class=\"sapphire-field__message\" *ngIf=\"note || error || _noteSuffixPortal\">\n <div class=\"sapphire-field__note-row sapphire-text--negative\" *ngIf=\"error\">\n <span class=\"sapphire-field__note-icon\">\n <sp-icon name=\"error\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-error\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n [ngClass]=\"{\n 'sapphire-text--positive': note?.variant === 'success',\n 'sapphire-text--warning': note?.variant === 'warning'\n }\"\n *ngIf=\"note && (!error || allowNoteAndError)\"\n >\n <span class=\"sapphire-field__note-icon\" *ngIf=\"note?.icon\">\n <sp-icon [name]=\"note?.icon\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-note\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!error && _noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n *ngIf=\"!note && !error && _noteSuffixPortal\"\n >\n <ng-container>\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [".sapphire-field{display:inline-grid;grid-template-columns:auto;row-gap:var(--sapphire-semantic-size-spacing-2xs);column-gap:var(--sapphire-semantic-size-spacing-md);font-family:var(--sapphire-semantic-font-name-default);grid-auto-rows:min-content;width:var(--sapphire-semantic-size-width-field);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.sapphire-field--no-width{width:auto}fieldset.sapphire-field{border:0;margin:0;padding:0}.sapphire-field__label{order:1;justify-content:end}legend.sapphire-field__label{padding:0;float:left}.sapphire-field__control{order:2;width:100%;min-width:0;line-height:var(--sapphire-semantic-size-line-height-md);font-size:var(--sapphire-semantic-size-font-control-lg)}.sapphire-field--md .sapphire-field__control{font-size:var(--sapphire-semantic-size-font-control-md)}.sapphire-field__control--group{display:flex;gap:var(--sapphire-semantic-size-spacing-xs)}.sapphire-field--md .sapphire-field__control--group{gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field--no-shrink .sapphire-field__control{min-width:initial}.sapphire-field__message{min-width:100%;max-width:min-content;order:3;display:flex;flex-direction:column;gap:var(--sapphire-semantic-size-spacing-4xs);padding:var(--sapphire-semantic-size-spacing-4xs) 0}.sapphire-field__note-row{display:flex;align-items:flex-start;gap:var(--sapphire-semantic-size-spacing-xs);font-size:var(--sapphire-semantic-size-font-label-md);line-height:var(--sapphire-semantic-size-line-height-md);color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-field--md .sapphire-field__note-row{font-size:var(--sapphire-semantic-size-font-label-sm);line-height:var(--sapphire-semantic-size-line-height-sm);gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field__note{flex:1}.sapphire-field__note-icon{display:inline-flex;line-height:0;padding-top:var(--sapphire-semantic-size-spacing-4xs)}.sapphire-field--md .sapphire-field__note-icon{padding-top:0}.sapphire-field.is-disabled .sapphire-field__control{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-field.is-disabled .sapphire-field__control *{cursor:inherit}.sapphire-field--label-placement-side{grid-template-columns:max-content auto;width:auto}.sapphire-field--label-placement-side:not(.sapphire-field--no-width) .sapphire-field__control{width:var(--sapphire-semantic-size-width-field)}.sapphire-field--label-placement-side .sapphire-field__message{grid-column:2}.sapphire-field--label-placement-side .sapphire-field__label{display:flex;align-items:center;max-height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-field--label-placement-side.sapphire-field--md .sapphire-field__label{max-height:var(--sapphire-semantic-size-height-control-md)}.sapphire-field--label-placement-side.sapphire-field--label-alignment-top .sapphire-field__label{align-items:flex-start;max-height:unset}.sapphire-fieldset{display:inline-flex;flex-direction:column;width:min-content;gap:var(--sapphire-semantic-size-spacing-lg)}.sapphire-fieldset .sapphire-field--label-placement-side{grid-template-columns:1fr min-content}.sapphire-fieldset .sapphire-field--label-placement-side .sapphire-field__label{white-space:nowrap}.sapphire-text{font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-foreground-primary);font-weight:var(--sapphire-semantic-font-weight-default-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-text--strong{font-weight:var(--sapphire-semantic-font-weight-default-bold)}.sapphire-text--semibold{font-weight:var(--sapphire-semantic-font-weight-default-medium)}.sapphire-text--underlined{text-decoration:underline}.sapphire-text--secondary{color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-text--informative{color:var(--sapphire-semantic-color-foreground-accent)}.sapphire-text--positive{color:var(--sapphire-semantic-color-foreground-positive)}.sapphire-text--warning{color:var(--sapphire-semantic-color-foreground-warning)}.sapphire-text--negative{color:var(--sapphire-semantic-color-foreground-negative)}.sapphire-text--heading-2xl,.sapphire-text--heading-xl,.sapphire-text--heading-lg,.sapphire-text--heading-md,.sapphire-text--heading-sm,.sapphire-text--heading-xs{margin-top:0;margin-bottom:0;line-height:var(--sapphire-global-size-line-height-sm);letter-spacing:-.01em}.sapphire-text--heading-2xl{font-weight:var(--sapphire-semantic-font-weight-default-regular);font-size:var(--sapphire-semantic-size-font-heading-2xl)}.sapphire-text--heading-xl{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xl)}.sapphire-text--heading-lg{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-lg)}.sapphire-text--heading-md{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-md)}.sapphire-text--heading-sm{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-sm)}.sapphire-text--heading-xs{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xs)}.sapphire-text--subheading-md,.sapphire-text--subheading-sm{line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--subheading-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--subheading-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--body-lg,.sapphire-text--body-md,.sapphire-text--body-sm,.sapphire-text--body-xs{line-height:var(--sapphire-global-size-line-height-md);margin-top:0;margin-bottom:0}.sapphire-text--body-lg{font-size:var(--sapphire-semantic-size-font-body-lg)}.sapphire-text--body-md{font-size:var(--sapphire-semantic-size-font-body-md)}.sapphire-text--body-sm{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--body-xs{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--caption-md,.sapphire-text--caption-sm{font-weight:var(--sapphire-semantic-font-weight-default-bold);line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--caption-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--caption-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i5.LabelComponent, selector: "sp-label", inputs: ["id", "for", "disabled", "necessityIndicator", "size"], outputs: ["labelClick"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i6.IconComponent, selector: "sp-icon", inputs: ["name", "size", "color"] }] });
212
+ ], queries: [{ propertyName: "note", first: true, predicate: FieldNoteDirective, descendants: true }, { propertyName: "error", first: true, predicate: FieldErrorDirective, descendants: true }, { propertyName: "_fieldLabel", first: true, predicate: FieldLabelDirective }, { propertyName: "radioGroup", first: true, predicate: RadioGroupComponent, descendants: true }, { propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }, { propertyName: "requiredValidator", first: true, predicate: RequiredValidator, descendants: true }, { propertyName: "controls", predicate: FieldControl, descendants: true }], viewQueries: [{ propertyName: "label", first: true, predicate: LabelComponent, descendants: true }, { propertyName: "suffixPortalOutlet", predicate: CdkPortalOutlet, descendants: true }], hostDirectives: [{ directive: i2.UseComponentStylesOnHost }], ngImport: i0, template: "<div class=\"sapphire-field__label\" *ngIf=\"_fieldLabel\">\n <sp-label\n [necessityIndicator]=\"labelNecessityIndicator\"\n [for]=\"control?.getId?.()\"\n [disabled]=\"isDisabled()\"\n (labelClick)=\"control?.focus?.('keyboard')\"\n [size]=\"size\"\n >\n <ng-content select=\"sp-field-label\"></ng-content>\n <ng-content\n select=\"sp-help-button\"\n ngProjectAs=\"sp-help-button\"\n ></ng-content>\n </sp-label>\n</div>\n<div\n class=\"sapphire-field__control\"\n [ngClass]=\"{\n 'sapphire-field__control--group': isGroup\n }\"\n>\n <ng-content></ng-content>\n</div>\n<div class=\"sapphire-field__message\" *ngIf=\"note || error || _noteSuffixPortal\">\n <div class=\"sapphire-field__note-row sapphire-text--negative\" *ngIf=\"error\">\n <span class=\"sapphire-field__note-icon\">\n <sp-icon name=\"error\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-error\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n [ngClass]=\"{\n 'sapphire-text--positive': note?.variant === 'success',\n 'sapphire-text--warning': note?.variant === 'warning'\n }\"\n *ngIf=\"note && (!error || allowNoteAndError)\"\n >\n <span class=\"sapphire-field__note-icon\" *ngIf=\"note?.icon\">\n <sp-icon [name]=\"note?.icon\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-note\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!error && _noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n *ngIf=\"!note && !error && _noteSuffixPortal\"\n >\n <ng-container>\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [".sapphire-field{display:inline-grid;grid-template-columns:auto;row-gap:var(--sapphire-semantic-size-spacing-2xs);column-gap:var(--sapphire-semantic-size-spacing-md);font-family:var(--sapphire-semantic-font-name-default);grid-auto-rows:min-content;width:var(--sapphire-semantic-size-width-field);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.sapphire-field--no-width{width:auto}fieldset.sapphire-field{border:0;margin:0;padding:0}.sapphire-field__label{order:1;justify-content:end}legend.sapphire-field__label{padding:0;float:left}.sapphire-field__control{order:2;width:100%;min-width:0;line-height:var(--sapphire-semantic-size-line-height-md);font-size:var(--sapphire-semantic-size-font-control-lg)}.sapphire-field--md .sapphire-field__control{font-size:var(--sapphire-semantic-size-font-control-md)}.sapphire-field__control--group{display:flex;gap:var(--sapphire-semantic-size-spacing-xs)}.sapphire-field--md .sapphire-field__control--group{gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field--no-shrink .sapphire-field__control{min-width:initial}.sapphire-field__message{min-width:100%;max-width:min-content;order:3;display:flex;flex-direction:column;gap:var(--sapphire-semantic-size-spacing-4xs);padding:var(--sapphire-semantic-size-spacing-4xs) 0}.sapphire-field__note-row{display:flex;align-items:flex-start;gap:var(--sapphire-semantic-size-spacing-xs);font-size:var(--sapphire-semantic-size-font-label-md);line-height:var(--sapphire-semantic-size-line-height-md);color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-field--md .sapphire-field__note-row{font-size:var(--sapphire-semantic-size-font-label-sm);line-height:var(--sapphire-semantic-size-line-height-sm);gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field__note{flex:1}.sapphire-field__note-icon{display:inline-flex;line-height:0;padding-top:var(--sapphire-semantic-size-spacing-4xs)}.sapphire-field--md .sapphire-field__note-icon{padding-top:0}.sapphire-field.is-disabled .sapphire-field__control{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-field.is-disabled .sapphire-field__control *{cursor:inherit}.sapphire-field--label-placement-side{grid-template-columns:max-content auto;width:auto}.sapphire-field--label-placement-side:not(.sapphire-field--no-width) .sapphire-field__control{width:var(--sapphire-semantic-size-width-field)}.sapphire-field--label-placement-side .sapphire-field__message{grid-column:2}.sapphire-field--label-placement-side .sapphire-field__label{display:flex;align-items:center;max-height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-field--label-placement-side.sapphire-field--md .sapphire-field__label{max-height:var(--sapphire-semantic-size-height-control-md)}.sapphire-field--label-placement-side.sapphire-field--label-alignment-top .sapphire-field__label{align-items:flex-start;max-height:unset}.sapphire-fieldset{display:inline-flex;flex-direction:column;width:min-content;gap:var(--sapphire-semantic-size-spacing-lg)}.sapphire-fieldset .sapphire-field--label-placement-side{grid-template-columns:1fr min-content}.sapphire-fieldset .sapphire-field--label-placement-side .sapphire-field__label{white-space:nowrap}.sapphire-text{font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-foreground-primary);font-weight:var(--sapphire-semantic-font-weight-default-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-text--strong{font-weight:var(--sapphire-semantic-font-weight-default-bold)}.sapphire-text--semibold{font-weight:var(--sapphire-semantic-font-weight-default-medium)}.sapphire-text--underlined{text-decoration:underline}.sapphire-text--secondary{color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-text--informative{color:var(--sapphire-semantic-color-foreground-accent)}.sapphire-text--positive{color:var(--sapphire-semantic-color-foreground-positive)}.sapphire-text--warning{color:var(--sapphire-semantic-color-foreground-warning)}.sapphire-text--negative{color:var(--sapphire-semantic-color-foreground-negative)}.sapphire-text--heading-2xl,.sapphire-text--heading-xl,.sapphire-text--heading-lg,.sapphire-text--heading-md,.sapphire-text--heading-sm,.sapphire-text--heading-xs{margin-top:0;margin-bottom:0;line-height:var(--sapphire-global-size-line-height-sm);letter-spacing:-.01em}.sapphire-text--heading-2xl{font-weight:var(--sapphire-semantic-font-weight-default-regular);font-size:var(--sapphire-semantic-size-font-heading-2xl)}.sapphire-text--heading-xl{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xl)}.sapphire-text--heading-lg{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-lg)}.sapphire-text--heading-md{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-md)}.sapphire-text--heading-sm{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-sm)}.sapphire-text--heading-xs{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xs)}.sapphire-text--subheading-md,.sapphire-text--subheading-sm{line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--subheading-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--subheading-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--body-lg,.sapphire-text--body-md,.sapphire-text--body-sm,.sapphire-text--body-xs{line-height:var(--sapphire-global-size-line-height-md);margin-top:0;margin-bottom:0}.sapphire-text--body-lg{font-size:var(--sapphire-semantic-size-font-body-lg)}.sapphire-text--body-md{font-size:var(--sapphire-semantic-size-font-body-md)}.sapphire-text--body-sm{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--body-xs{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--caption-md,.sapphire-text--caption-sm{font-weight:var(--sapphire-semantic-font-weight-default-bold);line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--caption-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--caption-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i5.LabelComponent, selector: "sp-label", inputs: ["id", "for", "disabled", "necessityIndicator", "size"], outputs: ["labelClick"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i6.IconComponent, selector: "sp-icon", inputs: ["name", "size", "color"] }] });
179
213
  __decorate([
180
214
  CoerceBoolean
181
215
  ], FieldComponent.prototype, "necessityIndicator", void 0);
@@ -187,19 +221,17 @@ __decorate([
187
221
  ], FieldComponent.prototype, "allowNoteAndError", void 0);
188
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FieldComponent, decorators: [{
189
223
  type: Component,
190
- args: [{ selector: 'sp-field', host: {
191
- class: 'sapphire-field',
192
- '[class.sapphire-field--label-placement-side]': 'labelPlacement === "side"',
193
- '[class.sapphire-field--no-width]': 'noDefaultWidth || !controlHasDefaultWidth()',
194
- '[class.sapphire-field--label-alignment-top]': 'labelPlacement === "side" && hasRadioGroupChild()',
195
- '[class.sapphire-field--md]': 'size === "md"',
196
- }, hostDirectives: [UseComponentStylesOnHost], providers: [
224
+ args: [{ selector: 'sp-field', host: fieldHostBinding, hostDirectives: [UseComponentStylesOnHost], providers: [
197
225
  {
198
226
  provide: ICON_SIZE_PROVIDER,
199
227
  useClass: FieldIconSizeProvider,
200
228
  },
201
229
  ], standalone: false, template: "<div class=\"sapphire-field__label\" *ngIf=\"_fieldLabel\">\n <sp-label\n [necessityIndicator]=\"labelNecessityIndicator\"\n [for]=\"control?.getId?.()\"\n [disabled]=\"isDisabled()\"\n (labelClick)=\"control?.focus?.('keyboard')\"\n [size]=\"size\"\n >\n <ng-content select=\"sp-field-label\"></ng-content>\n <ng-content\n select=\"sp-help-button\"\n ngProjectAs=\"sp-help-button\"\n ></ng-content>\n </sp-label>\n</div>\n<div\n class=\"sapphire-field__control\"\n [ngClass]=\"{\n 'sapphire-field__control--group': isGroup\n }\"\n>\n <ng-content></ng-content>\n</div>\n<div class=\"sapphire-field__message\" *ngIf=\"note || error || _noteSuffixPortal\">\n <div class=\"sapphire-field__note-row sapphire-text--negative\" *ngIf=\"error\">\n <span class=\"sapphire-field__note-icon\">\n <sp-icon name=\"error\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-error\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n [ngClass]=\"{\n 'sapphire-text--positive': note?.variant === 'success',\n 'sapphire-text--warning': note?.variant === 'warning'\n }\"\n *ngIf=\"note && (!error || allowNoteAndError)\"\n >\n <span class=\"sapphire-field__note-icon\" *ngIf=\"note?.icon\">\n <sp-icon [name]=\"note?.icon\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-note\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!error && _noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n *ngIf=\"!note && !error && _noteSuffixPortal\"\n >\n <ng-container>\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [".sapphire-field{display:inline-grid;grid-template-columns:auto;row-gap:var(--sapphire-semantic-size-spacing-2xs);column-gap:var(--sapphire-semantic-size-spacing-md);font-family:var(--sapphire-semantic-font-name-default);grid-auto-rows:min-content;width:var(--sapphire-semantic-size-width-field);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.sapphire-field--no-width{width:auto}fieldset.sapphire-field{border:0;margin:0;padding:0}.sapphire-field__label{order:1;justify-content:end}legend.sapphire-field__label{padding:0;float:left}.sapphire-field__control{order:2;width:100%;min-width:0;line-height:var(--sapphire-semantic-size-line-height-md);font-size:var(--sapphire-semantic-size-font-control-lg)}.sapphire-field--md .sapphire-field__control{font-size:var(--sapphire-semantic-size-font-control-md)}.sapphire-field__control--group{display:flex;gap:var(--sapphire-semantic-size-spacing-xs)}.sapphire-field--md .sapphire-field__control--group{gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field--no-shrink .sapphire-field__control{min-width:initial}.sapphire-field__message{min-width:100%;max-width:min-content;order:3;display:flex;flex-direction:column;gap:var(--sapphire-semantic-size-spacing-4xs);padding:var(--sapphire-semantic-size-spacing-4xs) 0}.sapphire-field__note-row{display:flex;align-items:flex-start;gap:var(--sapphire-semantic-size-spacing-xs);font-size:var(--sapphire-semantic-size-font-label-md);line-height:var(--sapphire-semantic-size-line-height-md);color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-field--md .sapphire-field__note-row{font-size:var(--sapphire-semantic-size-font-label-sm);line-height:var(--sapphire-semantic-size-line-height-sm);gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field__note{flex:1}.sapphire-field__note-icon{display:inline-flex;line-height:0;padding-top:var(--sapphire-semantic-size-spacing-4xs)}.sapphire-field--md .sapphire-field__note-icon{padding-top:0}.sapphire-field.is-disabled .sapphire-field__control{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-field.is-disabled .sapphire-field__control *{cursor:inherit}.sapphire-field--label-placement-side{grid-template-columns:max-content auto;width:auto}.sapphire-field--label-placement-side:not(.sapphire-field--no-width) .sapphire-field__control{width:var(--sapphire-semantic-size-width-field)}.sapphire-field--label-placement-side .sapphire-field__message{grid-column:2}.sapphire-field--label-placement-side .sapphire-field__label{display:flex;align-items:center;max-height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-field--label-placement-side.sapphire-field--md .sapphire-field__label{max-height:var(--sapphire-semantic-size-height-control-md)}.sapphire-field--label-placement-side.sapphire-field--label-alignment-top .sapphire-field__label{align-items:flex-start;max-height:unset}.sapphire-fieldset{display:inline-flex;flex-direction:column;width:min-content;gap:var(--sapphire-semantic-size-spacing-lg)}.sapphire-fieldset .sapphire-field--label-placement-side{grid-template-columns:1fr min-content}.sapphire-fieldset .sapphire-field--label-placement-side .sapphire-field__label{white-space:nowrap}.sapphire-text{font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-foreground-primary);font-weight:var(--sapphire-semantic-font-weight-default-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-text--strong{font-weight:var(--sapphire-semantic-font-weight-default-bold)}.sapphire-text--semibold{font-weight:var(--sapphire-semantic-font-weight-default-medium)}.sapphire-text--underlined{text-decoration:underline}.sapphire-text--secondary{color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-text--informative{color:var(--sapphire-semantic-color-foreground-accent)}.sapphire-text--positive{color:var(--sapphire-semantic-color-foreground-positive)}.sapphire-text--warning{color:var(--sapphire-semantic-color-foreground-warning)}.sapphire-text--negative{color:var(--sapphire-semantic-color-foreground-negative)}.sapphire-text--heading-2xl,.sapphire-text--heading-xl,.sapphire-text--heading-lg,.sapphire-text--heading-md,.sapphire-text--heading-sm,.sapphire-text--heading-xs{margin-top:0;margin-bottom:0;line-height:var(--sapphire-global-size-line-height-sm);letter-spacing:-.01em}.sapphire-text--heading-2xl{font-weight:var(--sapphire-semantic-font-weight-default-regular);font-size:var(--sapphire-semantic-size-font-heading-2xl)}.sapphire-text--heading-xl{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xl)}.sapphire-text--heading-lg{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-lg)}.sapphire-text--heading-md{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-md)}.sapphire-text--heading-sm{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-sm)}.sapphire-text--heading-xs{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xs)}.sapphire-text--subheading-md,.sapphire-text--subheading-sm{line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--subheading-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--subheading-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--body-lg,.sapphire-text--body-md,.sapphire-text--body-sm,.sapphire-text--body-xs{line-height:var(--sapphire-global-size-line-height-md);margin-top:0;margin-bottom:0}.sapphire-text--body-lg{font-size:var(--sapphire-semantic-size-font-body-lg)}.sapphire-text--body-md{font-size:var(--sapphire-semantic-size-font-body-md)}.sapphire-text--body-sm{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--body-xs{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--caption-md,.sapphire-text--caption-sm{font-weight:var(--sapphire-semantic-font-weight-default-bold);line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--caption-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--caption-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}\n"] }]
202
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.IconRegistry }]; }, propDecorators: { necessityIndicator: [{
230
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.IconRegistry }, { type: FieldsetComponent, decorators: [{
231
+ type: Optional
232
+ }, {
233
+ type: SkipSelf
234
+ }] }]; }, propDecorators: { necessityIndicator: [{
203
235
  type: Input
204
236
  }], labelPlacement: [{
205
237
  type: Input
@@ -220,10 +252,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
220
252
  args: [LabelComponent]
221
253
  }], _fieldLabel: [{
222
254
  type: ContentChild,
223
- args: [FieldLabelDirective]
255
+ args: [FieldLabelDirective, { descendants: false }]
224
256
  }], controls: [{
225
257
  type: ContentChildren,
226
- args: [FieldControl]
258
+ args: [FieldControl, { descendants: true }]
227
259
  }], radioGroup: [{
228
260
  type: ContentChild,
229
261
  args: [RadioGroupComponent]
@@ -237,4 +269,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
237
269
  type: ViewChildren,
238
270
  args: [CdkPortalOutlet]
239
271
  }] } });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC9zcmMvZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC9zcmMvZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRixPQUFPLEVBQ0wsa0JBQWtCLEdBRW5CLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFNUUsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVB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QkFBa0I7Z0JBSWhDLEtBQUs7c0JBREosWUFBWTt1QkFBQyxtQkFBbUI7Z0JBSWpDLEtBQUs7c0JBREosU0FBUzt1QkFBQyxjQUFjO2dCQUl6QixXQUFXO3NCQURWLFlBQVk7dUJBQUMsbUJBQW1CO2dCQVFqQyxRQUFRO3NCQURQLGVBQWU7dUJBQUMsWUFBWTtnQkFJN0IsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLG1CQUFtQjtnQkFJekIsU0FBUztzQkFEaEIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUl0QyxpQkFBaUI7c0JBRHhCLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk5QyxrQkFBa0I7c0JBRHpCLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbmplY3RhYmxlLFxuICBJbnB1dCxcbiAgaXNEZXZNb2RlLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkTm90ZURpcmVjdGl2ZSB9IGZyb20gJy4vZmllbGQtbm90ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmllbGRFcnJvckRpcmVjdGl2ZSB9IGZyb20gJy4vZmllbGQtZXJyb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGFiZWwvc3JjL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIFJlcXVpcmVkVmFsaWRhdG9yLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRDb250cm9sIH0gZnJvbSAnLi9maWVsZC1jb250cm9sJztcbmltcG9ydCB7IEZpZWxkTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL2ZpZWxkLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQsIERvbVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVXNlQ29tcG9uZW50U3R5bGVzT25Ib3N0IH0gZnJvbSAnLi4vLi4vY29tbW9uL3NhcHBoaXJlLXZpZXctZW5jYXBzdWxhdGlvbic7XG5pbXBvcnQge1xuICBJQ09OX1NJWkVfUFJPVklERVIsXG4gIEljb25TaXplUHJvdmlkZXIsXG59IGZyb20gJy4uLy4uL2ljb24vc3JjL2ljb24tc2l6ZS1wcm92aWRlcic7XG5pbXBvcnQgeyBSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmFkaW8vc3JjL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9pY29uL3B1YmxpY19hcGknO1xuaW1wb3J0IHtcbiAgaWNvbldhcm5pbmcsXG4gIGljb25FcnJvcixcbiAgaWNvbkNoZWNrbWFya091dGxpbmUsXG59IGZyb20gJ0BkYW5za2Uvc2FwcGhpcmUtaWNvbnMvanMnO1xuXG5ASW5qZWN0YWJsZSgpXG5jbGFzcyBGaWVsZEljb25TaXplUHJvdmlkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpZWxkOiBGaWVsZENvbXBvbmVudCkge31cblxuICBnZXQgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5zaXplID09PSAnbGcnID8gJ21kJyA6ICdzbSc7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGZpZWxkIGlzIGEgY29tbW9uIGNvbnRhaW5lciBmb3IgbGFiZWxhYmxlIGNvbnRyb2xzIHN1Y2ggYXMgc2VsZWN0LCByYWRpbyBncm91cCwgdGV4dCBmaWVsZCxcbiAqIGV0Yy5cbiAqIEluIGFkZGl0aW9uIHRvIHRoZSBmaWVsZCBjb250cm9sIChzcC1zZWxlY3QsIHNwLXJhZGlvLWdyb3VwLCBzcC10ZXh0LWZpZWxkKSwgdGhlIGZvbGxvd2luZ1xuICogY29tcG9uZW50cyBjYW4gYmUgdXNlZCBpbnNpZGUgYSBmaWVsZDpcbiAqIC0gc3AtZmllbGQtbGFiZWw6IGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGZpZWxkLlxuICogLSBzcC1oZWxwLWJ1dHRvbjogaXMgcGxhY2VkIGluIHRoZSBsYWJlbCBhcmVhLCBuZXh0IHRvIHRoZSBsYWJlbCB0ZXh0XG4gKiAtIHNwLWZpZWxkLWVycm9yOiBpcyB1c2VkIHRvIHByb3ZpZGUgYW4gZXJyb3IgbWVzc2FnZSwgd2hpY2ggaXMgcGxhY2VkIGJlbG93IHRoZSBmaWVsZCdzXG4gKiBjb250cm9sLlxuICogLSBzcC1maWVsZC1ub3RlOiBpcyB1c2VkIHRvIHByb3ZpZGUgYSBub3RlLCB3aGljaCBpcyBwbGFjZWQgYmVsb3cgdGhlIGZpZWxkJ3MgY29udHJvbC4gT25seVxuICogc2hvd25cbiAqICAgd2hlbiB0aGVyZSBpcyBubyBlcnJvclxuICogLSBzcC1maWVsZC1ub3RlLXN1ZmZpeDogaXMgdXNlZCB0byBwcm92aWRlIGEgc3VmZml4LCB3aGljaCBpcyBwbGFjZWQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlXG4gKiBub3RlIGFyZWEuXG4gKlxuICogQWRkaXRpb25hbGx5LCBmaWVsZCBzdXBwb3J0czpcbiAqIC0gTGFiZWwgcGxhY2VtZW50IGVpdGhlciBhYm92ZSAoZGVmYXVsdCkgb3Igb24gdGhlIHNpZGUgb2YgdGhlIGNvbnRyb2wuXG4gKiAtIEFzc29jaWF0aW5nIGxhYmVsIHdpdGggdGhlIGNvbnRyb2wsIHNvIHRoYXQgY2xpY2tpbmcgdGhlIGxhYmVsIGZvY3VzZXMgdGhlIGNvbnRyb2wsIHNob3dpbmdcbiAqICAgZm9jdXMgcmluZy5cbiAqIC0gT3B0aW9uYWxseSBzaG93aW5nIG5lY2Vzc2l0eSBpbmRpY2F0b3IgaW4gdGhlIGxhYmVsLiBGaWVsZHMgbmVjZXNzaXR5IChyZXF1aXJlZCBvciBvcHRpb25hbClcbiAqICAgaXMgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgQGFuZ3VsYXIvZm9ybSdzIHtAbGluayBSZXF1aXJlZFZhbGlkYXRvcn0uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnc2FwcGhpcmUtZmllbGQnLFxuICAgICdbY2xhc3Muc2FwcGhpcmUtZmllbGQtLWxhYmVsLXBsYWNlbWVudC1zaWRlXSc6ICdsYWJlbFBsYWNlbWVudCA9PT0gXCJzaWRlXCInLFxuICAgICdbY2xhc3Muc2FwcGhpcmUtZmllbGQtLW5vLXdpZHRoXSc6XG4gICAgICAnbm9EZWZhdWx0V2lkdGggfHwgIWNvbnRyb2xIYXNEZWZhdWx0V2lkdGgoKScsXG4gICAgJ1tjbGFzcy5zYXBwaGlyZS1maWVsZC0tbGFiZWwtYWxpZ25tZW50LXRvcF0nOlxuICAgICAgJ2xhYmVsUGxhY2VtZW50ID09PSBcInNpZGVcIiAmJiBoYXNSYWRpb0dyb3VwQ2hpbGQoKScsXG4gICAgJ1tjbGFzcy5zYXBwaGlyZS1maWVsZC0tbWRdJzogJ3NpemUgPT09IFwibWRcIicsXG4gIH0sXG4gIGhvc3REaXJlY3RpdmVzOiBbVXNlQ29tcG9uZW50U3R5bGVzT25Ib3N0XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSUNPTl9TSVpFX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEZpZWxkSWNvblNpemVQcm92aWRlcixcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgRmllbGRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLCBJY29uU2l6ZVByb3ZpZGVyXG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBuZWNlc3NpdHkgaW5kaWNhdG9yIHNob3VsZCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgbmVjZXNzaXR5SW5kaWNhdG9yPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBMYWJlbCBwbGFjZW1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSBmb3JtIGNvbnRyb2wuXG4gICAqIEBkZWZhdWx0IFwiYWJvdmVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgbGFiZWxQbGFjZW1lbnQ/OiAnc2lkZScgfCAnYWJvdmUnID0gJ2Fib3ZlJztcblxuICAvKipcbiAgICogQXZvaWQgdGhlIGRlZmF1bHQgd2lkdGhcbiAgICovXG4gIEBJbnB1dCgpXG4gIEBDb2VyY2VCb29sZWFuXG4gIG5vRGVmYXVsdFdpZHRoPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBBbGxvdyBib3RoIG5vdGUgYW5kIGVycm9yIGF0IHRoZSBzYW1lIHRpbWVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIEBDb2VyY2VCb29sZWFuXG4gIGFsbG93Tm90ZUFuZEVycm9yPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcImxnXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNpemU/OiAnbGcnIHwgJ21kJyA9ICdsZyc7XG5cbiAgQENvbnRlbnRDaGlsZChGaWVsZE5vdGVEaXJlY3RpdmUpXG4gIG5vdGU/OiBGaWVsZE5vdGVEaXJlY3RpdmU7XG5cbiAgQENvbnRlbnRDaGlsZChGaWVsZEVycm9yRGlyZWN0aXZlKVxuICBlcnJvcj86IEZpZWxkRXJyb3JEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZChMYWJlbENvbXBvbmVudClcbiAgbGFiZWw/OiBMYWJlbENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEZpZWxkTGFiZWxEaXJlY3RpdmUpXG4gIF9maWVsZExhYmVsPzogRmllbGRMYWJlbERpcmVjdGl2ZTtcblxuICAvKipcbiAgICogRm9jdXNhYmxlLCBsYWJlbGFibGUgY29udHJvbC4gQ29tcG9uZW50cyBsaWtlIFNlbGVjdCwgUmFkaW9Hcm91cCBvciBUZXh0RmllbGQsXG4gICAqIHRoYXQgYXJlIG1lYW50IHRvIHJlbmRlcmVkIGluc2lkZSBzcC1maWVsZCwgcHJvdmlkZSBGaWVsZENvbnRyb2wuXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEZpZWxkQ29udHJvbClcbiAgY29udHJvbHM/OiBRdWVyeUxpc3Q8RmllbGRDb250cm9sPjtcblxuICBAQ29udGVudENoaWxkKFJhZGlvR3JvdXBDb21wb25lbnQpXG4gIHJhZGlvR3JvdXA/OiBSYWRpb0dyb3VwQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoTmdDb250cm9sLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgbmdDb250cm9sPzogTmdDb250cm9sO1xuXG4gIEBDb250ZW50Q2hpbGQoUmVxdWlyZWRWYWxpZGF0b3IsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHJpdmF0ZSByZXF1aXJlZFZhbGlkYXRvcj86IFJlcXVpcmVkVmFsaWRhdG9yO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2RrUG9ydGFsT3V0bGV0KVxuICBwcml2YXRlIHN1ZmZpeFBvcnRhbE91dGxldDogUXVlcnlMaXN0PENka1BvcnRhbE91dGxldD4gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogSXMgc2V0IHZpYSBmaWVsZC1ub3RlLWFmZml4IGRpcmVjdGl2ZS4gQ29udGVudENoaWxkIHF1ZXJ5IGNhbid0IGJlIHVzZWQgc2luY2Ugd2UgbmVlZFxuICAgKiB0byBxdWVyeSBmcm9tIGNvbnRlbnQgLT4gdmlldyBpbiBzb21lIGNhc2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9ub3RlU3VmZml4UG9ydGFsOiBEb21Qb3J0YWw8SFRNTEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBjaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgaWNvblJlZ2lzdHJ5OiBJY29uUmVnaXN0cnlcbiAgKSB7XG4gICAgaWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbihpY29uQ2hlY2ttYXJrT3V0bGluZSk7XG4gICAgaWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbihpY29uV2FybmluZyk7XG4gICAgaWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbihpY29uRXJyb3IpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICghdGhpcy5jb250cm9scyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnc3AtZmllbGQgaXMgcmVuZGVyZWQgd2l0aG91dCBhbnkgY29udHJvbCBsaWtlIHNwLXNlbGVjdCwgc3AtdGV4dC1maWVsZCwgb3Igc3AtcmFkaW8tZ3JvdXAgaW5zaWRlIGl0LidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3VmZml4UG9ydGFsT3V0bGV0IS5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fbm90ZVN1ZmZpeFBvcnRhbD8uaXNBdHRhY2hlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgLy8gSXQgbWlnaHQgYmUgYSBidWcgaW4gQGFuZ3VsYXIvY2RrL3BvcnRhbCwgYnV0IHdoZW4gdGhlIHBvcnRhbCBvdXRsZXQgdGhhdCByZW5kZXJzXG4gICAgICAgIC8vIGEgRG9tUG9ydGFsIGlzIGNoYW5nZWQsIHRoZSBEb21Qb3J0YWwgZ2V0cyBkZXRhY2hlZCBhbmQgbm90IHJlYXR0YWNoZWQgdG8gdGhlIG5ldyBvdXRsZXQuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgcmVhdHRhY2hpbmcgaXMgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZS5cbiAgICAgICAgdGhpcy5zdWZmaXhQb3J0YWxPdXRsZXQ/LmZpcnN0Py5kZXRhY2goKTtcbiAgICAgICAgdGhpcy5zdWZmaXhQb3J0YWxPdXRsZXQ/LmZpcnN0Py5hdHRhY2godGhpcy5fbm90ZVN1ZmZpeFBvcnRhbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgLyoqXG4gICAgICogU2luY2Ugbm90ZSBzdWZmaXggcG9ydGFsIGlzIGNoYW5nZWQgYnkgRmllbGROb3RlU3VmZml4RGlyZWN0aXZlLFxuICAgICAqIGl0IGNyZWF0ZXMgYSBjYXNlIG9mIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgICogU28gd2UgbmVlZCB0byBtYW51YWxseSBkZXRlY3QgY2hhbmdlcyB3aGVuIHN1ZmZpeCBwb3J0YWwgaXMgY2hhbmdlZC5cbiAgICAgKiBXZSBXb3VsZG4ndCBuZWVkIHRvIGRvIHNvLCBpZiB3ZSBjb3VsZCBxdWVyeSBGaWVsZE5vdGVTdWZmaXhEaXJlY3RpdmVcbiAgICAgKiB2aWEgQENvbnRlbnRDaGlsZCwgYnV0IHdlIGNhbid0IGJlY2F1c2UgaXQgY2FuIGJlIGluIHRoZSB2aWV3IG9mIGEgY29udGVudFxuICAgICAqIGNoaWxkLCB3aGljaCBtYWtlcyBpdCBub3QgcXVlcnktYWJsZS5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5jaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuY2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBjb250YWlucyBhbiBlcnJvciBtZXNzYWdlIChzcC1maWVsZC1lcnJvcikuXG4gICAqL1xuICBoYXNFcnJvcih0YXJnZXRGaWVsZD86IEZpZWxkQ29udHJvbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmVycm9yICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICghdGFyZ2V0RmllbGQgfHwgIXRoaXMuZXJyb3IudGFyZ2V0IHx8IHRoaXMuZXJyb3IudGFyZ2V0ID09PSB0YXJnZXRGaWVsZClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb250cm9scywgdGhlIGZpZWxkIGlzIG9ubHkgZGlzYWJsZWQgd2hlbiBhbGwgb2YgdGhlbSBhcmUgZGlzYWJsZWRcbiAgICovXG4gIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xzIHx8IHRoaXMuY29udHJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHM/LnRvQXJyYXkoKS5ldmVyeSgoY29udHJvbCkgPT4gY29udHJvbC5pc0Rpc2FibGVkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIGFueSBvZiB0aGUgY29udHJvbHMgc2hvdWxkIGJlIGNvbnN0cmFpbmVkIGJ5IHRoZSBmaWVsZCdzIGRlZmF1bHQgd2lkaHRcbiAgICovXG4gIGNvbnRyb2xIYXNEZWZhdWx0V2lkdGgoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xzIHx8IHRoaXMuY29udHJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHM/LnRvQXJyYXkoKS5zb21lKChjb250cm9sKSA9PiBjb250cm9sLmhhc0RlZmF1bHRXaWR0aCk7XG4gIH1cblxuICAvKipcbiAgICogT25seSBzdXBwb3J0IGZlYXR1cmVzIGxpa2UgYGZvcmAgb3IgYGxhYmVsQ2xpY2tgIGlmIHRoZSBmaWVsZCBoYXMgb25lIGNvbnRyb2wuXG4gICAqL1xuICBnZXQgY29udHJvbCgpOiBGaWVsZENvbnRyb2wgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xzPy5sZW5ndGggPT09IDEgPyB0aGlzLmNvbnRyb2xzLmZpcnN0IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGlzR3JvdXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMgPyB0aGlzLmNvbnRyb2xzLmxlbmd0aCA+IDEgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBjb250cm9sIGlzIHJhZGlvIGdyb3VwIChzcC1yYWRpby1ncm91cCkuXG4gICAqL1xuICBoYXNSYWRpb0dyb3VwQ2hpbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmFkaW9Hcm91cCAhPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgbGFiZWxOZWNlc3NpdHlJbmRpY2F0b3IoKTogTGFiZWxDb21wb25lbnRbJ25lY2Vzc2l0eUluZGljYXRvciddIHtcbiAgICBpZiAodGhpcy5uZWNlc3NpdHlJbmRpY2F0b3IpIHtcbiAgICAgIHJldHVybiBjb2VyY2VCb29sZWFuUHJvcGVydHkodGhpcy5yZXF1aXJlZFZhbGlkYXRvcj8ucmVxdWlyZWQpIHx8XG4gICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICAgICAgPyAncmVxdWlyZWQnXG4gICAgICAgIDogJ29wdGlvbmFsJztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIF9zZXRTdWZmaXhQb3J0YWwocG9ydGFsOiBEb21Qb3J0YWw8SFRNTEVsZW1lbnQ+IHwgbnVsbCkge1xuICAgIGlmICh0aGlzLl9ub3RlU3VmZml4UG9ydGFsPy5pc0F0dGFjaGVkKSB7XG4gICAgICB0aGlzLl9ub3RlU3VmZml4UG9ydGFsLmRldGFjaCgpO1xuICAgICAgLy8gY2FsbGluZyBkZXRhY2ggd2lsbCBtb3ZlIHRoZSBlbGVtZW50IGJhY2sgdG8gdGhlIERPTS4gQ291bGRuJ3QgZmluZCBhbnkgYmV0dGVyXG4gICAgICAvLyB3YXkgdGhhbiBpbXBlcmF0aXZlbHkgcmVtb3ZpbmcgdGhlIERPTSBlbGVtZW50IHRvby5cbiAgICAgIHRoaXMuX25vdGVTdWZmaXhQb3J0YWwuZWxlbWVudC5yZW1vdmUoKTtcbiAgICB9XG4gICAgdGhpcy5fbm90ZVN1ZmZpeFBvcnRhbCA9IHBvcnRhbDtcbiAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX2xhYmVsXCIgKm5nSWY9XCJfZmllbGRMYWJlbFwiPlxuICA8c3AtbGFiZWxcbiAgICBbbmVjZXNzaXR5SW5kaWNhdG9yXT1cImxhYmVsTmVjZXNzaXR5SW5kaWNhdG9yXCJcbiAgICBbZm9yXT1cImNvbnRyb2w/LmdldElkPy4oKVwiXG4gICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgKGxhYmVsQ2xpY2spPVwiY29udHJvbD8uZm9jdXM/Ligna2V5Ym9hcmQnKVwiXG4gICAgW3NpemVdPVwic2l6ZVwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzcC1maWVsZC1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudFxuICAgICAgc2VsZWN0PVwic3AtaGVscC1idXR0b25cIlxuICAgICAgbmdQcm9qZWN0QXM9XCJzcC1oZWxwLWJ1dHRvblwiXG4gICAgPjwvbmctY29udGVudD5cbiAgPC9zcC1sYWJlbD5cbjwvZGl2PlxuPGRpdlxuICBjbGFzcz1cInNhcHBoaXJlLWZpZWxkX19jb250cm9sXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdzYXBwaGlyZS1maWVsZF9fY29udHJvbC0tZ3JvdXAnOiBpc0dyb3VwXG4gIH1cIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJzYXBwaGlyZS1maWVsZF9fbWVzc2FnZVwiICpuZ0lmPVwibm90ZSB8fCBlcnJvciB8fCBfbm90ZVN1ZmZpeFBvcnRhbFwiPlxuICA8ZGl2IGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGUtcm93IHNhcHBoaXJlLXRleHQtLW5lZ2F0aXZlXCIgKm5nSWY9XCJlcnJvclwiPlxuICAgIDxzcGFuIGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGUtaWNvblwiPlxuICAgICAgPHNwLWljb24gbmFtZT1cImVycm9yXCIgc2l6ZT1cInNtXCI+PC9zcC1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGVcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNwLWZpZWxkLWVycm9yXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9ub3RlU3VmZml4UG9ydGFsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJfbm90ZVN1ZmZpeFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGUtcm93XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2FwcGhpcmUtdGV4dC0tcG9zaXRpdmUnOiBub3RlPy52YXJpYW50ID09PSAnc3VjY2VzcycsXG4gICAgICAnc2FwcGhpcmUtdGV4dC0td2FybmluZyc6IG5vdGU/LnZhcmlhbnQgPT09ICd3YXJuaW5nJ1xuICAgIH1cIlxuICAgICpuZ0lmPVwibm90ZSAmJiAoIWVycm9yIHx8IGFsbG93Tm90ZUFuZEVycm9yKVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInNhcHBoaXJlLWZpZWxkX19ub3RlLWljb25cIiAqbmdJZj1cIm5vdGU/Lmljb25cIj5cbiAgICAgIDxzcC1pY29uIFtuYW1lXT1cIm5vdGU/Lmljb25cIiBzaXplPVwic21cIj48L3NwLWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJzYXBwaGlyZS1maWVsZF9fbm90ZVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3AtZmllbGQtbm90ZVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXJyb3IgJiYgX25vdGVTdWZmaXhQb3J0YWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cIl9ub3RlU3VmZml4UG9ydGFsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzYXBwaGlyZS1maWVsZF9fbm90ZS1yb3dcIlxuICAgICpuZ0lmPVwiIW5vdGUgJiYgIWVycm9yICYmIF9ub3RlU3VmZml4UG9ydGFsXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJfbm90ZVN1ZmZpeFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
272
+ export class FieldsetComponent extends FieldComponent {
273
+ }
274
+ FieldsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FieldsetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
275
+ FieldsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: FieldsetComponent, selector: "sp-fieldset", host: { properties: { "class.sapphire-field--label-placement-side": "labelPlacement === \"side\"", "class.sapphire-field--no-width": "noDefaultWidth || !controlHasDefaultWidth()", "class.sapphire-field--label-alignment-top": "labelPlacement === \"side\" && hasRadioGroupChild()", "class.sapphire-field--md": "size === \"md\"" }, classAttribute: "sapphire-field" }, providers: [
276
+ {
277
+ provide: ICON_SIZE_PROVIDER,
278
+ useFactory: (fieldset) => ({
279
+ get size() {
280
+ return fieldset.size === 'lg' ? 'md' : 'sm';
281
+ },
282
+ }),
283
+ deps: [FieldsetComponent],
284
+ },
285
+ ], usesInheritance: true, hostDirectives: [{ directive: i2.UseComponentStylesOnHost }], ngImport: i0, template: "<div class=\"sapphire-field__label\" *ngIf=\"_fieldLabel\">\n <sp-label\n [necessityIndicator]=\"labelNecessityIndicator\"\n [for]=\"control?.getId?.()\"\n [disabled]=\"isDisabled()\"\n (labelClick)=\"control?.focus?.('keyboard')\"\n [size]=\"size\"\n >\n <ng-content select=\"sp-field-label\"></ng-content>\n <ng-content\n select=\"sp-help-button\"\n ngProjectAs=\"sp-help-button\"\n ></ng-content>\n </sp-label>\n</div>\n<div\n class=\"sapphire-field__control\"\n [ngClass]=\"{\n 'sapphire-field__control--group': isGroup\n }\"\n>\n <ng-content></ng-content>\n</div>\n<div class=\"sapphire-field__message\" *ngIf=\"note || error || _noteSuffixPortal\">\n <div class=\"sapphire-field__note-row sapphire-text--negative\" *ngIf=\"error\">\n <span class=\"sapphire-field__note-icon\">\n <sp-icon name=\"error\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-error\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n [ngClass]=\"{\n 'sapphire-text--positive': note?.variant === 'success',\n 'sapphire-text--warning': note?.variant === 'warning'\n }\"\n *ngIf=\"note && (!error || allowNoteAndError)\"\n >\n <span class=\"sapphire-field__note-icon\" *ngIf=\"note?.icon\">\n <sp-icon [name]=\"note?.icon\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-note\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!error && _noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n *ngIf=\"!note && !error && _noteSuffixPortal\"\n >\n <ng-container>\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [".sapphire-field{display:inline-grid;grid-template-columns:auto;row-gap:var(--sapphire-semantic-size-spacing-2xs);column-gap:var(--sapphire-semantic-size-spacing-md);font-family:var(--sapphire-semantic-font-name-default);grid-auto-rows:min-content;width:var(--sapphire-semantic-size-width-field);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.sapphire-field--no-width{width:auto}fieldset.sapphire-field{border:0;margin:0;padding:0}.sapphire-field__label{order:1;justify-content:end}legend.sapphire-field__label{padding:0;float:left}.sapphire-field__control{order:2;width:100%;min-width:0;line-height:var(--sapphire-semantic-size-line-height-md);font-size:var(--sapphire-semantic-size-font-control-lg)}.sapphire-field--md .sapphire-field__control{font-size:var(--sapphire-semantic-size-font-control-md)}.sapphire-field__control--group{display:flex;gap:var(--sapphire-semantic-size-spacing-xs)}.sapphire-field--md .sapphire-field__control--group{gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field--no-shrink .sapphire-field__control{min-width:initial}.sapphire-field__message{min-width:100%;max-width:min-content;order:3;display:flex;flex-direction:column;gap:var(--sapphire-semantic-size-spacing-4xs);padding:var(--sapphire-semantic-size-spacing-4xs) 0}.sapphire-field__note-row{display:flex;align-items:flex-start;gap:var(--sapphire-semantic-size-spacing-xs);font-size:var(--sapphire-semantic-size-font-label-md);line-height:var(--sapphire-semantic-size-line-height-md);color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-field--md .sapphire-field__note-row{font-size:var(--sapphire-semantic-size-font-label-sm);line-height:var(--sapphire-semantic-size-line-height-sm);gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field__note{flex:1}.sapphire-field__note-icon{display:inline-flex;line-height:0;padding-top:var(--sapphire-semantic-size-spacing-4xs)}.sapphire-field--md .sapphire-field__note-icon{padding-top:0}.sapphire-field.is-disabled .sapphire-field__control{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-field.is-disabled .sapphire-field__control *{cursor:inherit}.sapphire-field--label-placement-side{grid-template-columns:max-content auto;width:auto}.sapphire-field--label-placement-side:not(.sapphire-field--no-width) .sapphire-field__control{width:var(--sapphire-semantic-size-width-field)}.sapphire-field--label-placement-side .sapphire-field__message{grid-column:2}.sapphire-field--label-placement-side .sapphire-field__label{display:flex;align-items:center;max-height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-field--label-placement-side.sapphire-field--md .sapphire-field__label{max-height:var(--sapphire-semantic-size-height-control-md)}.sapphire-field--label-placement-side.sapphire-field--label-alignment-top .sapphire-field__label{align-items:flex-start;max-height:unset}.sapphire-fieldset{display:inline-flex;flex-direction:column;width:min-content;gap:var(--sapphire-semantic-size-spacing-lg)}.sapphire-fieldset .sapphire-field--label-placement-side{grid-template-columns:1fr min-content}.sapphire-fieldset .sapphire-field--label-placement-side .sapphire-field__label{white-space:nowrap}.sapphire-text{font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-foreground-primary);font-weight:var(--sapphire-semantic-font-weight-default-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-text--strong{font-weight:var(--sapphire-semantic-font-weight-default-bold)}.sapphire-text--semibold{font-weight:var(--sapphire-semantic-font-weight-default-medium)}.sapphire-text--underlined{text-decoration:underline}.sapphire-text--secondary{color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-text--informative{color:var(--sapphire-semantic-color-foreground-accent)}.sapphire-text--positive{color:var(--sapphire-semantic-color-foreground-positive)}.sapphire-text--warning{color:var(--sapphire-semantic-color-foreground-warning)}.sapphire-text--negative{color:var(--sapphire-semantic-color-foreground-negative)}.sapphire-text--heading-2xl,.sapphire-text--heading-xl,.sapphire-text--heading-lg,.sapphire-text--heading-md,.sapphire-text--heading-sm,.sapphire-text--heading-xs{margin-top:0;margin-bottom:0;line-height:var(--sapphire-global-size-line-height-sm);letter-spacing:-.01em}.sapphire-text--heading-2xl{font-weight:var(--sapphire-semantic-font-weight-default-regular);font-size:var(--sapphire-semantic-size-font-heading-2xl)}.sapphire-text--heading-xl{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xl)}.sapphire-text--heading-lg{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-lg)}.sapphire-text--heading-md{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-md)}.sapphire-text--heading-sm{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-sm)}.sapphire-text--heading-xs{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xs)}.sapphire-text--subheading-md,.sapphire-text--subheading-sm{line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--subheading-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--subheading-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--body-lg,.sapphire-text--body-md,.sapphire-text--body-sm,.sapphire-text--body-xs{line-height:var(--sapphire-global-size-line-height-md);margin-top:0;margin-bottom:0}.sapphire-text--body-lg{font-size:var(--sapphire-semantic-size-font-body-lg)}.sapphire-text--body-md{font-size:var(--sapphire-semantic-size-font-body-md)}.sapphire-text--body-sm{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--body-xs{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--caption-md,.sapphire-text--caption-sm{font-weight:var(--sapphire-semantic-font-weight-default-bold);line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--caption-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--caption-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i5.LabelComponent, selector: "sp-label", inputs: ["id", "for", "disabled", "necessityIndicator", "size"], outputs: ["labelClick"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i6.IconComponent, selector: "sp-icon", inputs: ["name", "size", "color"] }] });
286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: FieldsetComponent, decorators: [{
287
+ type: Component,
288
+ args: [{ selector: 'sp-fieldset', host: fieldHostBinding, hostDirectives: [UseComponentStylesOnHost], providers: [
289
+ {
290
+ provide: ICON_SIZE_PROVIDER,
291
+ useFactory: (fieldset) => ({
292
+ get size() {
293
+ return fieldset.size === 'lg' ? 'md' : 'sm';
294
+ },
295
+ }),
296
+ deps: [FieldsetComponent],
297
+ },
298
+ ], standalone: false, template: "<div class=\"sapphire-field__label\" *ngIf=\"_fieldLabel\">\n <sp-label\n [necessityIndicator]=\"labelNecessityIndicator\"\n [for]=\"control?.getId?.()\"\n [disabled]=\"isDisabled()\"\n (labelClick)=\"control?.focus?.('keyboard')\"\n [size]=\"size\"\n >\n <ng-content select=\"sp-field-label\"></ng-content>\n <ng-content\n select=\"sp-help-button\"\n ngProjectAs=\"sp-help-button\"\n ></ng-content>\n </sp-label>\n</div>\n<div\n class=\"sapphire-field__control\"\n [ngClass]=\"{\n 'sapphire-field__control--group': isGroup\n }\"\n>\n <ng-content></ng-content>\n</div>\n<div class=\"sapphire-field__message\" *ngIf=\"note || error || _noteSuffixPortal\">\n <div class=\"sapphire-field__note-row sapphire-text--negative\" *ngIf=\"error\">\n <span class=\"sapphire-field__note-icon\">\n <sp-icon name=\"error\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-error\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n [ngClass]=\"{\n 'sapphire-text--positive': note?.variant === 'success',\n 'sapphire-text--warning': note?.variant === 'warning'\n }\"\n *ngIf=\"note && (!error || allowNoteAndError)\"\n >\n <span class=\"sapphire-field__note-icon\" *ngIf=\"note?.icon\">\n <sp-icon [name]=\"note?.icon\" size=\"sm\"></sp-icon>\n </span>\n <div class=\"sapphire-field__note\">\n <ng-content select=\"sp-field-note\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"!error && _noteSuffixPortal\">\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n <div\n class=\"sapphire-field__note-row\"\n *ngIf=\"!note && !error && _noteSuffixPortal\"\n >\n <ng-container>\n <ng-container *cdkPortalOutlet=\"_noteSuffixPortal\"></ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [".sapphire-field{display:inline-grid;grid-template-columns:auto;row-gap:var(--sapphire-semantic-size-spacing-2xs);column-gap:var(--sapphire-semantic-size-spacing-md);font-family:var(--sapphire-semantic-font-name-default);grid-auto-rows:min-content;width:var(--sapphire-semantic-size-width-field);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.sapphire-field--no-width{width:auto}fieldset.sapphire-field{border:0;margin:0;padding:0}.sapphire-field__label{order:1;justify-content:end}legend.sapphire-field__label{padding:0;float:left}.sapphire-field__control{order:2;width:100%;min-width:0;line-height:var(--sapphire-semantic-size-line-height-md);font-size:var(--sapphire-semantic-size-font-control-lg)}.sapphire-field--md .sapphire-field__control{font-size:var(--sapphire-semantic-size-font-control-md)}.sapphire-field__control--group{display:flex;gap:var(--sapphire-semantic-size-spacing-xs)}.sapphire-field--md .sapphire-field__control--group{gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field--no-shrink .sapphire-field__control{min-width:initial}.sapphire-field__message{min-width:100%;max-width:min-content;order:3;display:flex;flex-direction:column;gap:var(--sapphire-semantic-size-spacing-4xs);padding:var(--sapphire-semantic-size-spacing-4xs) 0}.sapphire-field__note-row{display:flex;align-items:flex-start;gap:var(--sapphire-semantic-size-spacing-xs);font-size:var(--sapphire-semantic-size-font-label-md);line-height:var(--sapphire-semantic-size-line-height-md);color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-field--md .sapphire-field__note-row{font-size:var(--sapphire-semantic-size-font-label-sm);line-height:var(--sapphire-semantic-size-line-height-sm);gap:var(--sapphire-semantic-size-spacing-2xs)}.sapphire-field__note{flex:1}.sapphire-field__note-icon{display:inline-flex;line-height:0;padding-top:var(--sapphire-semantic-size-spacing-4xs)}.sapphire-field--md .sapphire-field__note-icon{padding-top:0}.sapphire-field.is-disabled .sapphire-field__control{opacity:var(--sapphire-semantic-opacity-disabled);cursor:not-allowed}.sapphire-field.is-disabled .sapphire-field__control *{cursor:inherit}.sapphire-field--label-placement-side{grid-template-columns:max-content auto;width:auto}.sapphire-field--label-placement-side:not(.sapphire-field--no-width) .sapphire-field__control{width:var(--sapphire-semantic-size-width-field)}.sapphire-field--label-placement-side .sapphire-field__message{grid-column:2}.sapphire-field--label-placement-side .sapphire-field__label{display:flex;align-items:center;max-height:var(--sapphire-semantic-size-height-control-lg)}.sapphire-field--label-placement-side.sapphire-field--md .sapphire-field__label{max-height:var(--sapphire-semantic-size-height-control-md)}.sapphire-field--label-placement-side.sapphire-field--label-alignment-top .sapphire-field__label{align-items:flex-start;max-height:unset}.sapphire-fieldset{display:inline-flex;flex-direction:column;width:min-content;gap:var(--sapphire-semantic-size-spacing-lg)}.sapphire-fieldset .sapphire-field--label-placement-side{grid-template-columns:1fr min-content}.sapphire-fieldset .sapphire-field--label-placement-side .sapphire-field__label{white-space:nowrap}.sapphire-text{font-family:var(--sapphire-semantic-font-name-default);color:var(--sapphire-semantic-color-foreground-primary);font-weight:var(--sapphire-semantic-font-weight-default-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sapphire-text--strong{font-weight:var(--sapphire-semantic-font-weight-default-bold)}.sapphire-text--semibold{font-weight:var(--sapphire-semantic-font-weight-default-medium)}.sapphire-text--underlined{text-decoration:underline}.sapphire-text--secondary{color:var(--sapphire-semantic-color-foreground-secondary)}.sapphire-text--informative{color:var(--sapphire-semantic-color-foreground-accent)}.sapphire-text--positive{color:var(--sapphire-semantic-color-foreground-positive)}.sapphire-text--warning{color:var(--sapphire-semantic-color-foreground-warning)}.sapphire-text--negative{color:var(--sapphire-semantic-color-foreground-negative)}.sapphire-text--heading-2xl,.sapphire-text--heading-xl,.sapphire-text--heading-lg,.sapphire-text--heading-md,.sapphire-text--heading-sm,.sapphire-text--heading-xs{margin-top:0;margin-bottom:0;line-height:var(--sapphire-global-size-line-height-sm);letter-spacing:-.01em}.sapphire-text--heading-2xl{font-weight:var(--sapphire-semantic-font-weight-default-regular);font-size:var(--sapphire-semantic-size-font-heading-2xl)}.sapphire-text--heading-xl{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xl)}.sapphire-text--heading-lg{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-lg)}.sapphire-text--heading-md{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-md)}.sapphire-text--heading-sm{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-sm)}.sapphire-text--heading-xs{font-weight:var(--sapphire-semantic-font-weight-default-medium);font-size:var(--sapphire-semantic-size-font-heading-xs)}.sapphire-text--subheading-md,.sapphire-text--subheading-sm{line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--subheading-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--subheading-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--body-lg,.sapphire-text--body-md,.sapphire-text--body-sm,.sapphire-text--body-xs{line-height:var(--sapphire-global-size-line-height-md);margin-top:0;margin-bottom:0}.sapphire-text--body-lg{font-size:var(--sapphire-semantic-size-font-body-lg)}.sapphire-text--body-md{font-size:var(--sapphire-semantic-size-font-body-md)}.sapphire-text--body-sm{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--body-xs{font-size:var(--sapphire-semantic-size-font-body-xs)}.sapphire-text--caption-md,.sapphire-text--caption-sm{font-weight:var(--sapphire-semantic-font-weight-default-bold);line-height:var(--sapphire-global-size-line-height-sm)}.sapphire-text--caption-md{font-size:var(--sapphire-semantic-size-font-body-sm)}.sapphire-text--caption-sm{font-size:var(--sapphire-semantic-size-font-body-xs)}\n"] }]
299
+ }] });
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC9zcmMvZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC9zcmMvZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFDTCxrQkFBa0IsR0FFbkIsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU1RSxPQUFPLEVB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QUUsSUFBSSxFQUFFO2dCQUl0QyxpQkFBaUI7c0JBRHhCLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk5QyxrQkFBa0I7c0JBRHpCLFlBQVk7dUJBQUMsZUFBZTs7QUFzTC9CLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxjQUFjOzs4R0FBeEMsaUJBQWlCO2tHQUFqQixpQkFBaUIsbVpBYmpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLFVBQVUsRUFBRSxDQUFDLFFBQTJCLEVBQW9CLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLElBQUk7b0JBQ04sT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLENBQUM7YUFDRixDQUFDO1lBQ0YsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUM7U0FDMUI7S0FDRiwrR0NsVkgsMmlFQWdFQTsyRkRxUmEsaUJBQWlCO2tCQW5CN0IsU0FBUzsrQkFDRSxhQUFhLFFBR2pCLGdCQUFnQixrQkFDTixDQUFDLHdCQUF3QixDQUFDLGFBQy9CO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFVBQVUsRUFBRSxDQUFDLFFBQTJCLEVBQW9CLEVBQUUsQ0FBQyxDQUFDO2dDQUM5RCxJQUFJLElBQUk7b0NBQ04sT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0NBQzlDLENBQUM7NkJBQ0YsQ0FBQzs0QkFDRixJQUFJLEVBQUUsbUJBQW1CO3lCQUMxQjtxQkFDRixjQUNXLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5qZWN0YWJsZSxcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkTm90ZURpcmVjdGl2ZSB9IGZyb20gJy4vZmllbGQtbm90ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmllbGRFcnJvckRpcmVjdGl2ZSB9IGZyb20gJy4vZmllbGQtZXJyb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGFiZWwvc3JjL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1ib29sZWFuLmRlY29yYXRvcic7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIFJlcXVpcmVkVmFsaWRhdG9yLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRDb250cm9sIH0gZnJvbSAnLi9maWVsZC1jb250cm9sJztcbmltcG9ydCB7IEZpZWxkTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL2ZpZWxkLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQsIERvbVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVXNlQ29tcG9uZW50U3R5bGVzT25Ib3N0IH0gZnJvbSAnLi4vLi4vY29tbW9uL3NhcHBoaXJlLXZpZXctZW5jYXBzdWxhdGlvbic7XG5pbXBvcnQge1xuICBJQ09OX1NJWkVfUFJPVklERVIsXG4gIEljb25TaXplUHJvdmlkZXIsXG59IGZyb20gJy4uLy4uL2ljb24vc3JjL2ljb24tc2l6ZS1wcm92aWRlcic7XG5pbXBvcnQgeyBSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmFkaW8vc3JjL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uUmVnaXN0cnkgfSBmcm9tICcuLi8uLi9pY29uL3B1YmxpY19hcGknO1xuaW1wb3J0IHtcbiAgaWNvbkNoZWNrbWFya091dGxpbmUsXG4gIGljb25FcnJvcixcbiAgaWNvbldhcm5pbmcsXG59IGZyb20gJ0BkYW5za2Uvc2FwcGhpcmUtaWNvbnMvanMnO1xuXG5ASW5qZWN0YWJsZSgpXG5jbGFzcyBGaWVsZEljb25TaXplUHJvdmlkZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpZWxkOiBGaWVsZENvbXBvbmVudCkge31cblxuICBnZXQgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5zaXplID09PSAnbGcnID8gJ21kJyA6ICdzbSc7XG4gIH1cbn1cblxuY29uc3QgZmllbGRIb3N0QmluZGluZyA9IHtcbiAgY2xhc3M6ICdzYXBwaGlyZS1maWVsZCcsXG4gICdbY2xhc3Muc2FwcGhpcmUtZmllbGQtLWxhYmVsLXBsYWNlbWVudC1zaWRlXSc6ICdsYWJlbFBsYWNlbWVudCA9PT0gXCJzaWRlXCInLFxuICAnW2NsYXNzLnNhcHBoaXJlLWZpZWxkLS1uby13aWR0aF0nOlxuICAgICdub0RlZmF1bHRXaWR0aCB8fCAhY29udHJvbEhhc0RlZmF1bHRXaWR0aCgpJyxcbiAgJ1tjbGFzcy5zYXBwaGlyZS1maWVsZC0tbGFiZWwtYWxpZ25tZW50LXRvcF0nOlxuICAgICdsYWJlbFBsYWNlbWVudCA9PT0gXCJzaWRlXCIgJiYgaGFzUmFkaW9Hcm91cENoaWxkKCknLFxuICAnW2NsYXNzLnNhcHBoaXJlLWZpZWxkLS1tZF0nOiAnc2l6ZSA9PT0gXCJtZFwiJyxcbn07XG5cbi8qKlxuICogQSBmaWVsZCBpcyBhIGNvbW1vbiBjb250YWluZXIgZm9yIGxhYmVsYWJsZSBjb250cm9scyBzdWNoIGFzIHNlbGVjdCwgcmFkaW8gZ3JvdXAsIHRleHQgZmllbGQsXG4gKiBldGMuXG4gKiBJbiBhZGRpdGlvbiB0byB0aGUgZmllbGQgY29udHJvbCAoc3Atc2VsZWN0LCBzcC1yYWRpby1ncm91cCwgc3AtdGV4dC1maWVsZCksIHRoZSBmb2xsb3dpbmdcbiAqIGNvbXBvbmVudHMgY2FuIGJlIHVzZWQgaW5zaWRlIGEgZmllbGQ6XG4gKiAtIHNwLWZpZWxkLWxhYmVsOiBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBmaWVsZC5cbiAqIC0gc3AtaGVscC1idXR0b246IGlzIHBsYWNlZCBpbiB0aGUgbGFiZWwgYXJlYSwgbmV4dCB0byB0aGUgbGFiZWwgdGV4dFxuICogLSBzcC1maWVsZC1lcnJvcjogaXMgdXNlZCB0byBwcm92aWRlIGFuIGVycm9yIG1lc3NhZ2UsIHdoaWNoIGlzIHBsYWNlZCBiZWxvdyB0aGUgZmllbGQnc1xuICogY29udHJvbC5cbiAqIC0gc3AtZmllbGQtbm90ZTogaXMgdXNlZCB0byBwcm92aWRlIGEgbm90ZSwgd2hpY2ggaXMgcGxhY2VkIGJlbG93IHRoZSBmaWVsZCdzIGNvbnRyb2wuIE9ubHlcbiAqIHNob3duXG4gKiAgIHdoZW4gdGhlcmUgaXMgbm8gZXJyb3JcbiAqIC0gc3AtZmllbGQtbm90ZS1zdWZmaXg6IGlzIHVzZWQgdG8gcHJvdmlkZSBhIHN1ZmZpeCwgd2hpY2ggaXMgcGxhY2VkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZVxuICogbm90ZSBhcmVhLlxuICpcbiAqIEFkZGl0aW9uYWxseSwgZmllbGQgc3VwcG9ydHM6XG4gKiAtIExhYmVsIHBsYWNlbWVudCBlaXRoZXIgYWJvdmUgKGRlZmF1bHQpIG9yIG9uIHRoZSBzaWRlIG9mIHRoZSBjb250cm9sLlxuICogLSBBc3NvY2lhdGluZyBsYWJlbCB3aXRoIHRoZSBjb250cm9sLCBzbyB0aGF0IGNsaWNraW5nIHRoZSBsYWJlbCBmb2N1c2VzIHRoZSBjb250cm9sLCBzaG93aW5nXG4gKiAgIGZvY3VzIHJpbmcuXG4gKiAtIE9wdGlvbmFsbHkgc2hvd2luZyBuZWNlc3NpdHkgaW5kaWNhdG9yIGluIHRoZSBsYWJlbC4gRmllbGRzIG5lY2Vzc2l0eSAocmVxdWlyZWQgb3Igb3B0aW9uYWwpXG4gKiAgIGlzIGRldGVybWluZWQgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIEBhbmd1bGFyL2Zvcm0ncyB7QGxpbmsgUmVxdWlyZWRWYWxpZGF0b3J9LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IGZpZWxkSG9zdEJpbmRpbmcsXG4gIGhvc3REaXJlY3RpdmVzOiBbVXNlQ29tcG9uZW50U3R5bGVzT25Ib3N0XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSUNPTl9TSVpFX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEZpZWxkSWNvblNpemVQcm92aWRlcixcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgRmllbGRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLCBJY29uU2l6ZVByb3ZpZGVyXG57XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBuZWNlc3NpdHkgaW5kaWNhdG9yIHNob3VsZCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgQENvZXJjZUJvb2xlYW5cbiAgbmVjZXNzaXR5SW5kaWNhdG9yPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBMYWJlbCBwbGFjZW1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSBmb3JtIGNvbnRyb2wuXG4gICAqIEBkZWZhdWx0IFwiYWJvdmVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgbGFiZWxQbGFjZW1lbnQ/OiAnc2lkZScgfCAnYWJvdmUnID0gJ2Fib3ZlJztcblxuICAvKipcbiAgICogQXZvaWQgdGhlIGRlZmF1bHQgd2lkdGhcbiAgICovXG4gIEBJbnB1dCgpXG4gIEBDb2VyY2VCb29sZWFuXG4gIG5vRGVmYXVsdFdpZHRoPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBBbGxvdyBib3RoIG5vdGUgYW5kIGVycm9yIGF0IHRoZSBzYW1lIHRpbWVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIEBDb2VyY2VCb29sZWFuXG4gIGFsbG93Tm90ZUFuZEVycm9yPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcImxnXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNpemU/OiAnbGcnIHwgJ21kJyA9ICdsZyc7XG5cbiAgQENvbnRlbnRDaGlsZChGaWVsZE5vdGVEaXJlY3RpdmUpXG4gIG5vdGU/OiBGaWVsZE5vdGVEaXJlY3RpdmU7XG5cbiAgQENvbnRlbnRDaGlsZChGaWVsZEVycm9yRGlyZWN0aXZlKVxuICBlcnJvcj86IEZpZWxkRXJyb3JEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZChMYWJlbENvbXBvbmVudClcbiAgbGFiZWw/OiBMYWJlbENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEZpZWxkTGFiZWxEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pXG4gIF9maWVsZExhYmVsPzogRmllbGRMYWJlbERpcmVjdGl2ZTtcblxuICAvKipcbiAgICogRm9jdXNhYmxlLCBsYWJlbGFibGUgY29udHJvbC4gQ29tcG9uZW50cyBsaWtlIFNlbGVjdCwgUmFkaW9Hcm91cCBvciBUZXh0RmllbGQsXG4gICAqIHRoYXQgYXJlIG1lYW50IHRvIHJlbmRlcmVkIGluc2lkZSBzcC1maWVsZCwgcHJvdmlkZSBGaWVsZENvbnRyb2wuXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEZpZWxkQ29udHJvbCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBjb250cm9scz86IFF1ZXJ5TGlzdDxGaWVsZENvbnRyb2w+O1xuXG4gIEBDb250ZW50Q2hpbGQoUmFkaW9Hcm91cENvbXBvbmVudClcbiAgcmFkaW9Hcm91cD86IFJhZGlvR3JvdXBDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChOZ0NvbnRyb2wsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHJpdmF0ZSBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2w7XG5cbiAgQENvbnRlbnRDaGlsZChSZXF1aXJlZFZhbGlkYXRvciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIHJlcXVpcmVkVmFsaWRhdG9yPzogUmVxdWlyZWRWYWxpZGF0b3I7XG5cbiAgQFZpZXdDaGlsZHJlbihDZGtQb3J0YWxPdXRsZXQpXG4gIHByaXZhdGUgc3VmZml4UG9ydGFsT3V0bGV0OiBRdWVyeUxpc3Q8Q2RrUG9ydGFsT3V0bGV0PiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBJcyBzZXQgdmlhIGZpZWxkLW5vdGUtYWZmaXggZGlyZWN0aXZlLiBDb250ZW50Q2hpbGQgcXVlcnkgY2FuJ3QgYmUgdXNlZCBzaW5jZSB3ZSBuZWVkXG4gICAqIHRvIHF1ZXJ5IGZyb20gY29udGVudCAtPiB2aWV3IGluIHNvbWUgY2FzZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX25vdGVTdWZmaXhQb3J0YWw6IERvbVBvcnRhbDxIVE1MRWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGNoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBpY29uUmVnaXN0cnk6IEljb25SZWdpc3RyeSxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIGZpZWxkc2V0PzogRmllbGRzZXRDb21wb25lbnRcbiAgKSB7XG4gICAgaWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbihpY29uQ2hlY2ttYXJrT3V0bGluZSk7XG4gICAgaWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbihpY29uV2FybmluZyk7XG4gICAgaWNvblJlZ2lzdHJ5LnJlZ2lzdGVySWNvbihpY29uRXJyb3IpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICghdGhpcy5jb250cm9scyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnc3AtZmllbGQgaXMgcmVuZGVyZWQgd2l0aG91dCBhbnkgY29udHJvbCBsaWtlIHNwLXNlbGVjdCwgc3AtdGV4dC1maWVsZCwgb3Igc3AtcmFkaW8tZ3JvdXAgaW5zaWRlIGl0LidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3VmZml4UG9ydGFsT3V0bGV0IS5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fbm90ZVN1ZmZpeFBvcnRhbD8uaXNBdHRhY2hlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgLy8gSXQgbWlnaHQgYmUgYSBidWcgaW4gQGFuZ3VsYXIvY2RrL3BvcnRhbCwgYnV0IHdoZW4gdGhlIHBvcnRhbCBvdXRsZXQgdGhhdCByZW5kZXJzXG4gICAgICAgIC8vIGEgRG9tUG9ydGFsIGlzIGNoYW5nZWQsIHRoZSBEb21Qb3J0YWwgZ2V0cyBkZXRhY2hlZCBhbmQgbm90IHJlYXR0YWNoZWQgdG8gdGhlIG5ldyBvdXRsZXQuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgcmVhdHRhY2hpbmcgaXMgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZS5cbiAgICAgICAgdGhpcy5zdWZmaXhQb3J0YWxPdXRsZXQ/LmZpcnN0Py5kZXRhY2goKTtcbiAgICAgICAgdGhpcy5zdWZmaXhQb3J0YWxPdXRsZXQ/LmZpcnN0Py5hdHRhY2godGhpcy5fbm90ZVN1ZmZpeFBvcnRhbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgLyoqXG4gICAgICogU2luY2Ugbm90ZSBzdWZmaXggcG9ydGFsIGlzIGNoYW5nZWQgYnkgRmllbGROb3RlU3VmZml4RGlyZWN0aXZlLFxuICAgICAqIGl0IGNyZWF0ZXMgYSBjYXNlIG9mIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgICogU28gd2UgbmVlZCB0byBtYW51YWxseSBkZXRlY3QgY2hhbmdlcyB3aGVuIHN1ZmZpeCBwb3J0YWwgaXMgY2hhbmdlZC5cbiAgICAgKiBXZSBXb3VsZG4ndCBuZWVkIHRvIGRvIHNvLCBpZiB3ZSBjb3VsZCBxdWVyeSBGaWVsZE5vdGVTdWZmaXhEaXJlY3RpdmVcbiAgICAgKiB2aWEgQENvbnRlbnRDaGlsZCwgYnV0IHdlIGNhbid0IGJlY2F1c2UgaXQgY2FuIGJlIGluIHRoZSB2aWV3IG9mIGEgY29udGVudFxuICAgICAqIGNoaWxkLCB3aGljaCBtYWtlcyBpdCBub3QgcXVlcnktYWJsZS5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5jaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuY2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBjb250YWlucyBhbiBlcnJvciBtZXNzYWdlIChzcC1maWVsZC1lcnJvcikuXG4gICAqIEFsc28gY2hlY2tzIGlmIGEgcGFyZW50IGZpZWxkc2V0IGhhcyBhbiBlcnJvci5cbiAgICovXG4gIGhhc0Vycm9yKHRhcmdldEZpZWxkPzogRmllbGRDb250cm9sKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBmaWVsZCBoYXMgaXRzIG93biBlcnJvclxuICAgIGlmICh0aGlzLl9oYXNPd25FcnJvcih0YXJnZXRGaWVsZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHBhcmVudCBmaWVsZHNldCBoYXMgYW4gZXJyb3IgdGFyZ2V0dGluZyB0aGlzIGZpZWxkXG4gICAgaWYgKHRoaXMuZmllbGRzZXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpZWxkc2V0Lmhhc0Vycm9yKHRhcmdldEZpZWxkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9oYXNPd25FcnJvcih0YXJnZXRGaWVsZD86IEZpZWxkQ29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5lcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSB0aGlzLmVycm9yO1xuXG4gICAgLy8gSWYgbm8gdGFyZ2V0IGlzIHNwZWNpZmllZCwgZXJyb3IgYXBwbGllcyB0byBhbGwgY29udHJvbHNcbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHRhcmdldCBpcyBhIEZpZWxkQ29udHJvbCwgY2hlY2sgaWYgaXQgbWF0Y2hlc1xuICAgIGlmICh0aGlzLl9pc0ZpZWxkQ29udHJvbCh0YXJnZXQpKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0ID09PSB0YXJnZXRGaWVsZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9pc0ZpZWxkQ29udHJvbCh0YXJnZXQ6IHVua25vd24pOiB0YXJnZXQgaXMgRmllbGRDb250cm9sIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgdGFyZ2V0ICE9PSBudWxsICYmICdpc0Rpc2FibGVkJyBpbiB0YXJnZXRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb250cm9scywgdGhlIGZpZWxkIGlzIG9ubHkgZGlzYWJsZWQgd2hlbiBhbGwgb2YgdGhlbSBhcmUgZGlzYWJsZWRcbiAgICovXG4gIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xzIHx8IHRoaXMuY29udHJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHM/LnRvQXJyYXkoKS5ldmVyeSgoY29udHJvbCkgPT4gY29udHJvbC5pc0Rpc2FibGVkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIGFueSBvZiB0aGUgY29udHJvbHMgc2hvdWxkIGJlIGNvbnN0cmFpbmVkIGJ5IHRoZSBmaWVsZCdzIGRlZmF1bHQgd2lkaHRcbiAgICovXG4gIGNvbnRyb2xIYXNEZWZhdWx0V2lkdGgoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xzIHx8IHRoaXMuY29udHJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHM/LnRvQXJyYXkoKS5zb21lKChjb250cm9sKSA9PiBjb250cm9sLmhhc0RlZmF1bHRXaWR0aCk7XG4gIH1cblxuICAvKipcbiAgICogT25seSBzdXBwb3J0IGZlYXR1cmVzIGxpa2UgYGZvcmAgb3IgYGxhYmVsQ2xpY2tgIGlmIHRoZSBmaWVsZCBoYXMgb25lIGNvbnRyb2wuXG4gICAqL1xuICBnZXQgY29udHJvbCgpOiBGaWVsZENvbnRyb2wgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xzPy5sZW5ndGggPT09IDEgPyB0aGlzLmNvbnRyb2xzLmZpcnN0IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGlzR3JvdXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbHMgPyB0aGlzLmNvbnRyb2xzLmxlbmd0aCA+IDEgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWVsZCBjb250cm9sIGlzIHJhZGlvIGdyb3VwIChzcC1yYWRpby1ncm91cCkuXG4gICAqL1xuICBoYXNSYWRpb0dyb3VwQ2hpbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmFkaW9Hcm91cCAhPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgbGFiZWxOZWNlc3NpdHlJbmRpY2F0b3IoKTogTGFiZWxDb21wb25lbnRbJ25lY2Vzc2l0eUluZGljYXRvciddIHtcbiAgICBpZiAodGhpcy5uZWNlc3NpdHlJbmRpY2F0b3IpIHtcbiAgICAgIHJldHVybiBjb2VyY2VCb29sZWFuUHJvcGVydHkodGhpcy5yZXF1aXJlZFZhbGlkYXRvcj8ucmVxdWlyZWQpIHx8XG4gICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICAgICAgPyAncmVxdWlyZWQnXG4gICAgICAgIDogJ29wdGlvbmFsJztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIF9zZXRTdWZmaXhQb3J0YWwocG9ydGFsOiBEb21Qb3J0YWw8SFRNTEVsZW1lbnQ+IHwgbnVsbCkge1xuICAgIGlmICh0aGlzLl9ub3RlU3VmZml4UG9ydGFsPy5pc0F0dGFjaGVkKSB7XG4gICAgICB0aGlzLl9ub3RlU3VmZml4UG9ydGFsLmRldGFjaCgpO1xuICAgICAgLy8gY2FsbGluZyBkZXRhY2ggd2lsbCBtb3ZlIHRoZSBlbGVtZW50IGJhY2sgdG8gdGhlIERPTS4gQ291bGRuJ3QgZmluZCBhbnkgYmV0dGVyXG4gICAgICAvLyB3YXkgdGhhbiBpbXBlcmF0aXZlbHkgcmVtb3ZpbmcgdGhlIERPTSBlbGVtZW50IHRvby5cbiAgICAgIHRoaXMuX25vdGVTdWZmaXhQb3J0YWwuZWxlbWVudC5yZW1vdmUoKTtcbiAgICB9XG4gICAgdGhpcy5fbm90ZVN1ZmZpeFBvcnRhbCA9IHBvcnRhbDtcbiAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NwLWZpZWxkc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDogZmllbGRIb3N0QmluZGluZyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtVc2VDb21wb25lbnRTdHlsZXNPbkhvc3RdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJQ09OX1NJWkVfUFJPVklERVIsXG4gICAgICB1c2VGYWN0b3J5OiAoZmllbGRzZXQ6IEZpZWxkc2V0Q29tcG9uZW50KTogSWNvblNpemVQcm92aWRlciA9PiAoe1xuICAgICAgICBnZXQgc2l6ZSgpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGRzZXQuc2l6ZSA9PT0gJ2xnJyA/ICdtZCcgOiAnc20nO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBkZXBzOiBbRmllbGRzZXRDb21wb25lbnRdLFxuICAgIH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZHNldENvbXBvbmVudCBleHRlbmRzIEZpZWxkQ29tcG9uZW50IHt9XG4iLCI8ZGl2IGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX2xhYmVsXCIgKm5nSWY9XCJfZmllbGRMYWJlbFwiPlxuICA8c3AtbGFiZWxcbiAgICBbbmVjZXNzaXR5SW5kaWNhdG9yXT1cImxhYmVsTmVjZXNzaXR5SW5kaWNhdG9yXCJcbiAgICBbZm9yXT1cImNvbnRyb2w/LmdldElkPy4oKVwiXG4gICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgKGxhYmVsQ2xpY2spPVwiY29udHJvbD8uZm9jdXM/Ligna2V5Ym9hcmQnKVwiXG4gICAgW3NpemVdPVwic2l6ZVwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzcC1maWVsZC1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudFxuICAgICAgc2VsZWN0PVwic3AtaGVscC1idXR0b25cIlxuICAgICAgbmdQcm9qZWN0QXM9XCJzcC1oZWxwLWJ1dHRvblwiXG4gICAgPjwvbmctY29udGVudD5cbiAgPC9zcC1sYWJlbD5cbjwvZGl2PlxuPGRpdlxuICBjbGFzcz1cInNhcHBoaXJlLWZpZWxkX19jb250cm9sXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdzYXBwaGlyZS1maWVsZF9fY29udHJvbC0tZ3JvdXAnOiBpc0dyb3VwXG4gIH1cIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJzYXBwaGlyZS1maWVsZF9fbWVzc2FnZVwiICpuZ0lmPVwibm90ZSB8fCBlcnJvciB8fCBfbm90ZVN1ZmZpeFBvcnRhbFwiPlxuICA8ZGl2IGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGUtcm93IHNhcHBoaXJlLXRleHQtLW5lZ2F0aXZlXCIgKm5nSWY9XCJlcnJvclwiPlxuICAgIDxzcGFuIGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGUtaWNvblwiPlxuICAgICAgPHNwLWljb24gbmFtZT1cImVycm9yXCIgc2l6ZT1cInNtXCI+PC9zcC1pY29uPlxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGVcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNwLWZpZWxkLWVycm9yXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9ub3RlU3VmZml4UG9ydGFsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJfbm90ZVN1ZmZpeFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2FwcGhpcmUtZmllbGRfX25vdGUtcm93XCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2FwcGhpcmUtdGV4dC0tcG9zaXRpdmUnOiBub3RlPy52YXJpYW50ID09PSAnc3VjY2VzcycsXG4gICAgICAnc2FwcGhpcmUtdGV4dC0td2FybmluZyc6IG5vdGU/LnZhcmlhbnQgPT09ICd3YXJuaW5nJ1xuICAgIH1cIlxuICAgICpuZ0lmPVwibm90ZSAmJiAoIWVycm9yIHx8IGFsbG93Tm90ZUFuZEVycm9yKVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInNhcHBoaXJlLWZpZWxkX19ub3RlLWljb25cIiAqbmdJZj1cIm5vdGU/Lmljb25cIj5cbiAgICAgIDxzcC1pY29uIFtuYW1lXT1cIm5vdGU/Lmljb25cIiBzaXplPVwic21cIj48L3NwLWljb24+XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJzYXBwaGlyZS1maWVsZF9fbm90ZVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic3AtZmllbGQtbm90ZVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXJyb3IgJiYgX25vdGVTdWZmaXhQb3J0YWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cIl9ub3RlU3VmZml4UG9ydGFsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzYXBwaGlyZS1maWVsZF9fbm90ZS1yb3dcIlxuICAgICpuZ0lmPVwiIW5vdGUgJiYgIWVycm9yICYmIF9ub3RlU3VmZml4UG9ydGFsXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJfbm90ZVN1ZmZpeFBvcnRhbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -3,7 +3,7 @@ import { FieldLabelDirective } from './field-label.directive';
3
3
  import { FieldNoteDirective } from './field-note.directive';
4
4
  import { FieldNoteSuffixDirective } from './field-note-suffix.directive';
5
5
  import { FieldErrorDirective } from './field-error.directive';
6
- import { FieldComponent } from './field.component';
6
+ import { FieldComponent, FieldsetComponent } from './field.component';
7
7
  import { PortalModule } from '@angular/cdk/portal';
8
8
  import { CommonModule, NgIf } from '@angular/common';
9
9
  import { LabelComponent } from '../../label/public_api';
@@ -12,7 +12,7 @@ import * as i0 from "@angular/core";
12
12
  export class SapphireFieldModule {
13
13
  }
14
14
  SapphireFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- SapphireFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireFieldModule, declarations: [FieldComponent], imports: [NgIf,
15
+ SapphireFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.0", ngImport: i0, type: SapphireFieldModule, declarations: [FieldComponent, FieldsetComponent], imports: [NgIf,
16
16
  FieldLabelDirective,
17
17
  FieldNoteDirective,
18
18
  FieldNoteSuffixDirective,
@@ -24,7 +24,8 @@ SapphireFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
24
24
  FieldNoteDirective,
25
25
  FieldNoteSuffixDirective,
26
26
  FieldErrorDirective,
27
- FieldComponent] });
27
+ FieldComponent,
28
+ FieldsetComponent] });
28
29
  SapphireFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireFieldModule, imports: [PortalModule,
29
30
  LabelComponent,
30
31
  CommonModule,
@@ -32,7 +33,7 @@ SapphireFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
32
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: SapphireFieldModule, decorators: [{
33
34
  type: NgModule,
34
35
  args: [{
35
- declarations: [FieldComponent],
36
+ declarations: [FieldComponent, FieldsetComponent],
36
37
  imports: [
37
38
  NgIf,
38
39
  FieldLabelDirective,
@@ -50,7 +51,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
50
51
  FieldNoteSuffixDirective,
51
52
  FieldErrorDirective,
52
53
  FieldComponent,
54
+ FieldsetComponent,
53
55
  ],
54
56
  }]
55
57
  }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC9zcmMvZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUF1QjNELE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFwQmYsY0FBYyxhQUUzQixJQUFJO1FBQ0osbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQix3QkFBd0I7UUFDeEIsbUJBQW1CO1FBQ25CLFlBQVk7UUFDWixjQUFjO1FBQ2QsWUFBWTtRQUNaLGtCQUFrQixhQUdsQixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsY0FBYztpSEFHTCxtQkFBbUIsWUFiNUIsWUFBWTtRQUNaLGNBQWM7UUFDZCxZQUFZO1FBQ1osa0JBQWtCOzJGQVVULG1CQUFtQjtrQkFyQi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUM5QixPQUFPLEVBQUU7d0JBQ1AsSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4QixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsY0FBYztxQkFDZjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZExhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9maWVsZC1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmllbGROb3RlRGlyZWN0aXZlIH0gZnJvbSAnLi9maWVsZC1ub3RlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGaWVsZE5vdGVTdWZmaXhEaXJlY3RpdmUgfSBmcm9tICcuL2ZpZWxkLW5vdGUtc3VmZml4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGaWVsZEVycm9yRGlyZWN0aXZlIH0gZnJvbSAnLi9maWVsZC1lcnJvci5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGFiZWwvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBTYXBwaGlyZUljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi9pY29uL3B1YmxpY19hcGknO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtGaWVsZENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIEZpZWxkTGFiZWxEaXJlY3RpdmUsXG4gICAgRmllbGROb3RlRGlyZWN0aXZlLFxuICAgIEZpZWxkTm90ZVN1ZmZpeERpcmVjdGl2ZSxcbiAgICBGaWVsZEVycm9yRGlyZWN0aXZlLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBMYWJlbENvbXBvbmVudCxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2FwcGhpcmVJY29uTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRmllbGRMYWJlbERpcmVjdGl2ZSxcbiAgICBGaWVsZE5vdGVEaXJlY3RpdmUsXG4gICAgRmllbGROb3RlU3VmZml4RGlyZWN0aXZlLFxuICAgIEZpZWxkRXJyb3JEaXJlY3RpdmUsXG4gICAgRmllbGRDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNhcHBoaXJlRmllbGRNb2R1bGUge31cbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC9zcmMvZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUF3QjNELE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkFyQmYsY0FBYyxFQUFFLGlCQUFpQixhQUU5QyxJQUFJO1FBQ0osbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQix3QkFBd0I7UUFDeEIsbUJBQW1CO1FBQ25CLFlBQVk7UUFDWixjQUFjO1FBQ2QsWUFBWTtRQUNaLGtCQUFrQixhQUdsQixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGlCQUFpQjtpSEFHUixtQkFBbUIsWUFkNUIsWUFBWTtRQUNaLGNBQWM7UUFDZCxZQUFZO1FBQ1osa0JBQWtCOzJGQVdULG1CQUFtQjtrQkF0Qi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDO29CQUNqRCxPQUFPLEVBQUU7d0JBQ1AsSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4QixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxpQkFBaUI7cUJBQ2xCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL2ZpZWxkLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGaWVsZE5vdGVEaXJlY3RpdmUgfSBmcm9tICcuL2ZpZWxkLW5vdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZpZWxkTm90ZVN1ZmZpeERpcmVjdGl2ZSB9IGZyb20gJy4vZmllbGQtbm90ZS1zdWZmaXguZGlyZWN0aXZlJztcbmltcG9ydCB7IEZpZWxkRXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuL2ZpZWxkLWVycm9yLmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7IEZpZWxkQ29tcG9uZW50LCBGaWVsZHNldENvbXBvbmVudCB9IGZyb20gJy4vZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGFiZWwvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBTYXBwaGlyZUljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi9pY29uL3B1YmxpY19hcGknO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtGaWVsZENvbXBvbmVudCwgRmllbGRzZXRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBGaWVsZExhYmVsRGlyZWN0aXZlLFxuICAgIEZpZWxkTm90ZURpcmVjdGl2ZSxcbiAgICBGaWVsZE5vdGVTdWZmaXhEaXJlY3RpdmUsXG4gICAgRmllbGRFcnJvckRpcmVjdGl2ZSxcbiAgICBQb3J0YWxNb2R1bGUsXG4gICAgTGFiZWxDb21wb25lbnQsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNhcHBoaXJlSWNvbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEZpZWxkTGFiZWxEaXJlY3RpdmUsXG4gICAgRmllbGROb3RlRGlyZWN0aXZlLFxuICAgIEZpZWxkTm90ZVN1ZmZpeERpcmVjdGl2ZSxcbiAgICBGaWVsZEVycm9yRGlyZWN0aXZlLFxuICAgIEZpZWxkQ29tcG9uZW50LFxuICAgIEZpZWxkc2V0Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTYXBwaGlyZUZpZWxkTW9kdWxlIHt9XG4iXX0=
@@ -1,8 +1,5 @@
1
1
  import { CdkMenuTrigger } from '@angular/cdk/menu';
2
- import {
3
- // eslint-disable-next-line sapphire-angular/cdk-overlay
4
- Overlay, } from '@angular/cdk/overlay';
5
- import { Directive, HostListener, Input } from '@angular/core';
2
+ import { Directive, HostListener, inject, Input } from '@angular/core';
6
3
  import { SapphireOverlay } from '../../theme/src/sapphire-overlay.service';
7
4
  import { flip, toConnectedPosition, } from '../../common/placement';
8
5
  import * as i0 from "@angular/core";
@@ -10,6 +7,7 @@ import * as i1 from "@angular/cdk/menu";
10
7
  export class MenuTriggerDirective {
11
8
  constructor(menuTrigger) {
12
9
  this.menuTrigger = menuTrigger;
10
+ this.sapphireOverlay = inject(SapphireOverlay);
13
11
  /**
14
12
  * Horizontal alignment of the menu and the trigger.
15
13
  */
@@ -68,16 +66,15 @@ export class MenuTriggerDirective {
68
66
  patchMenuTrigger(menuTrigger, getPlacement) {
69
67
  // @ts-expect-error accessing private method
70
68
  const originalGetOverlayConfig = menuTrigger._getOverlayConfig;
69
+ const overlay = this.sapphireOverlay;
71
70
  // @ts-expect-error accessing private method
72
71
  menuTrigger._getOverlayConfig = function () {
73
- // @ts-expect-error accessing private method
74
- const overlay = this._overlay;
75
72
  return {
76
73
  // eslint-disable-next-line prefer-rest-params
77
74
  ...originalGetOverlayConfig.call(this, arguments),
78
75
  hasBackdrop: true,
79
76
  backdropClass: 'sapphire-menu-backdrop',
80
- scrollStrategy: overlay?.scrollStrategies.block(),
77
+ scrollStrategy: overlay?.scrollStrategies.block(), // TODO: remove and provide MENU_SCROLL_STRATEGY instead when minimum angular cdk peer dependency version is >=17.3.8
81
78
  };
82
79
  };
83
80
  // @ts-expect-error accessing private method
@@ -116,6 +113,11 @@ export class MenuTriggerDirective {
116
113
  // @ts-expect-error accessing private method
117
114
  menuTrigger._getOverlayPositionStrategy());
118
115
  originalOpen.call(menuTrigger);
116
+ // @ts-expect-error accessing private method
117
+ const overlayRef = menuTrigger.overlayRef;
118
+ if (overlayRef) {
119
+ this.sapphireOverlay.applyTheme(overlayRef);
120
+ }
119
121
  };
120
122
  }
121
123
  getPlacementValue() {
@@ -123,7 +125,9 @@ export class MenuTriggerDirective {
123
125
  }
124
126
  }
125
127
  MenuTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MenuTriggerDirective, deps: [{ token: i1.CdkMenuTrigger }], target: i0.ɵɵFactoryTarget.Directive });
126
- MenuTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: MenuTriggerDirective, selector: "[spMenuTriggerFor]", inputs: { align: ["spMenuTriggerAlign", "align"], direction: ["spMenuTriggerDirection", "direction"] }, host: { listeners: { "keydown.space": "handleSpace()", "keydown.escape": "handleEscape()" }, properties: { "class.is-active": "isOpen()" } }, providers: [{ provide: Overlay, useClass: SapphireOverlay }], exportAs: ["spMenuTrigger"], hostDirectives: [{ directive: i1.CdkMenuTrigger, inputs: ["cdkMenuTriggerFor", "spMenuTriggerFor"], outputs: ["cdkMenuOpened", "spMenuOpened", "cdkMenuClosed", "spMenuClosed"] }], ngImport: i0 });
128
+ MenuTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: MenuTriggerDirective, selector: "[spMenuTriggerFor]", inputs: { align: ["spMenuTriggerAlign", "align"], direction: ["spMenuTriggerDirection", "direction"] }, host: { listeners: { "keydown.space": "handleSpace()", "keydown.escape": "handleEscape()" }, properties: { "class.is-active": "isOpen()" } }, providers: [
129
+ SapphireOverlay, // providing it here to use the current theme.
130
+ ], exportAs: ["spMenuTrigger"], hostDirectives: [{ directive: i1.CdkMenuTrigger, inputs: ["cdkMenuTriggerFor", "spMenuTriggerFor"], outputs: ["cdkMenuOpened", "spMenuOpened", "cdkMenuClosed", "spMenuClosed"] }], ngImport: i0 });
127
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: MenuTriggerDirective, decorators: [{
128
132
  type: Directive,
129
133
  args: [{
@@ -135,8 +139,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
135
139
  outputs: ['cdkMenuOpened: spMenuOpened', 'cdkMenuClosed: spMenuClosed'],
136
140
  },
137
141
  ],
138
- // CdkMenuTrigger uses Overlay directly
139
- providers: [{ provide: Overlay, useClass: SapphireOverlay }],
142
+ providers: [
143
+ SapphireOverlay, // providing it here to use the current theme.
144
+ ],
140
145
  exportAs: 'spMenuTrigger',
141
146
  host: {
142
147
  '[class.is-active]': 'isOpen()',
@@ -156,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
156
161
  type: HostListener,
157
162
  args: ['keydown.escape']
158
163
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbWVudS9zcmMvbWVudS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTztBQUVMLHdEQUF3RDtBQUN4RCxPQUFPLEdBRVIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFDTCxJQUFJLEVBR0osbUJBQW1CLEdBRXBCLE1BQU0sd0JBQXdCLENBQUM7OztBQW1CaEMsTUFBTSxPQUFPLG9CQUFvQjtJQVcvQixZQUFvQixXQUEyQjtRQUEzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFWL0M7O1dBRUc7UUFDMEIsVUFBSyxHQUF3QixPQUFPLENBQUM7UUFFbEU7O1dBRUc7UUFDOEIsY0FBUyxHQUFzQixRQUFRLENBQUM7SUFFdkIsQ0FBQztJQUVuRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUc7WUFDOUI7Z0JBQ0UsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNEO2dCQUNFLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDWjtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGtIQUFrSDtJQUUxRyxXQUFXO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUdPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnQkFBZ0IsQ0FDdEIsV0FBMkIsRUFDM0IsWUFBNkI7UUFFN0IsNENBQTRDO1FBQzVDLE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDO1FBQy9ELDRDQUE0QztRQUM1QyxXQUFXLENBQUMsaUJBQWlCLEdBQUc7WUFDOUIsNENBQTRDO1lBQzVDLE1BQU0sT0FBTyxHQUFZLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdkMsT0FBTztnQkFDTCw4Q0FBOEM7Z0JBQzlDLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7Z0JBQ2pELFdBQVcsRUFBRSxJQUFJO2dCQUNqQixhQUFhLEVBQUUsd0JBQXdCO2dCQUN2QyxjQUFjLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEtBQUssRUFBRTthQUNsRCxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsNENBQTRDO1FBQzVDLFdBQVcsQ0FBQyxvQkFBb0IsR0FBRztZQUNqQyxNQUFNLFNBQVMsR0FBYyxZQUFZLEVBQUUsSUFBSSxjQUFjLENBQUM7WUFFOUQsT0FBTztnQkFDTCxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7Z0JBQzlCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNyQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsTUFBTSxtQ0FBbUM7UUFDdkMsNENBQTRDO1FBQzVDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztRQUMxQyw0Q0FBNEM7UUFDNUMsV0FBVyxDQUFDLDJCQUEyQjtZQUNyQztnQkFDRSxNQUFNLE1BQU0sR0FBRyxtQ0FBbUMsQ0FBQyxJQUFJLENBQ3JELElBQUk7Z0JBQ0osOENBQThDO2dCQUM5QyxTQUFTLENBQzJCLENBQUM7Z0JBRXZDOzs7Ozs7OzttQkFRRztnQkFDSCxNQUFNLFNBQVMsR0FBYyxZQUFZLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUM7UUFFSixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ3RDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ3RCLDRDQUE0QztZQUM1QyxXQUFXLENBQUMsVUFBVSxFQUFFLHNCQUFzQjtZQUM1Qyw0Q0FBNEM7WUFDNUMsV0FBVyxDQUFDLDJCQUEyQixFQUFFLENBQzFDLENBQUM7WUFDRixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7O2lIQXhJVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixtU0FQcEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDOzJGQU9qRCxvQkFBb0I7a0JBakJoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLGNBQWMsRUFBRTt3QkFDZDs0QkFDRSxTQUFTLEVBQUUsY0FBYzs0QkFDekIsTUFBTSxFQUFFLENBQUMscUNBQXFDLENBQUM7NEJBQy9DLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixFQUFFLDZCQUE2QixDQUFDO3lCQUN4RTtxQkFDRjtvQkFDRCx1Q0FBdUM7b0JBQ3ZDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUM7b0JBQzVELFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUU7d0JBQ0osbUJBQW1CLEVBQUUsVUFBVTtxQkFDaEM7b0JBQ0QsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO3FHQUs4QixLQUFLO3NCQUFqQyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFLTSxTQUFTO3NCQUF6QyxLQUFLO3VCQUFDLHdCQUF3QjtnQkE4Q3ZCLFdBQVc7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZTtnQkFNckIsWUFBWTtzQkFEbkIsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9tZW51JztcbmltcG9ydCB7XG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNhcHBoaXJlLWFuZ3VsYXIvY2RrLW92ZXJsYXlcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNhcHBoaXJlT3ZlcmxheSB9IGZyb20gJy4uLy4uL3RoZW1lL3NyYy9zYXBwaGlyZS1vdmVybGF5LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgZmxpcCxcbiAgSG9yaXpvbnRhbFBsYWNlbWVudCxcbiAgUGxhY2VtZW50LFxuICB0b0Nvbm5lY3RlZFBvc2l0aW9uLFxuICBWZXJ0aWNhbFBsYWNlbWVudCxcbn0gZnJvbSAnLi4vLi4vY29tbW9uL3BsYWNlbWVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzcE1lbnVUcmlnZ2VyRm9yXScsXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAge1xuICAgICAgZGlyZWN0aXZlOiBDZGtNZW51VHJpZ2dlcixcbiAgICAgIGlucHV0czogWydjZGtNZW51VHJpZ2dlckZvcjogc3BNZW51VHJpZ2dlckZvciddLFxuICAgICAgb3V0cHV0czogWydjZGtNZW51T3BlbmVkOiBzcE1lbnVPcGVuZWQnLCAnY2RrTWVudUNsb3NlZDogc3BNZW51Q2xvc2VkJ10sXG4gICAgfSxcbiAgXSxcbiAgLy8gQ2RrTWVudVRyaWdnZXIgdXNlcyBPdmVybGF5IGRpcmVjdGx5XG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogT3ZlcmxheSwgdXNlQ2xhc3M6IFNhcHBoaXJlT3ZlcmxheSB9XSxcbiAgZXhwb3J0QXM6ICdzcE1lbnVUcmlnZ2VyJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuaXMtYWN0aXZlXSc6ICdpc09wZW4oKScsXG4gIH0sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51VHJpZ2dlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBIb3Jpem9udGFsIGFsaWdubWVudCBvZiB0aGUgbWVudSBhbmQgdGhlIHRyaWdnZXIuXG4gICAqL1xuICBASW5wdXQoJ3NwTWVudVRyaWdnZXJBbGlnbicpIGFsaWduOiBIb3Jpem9udGFsUGxhY2VtZW50ID0gJ3N0YXJ0JztcblxuICAvKipcbiAgICogVmVydGljYWwgZGlyZWN0aW9uIGluIHdoaWNoIHRoZSBtZW51IG9wZW5zLCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci5cbiAgICovXG4gIEBJbnB1dCgnc3BNZW51VHJpZ2dlckRpcmVjdGlvbicpIGRpcmVjdGlvbjogVmVydGljYWxQbGFjZW1lbnQgPSAnYm90dG9tJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lbnVUcmlnZ2VyOiBDZGtNZW51VHJpZ2dlcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVUcmlnZ2VyLm1lbnVQb3NpdGlvbiA9IFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIG9mZnNldFk6IDYsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgb2Zmc2V0WTogLTYsXG4gICAgICB9LFxuICAgIF07XG4gICAgdGhpcy5wYXRjaE1lbnVUcmlnZ2VyKHRoaXMubWVudVRyaWdnZXIsIHRoaXMuZ2V0UGxhY2VtZW50VmFsdWUuYmluZCh0aGlzKSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51VHJpZ2dlci5jbG9zZSgpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51VHJpZ2dlci5vcGVuKCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudVRyaWdnZXIudG9nZ2xlKCk7XG4gIH1cblxuICBnZXRNZW51KCkge1xuICAgIHJldHVybiB0aGlzLm1lbnVUcmlnZ2VyLmdldE1lbnUoKTtcbiAgfVxuXG4gIGlzT3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51VHJpZ2dlci5pc09wZW4oKTtcbiAgfVxuXG4gIC8vIFByZXZlbnRpbmcgZGVmYXVsdCBiZWhhdmlvciBvZiBwYWdlIGJlaW5nIHNjcm9sbGVkIHdoZW4geW91IHByZXNzIHNwYWNlIHdoZW4geW91IHVzZSBpdCB0byBhY3RpdmF0ZSB0aGUgdHJpZ2dlclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnNwYWNlJylcbiAgcHJpdmF0ZSBoYW5kbGVTcGFjZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVzY2FwZScpXG4gIHByaXZhdGUgaGFuZGxlRXNjYXBlKCkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgQ2RrTWVudVRyaWdnZXJgIGNvbnRyb2xzIG92ZXJsYXkgY3JlYXRpb24sIGFuZCBkb2Vzbid0IGFsbG93IGN1c3RvbWl6aW5nIG92ZXJsYXkgY29uZmlnLlxuICAgKiBXZSBuZWVkIHRvIHBhdGNoIGl0IGxpa2UgdGhpcyB0byBtYWtlIHRoZSBtZW51IG1vZGFsLCBsaWtlIG90aGVyIHBvcG92ZXJzLiBJdCdzIHVuc2FmZSwgYXMgaXRcbiAgICogcmVsaWVzIG9uIHByaXZhdGUgQVBJLCBzbyB3ZSBoYXZlIHRvIGNvdmVyIHRoZSBleHBlY3RlZCByZXN1bHQgYnkgdGVzdHMuXG4gICAqL1xuICBwcml2YXRlIHBhdGNoTWVudVRyaWdnZXIoXG4gICAgbWVudVRyaWdnZXI6IENka01lbnVUcmlnZ2VyLFxuICAgIGdldFBsYWNlbWVudDogKCkgPT4gUGxhY2VtZW50XG4gICkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kXG4gICAgY29uc3Qgb3JpZ2luYWxHZXRPdmVybGF5Q29uZmlnID0gbWVudVRyaWdnZXIuX2dldE92ZXJsYXlDb25maWc7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBtZXRob2RcbiAgICBtZW51VHJpZ2dlci5fZ2V0T3ZlcmxheUNvbmZpZyA9IGZ1bmN0aW9uICgpOiBPdmVybGF5Q29uZmlnIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kXG4gICAgICBjb25zdCBvdmVybGF5OiBPdmVybGF5ID0gdGhpcy5fb3ZlcmxheTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICAgICAgLi4ub3JpZ2luYWxHZXRPdmVybGF5Q29uZmlnLmNhbGwodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdzYXBwaGlyZS1tZW51LWJhY2tkcm9wJyxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG92ZXJsYXk/LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kXG4gICAgbWVudVRyaWdnZXIuX2dldE92ZXJsYXlQb3NpdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9IGdldFBsYWNlbWVudCgpIHx8ICdib3R0b20gc3RhcnQnO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICB0b0Nvbm5lY3RlZFBvc2l0aW9uKHBsYWNlbWVudCksXG4gICAgICAgIHRvQ29ubmVjdGVkUG9zaXRpb24oZmxpcChwbGFjZW1lbnQpKSxcbiAgICAgIF07XG4gICAgfTtcblxuICAgIGNvbnN0IG9yaWdpbmFsX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5ID1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kXG4gICAgICBtZW51VHJpZ2dlci5fZ2V0T3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBtZXRob2RcbiAgICBtZW51VHJpZ2dlci5fZ2V0T3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kgPVxuICAgICAgZnVuY3Rpb24gKCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5LmNhbGwoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgICAgYXJndW1lbnRzXG4gICAgICAgICkgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUd28gcmVhc29ucyBmb3Igdmlld3BvcnQgbWFyZ2luOlxuICAgICAgICAgKiAtIExvb2tzIHVnbHkgd2l0aCB6ZXJvIG1hcmdpblxuICAgICAgICAgKiAtIEZvciBzb21lIHJlYXNvbiwgd2l0aCB6ZXJvIG1hcmdpbiwgbWVudSBpdGVtIHRleHQgbWF5IHVubmVjZXNzYXJpbHlcbiAgICAgICAgICogICB3cmFwLCBpZiBtZW51IHRyaWdnZXIgaXMgcmVuZGVyZWQgY2xvc2UgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlXG4gICAgICAgICAqICAgdmlld3BvcnQuXG4gICAgICAgICAqIC0gSWYgbWVudSBwb3BvdmVyIGlzICdlbmQnIGFsaWduZWQsIGl0J3MgZm9yIHNvbWUgcmVhc29uIHB1c2hlZCB0byB0aGUgcmlnaHRcbiAgICAgICAgICogICBhcyBpZiBpdCB3ZXJlIGNsb3NlIHRvIHRoZSBsZWZ0IGVkZ2UuIFRodXMgYXZvaWRpbmcgbWFyZ2luIGluIHRob3NlIGNhc2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSBnZXRQbGFjZW1lbnQoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC53aXRoVmlld3BvcnRNYXJnaW4ocGxhY2VtZW50LmluY2x1ZGVzKCdlbmQnKSA/IDAgOiA2KTtcbiAgICAgIH07XG5cbiAgICBjb25zdCBvcmlnaW5hbE9wZW4gPSBtZW51VHJpZ2dlci5vcGVuO1xuICAgIG1lbnVUcmlnZ2VyLm9wZW4gPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcml2YXRlIG1ldGhvZFxuICAgICAgbWVudVRyaWdnZXIub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBtZXRob2RcbiAgICAgICAgbWVudVRyaWdnZXIuX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KClcbiAgICAgICk7XG4gICAgICBvcmlnaW5hbE9wZW4uY2FsbChtZW51VHJpZ2dlcik7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGxhY2VtZW50VmFsdWUoKTogUGxhY2VtZW50IHtcbiAgICByZXR1cm4gYCR7dGhpcy5kaXJlY3Rpb259ICR7dGhpcy5hbGlnbn1gO1xuICB9XG59XG4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbWVudS9zcmMvbWVudS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFPbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUNMLElBQUksRUFHSixtQkFBbUIsR0FFcEIsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBb0JoQyxNQUFNLE9BQU8sb0JBQW9CO0lBWS9CLFlBQW9CLFdBQTJCO1FBQTNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQVh2QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRDs7V0FFRztRQUMwQixVQUFLLEdBQXdCLE9BQU8sQ0FBQztRQUVsRTs7V0FFRztRQUM4QixjQUFTLEdBQXNCLFFBQVEsQ0FBQztJQUV2QixDQUFDO0lBRW5ELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksR0FBRztZQUM5QjtnQkFDRSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUNaO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJ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QVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7O2lIQTdJVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixtU0FUcEI7UUFDVCxlQUFlLEVBQUUsOENBQThDO0tBQ2hFOzJGQU9VLG9CQUFvQjtrQkFsQmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsY0FBYyxFQUFFO3dCQUNkOzRCQUNFLFNBQVMsRUFBRSxjQUFjOzRCQUN6QixNQUFNLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQzs0QkFDL0MsT0FBTyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsNkJBQTZCLENBQUM7eUJBQ3hFO3FCQUNGO29CQUNELFNBQVMsRUFBRTt3QkFDVCxlQUFlLEVBQUUsOENBQThDO3FCQUNoRTtvQkFDRCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsSUFBSSxFQUFFO3dCQUNKLG1CQUFtQixFQUFFLFVBQVU7cUJBQ2hDO29CQUNELFVBQVUsRUFBRSxLQUFLO2lCQUNsQjtxR0FNOEIsS0FBSztzQkFBakMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBS00sU0FBUztzQkFBekMsS0FBSzt1QkFBQyx3QkFBd0I7Z0JBOEN2QixXQUFXO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBTXJCLFlBQVk7c0JBRG5CLFlBQVk7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrTWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbWVudSc7XG5pbXBvcnQge1xuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzYXBwaGlyZS1hbmd1bGFyL2Nkay1vdmVybGF5XG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNhcHBoaXJlT3ZlcmxheSB9IGZyb20gJy4uLy4uL3RoZW1lL3NyYy9zYXBwaGlyZS1vdmVybGF5LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgZmxpcCxcbiAgSG9yaXpvbnRhbFBsYWNlbWVudCxcbiAgUGxhY2VtZW50LFxuICB0b0Nvbm5lY3RlZFBvc2l0aW9uLFxuICBWZXJ0aWNhbFBsYWNlbWVudCxcbn0gZnJvbSAnLi4vLi4vY29tbW9uL3BsYWNlbWVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzcE1lbnVUcmlnZ2VyRm9yXScsXG4gIGhvc3REaXJlY3RpdmVzOiBbXG4gICAge1xuICAgICAgZGlyZWN0aXZlOiBDZGtNZW51VHJpZ2dlcixcbiAgICAgIGlucHV0czogWydjZGtNZW51VHJpZ2dlckZvcjogc3BNZW51VHJpZ2dlckZvciddLFxuICAgICAgb3V0cHV0czogWydjZGtNZW51T3BlbmVkOiBzcE1lbnVPcGVuZWQnLCAnY2RrTWVudUNsb3NlZDogc3BNZW51Q2xvc2VkJ10sXG4gICAgfSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2FwcGhpcmVPdmVybGF5LCAvLyBwcm92aWRpbmcgaXQgaGVyZSB0byB1c2UgdGhlIGN1cnJlbnQgdGhlbWUuXG4gIF0sXG4gIGV4cG9ydEFzOiAnc3BNZW51VHJpZ2dlcicsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmlzLWFjdGl2ZV0nOiAnaXNPcGVuKCknLFxuICB9LFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHNhcHBoaXJlT3ZlcmxheSA9IGluamVjdChTYXBwaGlyZU92ZXJsYXkpO1xuICAvKipcbiAgICogSG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgdGhlIG1lbnUgYW5kIHRoZSB0cmlnZ2VyLlxuICAgKi9cbiAgQElucHV0KCdzcE1lbnVUcmlnZ2VyQWxpZ24nKSBhbGlnbjogSG9yaXpvbnRhbFBsYWNlbWVudCA9ICdzdGFydCc7XG5cbiAgLyoqXG4gICAqIFZlcnRpY2FsIGRpcmVjdGlvbiBpbiB3aGljaCB0aGUgbWVudSBvcGVucywgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqL1xuICBASW5wdXQoJ3NwTWVudVRyaWdnZXJEaXJlY3Rpb24nKSBkaXJlY3Rpb246IFZlcnRpY2FsUGxhY2VtZW50ID0gJ2JvdHRvbSc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZW51VHJpZ2dlcjogQ2RrTWVudVRyaWdnZXIpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51VHJpZ2dlci5tZW51UG9zaXRpb24gPSBbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICBvZmZzZXRZOiA2LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIG9mZnNldFk6IC02LFxuICAgICAgfSxcbiAgICBdO1xuICAgIHRoaXMucGF0Y2hNZW51VHJpZ2dlcih0aGlzLm1lbnVUcmlnZ2VyLCB0aGlzLmdldFBsYWNlbWVudFZhbHVlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudVRyaWdnZXIuY2xvc2UoKTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudVRyaWdnZXIub3BlbigpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLm1lbnVUcmlnZ2VyLnRvZ2dsZSgpO1xuICB9XG5cbiAgZ2V0TWVudSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZW51VHJpZ2dlci5nZXRNZW51KCk7XG4gIH1cblxuICBpc09wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMubWVudVRyaWdnZXIuaXNPcGVuKCk7XG4gIH1cblxuICAvLyBQcmV2ZW50aW5nIGRlZmF1bHQgYmVoYXZpb3Igb2YgcGFnZSBiZWluZyBzY3JvbGxlZCB3aGVuIHlvdSBwcmVzcyBzcGFjZSB3aGVuIHlvdSB1c2UgaXQgdG8gYWN0aXZhdGUgdGhlIHRyaWdnZXJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScpXG4gIHByaXZhdGUgaGFuZGxlU3BhY2UoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2NhcGUnKVxuICBwcml2YXRlIGhhbmRsZUVzY2FwZSgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogYENka01lbnVUcmlnZ2VyYCBjb250cm9scyBvdmVybGF5IGNyZWF0aW9uLCBhbmQgZG9lc24ndCBhbGxvdyBjdXN0b21pemluZyBvdmVybGF5IGNvbmZpZy5cbiAgICogV2UgbmVlZCB0byBwYXRjaCBpdCBsaWtlIHRoaXMgdG8gbWFrZSB0aGUgbWVudSBtb2RhbCwgbGlrZSBvdGhlciBwb3BvdmVycy4gSXQncyB1bnNhZmUsIGFzIGl0XG4gICAqIHJlbGllcyBvbiBwcml2YXRlIEFQSSwgc28gd2UgaGF2ZSB0byBjb3ZlciB0aGUgZXhwZWN0ZWQgcmVzdWx0IGJ5IHRlc3RzLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXRjaE1lbnVUcmlnZ2VyKFxuICAgIG1lbnVUcmlnZ2VyOiBDZGtNZW51VHJpZ2dlcixcbiAgICBnZXRQbGFjZW1lbnQ6ICgpID0+IFBsYWNlbWVudFxuICApIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcml2YXRlIG1ldGhvZFxuICAgIGNvbnN0IG9yaWdpbmFsR2V0T3ZlcmxheUNvbmZpZyA9IG1lbnVUcmlnZ2VyLl9nZXRPdmVybGF5Q29uZmlnO1xuICAgIGNvbnN0IG92ZXJsYXk6IE92ZXJsYXkgPSB0aGlzLnNhcHBoaXJlT3ZlcmxheTtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcml2YXRlIG1ldGhvZFxuICAgIG1lbnVUcmlnZ2VyLl9nZXRPdmVybGF5Q29uZmlnID0gZnVuY3Rpb24gKCk6IE92ZXJsYXlDb25maWcge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAuLi5vcmlnaW5hbEdldE92ZXJsYXlDb25maWcuY2FsbCh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ3NhcHBoaXJlLW1lbnUtYmFja2Ryb3AnLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogb3ZlcmxheT8uc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLCAvLyBUT0RPOiByZW1vdmUgYW5kIHByb3ZpZGUgTUVOVV9TQ1JPTExfU1RSQVRFR1kgaW5zdGVhZCB3aGVuIG1pbmltdW0gYW5ndWxhciBjZGsgcGVlciBkZXBlbmRlbmN5IHZlcnNpb24gaXMgPj0xNy4zLjhcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kXG4gICAgbWVudVRyaWdnZXIuX2dldE92ZXJsYXlQb3NpdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBwbGFjZW1lbnQ6IFBsYWNlbWVudCA9IGdldFBsYWNlbWVudCgpIHx8ICdib3R0b20gc3RhcnQnO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICB0b0Nvbm5lY3RlZFBvc2l0aW9uKHBsYWNlbWVudCksXG4gICAgICAgIHRvQ29ubmVjdGVkUG9zaXRpb24oZmxpcChwbGFjZW1lbnQpKSxcbiAgICAgIF07XG4gICAgfTtcblxuICAgIGNvbnN0IG9yaWdpbmFsX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5ID1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWNjZXNzaW5nIHByaXZhdGUgbWV0aG9kXG4gICAgICBtZW51VHJpZ2dlci5fZ2V0T3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBtZXRob2RcbiAgICBtZW51VHJpZ2dlci5fZ2V0T3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kgPVxuICAgICAgZnVuY3Rpb24gKCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5LmNhbGwoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgICAgYXJndW1lbnRzXG4gICAgICAgICkgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUd28gcmVhc29ucyBmb3Igdmlld3BvcnQgbWFyZ2luOlxuICAgICAgICAgKiAtIExvb2tzIHVnbHkgd2l0aCB6ZXJvIG1hcmdpblxuICAgICAgICAgKiAtIEZvciBzb21lIHJlYXNvbiwgd2l0aCB6ZXJvIG1hcmdpbiwgbWVudSBpdGVtIHRleHQgbWF5IHVubmVjZXNzYXJpbHlcbiAgICAgICAgICogICB3cmFwLCBpZiBtZW51IHRyaWdnZXIgaXMgcmVuZGVyZWQgY2xvc2UgdG8gdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlXG4gICAgICAgICAqICAgdmlld3BvcnQuXG4gICAgICAgICAqIC0gSWYgbWVudSBwb3BvdmVyIGlzICdlbmQnIGFsaWduZWQsIGl0J3MgZm9yIHNvbWUgcmVhc29uIHB1c2hlZCB0byB0aGUgcmlnaHRcbiAgICAgICAgICogICBhcyBpZiBpdCB3ZXJlIGNsb3NlIHRvIHRoZSBsZWZ0IGVkZ2UuIFRodXMgYXZvaWRpbmcgbWFyZ2luIGluIHRob3NlIGNhc2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQbGFjZW1lbnQgPSBnZXRQbGFjZW1lbnQoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC53aXRoVmlld3BvcnRNYXJnaW4ocGxhY2VtZW50LmluY2x1ZGVzKCdlbmQnKSA/IDAgOiA2KTtcbiAgICAgIH07XG5cbiAgICBjb25zdCBvcmlnaW5hbE9wZW4gPSBtZW51VHJpZ2dlci5vcGVuO1xuICAgIG1lbnVUcmlnZ2VyLm9wZW4gPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcml2YXRlIG1ldGhvZFxuICAgICAgbWVudVRyaWdnZXIub3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBtZXRob2RcbiAgICAgICAgbWVudVRyaWdnZXIuX2dldE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5KClcbiAgICAgICk7XG4gICAgICBvcmlnaW5hbE9wZW4uY2FsbChtZW51VHJpZ2dlcik7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcml2YXRlIG1ldGhvZFxuICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IG1lbnVUcmlnZ2VyLm92ZXJsYXlSZWY7XG4gICAgICBpZiAob3ZlcmxheVJlZikge1xuICAgICAgICB0aGlzLnNhcHBoaXJlT3ZlcmxheS5hcHBseVRoZW1lKG92ZXJsYXlSZWYpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFBsYWNlbWVudFZhbHVlKCk6IFBsYWNlbWVudCB7XG4gICAgcmV0dXJuIGAke3RoaXMuZGlyZWN0aW9ufSAke3RoaXMuYWxpZ259YDtcbiAgfVxufVxuIl19