@indice/ng-components 0.2.32 → 0.2.33
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.
- package/README.md +4 -4
- package/_styles.css +3457 -3457
- package/bundles/indice-ng-components.umd.js +3204 -3198
- package/bundles/indice-ng-components.umd.js.map +1 -1
- package/esm2015/indice-ng-components.js +6 -6
- package/esm2015/lib/controls/avatar-initials/avatar-initials.component.js +47 -47
- package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +20 -20
- package/esm2015/lib/controls/date-picker/date-picker.component.js +217 -217
- package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +62 -62
- package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +32 -32
- package/esm2015/lib/controls/list-view/list-column.component.js +19 -19
- package/esm2015/lib/controls/list-view/list-details-section.component.js +14 -14
- package/esm2015/lib/controls/list-view/list-tile.component.js +14 -14
- package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +25 -25
- package/esm2015/lib/controls/list-view/list-view.component.js +133 -133
- package/esm2015/lib/controls/pager/pager.component.js +114 -114
- package/esm2015/lib/controls/side-pane/side-pane.component.js +71 -71
- package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +25 -25
- package/esm2015/lib/controls/toaster/toaster-container.component.js +28 -28
- package/esm2015/lib/controls/toaster/toaster.component.js +29 -29
- package/esm2015/lib/controls/toggle/toggle.component.js +56 -56
- package/esm2015/lib/directives/click-outside.directive.js +181 -181
- package/esm2015/lib/directives/dynamic-component-host.directive.js +17 -17
- package/esm2015/lib/helpers/base-list.component.js +182 -182
- package/esm2015/lib/icons.js +30 -30
- package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +17 -17
- package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +98 -98
- package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +92 -92
- package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +72 -72
- package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +47 -47
- package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +73 -73
- package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +87 -87
- package/esm2015/lib/ng-components.module.js +133 -133
- package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +74 -74
- package/esm2015/lib/pages/auth/auth-renew/auth-renew.component.js +25 -25
- package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +26 -26
- package/esm2015/lib/pages/http-status/error/error.component.js +15 -15
- package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +14 -14
- package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +22 -22
- package/esm2015/lib/pipes/address.pipe.js +17 -17
- package/esm2015/lib/pipes/duration-format.pipe.js +60 -60
- package/esm2015/lib/services/component-loader/component-loader-options.class.js +8 -8
- package/esm2015/lib/services/component-loader/component-loader.class.js +192 -192
- package/esm2015/lib/services/component-loader/component-loader.factory.js +35 -35
- package/esm2015/lib/services/component-loader/content-ref.class.js +13 -13
- package/esm2015/lib/services/modal-service/modal-backdrop-component.js +44 -44
- package/esm2015/lib/services/modal-service/modal-container-component.js +117 -117
- package/esm2015/lib/services/modal-service/modal-options.class.js +31 -31
- package/esm2015/lib/services/modal-service/modal-service.js +214 -214
- package/esm2015/lib/services/modal-service/modal-styles.class.js +11 -11
- package/esm2015/lib/services/modal-service/modal.class.js +24 -24
- package/esm2015/lib/services/toaster.service.js +23 -23
- package/esm2015/lib/tokens.js +4 -4
- package/esm2015/lib/types.js +104 -104
- package/esm2015/public-api.js +53 -53
- package/fesm2015/indice-ng-components.js +2758 -2758
- package/fesm2015/indice-ng-components.js.map +1 -1
- package/indice-ng-components.d.ts +6 -6
- package/indice-ng-components.metadata.json +1 -1
- package/lib/controls/avatar-initials/avatar-initials.component.d.ts +11 -11
- package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +7 -7
- package/lib/controls/date-picker/date-picker.component.d.ts +43 -43
- package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +22 -22
- package/lib/controls/kpi-tile/kpi-tile.component.d.ts +10 -10
- package/lib/controls/list-view/list-column.component.d.ts +6 -6
- package/lib/controls/list-view/list-details-section.component.d.ts +4 -4
- package/lib/controls/list-view/list-tile.component.d.ts +4 -4
- package/lib/controls/list-view/list-view-empty-state.component.d.ts +8 -8
- package/lib/controls/list-view/list-view.component.d.ts +50 -50
- package/lib/controls/pager/pager.component.d.ts +32 -32
- package/lib/controls/side-pane/side-pane.component.d.ts +15 -15
- package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +8 -8
- package/lib/controls/toaster/toaster-container.component.d.ts +10 -10
- package/lib/controls/toaster/toaster.component.d.ts +12 -12
- package/lib/controls/toggle/toggle.component.d.ts +16 -16
- package/lib/directives/click-outside.directive.d.ts +37 -37
- package/lib/directives/dynamic-component-host.directive.d.ts +6 -6
- package/lib/helpers/base-list.component.d.ts +39 -39
- package/lib/icons.d.ts +28 -28
- package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +5 -5
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +33 -33
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +23 -23
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +21 -21
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +22 -22
- package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +24 -24
- package/lib/layouts/views/view-layout/view-layout.component.d.ts +27 -27
- package/lib/ng-components.module.d.ts +7 -7
- package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +11 -11
- package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +9 -9
- package/lib/pages/auth/logged-out/logged-out.component.d.ts +9 -9
- package/lib/pages/http-status/error/error.component.d.ts +5 -5
- package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +5 -5
- package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +8 -8
- package/lib/pipes/address.pipe.d.ts +5 -5
- package/lib/pipes/duration-format.pipe.d.ts +5 -5
- package/lib/services/component-loader/component-loader-options.class.d.ts +30 -30
- package/lib/services/component-loader/component-loader.class.d.ts +92 -92
- package/lib/services/component-loader/component-loader.factory.d.ts +21 -21
- package/lib/services/component-loader/content-ref.class.d.ts +12 -12
- package/lib/services/modal-service/modal-backdrop-component.d.ts +17 -17
- package/lib/services/modal-service/modal-container-component.d.ts +30 -30
- package/lib/services/modal-service/modal-options.class.d.ts +77 -77
- package/lib/services/modal-service/modal-service.d.ts +55 -55
- package/lib/services/modal-service/modal-styles.class.d.ts +10 -10
- package/lib/services/modal-service/modal.class.d.ts +40 -40
- package/lib/services/toaster.service.d.ts +8 -8
- package/lib/tokens.d.ts +4 -4
- package/lib/types.d.ts +124 -124
- package/modal.css +157 -157
- package/package.json +1 -1
- package/public-api.d.ts +41 -41
|
@@ -1,214 +1,214 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Inject, Injectable, Optional, RendererFactory2 } from '@angular/core';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { animationTime, cssClassNames } from './modal-styles.class';
|
|
5
|
-
import { ModalBackdropComponent } from './modal-backdrop-component';
|
|
6
|
-
import { ModalContainerComponent } from './modal-container-component';
|
|
7
|
-
import { modalConfigDefaults, ModalOptions, MODAL_CONFIG_DEFAULT_OVERRIDE } from './modal-options.class';
|
|
8
|
-
import { Modal } from './modal.class';
|
|
9
|
-
import { ComponentLoaderFactory } from '../component-loader/component-loader.factory';
|
|
10
|
-
/**
|
|
11
|
-
* A service for using modals.
|
|
12
|
-
*
|
|
13
|
-
* @public
|
|
14
|
-
*/
|
|
15
|
-
export class ModalService {
|
|
16
|
-
constructor(clf, rendererFactory, document, modalDefaultOption) {
|
|
17
|
-
this.clf = clf;
|
|
18
|
-
this.document = document;
|
|
19
|
-
this.onBeforeShow = new Subject();
|
|
20
|
-
this.onShown = new Subject();
|
|
21
|
-
this.onBeforeHide = new Subject();
|
|
22
|
-
this.onHidden = new Subject();
|
|
23
|
-
this.loaders = [];
|
|
24
|
-
this.modalsCount = 0;
|
|
25
|
-
this.initialPadding = '0px';
|
|
26
|
-
this.backdropLoader = this.clf.createLoader();
|
|
27
|
-
this.defaultConfig = Object.assign(Object.assign({}, modalConfigDefaults), modalDefaultOption);
|
|
28
|
-
this.renderer = rendererFactory.createRenderer(null, null);
|
|
29
|
-
}
|
|
30
|
-
ngOnDestroy() {
|
|
31
|
-
this.loaders.forEach((loader) => { var _a; return (_a = loader.instance) === null || _a === void 0 ? void 0 : _a.hide(); });
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Opens a new modal.
|
|
35
|
-
*
|
|
36
|
-
* @param content - `Component` or `TemplateRef` type.
|
|
37
|
-
* @param config - Specific {@link ModalOptions | options} for this modal. Global and specific options are merged.
|
|
38
|
-
* @returns An instance of {@link Modal}
|
|
39
|
-
*/
|
|
40
|
-
show(content, config) {
|
|
41
|
-
this.modalsCount++;
|
|
42
|
-
const combinedConfig = Object.assign(Object.assign({}, this.defaultConfig), config);
|
|
43
|
-
combinedConfig.id = (config === null || config === void 0 ? void 0 : config.id) || new Date().getUTCMilliseconds();
|
|
44
|
-
this.createLoaders();
|
|
45
|
-
this.addBodyPadding();
|
|
46
|
-
if (this.modalsCount === 1) {
|
|
47
|
-
this.renderer.addClass(this.document.body, cssClassNames.modalOpen);
|
|
48
|
-
}
|
|
49
|
-
this.showBackdrop(combinedConfig);
|
|
50
|
-
return this.showModal(content, combinedConfig);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Hide an active modal.
|
|
54
|
-
* @param id - Id of modal to hide. If not provided all active modals are hidden.
|
|
55
|
-
* @param result - A result to be sent to observers.
|
|
56
|
-
*/
|
|
57
|
-
hide(id, result) {
|
|
58
|
-
if (this.modalsCount === 1 || id == null) {
|
|
59
|
-
this.hideBackdrop();
|
|
60
|
-
this.revertScrollbar();
|
|
61
|
-
this.renderer.removeClass(this.document.body, cssClassNames.modalOpen);
|
|
62
|
-
}
|
|
63
|
-
this.modalsCount = this.modalsCount >= 1 && id != null ? this.modalsCount - 1 : 0;
|
|
64
|
-
setTimeout(() => {
|
|
65
|
-
this.hideModal(id, result);
|
|
66
|
-
this.removeLoaders(id);
|
|
67
|
-
},
|
|
68
|
-
//Bug
|
|
69
|
-
//Should use combined config but for the moment is not possible to pass it this parameter.
|
|
70
|
-
//If config is an instance variable then every newly opened modal will override the config
|
|
71
|
-
//resulting in opened modals to get a new configuration
|
|
72
|
-
this.defaultConfig.animated ? animationTime.backdrop : 0);
|
|
73
|
-
}
|
|
74
|
-
getActiveModal() {
|
|
75
|
-
return this.loaders[this.modalsCount - 1].instance;
|
|
76
|
-
}
|
|
77
|
-
showModal(content, combinedConfig) {
|
|
78
|
-
var _a;
|
|
79
|
-
const modalLoader = this.loaders[this.loaders.length - 1];
|
|
80
|
-
if (combinedConfig && combinedConfig.providers) {
|
|
81
|
-
combinedConfig.providers.forEach((provider) => modalLoader.provide(provider));
|
|
82
|
-
}
|
|
83
|
-
const modal = new Modal();
|
|
84
|
-
const modalContainerRef = modalLoader
|
|
85
|
-
.provide({ provide: ModalOptions, useValue: combinedConfig })
|
|
86
|
-
.provide({ provide: Modal, useValue: modal })
|
|
87
|
-
.attach(ModalContainerComponent)
|
|
88
|
-
.to('body');
|
|
89
|
-
modal.setClass = (newClass) => {
|
|
90
|
-
if (modalContainerRef.instance) {
|
|
91
|
-
modalContainerRef.instance.config.class = newClass;
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
modal.onBeforeHide = new Subject();
|
|
95
|
-
modal.onHidden = new Subject();
|
|
96
|
-
this.copyEvent(modalLoader.onBeforeHide, modal.onBeforeHide);
|
|
97
|
-
this.copyEvent(modalLoader.onHidden, modal.onHidden);
|
|
98
|
-
modalContainerRef.show({
|
|
99
|
-
content,
|
|
100
|
-
animationsEnabled: combinedConfig.animated,
|
|
101
|
-
initialState: combinedConfig.initialState,
|
|
102
|
-
modalService: this,
|
|
103
|
-
id: combinedConfig.id,
|
|
104
|
-
});
|
|
105
|
-
if (modalContainerRef.instance) {
|
|
106
|
-
modalContainerRef.instance.level = this.modalsCount;
|
|
107
|
-
modal.content = modalLoader.getInnerComponent();
|
|
108
|
-
modal.id = (_a = modalContainerRef.instance.config) === null || _a === void 0 ? void 0 : _a.id;
|
|
109
|
-
modal.hide = (res) => { var _a; return (_a = modalContainerRef.instance) === null || _a === void 0 ? void 0 : _a.hide(res); };
|
|
110
|
-
}
|
|
111
|
-
return modal;
|
|
112
|
-
}
|
|
113
|
-
hideModal(id, result) {
|
|
114
|
-
if (id != null) {
|
|
115
|
-
const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
|
|
116
|
-
const modalLoader = this.loaders[indexToRemove];
|
|
117
|
-
if (modalLoader) {
|
|
118
|
-
modalLoader.hide(id, result);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
this.loaders.forEach((loader) => {
|
|
123
|
-
if (loader.instance) {
|
|
124
|
-
loader.hide(loader.instance.config.id);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
showBackdrop(combinedConfig) {
|
|
130
|
-
const isBackdropEnabled = combinedConfig.backdrop === true || combinedConfig.backdrop === 'static';
|
|
131
|
-
const isBackdropInDOM = this.backdropRef != null;
|
|
132
|
-
if (isBackdropEnabled && !isBackdropInDOM) {
|
|
133
|
-
this.backdropLoader
|
|
134
|
-
.attach(ModalBackdropComponent)
|
|
135
|
-
.to('body')
|
|
136
|
-
.show({ animationsEnabled: combinedConfig.animated, backdropLoader: this.backdropLoader });
|
|
137
|
-
this.backdropRef = this.backdropLoader.componentRef;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
hideBackdrop() {
|
|
141
|
-
if (!this.backdropRef) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
this.backdropRef.instance.hide();
|
|
145
|
-
this.backdropRef = void 0;
|
|
146
|
-
}
|
|
147
|
-
removeLoaders(id) {
|
|
148
|
-
if (id != null) {
|
|
149
|
-
const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
|
|
150
|
-
if (indexToRemove >= 0) {
|
|
151
|
-
this.loaders.splice(indexToRemove, 1);
|
|
152
|
-
this.loaders.forEach((loader, i) => {
|
|
153
|
-
if (loader.instance) {
|
|
154
|
-
loader.instance.level = i + 1;
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
this.loaders.splice(0, this.loaders.length);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
addBodyPadding() {
|
|
164
|
-
if (this.modalsCount === 1) {
|
|
165
|
-
const width = this.getScrollbarWidth();
|
|
166
|
-
if (this.isScrollBarPresent(width)) {
|
|
167
|
-
this.initialPadding = this.document.body.style.paddingRight;
|
|
168
|
-
const actualPadding = parseFloat(window.getComputedStyle(this.document.body).paddingRight);
|
|
169
|
-
this.document.body.style.paddingRight = `${actualPadding + width}px`;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
revertScrollbar() {
|
|
174
|
-
this.document.body.style.paddingRight = this.initialPadding;
|
|
175
|
-
}
|
|
176
|
-
getScrollbarWidth() {
|
|
177
|
-
const measurer = this.document.createElement('div');
|
|
178
|
-
measurer.className = 'modal-scrollbar-measure';
|
|
179
|
-
const body = this.document.body;
|
|
180
|
-
body.appendChild(measurer);
|
|
181
|
-
const width = measurer.getBoundingClientRect().width - measurer.clientWidth;
|
|
182
|
-
body.removeChild(measurer);
|
|
183
|
-
return width;
|
|
184
|
-
}
|
|
185
|
-
isScrollBarPresent(scrollbarWidth) {
|
|
186
|
-
const rect = this.document.body.getBoundingClientRect();
|
|
187
|
-
const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);
|
|
188
|
-
const uncertainty = 0.1 * scrollbarWidth;
|
|
189
|
-
return bodyToViewportGap >= scrollbarWidth - uncertainty;
|
|
190
|
-
}
|
|
191
|
-
createLoaders() {
|
|
192
|
-
const loader = this.clf.createLoader();
|
|
193
|
-
this.copyEvent(loader.onBeforeShow, this.onBeforeShow);
|
|
194
|
-
this.copyEvent(loader.onShown, this.onShown);
|
|
195
|
-
this.copyEvent(loader.onBeforeHide, this.onBeforeHide);
|
|
196
|
-
this.copyEvent(loader.onHidden, this.onHidden);
|
|
197
|
-
this.loaders.push(loader);
|
|
198
|
-
}
|
|
199
|
-
copyEvent(from, to) {
|
|
200
|
-
from.subscribe((data) => {
|
|
201
|
-
to.next(data);
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
ModalService.decorators = [
|
|
206
|
-
{ type: Injectable }
|
|
207
|
-
];
|
|
208
|
-
ModalService.ctorParameters = () => [
|
|
209
|
-
{ type: ComponentLoaderFactory },
|
|
210
|
-
{ type: RendererFactory2 },
|
|
211
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
212
|
-
{ type: ModalOptions, decorators: [{ type: Optional }, { type: Inject, args: [MODAL_CONFIG_DEFAULT_OVERRIDE,] }] }
|
|
213
|
-
];
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9tb2RhbC1zZXJ2aWNlL21vZGFsLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQWEsZ0JBQWdCLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQWF2QixZQUNVLEdBQTJCLEVBQ25DLGVBQWlDLEVBQ1AsUUFBYSxFQUNZLGtCQUFnQztRQUgzRSxRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUVULGFBQVEsR0FBUixRQUFRLENBQUs7UUFmakMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFB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QUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sU0FBUyxDQUFDLElBQXNCLEVBQUUsRUFBb0I7UUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUEzTkYsVUFBVTs7O1lBUEYsc0JBQXNCO1lBUjRDLGdCQUFnQjs0Q0FnQ3RGLE1BQU0sU0FBQyxRQUFRO1lBMUJVLFlBQVksdUJBMkJyQyxRQUFRLFlBQUksTUFBTSxTQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIgfSBmcm9tICcuLi9jb21wb25lbnQtbG9hZGVyL2NvbXBvbmVudC1sb2FkZXIuY2xhc3MnO1xuaW1wb3J0IHsgYW5pbWF0aW9uVGltZSwgY3NzQ2xhc3NOYW1lcyB9IGZyb20gJy4vbW9kYWwtc3R5bGVzLmNsYXNzJztcbmltcG9ydCB7IE1vZGFsQmFja2Ryb3BDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLWJhY2tkcm9wLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBtb2RhbENvbmZpZ0RlZmF1bHRzLCBNb2RhbE9wdGlvbnMsIE1PREFMX0NPTkZJR19ERUZBVUxUX09WRVJSSURFIH0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLmNsYXNzJztcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnLi9tb2RhbC5jbGFzcyc7XG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXJGYWN0b3J5IH0gZnJvbSAnLi4vY29tcG9uZW50LWxvYWRlci9jb21wb25lbnQtbG9hZGVyLmZhY3RvcnknO1xuXG4vKipcbiAqIEEgc2VydmljZSBmb3IgdXNpbmcgbW9kYWxzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgb25CZWZvcmVTaG93ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblNob3duID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvbkJlZm9yZUhpZGUgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uSGlkZGVuID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIGJhY2tkcm9wUmVmPzogQ29tcG9uZW50UmVmPE1vZGFsQmFja2Ryb3BDb21wb25lbnQ+O1xuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IE1vZGFsT3B0aW9ucztcbiAgcHJpdmF0ZSBiYWNrZHJvcExvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQmFja2Ryb3BDb21wb25lbnQ+O1xuICBwcml2YXRlIGxvYWRlcnM6IENvbXBvbmVudExvYWRlcjxNb2RhbENvbnRhaW5lckNvbXBvbmVudD5bXSA9IFtdO1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIHByaXZhdGUgbW9kYWxzQ291bnQgPSAwO1xuICBwcml2YXRlIGluaXRpYWxQYWRkaW5nID0gJzBweCc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2xmOiBDb21wb25lbnRMb2FkZXJGYWN0b3J5LFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNT0RBTF9DT05GSUdfREVGQVVMVF9PVkVSUklERSkgbW9kYWxEZWZhdWx0T3B0aW9uOiBNb2RhbE9wdGlvbnNcbiAgKSB7XG4gICAgdGhpcy5iYWNrZHJvcExvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PigpO1xuICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4ubW9kYWxDb25maWdEZWZhdWx0cywgLi4ubW9kYWxEZWZhdWx0T3B0aW9uIH07XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGVycy5mb3JFYWNoKChsb2FkZXIpID0+IGxvYWRlci5pbnN0YW5jZT8uaGlkZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIG5ldyBtb2RhbC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBgQ29tcG9uZW50YCBvciBgVGVtcGxhdGVSZWZgIHR5cGUuXG4gICAqIEBwYXJhbSBjb25maWcgLSBTcGVjaWZpYyB7QGxpbmsgTW9kYWxPcHRpb25zIHwgb3B0aW9uc30gIGZvciB0aGlzIG1vZGFsLiBHbG9iYWwgYW5kIHNwZWNpZmljIG9wdGlvbnMgYXJlIG1lcmdlZC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIE1vZGFsfVxuICAgKi9cbiAgcHVibGljIHNob3c8VD4oY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSwgY29uZmlnPzogTW9kYWxPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5tb2RhbHNDb3VudCsrO1xuICAgIGNvbnN0IGNvbWJpbmVkQ29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xuICAgIGNvbWJpbmVkQ29uZmlnLmlkID0gY29uZmlnPy5pZCB8fCBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICAgIHRoaXMuY3JlYXRlTG9hZGVycygpO1xuXG4gICAgdGhpcy5hZGRCb2R5UGFkZGluZygpO1xuICAgIGlmICh0aGlzLm1vZGFsc0NvdW50ID09PSAxKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3NOYW1lcy5tb2RhbE9wZW4pO1xuICAgIH1cbiAgICB0aGlzLnNob3dCYWNrZHJvcChjb21iaW5lZENvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMuc2hvd01vZGFsPFQ+KGNvbnRlbnQsIGNvbWJpbmVkQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGFuIGFjdGl2ZSBtb2RhbC5cbiAgICogQHBhcmFtIGlkIC0gSWQgb2YgbW9kYWwgdG8gaGlkZS4gSWYgbm90IHByb3ZpZGVkIGFsbCBhY3RpdmUgbW9kYWxzIGFyZSBoaWRkZW4uXG4gICAqIEBwYXJhbSByZXN1bHQgLSBBIHJlc3VsdCB0byBiZSBzZW50IHRvIG9ic2VydmVycy5cbiAgICovXG4gIHB1YmxpYyBoaWRlKGlkPzogbnVtYmVyIHwgc3RyaW5nLCByZXN1bHQ/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSB8fCBpZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmhpZGVCYWNrZHJvcCgpO1xuICAgICAgdGhpcy5yZXZlcnRTY3JvbGxiYXIoKTtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCBjc3NDbGFzc05hbWVzLm1vZGFsT3Blbik7XG4gICAgfVxuICAgIHRoaXMubW9kYWxzQ291bnQgPSB0aGlzLm1vZGFsc0NvdW50ID49IDEgJiYgaWQgIT0gbnVsbCA/IHRoaXMubW9kYWxzQ291bnQgLSAxIDogMDtcbiAgICBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmhpZGVNb2RhbChpZCwgcmVzdWx0KTtcbiAgICAgICAgdGhpcy5yZW1vdmVMb2FkZXJzKGlkKTtcbiAgICAgIH0sXG4gICAgICAvL0J1Z1xuICAgICAgLy9TaG91bGQgdXNlIGNvbWJpbmVkIGNvbmZpZyBidXQgZm9yIHRoZSBtb21lbnQgaXMgbm90IHBvc3NpYmxlIHRvIHBhc3MgaXQgdGhpcyBwYXJhbWV0ZXIuXG4gICAgICAvL0lmIGNvbmZpZyBpcyBhbiBpbnN0YW5jZSB2YXJpYWJsZSB0aGVuIGV2ZXJ5IG5ld2x5IG9wZW5lZCBtb2RhbCB3aWxsIG92ZXJyaWRlIHRoZSBjb25maWdcbiAgICAgIC8vcmVzdWx0aW5nIGluIG9wZW5lZCBtb2RhbHMgdG8gZ2V0IGEgbmV3IGNvbmZpZ3VyYXRpb25cbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5hbmltYXRlZCA/IGFuaW1hdGlvblRpbWUuYmFja2Ryb3AgOiAwXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY3RpdmVNb2RhbCgpOiBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyc1t0aGlzLm1vZGFsc0NvdW50IC0gMV0uaW5zdGFuY2UgYXMgTW9kYWxDb250YWluZXJDb21wb25lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNob3dNb2RhbDxUPihjb250ZW50OiBhbnksIGNvbWJpbmVkQ29uZmlnOiBNb2RhbE9wdGlvbnMpOiBNb2RhbDxUPiB7XG4gICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbdGhpcy5sb2FkZXJzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChjb21iaW5lZENvbmZpZyAmJiBjb21iaW5lZENvbmZpZy5wcm92aWRlcnMpIHtcbiAgICAgIGNvbWJpbmVkQ29uZmlnLnByb3ZpZGVycy5mb3JFYWNoKChwcm92aWRlcikgPT4gbW9kYWxMb2FkZXIucHJvdmlkZShwcm92aWRlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsID0gbmV3IE1vZGFsPGFueT4oKTtcbiAgICBjb25zdCBtb2RhbENvbnRhaW5lclJlZiA9IG1vZGFsTG9hZGVyXG4gICAgICAucHJvdmlkZSh7IHByb3ZpZGU6IE1vZGFsT3B0aW9ucywgdXNlVmFsdWU6IGNvbWJpbmVkQ29uZmlnIH0pXG4gICAgICAucHJvdmlkZSh7IHByb3ZpZGU6IE1vZGFsLCB1c2VWYWx1ZTogbW9kYWwgfSlcbiAgICAgIC5hdHRhY2goTW9kYWxDb250YWluZXJDb21wb25lbnQpXG4gICAgICAudG8oJ2JvZHknKTtcblxuICAgIG1vZGFsLnNldENsYXNzID0gKG5ld0NsYXNzOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZSkge1xuICAgICAgICBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWcuY2xhc3MgPSBuZXdDbGFzcztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbW9kYWwub25CZWZvcmVIaWRlID0gbmV3IFN1YmplY3QoKTtcbiAgICBtb2RhbC5vbkhpZGRlbiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdGhpcy5jb3B5RXZlbnQobW9kYWxMb2FkZXIub25CZWZvcmVIaWRlLCBtb2RhbC5vbkJlZm9yZUhpZGUpO1xuICAgIHRoaXMuY29weUV2ZW50KG1vZGFsTG9hZGVyLm9uSGlkZGVuLCBtb2RhbC5vbkhpZGRlbik7XG4gICAgbW9kYWxDb250YWluZXJSZWYuc2hvdyh7XG4gICAgICBjb250ZW50LFxuICAgICAgYW5pbWF0aW9uc0VuYWJsZWQ6IGNvbWJpbmVkQ29uZmlnLmFuaW1hdGVkLFxuICAgICAgaW5pdGlhbFN0YXRlOiBjb21iaW5lZENvbmZpZy5pbml0aWFsU3RhdGUsXG4gICAgICBtb2RhbFNlcnZpY2U6IHRoaXMsXG4gICAgICBpZDogY29tYmluZWRDb25maWcuaWQsXG4gICAgfSk7XG5cbiAgICBpZiAobW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UpIHtcbiAgICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmxldmVsID0gdGhpcy5tb2RhbHNDb3VudDtcbiAgICAgIG1vZGFsLmNvbnRlbnQgPSBtb2RhbExvYWRlci5nZXRJbm5lckNvbXBvbmVudCgpO1xuICAgICAgbW9kYWwuaWQgPSBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWc/LmlkO1xuICAgICAgbW9kYWwuaGlkZSA9IChyZXMpID0+IG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlPy5oaWRlKHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGFsO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlTW9kYWwoaWQ/OiBudW1iZXIgfCBzdHJpbmcsIHJlc3VsdD86IGFueSk6IHZvaWQge1xuICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpbmRleFRvUmVtb3ZlID0gdGhpcy5sb2FkZXJzLmZpbmRJbmRleCgobG9hZGVyKSA9PiBsb2FkZXIuaW5zdGFuY2U/LmNvbmZpZy5pZCA9PT0gaWQpO1xuICAgICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbaW5kZXhUb1JlbW92ZV07XG4gICAgICBpZiAobW9kYWxMb2FkZXIpIHtcbiAgICAgICAgbW9kYWxMb2FkZXIuaGlkZShpZCwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PikgPT4ge1xuICAgICAgICBpZiAobG9hZGVyLmluc3RhbmNlKSB7XG4gICAgICAgICAgbG9hZGVyLmhpZGUobG9hZGVyLmluc3RhbmNlLmNvbmZpZy5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd0JhY2tkcm9wKGNvbWJpbmVkQ29uZmlnOiBNb2RhbE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBpc0JhY2tkcm9wRW5hYmxlZCA9IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSB0cnVlIHx8IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSAnc3RhdGljJztcbiAgICBjb25zdCBpc0JhY2tkcm9wSW5ET00gPSB0aGlzLmJhY2tkcm9wUmVmICE9IG51bGw7XG4gICAgaWYgKGlzQmFja2Ryb3BFbmFibGVkICYmICFpc0JhY2tkcm9wSW5ET00pIHtcbiAgICAgIHRoaXMuYmFja2Ryb3BMb2FkZXJcbiAgICAgICAgLmF0dGFjaChNb2RhbEJhY2tkcm9wQ29tcG9uZW50KVxuICAgICAgICAudG8oJ2JvZHknKVxuICAgICAgICAuc2hvdyh7IGFuaW1hdGlvbnNFbmFibGVkOiBjb21iaW5lZENvbmZpZy5hbmltYXRlZCwgYmFja2Ryb3BMb2FkZXI6IHRoaXMuYmFja2Ryb3BMb2FkZXIgfSk7XG4gICAgICB0aGlzLmJhY2tkcm9wUmVmID0gdGhpcy5iYWNrZHJvcExvYWRlci5jb21wb25lbnRSZWY7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJhY2tkcm9wUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYmFja2Ryb3BSZWYuaW5zdGFuY2UuaGlkZSgpO1xuICAgIHRoaXMuYmFja2Ryb3BSZWYgPSB2b2lkIDA7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxvYWRlcnMoaWQ/OiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgaW5kZXhUb1JlbW92ZSA9IHRoaXMubG9hZGVycy5maW5kSW5kZXgoKGxvYWRlcikgPT4gbG9hZGVyLmluc3RhbmNlPy5jb25maWcuaWQgPT09IGlkKTtcbiAgICAgIGlmIChpbmRleFRvUmVtb3ZlID49IDApIHtcbiAgICAgICAgdGhpcy5sb2FkZXJzLnNwbGljZShpbmRleFRvUmVtb3ZlLCAxKTtcbiAgICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PiwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgaWYgKGxvYWRlci5pbnN0YW5jZSkge1xuICAgICAgICAgICAgbG9hZGVyLmluc3RhbmNlLmxldmVsID0gaSArIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkZXJzLnNwbGljZSgwLCB0aGlzLmxvYWRlcnMubGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEJvZHlQYWRkaW5nKCkge1xuICAgIGlmICh0aGlzLm1vZGFsc0NvdW50ID09PSAxKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGgoKTtcbiAgICAgIGlmICh0aGlzLmlzU2Nyb2xsQmFyUHJlc2VudCh3aWR0aCkpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsUGFkZGluZyA9IHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ7XG4gICAgICAgIGNvbnN0IGFjdHVhbFBhZGRpbmcgPSBwYXJzZUZsb2F0KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSkucGFkZGluZ1JpZ2h0KTtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke2FjdHVhbFBhZGRpbmcgKyB3aWR0aH1weGA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXZlcnRTY3JvbGxiYXIoKSB7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IHRoaXMuaW5pdGlhbFBhZGRpbmc7XG4gIH1cblxuICBwcml2YXRlIGdldFNjcm9sbGJhcldpZHRoKCk6IG51bWJlciB7XG4gICAgY29uc3QgbWVhc3VyZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lYXN1cmVyLmNsYXNzTmFtZSA9ICdtb2RhbC1zY3JvbGxiYXItbWVhc3VyZSc7XG5cbiAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgIGJvZHkuYXBwZW5kQ2hpbGQobWVhc3VyZXIpO1xuICAgIGNvbnN0IHdpZHRoID0gbWVhc3VyZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLSBtZWFzdXJlci5jbGllbnRXaWR0aDtcbiAgICBib2R5LnJlbW92ZUNoaWxkKG1lYXN1cmVyKTtcblxuICAgIHJldHVybiB3aWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgaXNTY3JvbGxCYXJQcmVzZW50KHNjcm9sbGJhcldpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGJvZHlUb1ZpZXdwb3J0R2FwID0gd2luZG93LmlubmVyV2lkdGggLSAocmVjdC5sZWZ0ICsgcmVjdC5yaWdodCk7XG4gICAgY29uc3QgdW5jZXJ0YWludHkgPSAwLjEgKiBzY3JvbGxiYXJXaWR0aDtcbiAgICByZXR1cm4gYm9keVRvVmlld3BvcnRHYXAgPj0gc2Nyb2xsYmFyV2lkdGggLSB1bmNlcnRhaW50eTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTG9hZGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmNsZi5jcmVhdGVMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+KCk7XG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uQmVmb3JlU2hvdywgdGhpcy5vbkJlZm9yZVNob3cpO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vblNob3duLCB0aGlzLm9uU2hvd24pO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkJlZm9yZUhpZGUsIHRoaXMub25CZWZvcmVIaWRlKTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25IaWRkZW4sIHRoaXMub25IaWRkZW4pO1xuICAgIHRoaXMubG9hZGVycy5wdXNoKGxvYWRlcik7XG4gIH1cblxuICBwcml2YXRlIGNvcHlFdmVudChmcm9tOiBTdWJqZWN0PHVua25vd24+LCB0bzogU3ViamVjdDx1bmtub3duPikge1xuICAgIGZyb20uc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0by5uZXh0KGRhdGEpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable, Optional, RendererFactory2 } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { animationTime, cssClassNames } from './modal-styles.class';
|
|
5
|
+
import { ModalBackdropComponent } from './modal-backdrop-component';
|
|
6
|
+
import { ModalContainerComponent } from './modal-container-component';
|
|
7
|
+
import { modalConfigDefaults, ModalOptions, MODAL_CONFIG_DEFAULT_OVERRIDE } from './modal-options.class';
|
|
8
|
+
import { Modal } from './modal.class';
|
|
9
|
+
import { ComponentLoaderFactory } from '../component-loader/component-loader.factory';
|
|
10
|
+
/**
|
|
11
|
+
* A service for using modals.
|
|
12
|
+
*
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export class ModalService {
|
|
16
|
+
constructor(clf, rendererFactory, document, modalDefaultOption) {
|
|
17
|
+
this.clf = clf;
|
|
18
|
+
this.document = document;
|
|
19
|
+
this.onBeforeShow = new Subject();
|
|
20
|
+
this.onShown = new Subject();
|
|
21
|
+
this.onBeforeHide = new Subject();
|
|
22
|
+
this.onHidden = new Subject();
|
|
23
|
+
this.loaders = [];
|
|
24
|
+
this.modalsCount = 0;
|
|
25
|
+
this.initialPadding = '0px';
|
|
26
|
+
this.backdropLoader = this.clf.createLoader();
|
|
27
|
+
this.defaultConfig = Object.assign(Object.assign({}, modalConfigDefaults), modalDefaultOption);
|
|
28
|
+
this.renderer = rendererFactory.createRenderer(null, null);
|
|
29
|
+
}
|
|
30
|
+
ngOnDestroy() {
|
|
31
|
+
this.loaders.forEach((loader) => { var _a; return (_a = loader.instance) === null || _a === void 0 ? void 0 : _a.hide(); });
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Opens a new modal.
|
|
35
|
+
*
|
|
36
|
+
* @param content - `Component` or `TemplateRef` type.
|
|
37
|
+
* @param config - Specific {@link ModalOptions | options} for this modal. Global and specific options are merged.
|
|
38
|
+
* @returns An instance of {@link Modal}
|
|
39
|
+
*/
|
|
40
|
+
show(content, config) {
|
|
41
|
+
this.modalsCount++;
|
|
42
|
+
const combinedConfig = Object.assign(Object.assign({}, this.defaultConfig), config);
|
|
43
|
+
combinedConfig.id = (config === null || config === void 0 ? void 0 : config.id) || new Date().getUTCMilliseconds();
|
|
44
|
+
this.createLoaders();
|
|
45
|
+
this.addBodyPadding();
|
|
46
|
+
if (this.modalsCount === 1) {
|
|
47
|
+
this.renderer.addClass(this.document.body, cssClassNames.modalOpen);
|
|
48
|
+
}
|
|
49
|
+
this.showBackdrop(combinedConfig);
|
|
50
|
+
return this.showModal(content, combinedConfig);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Hide an active modal.
|
|
54
|
+
* @param id - Id of modal to hide. If not provided all active modals are hidden.
|
|
55
|
+
* @param result - A result to be sent to observers.
|
|
56
|
+
*/
|
|
57
|
+
hide(id, result) {
|
|
58
|
+
if (this.modalsCount === 1 || id == null) {
|
|
59
|
+
this.hideBackdrop();
|
|
60
|
+
this.revertScrollbar();
|
|
61
|
+
this.renderer.removeClass(this.document.body, cssClassNames.modalOpen);
|
|
62
|
+
}
|
|
63
|
+
this.modalsCount = this.modalsCount >= 1 && id != null ? this.modalsCount - 1 : 0;
|
|
64
|
+
setTimeout(() => {
|
|
65
|
+
this.hideModal(id, result);
|
|
66
|
+
this.removeLoaders(id);
|
|
67
|
+
},
|
|
68
|
+
//Bug
|
|
69
|
+
//Should use combined config but for the moment is not possible to pass it this parameter.
|
|
70
|
+
//If config is an instance variable then every newly opened modal will override the config
|
|
71
|
+
//resulting in opened modals to get a new configuration
|
|
72
|
+
this.defaultConfig.animated ? animationTime.backdrop : 0);
|
|
73
|
+
}
|
|
74
|
+
getActiveModal() {
|
|
75
|
+
return this.loaders[this.modalsCount - 1].instance;
|
|
76
|
+
}
|
|
77
|
+
showModal(content, combinedConfig) {
|
|
78
|
+
var _a;
|
|
79
|
+
const modalLoader = this.loaders[this.loaders.length - 1];
|
|
80
|
+
if (combinedConfig && combinedConfig.providers) {
|
|
81
|
+
combinedConfig.providers.forEach((provider) => modalLoader.provide(provider));
|
|
82
|
+
}
|
|
83
|
+
const modal = new Modal();
|
|
84
|
+
const modalContainerRef = modalLoader
|
|
85
|
+
.provide({ provide: ModalOptions, useValue: combinedConfig })
|
|
86
|
+
.provide({ provide: Modal, useValue: modal })
|
|
87
|
+
.attach(ModalContainerComponent)
|
|
88
|
+
.to('body');
|
|
89
|
+
modal.setClass = (newClass) => {
|
|
90
|
+
if (modalContainerRef.instance) {
|
|
91
|
+
modalContainerRef.instance.config.class = newClass;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
modal.onBeforeHide = new Subject();
|
|
95
|
+
modal.onHidden = new Subject();
|
|
96
|
+
this.copyEvent(modalLoader.onBeforeHide, modal.onBeforeHide);
|
|
97
|
+
this.copyEvent(modalLoader.onHidden, modal.onHidden);
|
|
98
|
+
modalContainerRef.show({
|
|
99
|
+
content,
|
|
100
|
+
animationsEnabled: combinedConfig.animated,
|
|
101
|
+
initialState: combinedConfig.initialState,
|
|
102
|
+
modalService: this,
|
|
103
|
+
id: combinedConfig.id,
|
|
104
|
+
});
|
|
105
|
+
if (modalContainerRef.instance) {
|
|
106
|
+
modalContainerRef.instance.level = this.modalsCount;
|
|
107
|
+
modal.content = modalLoader.getInnerComponent();
|
|
108
|
+
modal.id = (_a = modalContainerRef.instance.config) === null || _a === void 0 ? void 0 : _a.id;
|
|
109
|
+
modal.hide = (res) => { var _a; return (_a = modalContainerRef.instance) === null || _a === void 0 ? void 0 : _a.hide(res); };
|
|
110
|
+
}
|
|
111
|
+
return modal;
|
|
112
|
+
}
|
|
113
|
+
hideModal(id, result) {
|
|
114
|
+
if (id != null) {
|
|
115
|
+
const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
|
|
116
|
+
const modalLoader = this.loaders[indexToRemove];
|
|
117
|
+
if (modalLoader) {
|
|
118
|
+
modalLoader.hide(id, result);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
this.loaders.forEach((loader) => {
|
|
123
|
+
if (loader.instance) {
|
|
124
|
+
loader.hide(loader.instance.config.id);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
showBackdrop(combinedConfig) {
|
|
130
|
+
const isBackdropEnabled = combinedConfig.backdrop === true || combinedConfig.backdrop === 'static';
|
|
131
|
+
const isBackdropInDOM = this.backdropRef != null;
|
|
132
|
+
if (isBackdropEnabled && !isBackdropInDOM) {
|
|
133
|
+
this.backdropLoader
|
|
134
|
+
.attach(ModalBackdropComponent)
|
|
135
|
+
.to('body')
|
|
136
|
+
.show({ animationsEnabled: combinedConfig.animated, backdropLoader: this.backdropLoader });
|
|
137
|
+
this.backdropRef = this.backdropLoader.componentRef;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
hideBackdrop() {
|
|
141
|
+
if (!this.backdropRef) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
this.backdropRef.instance.hide();
|
|
145
|
+
this.backdropRef = void 0;
|
|
146
|
+
}
|
|
147
|
+
removeLoaders(id) {
|
|
148
|
+
if (id != null) {
|
|
149
|
+
const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
|
|
150
|
+
if (indexToRemove >= 0) {
|
|
151
|
+
this.loaders.splice(indexToRemove, 1);
|
|
152
|
+
this.loaders.forEach((loader, i) => {
|
|
153
|
+
if (loader.instance) {
|
|
154
|
+
loader.instance.level = i + 1;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this.loaders.splice(0, this.loaders.length);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
addBodyPadding() {
|
|
164
|
+
if (this.modalsCount === 1) {
|
|
165
|
+
const width = this.getScrollbarWidth();
|
|
166
|
+
if (this.isScrollBarPresent(width)) {
|
|
167
|
+
this.initialPadding = this.document.body.style.paddingRight;
|
|
168
|
+
const actualPadding = parseFloat(window.getComputedStyle(this.document.body).paddingRight);
|
|
169
|
+
this.document.body.style.paddingRight = `${actualPadding + width}px`;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
revertScrollbar() {
|
|
174
|
+
this.document.body.style.paddingRight = this.initialPadding;
|
|
175
|
+
}
|
|
176
|
+
getScrollbarWidth() {
|
|
177
|
+
const measurer = this.document.createElement('div');
|
|
178
|
+
measurer.className = 'modal-scrollbar-measure';
|
|
179
|
+
const body = this.document.body;
|
|
180
|
+
body.appendChild(measurer);
|
|
181
|
+
const width = measurer.getBoundingClientRect().width - measurer.clientWidth;
|
|
182
|
+
body.removeChild(measurer);
|
|
183
|
+
return width;
|
|
184
|
+
}
|
|
185
|
+
isScrollBarPresent(scrollbarWidth) {
|
|
186
|
+
const rect = this.document.body.getBoundingClientRect();
|
|
187
|
+
const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);
|
|
188
|
+
const uncertainty = 0.1 * scrollbarWidth;
|
|
189
|
+
return bodyToViewportGap >= scrollbarWidth - uncertainty;
|
|
190
|
+
}
|
|
191
|
+
createLoaders() {
|
|
192
|
+
const loader = this.clf.createLoader();
|
|
193
|
+
this.copyEvent(loader.onBeforeShow, this.onBeforeShow);
|
|
194
|
+
this.copyEvent(loader.onShown, this.onShown);
|
|
195
|
+
this.copyEvent(loader.onBeforeHide, this.onBeforeHide);
|
|
196
|
+
this.copyEvent(loader.onHidden, this.onHidden);
|
|
197
|
+
this.loaders.push(loader);
|
|
198
|
+
}
|
|
199
|
+
copyEvent(from, to) {
|
|
200
|
+
from.subscribe((data) => {
|
|
201
|
+
to.next(data);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
ModalService.decorators = [
|
|
206
|
+
{ type: Injectable }
|
|
207
|
+
];
|
|
208
|
+
ModalService.ctorParameters = () => [
|
|
209
|
+
{ type: ComponentLoaderFactory },
|
|
210
|
+
{ type: RendererFactory2 },
|
|
211
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
212
|
+
{ type: ModalOptions, decorators: [{ type: Optional }, { type: Inject, args: [MODAL_CONFIG_DEFAULT_OVERRIDE,] }] }
|
|
213
|
+
];
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9tb2RhbC1zZXJ2aWNlL21vZGFsLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQWEsZ0JBQWdCLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQWF2QixZQUNVLEdBQTJCLEVBQ25DLGVBQWlDLEVBQ1AsUUFBYSxFQUNZLGtCQUFnQztRQUgzRSxRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUVULGFBQVEsR0FBUixRQUFRLENBQUs7UUFmakMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFB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QUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sU0FBUyxDQUFDLElBQXNCLEVBQUUsRUFBb0I7UUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUEzTkYsVUFBVTs7O1lBUEYsc0JBQXNCO1lBUjRDLGdCQUFnQjs0Q0FnQ3RGLE1BQU0sU0FBQyxRQUFRO1lBMUJVLFlBQVksdUJBMkJyQyxRQUFRLFlBQUksTUFBTSxTQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIgfSBmcm9tICcuLi9jb21wb25lbnQtbG9hZGVyL2NvbXBvbmVudC1sb2FkZXIuY2xhc3MnO1xyXG5pbXBvcnQgeyBhbmltYXRpb25UaW1lLCBjc3NDbGFzc05hbWVzIH0gZnJvbSAnLi9tb2RhbC1zdHlsZXMuY2xhc3MnO1xyXG5pbXBvcnQgeyBNb2RhbEJhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC1iYWNrZHJvcC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IG1vZGFsQ29uZmlnRGVmYXVsdHMsIE1vZGFsT3B0aW9ucywgTU9EQUxfQ09ORklHX0RFRkFVTFRfT1ZFUlJJREUgfSBmcm9tICcuL21vZGFsLW9wdGlvbnMuY2xhc3MnO1xyXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJy4vbW9kYWwuY2xhc3MnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXJGYWN0b3J5IH0gZnJvbSAnLi4vY29tcG9uZW50LWxvYWRlci9jb21wb25lbnQtbG9hZGVyLmZhY3RvcnknO1xyXG5cclxuLyoqXHJcbiAqIEEgc2VydmljZSBmb3IgdXNpbmcgbW9kYWxzLlxyXG4gKlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgb25CZWZvcmVTaG93ID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIG9uU2hvd24gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgb25CZWZvcmVIaWRlID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIG9uSGlkZGVuID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBiYWNrZHJvcFJlZj86IENvbXBvbmVudFJlZjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PjtcclxuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IE1vZGFsT3B0aW9ucztcclxuICBwcml2YXRlIGJhY2tkcm9wTG9hZGVyOiBDb21wb25lbnRMb2FkZXI8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBsb2FkZXJzOiBDb21wb25lbnRMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+W10gPSBbXTtcclxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcbiAgcHJpdmF0ZSBtb2RhbHNDb3VudCA9IDA7XHJcbiAgcHJpdmF0ZSBpbml0aWFsUGFkZGluZyA9ICcwcHgnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjbGY6IENvbXBvbmVudExvYWRlckZhY3RvcnksXHJcbiAgICByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1PREFMX0NPTkZJR19ERUZBVUxUX09WRVJSSURFKSBtb2RhbERlZmF1bHRPcHRpb246IE1vZGFsT3B0aW9uc1xyXG4gICkge1xyXG4gICAgdGhpcy5iYWNrZHJvcExvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PigpO1xyXG4gICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi5tb2RhbENvbmZpZ0RlZmF1bHRzLCAuLi5tb2RhbERlZmF1bHRPcHRpb24gfTtcclxuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGVycy5mb3JFYWNoKChsb2FkZXIpID0+IGxvYWRlci5pbnN0YW5jZT8uaGlkZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGEgbmV3IG1vZGFsLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBgQ29tcG9uZW50YCBvciBgVGVtcGxhdGVSZWZgIHR5cGUuXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIFNwZWNpZmljIHtAbGluayBNb2RhbE9wdGlvbnMgfCBvcHRpb25zfSAgZm9yIHRoaXMgbW9kYWwuIEdsb2JhbCBhbmQgc3BlY2lmaWMgb3B0aW9ucyBhcmUgbWVyZ2VkLlxyXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBNb2RhbH1cclxuICAgKi9cclxuICBwdWJsaWMgc2hvdzxUPihjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgeyBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVCB9LCBjb25maWc/OiBNb2RhbE9wdGlvbnM8VD4pIHtcclxuICAgIHRoaXMubW9kYWxzQ291bnQrKztcclxuICAgIGNvbnN0IGNvbWJpbmVkQ29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xyXG4gICAgY29tYmluZWRDb25maWcuaWQgPSBjb25maWc/LmlkIHx8IG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XHJcbiAgICB0aGlzLmNyZWF0ZUxvYWRlcnMoKTtcclxuXHJcbiAgICB0aGlzLmFkZEJvZHlQYWRkaW5nKCk7XHJcbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3NOYW1lcy5tb2RhbE9wZW4pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93QmFja2Ryb3AoY29tYmluZWRDb25maWcpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd01vZGFsPFQ+KGNvbnRlbnQsIGNvbWJpbmVkQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGUgYW4gYWN0aXZlIG1vZGFsLlxyXG4gICAqIEBwYXJhbSBpZCAtIElkIG9mIG1vZGFsIHRvIGhpZGUuIElmIG5vdCBwcm92aWRlZCBhbGwgYWN0aXZlIG1vZGFscyBhcmUgaGlkZGVuLlxyXG4gICAqIEBwYXJhbSByZXN1bHQgLSBBIHJlc3VsdCB0byBiZSBzZW50IHRvIG9ic2VydmVycy5cclxuICAgKi9cclxuICBwdWJsaWMgaGlkZShpZD86IG51bWJlciB8IHN0cmluZywgcmVzdWx0PzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSB8fCBpZCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaGlkZUJhY2tkcm9wKCk7XHJcbiAgICAgIHRoaXMucmV2ZXJ0U2Nyb2xsYmFyKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCBjc3NDbGFzc05hbWVzLm1vZGFsT3Blbik7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsc0NvdW50ID0gdGhpcy5tb2RhbHNDb3VudCA+PSAxICYmIGlkICE9IG51bGwgPyB0aGlzLm1vZGFsc0NvdW50IC0gMSA6IDA7XHJcbiAgICBzZXRUaW1lb3V0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoaWQsIHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVMb2FkZXJzKGlkKTtcclxuICAgICAgfSxcclxuICAgICAgLy9CdWdcclxuICAgICAgLy9TaG91bGQgdXNlIGNvbWJpbmVkIGNvbmZpZyBidXQgZm9yIHRoZSBtb21lbnQgaXMgbm90IHBvc3NpYmxlIHRvIHBhc3MgaXQgdGhpcyBwYXJhbWV0ZXIuXHJcbiAgICAgIC8vSWYgY29uZmlnIGlzIGFuIGluc3RhbmNlIHZhcmlhYmxlIHRoZW4gZXZlcnkgbmV3bHkgb3BlbmVkIG1vZGFsIHdpbGwgb3ZlcnJpZGUgdGhlIGNvbmZpZ1xyXG4gICAgICAvL3Jlc3VsdGluZyBpbiBvcGVuZWQgbW9kYWxzIHRvIGdldCBhIG5ldyBjb25maWd1cmF0aW9uXHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5hbmltYXRlZCA/IGFuaW1hdGlvblRpbWUuYmFja2Ryb3AgOiAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdGl2ZU1vZGFsKCk6IE1vZGFsQ29udGFpbmVyQ29tcG9uZW50IHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRlcnNbdGhpcy5tb2RhbHNDb3VudCAtIDFdLmluc3RhbmNlIGFzIE1vZGFsQ29udGFpbmVyQ29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93TW9kYWw8VD4oY29udGVudDogYW55LCBjb21iaW5lZENvbmZpZzogTW9kYWxPcHRpb25zKTogTW9kYWw8VD4ge1xyXG4gICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbdGhpcy5sb2FkZXJzLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKGNvbWJpbmVkQ29uZmlnICYmIGNvbWJpbmVkQ29uZmlnLnByb3ZpZGVycykge1xyXG4gICAgICBjb21iaW5lZENvbmZpZy5wcm92aWRlcnMuZm9yRWFjaCgocHJvdmlkZXIpID0+IG1vZGFsTG9hZGVyLnByb3ZpZGUocHJvdmlkZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBNb2RhbDxhbnk+KCk7XHJcbiAgICBjb25zdCBtb2RhbENvbnRhaW5lclJlZiA9IG1vZGFsTG9hZGVyXHJcbiAgICAgIC5wcm92aWRlKHsgcHJvdmlkZTogTW9kYWxPcHRpb25zLCB1c2VWYWx1ZTogY29tYmluZWRDb25maWcgfSlcclxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBNb2RhbCwgdXNlVmFsdWU6IG1vZGFsIH0pXHJcbiAgICAgIC5hdHRhY2goTW9kYWxDb250YWluZXJDb21wb25lbnQpXHJcbiAgICAgIC50bygnYm9keScpO1xyXG5cclxuICAgIG1vZGFsLnNldENsYXNzID0gKG5ld0NsYXNzOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlKSB7XHJcbiAgICAgICAgbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UuY29uZmlnLmNsYXNzID0gbmV3Q2xhc3M7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgbW9kYWwub25CZWZvcmVIaWRlID0gbmV3IFN1YmplY3QoKTtcclxuICAgIG1vZGFsLm9uSGlkZGVuID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHRoaXMuY29weUV2ZW50KG1vZGFsTG9hZGVyLm9uQmVmb3JlSGlkZSwgbW9kYWwub25CZWZvcmVIaWRlKTtcclxuICAgIHRoaXMuY29weUV2ZW50KG1vZGFsTG9hZGVyLm9uSGlkZGVuLCBtb2RhbC5vbkhpZGRlbik7XHJcbiAgICBtb2RhbENvbnRhaW5lclJlZi5zaG93KHtcclxuICAgICAgY29udGVudCxcclxuICAgICAgYW5pbWF0aW9uc0VuYWJsZWQ6IGNvbWJpbmVkQ29uZmlnLmFuaW1hdGVkLFxyXG4gICAgICBpbml0aWFsU3RhdGU6IGNvbWJpbmVkQ29uZmlnLmluaXRpYWxTdGF0ZSxcclxuICAgICAgbW9kYWxTZXJ2aWNlOiB0aGlzLFxyXG4gICAgICBpZDogY29tYmluZWRDb25maWcuaWQsXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAobW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UpIHtcclxuICAgICAgbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UubGV2ZWwgPSB0aGlzLm1vZGFsc0NvdW50O1xyXG4gICAgICBtb2RhbC5jb250ZW50ID0gbW9kYWxMb2FkZXIuZ2V0SW5uZXJDb21wb25lbnQoKTtcclxuICAgICAgbW9kYWwuaWQgPSBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWc/LmlkO1xyXG4gICAgICBtb2RhbC5oaWRlID0gKHJlcykgPT4gbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2U/LmhpZGUocmVzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbW9kYWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhpZGVNb2RhbChpZD86IG51bWJlciB8IHN0cmluZywgcmVzdWx0PzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaWQgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBpbmRleFRvUmVtb3ZlID0gdGhpcy5sb2FkZXJzLmZpbmRJbmRleCgobG9hZGVyKSA9PiBsb2FkZXIuaW5zdGFuY2U/LmNvbmZpZy5pZCA9PT0gaWQpO1xyXG4gICAgICBjb25zdCBtb2RhbExvYWRlciA9IHRoaXMubG9hZGVyc1tpbmRleFRvUmVtb3ZlXTtcclxuICAgICAgaWYgKG1vZGFsTG9hZGVyKSB7XHJcbiAgICAgICAgbW9kYWxMb2FkZXIuaGlkZShpZCwgcmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PikgPT4ge1xyXG4gICAgICAgIGlmIChsb2FkZXIuaW5zdGFuY2UpIHtcclxuICAgICAgICAgIGxvYWRlci5oaWRlKGxvYWRlci5pbnN0YW5jZS5jb25maWcuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dCYWNrZHJvcChjb21iaW5lZENvbmZpZzogTW9kYWxPcHRpb25zKTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0JhY2tkcm9wRW5hYmxlZCA9IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSB0cnVlIHx8IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSAnc3RhdGljJztcclxuICAgIGNvbnN0IGlzQmFja2Ryb3BJbkRPTSA9IHRoaXMuYmFja2Ryb3BSZWYgIT0gbnVsbDtcclxuICAgIGlmIChpc0JhY2tkcm9wRW5hYmxlZCAmJiAhaXNCYWNrZHJvcEluRE9NKSB7XHJcbiAgICAgIHRoaXMuYmFja2Ryb3BMb2FkZXJcclxuICAgICAgICAuYXR0YWNoKE1vZGFsQmFja2Ryb3BDb21wb25lbnQpXHJcbiAgICAgICAgLnRvKCdib2R5JylcclxuICAgICAgICAuc2hvdyh7IGFuaW1hdGlvbnNFbmFibGVkOiBjb21iaW5lZENvbmZpZy5hbmltYXRlZCwgYmFja2Ryb3BMb2FkZXI6IHRoaXMuYmFja2Ryb3BMb2FkZXIgfSk7XHJcbiAgICAgIHRoaXMuYmFja2Ryb3BSZWYgPSB0aGlzLmJhY2tkcm9wTG9hZGVyLmNvbXBvbmVudFJlZjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZUJhY2tkcm9wKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmJhY2tkcm9wUmVmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYmFja2Ryb3BSZWYuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgdGhpcy5iYWNrZHJvcFJlZiA9IHZvaWQgMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlTG9hZGVycyhpZD86IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGlkICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgaW5kZXhUb1JlbW92ZSA9IHRoaXMubG9hZGVycy5maW5kSW5kZXgoKGxvYWRlcikgPT4gbG9hZGVyLmluc3RhbmNlPy5jb25maWcuaWQgPT09IGlkKTtcclxuICAgICAgaWYgKGluZGV4VG9SZW1vdmUgPj0gMCkge1xyXG4gICAgICAgIHRoaXMubG9hZGVycy5zcGxpY2UoaW5kZXhUb1JlbW92ZSwgMSk7XHJcbiAgICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PiwgaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAobG9hZGVyLmluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIGxvYWRlci5pbnN0YW5jZS5sZXZlbCA9IGkgKyAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRlcnMuc3BsaWNlKDAsIHRoaXMubG9hZGVycy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRCb2R5UGFkZGluZygpIHtcclxuICAgIGlmICh0aGlzLm1vZGFsc0NvdW50ID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRTY3JvbGxiYXJXaWR0aCgpO1xyXG4gICAgICBpZiAodGhpcy5pc1Njcm9sbEJhclByZXNlbnQod2lkdGgpKSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsUGFkZGluZyA9IHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ7XHJcbiAgICAgICAgY29uc3QgYWN0dWFsUGFkZGluZyA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5kb2N1bWVudC5ib2R5KS5wYWRkaW5nUmlnaHQpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHthY3R1YWxQYWRkaW5nICsgd2lkdGh9cHhgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJldmVydFNjcm9sbGJhcigpIHtcclxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSB0aGlzLmluaXRpYWxQYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTY3JvbGxiYXJXaWR0aCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbWVhc3VyZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgbWVhc3VyZXIuY2xhc3NOYW1lID0gJ21vZGFsLXNjcm9sbGJhci1tZWFzdXJlJztcclxuXHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xyXG4gICAgYm9keS5hcHBlbmRDaGlsZChtZWFzdXJlcik7XHJcbiAgICBjb25zdCB3aWR0aCA9IG1lYXN1cmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC0gbWVhc3VyZXIuY2xpZW50V2lkdGg7XHJcbiAgICBib2R5LnJlbW92ZUNoaWxkKG1lYXN1cmVyKTtcclxuXHJcbiAgICByZXR1cm4gd2lkdGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU2Nyb2xsQmFyUHJlc2VudChzY3JvbGxiYXJXaWR0aDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCByZWN0ID0gdGhpcy5kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgYm9keVRvVmlld3BvcnRHYXAgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KTtcclxuICAgIGNvbnN0IHVuY2VydGFpbnR5ID0gMC4xICogc2Nyb2xsYmFyV2lkdGg7XHJcbiAgICByZXR1cm4gYm9keVRvVmlld3BvcnRHYXAgPj0gc2Nyb2xsYmFyV2lkdGggLSB1bmNlcnRhaW50eTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTG9hZGVycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbENvbnRhaW5lckNvbXBvbmVudD4oKTtcclxuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkJlZm9yZVNob3csIHRoaXMub25CZWZvcmVTaG93KTtcclxuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vblNob3duLCB0aGlzLm9uU2hvd24pO1xyXG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uQmVmb3JlSGlkZSwgdGhpcy5vbkJlZm9yZUhpZGUpO1xyXG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uSGlkZGVuLCB0aGlzLm9uSGlkZGVuKTtcclxuICAgIHRoaXMubG9hZGVycy5wdXNoKGxvYWRlcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvcHlFdmVudChmcm9tOiBTdWJqZWN0PHVua25vd24+LCB0bzogU3ViamVjdDx1bmtub3duPikge1xyXG4gICAgZnJvbS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdG8ubmV4dChkYXRhKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export const cssClassNames = {
|
|
2
|
-
backdrop: 'modal-backdrop',
|
|
3
|
-
show: 'show',
|
|
4
|
-
fade: 'fade',
|
|
5
|
-
modalOpen: 'modal-open'
|
|
6
|
-
};
|
|
7
|
-
export const animationTime = {
|
|
8
|
-
backdrop: 150,
|
|
9
|
-
modal: 300,
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const cssClassNames = {
|
|
2
|
+
backdrop: 'modal-backdrop',
|
|
3
|
+
show: 'show',
|
|
4
|
+
fade: 'fade',
|
|
5
|
+
modalOpen: 'modal-open'
|
|
6
|
+
};
|
|
7
|
+
export const animationTime = {
|
|
8
|
+
backdrop: 150,
|
|
9
|
+
modal: 300,
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3R5bGVzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL21vZGFsLXNlcnZpY2UvbW9kYWwtc3R5bGVzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDYixTQUFTLEVBQUUsWUFBWTtDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsS0FBSyxFQUFFLEdBQUc7Q0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNzc0NsYXNzTmFtZXMgPSB7XHJcbiAgYmFja2Ryb3A6ICdtb2RhbC1iYWNrZHJvcCcsXHJcbiAgc2hvdzogJ3Nob3cnLFxyXG4gIGZhZGU6ICdmYWRlJyxcclxuXHRtb2RhbE9wZW46ICdtb2RhbC1vcGVuJ1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFuaW1hdGlvblRpbWUgPSB7XHJcbiAgYmFja2Ryb3A6IDE1MCxcclxuICBtb2RhbDogMzAwLFxyXG59O1xyXG4iXX0=
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
/**
|
|
3
|
-
* Modal class.
|
|
4
|
-
* @remarks
|
|
5
|
-
* This is returned from {@link ModalService.show}.
|
|
6
|
-
* @public
|
|
7
|
-
*/
|
|
8
|
-
export class Modal {
|
|
9
|
-
constructor() {
|
|
10
|
-
/**
|
|
11
|
-
* Hides the modal
|
|
12
|
-
* @param result - A result to the observers.
|
|
13
|
-
*/
|
|
14
|
-
this.hide = () => void 0;
|
|
15
|
-
/**
|
|
16
|
-
* Sets new class to modal window.
|
|
17
|
-
*/
|
|
18
|
-
this.setClass = () => void 0;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
Modal.decorators = [
|
|
22
|
-
{ type: Injectable }
|
|
23
|
-
];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Modal class.
|
|
4
|
+
* @remarks
|
|
5
|
+
* This is returned from {@link ModalService.show}.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export class Modal {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* Hides the modal
|
|
12
|
+
* @param result - A result to the observers.
|
|
13
|
+
*/
|
|
14
|
+
this.hide = () => void 0;
|
|
15
|
+
/**
|
|
16
|
+
* Sets new class to modal window.
|
|
17
|
+
*/
|
|
18
|
+
this.setClass = () => void 0;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
Modal.decorators = [
|
|
22
|
+
{ type: Injectable }
|
|
23
|
+
];
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvbW9kYWwtc2VydmljZS9tb2RhbC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLEtBQUs7SUFEbEI7UUEwQkU7OztXQUdHO1FBQ0gsU0FBSSxHQUEyQixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1Qzs7V0FFRztRQUNILGFBQVEsR0FBK0IsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7O1lBbkNBLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBNb2RhbCBjbGFzcy5cclxuICogQHJlbWFya3NcclxuICogVGhpcyBpcyByZXR1cm5lZCBmcm9tIHtAbGluayBNb2RhbFNlcnZpY2Uuc2hvd30uXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1vZGFsPFQgPSBhbnk+IHtcclxuICAvKipcclxuICAgKiBFdmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIG1vZGFsIGJlaGluZCB0aGUgcmVmIHN0YXJ0cyBoaWRpbmcuXHJcbiAgICogQHJldHVybnNcclxuICAgKiBNb2RhbCBjb21wb25lbnQgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgb25CZWZvcmVIaWRlPzogU3ViamVjdDx1bmtub3duPjtcclxuICAvKipcclxuICAgKiBFdmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIG1vZGFsIGJlaGluZCB0aGUgcmVmIGZpbmlzaGVzIGhpZGluZy5cclxuICAgKiBAcmV0dXJuc1xyXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBpZCBvZiB0aGUgY2xvc2VkIG1vZGFsIGFuZCByZXN1bHQuXHJcbiAgICovXHJcbiAgb25IaWRkZW4/OiBTdWJqZWN0PHVua25vd24+O1xyXG4gIC8qKlxyXG4gICAqICBJZCBvZiB0aGlzIG1vZGFsLlxyXG4gICAqL1xyXG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBSZWZlcmVuY2UgdG8gYSBjb21wb25lbnQgaW5zaWRlIHRoZSBtb2RhbC4gTnVsbCBpZiBtb2RhbCdzIGJlZW4gY3JlYXRlZCB3aXRoIFRlbXBsYXRlUmVmLlxyXG4gICAqIEByZW1hcmtzXHJcbiAgICogWW91IGNhbiB1c2UgdGhpcyB0byBkbyBuYXN0eSBzdHVmZiB3aXRoIG9wZW5lZCBtb2RhbCBpbnN0YW5jZS5cclxuICAgKi9cclxuICBjb250ZW50PzogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZXMgdGhlIG1vZGFsXHJcbiAgICogQHBhcmFtIHJlc3VsdCAtIEEgcmVzdWx0IHRvIHRoZSBvYnNlcnZlcnMuXHJcbiAgICovXHJcbiAgaGlkZTogKHJlc3VsdD86IGFueSkgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcclxuICAvKipcclxuICAgKiBTZXRzIG5ldyBjbGFzcyB0byBtb2RhbCB3aW5kb3cuXHJcbiAgICovXHJcbiAgc2V0Q2xhc3M6IChuZXdDbGFzczogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4gdm9pZCAwO1xyXG59XHJcbiJdfQ==
|