@scion/workbench 17.0.0-beta.8 → 17.0.0-beta.9

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 (61) hide show
  1. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +6 -3
  2. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +6 -3
  3. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +6 -3
  4. package/esm2022/lib/dialog/workbench-dialog.component.mjs +50 -21
  5. package/esm2022/lib/executor/single-task-executor.mjs +26 -7
  6. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +12 -4
  7. package/esm2022/lib/message-box/workbench-message-box.component.mjs +13 -4
  8. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +24 -11
  9. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +22 -10
  10. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +8 -8
  11. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +3 -3
  12. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +7 -5
  13. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +112 -0
  14. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +43 -0
  15. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +9 -7
  16. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +34 -0
  17. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +88 -0
  18. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +32 -0
  19. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +121 -0
  20. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +6 -3
  21. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +8 -14
  22. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +13 -6
  23. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +40 -11
  24. package/esm2022/lib/popup/popup.component.mjs +20 -8
  25. package/esm2022/lib/popup/popup.config.mjs +3 -1
  26. package/esm2022/lib/popup/popup.service.mjs +1 -1
  27. package/esm2022/lib/routing/router.util.mjs +8 -2
  28. package/esm2022/lib/routing/routing.model.mjs +1 -1
  29. package/esm2022/lib/routing/workbench-dialog-differ.mjs +2 -2
  30. package/esm2022/lib/routing/workbench-message-box-differ.mjs +51 -0
  31. package/esm2022/lib/routing/workbench-url-observer.service.mjs +49 -66
  32. package/esm2022/lib/routing//311/265workbench-router.service.mjs +6 -9
  33. package/esm2022/lib/view/view.component.mjs +14 -7
  34. package/esm2022/lib/workbench.component.mjs +8 -4
  35. package/esm2022/lib/workbench.constants.mjs +5 -1
  36. package/fesm2022/scion-workbench.mjs +792 -269
  37. package/fesm2022/scion-workbench.mjs.map +1 -1
  38. package/lib/dialog/workbench-dialog.component.d.ts +16 -7
  39. package/lib/executor/single-task-executor.d.ts +6 -1
  40. package/lib/glass-pane/glass-pane.directive.d.ts +21 -0
  41. package/lib/message-box/workbench-message-box.component.d.ts +3 -0
  42. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -1
  43. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -0
  44. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +39 -0
  45. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +25 -0
  46. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +3 -2
  47. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.d.ts +10 -0
  48. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.d.ts +28 -0
  49. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.d.ts +11 -0
  50. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.d.ts +48 -0
  51. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +3 -7
  52. package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +1 -1
  53. package/lib/popup/popup.component.d.ts +1 -0
  54. package/lib/routing/router.util.d.ts +4 -0
  55. package/lib/routing/workbench-message-box-differ.d.ts +25 -0
  56. package/lib/routing/workbench-url-observer.service.d.ts +7 -25
  57. package/lib/routing//311/265workbench-router.service.d.ts +3 -4
  58. package/lib/workbench.constants.d.ts +4 -0
  59. package/package.json +2 -2
  60. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.mjs +0 -46
  61. package/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.d.ts +0 -17
@@ -8,6 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Directive, Input } from '@angular/core';
11
+ import { asapScheduler } from 'rxjs';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "../\u0275workbench-dialog";
13
14
  /**
@@ -31,10 +32,12 @@ export class WorkbenchDialogActionDirective {
31
32
  * Specifies where to place this action in the dialog footer. Default is `end`.
32
33
  */
33
34
  this.align = 'end';
34
- this._action = dialog.registerAction(this);
35
+ // Defer registering action to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
36
+ asapScheduler.schedule(() => this._action = dialog.registerAction(this));
35
37
  }
36
38
  ngOnDestroy() {
37
- this._action.dispose();
39
+ // Defer disposing action to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
40
+ asapScheduler.schedule(() => this._action?.dispose());
38
41
  }
39
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchDialogActionDirective, deps: [{ token: i0.TemplateRef }, { token: i1.ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
40
43
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: WorkbenchDialogActionDirective, isStandalone: true, selector: "ng-template[wbDialogAction]", inputs: { align: "align" }, ngImport: i0 }); }
@@ -45,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
45
48
  }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i1.ɵWorkbenchDialog }], propDecorators: { align: [{
46
49
  type: Input
47
50
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1hY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL2RpYWxvZy1mb290ZXIvd29ya2JlbmNoLWRpYWxvZy1hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDOzs7QUFJdkU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVILE1BQU0sT0FBTyw4QkFBOEI7SUFVekMsWUFBNEIsUUFBMkIsRUFBRSxNQUF3QjtRQUFyRCxhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQU52RDs7V0FFRztRQUVJLFVBQUssR0FBb0IsS0FBSyxDQUFDO1FBR3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBaEJVLDhCQUE4QjtrR0FBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUQxQyxTQUFTO21CQUFDLEVBQUMsUUFBUSxFQUFFLDZCQUE2QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUM7K0dBUzdELEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hEaWFsb2d9IGZyb20gJy4uL8m1d29ya2JlbmNoLWRpYWxvZyc7XG5pbXBvcnQge0Rpc3Bvc2FibGV9IGZyb20gJy4uLy4uL2NvbW1vbi9kaXNwb3NhYmxlJztcblxuLyoqXG4gKiBVc2UgdGhpcyBkaXJlY3RpdmUgdG8gY29udHJpYnV0ZSBhbiBhY3Rpb24gdG8gdGhlIGRpYWxvZyBmb290ZXIgKG9ubHkgYXBwbGljYWJsZSBpZiBub3QgdXNpbmcgYSBjdXN0b20gZGlhbG9nIGZvb3RlcikuXG4gKlxuICogQWN0aW9ucyBhcmUgZGlzcGxheWVkIGluIHRoZSBvcmRlciBhcyBtb2RlbGVkIGluIHRoZSB0ZW1wbGF0ZSBhbmQgY2FuIGJlIHBsYWNlZCBlaXRoZXIgb24gdGhlIGxlZnQgb3IgcmlnaHQuXG4gKlxuICogVGhlIGhvc3QgZWxlbWVudCBvZiB0aGlzIG1vZGVsaW5nIGRpcmVjdGl2ZSBtdXN0IGJlIGEgPG5nLXRlbXBsYXRlPi4gVGhlIGFjdGlvbiBzaGFyZXMgdGhlIGxpZmVjeWNsZSBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqICoqRXhhbXBsZToqKlxuICogYGBgaHRtbFxuICogPG5nLXRlbXBsYXRlIHdiRGlhbG9nQWN0aW9uPlxuICogICA8YnV0dG9uIChjbGljayk9XCJkaWFsb2cuY2xvc2UoKVwiPkNsb3NlPC9idXR0b24+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbd2JEaWFsb2dBY3Rpb25dJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoRGlhbG9nQWN0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9hY3Rpb246IERpc3Bvc2FibGU7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGVyZSB0byBwbGFjZSB0aGlzIGFjdGlvbiBpbiB0aGUgZGlhbG9nIGZvb3Rlci4gRGVmYXVsdCBpcyBgZW5kYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbGlnbjogJ3N0YXJ0JyB8ICdlbmQnID0gJ2VuZCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPiwgZGlhbG9nOiDJtVdvcmtiZW5jaERpYWxvZykge1xuICAgIHRoaXMuX2FjdGlvbiA9IGRpYWxvZy5yZWdpc3RlckFjdGlvbih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb24uZGlzcG9zZSgpO1xuICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1hY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL2RpYWxvZy1mb290ZXIvd29ya2JlbmNoLWRpYWxvZy1hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUVuQzs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxPQUFPLDhCQUE4QjtJQVV6QyxZQUE0QixRQUEyQixFQUFFLE1BQXdCO1FBQXJELGFBQVEsR0FBUixRQUFRLENBQW1CO1FBTnZEOztXQUVHO1FBRUksVUFBSyxHQUFvQixLQUFLLENBQUM7UUFHcEMsbUZBQW1GO1FBQ25GLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLFdBQVc7UUFDaEIsaUZBQWlGO1FBQ2pGLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OEdBbEJVLDhCQUE4QjtrR0FBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUQxQyxTQUFTO21CQUFDLEVBQUMsUUFBUSxFQUFFLDZCQUE2QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUM7K0dBUzdELEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hEaWFsb2d9IGZyb20gJy4uL8m1d29ya2JlbmNoLWRpYWxvZyc7XG5pbXBvcnQge0Rpc3Bvc2FibGV9IGZyb20gJy4uLy4uL2NvbW1vbi9kaXNwb3NhYmxlJztcbmltcG9ydCB7YXNhcFNjaGVkdWxlcn0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVXNlIHRoaXMgZGlyZWN0aXZlIHRvIGNvbnRyaWJ1dGUgYW4gYWN0aW9uIHRvIHRoZSBkaWFsb2cgZm9vdGVyIChvbmx5IGFwcGxpY2FibGUgaWYgbm90IHVzaW5nIGEgY3VzdG9tIGRpYWxvZyBmb290ZXIpLlxuICpcbiAqIEFjdGlvbnMgYXJlIGRpc3BsYXllZCBpbiB0aGUgb3JkZXIgYXMgbW9kZWxlZCBpbiB0aGUgdGVtcGxhdGUgYW5kIGNhbiBiZSBwbGFjZWQgZWl0aGVyIG9uIHRoZSBsZWZ0IG9yIHJpZ2h0LlxuICpcbiAqIFRoZSBob3N0IGVsZW1lbnQgb2YgdGhpcyBtb2RlbGluZyBkaXJlY3RpdmUgbXVzdCBiZSBhIDxuZy10ZW1wbGF0ZT4uIFRoZSBhY3Rpb24gc2hhcmVzIHRoZSBsaWZlY3ljbGUgb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAqXG4gKiAqKkV4YW1wbGU6KipcbiAqIGBgYGh0bWxcbiAqIDxuZy10ZW1wbGF0ZSB3YkRpYWxvZ0FjdGlvbj5cbiAqICAgPGJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nLmNsb3NlKClcIj5DbG9zZTwvYnV0dG9uPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW3diRGlhbG9nQWN0aW9uXScsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaERpYWxvZ0FjdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfYWN0aW9uOiBEaXNwb3NhYmxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hlcmUgdG8gcGxhY2UgdGhpcyBhY3Rpb24gaW4gdGhlIGRpYWxvZyBmb290ZXIuIERlZmF1bHQgaXMgYGVuZGAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWxpZ246ICdzdGFydCcgfCAnZW5kJyA9ICdlbmQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD4sIGRpYWxvZzogybVXb3JrYmVuY2hEaWFsb2cpIHtcbiAgICAvLyBEZWZlciByZWdpc3RlcmluZyBhY3Rpb24gdG8gYXZvaWQgYEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JgLlxuICAgIGFzYXBTY2hlZHVsZXIuc2NoZWR1bGUoKCkgPT4gdGhpcy5fYWN0aW9uID0gZGlhbG9nLnJlZ2lzdGVyQWN0aW9uKHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBEZWZlciBkaXNwb3NpbmcgYWN0aW9uIHRvIGF2b2lkIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYC5cbiAgICBhc2FwU2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHRoaXMuX2FjdGlvbj8uZGlzcG9zZSgpKTtcbiAgfVxufVxuIl19
@@ -8,6 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { booleanAttribute, Directive, Input } from '@angular/core';
11
+ import { asapScheduler } from 'rxjs';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "../\u0275workbench-dialog";
13
14
  /**
@@ -25,10 +26,12 @@ import * as i1 from "../\u0275workbench-dialog";
25
26
  export class WorkbenchDialogFooterDirective {
26
27
  constructor(template, dialog) {
27
28
  this.template = template;
28
- this._footer = dialog.registerFooter(this);
29
+ // Defer registering footer to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
30
+ asapScheduler.schedule(() => this._footer = dialog.registerFooter(this));
29
31
  }
30
32
  ngOnDestroy() {
31
- this._footer.dispose();
33
+ // Defer disposing footer to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
34
+ asapScheduler.schedule(() => this._footer?.dispose());
32
35
  }
33
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchDialogFooterDirective, deps: [{ token: i0.TemplateRef }, { token: i1.ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
34
37
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.6", type: WorkbenchDialogFooterDirective, isStandalone: true, selector: "ng-template[wbDialogFooter]", inputs: { divider: ["divider", "divider", booleanAttribute] }, ngImport: i0 }); }
@@ -40,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
40
43
  type: Input,
41
44
  args: [{ transform: booleanAttribute }]
42
45
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1mb290ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL2RpYWxvZy1mb290ZXIvd29ya2JlbmNoLWRpYWxvZy1mb290ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDOzs7QUFJekY7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8sOEJBQThCO0lBV3pDLFlBQTRCLFFBQTJCLEVBQUUsTUFBd0I7UUFBckQsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FqQlUsOEJBQThCO2tHQUE5Qiw4QkFBOEIseUdBUXRCLGdCQUFnQjs7MkZBUnhCLDhCQUE4QjtrQkFEMUMsU0FBUzttQkFBQyxFQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDOytHQVU3RCxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Ym9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuLi/JtXdvcmtiZW5jaC1kaWFsb2cnO1xuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuLi8uLi9jb21tb24vZGlzcG9zYWJsZSc7XG5cbi8qKlxuICogVXNlIHRoaXMgZGlyZWN0aXZlIHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgZGlhbG9nIGZvb3RlciB0aGF0IHJlbmRlcnMgYWN0aW9ucyBjb250cmlidXRlZCB2aWEgdGhlIHtAbGluayBXb3JrYmVuY2hEaWFsb2dBY3Rpb25EaXJlY3RpdmV9IGRpcmVjdGl2ZS5cbiAqXG4gKiBUaGUgaG9zdCBlbGVtZW50IG9mIHRoaXMgbW9kZWxpbmcgZGlyZWN0aXZlIG11c3QgYmUgYSA8bmctdGVtcGxhdGU+LiBUaGUgZm9vdGVyIHNoYXJlcyB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBob3N0IGVsZW1lbnQuXG4gKlxuICogKipFeGFtcGxlOioqXG4gKiBgYGBodG1sXG4gKiA8bmctdGVtcGxhdGUgd2JEaWFsb2dGb290ZXI+XG4gKiAgIDxhcHAtZGlhbG9nLWZvb3Rlci8+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbd2JEaWFsb2dGb290ZXJdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoRGlhbG9nRm9vdGVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9mb290ZXI6IERpc3Bvc2FibGU7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiB0byBkaXNwbGF5IGEgdmlzdWFsIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBkaWFsb2cgY29udGVudCBhbmQgdGhpcyBmb290ZXIuXG4gICAqIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KVxuICBwdWJsaWMgZGl2aWRlcj86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPiwgZGlhbG9nOiDJtVdvcmtiZW5jaERpYWxvZykge1xuICAgIHRoaXMuX2Zvb3RlciA9IGRpYWxvZy5yZWdpc3RlckZvb3Rlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb290ZXIuZGlzcG9zZSgpO1xuICB9XG59XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1mb290ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL2RpYWxvZy1mb290ZXIvd29ya2JlbmNoLWRpYWxvZy1mb290ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBR3pGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUVuQzs7Ozs7Ozs7Ozs7R0FXRztBQUVILE1BQU0sT0FBTyw4QkFBOEI7SUFXekMsWUFBNEIsUUFBMkIsRUFBRSxNQUF3QjtRQUFyRCxhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUNyRCxtRkFBbUY7UUFDbkYsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sV0FBVztRQUNoQixpRkFBaUY7UUFDakYsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0FuQlUsOEJBQThCO2tHQUE5Qiw4QkFBOEIseUdBUXRCLGdCQUFnQjs7MkZBUnhCLDhCQUE4QjtrQkFEMUMsU0FBUzttQkFBQyxFQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDOytHQVU3RCxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Ym9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuLi/JtXdvcmtiZW5jaC1kaWFsb2cnO1xuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuLi8uLi9jb21tb24vZGlzcG9zYWJsZSc7XG5pbXBvcnQge2FzYXBTY2hlZHVsZXJ9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGRpcmVjdGl2ZSB0byByZXBsYWNlIHRoZSBkZWZhdWx0IGRpYWxvZyBmb290ZXIgdGhhdCByZW5kZXJzIGFjdGlvbnMgY29udHJpYnV0ZWQgdmlhIHRoZSB7QGxpbmsgV29ya2JlbmNoRGlhbG9nQWN0aW9uRGlyZWN0aXZlfSBkaXJlY3RpdmUuXG4gKlxuICogVGhlIGhvc3QgZWxlbWVudCBvZiB0aGlzIG1vZGVsaW5nIGRpcmVjdGl2ZSBtdXN0IGJlIGEgPG5nLXRlbXBsYXRlPi4gVGhlIGZvb3RlciBzaGFyZXMgdGhlIGxpZmVjeWNsZSBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqICoqRXhhbXBsZToqKlxuICogYGBgaHRtbFxuICogPG5nLXRlbXBsYXRlIHdiRGlhbG9nRm9vdGVyPlxuICogICA8YXBwLWRpYWxvZy1mb290ZXIvPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW3diRGlhbG9nRm9vdGVyXScsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfZm9vdGVyOiBEaXNwb3NhYmxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdG8gZGlzcGxheSBhIHZpc3VhbCBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgZGlhbG9nIGNvbnRlbnQgYW5kIHRoaXMgZm9vdGVyLlxuICAgKiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSlcbiAgcHVibGljIGRpdmlkZXI/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD4sIGRpYWxvZzogybVXb3JrYmVuY2hEaWFsb2cpIHtcbiAgICAvLyBEZWZlciByZWdpc3RlcmluZyBmb290ZXIgdG8gYXZvaWQgYEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JgLlxuICAgIGFzYXBTY2hlZHVsZXIuc2NoZWR1bGUoKCkgPT4gdGhpcy5fZm9vdGVyID0gZGlhbG9nLnJlZ2lzdGVyRm9vdGVyKHRoaXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBEZWZlciBkaXNwb3NpbmcgZm9vdGVyIHRvIGF2b2lkIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYC5cbiAgICBhc2FwU2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHRoaXMuX2Zvb3Rlcj8uZGlzcG9zZSgpKTtcbiAgfVxufVxuIl19
@@ -8,6 +8,7 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { booleanAttribute, Directive, Input } from '@angular/core';
11
+ import { asapScheduler } from 'rxjs';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "../\u0275workbench-dialog";
13
14
  /**
@@ -25,10 +26,12 @@ import * as i1 from "../\u0275workbench-dialog";
25
26
  export class WorkbenchDialogHeaderDirective {
26
27
  constructor(template, dialog) {
27
28
  this.template = template;
28
- this._header = dialog.registerHeader(this);
29
+ // Defer registering header to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
30
+ asapScheduler.schedule(() => this._header = dialog.registerHeader(this));
29
31
  }
30
32
  ngOnDestroy() {
31
- this._header.dispose();
33
+ // Defer disposing header to avoid `ExpressionChangedAfterItHasBeenCheckedError`.
34
+ asapScheduler.schedule(() => this._header?.dispose());
32
35
  }
33
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchDialogHeaderDirective, deps: [{ token: i0.TemplateRef }, { token: i1.ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
34
37
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.0.6", type: WorkbenchDialogHeaderDirective, isStandalone: true, selector: "ng-template[wbDialogHeader]", inputs: { divider: ["divider", "divider", booleanAttribute] }, ngImport: i0 }); }
@@ -40,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
40
43
  type: Input,
41
44
  args: [{ transform: booleanAttribute }]
42
45
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL2RpYWxvZy1oZWFkZXIvd29ya2JlbmNoLWRpYWxvZy1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDOzs7QUFJekY7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8sOEJBQThCO0lBV3pDLFlBQTRCLFFBQTJCLEVBQUUsTUFBd0I7UUFBckQsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FqQlUsOEJBQThCO2tHQUE5Qiw4QkFBOEIseUdBUXRCLGdCQUFnQjs7MkZBUnhCLDhCQUE4QjtrQkFEMUMsU0FBUzttQkFBQyxFQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDOytHQVU3RCxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Ym9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuLi/JtXdvcmtiZW5jaC1kaWFsb2cnO1xuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuLi8uLi9jb21tb24vZGlzcG9zYWJsZSc7XG5cbi8qKlxuICogVXNlIHRoaXMgZGlyZWN0aXZlIHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgZGlhbG9nIGhlYWRlciB0aGF0IGRpc3BsYXlzIHRoZSB0aXRsZSBhbmQgYSBjbG9zZSBidXR0b24uXG4gKlxuICogVGhlIGhvc3QgZWxlbWVudCBvZiB0aGlzIG1vZGVsaW5nIGRpcmVjdGl2ZSBtdXN0IGJlIGEgPG5nLXRlbXBsYXRlPi4gVGhlIGhlYWRlciBzaGFyZXMgdGhlIGxpZmVjeWNsZSBvZiB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqICoqRXhhbXBsZToqKlxuICogYGBgaHRtbFxuICogPG5nLXRlbXBsYXRlIHdiRGlhbG9nSGVhZGVyPlxuICogICA8YXBwLWRpYWxvZy1oZWFkZXIvPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ25nLXRlbXBsYXRlW3diRGlhbG9nSGVhZGVyXScsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaERpYWxvZ0hlYWRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfaGVhZGVyOiBEaXNwb3NhYmxlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdG8gZGlzcGxheSBhIHZpc3VhbCBzZXBhcmF0b3IgYmV0d2VlbiB0aGlzIGhlYWRlciBhbmQgdGhlIGRpYWxvZyBjb250ZW50LlxuICAgKiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSlcbiAgcHVibGljIGRpdmlkZXI/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD4sIGRpYWxvZzogybVXb3JrYmVuY2hEaWFsb2cpIHtcbiAgICB0aGlzLl9oZWFkZXIgPSBkaWFsb2cucmVnaXN0ZXJIZWFkZXIodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5faGVhZGVyLmRpc3Bvc2UoKTtcbiAgfVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy1oZWFkZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvZGlhbG9nL2RpYWxvZy1oZWFkZXIvd29ya2JlbmNoLWRpYWxvZy1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBR3pGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUVuQzs7Ozs7Ozs7Ozs7R0FXRztBQUVILE1BQU0sT0FBTyw4QkFBOEI7SUFXekMsWUFBNEIsUUFBMkIsRUFBRSxNQUF3QjtRQUFyRCxhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUNyRCxtRkFBbUY7UUFDbkYsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sV0FBVztRQUNoQixpRkFBaUY7UUFDakYsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0FuQlUsOEJBQThCO2tHQUE5Qiw4QkFBOEIseUdBUXRCLGdCQUFnQjs7MkZBUnhCLDhCQUE4QjtrQkFEMUMsU0FBUzttQkFBQyxFQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFDOytHQVU3RCxPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Ym9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuLi/JtXdvcmtiZW5jaC1kaWFsb2cnO1xuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuLi8uLi9jb21tb24vZGlzcG9zYWJsZSc7XG5pbXBvcnQge2FzYXBTY2hlZHVsZXJ9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFVzZSB0aGlzIGRpcmVjdGl2ZSB0byByZXBsYWNlIHRoZSBkZWZhdWx0IGRpYWxvZyBoZWFkZXIgdGhhdCBkaXNwbGF5cyB0aGUgdGl0bGUgYW5kIGEgY2xvc2UgYnV0dG9uLlxuICpcbiAqIFRoZSBob3N0IGVsZW1lbnQgb2YgdGhpcyBtb2RlbGluZyBkaXJlY3RpdmUgbXVzdCBiZSBhIDxuZy10ZW1wbGF0ZT4uIFRoZSBoZWFkZXIgc2hhcmVzIHRoZSBsaWZlY3ljbGUgb2YgdGhlIGhvc3QgZWxlbWVudC5cbiAqXG4gKiAqKkV4YW1wbGU6KipcbiAqIGBgYGh0bWxcbiAqIDxuZy10ZW1wbGF0ZSB3YkRpYWxvZ0hlYWRlcj5cbiAqICAgPGFwcC1kaWFsb2ctaGVhZGVyLz5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVt3YkRpYWxvZ0hlYWRlcl0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hEaWFsb2dIZWFkZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2hlYWRlcjogRGlzcG9zYWJsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIHRvIGRpc3BsYXkgYSB2aXN1YWwgc2VwYXJhdG9yIGJldHdlZW4gdGhpcyBoZWFkZXIgYW5kIHRoZSBkaWFsb2cgY29udGVudC5cbiAgICogRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pXG4gIHB1YmxpYyBkaXZpZGVyPzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+LCBkaWFsb2c6IMm1V29ya2JlbmNoRGlhbG9nKSB7XG4gICAgLy8gRGVmZXIgcmVnaXN0ZXJpbmcgaGVhZGVyIHRvIGF2b2lkIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYC5cbiAgICBhc2FwU2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHRoaXMuX2hlYWRlciA9IGRpYWxvZy5yZWdpc3RlckhlYWRlcih0aGlzKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gRGVmZXIgZGlzcG9zaW5nIGhlYWRlciB0byBhdm9pZCBgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcmAuXG4gICAgYXNhcFNjaGVkdWxlci5zY2hlZHVsZSgoKSA9PiB0aGlzLl9oZWFkZXI/LmRpc3Bvc2UoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -8,9 +8,9 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Component, forwardRef, HostBinding, HostListener, inject, ViewChild } from '@angular/core';
11
- import { fromEvent } from 'rxjs';
11
+ import { BehaviorSubject, fromEvent } from 'rxjs';
12
12
  import { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';
13
- import { AsyncPipe, DOCUMENT, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
13
+ import { AsyncPipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
14
14
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
15
15
  import { ɵWorkbenchDialog } from './ɵworkbench-dialog';
16
16
  import { SciViewportComponent } from '@scion/components/viewport';
@@ -21,7 +21,9 @@ import { ResizableDirective } from './resizable.directive';
21
21
  import { SciDimensionDirective } from '@scion/components/dimension';
22
22
  import { DialogHeaderComponent } from './dialog-header/dialog-header.component';
23
23
  import { DialogFooterComponent } from './dialog-footer/dialog-footer.component';
24
- import { GLASS_PANE_BLOCKABLE, GlassPaneDirective } from '../glass-pane/glass-pane.directive';
24
+ import { GLASS_PANE_BLOCKABLE, GLASS_PANE_OPTIONS, GlassPaneDirective } from '../glass-pane/glass-pane.directive';
25
+ import { filter, map, startWith, takeUntil } from 'rxjs/operators';
26
+ import { fromMutation$ } from '@scion/toolkit/observable';
25
27
  import * as i0 from "@angular/core";
26
28
  import * as i1 from "./\u0275workbench-dialog";
27
29
  import * as i2 from "@angular/cdk/a11y";
@@ -63,41 +65,62 @@ export class WorkbenchDialogComponent {
63
65
  this.dialog = dialog;
64
66
  this._zone = _zone;
65
67
  this._destroyRef = _destroyRef;
66
- this._document = inject(DOCUMENT);
68
+ /**
69
+ * Element of the dialog that has or last had focus.
70
+ */
71
+ this._activeElement$ = new BehaviorSubject(undefined);
67
72
  this.transformTranslateX = 0;
68
73
  this.transformTranslateY = 0;
69
74
  this.setDialogOffset();
70
75
  }
71
76
  ngOnInit() {
72
77
  this.trackFocus();
78
+ this.autoFocus();
73
79
  }
74
- ngAfterViewInit() {
75
- this.focus();
80
+ setDialogOffset() {
81
+ const stackPosition = this.dialog.getPositionInDialogStack();
82
+ this.transformTranslateX = stackPosition * 10;
83
+ this.transformTranslateY = stackPosition * 10;
76
84
  }
77
85
  /**
78
- * Focuses the last focused element, if any, or the first focusable element otherwise.
86
+ * Focuses this dialog, restoring the focus to the last element that had the focus,
87
+ * or otherwise focuses the first focusable element.
79
88
  */
80
89
  focus() {
81
- if (this._activeElement) {
82
- this._activeElement.focus();
90
+ const activeElement = this._activeElement$.getValue();
91
+ if (activeElement) {
92
+ activeElement.focus();
83
93
  }
84
94
  else if (!this._cdkTrapFocus.focusTrap.focusFirstTabbableElement()) {
95
+ // Focus dialog element so that it can be closed via Escape keystroke.
85
96
  this._dialogElement.nativeElement.focus();
86
97
  }
87
98
  }
88
- setDialogOffset() {
89
- const stackPosition = this.dialog.getPositionInDialogStack();
90
- this.transformTranslateX = stackPosition * 10;
91
- this.transformTranslateY = stackPosition * 10;
92
- }
93
99
  /**
94
100
  * Tracks the focus of the dialog.
95
101
  */
96
102
  trackFocus() {
97
103
  fromEvent(this._dialogElement.nativeElement, 'focusin')
98
- .pipe(subscribeInside(continueFn => this._zone.runOutsideAngular(continueFn)), takeUntilDestroyed(this._destroyRef))
104
+ .pipe(map(event => event.target instanceof HTMLElement ? event.target : undefined),
105
+ // The dialog is focused if it has no focusable element, so the dialog can be closed via Escape.
106
+ // However, in order not to cancel the autofocus, the dialog element must not be memoized as the
107
+ // active element. Otherwise, delayed content would not be focused.
108
+ filter(element => element !== this._dialogElement.nativeElement), subscribeInside(continueFn => this._zone.runOutsideAngular(continueFn)), takeUntilDestroyed(this._destroyRef))
109
+ .subscribe(activeElement => {
110
+ this._activeElement$.next(activeElement);
111
+ });
112
+ }
113
+ /**
114
+ * Focuses the first focusable element in the dialog. Has no effect if an element in the dialog already has the focus.
115
+ *
116
+ * If no focusable element can be found, the focusing will be repeated on the next DOM change until an element has the
117
+ * focus, allowing delayed content to get focus.
118
+ */
119
+ autoFocus() {
120
+ fromMutation$(this._dialogElement.nativeElement, { subtree: true, childList: true })
121
+ .pipe(startWith(undefined), takeUntil(this._activeElement$.pipe(filter(Boolean))), takeUntilDestroyed(this._destroyRef))
99
122
  .subscribe(() => {
100
- this._activeElement = this._document.activeElement instanceof HTMLElement ? this._document.activeElement : undefined;
123
+ this.focus();
101
124
  });
102
125
  }
103
126
  onEscape(event) {
@@ -211,9 +234,15 @@ function provideEnterAnimation() {
211
234
  * Blocks this dialog when other dialog(s) overlay it.
212
235
  */
213
236
  function configureDialogGlassPane() {
214
- return {
215
- provide: GLASS_PANE_BLOCKABLE,
216
- useExisting: forwardRef(() => ɵWorkbenchDialog), // resolve {@link ɵWorkbenchDialog} via forwardRef because not defined yet, i.e., {@link ɵWorkbenchDialog} constructs {@link WorkbenchDialogComponent} in its constructor.
217
- };
237
+ return [
238
+ {
239
+ provide: GLASS_PANE_BLOCKABLE,
240
+ useExisting: forwardRef(() => ɵWorkbenchDialog), // resolve {@link ɵWorkbenchDialog} via forwardRef because not defined yet, i.e., {@link ɵWorkbenchDialog} constructs {@link WorkbenchDialogComponent} in its constructor.
241
+ },
242
+ {
243
+ provide: GLASS_PANE_OPTIONS,
244
+ useFactory: () => ({ attributes: { 'data-dialogid': inject(ɵWorkbenchDialog).id } }),
245
+ },
246
+ ];
218
247
  }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBZ0IsU0FBUyxFQUEwQixVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQTRCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuSyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFxQixLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsa0JBQWtCLEVBQWdCLE1BQU0sdUJB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MEtBQTBLO0tBQzVOLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBOZ1pvbmUsIE9uSW5pdCwgUHJvdmlkZXIsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7ZnJvbUV2ZW50fSBmcm9tICdyeGpzJztcbmltcG9ydCB7QTExeU1vZHVsZSwgQ2RrVHJhcEZvY3VzfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0FzeW5jUGlwZSwgRE9DVU1FTlQsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7ybVXb3JrYmVuY2hEaWFsb2d9IGZyb20gJy4vybV3b3JrYmVuY2gtZGlhbG9nJztcbmltcG9ydCB7U2NpVmlld3BvcnRDb21wb25lbnR9IGZyb20gJ0BzY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0JztcbmltcG9ydCB7YW5pbWF0ZSwgQW5pbWF0aW9uTWV0YWRhdGEsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7c3Vic2NyaWJlSW5zaWRlfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNb3ZhYmxlRGlyZWN0aXZlLCBXYk1vdmVFdmVudH0gZnJvbSAnLi9tb3ZhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1Jlc2l6YWJsZURpcmVjdGl2ZSwgV2JSZXNpemVFdmVudH0gZnJvbSAnLi9yZXNpemFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7U2NpRGltZW5zaW9uLCBTY2lEaW1lbnNpb25EaXJlY3RpdmV9IGZyb20gJ0BzY2lvbi9jb21wb25lbnRzL2RpbWVuc2lvbic7XG5pbXBvcnQge0RpYWxvZ0hlYWRlckNvbXBvbmVudH0gZnJvbSAnLi9kaWFsb2ctaGVhZGVyL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7RGlhbG9nRm9vdGVyQ29tcG9uZW50fSBmcm9tICcuL2RpYWxvZy1mb290ZXIvZGlhbG9nLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHtHTEFTU19QQU5FX0JMT0NLQUJMRSwgR2xhc3NQYW5lRGlyZWN0aXZlfSBmcm9tICcuLi9nbGFzcy1wYW5lL2dsYXNzLXBhbmUuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSB3b3JrYmVuY2ggZGlhbG9nLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIGFkZGVkIHRvIGEgQ0RLIG92ZXJsYXkgYWxpZ25lZCB0byB0aGUgbW9kYWxpdHkgY29udGV4dCBkZWZpbmVkIGJ5IHRoZSBkaWFsb2cuXG4gKiBUaGUgZGlhbG9nIGl0c2VsZiBpcyByZW5kZXJlZCBpbiB0aGUgY2VudGVyIG9mIGl0cyBtb2RhbGl0eSBjb250ZXh0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtiZW5jaC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQTExeU1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgTW92YWJsZURpcmVjdGl2ZSxcbiAgICBSZXNpemFibGVEaXJlY3RpdmUsXG4gICAgU2NpVmlld3BvcnRDb21wb25lbnQsXG4gICAgU2NpRGltZW5zaW9uRGlyZWN0aXZlLFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudCxcbiAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgR2xhc3NQYW5lRGlyZWN0aXZlLFxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZW50ZXInLCBwcm92aWRlRW50ZXJBbmltYXRpb24oKSksXG4gIF0sXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICBjb25maWd1cmVEaWFsb2dHbGFzc1BhbmUoKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xuICBwcml2YXRlIF9hY3RpdmVFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfaGVhZGVySGVpZ2h0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZChDZGtUcmFwRm9jdXMsIHtzdGF0aWM6IHRydWV9KVxuICBwcml2YXRlIF9jZGtUcmFwRm9jdXMhOiBDZGtUcmFwRm9jdXM7XG5cbiAgQFZpZXdDaGlsZCgnZGlhbG9nX2VsZW1lbnQnLCB7c3RhdGljOiB0cnVlfSlcbiAgcHJpdmF0ZSBfZGlhbG9nRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy10cmFuc2Zvcm0tdHJhbnNsYXRlLXgnKVxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtVHJhbnNsYXRlWCA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLXRyYW5zZm9ybS10cmFuc2xhdGUteScpXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm1UcmFuc2xhdGVZID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWluLWhlaWdodCcpXG4gIHByb3RlY3RlZCBnZXQgbWluSGVpZ2h0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUubWluSGVpZ2h0IHx8IHRoaXMuX2hlYWRlckhlaWdodDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy1oZWlnaHQnKVxuICBwcm90ZWN0ZWQgZ2V0IGhlaWdodCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLmhlaWdodDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy1tYXgtaGVpZ2h0JylcbiAgcHJvdGVjdGVkIGdldCBtYXhIZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuc2l6ZS5tYXhIZWlnaHQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWluLXdpZHRoJylcbiAgcHJvdGVjdGVkIGdldCBtaW5XaWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLm1pbldpZHRoIHx8ICcxMDBweCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctd2lkdGgnKVxuICBwcm90ZWN0ZWQgZ2V0IHdpZHRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUud2lkdGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWF4LXdpZHRoJylcbiAgcHJvdGVjdGVkIGdldCBtYXhXaWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLm1heFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5qdXN0aWZpZWQnKVxuICBwcm90ZWN0ZWQgZ2V0IGp1c3RpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlhbG9nLnBhZGRpbmc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuY2xhc3MnKVxuICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuY3NzQ2xhc3M7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kaWFsb2dpZCcpXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuaWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiDJtVdvcmtiZW5jaERpYWxvZyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgICAgICAgICAgICBwcml2YXRlIF9kZXN0cm95UmVmOiBEZXN0cm95UmVmKSB7XG4gICAgdGhpcy5zZXREaWFsb2dPZmZzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYWNrRm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGxhc3QgZm9jdXNlZCBlbGVtZW50LCBpZiBhbnksIG9yIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIXRoaXMuX2Nka1RyYXBGb2N1cy5mb2N1c1RyYXAuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpKSB7XG4gICAgICB0aGlzLl9kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERpYWxvZ09mZnNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFja1Bvc2l0aW9uID0gdGhpcy5kaWFsb2cuZ2V0UG9zaXRpb25JbkRpYWxvZ1N0YWNrKCk7XG4gICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVYID0gc3RhY2tQb3NpdGlvbiAqIDEwO1xuICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWSA9IHN0YWNrUG9zaXRpb24gKiAxMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja3MgdGhlIGZvY3VzIG9mIHRoZSBkaWFsb2cuXG4gICAqL1xuICBwcml2YXRlIHRyYWNrRm9jdXMoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHRoaXMuX2RpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN1YnNjcmliZUluc2lkZShjb250aW51ZUZuID0+IHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoY29udGludWVGbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQgOiB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIG9uRXNjYXBlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpYWxvZy5jbG9zYWJsZSkge1xuICAgICAgdGhpcy5kaWFsb2cuY2xvc2UoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbk1vdmUoZXZlbnQ6IFdiTW92ZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVYID0gZXZlbnQudHJhbnNsYXRlWDtcbiAgICB0aGlzLnRyYW5zZm9ybVRyYW5zbGF0ZVkgPSBldmVudC50cmFuc2xhdGVZO1xuICB9XG5cbiAgcHVibGljIG9uUmVzaXplKGV2ZW50OiBXYlJlc2l6ZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmhlaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpYWxvZy5zaXplLmhlaWdodCA9IGAke2V2ZW50LmhlaWdodH1weGA7XG4gICAgfVxuICAgIGlmIChldmVudC53aWR0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpYWxvZy5zaXplLndpZHRoID0gYCR7ZXZlbnQud2lkdGh9cHhgO1xuICAgIH1cbiAgICBpZiAoZXZlbnQudHJhbnNsYXRlWCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybVRyYW5zbGF0ZVggPSBldmVudC50cmFuc2xhdGVYO1xuICAgIH1cbiAgICBpZiAoZXZlbnQudHJhbnNsYXRlWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybVRyYW5zbGF0ZVkgPSBldmVudC50cmFuc2xhdGVZO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbkhlYWRlckRpbWVuc2lvbkNoYW5nZShkaW1lbnNpb246IFNjaURpbWVuc2lvbik6IHZvaWQge1xuICAgIHRoaXMuX2hlYWRlckhlaWdodCA9IGAke2RpbWVuc2lvbi5vZmZzZXRIZWlnaHR9cHhgO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhbmltYXRpb24gbWV0YWRhdGEgdG8gc2xpZGUtaW4gYSBuZXcgZGlhbG9nLlxuICovXG5mdW5jdGlvbiBwcm92aWRlRW50ZXJBbmltYXRpb24oKTogQW5pbWF0aW9uTWV0YWRhdGFbXSB7XG4gIHJldHVybiBbXG4gICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgc3R5bGUoe29wYWNpdHk6IDAsIGJvdHRvbTogJzEwMCUnLCB0b3A6ICd1bnNldCd9KSxcbiAgICAgIGFuaW1hdGUoJy4xcyBlYXNlLW91dCcsIHN0eWxlKHtvcGFjaXR5OiAxLCBib3R0b206ICcqJ30pKSxcbiAgICBdKSxcbiAgXTtcbn1cblxuLyoqXG4gKiBCbG9ja3MgdGhpcyBkaWFsb2cgd2hlbiBvdGhlciBkaWFsb2cocykgb3ZlcmxheSBpdC5cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlRGlhbG9nR2xhc3NQYW5lKCk6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBHTEFTU19QQU5FX0JMT0NLQUJMRSxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiDJtVdvcmtiZW5jaERpYWxvZyksIC8vIHJlc29sdmUge0BsaW5rIMm1V29ya2JlbmNoRGlhbG9nfSB2aWEgZm9yd2FyZFJlZiBiZWNhdXNlIG5vdCBkZWZpbmVkIHlldCwgaS5lLiwge0BsaW5rIMm1V29ya2JlbmNoRGlhbG9nfSBjb25zdHJ1Y3RzIHtAbGluayBXb3JrYmVuY2hEaWFsb2dDb21wb25lbnR9IGluIGl0cyBjb25zdHJ1Y3Rvci5cbiAgfTtcbn1cblxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZyBlMmUtZGlhbG9nXCJcbiAgICAgW2NsYXNzLmJsaW5raW5nXT1cImRpYWxvZy5ibGlua2luZyQgfCBhc3luY1wiXG4gICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgIHdiTW92YWJsZSBbd2JIYW5kbGVdPVwiaGVhZGVyXCIgKHdiTW92YWJsZU1vdmUpPVwib25Nb3ZlKCRldmVudClcIlxuICAgICB3YlJlc2l6YWJsZSBbd2JSZXNpemFibGVFbmFibGVkXT1cImRpYWxvZy5yZXNpemFibGVcIiAod2JSZXNpemFibGVSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICAgIEBlbnRlclxuICAgICBbQC5kaXNhYmxlZF09XCIhZGlhbG9nLmFuaW1hdGVcIlxuICAgICB3YkdsYXNzUGFuZVxuICAgICAjZGlhbG9nX2VsZW1lbnQ+XG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctYm94IGUyZS1kaWFsb2ctYm94XCIgY2RrVHJhcEZvY3VzPlxuICAgIDxoZWFkZXIgI2hlYWRlclxuICAgICAgICAgICAgY2xhc3M9XCJlMmUtZGlhbG9nLWhlYWRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGl2aWRlcl09XCJkaWFsb2cuaGVhZGVyPy5kaXZpZGVyID8/IHRydWVcIlxuICAgICAgICAgICAgc2NpRGltZW5zaW9uIChzY2lEaW1lbnNpb25DaGFuZ2UpPVwib25IZWFkZXJEaW1lbnNpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpYWxvZy5oZWFkZXI/LnRlbXBsYXRlID8/IGRlZmF1bHRfZGlhbG9nX2hlYWRlclwiLz5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxzY2ktdmlld3BvcnQgY2xhc3M9XCJjb250ZW50IGUyZS1kaWFsb2ctY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJkaWFsb2cuY29tcG9uZW50OyBpbnB1dHM6IGRpYWxvZy5pbnB1dHNcIi8+XG4gICAgPC9zY2ktdmlld3BvcnQ+XG5cbiAgICBAaWYgKGRpYWxvZy5mb290ZXIgfHwgZGlhbG9nLmFjdGlvbnMubGVuZ3RoKSB7XG4gICAgICA8Zm9vdGVyIGNsYXNzPVwiZTJlLWRpYWxvZy1mb290ZXJcIiBbY2xhc3MuZGl2aWRlcl09XCJkaWFsb2cuZm9vdGVyPy5kaXZpZGVyID8/IHRydWVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpYWxvZy5mb290ZXI/LnRlbXBsYXRlID8/IGRlZmF1bHRfZGlhbG9nX2Zvb3RlclwiLz5cbiAgICAgIDwvZm9vdGVyPlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0X2RpYWxvZ19oZWFkZXI+XG4gIDx3Yi1kaWFsb2ctaGVhZGVyLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdF9kaWFsb2dfZm9vdGVyPlxuICA8d2ItZGlhbG9nLWZvb3Rlci8+XG48L25nLXRlbXBsYXRlPlxuIl19
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQTBCLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBNEIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BKLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxPQUFPLEVBQXFCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBYyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBZ0IsTUFBTSx1QkFB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IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgTmdab25lLCBPbkluaXQsIFByb3ZpZGVyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ExMXlNb2R1bGUsIENka1RyYXBGb2N1c30gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7ybVXb3JrYmVuY2hEaWFsb2d9IGZyb20gJy4vybV3b3JrYmVuY2gtZGlhbG9nJztcbmltcG9ydCB7U2NpVmlld3BvcnRDb21wb25lbnR9IGZyb20gJ0BzY2lvbi9jb21wb25lbnRzL3ZpZXdwb3J0JztcbmltcG9ydCB7YW5pbWF0ZSwgQW5pbWF0aW9uTWV0YWRhdGEsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7c3Vic2NyaWJlSW5zaWRlfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNb3ZhYmxlRGlyZWN0aXZlLCBXYk1vdmVFdmVudH0gZnJvbSAnLi9tb3ZhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1Jlc2l6YWJsZURpcmVjdGl2ZSwgV2JSZXNpemVFdmVudH0gZnJvbSAnLi9yZXNpemFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7U2NpRGltZW5zaW9uLCBTY2lEaW1lbnNpb25EaXJlY3RpdmV9IGZyb20gJ0BzY2lvbi9jb21wb25lbnRzL2RpbWVuc2lvbic7XG5pbXBvcnQge0RpYWxvZ0hlYWRlckNvbXBvbmVudH0gZnJvbSAnLi9kaWFsb2ctaGVhZGVyL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7RGlhbG9nRm9vdGVyQ29tcG9uZW50fSBmcm9tICcuL2RpYWxvZy1mb290ZXIvZGlhbG9nLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHtHTEFTU19QQU5FX0JMT0NLQUJMRSwgR0xBU1NfUEFORV9PUFRJT05TLCBHbGFzc1BhbmVEaXJlY3RpdmUsIEdsYXNzUGFuZU9wdGlvbnN9IGZyb20gJy4uL2dsYXNzLXBhbmUvZ2xhc3MtcGFuZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7ZnJvbU11dGF0aW9uJH0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb2JzZXJ2YWJsZSc7XG5cbi8qKlxuICogUmVuZGVycyB0aGUgd29ya2JlbmNoIGRpYWxvZy5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBhZGRlZCB0byBhIENESyBvdmVybGF5IGFsaWduZWQgdG8gdGhlIG1vZGFsaXR5IGNvbnRleHQgZGVmaW5lZCBieSB0aGUgZGlhbG9nLlxuICogVGhlIGRpYWxvZyBpdHNlbGYgaXMgcmVuZGVyZWQgaW4gdGhlIGNlbnRlciBvZiBpdHMgbW9kYWxpdHkgY29udGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2ItZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtiZW5jaC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrYmVuY2gtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEExMXlNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIE1vdmFibGVEaXJlY3RpdmUsXG4gICAgUmVzaXphYmxlRGlyZWN0aXZlLFxuICAgIFNjaVZpZXdwb3J0Q29tcG9uZW50LFxuICAgIFNjaURpbWVuc2lvbkRpcmVjdGl2ZSxcbiAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIEdsYXNzUGFuZURpcmVjdGl2ZSxcbiAgXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2VudGVyJywgcHJvdmlkZUVudGVyQW5pbWF0aW9uKCkpLFxuICBdLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgY29uZmlndXJlRGlhbG9nR2xhc3NQYW5lKCksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEVsZW1lbnQgb2YgdGhlIGRpYWxvZyB0aGF0IGhhcyBvciBsYXN0IGhhZCBmb2N1cy5cbiAgICovXG4gIHByaXZhdGUgX2FjdGl2ZUVsZW1lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfaGVhZGVySGVpZ2h0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZChDZGtUcmFwRm9jdXMsIHtzdGF0aWM6IHRydWV9KVxuICBwcml2YXRlIF9jZGtUcmFwRm9jdXMhOiBDZGtUcmFwRm9jdXM7XG5cbiAgQFZpZXdDaGlsZCgnZGlhbG9nX2VsZW1lbnQnLCB7c3RhdGljOiB0cnVlfSlcbiAgcHJpdmF0ZSBfZGlhbG9nRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy10cmFuc2Zvcm0tdHJhbnNsYXRlLXgnKVxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtVHJhbnNsYXRlWCA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLXRyYW5zZm9ybS10cmFuc2xhdGUteScpXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm1UcmFuc2xhdGVZID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWluLWhlaWdodCcpXG4gIHByb3RlY3RlZCBnZXQgbWluSGVpZ2h0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUubWluSGVpZ2h0IHx8IHRoaXMuX2hlYWRlckhlaWdodDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy1oZWlnaHQnKVxuICBwcm90ZWN0ZWQgZ2V0IGhlaWdodCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLmhlaWdodDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy1tYXgtaGVpZ2h0JylcbiAgcHJvdGVjdGVkIGdldCBtYXhIZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuc2l6ZS5tYXhIZWlnaHQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWluLXdpZHRoJylcbiAgcHJvdGVjdGVkIGdldCBtaW5XaWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLm1pbldpZHRoIHx8ICcxMDBweCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctd2lkdGgnKVxuICBwcm90ZWN0ZWQgZ2V0IHdpZHRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUud2lkdGg7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWF4LXdpZHRoJylcbiAgcHJvdGVjdGVkIGdldCBtYXhXaWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLm1heFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5qdXN0aWZpZWQnKVxuICBwcm90ZWN0ZWQgZ2V0IGp1c3RpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlhbG9nLnBhZGRpbmc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuY2xhc3MnKVxuICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuY3NzQ2xhc3M7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kaWFsb2dpZCcpXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuaWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiDJtVdvcmtiZW5jaERpYWxvZyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgICAgICAgICAgICBwcml2YXRlIF9kZXN0cm95UmVmOiBEZXN0cm95UmVmKSB7XG4gICAgdGhpcy5zZXREaWFsb2dPZmZzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYWNrRm9jdXMoKTtcbiAgICB0aGlzLmF1dG9Gb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaWFsb2dPZmZzZXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhY2tQb3NpdGlvbiA9IHRoaXMuZGlhbG9nLmdldFBvc2l0aW9uSW5EaWFsb2dTdGFjaygpO1xuICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWCA9IHN0YWNrUG9zaXRpb24gKiAxMDtcbiAgICB0aGlzLnRyYW5zZm9ybVRyYW5zbGF0ZVkgPSBzdGFja1Bvc2l0aW9uICogMTA7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGlzIGRpYWxvZywgcmVzdG9yaW5nIHRoZSBmb2N1cyB0byB0aGUgbGFzdCBlbGVtZW50IHRoYXQgaGFkIHRoZSBmb2N1cyxcbiAgICogb3Igb3RoZXJ3aXNlIGZvY3VzZXMgdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLl9hY3RpdmVFbGVtZW50JC5nZXRWYWx1ZSgpO1xuICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICBhY3RpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCF0aGlzLl9jZGtUcmFwRm9jdXMuZm9jdXNUcmFwLmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKSkge1xuICAgICAgLy8gRm9jdXMgZGlhbG9nIGVsZW1lbnQgc28gdGhhdCBpdCBjYW4gYmUgY2xvc2VkIHZpYSBFc2NhcGUga2V5c3Ryb2tlLlxuICAgICAgdGhpcy5fZGlhbG9nRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrcyB0aGUgZm9jdXMgb2YgdGhlIGRpYWxvZy5cbiAgICovXG4gIHByaXZhdGUgdHJhY2tGb2N1cygpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQ8Rm9jdXNFdmVudD4odGhpcy5fZGlhbG9nRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZm9jdXNpbicpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGV2ZW50ID0+IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gZXZlbnQudGFyZ2V0IDogdW5kZWZpbmVkKSxcbiAgICAgICAgLy8gVGhlIGRpYWxvZyBpcyBmb2N1c2VkIGlmIGl0IGhhcyBubyBmb2N1c2FibGUgZWxlbWVudCwgc28gdGhlIGRpYWxvZyBjYW4gYmUgY2xvc2VkIHZpYSBFc2NhcGUuXG4gICAgICAgIC8vIEhvd2V2ZXIsIGluIG9yZGVyIG5vdCB0byBjYW5jZWwgdGhlIGF1dG9mb2N1cywgdGhlIGRpYWxvZyBlbGVtZW50IG11c3Qgbm90IGJlIG1lbW9pemVkIGFzIHRoZVxuICAgICAgICAvLyBhY3RpdmUgZWxlbWVudC4gT3RoZXJ3aXNlLCBkZWxheWVkIGNvbnRlbnQgd291bGQgbm90IGJlIGZvY3VzZWQuXG4gICAgICAgIGZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQgIT09IHRoaXMuX2RpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudCksXG4gICAgICAgIHN1YnNjcmliZUluc2lkZShjb250aW51ZUZuID0+IHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoY29udGludWVGbikpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFjdGl2ZUVsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9hY3RpdmVFbGVtZW50JC5uZXh0KGFjdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIGRpYWxvZy4gSGFzIG5vIGVmZmVjdCBpZiBhbiBlbGVtZW50IGluIHRoZSBkaWFsb2cgYWxyZWFkeSBoYXMgdGhlIGZvY3VzLlxuICAgKlxuICAgKiBJZiBubyBmb2N1c2FibGUgZWxlbWVudCBjYW4gYmUgZm91bmQsIHRoZSBmb2N1c2luZyB3aWxsIGJlIHJlcGVhdGVkIG9uIHRoZSBuZXh0IERPTSBjaGFuZ2UgdW50aWwgYW4gZWxlbWVudCBoYXMgdGhlXG4gICAqIGZvY3VzLCBhbGxvd2luZyBkZWxheWVkIGNvbnRlbnQgdG8gZ2V0IGZvY3VzLlxuICAgKi9cbiAgcHJpdmF0ZSBhdXRvRm9jdXMoKTogdm9pZCB7XG4gICAgZnJvbU11dGF0aW9uJCh0aGlzLl9kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHtzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWV9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQgYXMgdm9pZCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9hY3RpdmVFbGVtZW50JC5waXBlKGZpbHRlcihCb29sZWFuKSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvbkVzY2FwZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaWFsb2cuY2xvc2FibGUpIHtcbiAgICAgIHRoaXMuZGlhbG9nLmNsb3NlKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Nb3ZlKGV2ZW50OiBXYk1vdmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWCA9IGV2ZW50LnRyYW5zbGF0ZVg7XG4gICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVZID0gZXZlbnQudHJhbnNsYXRlWTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc2l6ZShldmVudDogV2JSZXNpemVFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5oZWlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaWFsb2cuc2l6ZS5oZWlnaHQgPSBgJHtldmVudC5oZWlnaHR9cHhgO1xuICAgIH1cbiAgICBpZiAoZXZlbnQud2lkdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaWFsb2cuc2l6ZS53aWR0aCA9IGAke2V2ZW50LndpZHRofXB4YDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnRyYW5zbGF0ZVggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVYID0gZXZlbnQudHJhbnNsYXRlWDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnRyYW5zbGF0ZVkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVZID0gZXZlbnQudHJhbnNsYXRlWTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25IZWFkZXJEaW1lbnNpb25DaGFuZ2UoZGltZW5zaW9uOiBTY2lEaW1lbnNpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJIZWlnaHQgPSBgJHtkaW1lbnNpb24ub2Zmc2V0SGVpZ2h0fXB4YDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYW5pbWF0aW9uIG1ldGFkYXRhIHRvIHNsaWRlLWluIGEgbmV3IGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gcHJvdmlkZUVudGVyQW5pbWF0aW9uKCk6IEFuaW1hdGlvbk1ldGFkYXRhW10ge1xuICByZXR1cm4gW1xuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgIHN0eWxlKHtvcGFjaXR5OiAwLCBib3R0b206ICcxMDAlJywgdG9wOiAndW5zZXQnfSksXG4gICAgICBhbmltYXRlKCcuMXMgZWFzZS1vdXQnLCBzdHlsZSh7b3BhY2l0eTogMSwgYm90dG9tOiAnKid9KSksXG4gICAgXSksXG4gIF07XG59XG5cbi8qKlxuICogQmxvY2tzIHRoaXMgZGlhbG9nIHdoZW4gb3RoZXIgZGlhbG9nKHMpIG92ZXJsYXkgaXQuXG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZURpYWxvZ0dsYXNzUGFuZSgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBHTEFTU19QQU5FX0JMT0NLQUJMRSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IMm1V29ya2JlbmNoRGlhbG9nKSwgLy8gcmVzb2x2ZSB7QGxpbmsgybVXb3JrYmVuY2hEaWFsb2d9IHZpYSBmb3J3YXJkUmVmIGJlY2F1c2Ugbm90IGRlZmluZWQgeWV0LCBpLmUuLCB7QGxpbmsgybVXb3JrYmVuY2hEaWFsb2d9IGNvbnN0cnVjdHMge0BsaW5rIFdvcmtiZW5jaERpYWxvZ0NvbXBvbmVudH0gaW4gaXRzIGNvbnN0cnVjdG9yLlxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9PUFRJT05TLFxuICAgICAgdXNlRmFjdG9yeTogKCk6IEdsYXNzUGFuZU9wdGlvbnMgPT4gKHthdHRyaWJ1dGVzOiB7J2RhdGEtZGlhbG9naWQnOiBpbmplY3QoybVXb3JrYmVuY2hEaWFsb2cpLmlkfX0pLFxuICAgIH0sXG4gIF07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nIGUyZS1kaWFsb2dcIlxuICAgICBbY2xhc3MuYmxpbmtpbmddPVwiZGlhbG9nLmJsaW5raW5nJCB8IGFzeW5jXCJcbiAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgd2JNb3ZhYmxlIFt3YkhhbmRsZV09XCJoZWFkZXJcIiAod2JNb3ZhYmxlTW92ZSk9XCJvbk1vdmUoJGV2ZW50KVwiXG4gICAgIHdiUmVzaXphYmxlIFt3YlJlc2l6YWJsZUVuYWJsZWRdPVwiZGlhbG9nLnJlc2l6YWJsZVwiICh3YlJlc2l6YWJsZVJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcbiAgICAgQGVudGVyXG4gICAgIFtALmRpc2FibGVkXT1cIiFkaWFsb2cuYW5pbWF0ZVwiXG4gICAgIHdiR2xhc3NQYW5lXG4gICAgICNkaWFsb2dfZWxlbWVudD5cbiAgPGRpdiBjbGFzcz1cImRpYWxvZy1ib3ggZTJlLWRpYWxvZy1ib3hcIiBjZGtUcmFwRm9jdXM+XG4gICAgPGhlYWRlciAjaGVhZGVyXG4gICAgICAgICAgICBjbGFzcz1cImUyZS1kaWFsb2ctaGVhZGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXZpZGVyXT1cImRpYWxvZy5oZWFkZXI/LmRpdmlkZXIgPz8gdHJ1ZVwiXG4gICAgICAgICAgICBzY2lEaW1lbnNpb24gKHNjaURpbWVuc2lvbkNoYW5nZSk9XCJvbkhlYWRlckRpbWVuc2lvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlhbG9nLmhlYWRlcj8udGVtcGxhdGUgPz8gZGVmYXVsdF9kaWFsb2dfaGVhZGVyXCIvPlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPHNjaS12aWV3cG9ydCBjbGFzcz1cImNvbnRlbnQgZTJlLWRpYWxvZy1jb250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImRpYWxvZy5jb21wb25lbnQ7IGlucHV0czogZGlhbG9nLmlucHV0c1wiLz5cbiAgICA8L3NjaS12aWV3cG9ydD5cblxuICAgIEBpZiAoZGlhbG9nLmZvb3RlciB8fCBkaWFsb2cuYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIDxmb290ZXIgY2xhc3M9XCJlMmUtZGlhbG9nLWZvb3RlclwiIFtjbGFzcy5kaXZpZGVyXT1cImRpYWxvZy5mb290ZXI/LmRpdmlkZXIgPz8gdHJ1ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlhbG9nLmZvb3Rlcj8udGVtcGxhdGUgPz8gZGVmYXVsdF9kaWFsb2dfZm9vdGVyXCIvPlxuICAgICAgPC9mb290ZXI+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRfZGlhbG9nX2hlYWRlcj5cbiAgPHdiLWRpYWxvZy1oZWFkZXIvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0X2RpYWxvZ19mb290ZXI+XG4gIDx3Yi1kaWFsb2ctZm9vdGVyLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2018-2022 Swiss Federal Railways
2
+ * Copyright (c) 2018-2024 Swiss Federal Railways
3
3
  *
4
4
  * This program and the accompanying materials are made
5
5
  * available under the terms of the Eclipse Public License 2.0
@@ -7,9 +7,23 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { AsyncSubject, lastValueFrom, Subject } from 'rxjs';
10
+ import { asapScheduler, AsyncSubject, lastValueFrom, Subject } from 'rxjs';
11
11
  import { serializeExecution } from '../common/operators';
12
- import { catchError, takeUntil } from 'rxjs/operators';
12
+ import { catchError, observeOn } from 'rxjs/operators';
13
+ import { DestroyRef, inject, InjectionToken } from '@angular/core';
14
+ import { ɵDestroyRef } from '../common/ɵdestroy-ref';
15
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
+ /**
17
+ * Serializes navigation requests to the Angular Router to prevent cancelling of parallel navigations or race conditions when modifying the currently active workbench layout.
18
+ */
19
+ export const SINGLE_NAVIGATION_EXECUTOR = new InjectionToken('SINGLE_NAVIGATION_EXECUTOR', {
20
+ providedIn: 'root',
21
+ factory: () => {
22
+ const executor = new SingleTaskExecutor();
23
+ inject(DestroyRef).onDestroy(() => executor.destroy());
24
+ return executor;
25
+ },
26
+ });
13
27
  /**
14
28
  * Allows the serial execution of tasks.
15
29
  *
@@ -19,9 +33,14 @@ import { catchError, takeUntil } from 'rxjs/operators';
19
33
  export class SingleTaskExecutor {
20
34
  constructor() {
21
35
  this._task$ = new Subject();
22
- this._destroy$ = new Subject();
36
+ this._destroyRef = new ɵDestroyRef();
23
37
  this._task$
24
- .pipe(serializeExecution(task => task.execute()), catchError((error, caught) => caught), takeUntil(this._destroy$))
38
+ .pipe(
39
+ // Schedule the task asynchronously so that it is not executed if the executor is destroyed in the same "call stack",
40
+ // happening, for example, when destroying the Testbed in unit tests. Angular destroys contexts from the bottom up,
41
+ // i.e., child contexts are destroyed before parent contexts. If a task is scheduled in a destroy lifecycle hook of
42
+ // a child context, the task would still be executed because the executor is not destroyed yet.
43
+ observeOn(asapScheduler), serializeExecution(task => task.execute()), catchError((error, caught) => caught), takeUntilDestroyed(this._destroyRef))
25
44
  .subscribe();
26
45
  }
27
46
  /**
@@ -38,7 +57,7 @@ export class SingleTaskExecutor {
38
57
  * Destroys this executor.
39
58
  */
40
59
  destroy() {
41
- this._destroy$.next();
60
+ this._destroyRef.destroy();
42
61
  }
43
62
  }
44
63
  class Task {
@@ -60,4 +79,4 @@ class Task {
60
79
  return lastValueFrom(this._done$);
61
80
  }
62
81
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXRhc2stZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9leGVjdXRvci9zaW5nbGUtdGFzay1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXJEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QjtRQUhRLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzdCLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR3RDLElBQUksQ0FBQyxNQUFNO2FBQ1IsSUFBSSxDQUNILGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQzFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUNyQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFJLElBQXNCO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFJLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQUVELE1BQU0sSUFBSTtJQUlSLFlBQW9CLEtBQXVCO1FBQXZCLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBRm5DLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO0lBR3ZDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztRQUNsQixJQUFJO1lBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN4QjtRQUNELE9BQU8sS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRU0sS0FBSztRQUNWLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7QXN5bmNTdWJqZWN0LCBsYXN0VmFsdWVGcm9tLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7c2VyaWFsaXplRXhlY3V0aW9ufSBmcm9tICcuLi9jb21tb24vb3BlcmF0b3JzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogQWxsb3dzIHRoZSBzZXJpYWwgZXhlY3V0aW9uIG9mIHRhc2tzLlxuICpcbiAqIEF0IGFueSBnaXZlbiB0aW1lLCB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIGV4ZWN1dGluZy4gV2hlbiBzdWJtaXR0aW5nIGEgdGFzayBhbmQgaWYgdGhlcmUgaXMgYSB0YXNrIGFscmVhZHkgZXhlY3V0aW5nLFxuICogdGhlIHN1Ym1pdHRlZCB0YXNrIHdpbGwgYmUgcXVldWVkIGZvciBsYXRlciBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW5nbGVUYXNrRXhlY3V0b3Ige1xuXG4gIHByaXZhdGUgX3Rhc2skID0gbmV3IFN1YmplY3Q8VGFzaz4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX3Rhc2skXG4gICAgICAucGlwZShcbiAgICAgICAgc2VyaWFsaXplRXhlY3V0aW9uKHRhc2sgPT4gdGFzay5leGVjdXRlKCkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvciwgY2F1Z2h0KSA9PiBjYXVnaHQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdHMgYSB0YXNrIGZvciBzZXJpYWwgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXN1bHQgb2YgdGhlIHBhc3NlZCB0YXNrLlxuICAgKi9cbiAgcHVibGljIHN1Ym1pdDxUPih0YXNrOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgybV0YXNrID0gbmV3IFRhc2s8VD4odGFzayk7XG4gICAgdGhpcy5fdGFzayQubmV4dCjJtXRhc2spO1xuICAgIHJldHVybiDJtXRhc2suYXdhaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGlzIGV4ZWN1dG9yLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG59XG5cbmNsYXNzIFRhc2s8VCA9IGFueT4ge1xuXG4gIHByaXZhdGUgX2RvbmUkID0gbmV3IEFzeW5jU3ViamVjdDxUPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3dvcms6ICgpID0+IFByb21pc2U8VD4pIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLl93b3JrKCk7XG4gICAgICB0aGlzLl9kb25lJC5uZXh0KHJlc3VsdCk7XG4gICAgICB0aGlzLl9kb25lJC5jb21wbGV0ZSgpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuX2RvbmUkLmVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXdhaXQoKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5fZG9uZSQpO1xuICB9XG59XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXRhc2stZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9leGVjdXRvci9zaW5nbGUtdGFzay1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQXFCLDRCQUE0QixFQUFFO0lBQzdHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDMUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBSzdCO1FBSFEsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDN0IsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBR3RDLElBQUksQ0FBQyxNQUFNO2FBQ1IsSUFBSTtRQUNILHFIQUFxSDtRQUNySCxtSEFBbUg7UUFDbkgsbUhBQW1IO1FBQ25ILCtGQUErRjtRQUMvRixTQUFTLENBQUMsYUFBYSxDQUFDLEVBQ3hCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQzFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUNyQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUksSUFBc0I7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUksSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxJQUFJO0lBSVIsWUFBb0IsS0FBdUI7UUFBdkIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFGbkMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFHdkMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUk7WUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHthc2FwU2NoZWR1bGVyLCBBc3luY1N1YmplY3QsIGxhc3RWYWx1ZUZyb20sIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzZXJpYWxpemVFeGVjdXRpb259IGZyb20gJy4uL2NvbW1vbi9vcGVyYXRvcnMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBvYnNlcnZlT259IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1RGVzdHJveVJlZn0gZnJvbSAnLi4vY29tbW9uL8m1ZGVzdHJveS1yZWYnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBTZXJpYWxpemVzIG5hdmlnYXRpb24gcmVxdWVzdHMgdG8gdGhlIEFuZ3VsYXIgUm91dGVyIHRvIHByZXZlbnQgY2FuY2VsbGluZyBvZiBwYXJhbGxlbCBuYXZpZ2F0aW9ucyBvciByYWNlIGNvbmRpdGlvbnMgd2hlbiBtb2RpZnlpbmcgdGhlIGN1cnJlbnRseSBhY3RpdmUgd29ya2JlbmNoIGxheW91dC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNJTkdMRV9OQVZJR0FUSU9OX0VYRUNVVE9SID0gbmV3IEluamVjdGlvblRva2VuPFNpbmdsZVRhc2tFeGVjdXRvcj4oJ1NJTkdMRV9OQVZJR0FUSU9OX0VYRUNVVE9SJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBTaW5nbGVUYXNrRXhlY3V0b3IoKTtcbiAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IGV4ZWN1dG9yLmRlc3Ryb3koKSk7XG4gICAgcmV0dXJuIGV4ZWN1dG9yO1xuICB9LFxufSk7XG5cbi8qKlxuICogQWxsb3dzIHRoZSBzZXJpYWwgZXhlY3V0aW9uIG9mIHRhc2tzLlxuICpcbiAqIEF0IGFueSBnaXZlbiB0aW1lLCB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIGV4ZWN1dGluZy4gV2hlbiBzdWJtaXR0aW5nIGEgdGFzayBhbmQgaWYgdGhlcmUgaXMgYSB0YXNrIGFscmVhZHkgZXhlY3V0aW5nLFxuICogdGhlIHN1Ym1pdHRlZCB0YXNrIHdpbGwgYmUgcXVldWVkIGZvciBsYXRlciBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW5nbGVUYXNrRXhlY3V0b3Ige1xuXG4gIHByaXZhdGUgX3Rhc2skID0gbmV3IFN1YmplY3Q8VGFzaz4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IG5ldyDJtURlc3Ryb3lSZWYoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl90YXNrJFxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIFNjaGVkdWxlIHRoZSB0YXNrIGFzeW5jaHJvbm91c2x5IHNvIHRoYXQgaXQgaXMgbm90IGV4ZWN1dGVkIGlmIHRoZSBleGVjdXRvciBpcyBkZXN0cm95ZWQgaW4gdGhlIHNhbWUgXCJjYWxsIHN0YWNrXCIsXG4gICAgICAgIC8vIGhhcHBlbmluZywgZm9yIGV4YW1wbGUsIHdoZW4gZGVzdHJveWluZyB0aGUgVGVzdGJlZCBpbiB1bml0IHRlc3RzLiBBbmd1bGFyIGRlc3Ryb3lzIGNvbnRleHRzIGZyb20gdGhlIGJvdHRvbSB1cCxcbiAgICAgICAgLy8gaS5lLiwgY2hpbGQgY29udGV4dHMgYXJlIGRlc3Ryb3llZCBiZWZvcmUgcGFyZW50IGNvbnRleHRzLiBJZiBhIHRhc2sgaXMgc2NoZWR1bGVkIGluIGEgZGVzdHJveSBsaWZlY3ljbGUgaG9vayBvZlxuICAgICAgICAvLyBhIGNoaWxkIGNvbnRleHQsIHRoZSB0YXNrIHdvdWxkIHN0aWxsIGJlIGV4ZWN1dGVkIGJlY2F1c2UgdGhlIGV4ZWN1dG9yIGlzIG5vdCBkZXN0cm95ZWQgeWV0LlxuICAgICAgICBvYnNlcnZlT24oYXNhcFNjaGVkdWxlciksXG4gICAgICAgIHNlcmlhbGl6ZUV4ZWN1dGlvbih0YXNrID0+IHRhc2suZXhlY3V0ZSgpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IsIGNhdWdodCkgPT4gY2F1Z2h0KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdHMgYSB0YXNrIGZvciBzZXJpYWwgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXN1bHQgb2YgdGhlIHBhc3NlZCB0YXNrLlxuICAgKi9cbiAgcHVibGljIHN1Ym1pdDxUPih0YXNrOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgybV0YXNrID0gbmV3IFRhc2s8VD4odGFzayk7XG4gICAgdGhpcy5fdGFzayQubmV4dCjJtXRhc2spO1xuICAgIHJldHVybiDJtXRhc2suYXdhaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGlzIGV4ZWN1dG9yLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVJlZi5kZXN0cm95KCk7XG4gIH1cbn1cblxuY2xhc3MgVGFzazxUID0gYW55PiB7XG5cbiAgcHJpdmF0ZSBfZG9uZSQgPSBuZXcgQXN5bmNTdWJqZWN0PFQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd29yazogKCkgPT4gUHJvbWlzZTxUPikge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX3dvcmsoKTtcbiAgICAgIHRoaXMuX2RvbmUkLm5leHQocmVzdWx0KTtcbiAgICAgIHRoaXMuX2RvbmUkLmNvbXBsZXRlKCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5fZG9uZSQuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhd2FpdCgpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLl9kb25lJCk7XG4gIH1cbn1cbiJdfQ==
@@ -13,6 +13,7 @@ import { fromEvent } from 'rxjs';
13
13
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
14
14
  import { ɵDestroyRef } from '../common/ɵdestroy-ref';
15
15
  import { coerceElement } from '@angular/cdk/coercion';
16
+ import { Arrays } from '@scion/toolkit/util';
16
17
  import * as i0 from "@angular/core";
17
18
  /**
18
19
  * Prevents user interaction of the host when blocked by placing a glass pane over the host element.
@@ -20,11 +21,13 @@ import * as i0 from "@angular/core";
20
21
  * Configure this direktive via the following DI tokens. These tokens must be provided at the component level.
21
22
  * - {@link GLASS_PANE_BLOCKABLE}: Represents the object to be blocked.
22
23
  * - {@link GLASS_PANE_TARGET_ELEMENT}: Controls the HTML element to block. Defaults to the directive's host element if not set.
24
+ * - {@link GLASS_PANE_OPTIONS}: Configures the glass pane.
23
25
  */
24
26
  export class GlassPaneDirective {
25
27
  constructor(_injector) {
26
28
  this._injector = _injector;
27
29
  this._glassPane = null;
30
+ this._options = inject(GLASS_PANE_OPTIONS, { optional: true, host: true }) ?? undefined;
28
31
  this._targetElement = coerceElement(inject(GLASS_PANE_TARGET_ELEMENT, { optional: true, host: true }) ?? inject(ElementRef));
29
32
  this.ensureHostElementPositioned();
30
33
  }
@@ -39,7 +42,7 @@ export class GlassPaneDirective {
39
42
  .pipe(takeUntilDestroyed())
40
43
  .subscribe((blockedBy) => {
41
44
  this._glassPane?.dispose();
42
- this._glassPane = blockedBy ? new GlassPane(this._targetElement, blockedBy) : null;
45
+ this._glassPane = blockedBy ? new GlassPane(this._targetElement, blockedBy, this._options) : null;
43
46
  });
44
47
  }
45
48
  ensureHostElementPositioned() {
@@ -61,13 +64,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
61
64
  * Represents the glass pane added to the target element.
62
65
  */
63
66
  class GlassPane {
64
- constructor(targetElement, blockedBy) {
67
+ constructor(targetElement, blockedBy, options) {
65
68
  this._destroyRef = new ɵDestroyRef();
66
69
  const glassPaneElement = createElement('div', {
67
70
  parent: targetElement,
68
- cssClass: ['glasspane', 'e2e-glasspane'],
71
+ cssClass: ['glasspane', 'e2e-glasspane', ...Arrays.coerce(options?.cssClass)],
69
72
  attributes: {
70
73
  'data-owner': blockedBy.id,
74
+ ...options?.attributes,
71
75
  },
72
76
  style: {
73
77
  position: 'absolute',
@@ -109,4 +113,8 @@ export const GLASS_PANE_BLOCKABLE = new InjectionToken('GLASS_PANE_BLOCKABLE');
109
113
  * Defaults to the host element of the {@link GlassPaneDirective} if not specified.
110
114
  */
111
115
  export const GLASS_PANE_TARGET_ELEMENT = new InjectionToken('GLASS_PANE_TARGET_ELEMENT');
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xhc3MtcGFuZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9nbGFzcy1wYW5lL2dsYXNzLXBhbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQXVCLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxhQUFhLEVBQUUsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUlwRDs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBSzdCLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFGL0IsZUFBVSxHQUFxQixJQUFJLENBQUM7UUFHMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMzSCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixnR0FBZ0c7UUFDaEcsa0dBQWtHO1FBQ2xHLHFCQUFxQjtRQUNyQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcs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Q0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQVksc0JBQXNCLENBQUMsQ0FBQztBQUUxRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBd0MsMkJBQTJCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBPbkRlc3Ryb3ksIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnQsIHNldFN0eWxlfSBmcm9tICcuLi9jb21tb24vZG9tLnV0aWwnO1xuaW1wb3J0IHtmcm9tRXZlbnR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7ybVEZXN0cm95UmVmfSBmcm9tICcuLi9jb21tb24vybVkZXN0cm95LXJlZic7XG5pbXBvcnQge2NvZXJjZUVsZW1lbnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0Jsb2NraW5nfSBmcm9tICcuL2Jsb2NraW5nJztcbmltcG9ydCB7QmxvY2thYmxlfSBmcm9tICcuL2Jsb2NrYWJsZSc7XG5cbi8qKlxuICogUHJldmVudHMgdXNlciBpbnRlcmFjdGlvbiBvZiB0aGUgaG9zdCB3aGVuIGJsb2NrZWQgYnkgcGxhY2luZyBhIGdsYXNzIHBhbmUgb3ZlciB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqIENvbmZpZ3VyZSB0aGlzIGRpcmVrdGl2ZSB2aWEgdGhlIGZvbGxvd2luZyBESSB0b2tlbnMuIFRoZXNlIHRva2VucyBtdXN0IGJlIHByb3ZpZGVkIGF0IHRoZSBjb21wb25lbnQgbGV2ZWwuXG4gKiAtIHtAbGluayBHTEFTU19QQU5FX0JMT0NLQUJMRX06IFJlcHJlc2VudHMgdGhlIG9iamVjdCB0byBiZSBibG9ja2VkLlxuICogLSB7QGxpbmsgR0xBU1NfUEFORV9UQVJHRVRfRUxFTUVOVH06IENvbnRyb2xzIHRoZSBIVE1MIGVsZW1lbnQgdG8gYmxvY2suIERlZmF1bHRzIHRvIHRoZSBkaXJlY3RpdmUncyBob3N0IGVsZW1lbnQgaWYgbm90IHNldC5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbd2JHbGFzc1BhbmVdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgR2xhc3NQYW5lRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfZ2xhc3NQYW5lOiBHbGFzc1BhbmUgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLl90YXJnZXRFbGVtZW50ID0gY29lcmNlRWxlbWVudChpbmplY3QoR0xBU1NfUEFORV9UQVJHRVRfRUxFTUVOVCwge29wdGlvbmFsOiB0cnVlLCBob3N0OiB0cnVlfSkgPz8gaW5qZWN0KEVsZW1lbnRSZWYpKTtcbiAgICB0aGlzLmVuc3VyZUhvc3RFbGVtZW50UG9zaXRpb25lZCgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJbnN0YWxsIHRoZSBnbGFzcyBwYW5lIGFmdGVyIEFuZ3VsYXIgaGFzIGZpbmlzaGVkIGluaXRpYWxpemluZyB0aGUgY29tcG9uZW50J3MgdmlldywgY3JpdGljYWxcbiAgICAvLyBpZiB0aGUgY29tcG9uZW50IGlzIGFscmVhZHkgYmxvY2tlZCBhdCBjb25zdHJ1Y3Rpb24gdGltZSwgc28gdGhhdCB0aGUgZ2xhc3MgcGFuZSBpcyBhZGRlZCBhZnRlclxuICAgIC8vIHRoZSB2aWV3IGNoaWxkcmVuLlxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLl9pbmplY3RvciwgKCkgPT4gdGhpcy5pbnN0YWxsR2xhc3NQYW5lKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsR2xhc3NQYW5lKCk6IHZvaWQge1xuICAgIGluamVjdChHTEFTU19QQU5FX0JMT0NLQUJMRSwge2hvc3Q6IHRydWV9KS5ibG9ja2VkQnkkXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGJsb2NrZWRCeTogQmxvY2tpbmcgfCBudWxsKSA9PiB7XG4gICAgICAgIHRoaXMuX2dsYXNzUGFuZT8uZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLl9nbGFzc1BhbmUgPSBibG9ja2VkQnkgPyBuZXcgR2xhc3NQYW5lKHRoaXMuX3RhcmdldEVsZW1lbnQsIGJsb2NrZWRCeSkgOiBudWxsO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUhvc3RFbGVtZW50UG9zaXRpb25lZCgpOiB2b2lkIHtcbiAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl90YXJnZXRFbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIHNldFN0eWxlKHRoaXMuX3RhcmdldEVsZW1lbnQsIHsncG9zaXRpb24nOiAncmVsYXRpdmUnfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2dsYXNzUGFuZT8uZGlzcG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZ2xhc3MgcGFuZSBhZGRlZCB0byB0aGUgdGFyZ2V0IGVsZW1lbnQuXG4gKi9cbmNsYXNzIEdsYXNzUGFuZSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IG5ldyDJtURlc3Ryb3lSZWYoKTtcblxuICBjb25zdHJ1Y3Rvcih0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCwgYmxvY2tlZEJ5OiBCbG9ja2luZykge1xuICAgIGNvbnN0IGdsYXNzUGFuZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7XG4gICAgICBwYXJlbnQ6IHRhcmdldEVsZW1lbnQsXG4gICAgICBjc3NDbGFzczogWydnbGFzc3BhbmUnLCAnZTJlLWdsYXNzcGFuZSddLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAnZGF0YS1vd25lcic6IGJsb2NrZWRCeS5pZCxcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgaW5zZXQ6IDAsXG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6ICdhdXRvJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbmRpY2F0ZSB0aGUgdXNlciB0aGF0IHRoaXMgZWxlbWVudCBpcyBibG9ja2VkIHdoZW4gY2xpY2tpbmcgaXQuXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGdsYXNzUGFuZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gdG8gbm90IGxvc2UgZm9jdXNcbiAgICAgICAgYmxvY2tlZEJ5LmJsaW5rKCk7XG4gICAgICB9KTtcblxuICAgIC8vIFByZXZlbnQgdGhlIHRhcmdldCBmcm9tIGdhaW5pbmcgZm9jdXMgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICBmcm9tRXZlbnQodGFyZ2V0RWxlbWVudCwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGJsb2NrZWRCeS5mb2N1cygpO1xuICAgICAgfSk7XG5cbiAgICAvLyBJZ25vcmUgcG9pbnRlciBldmVudHMgdG8gYmxvY2sgZWxlbWVudHMgb3ZlcmxhcHBpbmcgdGhlIGdsYXNzIHBhbmUsIGUuZy4sIHJlc2l6ZSBoYW5kbGVzIG9mIGEgZGlhbG9nLlxuICAgIGNvbnN0IGN1cnJlbnRQb2ludGVyRXZlbnRzID0gdGFyZ2V0RWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzIHx8IG51bGw7XG4gICAgc2V0U3R5bGUodGFyZ2V0RWxlbWVudCwgeydwb2ludGVyLWV2ZW50cyc6ICdub25lJ30pO1xuXG4gICAgdGhpcy5fZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgZ2xhc3NQYW5lRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgIHNldFN0eWxlKHRhcmdldEVsZW1lbnQsIHsncG9pbnRlci1ldmVudHMnOiBjdXJyZW50UG9pbnRlckV2ZW50c30pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVJlZi5kZXN0cm95KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBESSB0b2tlbiB0byBjb25maWd1cmUgdGhlIHtAbGluayBHbGFzc1BhbmVEaXJlY3RpdmV9IHdpdGggdGhlIFtvYmplY3Rde0BsaW5rIEJsb2NrYWJsZX0gdG8gYmxvY2suXG4gKi9cbmV4cG9ydCBjb25zdCBHTEFTU19QQU5FX0JMT0NLQUJMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxCbG9ja2FibGU+KCdHTEFTU19QQU5FX0JMT0NLQUJMRScpO1xuXG4vKipcbiAqIERJIHRva2VuIHRvIGNvbmZpZ3VyZSB0aGUge0BsaW5rIEdsYXNzUGFuZURpcmVjdGl2ZX0gd2l0aCB0aGUgSFRNTCBlbGVtZW50IHRvIGJsb2NrLlxuICogRGVmYXVsdHMgdG8gdGhlIGhvc3QgZWxlbWVudCBvZiB0aGUge0BsaW5rIEdsYXNzUGFuZURpcmVjdGl2ZX0gaWYgbm90IHNwZWNpZmllZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdMQVNTX1BBTkVfVEFSR0VUX0VMRU1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ0dMQVNTX1BBTkVfVEFSR0VUX0VMRU1FTlQnKTtcbiJdfQ==
116
+ /**
117
+ * DI token to configure the {@link GlassPaneDirective}.
118
+ */
119
+ export const GLASS_PANE_OPTIONS = new InjectionToken('GLASS_PANE_OPTIONS');
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xhc3MtcGFuZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9nbGFzcy1wYW5lL2dsYXNzLXBhbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQXVCLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxhQUFhLEVBQUUsUUFBUSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBR3BELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFM0M7Ozs7Ozs7R0FPRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsWUFBb0IsU0FBbUI7UUFBbkIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUgvQixlQUFVLEdBQXFCLElBQUksQ0FBQztRQUNwQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7UUFHdkYsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFD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QyxhQUFhLElBQUksSUFBSSxDQUFDO1FBQ3ZFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQWdCRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFZLHNCQUFzQixDQUFDLENBQUM7QUFFMUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxjQUFjLENBQXdDLDJCQUEyQixDQUFDLENBQUM7QUFFaEk7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsb0JBQW9CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBPbkRlc3Ryb3ksIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnQsIHNldFN0eWxlfSBmcm9tICcuLi9jb21tb24vZG9tLnV0aWwnO1xuaW1wb3J0IHtmcm9tRXZlbnR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7ybVEZXN0cm95UmVmfSBmcm9tICcuLi9jb21tb24vybVkZXN0cm95LXJlZic7XG5pbXBvcnQge2NvZXJjZUVsZW1lbnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0Jsb2NraW5nfSBmcm9tICcuL2Jsb2NraW5nJztcbmltcG9ydCB7QmxvY2thYmxlfSBmcm9tICcuL2Jsb2NrYWJsZSc7XG5pbXBvcnQge0FycmF5c30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5cbi8qKlxuICogUHJldmVudHMgdXNlciBpbnRlcmFjdGlvbiBvZiB0aGUgaG9zdCB3aGVuIGJsb2NrZWQgYnkgcGxhY2luZyBhIGdsYXNzIHBhbmUgb3ZlciB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqIENvbmZpZ3VyZSB0aGlzIGRpcmVrdGl2ZSB2aWEgdGhlIGZvbGxvd2luZyBESSB0b2tlbnMuIFRoZXNlIHRva2VucyBtdXN0IGJlIHByb3ZpZGVkIGF0IHRoZSBjb21wb25lbnQgbGV2ZWwuXG4gKiAtIHtAbGluayBHTEFTU19QQU5FX0JMT0NLQUJMRX06IFJlcHJlc2VudHMgdGhlIG9iamVjdCB0byBiZSBibG9ja2VkLlxuICogLSB7QGxpbmsgR0xBU1NfUEFORV9UQVJHRVRfRUxFTUVOVH06IENvbnRyb2xzIHRoZSBIVE1MIGVsZW1lbnQgdG8gYmxvY2suIERlZmF1bHRzIHRvIHRoZSBkaXJlY3RpdmUncyBob3N0IGVsZW1lbnQgaWYgbm90IHNldC5cbiAqIC0ge0BsaW5rIEdMQVNTX1BBTkVfT1BUSU9OU306IENvbmZpZ3VyZXMgdGhlIGdsYXNzIHBhbmUuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnW3diR2xhc3NQYW5lXScsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIEdsYXNzUGFuZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2dsYXNzUGFuZTogR2xhc3NQYW5lIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29wdGlvbnMgPSBpbmplY3QoR0xBU1NfUEFORV9PUFRJT05TLCB7b3B0aW9uYWw6IHRydWUsIGhvc3Q6IHRydWV9KSA/PyB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5fdGFyZ2V0RWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoaW5qZWN0KEdMQVNTX1BBTkVfVEFSR0VUX0VMRU1FTlQsIHtvcHRpb25hbDogdHJ1ZSwgaG9zdDogdHJ1ZX0pID8/IGluamVjdChFbGVtZW50UmVmKSk7XG4gICAgdGhpcy5lbnN1cmVIb3N0RWxlbWVudFBvc2l0aW9uZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gSW5zdGFsbCB0aGUgZ2xhc3MgcGFuZSBhZnRlciBBbmd1bGFyIGhhcyBmaW5pc2hlZCBpbml0aWFsaXppbmcgdGhlIGNvbXBvbmVudCdzIHZpZXcsIGNyaXRpY2FsXG4gICAgLy8gaWYgdGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IGJsb2NrZWQgYXQgY29uc3RydWN0aW9uIHRpbWUsIHNvIHRoYXQgdGhlIGdsYXNzIHBhbmUgaXMgYWRkZWQgYWZ0ZXJcbiAgICAvLyB0aGUgdmlldyBjaGlsZHJlbi5cbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+IHRoaXMuaW5zdGFsbEdsYXNzUGFuZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5zdGFsbEdsYXNzUGFuZSgpOiB2b2lkIHtcbiAgICBpbmplY3QoR0xBU1NfUEFORV9CTE9DS0FCTEUsIHtob3N0OiB0cnVlfSkuYmxvY2tlZEJ5JFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChibG9ja2VkQnk6IEJsb2NraW5nIHwgbnVsbCkgPT4ge1xuICAgICAgICB0aGlzLl9nbGFzc1BhbmU/LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5fZ2xhc3NQYW5lID0gYmxvY2tlZEJ5ID8gbmV3IEdsYXNzUGFuZSh0aGlzLl90YXJnZXRFbGVtZW50LCBibG9ja2VkQnksIHRoaXMuX29wdGlvbnMpIDogbnVsbDtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVIb3N0RWxlbWVudFBvc2l0aW9uZWQoKTogdm9pZCB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUodGhpcy5fdGFyZ2V0RWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICBzZXRTdHlsZSh0aGlzLl90YXJnZXRFbGVtZW50LCB7J3Bvc2l0aW9uJzogJ3JlbGF0aXZlJ30pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9nbGFzc1BhbmU/LmRpc3Bvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGdsYXNzIHBhbmUgYWRkZWQgdG8gdGhlIHRhcmdldCBlbGVtZW50LlxuICovXG5jbGFzcyBHbGFzc1BhbmUge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBuZXcgybVEZXN0cm95UmVmKCk7XG5cbiAgY29uc3RydWN0b3IodGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsIGJsb2NrZWRCeTogQmxvY2tpbmcsIG9wdGlvbnM/OiBHbGFzc1BhbmVPcHRpb25zKSB7XG4gICAgY29uc3QgZ2xhc3NQYW5lRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtcbiAgICAgIHBhcmVudDogdGFyZ2V0RWxlbWVudCxcbiAgICAgIGNzc0NsYXNzOiBbJ2dsYXNzcGFuZScsICdlMmUtZ2xhc3NwYW5lJywgLi4uQXJyYXlzLmNvZXJjZShvcHRpb25zPy5jc3NDbGFzcyldLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAnZGF0YS1vd25lcic6IGJsb2NrZWRCeS5pZCxcbiAgICAgICAgLi4ub3B0aW9ucz8uYXR0cmlidXRlcyxcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgaW5zZXQ6IDAsXG4gICAgICAgICdwb2ludGVyLWV2ZW50cyc6ICdhdXRvJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbmRpY2F0ZSB0aGUgdXNlciB0aGF0IHRoaXMgZWxlbWVudCBpcyBibG9ja2VkIHdoZW4gY2xpY2tpbmcgaXQuXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGdsYXNzUGFuZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gdG8gbm90IGxvc2UgZm9jdXNcbiAgICAgICAgYmxvY2tlZEJ5LmJsaW5rKCk7XG4gICAgICB9KTtcblxuICAgIC8vIFByZXZlbnQgdGhlIHRhcmdldCBmcm9tIGdhaW5pbmcgZm9jdXMgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICBmcm9tRXZlbnQodGFyZ2V0RWxlbWVudCwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGJsb2NrZWRCeS5mb2N1cygpO1xuICAgICAgfSk7XG5cbiAgICAvLyBJZ25vcmUgcG9pbnRlciBldmVudHMgdG8gYmxvY2sgZWxlbWVudHMgb3ZlcmxhcHBpbmcgdGhlIGdsYXNzIHBhbmUsIGUuZy4sIHJlc2l6ZSBoYW5kbGVzIG9mIGEgZGlhbG9nLlxuICAgIGNvbnN0IGN1cnJlbnRQb2ludGVyRXZlbnRzID0gdGFyZ2V0RWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzIHx8IG51bGw7XG4gICAgc2V0U3R5bGUodGFyZ2V0RWxlbWVudCwgeydwb2ludGVyLWV2ZW50cyc6ICdub25lJ30pO1xuXG4gICAgdGhpcy5fZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgZ2xhc3NQYW5lRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgIHNldFN0eWxlKHRhcmdldEVsZW1lbnQsIHsncG9pbnRlci1ldmVudHMnOiBjdXJyZW50UG9pbnRlckV2ZW50c30pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVJlZi5kZXN0cm95KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSBnbGFzcyBwYW5lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsYXNzUGFuZU9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYWRkIHRvIHRoZSBnbGFzcyBwYW5lIEhUTUwgZWxlbWVudC5cbiAgICovXG4gIGNzc0NsYXNzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYXR0cmlidXRlcyB0byBhZGQgdG8gdGhlIGdsYXNzIHBhbmUgSFRNTCBlbGVtZW50LlxuICAgKi9cbiAgYXR0cmlidXRlcz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG4vKipcbiAqIERJIHRva2VuIHRvIGNvbmZpZ3VyZSB0aGUge0BsaW5rIEdsYXNzUGFuZURpcmVjdGl2ZX0gd2l0aCB0aGUgW29iamVjdF17QGxpbmsgQmxvY2thYmxlfSB0byBibG9jay5cbiAqL1xuZXhwb3J0IGNvbnN0IEdMQVNTX1BBTkVfQkxPQ0tBQkxFID0gbmV3IEluamVjdGlvblRva2VuPEJsb2NrYWJsZT4oJ0dMQVNTX1BBTkVfQkxPQ0tBQkxFJyk7XG5cbi8qKlxuICogREkgdG9rZW4gdG8gY29uZmlndXJlIHRoZSB7QGxpbmsgR2xhc3NQYW5lRGlyZWN0aXZlfSB3aXRoIHRoZSBIVE1MIGVsZW1lbnQgdG8gYmxvY2suXG4gKiBEZWZhdWx0cyB0byB0aGUgaG9zdCBlbGVtZW50IG9mIHRoZSB7QGxpbmsgR2xhc3NQYW5lRGlyZWN0aXZlfSBpZiBub3Qgc3BlY2lmaWVkLlxuICovXG5leHBvcnQgY29uc3QgR0xBU1NfUEFORV9UQVJHRVRfRUxFTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignR0xBU1NfUEFORV9UQVJHRVRfRUxFTUVOVCcpO1xuXG4vKipcbiAqIERJIHRva2VuIHRvIGNvbmZpZ3VyZSB0aGUge0BsaW5rIEdsYXNzUGFuZURpcmVjdGl2ZX0uXG4gKi9cbmV4cG9ydCBjb25zdCBHTEFTU19QQU5FX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48R2xhc3NQYW5lT3B0aW9ucz4oJ0dMQVNTX1BBTkVfT1BUSU9OUycpO1xuIl19