@rivet-health/design-system 40.37.0 → 40.39.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.
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
2
  import { CheckboxComponent } from '../checkbox/checkbox.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
@@ -6,17 +6,28 @@ export class SwitchCheckboxComponent extends CheckboxComponent {
6
6
  constructor() {
7
7
  super(...arguments);
8
8
  this.size = 'medium';
9
+ /**
10
+ * Only value changes after the first render animate, so a switch that
11
+ * renders already on doesn't slide into place.
12
+ */
13
+ this.animated = false;
14
+ }
15
+ ngOnChanges(changes) {
16
+ super.ngOnChanges(changes);
17
+ if (changes['value'] && !changes['value'].firstChange) {
18
+ this.animated = true;
19
+ }
9
20
  }
10
21
  }
11
22
  SwitchCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SwitchCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12
- SwitchCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SwitchCheckboxComponent, selector: "riv-switch-checkbox", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: "<label\n #label\n [ngClass]=\"size\"\n [class.checked]=\"value\"\n [class.disabled]=\"disabled\"\n>\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [required]=\"required\"\n [attr.aria-label]=\"isCheckboxOnly() ? ariaLabel : null\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n", styles: [":host{display:inline-flex}label{position:relative;flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:center;--transition-params: .15s cubic-bezier(.52, .19, .98, .43)}label.medium{--slide-width: calc(var(--base-grid-size) * 12);--switch-size: calc(var(--base-grid-size) * 6)}label.small{--slide-width: calc(var(--base-grid-size) * 8);--switch-size: calc(var(--base-grid-size) * 4)}label:not(.disabled){cursor:pointer}label:before{content:\"\";display:inline-block;box-sizing:border-box;width:var(--slide-width);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:var(--switch-size);transition:background-color var(--transition-params)}label.disabled:before{background-color:var(--black-20)}label.checked:before{background-color:var(--purp-60)}label.disabled.checked:before{background-color:var(--black-60)}label:after{content:\"\";position:absolute;width:var(--switch-size);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:100%;box-shadow:var(--depth-1);transition:transform var(--transition-params)}label.checked:after{transform:translate(calc(var(--slide-width) - var(--switch-size)))}input{position:absolute;opacity:0;z-index:-1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
+ SwitchCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SwitchCheckboxComponent, selector: "riv-switch-checkbox", inputs: { size: "size" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label\n #label\n [ngClass]=\"size\"\n [class.checked]=\"value\"\n [class.animated]=\"animated\"\n [class.disabled]=\"disabled\"\n>\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [required]=\"required\"\n [attr.aria-label]=\"isCheckboxOnly() ? ariaLabel : null\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n", styles: [":host{display:inline-flex}label{position:relative;flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:center;--transition-params: .15s cubic-bezier(.52, .19, .98, .43)}label.medium{--slide-width: calc(var(--base-grid-size) * 12);--switch-size: calc(var(--base-grid-size) * 6)}label.small{--slide-width: calc(var(--base-grid-size) * 8);--switch-size: calc(var(--base-grid-size) * 4)}label:not(.disabled){cursor:pointer}label:before{content:\"\";display:inline-block;box-sizing:border-box;width:var(--slide-width);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:var(--switch-size)}label.animated:before{transition:background-color var(--transition-params)}label.disabled:before{background-color:var(--black-20)}label.checked:before{background-color:var(--purp-60)}label.disabled.checked:before{background-color:var(--black-60)}label:after{content:\"\";position:absolute;width:var(--switch-size);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:100%;box-shadow:var(--depth-1)}label.animated:after{transition:transform var(--transition-params)}label.checked:after{transform:translate(calc(var(--slide-width) - var(--switch-size)))}input{position:absolute;opacity:0;z-index:-1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SwitchCheckboxComponent, decorators: [{
14
25
  type: Component,
15
- args: [{ selector: 'riv-switch-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n #label\n [ngClass]=\"size\"\n [class.checked]=\"value\"\n [class.disabled]=\"disabled\"\n>\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [required]=\"required\"\n [attr.aria-label]=\"isCheckboxOnly() ? ariaLabel : null\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n", styles: [":host{display:inline-flex}label{position:relative;flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:center;--transition-params: .15s cubic-bezier(.52, .19, .98, .43)}label.medium{--slide-width: calc(var(--base-grid-size) * 12);--switch-size: calc(var(--base-grid-size) * 6)}label.small{--slide-width: calc(var(--base-grid-size) * 8);--switch-size: calc(var(--base-grid-size) * 4)}label:not(.disabled){cursor:pointer}label:before{content:\"\";display:inline-block;box-sizing:border-box;width:var(--slide-width);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:var(--switch-size);transition:background-color var(--transition-params)}label.disabled:before{background-color:var(--black-20)}label.checked:before{background-color:var(--purp-60)}label.disabled.checked:before{background-color:var(--black-60)}label:after{content:\"\";position:absolute;width:var(--switch-size);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:100%;box-shadow:var(--depth-1);transition:transform var(--transition-params)}label.checked:after{transform:translate(calc(var(--slide-width) - var(--switch-size)))}input{position:absolute;opacity:0;z-index:-1}\n"] }]
26
+ args: [{ selector: 'riv-switch-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n #label\n [ngClass]=\"size\"\n [class.checked]=\"value\"\n [class.animated]=\"animated\"\n [class.disabled]=\"disabled\"\n>\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [required]=\"required\"\n [attr.aria-label]=\"isCheckboxOnly() ? ariaLabel : null\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n", styles: [":host{display:inline-flex}label{position:relative;flex-grow:1;display:inline-flex;gap:var(--size-small);align-items:center;--transition-params: .15s cubic-bezier(.52, .19, .98, .43)}label.medium{--slide-width: calc(var(--base-grid-size) * 12);--switch-size: calc(var(--base-grid-size) * 6)}label.small{--slide-width: calc(var(--base-grid-size) * 8);--switch-size: calc(var(--base-grid-size) * 4)}label:not(.disabled){cursor:pointer}label:before{content:\"\";display:inline-block;box-sizing:border-box;width:var(--slide-width);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:var(--switch-size)}label.animated:before{transition:background-color var(--transition-params)}label.disabled:before{background-color:var(--black-20)}label.checked:before{background-color:var(--purp-60)}label.disabled.checked:before{background-color:var(--black-60)}label:after{content:\"\";position:absolute;width:var(--switch-size);height:var(--switch-size);background-color:var(--white-100);border:var(--border-width) solid var(--border-light);border-radius:100%;box-shadow:var(--depth-1)}label.animated:after{transition:transform var(--transition-params)}label.checked:after{transform:translate(calc(var(--slide-width) - var(--switch-size)))}input{position:absolute;opacity:0;z-index:-1}\n"] }]
16
27
  }], propDecorators: { size: [{
17
28
  type: Input
18
29
  }] } });
19
30
  (function (SwitchCheckboxComponent) {
20
31
  SwitchCheckboxComponent.Sizes = ['small', 'medium'];
21
32
  })(SwitchCheckboxComponent || (SwitchCheckboxComponent = {}));
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2lucHV0L3N3aXRjaC1jaGVja2JveC9zd2l0Y2gtY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc3dpdGNoLWNoZWNrYm94L3N3aXRjaC1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBUW5FLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxpQkFBaUI7SUFOOUQ7O1FBUUUsU0FBSSxHQUFpQyxRQUFRLENBQUM7S0FDL0M7O3FIQUhZLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDRHQ1RwQyxnZkFvQkE7NEZEWGEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxJQUFJO3NCQURILEtBQUs7O0FBSVIsV0FBaUIsdUJBQXVCO0lBQ3pCLDZCQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFFcEQsQ0FBQyxFQUhnQix1QkFBdUIsS0FBdkIsdUJBQXVCLFFBR3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXN3aXRjaC1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zd2l0Y2gtY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zd2l0Y2gtY2hlY2tib3guY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU3dpdGNoQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBDaGVja2JveENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHNpemU6IFN3aXRjaENoZWNrYm94Q29tcG9uZW50LlNpemUgPSAnbWVkaXVtJztcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBTd2l0Y2hDaGVja2JveENvbXBvbmVudCB7XG4gIGV4cG9ydCBjb25zdCBTaXplcyA9IFsnc21hbGwnLCAnbWVkaXVtJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFNpemUgPSAodHlwZW9mIFNpemVzKVtudW1iZXJdO1xufVxuIiwiPGxhYmVsXG4gICNsYWJlbFxuICBbbmdDbGFzc109XCJzaXplXCJcbiAgW2NsYXNzLmNoZWNrZWRdPVwidmFsdWVcIlxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuPlxuICA8aW5wdXRcbiAgICAjaW5wdXRcbiAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtpZF09XCJpZGVudGlmaWVyXCJcbiAgICBbY2hlY2tlZF09XCJ2YWx1ZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkID8gJ3RydWUnIDogbnVsbFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImlzQ2hlY2tib3hPbmx5KCkgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAoY2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoISFpbnB1dC5jaGVja2VkKVwiXG4gIC8+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbGFiZWw+XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2lucHV0L3N3aXRjaC1jaGVja2JveC9zd2l0Y2gtY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvc3dpdGNoLWNoZWNrYm94L3N3aXRjaC1jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQVFuRSxNQUFNLE9BQU8sdUJBQ1gsU0FBUSxpQkFBaUI7SUFQM0I7O1FBV0UsU0FBSSxHQUFpQyxRQUFRLENBQUM7UUFFOUM7OztXQUdHO1FBQ0gsYUFBUSxHQUFZLEtBQUssQ0FBQztLQVEzQjtJQU5VLFdBQVcsQ0FBQyxPQUFzQjtRQUN6QyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN0QjtJQUNILENBQUM7O3FIQWxCVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixpSUNmcEMsaWhCQXFCQTs0RkROYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07OEJBTy9DLElBQUk7c0JBREgsS0FBSzs7QUFpQlIsV0FBaUIsdUJBQXVCO0lBQ3pCLDZCQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFFcEQsQ0FBQyxFQUhnQix1QkFBdUIsS0FBdkIsdUJBQXVCLFFBR3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1zd2l0Y2gtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3dpdGNoLWNoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoLWNoZWNrYm94LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFN3aXRjaENoZWNrYm94Q29tcG9uZW50XG4gIGV4dGVuZHMgQ2hlY2tib3hDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgQElucHV0KClcbiAgc2l6ZTogU3dpdGNoQ2hlY2tib3hDb21wb25lbnQuU2l6ZSA9ICdtZWRpdW0nO1xuXG4gIC8qKlxuICAgKiBPbmx5IHZhbHVlIGNoYW5nZXMgYWZ0ZXIgdGhlIGZpcnN0IHJlbmRlciBhbmltYXRlLCBzbyBhIHN3aXRjaCB0aGF0XG4gICAqIHJlbmRlcnMgYWxyZWFkeSBvbiBkb2Vzbid0IHNsaWRlIGludG8gcGxhY2UuXG4gICAqL1xuICBhbmltYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG92ZXJyaWRlIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICBpZiAoY2hhbmdlc1sndmFsdWUnXSAmJiAhY2hhbmdlc1sndmFsdWUnXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5hbmltYXRlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU3dpdGNoQ2hlY2tib3hDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgU2l6ZXMgPSBbJ3NtYWxsJywgJ21lZGl1bSddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTaXplcylbbnVtYmVyXTtcbn1cbiIsIjxsYWJlbFxuICAjbGFiZWxcbiAgW25nQ2xhc3NdPVwic2l6ZVwiXG4gIFtjbGFzcy5jaGVja2VkXT1cInZhbHVlXCJcbiAgW2NsYXNzLmFuaW1hdGVkXT1cImFuaW1hdGVkXCJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAgPGlucHV0XG4gICAgI2lucHV0XG4gICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbaWRdPVwiaWRlbnRpZmllclwiXG4gICAgW2NoZWNrZWRdPVwidmFsdWVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc0NoZWNrYm94T25seSgpID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgKGNoYW5nZSk9XCJ2YWx1ZUNoYW5nZS5lbWl0KCEhaW5wdXQuY2hlY2tlZClcIlxuICAvPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2xhYmVsPlxuIl19
@@ -11,7 +11,7 @@ export class OverlayDirective {
11
11
  }
12
12
  ngOnDestroy() {
13
13
  if (this.key)
14
- this.key.then(k => this.overlayService.remove(k));
14
+ this.overlayService.remove(this.key);
15
15
  }
16
16
  }
17
17
  OverlayDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OverlayDirective, deps: [{ token: i0.TemplateRef }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Directive });
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
22
22
  selector: '[riv-overlay]',
23
23
  }]
24
24
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i1.OverlayService }]; } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9vdmVybGF5L292ZXJsYXkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtDLE1BQU0sZUFBZSxDQUFDOzs7QUFNMUUsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUNtQixRQUEyQixFQUMzQixjQUE4QjtRQUQ5QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDOUMsQ0FBQztJQUlKLFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLEdBQUc7WUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7OEdBZFUsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuL292ZXJsYXkuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tyaXYtb3ZlcmxheV0nLFxufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSxcbiAgKSB7fVxuXG4gIHByaXZhdGUga2V5PzogUHJvbWlzZTxTeW1ib2w+O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMua2V5ID0gdGhpcy5vdmVybGF5U2VydmljZS5hZGQodGhpcy50ZW1wbGF0ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5rZXkpIHRoaXMua2V5LnRoZW4oayA9PiB0aGlzLm92ZXJsYXlTZXJ2aWNlLnJlbW92ZShrKSk7XG4gIH1cbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9vdmVybGF5L292ZXJsYXkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtDLE1BQU0sZUFBZSxDQUFDOzs7QUFNMUUsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUNtQixRQUEyQixFQUMzQixjQUE4QjtRQUQ5QixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDOUMsQ0FBQztJQUlKLFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLEdBQUc7WUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7OEdBZFUsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuL292ZXJsYXkuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tyaXYtb3ZlcmxheV0nLFxufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSxcbiAgKSB7fVxuXG4gIHByaXZhdGUga2V5PzogU3ltYm9sO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMua2V5ID0gdGhpcy5vdmVybGF5U2VydmljZS5hZGQodGhpcy50ZW1wbGF0ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5rZXkpIHRoaXMub3ZlcmxheVNlcnZpY2UucmVtb3ZlKHRoaXMua2V5KTtcbiAgfVxufVxuIl19
@@ -2,37 +2,34 @@ import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export class OverlayService {
5
- constructor() {
5
+ constructor(zone) {
6
+ this.zone = zone;
6
7
  this.overlays = new BehaviorSubject(new Map());
7
8
  }
8
- // Note: these functions are async because Angular's change detection fails
9
- // to detect changes properly when the source of an event is from within a
10
- // template that is being removed as a result of that event. The Angular
11
- // template sees a cached version of the overlays Map (even though the
12
- // component TypeScript picks up on the changed Map), regardless of trying to
13
- // trigger change detection manually. Moving the change to the next tick with
14
- // this faux async fixes the issue. We may be able to remove them after an
15
- // Angular upgrade (TODO).
16
- // https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08
17
- async add(overlay) {
18
- await Promise.resolve();
9
+ add(overlay) {
19
10
  const key = Symbol();
20
- const overlays = new Map(this.overlays.getValue());
21
- overlays.set(key, overlay);
22
- this.overlays.next(overlays);
11
+ this.update(overlays => overlays.set(key, overlay));
23
12
  return key;
24
13
  }
25
- async remove(key) {
26
- await Promise.resolve();
27
- const overlays = new Map(this.overlays.getValue());
28
- overlays.delete(key);
29
- this.overlays.next(overlays);
14
+ remove(key) {
15
+ this.update(overlays => overlays.delete(key));
16
+ }
17
+ // Deferred because the template misses the change when the triggering event
18
+ // comes from a template being removed by it; run in the zone so it renders.
19
+ // TODO: remove the deferral after an Angular upgrade.
20
+ // https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08
21
+ update(change) {
22
+ queueMicrotask(() => this.zone.run(() => {
23
+ const overlays = new Map(this.overlays.getValue());
24
+ change(overlays);
25
+ this.overlays.next(overlays);
26
+ }));
30
27
  }
31
28
  }
32
- OverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
+ OverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OverlayService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
33
30
  OverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OverlayService, providedIn: 'root' });
34
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OverlayService, decorators: [{
35
32
  type: Injectable,
36
33
  args: [{ providedIn: 'root' }]
37
- }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvb3ZlcmxheS9vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt2QyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVTLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7S0F5QjVEO0lBdkJDLDJFQUEyRTtJQUMzRSwwRUFBMEU7SUFDMUUsd0VBQXdFO0lBQ3hFLHNFQUFzRTtJQUN0RSw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLDBFQUEwRTtJQUMxRSwwQkFBMEI7SUFDMUIsbUdBQW1HO0lBQzVGLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBMEI7UUFDekMsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNNLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVztRQUM3QixNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDOzs0R0F6QlUsY0FBYztnSEFBZCxjQUFjLGNBREQsTUFBTTs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIE92ZXJsYXlzID0gTWFwPFN5bWJvbCwgVGVtcGxhdGVSZWY8dm9pZD4+O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlTZXJ2aWNlIHtcbiAgcHVibGljIG92ZXJsYXlzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPdmVybGF5cz4obmV3IE1hcCgpKTtcblxuICAvLyBOb3RlOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFzeW5jIGJlY2F1c2UgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gZmFpbHNcbiAgLy8gdG8gZGV0ZWN0IGNoYW5nZXMgcHJvcGVybHkgd2hlbiB0aGUgc291cmNlIG9mIGFuIGV2ZW50IGlzIGZyb20gd2l0aGluIGFcbiAgLy8gdGVtcGxhdGUgdGhhdCBpcyBiZWluZyByZW1vdmVkIGFzIGEgcmVzdWx0IG9mIHRoYXQgZXZlbnQuIFRoZSBBbmd1bGFyXG4gIC8vIHRlbXBsYXRlIHNlZXMgYSBjYWNoZWQgdmVyc2lvbiBvZiB0aGUgb3ZlcmxheXMgTWFwIChldmVuIHRob3VnaCB0aGVcbiAgLy8gY29tcG9uZW50IFR5cGVTY3JpcHQgcGlja3MgdXAgb24gdGhlIGNoYW5nZWQgTWFwKSwgcmVnYXJkbGVzcyBvZiB0cnlpbmcgdG9cbiAgLy8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIG1hbnVhbGx5LiBNb3ZpbmcgdGhlIGNoYW5nZSB0byB0aGUgbmV4dCB0aWNrIHdpdGhcbiAgLy8gdGhpcyBmYXV4IGFzeW5jIGZpeGVzIHRoZSBpc3N1ZS4gV2UgbWF5IGJlIGFibGUgdG8gcmVtb3ZlIHRoZW0gYWZ0ZXIgYW5cbiAgLy8gQW5ndWxhciB1cGdyYWRlIChUT0RPKS5cbiAgLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG4gIHB1YmxpYyBhc3luYyBhZGQob3ZlcmxheTogVGVtcGxhdGVSZWY8dm9pZD4pOiBQcm9taXNlPFN5bWJvbD4ge1xuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGNvbnN0IGtleSA9IFN5bWJvbCgpO1xuICAgIGNvbnN0IG92ZXJsYXlzID0gbmV3IE1hcCh0aGlzLm92ZXJsYXlzLmdldFZhbHVlKCkpO1xuICAgIG92ZXJsYXlzLnNldChrZXksIG92ZXJsYXkpO1xuICAgIHRoaXMub3ZlcmxheXMubmV4dChvdmVybGF5cyk7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlKGtleTogU3ltYm9sKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgY29uc3Qgb3ZlcmxheXMgPSBuZXcgTWFwKHRoaXMub3ZlcmxheXMuZ2V0VmFsdWUoKSk7XG4gICAgb3ZlcmxheXMuZGVsZXRlKGtleSk7XG4gICAgdGhpcy5vdmVybGF5cy5uZXh0KG92ZXJsYXlzKTtcbiAgfVxufVxuIl19
34
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvb3ZlcmxheS9vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdkMsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBNkIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFFbEMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFXLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUZmLENBQUM7SUFJdEMsR0FBRyxDQUFDLE9BQTBCO1FBQ25DLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSw0RUFBNEU7SUFDNUUsc0RBQXNEO0lBQ3RELG1HQUFtRztJQUMzRixNQUFNLENBQUMsTUFBb0M7UUFDakQsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7NEdBM0JVLGNBQWM7Z0hBQWQsY0FBYyxjQURELE1BQU07NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIE92ZXJsYXlzID0gTWFwPFN5bWJvbCwgVGVtcGxhdGVSZWY8dm9pZD4+O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmUpIHt9XG5cbiAgcHVibGljIG92ZXJsYXlzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPdmVybGF5cz4obmV3IE1hcCgpKTtcblxuICBwdWJsaWMgYWRkKG92ZXJsYXk6IFRlbXBsYXRlUmVmPHZvaWQ+KTogU3ltYm9sIHtcbiAgICBjb25zdCBrZXkgPSBTeW1ib2woKTtcbiAgICB0aGlzLnVwZGF0ZShvdmVybGF5cyA9PiBvdmVybGF5cy5zZXQoa2V5LCBvdmVybGF5KSk7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoa2V5OiBTeW1ib2wpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZShvdmVybGF5cyA9PiBvdmVybGF5cy5kZWxldGUoa2V5KSk7XG4gIH1cblxuICAvLyBEZWZlcnJlZCBiZWNhdXNlIHRoZSB0ZW1wbGF0ZSBtaXNzZXMgdGhlIGNoYW5nZSB3aGVuIHRoZSB0cmlnZ2VyaW5nIGV2ZW50XG4gIC8vIGNvbWVzIGZyb20gYSB0ZW1wbGF0ZSBiZWluZyByZW1vdmVkIGJ5IGl0OyBydW4gaW4gdGhlIHpvbmUgc28gaXQgcmVuZGVycy5cbiAgLy8gVE9ETzogcmVtb3ZlIHRoZSBkZWZlcnJhbCBhZnRlciBhbiBBbmd1bGFyIHVwZ3JhZGUuXG4gIC8vIGh0dHBzOi8vd3d3Lm5vdGlvbi5zby9yaXZldC9SZXNvbHZlLVRPRE9zLWFmdGVyLUFuZ3VsYXItdXBncmFkZS0xZjI2NjdlYjJhMzE4MGI3OWY2YWQ5MmE3ZTU3NmYwOFxuICBwcml2YXRlIHVwZGF0ZShjaGFuZ2U6IChvdmVybGF5czogT3ZlcmxheXMpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PlxuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlzID0gbmV3IE1hcCh0aGlzLm92ZXJsYXlzLmdldFZhbHVlKCkpO1xuICAgICAgICBjaGFuZ2Uob3ZlcmxheXMpO1xuICAgICAgICB0aGlzLm92ZXJsYXlzLm5leHQob3ZlcmxheXMpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19