@kirbydesign/designsystem 8.0.0 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/esm2020/button/button.component.mjs +2 -2
  2. package/esm2020/card/card.component.mjs +2 -2
  3. package/esm2020/form-field/form-field.module.mjs +5 -4
  4. package/esm2020/form-field/input/input.component.mjs +2 -2
  5. package/esm2020/form-field/textarea/textarea.component.mjs +3 -3
  6. package/esm2020/grid/breakpoint-helper.service.mjs +28 -0
  7. package/esm2020/grid/grid-card-configuration.mjs +8 -0
  8. package/esm2020/grid/grid.component.mjs +95 -0
  9. package/esm2020/grid/kirbydesign-designsystem-grid.mjs +5 -0
  10. package/esm2020/grid/public_api.mjs +4 -0
  11. package/esm2020/icon/kirby-icon-settings.mjs +5 -1
  12. package/esm2020/lib/components/index.mjs +1 -4
  13. package/esm2020/lib/components/segmented-control/segmented-control.component.mjs +3 -3
  14. package/esm2020/lib/index.mjs +3 -1
  15. package/esm2020/lib/kirby.module.mjs +13 -11
  16. package/esm2020/list/list-item/list-item.component.mjs +2 -2
  17. package/esm2020/list/list.component.mjs +2 -2
  18. package/esm2020/modal/experimental/footer/footer.component.mjs +2 -2
  19. package/esm2020/modal/experimental/kirby-modal.module.mjs +5 -5
  20. package/esm2020/modal/experimental/modal/modal.component.mjs +72 -0
  21. package/esm2020/modal/experimental/public_api.mjs +2 -2
  22. package/esm2020/modal/modal/footer/modal-footer.component.mjs +3 -3
  23. package/esm2020/page/page-footer/page-footer.component.mjs +2 -2
  24. package/esm2020/testing-jasmine/lib/mock-providers.mjs +3 -2
  25. package/esm2020/testing-jest/lib/mock-providers.mjs +3 -2
  26. package/esm2020/toast/config/toast-config.mjs +2 -0
  27. package/esm2020/toast/kirbydesign-designsystem-toast.mjs +5 -0
  28. package/esm2020/toast/public_api.mjs +4 -0
  29. package/esm2020/toast/services/indexs.mjs +3 -0
  30. package/esm2020/toast/services/toast.controller.mjs +22 -0
  31. package/esm2020/toast/services/toast.helper.mjs +39 -0
  32. package/fesm2015/kirbydesign-designsystem-button.mjs +2 -2
  33. package/fesm2015/kirbydesign-designsystem-button.mjs.map +1 -1
  34. package/fesm2015/kirbydesign-designsystem-card.mjs +2 -2
  35. package/fesm2015/kirbydesign-designsystem-card.mjs.map +1 -1
  36. package/fesm2015/kirbydesign-designsystem-form-field.mjs +7 -7
  37. package/fesm2015/kirbydesign-designsystem-form-field.mjs.map +1 -1
  38. package/fesm2015/kirbydesign-designsystem-grid.mjs +134 -0
  39. package/fesm2015/kirbydesign-designsystem-grid.mjs.map +1 -0
  40. package/fesm2015/kirbydesign-designsystem-icon.mjs +4 -0
  41. package/fesm2015/kirbydesign-designsystem-icon.mjs.map +1 -1
  42. package/fesm2015/kirbydesign-designsystem-list.mjs +4 -4
  43. package/fesm2015/kirbydesign-designsystem-list.mjs.map +1 -1
  44. package/fesm2015/kirbydesign-designsystem-modal-experimental.mjs +11 -11
  45. package/fesm2015/kirbydesign-designsystem-modal-experimental.mjs.map +1 -1
  46. package/fesm2015/kirbydesign-designsystem-modal.mjs +2 -2
  47. package/fesm2015/kirbydesign-designsystem-modal.mjs.map +1 -1
  48. package/fesm2015/kirbydesign-designsystem-page.mjs +2 -2
  49. package/fesm2015/kirbydesign-designsystem-page.mjs.map +1 -1
  50. package/fesm2015/kirbydesign-designsystem-testing-jasmine.mjs +2 -1
  51. package/fesm2015/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  52. package/fesm2015/kirbydesign-designsystem-testing-jest.mjs +2 -1
  53. package/fesm2015/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  54. package/fesm2015/kirbydesign-designsystem-toast.mjs +66 -0
  55. package/fesm2015/kirbydesign-designsystem-toast.mjs.map +1 -0
  56. package/fesm2015/kirbydesign-designsystem.mjs +24 -197
  57. package/fesm2015/kirbydesign-designsystem.mjs.map +1 -1
  58. package/fesm2020/kirbydesign-designsystem-button.mjs +2 -2
  59. package/fesm2020/kirbydesign-designsystem-button.mjs.map +1 -1
  60. package/fesm2020/kirbydesign-designsystem-card.mjs +2 -2
  61. package/fesm2020/kirbydesign-designsystem-card.mjs.map +1 -1
  62. package/fesm2020/kirbydesign-designsystem-form-field.mjs +7 -7
  63. package/fesm2020/kirbydesign-designsystem-form-field.mjs.map +1 -1
  64. package/fesm2020/kirbydesign-designsystem-grid.mjs +134 -0
  65. package/fesm2020/kirbydesign-designsystem-grid.mjs.map +1 -0
  66. package/fesm2020/kirbydesign-designsystem-icon.mjs +4 -0
  67. package/fesm2020/kirbydesign-designsystem-icon.mjs.map +1 -1
  68. package/fesm2020/kirbydesign-designsystem-list.mjs +4 -4
  69. package/fesm2020/kirbydesign-designsystem-list.mjs.map +1 -1
  70. package/fesm2020/kirbydesign-designsystem-modal-experimental.mjs +11 -11
  71. package/fesm2020/kirbydesign-designsystem-modal-experimental.mjs.map +1 -1
  72. package/fesm2020/kirbydesign-designsystem-modal.mjs +2 -2
  73. package/fesm2020/kirbydesign-designsystem-modal.mjs.map +1 -1
  74. package/fesm2020/kirbydesign-designsystem-page.mjs +2 -2
  75. package/fesm2020/kirbydesign-designsystem-page.mjs.map +1 -1
  76. package/fesm2020/kirbydesign-designsystem-testing-jasmine.mjs +2 -1
  77. package/fesm2020/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  78. package/fesm2020/kirbydesign-designsystem-testing-jest.mjs +2 -1
  79. package/fesm2020/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  80. package/fesm2020/kirbydesign-designsystem-toast.mjs +63 -0
  81. package/fesm2020/kirbydesign-designsystem-toast.mjs.map +1 -0
  82. package/fesm2020/kirbydesign-designsystem.mjs +24 -194
  83. package/fesm2020/kirbydesign-designsystem.mjs.map +1 -1
  84. package/form-field/form-field.module.d.ts +2 -1
  85. package/{lib/components/grid → grid}/breakpoint-helper.service.d.ts +0 -0
  86. package/{lib/components/grid → grid}/grid-card-configuration.d.ts +0 -0
  87. package/{lib/components/grid → grid}/grid.component.d.ts +1 -1
  88. package/grid/index.d.ts +5 -0
  89. package/grid/public_api.d.ts +3 -0
  90. package/icons/svg/air-balloon.svg +3 -0
  91. package/icons/svg/banknotes.svg +4 -0
  92. package/icons/svg/business.svg +3 -0
  93. package/icons/svg/piggybank.svg +3 -0
  94. package/lib/components/index.d.ts +0 -3
  95. package/lib/index.d.ts +2 -0
  96. package/lib/kirby.module.d.ts +26 -26
  97. package/modal/experimental/kirby-modal.module.d.ts +2 -2
  98. package/modal/experimental/{fullscreen/fullscreen.component.d.ts → modal/modal.component.d.ts} +3 -3
  99. package/modal/experimental/public_api.d.ts +1 -1
  100. package/package.json +18 -2
  101. package/testing-jasmine/lib/mock-providers.d.ts +2 -1
  102. package/testing-jest/lib/mock-providers.d.ts +2 -1
  103. package/{lib/components/toast → toast}/config/toast-config.d.ts +0 -0
  104. package/toast/index.d.ts +5 -0
  105. package/{lib/components/toast/index.d.ts → toast/public_api.d.ts} +1 -0
  106. package/toast/services/indexs.d.ts +2 -0
  107. package/{lib/components/toast → toast}/services/toast.controller.d.ts +0 -0
  108. package/{lib/components/toast → toast}/services/toast.helper.d.ts +0 -0
  109. package/esm2020/lib/components/grid/breakpoint-helper.service.mjs +0 -28
  110. package/esm2020/lib/components/grid/grid-card-configuration.mjs +0 -8
  111. package/esm2020/lib/components/grid/grid.component.mjs +0 -97
  112. package/esm2020/lib/components/toast/config/toast-config.mjs +0 -2
  113. package/esm2020/lib/components/toast/index.mjs +0 -3
  114. package/esm2020/lib/components/toast/services/toast.controller.mjs +0 -22
  115. package/esm2020/lib/components/toast/services/toast.helper.mjs +0 -39
  116. package/esm2020/modal/experimental/fullscreen/fullscreen.component.mjs +0 -72
@@ -1,72 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { IonContent, IonModal } from '@ionic/angular';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@ionic/angular";
6
- import * as i3 from "@kirbydesign/designsystem/icon";
7
- import * as i4 from "@kirbydesign/designsystem/button";
8
- export class FullscreenModalExperimentalComponent {
9
- constructor() {
10
- this.open = false;
11
- this.canDismiss = true;
12
- this.title = '';
13
- this.hasCollapsibleTitle = false;
14
- this.scrollDisabled = false;
15
- this.willPresent = new EventEmitter();
16
- this.didPresent = new EventEmitter();
17
- this.didDismiss = new EventEmitter();
18
- this.willDismiss = new EventEmitter();
19
- }
20
- _closeModal() {
21
- this.modal.dismiss(null, 'cancel');
22
- }
23
- _onWillPresent(event) {
24
- this.willPresent.emit(event);
25
- }
26
- _onDidPresent(event) {
27
- this.didPresent.emit(event);
28
- }
29
- _onWillDismiss(event) {
30
- this.willDismiss.emit(event);
31
- }
32
- _onDidDismiss(event) {
33
- this.didDismiss.emit(event);
34
- }
35
- scrollToTop(scrollDuration) {
36
- this.ionContent.scrollToTop(scrollDuration || 0);
37
- }
38
- scrollToBottom(scrollDuration) {
39
- this.ionContent.scrollToBottom(scrollDuration || 0);
40
- }
41
- }
42
- /** @nocollapse */ FullscreenModalExperimentalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FullscreenModalExperimentalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
- /** @nocollapse */ FullscreenModalExperimentalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: FullscreenModalExperimentalComponent, selector: "kirby-fullscreen-modal-experimental", inputs: { open: "open", canDismiss: "canDismiss", title: "title", hasCollapsibleTitle: "hasCollapsibleTitle", scrollDisabled: "scrollDisabled" }, outputs: { willPresent: "willPresent", didPresent: "didPresent", didDismiss: "didDismiss", willDismiss: "willDismiss" }, viewQueries: [{ propertyName: "modal", first: true, predicate: IonModal, descendants: true }, { propertyName: "ionContent", first: true, predicate: IonContent, descendants: true }], ngImport: i0, template: "<ion-modal\n [isOpen]=\"open\"\n [canDismiss]=\"canDismiss\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <button kirby-button [noDecoration]=\"true\" size=\"md\" (click)=\"_closeModal()\">\n <kirby-icon [name]=\"'close'\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n </ion-content>\n <ng-content select=\"[footer]\"></ng-content>\n </ng-template>\n</ion-modal>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black))}ion-header ion-toolbar button{color:var(--color)}@media (min-width: 721px){ion-header ion-toolbar{padding-top:8px}}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (min-width: 721px){:host-context(ion-modal){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal) ion-content::part(scroll){height:\"100%\";position:relative}}ion-modal{--background: var(--kirby-modal-background, var(--kirby-background-color))}ion-title{box-sizing:border-box;padding-inline-start:calc(48px + var(--padding-start));padding-inline-end:calc(48px + var(--padding-end));font-size:22px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));display:flex;flex-direction:column;--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 721px){ion-content{--padding-start: 56px;--padding-end: 56px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonModal, selector: "ion-modal", inputs: ["animated", "keepContentsMounted", "backdropBreakpoint", "backdropDismiss", "breakpoints", "canDismiss", "cssClass", "enterAnimation", "event", "handle", "handleBehavior", "initialBreakpoint", "isOpen", "keyboardClose", "leaveAnimation", "mode", "presentingElement", "showBackdrop", "swipeToClose", "translucent", "trigger"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size"] }] });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FullscreenModalExperimentalComponent, decorators: [{
45
- type: Component,
46
- args: [{ selector: 'kirby-fullscreen-modal-experimental', template: "<ion-modal\n [isOpen]=\"open\"\n [canDismiss]=\"canDismiss\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <button kirby-button [noDecoration]=\"true\" size=\"md\" (click)=\"_closeModal()\">\n <kirby-icon [name]=\"'close'\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n </ion-content>\n <ng-content select=\"[footer]\"></ng-content>\n </ng-template>\n</ion-modal>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black))}ion-header ion-toolbar button{color:var(--color)}@media (min-width: 721px){ion-header ion-toolbar{padding-top:8px}}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (min-width: 721px){:host-context(ion-modal){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal) ion-content::part(scroll){height:\"100%\";position:relative}}ion-modal{--background: var(--kirby-modal-background, var(--kirby-background-color))}ion-title{box-sizing:border-box;padding-inline-start:calc(48px + var(--padding-start));padding-inline-end:calc(48px + var(--padding-end));font-size:22px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));display:flex;flex-direction:column;--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 721px){ion-content{--padding-start: 56px;--padding-end: 56px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"] }]
47
- }], propDecorators: { modal: [{
48
- type: ViewChild,
49
- args: [IonModal]
50
- }], ionContent: [{
51
- type: ViewChild,
52
- args: [IonContent]
53
- }], open: [{
54
- type: Input
55
- }], canDismiss: [{
56
- type: Input
57
- }], title: [{
58
- type: Input
59
- }], hasCollapsibleTitle: [{
60
- type: Input
61
- }], scrollDisabled: [{
62
- type: Input
63
- }], willPresent: [{
64
- type: Output
65
- }], didPresent: [{
66
- type: Output
67
- }], didDismiss: [{
68
- type: Output
69
- }], willDismiss: [{
70
- type: Output
71
- }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHNjcmVlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9tb2RhbC9leHBlcmltZW50YWwvc3JjL2Z1bGxzY3JlZW4vZnVsbHNjcmVlbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9tb2RhbC9leHBlcmltZW50YWwvc3JjL2Z1bGxzY3JlZW4vZnVsbHNjcmVlbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTdEQsTUFBTSxPQUFPLG9DQUFvQztJQUxqRDtRQVNXLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixlQUFVLEdBQXVDLElBQUksQ0FBQztRQUN0RCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXRCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW1DLENBQUM7UUFDbEUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBQ2pFLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQztRQUNqRSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO0tBNkI3RTtJQTNCQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBc0M7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFzQztRQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXNDO1FBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0M7UUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxjQUF3QztRQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLGNBQWMsQ0FBQyxjQUF3QztRQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7b0pBekNVLG9DQUFvQzt3SUFBcEMsb0NBQW9DLDZYQUNwQyxRQUFRLDZFQUNSLFVBQVUsZ0RDWnZCLGtuQ0FrQ0E7MkZEeEJhLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDRSxxQ0FBcUM7OEJBSzFCLEtBQUs7c0JBQXpCLFNBQVM7dUJBQUMsUUFBUTtnQkFDSSxVQUFVO3NCQUFoQyxTQUFTO3VCQUFDLFVBQVU7Z0JBRVosSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25Db250ZW50LCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IE92ZXJsYXlFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1mdWxsc2NyZWVuLW1vZGFsLWV4cGVyaW1lbnRhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mdWxsc2NyZWVuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnVsbHNjcmVlbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGdWxsc2NyZWVuTW9kYWxFeHBlcmltZW50YWxDb21wb25lbnQge1xuICBAVmlld0NoaWxkKElvbk1vZGFsKSBtb2RhbDogSW9uTW9kYWw7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCkgaW9uQ29udGVudDogSW9uQ29udGVudDtcblxuICBASW5wdXQoKSBvcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkRpc21pc3M6IGJvb2xlYW4gfCAoKCkgPT4gUHJvbWlzZTxib29sZWFuPikgPSB0cnVlO1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBoYXNDb2xsYXBzaWJsZVRpdGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNjcm9sbERpc2FibGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHdpbGxQcmVzZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+PigpO1xuICBAT3V0cHV0KCkgZGlkUHJlc2VudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8T3ZlcmxheUV2ZW50RGV0YWlsPj4oKTtcbiAgQE91dHB1dCgpIGRpZERpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4+KCk7XG4gIEBPdXRwdXQoKSB3aWxsRGlzbWlzcyA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8T3ZlcmxheUV2ZW50RGV0YWlsPj4oKTtcblxuICBfY2xvc2VNb2RhbCgpIHtcbiAgICB0aGlzLm1vZGFsLmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgX29uV2lsbFByZXNlbnQoZXZlbnQ6IEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4pIHtcbiAgICB0aGlzLndpbGxQcmVzZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgX29uRGlkUHJlc2VudChldmVudDogQ3VzdG9tRXZlbnQ8T3ZlcmxheUV2ZW50RGV0YWlsPikge1xuICAgIHRoaXMuZGlkUHJlc2VudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIF9vbldpbGxEaXNtaXNzKGV2ZW50OiBDdXN0b21FdmVudDxPdmVybGF5RXZlbnREZXRhaWw+KSB7XG4gICAgdGhpcy53aWxsRGlzbWlzcy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIF9vbkRpZERpc21pc3MoZXZlbnQ6IEN1c3RvbUV2ZW50PE92ZXJsYXlFdmVudERldGFpbD4pIHtcbiAgICB0aGlzLmRpZERpc21pc3MuZW1pdChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsVG9Ub3Aoc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvQm90dG9tKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG59XG4iLCI8aW9uLW1vZGFsXG4gIFtpc09wZW5dPVwib3BlblwiXG4gIFtjYW5EaXNtaXNzXT1cImNhbkRpc21pc3NcIlxuICAod2lsbFByZXNlbnQpPVwiX29uV2lsbFByZXNlbnQoJGV2ZW50KVwiXG4gIChkaWRQcmVzZW50KT1cIl9vbkRpZFByZXNlbnQoJGV2ZW50KVwiXG4gICh3aWxsRGlzbWlzcyk9XCJfb25XaWxsRGlzbWlzcygkZXZlbnQpXCJcbiAgKGRpZERpc21pc3MpPVwiX29uRGlkRGlzbWlzcygkZXZlbnQpXCJcbj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyLXN0YXJ0XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPGlvbi10aXRsZT57eyB0aXRsZSB9fTwvaW9uLXRpdGxlPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxidXR0b24ga2lyYnktYnV0dG9uIFtub0RlY29yYXRpb25dPVwidHJ1ZVwiIHNpemU9XCJtZFwiIChjbGljayk9XCJfY2xvc2VNb2RhbCgpXCI+XG4gICAgICAgICAgICA8a2lyYnktaWNvbiBbbmFtZV09XCInY2xvc2UnXCI+PC9raXJieS1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgW3Njcm9sbEV2ZW50c109XCJ0cnVlXCIgW3Njcm9sbFldPVwiIXNjcm9sbERpc2FibGVkXCI+XG4gICAgICA8aW9uLWhlYWRlciAqbmdJZj1cImhhc0NvbGxhcHNpYmxlVGl0bGVcIiBjb2xsYXBzZT1cImNvbmRlbnNlXCI+XG4gICAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImtpcmJ5LXRleHQtbGFyZ2VcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICAgIDwvaW9uLWhlYWRlcj5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lvbi1tb2RhbD5cbiJdfQ==