@energinet/watt 4.1.26 → 4.1.28

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.
@@ -16,7 +16,7 @@
16
16
  * limitations under the License.
17
17
  */
18
18
  //#endregion
19
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewEncapsulation, afterRenderEffect, booleanAttribute, inject, input, } from '@angular/core';
19
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, afterRenderEffect, booleanAttribute, inject, input, output, viewChild, signal, } from '@angular/core';
20
20
  import { NgClass, NgTemplateOutlet } from '@angular/common';
21
21
  import { MatDialogRef } from '@angular/material/dialog';
22
22
  import { WattResizeObserverDirective } from '@energinet/watt/utils/resize-observer';
@@ -36,39 +36,32 @@ export class WattModalComponent {
36
36
  modalService = inject(WattModalService);
37
37
  dialogRef = inject(MatDialogRef, { optional: true });
38
38
  /** Title to stay fixed to top of modal. */
39
- title = '';
40
- size = 'medium';
39
+ title = input('', ...(ngDevMode ? [{ debugName: "title" }] : []));
40
+ size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : []));
41
41
  /** Whether the modal should show a loading state. */
42
- loading = false;
42
+ loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
43
43
  /** Whether the modal should show a loading text for the loading state. */
44
- loadingMessage = '';
44
+ loadingMessage = input('', ...(ngDevMode ? [{ debugName: "loadingMessage" }] : []));
45
45
  /** Disable ESC, close button and backdrop click as methods of closing. */
46
- disableClose = false;
46
+ disableClose = input(false, ...(ngDevMode ? [{ debugName: "disableClose" }] : []));
47
47
  /** Whether to show the close button */
48
- hideCloseButton = false;
48
+ hideCloseButton = input(false, ...(ngDevMode ? [{ debugName: "hideCloseButton" }] : []));
49
49
  /** Disable ESC, backdrop click as methods of closing. */
50
- disableEscAndBackdropClose = false;
50
+ disableEscAndBackdropClose = input(false, ...(ngDevMode ? [{ debugName: "disableEscAndBackdropClose" }] : []));
51
51
  /** The aria-label for the close button. */
52
- closeLabel = 'Close';
52
+ closeLabel = input('Close', ...(ngDevMode ? [{ debugName: "closeLabel" }] : []));
53
53
  /** Classes added to the modal panel */
54
- panelClass = [];
55
- minHeight = '147px';
54
+ panelClass = input([], ...(ngDevMode ? [{ debugName: "panelClass" }] : []));
55
+ minHeight = input('147px', ...(ngDevMode ? [{ debugName: "minHeight" }] : []));
56
56
  /** Whether the dialog should restore focus to the previously-focused element, after it's closed. */
57
- restoreFocus = true;
57
+ restoreFocus = input(true, ...(ngDevMode ? [{ debugName: "restoreFocus" }] : []));
58
58
  /** Icon displayed next to the modal title. */
59
- titleIcon;
59
+ titleIcon = input(undefined, ...(ngDevMode ? [{ debugName: "titleIcon" }] : []));
60
60
  /** Whether the modal should open automatically when rendered. */
61
61
  autoOpen = input(false, ...(ngDevMode ? [{ debugName: "autoOpen", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
62
- /**
63
- * When modal is closed, emits `true` if it was "accepted",
64
- * otherwise emits `false`.
65
- * @ignore
66
- */
67
- closed = new EventEmitter();
68
- /** @ignore */
69
- modal;
70
- /** @ignore */
71
- scrollable = false;
62
+ closed = output();
63
+ modal = viewChild('modal', ...(ngDevMode ? [{ debugName: "modal" }] : []));
64
+ scrollable = signal(false, ...(ngDevMode ? [{ debugName: "scrollable" }] : []));
72
65
  constructor() {
73
66
  afterRenderEffect(() => {
74
67
  if (this.autoOpen()) {
@@ -82,12 +75,12 @@ export class WattModalComponent {
82
75
  */
83
76
  open() {
84
77
  this.modalService.open({
85
- disableClose: this.disableEscAndBackdropClose || this.disableClose,
86
- templateRef: this.modal,
87
- onClosed: this.closed,
88
- minHeight: this.minHeight,
89
- panelClass: this.panelClass,
90
- restoreFocus: this.restoreFocus,
78
+ disableClose: this.disableEscAndBackdropClose() || this.disableClose(),
79
+ templateRef: this.modal(),
80
+ onClosed: (result) => this.closed.emit(result),
81
+ minHeight: this.minHeight(),
82
+ panelClass: this.panelClass(),
83
+ restoreFocus: this.restoreFocus(),
91
84
  });
92
85
  }
93
86
  /**
@@ -103,10 +96,10 @@ export class WattModalComponent {
103
96
  * @ignore
104
97
  */
105
98
  onResize(event) {
106
- this.scrollable = event.target.scrollHeight > event.target.clientHeight;
99
+ this.scrollable.set(event.target.scrollHeight > event.target.clientHeight);
107
100
  }
108
101
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
109
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: WattModalComponent, isStandalone: true, selector: "watt-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, loadingMessage: { classPropertyName: "loadingMessage", publicName: "loadingMessage", isSignal: false, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: false, isRequired: false, transformFunction: null }, hideCloseButton: { classPropertyName: "hideCloseButton", publicName: "hideCloseButton", isSignal: false, isRequired: false, transformFunction: null }, disableEscAndBackdropClose: { classPropertyName: "disableEscAndBackdropClose", publicName: "disableEscAndBackdropClose", isSignal: false, isRequired: false, transformFunction: null }, closeLabel: { classPropertyName: "closeLabel", publicName: "closeLabel", isSignal: false, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: false, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: false, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: false, isRequired: false, transformFunction: null }, titleIcon: { classPropertyName: "titleIcon", publicName: "titleIcon", isSignal: false, isRequired: false, transformFunction: null }, autoOpen: { classPropertyName: "autoOpen", publicName: "autoOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<ng-template #modal>\n <div class=\"watt-modal\" [ngClass]=\"'watt-modal--' + size\">\n @if (!disableClose && !hideCloseButton) {\n <watt-button\n variant=\"icon\"\n icon=\"close\"\n class=\"watt-modal-close\"\n [attr.aria-label]=\"closeLabel\"\n (click)=\"close(false)\"\n />\n }\n @if (title && loading === false) {\n <h2 class=\"watt-modal-title\" [ngClass]=\"{ 'watt-modal-title-icon': titleIcon }\">\n @if (titleIcon) {\n <watt-icon [name]=\"titleIcon\" [size]=\"'l'\" />\n }\n {{ title }}\n </h2>\n }\n <div\n wattResizeObserver\n class=\"watt-modal-content\"\n [class.watt-modal-scrollable]=\"scrollable\"\n (resize)=\"onResize($event)\"\n >\n <ng-content />\n </div>\n <ng-content select=\"watt-modal-actions\" />\n\n @if (loading) {\n <div class=\"watt-modal__spinner\">\n <div>\n <watt-spinner />\n <p>{{ loadingMessage }}</p>\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n@if (dialogRef) {\n <ng-template [ngTemplateOutlet]=\"modal\" />\n}\n", styles: [":root{--watt-modal-width: 100vw;--watt-modal-min-height: auto;--watt-modal-height: calc(100vh - var(--watt-topbar-height, 0px));--watt-modal-content-padding: 0 var(--watt-space-ml)}.watt-modal{width:var(--watt-modal-width);max-width:100vw;height:var(--watt-modal-height);min-height:var(--watt-modal-min-height);max-height:100vh;position:relative;display:grid;padding:0;align-items:center;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;grid-template-areas:\"title close\" \"content content\" \"actions actions\"}.watt-modal--small{--watt-modal-width: 320px;--watt-modal-height: auto}@media(min-width:600.02px){.watt-modal--small{--watt-modal-width: 520px}}.watt-modal--small .watt-modal-title{color:var(--watt-typography-headline-color);font-size:1rem;line-height:1.5rem;font-weight:600;text-transform:none;letter-spacing:0}@media(min-width:1280px){.watt-modal--small .watt-modal-title{font-size:1.25rem;line-height:1.75rem}}@media(min-width:720.02px){.watt-modal--medium{--watt-modal-width: 720px;--watt-modal-height: auto}}@media(min-width:786.02px){.watt-modal--large{--watt-modal-width: 786px;--watt-modal-height: auto}}@media(min-width:960.02px){.watt-modal--large{--watt-modal-width: 936px;--watt-modal-height: auto}}.watt-modal-panel{margin-top:var(--watt-topbar-height)}.watt-modal-panel .mat-mdc-dialog-container .mdc-dialog__surface{width:auto}.watt-modal-panel .watt-modal-close{grid-area:close;align-self:start;margin:var(--watt-space-s);color:var(--watt-color-primary)}.watt-modal-panel .watt-modal-title{grid-area:title;margin:var(--watt-space-s) var(--watt-space-ml);color:var(--watt-typography-text-color)}.watt-modal-panel .watt-modal-title.watt-modal-title-icon{display:flex;align-items:center;gap:var(--watt-space-s)}.watt-modal-panel .watt-modal-content{align-self:stretch;grid-area:content;overflow:auto;padding:var(--watt-modal-content-padding)}.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{display:block;margin:0 calc(-1 * var(--watt-space-s)) 0 0}@media(min-width:720.02px){.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{margin:0 calc(-1 * var(--watt-space-ml))}}.watt-modal-panel .watt-modal-scrollable{border:1px solid var(--watt-color-neutral-grey-300);border-left:none;border-right:none}.watt-modal-panel watt-modal-actions{grid-area:actions;display:flex;justify-content:flex-end;padding:var(--watt-space-ml);gap:var(--watt-space-m)}.watt-modal-panel .watt-modal__spinner{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#fffc}.watt-modal-panel .watt-modal__spinner div{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.watt-modal-panel .watt-modal__spinner div p{margin-top:var(--watt-space-m);width:100%}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: WattResizeObserverDirective, selector: "[wattResizeObserver]", outputs: ["resize"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattSpinnerComponent, selector: "watt-spinner", inputs: ["diameter", "strokeWidth"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
102
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: WattModalComponent, isStandalone: true, selector: "watt-modal", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingMessage: { classPropertyName: "loadingMessage", publicName: "loadingMessage", isSignal: true, isRequired: false, transformFunction: null }, disableClose: { classPropertyName: "disableClose", publicName: "disableClose", isSignal: true, isRequired: false, transformFunction: null }, hideCloseButton: { classPropertyName: "hideCloseButton", publicName: "hideCloseButton", isSignal: true, isRequired: false, transformFunction: null }, disableEscAndBackdropClose: { classPropertyName: "disableEscAndBackdropClose", publicName: "disableEscAndBackdropClose", isSignal: true, isRequired: false, transformFunction: null }, closeLabel: { classPropertyName: "closeLabel", publicName: "closeLabel", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: true, isRequired: false, transformFunction: null }, titleIcon: { classPropertyName: "titleIcon", publicName: "titleIcon", isSignal: true, isRequired: false, transformFunction: null }, autoOpen: { classPropertyName: "autoOpen", publicName: "autoOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true, isSignal: true }], ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<ng-template #modal>\n <div class=\"watt-modal\" [ngClass]=\"'watt-modal--' + size()\">\n @if (!disableClose() && !hideCloseButton()) {\n <watt-button\n variant=\"icon\"\n icon=\"close\"\n class=\"watt-modal-close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"close(false)\"\n />\n }\n @if (title() && loading() === false) {\n <h2 class=\"watt-modal-title\" [ngClass]=\"{ 'watt-modal-title-icon': titleIcon() }\">\n @if (titleIcon()) {\n <watt-icon [name]=\"titleIcon()\" [size]=\"'l'\" />\n }\n {{ title() }}\n </h2>\n }\n <div\n wattResizeObserver\n class=\"watt-modal-content\"\n [class.watt-modal-scrollable]=\"scrollable()\"\n (resize)=\"onResize($event)\"\n >\n <ng-content />\n </div>\n <ng-content select=\"watt-modal-actions\" />\n\n @if (loading()) {\n <div class=\"watt-modal__spinner\">\n <div>\n <watt-spinner />\n <p>{{ loadingMessage() }}</p>\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n@if (dialogRef) {\n <ng-template [ngTemplateOutlet]=\"modal\" />\n}\n", styles: [":root{--watt-modal-width: 100vw;--watt-modal-min-height: auto;--watt-modal-height: calc(100vh - var(--watt-topbar-height, 0px));--watt-modal-content-padding: 0 var(--watt-space-ml)}.watt-modal{width:var(--watt-modal-width);max-width:100vw;height:var(--watt-modal-height);min-height:var(--watt-modal-min-height);max-height:100vh;position:relative;display:grid;padding:0;align-items:center;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;grid-template-areas:\"title close\" \"content content\" \"actions actions\"}.watt-modal--small{--watt-modal-width: 320px;--watt-modal-height: auto}@media(min-width:600.02px){.watt-modal--small{--watt-modal-width: 520px}}.watt-modal--small .watt-modal-title{color:var(--watt-typography-headline-color);font-size:1rem;line-height:1.5rem;font-weight:600;text-transform:none;letter-spacing:0}@media(min-width:1280px){.watt-modal--small .watt-modal-title{font-size:1.25rem;line-height:1.75rem}}@media(min-width:720.02px){.watt-modal--medium{--watt-modal-width: 720px;--watt-modal-height: auto}}@media(min-width:786.02px){.watt-modal--large{--watt-modal-width: 786px;--watt-modal-height: auto}}@media(min-width:960.02px){.watt-modal--large{--watt-modal-width: 936px;--watt-modal-height: auto}}.watt-modal-panel{margin-top:var(--watt-topbar-height)}.watt-modal-panel .mat-mdc-dialog-container .mdc-dialog__surface{width:auto}.watt-modal-panel .watt-modal-close{grid-area:close;align-self:start;margin:var(--watt-space-s);color:var(--watt-color-primary)}.watt-modal-panel .watt-modal-title{grid-area:title;margin:var(--watt-space-s) var(--watt-space-ml);color:var(--watt-typography-text-color)}.watt-modal-panel .watt-modal-title.watt-modal-title-icon{display:flex;align-items:center;gap:var(--watt-space-s)}.watt-modal-panel .watt-modal-content{align-self:stretch;grid-area:content;overflow:auto;padding:var(--watt-modal-content-padding)}.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{display:block;margin:0 calc(-1 * var(--watt-space-s)) 0 0}@media(min-width:720.02px){.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{margin:0 calc(-1 * var(--watt-space-ml))}}.watt-modal-panel .watt-modal-scrollable{border:1px solid var(--watt-color-neutral-grey-300);border-left:none;border-right:none}.watt-modal-panel watt-modal-actions{grid-area:actions;display:flex;justify-content:flex-end;padding:var(--watt-space-ml);gap:var(--watt-space-m)}.watt-modal-panel .watt-modal__spinner{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#fffc}.watt-modal-panel .watt-modal__spinner div{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.watt-modal-panel .watt-modal__spinner div p{margin-top:var(--watt-space-m);width:100%}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: WattResizeObserverDirective, selector: "[wattResizeObserver]", outputs: ["resize"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattSpinnerComponent, selector: "watt-spinner", inputs: ["diameter", "strokeWidth"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
110
103
  }
111
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattModalComponent, decorators: [{
112
105
  type: Component,
@@ -117,37 +110,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
117
110
  WattButtonComponent,
118
111
  WattSpinnerComponent,
119
112
  WattIconComponent,
120
- ], template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<ng-template #modal>\n <div class=\"watt-modal\" [ngClass]=\"'watt-modal--' + size\">\n @if (!disableClose && !hideCloseButton) {\n <watt-button\n variant=\"icon\"\n icon=\"close\"\n class=\"watt-modal-close\"\n [attr.aria-label]=\"closeLabel\"\n (click)=\"close(false)\"\n />\n }\n @if (title && loading === false) {\n <h2 class=\"watt-modal-title\" [ngClass]=\"{ 'watt-modal-title-icon': titleIcon }\">\n @if (titleIcon) {\n <watt-icon [name]=\"titleIcon\" [size]=\"'l'\" />\n }\n {{ title }}\n </h2>\n }\n <div\n wattResizeObserver\n class=\"watt-modal-content\"\n [class.watt-modal-scrollable]=\"scrollable\"\n (resize)=\"onResize($event)\"\n >\n <ng-content />\n </div>\n <ng-content select=\"watt-modal-actions\" />\n\n @if (loading) {\n <div class=\"watt-modal__spinner\">\n <div>\n <watt-spinner />\n <p>{{ loadingMessage }}</p>\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n@if (dialogRef) {\n <ng-template [ngTemplateOutlet]=\"modal\" />\n}\n", styles: [":root{--watt-modal-width: 100vw;--watt-modal-min-height: auto;--watt-modal-height: calc(100vh - var(--watt-topbar-height, 0px));--watt-modal-content-padding: 0 var(--watt-space-ml)}.watt-modal{width:var(--watt-modal-width);max-width:100vw;height:var(--watt-modal-height);min-height:var(--watt-modal-min-height);max-height:100vh;position:relative;display:grid;padding:0;align-items:center;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;grid-template-areas:\"title close\" \"content content\" \"actions actions\"}.watt-modal--small{--watt-modal-width: 320px;--watt-modal-height: auto}@media(min-width:600.02px){.watt-modal--small{--watt-modal-width: 520px}}.watt-modal--small .watt-modal-title{color:var(--watt-typography-headline-color);font-size:1rem;line-height:1.5rem;font-weight:600;text-transform:none;letter-spacing:0}@media(min-width:1280px){.watt-modal--small .watt-modal-title{font-size:1.25rem;line-height:1.75rem}}@media(min-width:720.02px){.watt-modal--medium{--watt-modal-width: 720px;--watt-modal-height: auto}}@media(min-width:786.02px){.watt-modal--large{--watt-modal-width: 786px;--watt-modal-height: auto}}@media(min-width:960.02px){.watt-modal--large{--watt-modal-width: 936px;--watt-modal-height: auto}}.watt-modal-panel{margin-top:var(--watt-topbar-height)}.watt-modal-panel .mat-mdc-dialog-container .mdc-dialog__surface{width:auto}.watt-modal-panel .watt-modal-close{grid-area:close;align-self:start;margin:var(--watt-space-s);color:var(--watt-color-primary)}.watt-modal-panel .watt-modal-title{grid-area:title;margin:var(--watt-space-s) var(--watt-space-ml);color:var(--watt-typography-text-color)}.watt-modal-panel .watt-modal-title.watt-modal-title-icon{display:flex;align-items:center;gap:var(--watt-space-s)}.watt-modal-panel .watt-modal-content{align-self:stretch;grid-area:content;overflow:auto;padding:var(--watt-modal-content-padding)}.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{display:block;margin:0 calc(-1 * var(--watt-space-s)) 0 0}@media(min-width:720.02px){.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{margin:0 calc(-1 * var(--watt-space-ml))}}.watt-modal-panel .watt-modal-scrollable{border:1px solid var(--watt-color-neutral-grey-300);border-left:none;border-right:none}.watt-modal-panel watt-modal-actions{grid-area:actions;display:flex;justify-content:flex-end;padding:var(--watt-space-ml);gap:var(--watt-space-m)}.watt-modal-panel .watt-modal__spinner{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#fffc}.watt-modal-panel .watt-modal__spinner div{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.watt-modal-panel .watt-modal__spinner div p{margin-top:var(--watt-space-m);width:100%}\n"] }]
121
- }], ctorParameters: () => [], propDecorators: { title: [{
122
- type: Input
123
- }], size: [{
124
- type: Input
125
- }], loading: [{
126
- type: Input
127
- }], loadingMessage: [{
128
- type: Input
129
- }], disableClose: [{
130
- type: Input
131
- }], hideCloseButton: [{
132
- type: Input
133
- }], disableEscAndBackdropClose: [{
134
- type: Input
135
- }], closeLabel: [{
136
- type: Input
137
- }], panelClass: [{
138
- type: Input
139
- }], minHeight: [{
140
- type: Input
141
- }], restoreFocus: [{
142
- type: Input
143
- }], titleIcon: [{
144
- type: Input
145
- }], autoOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoOpen", required: false }] }], closed: [{
146
- type: Output
147
- }], modal: [{
148
- type: ViewChild,
149
- args: ['modal']
150
- }] } });
113
+ ], template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<ng-template #modal>\n <div class=\"watt-modal\" [ngClass]=\"'watt-modal--' + size()\">\n @if (!disableClose() && !hideCloseButton()) {\n <watt-button\n variant=\"icon\"\n icon=\"close\"\n class=\"watt-modal-close\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"close(false)\"\n />\n }\n @if (title() && loading() === false) {\n <h2 class=\"watt-modal-title\" [ngClass]=\"{ 'watt-modal-title-icon': titleIcon() }\">\n @if (titleIcon()) {\n <watt-icon [name]=\"titleIcon()\" [size]=\"'l'\" />\n }\n {{ title() }}\n </h2>\n }\n <div\n wattResizeObserver\n class=\"watt-modal-content\"\n [class.watt-modal-scrollable]=\"scrollable()\"\n (resize)=\"onResize($event)\"\n >\n <ng-content />\n </div>\n <ng-content select=\"watt-modal-actions\" />\n\n @if (loading()) {\n <div class=\"watt-modal__spinner\">\n <div>\n <watt-spinner />\n <p>{{ loadingMessage() }}</p>\n </div>\n </div>\n }\n </div>\n</ng-template>\n\n@if (dialogRef) {\n <ng-template [ngTemplateOutlet]=\"modal\" />\n}\n", styles: [":root{--watt-modal-width: 100vw;--watt-modal-min-height: auto;--watt-modal-height: calc(100vh - var(--watt-topbar-height, 0px));--watt-modal-content-padding: 0 var(--watt-space-ml)}.watt-modal{width:var(--watt-modal-width);max-width:100vw;height:var(--watt-modal-height);min-height:var(--watt-modal-min-height);max-height:100vh;position:relative;display:grid;padding:0;align-items:center;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;grid-template-areas:\"title close\" \"content content\" \"actions actions\"}.watt-modal--small{--watt-modal-width: 320px;--watt-modal-height: auto}@media(min-width:600.02px){.watt-modal--small{--watt-modal-width: 520px}}.watt-modal--small .watt-modal-title{color:var(--watt-typography-headline-color);font-size:1rem;line-height:1.5rem;font-weight:600;text-transform:none;letter-spacing:0}@media(min-width:1280px){.watt-modal--small .watt-modal-title{font-size:1.25rem;line-height:1.75rem}}@media(min-width:720.02px){.watt-modal--medium{--watt-modal-width: 720px;--watt-modal-height: auto}}@media(min-width:786.02px){.watt-modal--large{--watt-modal-width: 786px;--watt-modal-height: auto}}@media(min-width:960.02px){.watt-modal--large{--watt-modal-width: 936px;--watt-modal-height: auto}}.watt-modal-panel{margin-top:var(--watt-topbar-height)}.watt-modal-panel .mat-mdc-dialog-container .mdc-dialog__surface{width:auto}.watt-modal-panel .watt-modal-close{grid-area:close;align-self:start;margin:var(--watt-space-s);color:var(--watt-color-primary)}.watt-modal-panel .watt-modal-title{grid-area:title;margin:var(--watt-space-s) var(--watt-space-ml);color:var(--watt-typography-text-color)}.watt-modal-panel .watt-modal-title.watt-modal-title-icon{display:flex;align-items:center;gap:var(--watt-space-s)}.watt-modal-panel .watt-modal-content{align-self:stretch;grid-area:content;overflow:auto;padding:var(--watt-modal-content-padding)}.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{display:block;margin:0 calc(-1 * var(--watt-space-s)) 0 0}@media(min-width:720.02px){.watt-modal-panel .watt-modal-content .watt-modal-content--full-width{margin:0 calc(-1 * var(--watt-space-ml))}}.watt-modal-panel .watt-modal-scrollable{border:1px solid var(--watt-color-neutral-grey-300);border-left:none;border-right:none}.watt-modal-panel watt-modal-actions{grid-area:actions;display:flex;justify-content:flex-end;padding:var(--watt-space-ml);gap:var(--watt-space-m)}.watt-modal-panel .watt-modal__spinner{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#fffc}.watt-modal-panel .watt-modal__spinner div{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.watt-modal-panel .watt-modal__spinner div p{margin-top:var(--watt-space-m);width:100%}\n"] }]
114
+ }], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingMessage", required: false }] }], disableClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableClose", required: false }] }], hideCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideCloseButton", required: false }] }], disableEscAndBackdropClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableEscAndBackdropClose", required: false }] }], closeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeLabel", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], restoreFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreFocus", required: false }] }], titleIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleIcon", required: false }] }], autoOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoOpen", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], modal: [{ type: i0.ViewChild, args: ['modal', { isSignal: true }] }] } });
151
115
  /**
152
116
  * Component for projecting buttons (actions) to the bottom of the modal.
153
117
  */
@@ -163,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
163
127
  }]
164
128
  }] });
165
129
  export const WATT_MODAL = [WattModalComponent, WattModalActionsComponent];
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9tb2RhbC93YXR0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL21vZGFsL3dhdHQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQVksaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFJbkU7Ozs7OztHQU1HO0FBZ0JILE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxNQUFNLENBQXdCLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUs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QkFHTCxLQUFLOztzQkFFTCxLQUFLOztzQkFHTCxLQUFLOztzQkFHTCxLQUFLOztzQkFVTCxNQUFNOztzQkFHTixTQUFTO3VCQUFDLE9BQU87O0FBOENwQjs7R0FFRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7dUdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCLDhFQUYxQixnQkFBZ0I7OzJGQUVmLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjs7QUFHRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJSZW5kZXJFZmZlY3QsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBXYXR0UmVzaXplT2JzZXJ2ZXJEaXJlY3RpdmUgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvdXRpbHMvcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB7IFdhdHRCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvYnV0dG9uJztcbmltcG9ydCB7IFdhdHRTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3NwaW5uZXInO1xuXG5pbXBvcnQgeyBXYXR0TW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi93YXR0LW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2F0dEljb24sIFdhdHRJY29uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ljb24nO1xuXG5leHBvcnQgdHlwZSBXYXR0TW9kYWxTaXplID0gJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIHJlcHJlc2VudGluZyBhIGJpbmFyeSBkZWNpc2lvbiBpbiB0aGUgZm9ybSBvZlxuICogYSBtb2RhbCB3aW5kb3cgdGhhdCBhcHBlYXJzIGluIGZyb250IG9mIHRoZSBlbnRpcmUgY29udGVudC5cbiAqXG4gKiBVc2FnZTpcbiAqIGBpbXBvcnQgeyBXQVRUX01PREFMIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L21vZGFsJztgXG4gKi9cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICd3YXR0LW1vZGFsJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgV2F0dFJlc2l6ZU9ic2VydmVyRGlyZWN0aXZlLFxuICAgIFdhdHRCdXR0b25Db21wb25lbnQsXG4gICAgV2F0dFNwaW5uZXJDb21wb25lbnQsXG4gICAgV2F0dEljb25Db21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRNb2RhbENvbXBvbmVudCB7XG4gIHByaXZhdGUgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KFdhdHRNb2RhbFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjx1bmtub3duPj4oTWF0RGlhbG9nUmVmLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAvKiogVGl0bGUgdG8gc3RheSBmaXhlZCB0byB0b3Agb2YgbW9kYWwuICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG5cbiAgQElucHV0KCkgc2l6ZTogV2F0dE1vZGFsU2l6ZSA9ICdtZWRpdW0nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtb2RhbCBzaG91bGQgc2hvdyBhIGxvYWRpbmcgc3RhdGUuICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgbW9kYWwgc2hvdWxkIHNob3cgYSBsb2FkaW5nIHRleHQgZm9yIHRoZSBsb2FkaW5nIHN0YXRlLiAqL1xuICBASW5wdXQoKSBsb2FkaW5nTWVzc2FnZSA9ICcnO1xuXG4gIC8qKiBEaXNhYmxlIEVTQywgY2xvc2UgYnV0dG9uIGFuZCBiYWNrZHJvcCBjbGljayBhcyBtZXRob2RzIG9mIGNsb3NpbmcuICovXG4gIEBJbnB1dCgpIGRpc2FibGVDbG9zZSA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbiAqL1xuICBASW5wdXQoKSBoaWRlQ2xvc2VCdXR0b24gPSBmYWxzZTtcblxuICAvKiogRGlzYWJsZSBFU0MsIGJhY2tkcm9wIGNsaWNrIGFzIG1ldGhvZHMgb2YgY2xvc2luZy4gKi9cbiAgQElucHV0KCkgZGlzYWJsZUVzY0FuZEJhY2tkcm9wQ2xvc2UgPSBmYWxzZTtcblxuICAvKiogVGhlIGFyaWEtbGFiZWwgZm9yIHRoZSBjbG9zZSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNsb3NlTGFiZWwgPSAnQ2xvc2UnO1xuXG4gIC8qKiBDbGFzc2VzIGFkZGVkIHRvIHRoZSBtb2RhbCBwYW5lbCAqL1xuICBASW5wdXQoKSBwYW5lbENsYXNzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIG1pbkhlaWdodCA9ICcxNDdweCc7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgcmVzdG9yZSBmb2N1cyB0byB0aGUgcHJldmlvdXNseS1mb2N1c2VkIGVsZW1lbnQsIGFmdGVyIGl0J3MgY2xvc2VkLiAqL1xuICBASW5wdXQoKSByZXN0b3JlRm9jdXMgPSB0cnVlO1xuXG4gIC8qKiBJY29uIGRpc3BsYXllZCBuZXh0IHRvIHRoZSBtb2RhbCB0aXRsZS4gKi9cbiAgQElucHV0KCkgdGl0bGVJY29uPzogV2F0dEljb247XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1vZGFsIHNob3VsZCBvcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiByZW5kZXJlZC4gICovXG4gIGF1dG9PcGVuID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBXaGVuIG1vZGFsIGlzIGNsb3NlZCwgZW1pdHMgYHRydWVgIGlmIGl0IHdhcyBcImFjY2VwdGVkXCIsXG4gICAqIG90aGVyd2lzZSBlbWl0cyBgZmFsc2VgLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWwhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBzY3JvbGxhYmxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWZ0ZXJSZW5kZXJFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXV0b09wZW4oKSkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgbW9kYWwuIFN1YnNlcXVlbnQgY2FsbHMgYXJlIGlnbm9yZWQgd2hpbGUgdGhlIG1vZGFsIGlzIG9wZW5lZC5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb3BlbigpIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHtcbiAgICAgIGRpc2FibGVDbG9zZTogdGhpcy5kaXNhYmxlRXNjQW5kQmFja2Ryb3BDbG9zZSB8fCB0aGlzLmRpc2FibGVDbG9zZSxcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLm1vZGFsLFxuICAgICAgb25DbG9zZWQ6IHRoaXMuY2xvc2VkLFxuICAgICAgbWluSGVpZ2h0OiB0aGlzLm1pbkhlaWdodCxcbiAgICAgIHBhbmVsQ2xhc3M6IHRoaXMucGFuZWxDbGFzcyxcbiAgICAgIHJlc3RvcmVGb2N1czogdGhpcy5yZXN0b3JlRm9jdXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbCB3aXRoIGB0cnVlYCBmb3IgYWNjZXB0YW5jZSBvciBgZmFsc2VgIGZvciByZWplY3Rpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsb3NlKHJlc3VsdDogYm9vbGVhbikge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlKHJlc3VsdCk7IC8vIGlubGluZSBtb2RhbFxuICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZShyZXN1bHQpOyAvLyBpbmplY3RlZCBtb2RhbFxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBtb2RhbCBjb250ZW50IGVsZW1lbnQgY2hhbmdlcyBzaXplLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblJlc2l6ZShldmVudDogUmVzaXplT2JzZXJ2ZXJFbnRyeSkge1xuICAgIHRoaXMuc2Nyb2xsYWJsZSA9IGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQgPiBldmVudC50YXJnZXQuY2xpZW50SGVpZ2h0O1xuICB9XG59XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBwcm9qZWN0aW5nIGJ1dHRvbnMgKGFjdGlvbnMpIHRvIHRoZSBib3R0b20gb2YgdGhlIG1vZGFsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YXR0LW1vZGFsLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dE1vZGFsQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5leHBvcnQgY29uc3QgV0FUVF9NT0RBTCA9IFtXYXR0TW9kYWxDb21wb25lbnQsIFdhdHRNb2RhbEFjdGlvbnNDb21wb25lbnRdO1xuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjxuZy10ZW1wbGF0ZSAjbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJ3YXR0LW1vZGFsXCIgW25nQ2xhc3NdPVwiJ3dhdHQtbW9kYWwtLScgKyBzaXplXCI+XG4gICAgQGlmICghZGlzYWJsZUNsb3NlICYmICFoaWRlQ2xvc2VCdXR0b24pIHtcbiAgICAgIDx3YXR0LWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiaWNvblwiXG4gICAgICAgIGljb249XCJjbG9zZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC1tb2RhbC1jbG9zZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2xvc2VMYWJlbFwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZShmYWxzZSlcIlxuICAgICAgLz5cbiAgICB9XG4gICAgQGlmICh0aXRsZSAmJiBsb2FkaW5nID09PSBmYWxzZSkge1xuICAgICAgPGgyIGNsYXNzPVwid2F0dC1tb2RhbC10aXRsZVwiIFtuZ0NsYXNzXT1cInsgJ3dhdHQtbW9kYWwtdGl0bGUtaWNvbic6IHRpdGxlSWNvbiB9XCI+XG4gICAgICAgIEBpZiAodGl0bGVJY29uKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBbbmFtZV09XCJ0aXRsZUljb25cIiBbc2l6ZV09XCInbCdcIiAvPlxuICAgICAgICB9XG4gICAgICAgIHt7IHRpdGxlIH19XG4gICAgICA8L2gyPlxuICAgIH1cbiAgICA8ZGl2XG4gICAgICB3YXR0UmVzaXplT2JzZXJ2ZXJcbiAgICAgIGNsYXNzPVwid2F0dC1tb2RhbC1jb250ZW50XCJcbiAgICAgIFtjbGFzcy53YXR0LW1vZGFsLXNjcm9sbGFibGVdPVwic2Nyb2xsYWJsZVwiXG4gICAgICAocmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwid2F0dC1tb2RhbC1hY3Rpb25zXCIgLz5cblxuICAgIEBpZiAobG9hZGluZykge1xuICAgICAgPGRpdiBjbGFzcz1cIndhdHQtbW9kYWxfX3NwaW5uZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8d2F0dC1zcGlubmVyIC8+XG4gICAgICAgICAgPHA+e3sgbG9hZGluZ01lc3NhZ2UgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbkBpZiAoZGlhbG9nUmVmKSB7XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJtb2RhbFwiIC8+XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9tb2RhbC93YXR0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL21vZGFsL3dhdHQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSW5FOzs7Ozs7R0FNRztBQWdCSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3JCLFlBQVksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0QyxTQUFTLEdBQUcsTUFBTSxDQUF3QixZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV0RiwyQ0FB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QixpQkFBaUI7OzJGQUdSLGtCQUFrQjtrQkFmOUIsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCLFlBQVksV0FHYjt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3FCQUNsQjt3N0NBNkN1QyxPQUFPO0FBNkNqRDs7R0FFRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7dUdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCLDhFQUYxQixnQkFBZ0I7OzJGQUVmLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjs7QUFHRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBhZnRlclJlbmRlckVmZmVjdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICB2aWV3Q2hpbGQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IFdhdHRSZXNpemVPYnNlcnZlckRpcmVjdGl2ZSB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC91dGlscy9yZXNpemUtb2JzZXJ2ZXInO1xuaW1wb3J0IHsgV2F0dEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9idXR0b24nO1xuaW1wb3J0IHsgV2F0dFNwaW5uZXJDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvc3Bpbm5lcic7XG5cbmltcG9ydCB7IFdhdHRNb2RhbFNlcnZpY2UgfSBmcm9tICcuL3dhdHQtbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBXYXR0SWNvbiwgV2F0dEljb25Db21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvaWNvbic7XG5cbmV4cG9ydCB0eXBlIFdhdHRNb2RhbFNpemUgPSAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgcmVwcmVzZW50aW5nIGEgYmluYXJ5IGRlY2lzaW9uIGluIHRoZSBmb3JtIG9mXG4gKiBhIG1vZGFsIHdpbmRvdyB0aGF0IGFwcGVhcnMgaW4gZnJvbnQgb2YgdGhlIGVudGlyZSBjb250ZW50LlxuICpcbiAqIFVzYWdlOlxuICogYGltcG9ydCB7IFdBVFRfTU9EQUwgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvbW9kYWwnO2BcbiAqL1xuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzZWxlY3RvcjogJ3dhdHQtbW9kYWwnLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi93YXR0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBXYXR0UmVzaXplT2JzZXJ2ZXJEaXJlY3RpdmUsXG4gICAgV2F0dEJ1dHRvbkNvbXBvbmVudCxcbiAgICBXYXR0U3Bpbm5lckNvbXBvbmVudCxcbiAgICBXYXR0SWNvbkNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dE1vZGFsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoV2F0dE1vZGFsU2VydmljZSk7XG4gIHByb3RlY3RlZCBkaWFsb2dSZWYgPSBpbmplY3Q8TWF0RGlhbG9nUmVmPHVua25vd24+PihNYXREaWFsb2dSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqIFRpdGxlIHRvIHN0YXkgZml4ZWQgdG8gdG9wIG9mIG1vZGFsLiAqL1xuICB0aXRsZSA9IGlucHV0KCcnKTtcblxuICBzaXplID0gaW5wdXQ8V2F0dE1vZGFsU2l6ZT4oJ21lZGl1bScpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtb2RhbCBzaG91bGQgc2hvdyBhIGxvYWRpbmcgc3RhdGUuICovXG4gIGxvYWRpbmcgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1vZGFsIHNob3VsZCBzaG93IGEgbG9hZGluZyB0ZXh0IGZvciB0aGUgbG9hZGluZyBzdGF0ZS4gKi9cbiAgbG9hZGluZ01lc3NhZ2UgPSBpbnB1dCgnJyk7XG5cbiAgLyoqIERpc2FibGUgRVNDLCBjbG9zZSBidXR0b24gYW5kIGJhY2tkcm9wIGNsaWNrIGFzIG1ldGhvZHMgb2YgY2xvc2luZy4gKi9cbiAgZGlzYWJsZUNsb3NlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbiAqL1xuICBoaWRlQ2xvc2VCdXR0b24gPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqIERpc2FibGUgRVNDLCBiYWNrZHJvcCBjbGljayBhcyBtZXRob2RzIG9mIGNsb3NpbmcuICovXG4gIGRpc2FibGVFc2NBbmRCYWNrZHJvcENsb3NlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKiBUaGUgYXJpYS1sYWJlbCBmb3IgdGhlIGNsb3NlIGJ1dHRvbi4gKi9cbiAgY2xvc2VMYWJlbCA9IGlucHV0KCdDbG9zZScpO1xuXG4gIC8qKiBDbGFzc2VzIGFkZGVkIHRvIHRoZSBtb2RhbCBwYW5lbCAqL1xuICBwYW5lbENsYXNzID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcblxuICBtaW5IZWlnaHQgPSBpbnB1dCgnMTQ3cHgnKTtcblxuICAvKiogV2hldGhlciB0aGUgZGlhbG9nIHNob3VsZCByZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91c2x5LWZvY3VzZWQgZWxlbWVudCwgYWZ0ZXIgaXQncyBjbG9zZWQuICovXG4gIHJlc3RvcmVGb2N1cyA9IGlucHV0KHRydWUpO1xuXG4gIC8qKiBJY29uIGRpc3BsYXllZCBuZXh0IHRvIHRoZSBtb2RhbCB0aXRsZS4gKi9cbiAgdGl0bGVJY29uID0gaW5wdXQ8V2F0dEljb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1vZGFsIHNob3VsZCBvcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiByZW5kZXJlZC4gICovXG4gIGF1dG9PcGVuID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIGNsb3NlZCA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gIG1vZGFsID0gdmlld0NoaWxkPFRlbXBsYXRlUmVmPEVsZW1lbnQ+PignbW9kYWwnKTtcblxuICBzY3JvbGxhYmxlID0gc2lnbmFsKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZnRlclJlbmRlckVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hdXRvT3BlbigpKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBtb2RhbC4gU3Vic2VxdWVudCBjYWxscyBhcmUgaWdub3JlZCB3aGlsZSB0aGUgbW9kYWwgaXMgb3BlbmVkLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvcGVuKCkge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgZGlzYWJsZUNsb3NlOiB0aGlzLmRpc2FibGVFc2NBbmRCYWNrZHJvcENsb3NlKCkgfHwgdGhpcy5kaXNhYmxlQ2xvc2UoKSxcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLm1vZGFsKCksXG4gICAgICBvbkNsb3NlZDogKHJlc3VsdDogYm9vbGVhbikgPT4gdGhpcy5jbG9zZWQuZW1pdChyZXN1bHQpLFxuICAgICAgbWluSGVpZ2h0OiB0aGlzLm1pbkhlaWdodCgpLFxuICAgICAgcGFuZWxDbGFzczogdGhpcy5wYW5lbENsYXNzKCksXG4gICAgICByZXN0b3JlRm9jdXM6IHRoaXMucmVzdG9yZUZvY3VzKCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBtb2RhbCB3aXRoIGB0cnVlYCBmb3IgYWNjZXB0YW5jZSBvciBgZmFsc2VgIGZvciByZWplY3Rpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsb3NlKHJlc3VsdDogYm9vbGVhbikge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlKHJlc3VsdCk7IC8vIGlubGluZSBtb2RhbFxuICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZShyZXN1bHQpOyAvLyBpbmplY3RlZCBtb2RhbFxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBtb2RhbCBjb250ZW50IGVsZW1lbnQgY2hhbmdlcyBzaXplLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblJlc2l6ZShldmVudDogUmVzaXplT2JzZXJ2ZXJFbnRyeSkge1xuICAgIHRoaXMuc2Nyb2xsYWJsZS5zZXQoZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodCA+IGV2ZW50LnRhcmdldC5jbGllbnRIZWlnaHQpO1xuICB9XG59XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBwcm9qZWN0aW5nIGJ1dHRvbnMgKGFjdGlvbnMpIHRvIHRoZSBib3R0b20gb2YgdGhlIG1vZGFsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YXR0LW1vZGFsLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dE1vZGFsQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5leHBvcnQgY29uc3QgV0FUVF9NT0RBTCA9IFtXYXR0TW9kYWxDb21wb25lbnQsIFdhdHRNb2RhbEFjdGlvbnNDb21wb25lbnRdO1xuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjxuZy10ZW1wbGF0ZSAjbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJ3YXR0LW1vZGFsXCIgW25nQ2xhc3NdPVwiJ3dhdHQtbW9kYWwtLScgKyBzaXplKClcIj5cbiAgICBAaWYgKCFkaXNhYmxlQ2xvc2UoKSAmJiAhaGlkZUNsb3NlQnV0dG9uKCkpIHtcbiAgICAgIDx3YXR0LWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiaWNvblwiXG4gICAgICAgIGljb249XCJjbG9zZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC1tb2RhbC1jbG9zZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2xvc2VMYWJlbCgpXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlKGZhbHNlKVwiXG4gICAgICAvPlxuICAgIH1cbiAgICBAaWYgKHRpdGxlKCkgJiYgbG9hZGluZygpID09PSBmYWxzZSkge1xuICAgICAgPGgyIGNsYXNzPVwid2F0dC1tb2RhbC10aXRsZVwiIFtuZ0NsYXNzXT1cInsgJ3dhdHQtbW9kYWwtdGl0bGUtaWNvbic6IHRpdGxlSWNvbigpIH1cIj5cbiAgICAgICAgQGlmICh0aXRsZUljb24oKSkge1xuICAgICAgICAgIDx3YXR0LWljb24gW25hbWVdPVwidGl0bGVJY29uKClcIiBbc2l6ZV09XCInbCdcIiAvPlxuICAgICAgICB9XG4gICAgICAgIHt7IHRpdGxlKCkgfX1cbiAgICAgIDwvaDI+XG4gICAgfVxuICAgIDxkaXZcbiAgICAgIHdhdHRSZXNpemVPYnNlcnZlclxuICAgICAgY2xhc3M9XCJ3YXR0LW1vZGFsLWNvbnRlbnRcIlxuICAgICAgW2NsYXNzLndhdHQtbW9kYWwtc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlKClcIlxuICAgICAgKHJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIndhdHQtbW9kYWwtYWN0aW9uc1wiIC8+XG5cbiAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cIndhdHQtbW9kYWxfX3NwaW5uZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8d2F0dC1zcGlubmVyIC8+XG4gICAgICAgICAgPHA+e3sgbG9hZGluZ01lc3NhZ2UoKSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuQGlmIChkaWFsb2dSZWYpIHtcbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vZGFsXCIgLz5cbn1cbiJdfQ==
@@ -16,118 +16,105 @@
16
16
  * limitations under the License.
17
17
  */
18
18
  //#endregion
19
- import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, inject, } from '@angular/core';
19
+ import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, input, output, viewChild, ViewEncapsulation, } from '@angular/core';
20
20
  import { fromEvent } from 'rxjs';
21
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
21
22
  import { WattColorHelperService } from '@energinet/watt/core/color';
22
23
  import * as i0 from "@angular/core";
23
24
  /**
24
25
  * Slider for providing a range of values.
25
26
  */
26
27
  export class WattSliderComponent {
27
- _colorService = inject(WattColorHelperService);
28
+ colorService = inject(WattColorHelperService);
29
+ destroyRef = inject(DestroyRef);
28
30
  /** The lowest permitted value. */
29
- min = 0;
31
+ min = input.required(...(ngDevMode ? [{ debugName: "min" }] : []));
30
32
  /** The highest permitted value. */
31
- max = 100;
33
+ max = input.required(...(ngDevMode ? [{ debugName: "max" }] : []));
32
34
  /** Step between each value. */
33
- step = 1;
35
+ step = input(1, ...(ngDevMode ? [{ debugName: "step" }] : []));
34
36
  /** The currently selected range value. */
35
- value = { min: this.min, max: this.max };
36
- maxRange;
37
- minRange;
38
- _maxChangeSubscription;
39
- _minChangeSubscription;
40
- /**
41
- * Emits value whenever it changes.
42
- * @ignore
43
- */
44
- valueChange = new EventEmitter();
45
- ngAfterViewInit() {
46
- const maxRangeElement = this.maxRange.nativeElement;
47
- const minRangeElement = this.minRange.nativeElement;
48
- const maxChanged$ = fromEvent(maxRangeElement, 'input');
49
- const minChanged$ = fromEvent(minRangeElement, 'input');
50
- this.updateRange(this.value.min, this.value.max);
51
- this._maxChangeSubscription = maxChanged$.subscribe((event) => {
52
- const maxValue = event.target.valueAsNumber;
53
- const minValue = minRangeElement.valueAsNumber || this.min;
54
- this.updateRange(minValue, maxValue);
55
- if (minValue <= maxValue) {
56
- maxRangeElement.valueAsNumber = maxValue;
57
- }
58
- else {
59
- maxRangeElement.valueAsNumber = minValue;
60
- }
61
- this.onChange({ min: minValue, max: maxValue });
37
+ value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
38
+ currentValue = computed(() => {
39
+ const inputValue = this.value();
40
+ if (!inputValue) {
41
+ return { min: this.min(), max: this.max() };
42
+ }
43
+ return inputValue;
44
+ }, ...(ngDevMode ? [{ debugName: "currentValue" }] : []));
45
+ maxRange = viewChild.required('maxRange');
46
+ minRange = viewChild.required('minRange');
47
+ valueChange = output();
48
+ sliderColor = this.colorService.getColor('secondaryLight');
49
+ rangeColor = this.colorService.getColor('primary');
50
+ constructor() {
51
+ effect(() => {
52
+ const value = this.currentValue();
53
+ this.updateRange(value.min, value.max);
62
54
  });
63
- this._minChangeSubscription = minChanged$.subscribe((event) => {
64
- const minValue = event.target.valueAsNumber;
65
- const maxValue = maxRangeElement.valueAsNumber || this.max;
66
- this.updateRange(minValue, maxValue);
67
- if (minValue > maxValue) {
68
- minRangeElement.valueAsNumber = maxValue;
69
- }
70
- this.onChange({ min: minValue, max: maxValue });
55
+ effect(() => {
56
+ const maxRange = this.maxRange();
57
+ const minRange = this.minRange();
58
+ const maxRangeElement = maxRange.nativeElement;
59
+ const minRangeElement = minRange.nativeElement;
60
+ // Setup max range input events
61
+ fromEvent(maxRangeElement, 'input')
62
+ .pipe(takeUntilDestroyed(this.destroyRef))
63
+ .subscribe((event) => {
64
+ const maxValue = event.target.valueAsNumber;
65
+ const minValue = minRangeElement.valueAsNumber;
66
+ let newMaxValue = maxValue;
67
+ if (minValue > maxValue) {
68
+ newMaxValue = minValue;
69
+ maxRangeElement.valueAsNumber = newMaxValue;
70
+ }
71
+ const newValue = { min: minValue, max: newMaxValue };
72
+ this.updateRange(newValue.min, newValue.max);
73
+ this.valueChange.emit(newValue);
74
+ });
75
+ // Setup min range input events
76
+ fromEvent(minRangeElement, 'input')
77
+ .pipe(takeUntilDestroyed(this.destroyRef))
78
+ .subscribe((event) => {
79
+ const minValue = event.target.valueAsNumber;
80
+ const maxValue = maxRangeElement.valueAsNumber;
81
+ let newMinValue = minValue;
82
+ if (minValue > maxValue) {
83
+ newMinValue = maxValue;
84
+ minRangeElement.valueAsNumber = newMinValue;
85
+ }
86
+ const newValue = { min: newMinValue, max: maxValue };
87
+ this.updateRange(newValue.min, newValue.max);
88
+ this.valueChange.emit(newValue);
89
+ });
71
90
  });
72
91
  }
73
- isElementRefsPopulated() {
74
- return !!this.maxRange && !!this.minRange;
75
- }
76
- ngOnChanges() {
77
- if (this.isElementRefsPopulated()) {
78
- this.updateRange(this.value.min, this.value.max);
79
- }
80
- }
81
- ngOnDestroy() {
82
- this._maxChangeSubscription.unsubscribe();
83
- this._minChangeSubscription.unsubscribe();
84
- }
85
92
  updateRange(minValue, maxValue) {
86
- const rangeDistance = this.max - this.min;
87
- const fromPosition = minValue - this.min;
88
- const toPosition = maxValue - this.min;
89
- const sliderColor = this._colorService.getColor('secondaryLight');
90
- const rangeColor = this._colorService.getColor('primary');
91
- this.maxRange.nativeElement.valueAsNumber = this.value.max;
92
- this.minRange.nativeElement.valueAsNumber = this.value.min;
93
- this.maxRange.nativeElement.style.background = `linear-gradient(
93
+ const maxRange = this.maxRange();
94
+ const minRange = this.minRange();
95
+ if (!maxRange || !minRange)
96
+ return;
97
+ const maxRangeElement = maxRange.nativeElement;
98
+ const minRangeElement = minRange.nativeElement;
99
+ maxRangeElement.valueAsNumber = maxValue;
100
+ minRangeElement.valueAsNumber = minValue;
101
+ const rangeDistance = this.max() - this.min();
102
+ const fromPosition = minValue - this.min();
103
+ const toPosition = maxValue - this.min();
104
+ maxRangeElement.style.background = `linear-gradient(
94
105
  to right,
95
- ${sliderColor} 0%,
96
- ${sliderColor} ${(fromPosition / rangeDistance) * 100}%,
97
- ${rangeColor} ${(fromPosition / rangeDistance) * 100}%,
98
- ${rangeColor} ${(toPosition / rangeDistance) * 100}%,
99
- ${sliderColor} ${(toPosition / rangeDistance) * 100}%,
100
- ${sliderColor} 100%)`;
101
- }
102
- /**
103
- * Change handler for updating value.
104
- * @ignore
105
- */
106
- onChange(value) {
107
- this.value = value;
108
- this.valueChange.emit(value);
106
+ ${this.sliderColor} 0%,
107
+ ${this.sliderColor} ${(fromPosition / rangeDistance) * 100}%,
108
+ ${this.rangeColor} ${(fromPosition / rangeDistance) * 100}%,
109
+ ${this.rangeColor} ${(toPosition / rangeDistance) * 100}%,
110
+ ${this.sliderColor} ${(toPosition / rangeDistance) * 100}%,
111
+ ${this.sliderColor} 100%)`;
109
112
  }
110
113
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
111
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.6", type: WattSliderComponent, isStandalone: true, selector: "watt-slider", inputs: { min: "min", max: "max", step: "step", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "maxRange", first: true, predicate: ["maxRange"], descendants: true }, { propertyName: "minRange", first: true, predicate: ["minRange"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<div class=\"controls\">\n <input\n #minRange\n class=\"min-range\"\n [style.z-index]=\"1\"\n [style.height]=\"0\"\n type=\"range\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n [value]=\"value.min\"\n />\n <input\n #maxRange\n class=\"max-range\"\n type=\"range\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n [value]=\"value.max\"\n />\n</div>\n", styles: ["watt-slider{display:flex;flex-direction:column;margin:var(--watt-space-m) 0}watt-slider .controls{position:relative}watt-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:var(--watt-space-ml);height:var(--watt-space-ml);background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-moz-range-thumb{pointer-events:all;width:24px;height:24px;background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-webkit-slider-thumb:active{box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);-webkit-box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);cursor:ew-resize}watt-slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:var(--watt-space-s);top:var(--watt-space-s)/2;left:0;right:0;position:absolute;transform:translateY(-50%);background-color:var(--watt-color-secondary-light);pointer-events:none;border-radius:var(--watt-space-s)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
114
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.6", type: WattSliderComponent, isStandalone: true, selector: "watt-slider", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "maxRange", first: true, predicate: ["maxRange"], descendants: true, isSignal: true }, { propertyName: "minRange", first: true, predicate: ["minRange"], descendants: true, isSignal: true }], ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<div class=\"controls\">\n <input\n #minRange\n class=\"min-range\"\n [style.z-index]=\"1\"\n [style.height]=\"0\"\n type=\"range\"\n [max]=\"max()\"\n [min]=\"min()\"\n [step]=\"step()\"\n [value]=\"value()?.min\"\n />\n <input\n #maxRange\n class=\"max-range\"\n type=\"range\"\n [max]=\"max()\"\n [min]=\"min()\"\n [step]=\"step()\"\n [value]=\"value()?.max\"\n />\n</div>\n", styles: ["watt-slider{display:flex;flex-direction:column;margin:var(--watt-space-m) 0}watt-slider .controls{position:relative}watt-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:var(--watt-space-ml);height:var(--watt-space-ml);background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-moz-range-thumb{pointer-events:all;width:24px;height:24px;background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-webkit-slider-thumb:active{box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);-webkit-box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);cursor:ew-resize}watt-slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:var(--watt-space-s);top:var(--watt-space-s)/2;left:0;right:0;position:absolute;transform:translateY(-50%);background-color:var(--watt-color-secondary-light);pointer-events:none;border-radius:var(--watt-space-s)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
112
115
  }
113
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: WattSliderComponent, decorators: [{
114
117
  type: Component,
115
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'watt-slider', template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<div class=\"controls\">\n <input\n #minRange\n class=\"min-range\"\n [style.z-index]=\"1\"\n [style.height]=\"0\"\n type=\"range\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n [value]=\"value.min\"\n />\n <input\n #maxRange\n class=\"max-range\"\n type=\"range\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n [value]=\"value.max\"\n />\n</div>\n", styles: ["watt-slider{display:flex;flex-direction:column;margin:var(--watt-space-m) 0}watt-slider .controls{position:relative}watt-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:var(--watt-space-ml);height:var(--watt-space-ml);background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-moz-range-thumb{pointer-events:all;width:24px;height:24px;background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-webkit-slider-thumb:active{box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);-webkit-box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);cursor:ew-resize}watt-slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:var(--watt-space-s);top:var(--watt-space-s)/2;left:0;right:0;position:absolute;transform:translateY(-50%);background-color:var(--watt-color-secondary-light);pointer-events:none;border-radius:var(--watt-space-s)}\n"] }]
116
- }], propDecorators: { min: [{
117
- type: Input
118
- }], max: [{
119
- type: Input
120
- }], step: [{
121
- type: Input
122
- }], value: [{
123
- type: Input
124
- }], maxRange: [{
125
- type: ViewChild,
126
- args: ['maxRange']
127
- }], minRange: [{
128
- type: ViewChild,
129
- args: ['minRange']
130
- }], valueChange: [{
131
- type: Output
132
- }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1zbGlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy93YXR0L3BhY2thZ2Uvc2xpZGVyL3dhdHQtc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3NsaWRlci93YXR0LXNsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFPcEU7O0dBRUc7QUFRSCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3RCLGFBQWEsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN2RCxrQ0FBa0M7SUFDekIsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUVqQixtQ0FBbUM7SUFDMUIsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUVuQiwrQkFBK0I7SUFDdEIsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUVsQiwwQ0FBMEM7SUFDakMsS0FBSyxHQUFvQixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFNUMsUUFBUSxDQUFnQztJQUV4QyxRQUFRLENBQWdDO0lBRXZELHNCQUFzQixDQUFnQjtJQUN0QyxzQkFBc0IsQ0FBZ0I7SUFDOUM7OztPQUdHO0lBQ08sV0FBVyxHQUFHLElBQUksWUFBWSxFQUFtQixD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c0JBRXBCLFNBQVM7dUJBQUMsVUFBVTs7c0JBUXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgV2F0dENvbG9ySGVscGVyU2VydmljZSB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9jb3JlL2NvbG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBXYXR0U2xpZGVyVmFsdWUge1xuICBtaW46IG51bWJlcjtcbiAgbWF4OiBudW1iZXI7XG59XG5cbi8qKlxuICogU2xpZGVyIGZvciBwcm92aWRpbmcgYSByYW5nZSBvZiB2YWx1ZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICd3YXR0LXNsaWRlcicsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi93YXR0LXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRTbGlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX2NvbG9yU2VydmljZSA9IGluamVjdChXYXR0Q29sb3JIZWxwZXJTZXJ2aWNlKTtcbiAgLyoqIFRoZSBsb3dlc3QgcGVybWl0dGVkIHZhbHVlLiAqL1xuICBASW5wdXQoKSBtaW4gPSAwO1xuXG4gIC8qKiBUaGUgaGlnaGVzdCBwZXJtaXR0ZWQgdmFsdWUuICovXG4gIEBJbnB1dCgpIG1heCA9IDEwMDtcblxuICAvKiogU3RlcCBiZXR3ZWVuIGVhY2ggdmFsdWUuICovXG4gIEBJbnB1dCgpIHN0ZXAgPSAxO1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHJhbmdlIHZhbHVlLiAqL1xuICBASW5wdXQoKSB2YWx1ZTogV2F0dFNsaWRlclZhbHVlID0geyBtaW46IHRoaXMubWluLCBtYXg6IHRoaXMubWF4IH07XG5cbiAgQFZpZXdDaGlsZCgnbWF4UmFuZ2UnKSBtYXhSYW5nZSE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnbWluUmFuZ2UnKSBtaW5SYW5nZSE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgcHJpdmF0ZSBfbWF4Q2hhbmdlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9taW5DaGFuZ2VTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIC8qKlxuICAgKiBFbWl0cyB2YWx1ZSB3aGVuZXZlciBpdCBjaGFuZ2VzLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFdhdHRTbGlkZXJWYWx1ZT4oKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbWF4UmFuZ2VFbGVtZW50ID0gdGhpcy5tYXhSYW5nZS5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IG1pblJhbmdlRWxlbWVudCA9IHRoaXMubWluUmFuZ2UubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtYXhDaGFuZ2VkJCA9IGZyb21FdmVudChtYXhSYW5nZUVsZW1lbnQsICdpbnB1dCcpO1xuICAgIGNvbnN0IG1pbkNoYW5nZWQkID0gZnJvbUV2ZW50KG1pblJhbmdlRWxlbWVudCwgJ2lucHV0Jyk7XG5cbiAgICB0aGlzLnVwZGF0ZVJhbmdlKHRoaXMudmFsdWUubWluLCB0aGlzLnZhbHVlLm1heCk7XG5cbiAgICB0aGlzLl9tYXhDaGFuZ2VTdWJzY3JpcHRpb24gPSBtYXhDaGFuZ2VkJC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBtYXhWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWVBc051bWJlcjtcbiAgICAgIGNvbnN0IG1pblZhbHVlID0gbWluUmFuZ2VFbGVtZW50LnZhbHVlQXNOdW1iZXIgfHwgdGhpcy5taW47XG4gICAgICB0aGlzLnVwZGF0ZVJhbmdlKG1pblZhbHVlLCBtYXhWYWx1ZSk7XG5cbiAgICAgIGlmIChtaW5WYWx1ZSA8PSBtYXhWYWx1ZSkge1xuICAgICAgICBtYXhSYW5nZUVsZW1lbnQudmFsdWVBc051bWJlciA9IG1heFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF4UmFuZ2VFbGVtZW50LnZhbHVlQXNOdW1iZXIgPSBtaW5WYWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vbkNoYW5nZSh7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9taW5DaGFuZ2VTdWJzY3JpcHRpb24gPSBtaW5DaGFuZ2VkJC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBtaW5WYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWVBc051bWJlcjtcbiAgICAgIGNvbnN0IG1heFZhbHVlID0gbWF4UmFuZ2VFbGVtZW50LnZhbHVlQXNOdW1iZXIgfHwgdGhpcy5tYXg7XG4gICAgICB0aGlzLnVwZGF0ZVJhbmdlKG1pblZhbHVlLCBtYXhWYWx1ZSk7XG5cbiAgICAgIGlmIChtaW5WYWx1ZSA+IG1heFZhbHVlKSB7XG4gICAgICAgIG1pblJhbmdlRWxlbWVudC52YWx1ZUFzTnVtYmVyID0gbWF4VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub25DaGFuZ2UoeyBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNFbGVtZW50UmVmc1BvcHVsYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm1heFJhbmdlICYmICEhdGhpcy5taW5SYW5nZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRWxlbWVudFJlZnNQb3B1bGF0ZWQoKSkge1xuICAgICAgdGhpcy51cGRhdGVSYW5nZSh0aGlzLnZhbHVlLm1pbiwgdGhpcy52YWx1ZS5tYXgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX21heENoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX21pbkNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSYW5nZShtaW5WYWx1ZTogbnVtYmVyLCBtYXhWYWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcmFuZ2VEaXN0YW5jZSA9IHRoaXMubWF4IC0gdGhpcy5taW47XG4gICAgY29uc3QgZnJvbVBvc2l0aW9uID0gbWluVmFsdWUgLSB0aGlzLm1pbjtcbiAgICBjb25zdCB0b1Bvc2l0aW9uID0gbWF4VmFsdWUgLSB0aGlzLm1pbjtcblxuICAgIGNvbnN0IHNsaWRlckNvbG9yID0gdGhpcy5fY29sb3JTZXJ2aWNlLmdldENvbG9yKCdzZWNvbmRhcnlMaWdodCcpO1xuICAgIGNvbnN0IHJhbmdlQ29sb3IgPSB0aGlzLl9jb2xvclNlcnZpY2UuZ2V0Q29sb3IoJ3ByaW1hcnknKTtcblxuICAgIHRoaXMubWF4UmFuZ2UubmF0aXZlRWxlbWVudC52YWx1ZUFzTnVtYmVyID0gdGhpcy52YWx1ZS5tYXg7XG4gICAgdGhpcy5taW5SYW5nZS5uYXRpdmVFbGVtZW50LnZhbHVlQXNOdW1iZXIgPSB0aGlzLnZhbHVlLm1pbjtcbiAgICB0aGlzLm1heFJhbmdlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQoXG4gICAgICB0byByaWdodCxcbiAgICAgICR7c2xpZGVyQ29sb3J9IDAlLFxuICAgICAgJHtzbGlkZXJDb2xvcn0gJHsoZnJvbVBvc2l0aW9uIC8gcmFuZ2VEaXN0YW5jZSkgKiAxMDB9JSxcbiAgICAgICR7cmFuZ2VDb2xvcn0gJHsoZnJvbVBvc2l0aW9uIC8gcmFuZ2VEaXN0YW5jZSkgKiAxMDB9JSxcbiAgICAgICR7cmFuZ2VDb2xvcn0gJHsodG9Qb3NpdGlvbiAvIHJhbmdlRGlzdGFuY2UpICogMTAwfSUsXG4gICAgICAke3NsaWRlckNvbG9yfSAkeyh0b1Bvc2l0aW9uIC8gcmFuZ2VEaXN0YW5jZSkgKiAxMDB9JSxcbiAgICAgICR7c2xpZGVyQ29sb3J9IDEwMCUpYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgaGFuZGxlciBmb3IgdXBkYXRpbmcgdmFsdWUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlKHZhbHVlOiBXYXR0U2xpZGVyVmFsdWUpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjxkaXYgY2xhc3M9XCJjb250cm9sc1wiPlxuICA8aW5wdXRcbiAgICAjbWluUmFuZ2VcbiAgICBjbGFzcz1cIm1pbi1yYW5nZVwiXG4gICAgW3N0eWxlLnotaW5kZXhdPVwiMVwiXG4gICAgW3N0eWxlLmhlaWdodF09XCIwXCJcbiAgICB0eXBlPVwicmFuZ2VcIlxuICAgIFttYXhdPVwibWF4XCJcbiAgICBbbWluXT1cIm1pblwiXG4gICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgW3ZhbHVlXT1cInZhbHVlLm1pblwiXG4gIC8+XG4gIDxpbnB1dFxuICAgICNtYXhSYW5nZVxuICAgIGNsYXNzPVwibWF4LXJhbmdlXCJcbiAgICB0eXBlPVwicmFuZ2VcIlxuICAgIFttYXhdPVwibWF4XCJcbiAgICBbbWluXT1cIm1pblwiXG4gICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgW3ZhbHVlXT1cInZhbHVlLm1heFwiXG4gIC8+XG48L2Rpdj5cbiJdfQ==
118
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'watt-slider', template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<div class=\"controls\">\n <input\n #minRange\n class=\"min-range\"\n [style.z-index]=\"1\"\n [style.height]=\"0\"\n type=\"range\"\n [max]=\"max()\"\n [min]=\"min()\"\n [step]=\"step()\"\n [value]=\"value()?.min\"\n />\n <input\n #maxRange\n class=\"max-range\"\n type=\"range\"\n [max]=\"max()\"\n [min]=\"min()\"\n [step]=\"step()\"\n [value]=\"value()?.max\"\n />\n</div>\n", styles: ["watt-slider{display:flex;flex-direction:column;margin:var(--watt-space-m) 0}watt-slider .controls{position:relative}watt-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:all;width:var(--watt-space-ml);height:var(--watt-space-ml);background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-moz-range-thumb{pointer-events:all;width:24px;height:24px;background-color:var(--watt-color-primary-dark);border-radius:50%;box-shadow:0 0 0 1px var(--watt-color-primary);cursor:pointer}watt-slider input[type=range]::-webkit-slider-thumb:active{box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);-webkit-box-shadow:inset 0 0 3px var(--watt-color-primary-dark),0 0 9px var(--watt-color-primary-dark);cursor:ew-resize}watt-slider input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:var(--watt-space-s);top:var(--watt-space-s)/2;left:0;right:0;position:absolute;transform:translateY(-50%);background-color:var(--watt-color-secondary-light);pointer-events:none;border-radius:var(--watt-space-s)}\n"] }]
119
+ }], ctorParameters: () => [], propDecorators: { min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: true }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: true }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], maxRange: [{ type: i0.ViewChild, args: ['maxRange', { isSignal: true }] }], minRange: [{ type: i0.ViewChild, args: ['minRange', { isSignal: true }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1zbGlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy93YXR0L3BhY2thZ2Uvc2xpZGVyL3dhdHQtc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3NsaWRlci93YXR0LXNsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUVOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFPcEU7O0dBRUc7QUFRSCxNQUFNLE9BQU8sbUJBQW1CO0lBQ2IsWUFBWSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzlDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFakQsa0NBQWtDO0lBQ3pCLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSw4Q0FBVSxDQUFDO0lBRXhDLG1DQUFtQztJQUMxQixHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsOENBQVUsQ0FBQztJQUV4QywrQkFBK0I7SUFDdEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLGdEQUFDLENBQUM7SUFFekIsMENBQTBDO0lBQ2pDLEtBQUssR0FBRyxLQUFLLDJEQUErQixDQUFDO0lBQzdDLFlBQVksR0FBRyxRQUFRLENBQUMsR0FB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UUFDeEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHO1FBQ3ZELElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLEdBQUcsR0FBRztRQUNyRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxHQUFHLEdBQUc7UUFDdEQsSUFBSSxDQUFDLFdBQVcsUUFBUSxDQUFDO0lBQy9CLENBQUM7dUdBekdVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHd5QkNuRGhDLHdnQ0FzQ0E7OzJGRGFhLG1CQUFtQjtrQkFQL0IsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCLGFBQWE7NGJBMkI4QyxVQUFVLGtFQUNWLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IFdhdHRDb2xvckhlbHBlclNlcnZpY2UgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY29yZS9jb2xvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2F0dFNsaWRlclZhbHVlIHtcbiAgbWluOiBudW1iZXI7XG4gIG1heDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNsaWRlciBmb3IgcHJvdmlkaW5nIGEgcmFuZ2Ugb2YgdmFsdWVzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHNlbGVjdG9yOiAnd2F0dC1zbGlkZXInLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LXNsaWRlci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC1zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0U2xpZGVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb2xvclNlcnZpY2UgPSBpbmplY3QoV2F0dENvbG9ySGVscGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAvKiogVGhlIGxvd2VzdCBwZXJtaXR0ZWQgdmFsdWUuICovXG4gIHJlYWRvbmx5IG1pbiA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcblxuICAvKiogVGhlIGhpZ2hlc3QgcGVybWl0dGVkIHZhbHVlLiAqL1xuICByZWFkb25seSBtYXggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG5cbiAgLyoqIFN0ZXAgYmV0d2VlbiBlYWNoIHZhbHVlLiAqL1xuICByZWFkb25seSBzdGVwID0gaW5wdXQoMSk7XG5cbiAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmFuZ2UgdmFsdWUuICovXG4gIHJlYWRvbmx5IHZhbHVlID0gaW5wdXQ8V2F0dFNsaWRlclZhbHVlIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBjdXJyZW50VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybiB7IG1pbjogdGhpcy5taW4oKSwgbWF4OiB0aGlzLm1heCgpIH07XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9KTtcblxuICByZWFkb25seSBtYXhSYW5nZSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignbWF4UmFuZ2UnKTtcbiAgcmVhZG9ubHkgbWluUmFuZ2UgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ21pblJhbmdlJyk7XG5cbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8V2F0dFNsaWRlclZhbHVlPigpO1xuXG4gIHJlYWRvbmx5IHNsaWRlckNvbG9yID0gdGhpcy5jb2xvclNlcnZpY2UuZ2V0Q29sb3IoJ3NlY29uZGFyeUxpZ2h0Jyk7XG4gIHJlYWRvbmx5IHJhbmdlQ29sb3IgPSB0aGlzLmNvbG9yU2VydmljZS5nZXRDb2xvcigncHJpbWFyeScpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlKCk7XG4gICAgICB0aGlzLnVwZGF0ZVJhbmdlKHZhbHVlLm1pbiwgdmFsdWUubWF4KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBtYXhSYW5nZSA9IHRoaXMubWF4UmFuZ2UoKTtcbiAgICAgIGNvbnN0IG1pblJhbmdlID0gdGhpcy5taW5SYW5nZSgpO1xuXG4gICAgICBjb25zdCBtYXhSYW5nZUVsZW1lbnQgPSBtYXhSYW5nZS5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgbWluUmFuZ2VFbGVtZW50ID0gbWluUmFuZ2UubmF0aXZlRWxlbWVudDtcblxuICAgICAgLy8gU2V0dXAgbWF4IHJhbmdlIGlucHV0IGV2ZW50c1xuICAgICAgZnJvbUV2ZW50KG1heFJhbmdlRWxlbWVudCwgJ2lucHV0JylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWF4VmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlQXNOdW1iZXI7XG4gICAgICAgICAgY29uc3QgbWluVmFsdWUgPSBtaW5SYW5nZUVsZW1lbnQudmFsdWVBc051bWJlcjtcblxuICAgICAgICAgIGxldCBuZXdNYXhWYWx1ZSA9IG1heFZhbHVlO1xuICAgICAgICAgIGlmIChtaW5WYWx1ZSA+IG1heFZhbHVlKSB7XG4gICAgICAgICAgICBuZXdNYXhWYWx1ZSA9IG1pblZhbHVlO1xuICAgICAgICAgICAgbWF4UmFuZ2VFbGVtZW50LnZhbHVlQXNOdW1iZXIgPSBuZXdNYXhWYWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBuZXdNYXhWYWx1ZSB9O1xuICAgICAgICAgIHRoaXMudXBkYXRlUmFuZ2UobmV3VmFsdWUubWluLCBuZXdWYWx1ZS5tYXgpO1xuICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBTZXR1cCBtaW4gcmFuZ2UgaW5wdXQgZXZlbnRzXG4gICAgICBmcm9tRXZlbnQobWluUmFuZ2VFbGVtZW50LCAnaW5wdXQnKVxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWVBc051bWJlcjtcbiAgICAgICAgICBjb25zdCBtYXhWYWx1ZSA9IG1heFJhbmdlRWxlbWVudC52YWx1ZUFzTnVtYmVyO1xuXG4gICAgICAgICAgbGV0IG5ld01pblZhbHVlID0gbWluVmFsdWU7XG4gICAgICAgICAgaWYgKG1pblZhbHVlID4gbWF4VmFsdWUpIHtcbiAgICAgICAgICAgIG5ld01pblZhbHVlID0gbWF4VmFsdWU7XG4gICAgICAgICAgICBtaW5SYW5nZUVsZW1lbnQudmFsdWVBc051bWJlciA9IG5ld01pblZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0geyBtaW46IG5ld01pblZhbHVlLCBtYXg6IG1heFZhbHVlIH07XG4gICAgICAgICAgdGhpcy51cGRhdGVSYW5nZShuZXdWYWx1ZS5taW4sIG5ld1ZhbHVlLm1heCk7XG4gICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJhbmdlKG1pblZhbHVlOiBudW1iZXIsIG1heFZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBtYXhSYW5nZSA9IHRoaXMubWF4UmFuZ2UoKTtcbiAgICBjb25zdCBtaW5SYW5nZSA9IHRoaXMubWluUmFuZ2UoKTtcbiAgICBpZiAoIW1heFJhbmdlIHx8ICFtaW5SYW5nZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbWF4UmFuZ2VFbGVtZW50ID0gbWF4UmFuZ2UubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBtaW5SYW5nZUVsZW1lbnQgPSBtaW5SYW5nZS5uYXRpdmVFbGVtZW50O1xuXG4gICAgbWF4UmFuZ2VFbGVtZW50LnZhbHVlQXNOdW1iZXIgPSBtYXhWYWx1ZTtcbiAgICBtaW5SYW5nZUVsZW1lbnQudmFsdWVBc051bWJlciA9IG1pblZhbHVlO1xuXG4gICAgY29uc3QgcmFuZ2VEaXN0YW5jZSA9IHRoaXMubWF4KCkgLSB0aGlzLm1pbigpO1xuICAgIGNvbnN0IGZyb21Qb3NpdGlvbiA9IG1pblZhbHVlIC0gdGhpcy5taW4oKTtcbiAgICBjb25zdCB0b1Bvc2l0aW9uID0gbWF4VmFsdWUgLSB0aGlzLm1pbigpO1xuXG4gICAgbWF4UmFuZ2VFbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBgbGluZWFyLWdyYWRpZW50KFxuICAgICAgdG8gcmlnaHQsXG4gICAgICAke3RoaXMuc2xpZGVyQ29sb3J9IDAlLFxuICAgICAgJHt0aGlzLnNsaWRlckNvbG9yfSAkeyhmcm9tUG9zaXRpb24gLyByYW5nZURpc3RhbmNlKSAqIDEwMH0lLFxuICAgICAgJHt0aGlzLnJhbmdlQ29sb3J9ICR7KGZyb21Qb3NpdGlvbiAvIHJhbmdlRGlzdGFuY2UpICogMTAwfSUsXG4gICAgICAke3RoaXMucmFuZ2VDb2xvcn0gJHsodG9Qb3NpdGlvbiAvIHJhbmdlRGlzdGFuY2UpICogMTAwfSUsXG4gICAgICAke3RoaXMuc2xpZGVyQ29sb3J9ICR7KHRvUG9zaXRpb24gLyByYW5nZURpc3RhbmNlKSAqIDEwMH0lLFxuICAgICAgJHt0aGlzLnNsaWRlckNvbG9yfSAxMDAlKWA7XG4gIH1cbn1cbiIsIjwhLS1cbkBsaWNlbnNlXG5Db3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLS0+XG48ZGl2IGNsYXNzPVwiY29udHJvbHNcIj5cbiAgPGlucHV0XG4gICAgI21pblJhbmdlXG4gICAgY2xhc3M9XCJtaW4tcmFuZ2VcIlxuICAgIFtzdHlsZS56LWluZGV4XT1cIjFcIlxuICAgIFtzdHlsZS5oZWlnaHRdPVwiMFwiXG4gICAgdHlwZT1cInJhbmdlXCJcbiAgICBbbWF4XT1cIm1heCgpXCJcbiAgICBbbWluXT1cIm1pbigpXCJcbiAgICBbc3RlcF09XCJzdGVwKClcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZSgpPy5taW5cIlxuICAvPlxuICA8aW5wdXRcbiAgICAjbWF4UmFuZ2VcbiAgICBjbGFzcz1cIm1heC1yYW5nZVwiXG4gICAgdHlwZT1cInJhbmdlXCJcbiAgICBbbWF4XT1cIm1heCgpXCJcbiAgICBbbWluXT1cIm1pbigpXCJcbiAgICBbc3RlcF09XCJzdGVwKClcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZSgpPy5tYXhcIlxuICAvPlxuPC9kaXY+XG4iXX0=
@@ -14,9 +14,8 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { EventEmitter, TemplateRef } from '@angular/core';
17
+ import { TemplateRef } from '@angular/core';
18
18
  import { MatDialogRef } from '@angular/material/dialog';
19
- import { WattIcon } from '@energinet/watt/icon';
20
19
  import * as i0 from "@angular/core";
21
20
  export type WattModalSize = 'small' | 'medium' | 'large';
22
21
  /**
@@ -30,39 +29,32 @@ export declare class WattModalComponent {
30
29
  private modalService;
31
30
  protected dialogRef: MatDialogRef<unknown, any> | null;
32
31
  /** Title to stay fixed to top of modal. */
33
- title: string;
34
- size: WattModalSize;
32
+ title: import("@angular/core").InputSignal<string>;
33
+ size: import("@angular/core").InputSignal<WattModalSize>;
35
34
  /** Whether the modal should show a loading state. */
36
- loading: boolean;
35
+ loading: import("@angular/core").InputSignal<boolean>;
37
36
  /** Whether the modal should show a loading text for the loading state. */
38
- loadingMessage: string;
37
+ loadingMessage: import("@angular/core").InputSignal<string>;
39
38
  /** Disable ESC, close button and backdrop click as methods of closing. */
40
- disableClose: boolean;
39
+ disableClose: import("@angular/core").InputSignal<boolean>;
41
40
  /** Whether to show the close button */
42
- hideCloseButton: boolean;
41
+ hideCloseButton: import("@angular/core").InputSignal<boolean>;
43
42
  /** Disable ESC, backdrop click as methods of closing. */
44
- disableEscAndBackdropClose: boolean;
43
+ disableEscAndBackdropClose: import("@angular/core").InputSignal<boolean>;
45
44
  /** The aria-label for the close button. */
46
- closeLabel: string;
45
+ closeLabel: import("@angular/core").InputSignal<string>;
47
46
  /** Classes added to the modal panel */
48
- panelClass: string[];
49
- minHeight: string;
47
+ panelClass: import("@angular/core").InputSignal<string[]>;
48
+ minHeight: import("@angular/core").InputSignal<string>;
50
49
  /** Whether the dialog should restore focus to the previously-focused element, after it's closed. */
51
- restoreFocus: boolean;
50
+ restoreFocus: import("@angular/core").InputSignal<boolean>;
52
51
  /** Icon displayed next to the modal title. */
53
- titleIcon?: WattIcon;
52
+ titleIcon: import("@angular/core").InputSignal<"filter" | "close" | "link" | "menu" | "search" | "time" | "plus" | "minus" | "edit" | "redo" | "undo" | "remove" | "removeForever" | "cancel" | "checkmark" | "user" | "settings" | "contentCopy" | "date" | "email" | "markEmailUnread" | "openInNew" | "monetization" | "payments" | "forwardMessage" | "forward" | "moreVertical" | "logout" | "login" | "help" | "alternateEmail" | "refresh" | "language" | "pendingActions" | "toggleOn" | "toggleOff" | "personCheck" | "left" | "right" | "up" | "down" | "arrowDropDown" | "arrowRightAlt" | "arrowLeftAlt" | "danger" | "warning" | "success" | "info" | "feedback" | "save" | "upload" | "download" | "fileDownload" | "fileUpload" | "print" | "preview" | "power" | "location" | "smartDisplay" | "windmill" | "solarPower" | "priorityHigh" | "notifications" | "notificationsUnread" | "horizontalRule" | "wrongLocation" | "heatPump" | "inventory" | "globe" | "calculate" | "bar_chart_4_bars" | "view_list" | "view_stream" | "construction" | "factory" | "nest_eco_leaf" | "flash_on" | undefined>;
54
53
  /** Whether the modal should open automatically when rendered. */
55
54
  autoOpen: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
56
- /**
57
- * When modal is closed, emits `true` if it was "accepted",
58
- * otherwise emits `false`.
59
- * @ignore
60
- */
61
- closed: EventEmitter<boolean>;
62
- /** @ignore */
63
- modal: TemplateRef<Element>;
64
- /** @ignore */
65
- scrollable: boolean;
55
+ closed: import("@angular/core").OutputEmitterRef<boolean>;
56
+ modal: import("@angular/core").Signal<TemplateRef<Element> | undefined>;
57
+ scrollable: import("@angular/core").WritableSignal<boolean>;
66
58
  constructor();
67
59
  /**
68
60
  * Opens the modal. Subsequent calls are ignored while the modal is opened.
@@ -80,7 +72,7 @@ export declare class WattModalComponent {
80
72
  */
81
73
  onResize(event: ResizeObserverEntry): void;
82
74
  static ɵfac: i0.ɵɵFactoryDeclaration<WattModalComponent, never>;
83
- static ɵcmp: i0.ɵɵComponentDeclaration<WattModalComponent, "watt-modal", never, { "title": { "alias": "title"; "required": false; }; "size": { "alias": "size"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; "disableClose": { "alias": "disableClose"; "required": false; }; "hideCloseButton": { "alias": "hideCloseButton"; "required": false; }; "disableEscAndBackdropClose": { "alias": "disableEscAndBackdropClose"; "required": false; }; "closeLabel": { "alias": "closeLabel"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; }; "titleIcon": { "alias": "titleIcon"; "required": false; }; "autoOpen": { "alias": "autoOpen"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*", "watt-modal-actions"], true, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<WattModalComponent, "watt-modal", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; "isSignal": true; }; "disableClose": { "alias": "disableClose"; "required": false; "isSignal": true; }; "hideCloseButton": { "alias": "hideCloseButton"; "required": false; "isSignal": true; }; "disableEscAndBackdropClose": { "alias": "disableEscAndBackdropClose"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "titleIcon": { "alias": "titleIcon"; "required": false; "isSignal": true; }; "autoOpen": { "alias": "autoOpen"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*", "watt-modal-actions"], true, never>;
84
76
  }
85
77
  /**
86
78
  * Component for projecting buttons (actions) to the bottom of the modal.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@energinet/watt",
4
- "version": "4.1.26",
4
+ "version": "4.1.28",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
7
7
  ".": {
@@ -14,7 +14,7 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy } from '@angular/core';
17
+ import { ElementRef } from '@angular/core';
18
18
  import * as i0 from "@angular/core";
19
19
  export interface WattSliderValue {
20
20
  min: number;
@@ -23,35 +23,25 @@ export interface WattSliderValue {
23
23
  /**
24
24
  * Slider for providing a range of values.
25
25
  */
26
- export declare class WattSliderComponent implements AfterViewInit, OnDestroy, OnChanges {
27
- private _colorService;
26
+ export declare class WattSliderComponent {
27
+ private readonly colorService;
28
+ private readonly destroyRef;
28
29
  /** The lowest permitted value. */
29
- min: number;
30
+ readonly min: import("@angular/core").InputSignal<number>;
30
31
  /** The highest permitted value. */
31
- max: number;
32
+ readonly max: import("@angular/core").InputSignal<number>;
32
33
  /** Step between each value. */
33
- step: number;
34
+ readonly step: import("@angular/core").InputSignal<number>;
34
35
  /** The currently selected range value. */
35
- value: WattSliderValue;
36
- maxRange: ElementRef<HTMLInputElement>;
37
- minRange: ElementRef<HTMLInputElement>;
38
- private _maxChangeSubscription;
39
- private _minChangeSubscription;
40
- /**
41
- * Emits value whenever it changes.
42
- * @ignore
43
- */
44
- valueChange: EventEmitter<WattSliderValue>;
45
- ngAfterViewInit(): void;
46
- isElementRefsPopulated(): boolean;
47
- ngOnChanges(): void;
48
- ngOnDestroy(): void;
36
+ readonly value: import("@angular/core").InputSignal<WattSliderValue | undefined>;
37
+ readonly currentValue: import("@angular/core").Signal<WattSliderValue>;
38
+ readonly maxRange: import("@angular/core").Signal<ElementRef<HTMLInputElement>>;
39
+ readonly minRange: import("@angular/core").Signal<ElementRef<HTMLInputElement>>;
40
+ readonly valueChange: import("@angular/core").OutputEmitterRef<WattSliderValue>;
41
+ readonly sliderColor: string;
42
+ readonly rangeColor: string;
43
+ constructor();
49
44
  private updateRange;
50
- /**
51
- * Change handler for updating value.
52
- * @ignore
53
- */
54
- onChange(value: WattSliderValue): void;
55
45
  static ɵfac: i0.ɵɵFactoryDeclaration<WattSliderComponent, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<WattSliderComponent, "watt-slider", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<WattSliderComponent, "watt-slider", never, { "min": { "alias": "min"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": true; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
57
47
  }