@design-factory/design-factory 18.1.1 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/design-factory-initial-branding.css +1 -1
- package/design-factory.css +1 -1
- package/fesm2022/design-factory.mjs +748 -921
- package/fesm2022/design-factory.mjs.map +1 -1
- package/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.d.ts +3 -9
- package/lib/angular/accessibility/directives/skip-link.directive.d.ts +3 -9
- package/lib/angular/card/manage-card-selection.directive.d.ts +5 -5
- package/lib/angular/datepicker/datepicker-range.directive.d.ts +5 -6
- package/lib/angular/datepicker/datepicker.module.d.ts +3 -5
- package/lib/angular/inputs/icon/inputicon.directive.d.ts +5 -6
- package/lib/angular/mediaqueries/ifMedia.directive.d.ts +8 -9
- package/lib/angular/modal/modal.service.d.ts +4 -0
- package/lib/angular/progressbar/progressbar.component.d.ts +18 -28
- package/lib/angular/progressindicator/default/default-spinner.component.d.ts +4 -4
- package/lib/angular/progressindicator/progressindicator-backdrop.component.d.ts +4 -4
- package/lib/angular/progressindicator/progressindicator-container.component.d.ts +5 -7
- package/lib/angular/progressindicator/progressindicator.directive.d.ts +9 -11
- package/lib/angular/selects/events/manage-badge-events.directive.d.ts +4 -5
- package/lib/angular/selects/option-highlight.directive.d.ts +7 -12
- package/lib/angular/sidenav/dfSideNavCollapse.d.ts +16 -18
- package/lib/angular/sidenav/excludeTrap.directive.d.ts +9 -10
- package/lib/angular/sidenav/sidenav.component.d.ts +7 -8
- package/lib/angular/sidenav/sidenavlist.component.d.ts +8 -8
- package/lib/angular/slider/direction/sliderdirection.directive.d.ts +5 -7
- package/lib/angular/slider/lib/slider-element.directive.d.ts +2 -1
- package/lib/angular/slider/lib/slider-handle.directive.d.ts +1 -1
- package/lib/angular/slider/lib/slider-label.directive.d.ts +1 -1
- package/lib/angular/slider/lib/slider.component.d.ts +1 -1
- package/lib/angular/slider/lib/tooltip-wrapper.component.d.ts +1 -1
- package/lib/angular/slider/slider.module.d.ts +1 -1
- package/lib/angular/stepper/stepper.component.d.ts +7 -8
- package/lib/angular/utils/titleTruncate.directive.d.ts +2 -3
- package/lib/angular/waves-of-progress/waves.directive.d.ts +4 -3
- package/lib/index.d.ts +0 -1
- package/package.json +14 -16
- package/schematics/ng-add/index.js +1 -1
- package/styles/scss/agnosui/_variables.scss +9 -3
- package/styles/scss/bootstrap/_variables.scss +54 -12
- package/styles/scss/components/accordion/_accordion.scss +67 -6
- package/styles/scss/components/accordion/_accordion.variables.scss +2 -0
- package/styles/scss/components/alert/_alert.scss +3 -2
- package/styles/scss/components/badge/_badge.scss +13 -3
- package/styles/scss/components/badge/_badge.variables.scss +1 -0
- package/styles/scss/components/button/_button.scss +5 -0
- package/styles/scss/components/form/_form.scss +4 -0
- package/styles/scss/components/sidenav/_sidenav.scss +5 -2
- package/styles/scss/df-styles-namespace.scss +3 -1
- package/styles/scss/df-styles.scss +3 -1
- package/styles/scss/themes/brand2023/_variables.scss +80 -28
- package/esm2022/design-factory.mjs +0 -5
- package/esm2022/environment.mjs +0 -5
- package/esm2022/index.mjs +0 -5
- package/esm2022/lib/angular/accessibility/accessibility.module.mjs +0 -19
- package/esm2022/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.mjs +0 -32
- package/esm2022/lib/angular/accessibility/directives/skip-link.directive.mjs +0 -64
- package/esm2022/lib/angular/alert/alert.module.mjs +0 -17
- package/esm2022/lib/angular/animation/ngbTransition.mjs +0 -76
- package/esm2022/lib/angular/animation/util.mjs +0 -30
- package/esm2022/lib/angular/card/card-advanced.module.mjs +0 -17
- package/esm2022/lib/angular/card/manage-card-selection.directive.mjs +0 -47
- package/esm2022/lib/angular/datepicker/closedatepicker.directive.mjs +0 -38
- package/esm2022/lib/angular/datepicker/datepicker-keyboard-nav.service.mjs +0 -39
- package/esm2022/lib/angular/datepicker/datepicker-range.directive.mjs +0 -101
- package/esm2022/lib/angular/datepicker/datepicker-range.service.mjs +0 -97
- package/esm2022/lib/angular/datepicker/datepicker.module.mjs +0 -42
- package/esm2022/lib/angular/df.module.mjs +0 -102
- package/esm2022/lib/angular/footer/footer.module.mjs +0 -17
- package/esm2022/lib/angular/icon/amadeus-icon.mjs +0 -79
- package/esm2022/lib/angular/icon/icon.module.mjs +0 -17
- package/esm2022/lib/angular/icon/insert/insert-icon.directive.mjs +0 -47
- package/esm2022/lib/angular/icon/insert/insert-icon.module.mjs +0 -17
- package/esm2022/lib/angular/inputs/click/trigger-click.directive.mjs +0 -28
- package/esm2022/lib/angular/inputs/icon/inputicon.directive.mjs +0 -95
- package/esm2022/lib/angular/inputs/input-advanced.module.mjs +0 -19
- package/esm2022/lib/angular/mediaqueries/ifMedia.directive.mjs +0 -52
- package/esm2022/lib/angular/mediaqueries/media.module.mjs +0 -17
- package/esm2022/lib/angular/mediaqueries/media.service.mjs +0 -46
- package/esm2022/lib/angular/mediaqueries/mediaUtils.service.mjs +0 -185
- package/esm2022/lib/angular/modal/modal.service.mjs +0 -36
- package/esm2022/lib/angular/popover/config/popover.config.mjs +0 -15
- package/esm2022/lib/angular/popover/popover.module.mjs +0 -17
- package/esm2022/lib/angular/progressbar/progressbar.component.mjs +0 -156
- package/esm2022/lib/angular/progressbar/progressbar.module.mjs +0 -18
- package/esm2022/lib/angular/progressindicator/default/default-spinner.component.mjs +0 -23
- package/esm2022/lib/angular/progressindicator/progressindicator-backdrop.component.mjs +0 -29
- package/esm2022/lib/angular/progressindicator/progressindicator-config.mjs +0 -25
- package/esm2022/lib/angular/progressindicator/progressindicator-container.component.mjs +0 -52
- package/esm2022/lib/angular/progressindicator/progressindicator-ref.mjs +0 -8
- package/esm2022/lib/angular/progressindicator/progressindicator.directive.mjs +0 -39
- package/esm2022/lib/angular/progressindicator/progressindicator.module.mjs +0 -45
- package/esm2022/lib/angular/progressindicator/progressindicator.service.mjs +0 -170
- package/esm2022/lib/angular/right-to-left/directionDetection.service.mjs +0 -32
- package/esm2022/lib/angular/selects/events/manage-badge-events.directive.mjs +0 -65
- package/esm2022/lib/angular/selects/nav/manage-nav-select.directive.mjs +0 -108
- package/esm2022/lib/angular/selects/option-highlight.directive.mjs +0 -59
- package/esm2022/lib/angular/selects/select.model.mjs +0 -2
- package/esm2022/lib/angular/selects/select.module.mjs +0 -22
- package/esm2022/lib/angular/sidenav/dfSideNavAnimation.mjs +0 -73
- package/esm2022/lib/angular/sidenav/dfSideNavCollapse.mjs +0 -94
- package/esm2022/lib/angular/sidenav/dfSideNavCollapse.module.mjs +0 -18
- package/esm2022/lib/angular/sidenav/dfSideNavCollapse.service.mjs +0 -37
- package/esm2022/lib/angular/sidenav/dfSideNavCollapseConfig.mjs +0 -27
- package/esm2022/lib/angular/sidenav/excludeTrap.directive.mjs +0 -55
- package/esm2022/lib/angular/sidenav/manage-sidenav.directive.mjs +0 -26
- package/esm2022/lib/angular/sidenav/sidenav-config.mjs +0 -25
- package/esm2022/lib/angular/sidenav/sidenav.component.mjs +0 -86
- package/esm2022/lib/angular/sidenav/sidenav.module.mjs +0 -52
- package/esm2022/lib/angular/sidenav/sidenav.service.mjs +0 -316
- package/esm2022/lib/angular/sidenav/sidenavlist.component.mjs +0 -59
- package/esm2022/lib/angular/slider/direction/sliderdirection.directive.mjs +0 -36
- package/esm2022/lib/angular/slider/lib/change-context.mjs +0 -3
- package/esm2022/lib/angular/slider/lib/compatibility-helper.mjs +0 -15
- package/esm2022/lib/angular/slider/lib/event-listener-helper.mjs +0 -77
- package/esm2022/lib/angular/slider/lib/event-listener.mjs +0 -3
- package/esm2022/lib/angular/slider/lib/math-helper.mjs +0 -15
- package/esm2022/lib/angular/slider/lib/options.mjs +0 -123
- package/esm2022/lib/angular/slider/lib/pointer-type.mjs +0 -9
- package/esm2022/lib/angular/slider/lib/slider-element.directive.mjs +0 -190
- package/esm2022/lib/angular/slider/lib/slider-handle.directive.mjs +0 -65
- package/esm2022/lib/angular/slider/lib/slider-label.directive.mjs +0 -41
- package/esm2022/lib/angular/slider/lib/slider.component.mjs +0 -1998
- package/esm2022/lib/angular/slider/lib/tooltip-wrapper.component.mjs +0 -23
- package/esm2022/lib/angular/slider/lib/value-helper.mjs +0 -50
- package/esm2022/lib/angular/slider/slider.module.mjs +0 -37
- package/esm2022/lib/angular/stepper/stepper.component.mjs +0 -65
- package/esm2022/lib/angular/stepper/stepper.directive.mjs +0 -174
- package/esm2022/lib/angular/stepper/stepper.module.mjs +0 -17
- package/esm2022/lib/angular/stepper/stepper.service.mjs +0 -213
- package/esm2022/lib/angular/toast/toast.module.mjs +0 -17
- package/esm2022/lib/angular/tooltip/tooltip.module.mjs +0 -18
- package/esm2022/lib/angular/tooltip/truncate/tooltipTruncate.directive.mjs +0 -31
- package/esm2022/lib/angular/utils/html-element-helper.mjs +0 -8
- package/esm2022/lib/angular/utils/scrollbar.service.mjs +0 -79
- package/esm2022/lib/angular/utils/titleTruncate.directive.mjs +0 -39
- package/esm2022/lib/angular/waves-of-progress/waves.directive.mjs +0 -86
- package/esm2022/lib/angular/waves-of-progress/waves.module.mjs +0 -16
- package/esm2022/lib/index.mjs +0 -93
- package/lib/angular/datepicker/closedatepicker.directive.d.ts +0 -10
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
2
|
-
import { Inject, Injectable, InjectionToken, PLATFORM_ID } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, combineLatest, fromEvent, Subscription } from 'rxjs';
|
|
4
|
-
import { map, take } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
// Default DF breakpoints
|
|
7
|
-
export const DF_BREAKPOINTS_VAR_DEFAULT = {
|
|
8
|
-
xs: '--df-breakpoint-xs',
|
|
9
|
-
sm: '--df-breakpoint-sm',
|
|
10
|
-
md: '--df-breakpoint-md',
|
|
11
|
-
lg: '--df-breakpoint-lg',
|
|
12
|
-
xl: '--df-breakpoint-xl',
|
|
13
|
-
xxl: '--df-breakpoint-xxl',
|
|
14
|
-
xxxl: '--df-breakpoint-xxxl'
|
|
15
|
-
};
|
|
16
|
-
export const BREAKPOINTS_VARS = new InjectionToken('Bootstrap Breakpoints', {
|
|
17
|
-
providedIn: 'root',
|
|
18
|
-
factory() {
|
|
19
|
-
return DF_BREAKPOINTS_VAR_DEFAULT;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
export class DfBreakpoints {
|
|
23
|
-
constructor(_breakPointsVar, platformID) {
|
|
24
|
-
this._breakPointsVar = _breakPointsVar;
|
|
25
|
-
this.platformID = platformID;
|
|
26
|
-
this._breakPoints$ = new BehaviorSubject(null);
|
|
27
|
-
this.initBreakpoints();
|
|
28
|
-
}
|
|
29
|
-
get breakPoints$() {
|
|
30
|
-
return this._breakPoints$.asObservable();
|
|
31
|
-
}
|
|
32
|
-
initBreakpoints() {
|
|
33
|
-
let breakPoints = null;
|
|
34
|
-
if (isPlatformBrowser(this.platformID) && this._breakPoints$.value === null) {
|
|
35
|
-
// we are in a browser so CSS variable are accessible
|
|
36
|
-
// we init the BP only once
|
|
37
|
-
const styles = window.getComputedStyle(document.documentElement);
|
|
38
|
-
const bpArray = [];
|
|
39
|
-
for (const el of Object.keys(this._breakPointsVar)) {
|
|
40
|
-
const curValue = this._breakPointsVar[el];
|
|
41
|
-
const bpValue = Number.parseInt(styles.getPropertyValue(curValue), 10);
|
|
42
|
-
if (isNaN(bpValue)) {
|
|
43
|
-
// We should never enter here. Only if people did not put the correct list of CSS vars...
|
|
44
|
-
// Or if the CSS is not arrived yet.
|
|
45
|
-
// What should we do then?
|
|
46
|
-
// TODO init from the default list provided if we want to?
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
bpArray.push([el, bpValue]);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
breakPoints = this.generate(bpArray);
|
|
53
|
-
// In case the first page contains the directive and the CSS vars are not available
|
|
54
|
-
// We may need to launch a second init at load time.
|
|
55
|
-
if (Object.keys(breakPoints).length === 0) {
|
|
56
|
-
fromEvent(window, 'load')
|
|
57
|
-
.pipe(take(1))
|
|
58
|
-
.subscribe(() => {
|
|
59
|
-
// Init once as the service is available everywhere
|
|
60
|
-
// We do not check if the CSS variable are changing over time
|
|
61
|
-
// here onload the CSS var should be available
|
|
62
|
-
this.initBreakpoints();
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
this._breakPoints$.next(breakPoints);
|
|
67
|
-
}
|
|
68
|
-
// Utilities to use if you want to create your own queries with your values.
|
|
69
|
-
// sizes is an array of array BreakPoints with sizes[0] --> identifier of the BreakPoint
|
|
70
|
-
// sizes[1] px value of the BreakPoint
|
|
71
|
-
generate(sizes) {
|
|
72
|
-
sizes = sizes.sort((a, b) => a[1] - b[1]);
|
|
73
|
-
const dict = {};
|
|
74
|
-
for (let i = 0; i < sizes.length; i++) {
|
|
75
|
-
const name = sizes[i][0];
|
|
76
|
-
const min = sizes[i][1];
|
|
77
|
-
const max = i === sizes.length - 1 ? undefined : sizes[i + 1][1];
|
|
78
|
-
if (min === 0) {
|
|
79
|
-
dict[name] = `(max-width: ${max - 0.01}px)`;
|
|
80
|
-
}
|
|
81
|
-
else if (max) {
|
|
82
|
-
dict[name] = `(max-width: ${max - 0.01}px) and (min-width: ${min}px)`;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
dict[name] = `(min-width: ${min}px)`;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return dict;
|
|
89
|
-
}
|
|
90
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfBreakpoints, deps: [{ token: BREAKPOINTS_VARS }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
91
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfBreakpoints, providedIn: 'root' }); }
|
|
92
|
-
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfBreakpoints, decorators: [{
|
|
94
|
-
type: Injectable,
|
|
95
|
-
args: [{ providedIn: 'root' }]
|
|
96
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
97
|
-
type: Inject,
|
|
98
|
-
args: [BREAKPOINTS_VARS]
|
|
99
|
-
}] }, { type: Object, decorators: [{
|
|
100
|
-
type: Inject,
|
|
101
|
-
args: [PLATFORM_ID]
|
|
102
|
-
}] }] });
|
|
103
|
-
export class DfMediaQuery {
|
|
104
|
-
constructor(platformId) {
|
|
105
|
-
this._isBrowser = isPlatformBrowser(platformId);
|
|
106
|
-
}
|
|
107
|
-
notSupported(query) {
|
|
108
|
-
return { matches: false, media: query, addEventListener: () => { }, removeEventListener: () => { } };
|
|
109
|
-
}
|
|
110
|
-
matchMedia(query) {
|
|
111
|
-
if (this._isBrowser && window.matchMedia) {
|
|
112
|
-
return window.matchMedia(query);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return this.notSupported(query);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfMediaQuery, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
119
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfMediaQuery, providedIn: 'root' }); }
|
|
120
|
-
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfMediaQuery, decorators: [{
|
|
122
|
-
type: Injectable,
|
|
123
|
-
args: [{ providedIn: 'root' }]
|
|
124
|
-
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
125
|
-
type: Inject,
|
|
126
|
-
args: [PLATFORM_ID]
|
|
127
|
-
}] }] });
|
|
128
|
-
export class DfMediaObserver {
|
|
129
|
-
constructor(_mediaQuery) {
|
|
130
|
-
this._mediaQuery = _mediaQuery;
|
|
131
|
-
this._subscription = new Subscription();
|
|
132
|
-
this._queries = new Map();
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Verifies if at least one of the provided media-queries is matching
|
|
136
|
-
* the current viewport
|
|
137
|
-
*/
|
|
138
|
-
matches(queries) {
|
|
139
|
-
queries = this._flattenQueries(Array.isArray(queries) ? queries : [queries]);
|
|
140
|
-
return queries.some(q => this._registerQuery(q).mediaQueryList.matches);
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Produces an observable for a set of media-queries that will emit
|
|
144
|
-
* meta information for any changes of the given queries.
|
|
145
|
-
* @param value One or more media-queries to be observed.
|
|
146
|
-
* @returns A stream of matches meta object for the given media-queries.
|
|
147
|
-
*/
|
|
148
|
-
observe(queries) {
|
|
149
|
-
queries = this._flattenQueries(Array.isArray(queries) ? queries : [queries]);
|
|
150
|
-
return combineLatest(queries.map(q => this._registerQuery(q).mediaQueryList$)).pipe(map((events) => events.reduce((result, event) => {
|
|
151
|
-
result.matches = result.matches || event.matches;
|
|
152
|
-
result.breakpoints[event.media] = event.matches;
|
|
153
|
-
return result;
|
|
154
|
-
}, { matches: false, breakpoints: {} })));
|
|
155
|
-
}
|
|
156
|
-
ngOnDestroy() {
|
|
157
|
-
this._subscription.unsubscribe();
|
|
158
|
-
}
|
|
159
|
-
_flattenQueries(queries) {
|
|
160
|
-
return queries.map(q => q.split(',')).reduce((flat, a) => flat.concat(a));
|
|
161
|
-
}
|
|
162
|
-
_registerQuery(query) {
|
|
163
|
-
if (this._queries.has(query)) {
|
|
164
|
-
return this._queries.get(query);
|
|
165
|
-
}
|
|
166
|
-
const queryList = this._mediaQuery.matchMedia(query);
|
|
167
|
-
const queryList$ = new BehaviorSubject({
|
|
168
|
-
media: query,
|
|
169
|
-
matches: queryList.matches
|
|
170
|
-
});
|
|
171
|
-
this._subscription.add(fromEvent(queryList, 'change').subscribe((event) => {
|
|
172
|
-
queryList$.next(event);
|
|
173
|
-
}));
|
|
174
|
-
const meta = { mediaQueryList: queryList, mediaQueryList$: queryList$ };
|
|
175
|
-
this._queries.set(query, meta);
|
|
176
|
-
return meta;
|
|
177
|
-
}
|
|
178
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfMediaObserver, deps: [{ token: DfMediaQuery }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
179
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfMediaObserver, providedIn: 'root' }); }
|
|
180
|
-
}
|
|
181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfMediaObserver, decorators: [{
|
|
182
|
-
type: Injectable,
|
|
183
|
-
args: [{ providedIn: 'root' }]
|
|
184
|
-
}], ctorParameters: () => [{ type: DfMediaQuery }] });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWFVdGlscy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL21lZGlhcXVlcmllcy9tZWRpYVV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNDLHlCQUF5QjtBQUN6QixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QyxFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QixFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsR0FBRyxFQUFFLHFCQUFxQjtJQUMxQixJQUFJLEVBQUUsc0JBQXNCO0NBQzdCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRTtJQUMxRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPO1FBQ0wsT0FBTywwQkFBMEIsQ0FBQztJQUNwQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBR0gsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFDNkMsZUFBaUQsRUFDdEQsVUFBa0I7UUFEYixvQkFBZSxHQUFmLGVBQWUsQ0FBa0M7UUFDdEQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUp6QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFZLElBQUksQ0FBQyxDQUFDO1FBTXBFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1RSxxREFBcUQ7WUFDckQsMkJBQTJCO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFRLENBQUM7WUFDeEUsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ25CLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ25CLHlGQUF5RjtvQkFDekYsb0NBQW9DO29CQUNwQywwQkFBMEI7b0JBQzFCLDBEQUEwRDtnQkFDNUQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7WUFDRCxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxtRkFBbUY7WUFDbkYsb0RBQW9EO1lBQ3BELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO3FCQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsbURBQW1EO29CQUNuRCw2REFBNkQ7b0JBQzdELDhDQUE4QztvQkFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSx3RkFBd0Y7SUFDeEYsc0NBQXNDO0lBQ3RDLFFBQVEsQ0FBQyxLQUFjO1FBQ3JCLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUE4QixFQUFFLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQztZQUM5QyxDQUFDO2lCQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsR0FBRyxHQUFHLElBQUksdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1lBQ3hFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0FyRVUsYUFBYSxrQkFJZCxnQkFBZ0IsYUFDaEIsV0FBVztrSEFMVixhQUFhLGNBREEsTUFBTTs7MkZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLN0IsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixNQUFNOzJCQUFDLFdBQVc7O0FBOEV2QixNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFpQyxVQUFrQjtRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQUUsQ0FBQztJQUNyRyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFtQixDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDOzhHQWpCVSxZQUFZLGtCQUdILFdBQVc7a0hBSHBCLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUluQixNQUFNOzJCQUFDLFdBQVc7O0FBa0JqQyxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUE2QixXQUF5QjtRQUF6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYztRQUpyQyxrQkFBYSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWpELGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztJQUVULENBQUM7SUFFMUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLE9BQTBCO1FBQ2hDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxPQUEwQjtRQUNoQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbEYsR0FBRyxDQUNELENBQUMsTUFBNkIsRUFBeUIsRUFBRSxDQUN2RCxNQUFNLENBQUMsTUFBTSxDQUNYLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDaEQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUNELEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUEyQixDQUM3RCxDQUNKLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQWlCO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFhO1FBQ2xDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBbUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckUsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQXNCO1lBQzFELEtBQUssRUFBRSxLQUFLO1lBQ1osT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1NBQ0osQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixTQUFTLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3hELFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBNEIsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixNQUFNLElBQUksR0FBdUIsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQWhFVSxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPbkRlc3Ryb3ksIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIERlZmF1bHQgREYgYnJlYWtwb2ludHNcbmV4cG9ydCBjb25zdCBERl9CUkVBS1BPSU5UU19WQVJfREVGQVVMVCA9IHtcbiAgeHM6ICctLWRmLWJyZWFrcG9pbnQteHMnLFxuICBzbTogJy0tZGYtYnJlYWtwb2ludC1zbScsXG4gIG1kOiAnLS1kZi1icmVha3BvaW50LW1kJyxcbiAgbGc6ICctLWRmLWJyZWFrcG9pbnQtbGcnLFxuICB4bDogJy0tZGYtYnJlYWtwb2ludC14bCcsXG4gIHh4bDogJy0tZGYtYnJlYWtwb2ludC14eGwnLFxuICB4eHhsOiAnLS1kZi1icmVha3BvaW50LXh4eGwnXG59O1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVFNfVkFSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignQm9vdHN0cmFwIEJyZWFrcG9pbnRzJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3RvcnkoKSB7XG4gICAgcmV0dXJuIERGX0JSRUFLUE9JTlRTX1ZBUl9ERUZBVUxUO1xuICB9XG59KTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEZkJyZWFrcG9pbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJlYWtQb2ludHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7fSB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQlJFQUtQT0lOVFNfVkFSUykgcHJpdmF0ZSByZWFkb25seSBfYnJlYWtQb2ludHNWYXI6IHsgW2JyZWFrcG9pbnQ6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JRDogT2JqZWN0XG4gICkge1xuICAgIHRoaXMuaW5pdEJyZWFrcG9pbnRzKCk7XG4gIH1cblxuICBnZXQgYnJlYWtQb2ludHMkKCk6IE9ic2VydmFibGU8e30gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFrUG9pbnRzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEJyZWFrcG9pbnRzKCkge1xuICAgIGxldCBicmVha1BvaW50cyA9IG51bGw7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkgJiYgdGhpcy5fYnJlYWtQb2ludHMkLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBhcmUgaW4gYSBicm93c2VyIHNvIENTUyB2YXJpYWJsZSBhcmUgYWNjZXNzaWJsZVxuICAgICAgLy8gd2UgaW5pdCB0aGUgQlAgb25seSBvbmNlXG4gICAgICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIGFzIGFueTtcbiAgICAgIGNvbnN0IGJwQXJyYXkgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgT2JqZWN0LmtleXModGhpcy5fYnJlYWtQb2ludHNWYXIpKSB7XG4gICAgICAgIGNvbnN0IGN1clZhbHVlID0gdGhpcy5fYnJlYWtQb2ludHNWYXJbZWxdO1xuICAgICAgICBjb25zdCBicFZhbHVlID0gTnVtYmVyLnBhcnNlSW50KHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKGN1clZhbHVlKSwgMTApO1xuICAgICAgICBpZiAoaXNOYU4oYnBWYWx1ZSkpIHtcbiAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgZW50ZXIgaGVyZS4gT25seSBpZiBwZW9wbGUgZGlkIG5vdCBwdXQgdGhlIGNvcnJlY3QgbGlzdCBvZiBDU1MgdmFycy4uLlxuICAgICAgICAgIC8vIE9yIGlmIHRoZSBDU1MgaXMgbm90IGFycml2ZWQgeWV0LlxuICAgICAgICAgIC8vIFdoYXQgc2hvdWxkIHdlIGRvIHRoZW4/XG4gICAgICAgICAgLy8gVE9ETyBpbml0IGZyb20gdGhlIGRlZmF1bHQgbGlzdCBwcm92aWRlZCBpZiB3ZSB3YW50IHRvP1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJwQXJyYXkucHVzaChbZWwsIGJwVmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWtQb2ludHMgPSB0aGlzLmdlbmVyYXRlKGJwQXJyYXkpO1xuICAgICAgLy8gSW4gY2FzZSB0aGUgZmlyc3QgcGFnZSBjb250YWlucyB0aGUgZGlyZWN0aXZlIGFuZCB0aGUgQ1NTIHZhcnMgYXJlIG5vdCBhdmFpbGFibGVcbiAgICAgIC8vIFdlIG1heSBuZWVkIHRvIGxhdW5jaCBhIHNlY29uZCBpbml0IGF0IGxvYWQgdGltZS5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhicmVha1BvaW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdsb2FkJylcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW5pdCBvbmNlIGFzIHRoZSBzZXJ2aWNlIGlzIGF2YWlsYWJsZSBldmVyeXdoZXJlXG4gICAgICAgICAgICAvLyBXZSBkbyBub3QgY2hlY2sgaWYgdGhlIENTUyB2YXJpYWJsZSBhcmUgY2hhbmdpbmcgb3ZlciB0aW1lXG4gICAgICAgICAgICAvLyBoZXJlIG9ubG9hZCB0aGUgQ1NTIHZhciBzaG91bGQgYmUgYXZhaWxhYmxlXG4gICAgICAgICAgICB0aGlzLmluaXRCcmVha3BvaW50cygpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9icmVha1BvaW50cyQubmV4dChicmVha1BvaW50cyk7XG4gIH1cblxuICAvLyBVdGlsaXRpZXMgdG8gdXNlIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSB5b3VyIG93biBxdWVyaWVzIHdpdGggeW91ciB2YWx1ZXMuXG4gIC8vIHNpemVzIGlzIGFuIGFycmF5IG9mIGFycmF5IEJyZWFrUG9pbnRzIHdpdGggc2l6ZXNbMF0gLS0+IGlkZW50aWZpZXIgb2YgdGhlIEJyZWFrUG9pbnRcbiAgLy8gc2l6ZXNbMV0gcHggdmFsdWUgb2YgdGhlIEJyZWFrUG9pbnRcbiAgZ2VuZXJhdGUoc2l6ZXM6IGFueVtdW10pOiB7fSB7XG4gICAgc2l6ZXMgPSBzaXplcy5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgY29uc3QgZGljdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBzaXplc1tpXVswXTtcbiAgICAgIGNvbnN0IG1pbiA9IHNpemVzW2ldWzFdO1xuICAgICAgY29uc3QgbWF4ID0gaSA9PT0gc2l6ZXMubGVuZ3RoIC0gMSA/IHVuZGVmaW5lZCA6IHNpemVzW2kgKyAxXVsxXTtcbiAgICAgIGlmIChtaW4gPT09IDApIHtcbiAgICAgICAgZGljdFtuYW1lXSA9IGAobWF4LXdpZHRoOiAke21heCAtIDAuMDF9cHgpYDtcbiAgICAgIH0gZWxzZSBpZiAobWF4KSB7XG4gICAgICAgIGRpY3RbbmFtZV0gPSBgKG1heC13aWR0aDogJHttYXggLSAwLjAxfXB4KSBhbmQgKG1pbi13aWR0aDogJHttaW59cHgpYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpY3RbbmFtZV0gPSBgKG1pbi13aWR0aDogJHttaW59cHgpYDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpY3Q7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZWRpYVF1ZXJ5TGlzdE1ldGEge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIG1lZGlhUXVlcnlMaXN0JDogQmVoYXZpb3JTdWJqZWN0PE1lZGlhUXVlcnlMaXN0RXZlbnQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhQnJlYWtwb2ludHNTdGF0ZSB7XG4gIG1hdGNoZXM6IGJvb2xlYW47XG4gIGJyZWFrcG9pbnRzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEZk1lZGlhUXVlcnkge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0Jyb3dzZXI6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcGxhdGZvcm1JZDogT2JqZWN0KSB7XG4gICAgdGhpcy5faXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCk7XG4gIH1cblxuICBub3RTdXBwb3J0ZWQocXVlcnk6IHN0cmluZyk6IFBhcnRpYWw8TWVkaWFRdWVyeUxpc3Q+IHtcbiAgICByZXR1cm4geyBtYXRjaGVzOiBmYWxzZSwgbWVkaWE6IHF1ZXJ5LCBhZGRFdmVudExpc3RlbmVyOiAoKSA9PiB7fSwgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKCkgPT4ge30gfTtcbiAgfVxuXG4gIG1hdGNoTWVkaWEocXVlcnk6IHN0cmluZyk6IE1lZGlhUXVlcnlMaXN0IHtcbiAgICBpZiAodGhpcy5faXNCcm93c2VyICYmIHdpbmRvdy5tYXRjaE1lZGlhKSB7XG4gICAgICByZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RTdXBwb3J0ZWQocXVlcnkpIGFzIE1lZGlhUXVlcnlMaXN0O1xuICAgIH1cbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERmTWVkaWFPYnNlcnZlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3F1ZXJpZXMgPSBuZXcgTWFwPHN0cmluZywgTWVkaWFRdWVyeUxpc3RNZXRhPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX21lZGlhUXVlcnk6IERmTWVkaWFRdWVyeSkge31cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBwcm92aWRlZCBtZWRpYS1xdWVyaWVzIGlzIG1hdGNoaW5nXG4gICAqIHRoZSBjdXJyZW50IHZpZXdwb3J0XG4gICAqL1xuICBtYXRjaGVzKHF1ZXJpZXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcXVlcmllcyA9IHRoaXMuX2ZsYXR0ZW5RdWVyaWVzKEFycmF5LmlzQXJyYXkocXVlcmllcykgPyBxdWVyaWVzIDogW3F1ZXJpZXNdKTtcbiAgICByZXR1cm4gcXVlcmllcy5zb21lKHEgPT4gdGhpcy5fcmVnaXN0ZXJRdWVyeShxKSEubWVkaWFRdWVyeUxpc3QubWF0Y2hlcyk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZXMgYW4gb2JzZXJ2YWJsZSBmb3IgYSBzZXQgb2YgbWVkaWEtcXVlcmllcyB0aGF0IHdpbGwgZW1pdFxuICAgKiBtZXRhIGluZm9ybWF0aW9uIGZvciBhbnkgY2hhbmdlcyBvZiB0aGUgZ2l2ZW4gcXVlcmllcy5cbiAgICogQHBhcmFtIHZhbHVlIE9uZSBvciBtb3JlIG1lZGlhLXF1ZXJpZXMgdG8gYmUgb2JzZXJ2ZWQuXG4gICAqIEByZXR1cm5zIEEgc3RyZWFtIG9mIG1hdGNoZXMgbWV0YSBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZWRpYS1xdWVyaWVzLlxuICAgKi9cbiAgb2JzZXJ2ZShxdWVyaWVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE9ic2VydmFibGU8TWVkaWFCcmVha3BvaW50c1N0YXRlPiB7XG4gICAgcXVlcmllcyA9IHRoaXMuX2ZsYXR0ZW5RdWVyaWVzKEFycmF5LmlzQXJyYXkocXVlcmllcykgPyBxdWVyaWVzIDogW3F1ZXJpZXNdKTtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChxdWVyaWVzLm1hcChxID0+IHRoaXMuX3JlZ2lzdGVyUXVlcnkocSkhLm1lZGlhUXVlcnlMaXN0JCkpLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChldmVudHM6IE1lZGlhUXVlcnlMaXN0RXZlbnRbXSk6IE1lZGlhQnJlYWtwb2ludHNTdGF0ZSA9PlxuICAgICAgICAgIGV2ZW50cy5yZWR1Y2UoXG4gICAgICAgICAgICAocmVzdWx0LCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICByZXN1bHQubWF0Y2hlcyA9IHJlc3VsdC5tYXRjaGVzIHx8IGV2ZW50Lm1hdGNoZXM7XG4gICAgICAgICAgICAgIHJlc3VsdC5icmVha3BvaW50c1tldmVudC5tZWRpYV0gPSBldmVudC5tYXRjaGVzO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgbWF0Y2hlczogZmFsc2UsIGJyZWFrcG9pbnRzOiB7fSB9IGFzIE1lZGlhQnJlYWtwb2ludHNTdGF0ZVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9mbGF0dGVuUXVlcmllcyhxdWVyaWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gcXVlcmllcy5tYXAocSA9PiBxLnNwbGl0KCcsJykpLnJlZHVjZSgoZmxhdCwgYSkgPT4gZmxhdC5jb25jYXQoYSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJRdWVyeShxdWVyeTogc3RyaW5nKTogTWVkaWFRdWVyeUxpc3RNZXRhIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5fcXVlcmllcy5oYXMocXVlcnkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcXVlcmllcy5nZXQocXVlcnkpO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeUxpc3Q6IE1lZGlhUXVlcnlMaXN0ID0gdGhpcy5fbWVkaWFRdWVyeS5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBjb25zdCBxdWVyeUxpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZWRpYVF1ZXJ5TGlzdEV2ZW50Pih7XG4gICAgICBtZWRpYTogcXVlcnksXG4gICAgICBtYXRjaGVzOiBxdWVyeUxpc3QubWF0Y2hlc1xuICAgIH0gYXMgTWVkaWFRdWVyeUxpc3RFdmVudCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGZyb21FdmVudChxdWVyeUxpc3QsICdjaGFuZ2UnKS5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBxdWVyeUxpc3QkLm5leHQoZXZlbnQgYXMgTWVkaWFRdWVyeUxpc3RFdmVudCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgbWV0YTogTWVkaWFRdWVyeUxpc3RNZXRhID0geyBtZWRpYVF1ZXJ5TGlzdDogcXVlcnlMaXN0LCBtZWRpYVF1ZXJ5TGlzdCQ6IHF1ZXJ5TGlzdCQgfTtcbiAgICB0aGlzLl9xdWVyaWVzLnNldChxdWVyeSwgbWV0YSk7XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
4
|
-
export class DfModalService {
|
|
5
|
-
constructor(modalService, rendererFactory) {
|
|
6
|
-
this.modalService = modalService;
|
|
7
|
-
this.rendererFactory = rendererFactory;
|
|
8
|
-
this.renderer = this.rendererFactory.createRenderer(null, null);
|
|
9
|
-
}
|
|
10
|
-
open(content, options) {
|
|
11
|
-
let modalRef;
|
|
12
|
-
if (options && options.container) {
|
|
13
|
-
modalRef = this.modalService.open(content, options);
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
modalRef = this.modalService.open(content, Object.assign({}, { container: 'body' }, options));
|
|
17
|
-
}
|
|
18
|
-
// we add the 'df-modal-open' class to the body when the modal is open. We remove it when the modal is closed/dismissed
|
|
19
|
-
this.renderer.addClass(document.body, 'df-modal-open');
|
|
20
|
-
modalRef.result.then(() => {
|
|
21
|
-
this.renderer.removeClass(document.body, 'df-modal-open');
|
|
22
|
-
}, () => {
|
|
23
|
-
this.renderer.removeClass(document.body, 'df-modal-open');
|
|
24
|
-
});
|
|
25
|
-
return modalRef;
|
|
26
|
-
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfModalService, deps: [{ token: i1.NgbModal }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfModalService, providedIn: 'root' }); }
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfModalService, decorators: [{
|
|
31
|
-
type: Injectable,
|
|
32
|
-
args: [{
|
|
33
|
-
providedIn: 'root'
|
|
34
|
-
}]
|
|
35
|
-
}], ctorParameters: () => [{ type: i1.NgbModal }, { type: i0.RendererFactory2 }] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci9tb2RhbC9tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQStCLE1BQU0sZUFBZSxDQUFDOzs7QUFLeEUsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBb0IsWUFBc0IsRUFBVSxlQUFpQztRQUFqRSxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNuRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQVksRUFBRSxPQUF5QjtRQUMxQyxJQUFJLFFBQXFCLENBQUM7UUFDMUIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUNELHVIQUF1SDtRQUN2SCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZELFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNsQixHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzVELENBQUMsRUFDRCxHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0F6QlUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ2JNb2RhbE9wdGlvbnMsIE5nYk1vZGFsUmVmIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGZNb2RhbFNlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5Mikge1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgfVxuXG4gIG9wZW4oY29udGVudDogYW55LCBvcHRpb25zPzogTmdiTW9kYWxPcHRpb25zKTogTmdiTW9kYWxSZWYge1xuICAgIGxldCBtb2RhbFJlZjogTmdiTW9kYWxSZWY7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5jb250YWluZXIpIHtcbiAgICAgIG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihjb250ZW50LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGNvbnRlbnQsIE9iamVjdC5hc3NpZ24oe30sIHsgY29udGFpbmVyOiAnYm9keScgfSwgb3B0aW9ucykpO1xuICAgIH1cbiAgICAvLyB3ZSBhZGQgdGhlICdkZi1tb2RhbC1vcGVuJyBjbGFzcyB0byB0aGUgYm9keSB3aGVuIHRoZSBtb2RhbCBpcyBvcGVuLiBXZSByZW1vdmUgaXQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkL2Rpc21pc3NlZFxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ2RmLW1vZGFsLW9wZW4nKTtcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbihcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCAnZGYtbW9kYWwtb3BlbicpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCAnZGYtbW9kYWwtb3BlbicpO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIG1vZGFsUmVmO1xuICB9XG59XG4iXX0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class DfPopoverConfig extends NgbPopoverConfig {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(...arguments);
|
|
7
|
-
this.autoClose = 'outside';
|
|
8
|
-
}
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfPopoverConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfPopoverConfig }); }
|
|
11
|
-
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfPopoverConfig, decorators: [{
|
|
13
|
-
type: Injectable
|
|
14
|
-
}] });
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvcG9wb3Zlci9jb25maWcvcG9wb3Zlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBRHJEOztRQUVXLGNBQVMsR0FBRyxTQUFzQixDQUFDO0tBQzdDOzhHQUZZLGVBQWU7a0hBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nYlBvcG92ZXJDb25maWcgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZlBvcG92ZXJDb25maWcgZXh0ZW5kcyBOZ2JQb3BvdmVyQ29uZmlnIHtcbiAgb3ZlcnJpZGUgYXV0b0Nsb3NlID0gJ291dHNpZGUnIGFzICdvdXRzaWRlJztcbn1cbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { NgbPopoverModule, NgbPopoverConfig } from '@ng-bootstrap/ng-bootstrap';
|
|
3
|
-
import { DfPopoverConfig } from './config/popover.config';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class DfPopoverModule {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: DfPopoverModule, exports: [NgbPopoverModule] }); }
|
|
8
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfPopoverModule, providers: [{ provide: NgbPopoverConfig, useClass: DfPopoverConfig }], imports: [NgbPopoverModule] }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfPopoverModule, decorators: [{
|
|
11
|
-
type: NgModule,
|
|
12
|
-
args: [{
|
|
13
|
-
exports: [NgbPopoverModule],
|
|
14
|
-
providers: [{ provide: NgbPopoverConfig, useClass: DfPopoverConfig }]
|
|
15
|
-
}]
|
|
16
|
-
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNMUQsTUFBTSxPQUFPLGVBQWU7OEdBQWYsZUFBZTsrR0FBZixlQUFlLFlBSGhCLGdCQUFnQjsrR0FHZixlQUFlLGFBRmYsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsWUFEM0QsZ0JBQWdCOzsyRkFHZixlQUFlO2tCQUozQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUM7aUJBQ3RFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYlBvcG92ZXJNb2R1bGUsIE5nYlBvcG92ZXJDb25maWcgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBEZlBvcG92ZXJDb25maWcgfSBmcm9tICcuL2NvbmZpZy9wb3BvdmVyLmNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtOZ2JQb3BvdmVyTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ2JQb3BvdmVyQ29uZmlnLCB1c2VDbGFzczogRGZQb3BvdmVyQ29uZmlnIH1dXG59KVxuZXhwb3J0IGNsYXNzIERmUG9wb3Zlck1vZHVsZSB7fVxuIl19
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DfProgressbarComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.infiniteAnimation = false;
|
|
6
|
-
/**
|
|
7
|
-
* Current value of the progressBar. If 'maxValue' is not defined, value represents a percentage. Otherwise, progress
|
|
8
|
-
* bar percentage value will be computed based on the ratio of 'value/maxValue'
|
|
9
|
-
*/
|
|
10
|
-
this._value = 0;
|
|
11
|
-
this._maxValue = 100;
|
|
12
|
-
/**
|
|
13
|
-
* Text to be displayed on top of the progressbar
|
|
14
|
-
*/
|
|
15
|
-
this._text = '';
|
|
16
|
-
this._percentageValue = 0;
|
|
17
|
-
this.percentageValueChange = new EventEmitter();
|
|
18
|
-
this.computedText = '';
|
|
19
|
-
this.displayProgressBar = false;
|
|
20
|
-
this.FADING_DELAY_MS = 1500; // if triggered by observables, number of milliseconds after progress bar disappears once stopped
|
|
21
|
-
this.animationOngoing = false;
|
|
22
|
-
}
|
|
23
|
-
set value(newValue) {
|
|
24
|
-
this._value = newValue;
|
|
25
|
-
this.updatePercentageValue();
|
|
26
|
-
this.updateText();
|
|
27
|
-
}
|
|
28
|
-
get value() {
|
|
29
|
-
return this._value;
|
|
30
|
-
}
|
|
31
|
-
set maxValue(newValue) {
|
|
32
|
-
this._maxValue = newValue;
|
|
33
|
-
this.updatePercentageValue();
|
|
34
|
-
this.updateText();
|
|
35
|
-
}
|
|
36
|
-
get maxValue() {
|
|
37
|
-
return this._maxValue;
|
|
38
|
-
}
|
|
39
|
-
set text(newText) {
|
|
40
|
-
this._text = newText;
|
|
41
|
-
this.updateText();
|
|
42
|
-
}
|
|
43
|
-
get text() {
|
|
44
|
-
return this._text;
|
|
45
|
-
}
|
|
46
|
-
set percentageValue(newValue) {
|
|
47
|
-
this._percentageValue = newValue;
|
|
48
|
-
this.percentageValueChange.emit(newValue);
|
|
49
|
-
}
|
|
50
|
-
get percentageValue() {
|
|
51
|
-
return this._percentageValue;
|
|
52
|
-
}
|
|
53
|
-
ngOnInit() {
|
|
54
|
-
const isTriggeredByObservables = this.start$ && this.end$;
|
|
55
|
-
if (isTriggeredByObservables) {
|
|
56
|
-
this.startSubscription = this.start$.subscribe((_) => {
|
|
57
|
-
this.animationOngoing = true;
|
|
58
|
-
this.stopAutomaticIncrement();
|
|
59
|
-
this.resetProgressBarValues();
|
|
60
|
-
this.displayProgressBar = true;
|
|
61
|
-
this.startAutomaticIncrement();
|
|
62
|
-
});
|
|
63
|
-
this.endSubscription = this.end$.subscribe((_) => {
|
|
64
|
-
if (this.animationOngoing) {
|
|
65
|
-
this.animationOngoing = false;
|
|
66
|
-
this.stopAutomaticIncrement();
|
|
67
|
-
this.value = 100;
|
|
68
|
-
setTimeout(() => {
|
|
69
|
-
this.displayProgressBar = false;
|
|
70
|
-
}, this.FADING_DELAY_MS);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
this.displayProgressBar = true;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
ngOnDestroy() {
|
|
79
|
-
if (this.startSubscription) {
|
|
80
|
-
this.startSubscription.unsubscribe();
|
|
81
|
-
}
|
|
82
|
-
if (this.endSubscription) {
|
|
83
|
-
this.endSubscription.unsubscribe();
|
|
84
|
-
}
|
|
85
|
-
this.stopAutomaticIncrement();
|
|
86
|
-
}
|
|
87
|
-
updateText() {
|
|
88
|
-
const precentagePlaceholder = '%PERCENTAGE%';
|
|
89
|
-
if (this.text.includes(precentagePlaceholder)) {
|
|
90
|
-
const advancementInPercents = `${Math.floor(this.percentageValue)}%`;
|
|
91
|
-
this.computedText = this.text.replace(precentagePlaceholder, advancementInPercents);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
this.computedText = this.text;
|
|
95
|
-
}
|
|
96
|
-
updatePercentageValue() {
|
|
97
|
-
if (this.value > this.maxValue) {
|
|
98
|
-
this.percentageValue = 100;
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
this.percentageValue = Math.floor((this.value / this.maxValue) * 100);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Randomly increase the percentage but making sure that it can never reach 100%
|
|
105
|
-
*/
|
|
106
|
-
increasePercentage() {
|
|
107
|
-
const maximumReachableValue = 90;
|
|
108
|
-
const remainingPercentage = maximumReachableValue - this.value;
|
|
109
|
-
const averageIncreaseRatio = 0.015;
|
|
110
|
-
const randomIncreaseRatio = Math.random() * 2 * averageIncreaseRatio;
|
|
111
|
-
this.value += randomIncreaseRatio * remainingPercentage;
|
|
112
|
-
this.updatePercentageValue();
|
|
113
|
-
this.updateText();
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Clears the 'setInterval' function so that the automatic increase of the progressbar stops
|
|
117
|
-
*/
|
|
118
|
-
stopAutomaticIncrement() {
|
|
119
|
-
clearInterval(this.intervalId);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Periodically calls a function which increments the value of the progressbar
|
|
123
|
-
*/
|
|
124
|
-
startAutomaticIncrement() {
|
|
125
|
-
this.intervalId = setInterval(this.increasePercentage.bind(this), 50);
|
|
126
|
-
}
|
|
127
|
-
resetProgressBarValues() {
|
|
128
|
-
this.value = 0;
|
|
129
|
-
this.maxValue = 100;
|
|
130
|
-
}
|
|
131
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfProgressbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
132
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: DfProgressbarComponent, isStandalone: true, selector: "df-progressbar", inputs: { infiniteAnimation: "infiniteAnimation", value: "value", maxValue: "maxValue", text: "text", start$: "start$", end$: "end$", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel" }, outputs: { percentageValueChange: "percentageValueChange" }, ngImport: i0, template: "@if (displayProgressBar) {\n @if (computedText) {\n <div class=\"progressbar-text mb-2\">{{ computedText }}</div>\n }\n @if (infiniteAnimation) {\n <div\n class=\"progress\"\n role=\"progressbar\"\n aria-valuetext=\"indeterminate\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-label]=\"!ariaLabelledBy && ariaLabel ? ariaLabel : null\"\n >\n <div class=\"progress-bar infinite-animation\"></div>\n </div>\n } @else {\n <div\n class=\"progress\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"value\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"maxValue\"\n [attr.aria-valuetext]=\"computedText ? computedText : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-label]=\"!ariaLabelledBy && ariaLabel ? ariaLabel : null\"\n >\n <div [style.width.%]=\"percentageValue\" class=\"progress-bar\"></div>\n </div>\n }\n}\n" }); }
|
|
133
|
-
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfProgressbarComponent, decorators: [{
|
|
135
|
-
type: Component,
|
|
136
|
-
args: [{ selector: 'df-progressbar', standalone: true, template: "@if (displayProgressBar) {\n @if (computedText) {\n <div class=\"progressbar-text mb-2\">{{ computedText }}</div>\n }\n @if (infiniteAnimation) {\n <div\n class=\"progress\"\n role=\"progressbar\"\n aria-valuetext=\"indeterminate\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-label]=\"!ariaLabelledBy && ariaLabel ? ariaLabel : null\"\n >\n <div class=\"progress-bar infinite-animation\"></div>\n </div>\n } @else {\n <div\n class=\"progress\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"value\"\n aria-valuemin=\"0\"\n [attr.aria-valuemax]=\"maxValue\"\n [attr.aria-valuetext]=\"computedText ? computedText : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-label]=\"!ariaLabelledBy && ariaLabel ? ariaLabel : null\"\n >\n <div [style.width.%]=\"percentageValue\" class=\"progress-bar\"></div>\n </div>\n }\n}\n" }]
|
|
137
|
-
}], propDecorators: { infiniteAnimation: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}], value: [{
|
|
140
|
-
type: Input
|
|
141
|
-
}], maxValue: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], text: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], start$: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], end$: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], ariaLabelledBy: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], ariaLabel: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], percentageValueChange: [{
|
|
154
|
-
type: Output
|
|
155
|
-
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci9wcm9ncmVzc2Jhci9wcm9ncmVzc2Jhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRMUYsTUFBTSxPQUFPLHNCQUFzQjtJQUxuQztRQU1XLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUNuQzs7O1dBR0c7UUFDSyxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBYVgsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQWF4Qjs7V0FFRztRQUNLLFVBQUssR0FBRyxFQUFFLENBQUM7UUFtQ1gscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBVW5CLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFdEQsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLG9CQUFlLEdBQUcsSUFBSSxDQUFDLENBQUMsaUdBQWlHO1FBSXhILHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQXNGbEM7SUF0S0MsSUFDSSxLQUFLLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7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QUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQzs4R0E3S1Usc0JBQXNCO2tHQUF0QixzQkFBc0IseVVDUm5DLG04QkE2QkE7OzJGRHJCYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBRWQsSUFBSTs4QkFHUCxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUYsS0FBSztzQkFEUixLQUFLO2dCQWNGLFFBQVE7c0JBRFgsS0FBSztnQkFpQkYsSUFBSTtzQkFEUCxLQUFLO2dCQWNHLE1BQU07c0JBQWQsS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQVlJLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RmLXByb2dyZXNzYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICdwcm9ncmVzc2Jhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZQcm9ncmVzc2JhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaW5maW5pdGVBbmltYXRpb24gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIHByb2dyZXNzQmFyLiBJZiAnbWF4VmFsdWUnIGlzIG5vdCBkZWZpbmVkLCB2YWx1ZSByZXByZXNlbnRzIGEgcGVyY2VudGFnZS4gT3RoZXJ3aXNlLCBwcm9ncmVzc1xuICAgKiBiYXIgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIGJlIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSByYXRpbyBvZiAndmFsdWUvbWF4VmFsdWUnXG4gICAqL1xuICBwcml2YXRlIF92YWx1ZSA9IDA7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMudXBkYXRlUGVyY2VudGFnZVZhbHVlKCk7XG4gICAgdGhpcy51cGRhdGVUZXh0KCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9tYXhWYWx1ZSA9IDEwMDtcblxuICBASW5wdXQoKVxuICBzZXQgbWF4VmFsdWUobmV3VmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX21heFZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy51cGRhdGVQZXJjZW50YWdlVmFsdWUoKTtcbiAgICB0aGlzLnVwZGF0ZVRleHQoKTtcbiAgfVxuXG4gIGdldCBtYXhWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXh0IHRvIGJlIGRpc3BsYXllZCBvbiB0b3Agb2YgdGhlIHByb2dyZXNzYmFyXG4gICAqL1xuICBwcml2YXRlIF90ZXh0ID0gJyc7XG5cbiAgQElucHV0KClcbiAgc2V0IHRleHQobmV3VGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGV4dCA9IG5ld1RleHQ7XG4gICAgdGhpcy51cGRhdGVUZXh0KCk7XG4gIH1cblxuICBnZXQgdGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdXNlZCB0byB0cmlnZ2VyIHRoZSBzdGFydCBvZiB0aGUgbG9hZGluZy5cbiAgICogV2hlbiBlbWl0dGluZywgcHJvZ3Jlc3NiYXIgd2lsbCBzdGFydCB0byByYW5kb21seSBpbmNyZW1lbnQgdG93YXJkIDEwMCUuXG4gICAqL1xuICBASW5wdXQoKSBzdGFydCQ/OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdXNlZCB0byB0cmlnZ2VyIHRoZSBlbmQgb2YgdGhlIGxvYWRpbmcuXG4gICAqIFdoZW4gZW1pdHRpbmcsIGl0IGZvcmNlcyB0aGUgcHJvZ3Jlc3NiYXIgdG8gcmVhY2ggMTAwJS5cbiAgICovXG4gIEBJbnB1dCgpIGVuZCQ/OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgLyoqXG4gICAqIElkIG9mIHRoZSBsYWJlbCB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwcm9ncmVzcyBiYXIuXG4gICAqIEl0IGlzIHVzZWQgaW4gcHJpb3JpdHkgY29tcGFyZWQgdG8gdGhlIGFyaWFMYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmlhIGxhYmVsIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHByb2dyZXNzIGJhciBpZiBubyBhcmlhTGFiZWxsZWRCeSBpcyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfcGVyY2VudGFnZVZhbHVlID0gMDtcbiAgc2V0IHBlcmNlbnRhZ2VWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGVyY2VudGFnZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5wZXJjZW50YWdlVmFsdWVDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gIH1cblxuICBnZXQgcGVyY2VudGFnZVZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcmNlbnRhZ2VWYWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwZXJjZW50YWdlVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwdWJsaWMgY29tcHV0ZWRUZXh0ID0gJyc7XG4gIHB1YmxpYyBkaXNwbGF5UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcbiAgcHVibGljIEZBRElOR19ERUxBWV9NUyA9IDE1MDA7IC8vIGlmIHRyaWdnZXJlZCBieSBvYnNlcnZhYmxlcywgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBhZnRlciBwcm9ncmVzcyBiYXIgZGlzYXBwZWFycyBvbmNlIHN0b3BwZWRcbiAgcHJpdmF0ZSBzdGFydFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBlbmRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaW50ZXJ2YWxJZDogYW55OyAvLyBzdG9yZSB0aGUgcmVzdWx0IG9mICdzZXRJbnRlcnZhbCcgZnVuY3Rpb24gc28gdGhhdCB3ZSBjYW4gY2xlYXIgaXQgb25EZXN0cm95XG4gIHByaXZhdGUgYW5pbWF0aW9uT25nb2luZyA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGlzVHJpZ2dlcmVkQnlPYnNlcnZhYmxlcyA9IHRoaXMuc3RhcnQkICYmIHRoaXMuZW5kJDtcbiAgICBpZiAoaXNUcmlnZ2VyZWRCeU9ic2VydmFibGVzKSB7XG4gICAgICB0aGlzLnN0YXJ0U3Vic2NyaXB0aW9uID0gdGhpcy5zdGFydCQhLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLmFuaW1hdGlvbk9uZ29pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BBdXRvbWF0aWNJbmNyZW1lbnQoKTtcbiAgICAgICAgdGhpcy5yZXNldFByb2dyZXNzQmFyVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuZGlzcGxheVByb2dyZXNzQmFyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydEF1dG9tYXRpY0luY3JlbWVudCgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZW5kJCEuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbk9uZ29pbmcpIHtcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvbk9uZ29pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnN0b3BBdXRvbWF0aWNJbmNyZW1lbnQoKTtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gMTAwO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UHJvZ3Jlc3NCYXIgPSBmYWxzZTtcbiAgICAgICAgICB9LCB0aGlzLkZBRElOR19ERUxBWV9NUyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlQcm9ncmVzc0JhciA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3RhcnRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RhcnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmVuZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnN0b3BBdXRvbWF0aWNJbmNyZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGV4dCgpIHtcbiAgICBjb25zdCBwcmVjZW50YWdlUGxhY2Vob2xkZXIgPSAnJVBFUkNFTlRBR0UlJztcbiAgICBpZiAodGhpcy50ZXh0LmluY2x1ZGVzKHByZWNlbnRhZ2VQbGFjZWhvbGRlcikpIHtcbiAgICAgIGNvbnN0IGFkdmFuY2VtZW50SW5QZXJjZW50cyA9IGAke01hdGguZmxvb3IodGhpcy5wZXJjZW50YWdlVmFsdWUpfSVgO1xuICAgICAgdGhpcy5jb21wdXRlZFRleHQgPSB0aGlzLnRleHQucmVwbGFjZShwcmVjZW50YWdlUGxhY2Vob2xkZXIsIGFkdmFuY2VtZW50SW5QZXJjZW50cyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29tcHV0ZWRUZXh0ID0gdGhpcy50ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQZXJjZW50YWdlVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUgPiB0aGlzLm1heFZhbHVlKSB7XG4gICAgICB0aGlzLnBlcmNlbnRhZ2VWYWx1ZSA9IDEwMDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wZXJjZW50YWdlVmFsdWUgPSBNYXRoLmZsb29yKCh0aGlzLnZhbHVlIC8gdGhpcy5tYXhWYWx1ZSkgKiAxMDApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJhbmRvbWx5IGluY3JlYXNlIHRoZSBwZXJjZW50YWdlIGJ1dCBtYWtpbmcgc3VyZSB0aGF0IGl0IGNhbiBuZXZlciByZWFjaCAxMDAlXG4gICAqL1xuICBwcml2YXRlIGluY3JlYXNlUGVyY2VudGFnZSgpIHtcbiAgICBjb25zdCBtYXhpbXVtUmVhY2hhYmxlVmFsdWUgPSA5MDtcbiAgICBjb25zdCByZW1haW5pbmdQZXJjZW50YWdlID0gbWF4aW11bVJlYWNoYWJsZVZhbHVlIC0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBhdmVyYWdlSW5jcmVhc2VSYXRpbyA9IDAuMDE1O1xuICAgIGNvbnN0IHJhbmRvbUluY3JlYXNlUmF0aW8gPSBNYXRoLnJhbmRvbSgpICogMiAqIGF2ZXJhZ2VJbmNyZWFzZVJhdGlvO1xuICAgIHRoaXMudmFsdWUgKz0gcmFuZG9tSW5jcmVhc2VSYXRpbyAqIHJlbWFpbmluZ1BlcmNlbnRhZ2U7XG4gICAgdGhpcy51cGRhdGVQZXJjZW50YWdlVmFsdWUoKTtcbiAgICB0aGlzLnVwZGF0ZVRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlICdzZXRJbnRlcnZhbCcgZnVuY3Rpb24gc28gdGhhdCB0aGUgYXV0b21hdGljIGluY3JlYXNlIG9mIHRoZSBwcm9ncmVzc2JhciBzdG9wc1xuICAgKi9cbiAgcHJpdmF0ZSBzdG9wQXV0b21hdGljSW5jcmVtZW50KCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJpb2RpY2FsbHkgY2FsbHMgYSBmdW5jdGlvbiB3aGljaCBpbmNyZW1lbnRzIHRoZSB2YWx1ZSBvZiB0aGUgcHJvZ3Jlc3NiYXJcbiAgICovXG4gIHByaXZhdGUgc3RhcnRBdXRvbWF0aWNJbmNyZW1lbnQoKSB7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwodGhpcy5pbmNyZWFzZVBlcmNlbnRhZ2UuYmluZCh0aGlzKSwgNTApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFByb2dyZXNzQmFyVmFsdWVzKCkge1xuICAgIHRoaXMudmFsdWUgPSAwO1xuICAgIHRoaXMubWF4VmFsdWUgPSAxMDA7XG4gIH1cbn1cbiIsIkBpZiAoZGlzcGxheVByb2dyZXNzQmFyKSB7XG4gIEBpZiAoY29tcHV0ZWRUZXh0KSB7XG4gICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyLXRleHQgbWItMlwiPnt7IGNvbXB1dGVkVGV4dCB9fTwvZGl2PlxuICB9XG4gIEBpZiAoaW5maW5pdGVBbmltYXRpb24pIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInByb2dyZXNzXCJcbiAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICBhcmlhLXZhbHVldGV4dD1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIhYXJpYUxhYmVsbGVkQnkgJiYgYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBpbmZpbml0ZS1hbmltYXRpb25cIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmVzc1wiXG4gICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXG4gICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFZhbHVlXCJcbiAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cImNvbXB1dGVkVGV4dCA/IGNvbXB1dGVkVGV4dCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIhYXJpYUxhYmVsbGVkQnkgJiYgYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGRpdiBbc3R5bGUud2lkdGguJV09XCJwZXJjZW50YWdlVmFsdWVcIiBjbGFzcz1cInByb2dyZXNzLWJhclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG59XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { DfProgressbarComponent } from './progressbar.component';
|
|
3
|
-
import { NgbProgressbarModule } from '@ng-bootstrap/ng-bootstrap';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export { DfProgressbarComponent } from './progressbar.component';
|
|
6
|
-
export class DfProgressbarModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfProgressbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: DfProgressbarModule, imports: [DfProgressbarComponent], exports: [DfProgressbarComponent, NgbProgressbarModule] }); }
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfProgressbarModule, imports: [NgbProgressbarModule] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfProgressbarModule, decorators: [{
|
|
12
|
-
type: NgModule,
|
|
13
|
-
args: [{
|
|
14
|
-
imports: [DfProgressbarComponent],
|
|
15
|
-
exports: [DfProgressbarComponent, NgbProgressbarModule]
|
|
16
|
-
}]
|
|
17
|
-
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NiYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3Byb2dyZXNzYmFyL3Byb2dyZXNzYmFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU1qRSxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixZQUhwQixzQkFBc0IsYUFDdEIsc0JBQXNCLEVBQUUsb0JBQW9COytHQUUzQyxtQkFBbUIsWUFGSSxvQkFBb0I7OzJGQUUzQyxtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZlByb2dyZXNzYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9ncmVzc2Jhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdiUHJvZ3Jlc3NiYXJNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmV4cG9ydCB7IERmUHJvZ3Jlc3NiYXJDb21wb25lbnQgfSBmcm9tICcuL3Byb2dyZXNzYmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtEZlByb2dyZXNzYmFyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RmUHJvZ3Jlc3NiYXJDb21wb25lbnQsIE5nYlByb2dyZXNzYmFyTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEZlByb2dyZXNzYmFyTW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
export class DfDefaultSpinnerComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.isGlobalSpinner = false;
|
|
8
|
-
this.contentClass = 'spinner-border text-primary';
|
|
9
|
-
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfDefaultSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: DfDefaultSpinnerComponent, isStandalone: true, selector: "df-default-spinner", inputs: { isGlobalSpinner: "isGlobalSpinner", contentClass: "contentClass", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<div [ngClass]=\"contentClass\" [attr.role]=\"isGlobalSpinner ? 'alert' : 'status'\">\n <span class=\"visually-hidden\">\n @if (ariaLabel) {\n {{ ariaLabel }}\n } @else {\n <ng-container i18n=\"@@df.progressindicator.default.spinner.ariaLabel\">Loading...</ng-container>\n }\n </span>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfDefaultSpinnerComponent, decorators: [{
|
|
14
|
-
type: Component,
|
|
15
|
-
args: [{ selector: 'df-default-spinner', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div [ngClass]=\"contentClass\" [attr.role]=\"isGlobalSpinner ? 'alert' : 'status'\">\n <span class=\"visually-hidden\">\n @if (ariaLabel) {\n {{ ariaLabel }}\n } @else {\n <ng-container i18n=\"@@df.progressindicator.default.spinner.ariaLabel\">Loading...</ng-container>\n }\n </span>\n</div>\n" }]
|
|
16
|
-
}], propDecorators: { isGlobalSpinner: [{
|
|
17
|
-
type: Input
|
|
18
|
-
}], contentClass: [{
|
|
19
|
-
type: Input
|
|
20
|
-
}], ariaLabel: [{
|
|
21
|
-
type: Input
|
|
22
|
-
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zcGlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci9wcm9ncmVzc2luZGljYXRvci9kZWZhdWx0L2RlZmF1bHQtc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvcHJvZ3Jlc3NpbmRpY2F0b3IvZGVmYXVsdC9kZWZhdWx0LXNwaW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFTL0MsTUFBTSxPQUFPLHlCQUF5QjtJQVB0QztRQVFXLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsNkJBQTZCLENBQUM7S0FFdkQ7OEdBSlkseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0xDVnRDLDZUQVNBLDJDRERZLFlBQVk7OzJGQUVYLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBRWIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBR2QsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGYtZGVmYXVsdC1zcGlubmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEZkRlZmF1bHRTcGlubmVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaXNHbG9iYWxTcGlubmVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbnRlbnRDbGFzcyA9ICdzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnknO1xuICBASW5wdXQoKSBhcmlhTGFiZWw/OiBzdHJpbmc7XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImNvbnRlbnRDbGFzc1wiIFthdHRyLnJvbGVdPVwiaXNHbG9iYWxTcGlubmVyID8gJ2FsZXJ0JyA6ICdzdGF0dXMnXCI+XG4gIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+XG4gICAgQGlmIChhcmlhTGFiZWwpIHtcbiAgICAgIHt7IGFyaWFMYWJlbCB9fVxuICAgIH0gQGVsc2Uge1xuICAgICAgPG5nLWNvbnRhaW5lciBpMThuPVwiQEBkZi5wcm9ncmVzc2luZGljYXRvci5kZWZhdWx0LnNwaW5uZXIuYXJpYUxhYmVsXCI+TG9hZGluZy4uLjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DfProgressIndicatorBackdropComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.isGlobalBackdrop = true;
|
|
6
|
-
}
|
|
7
|
-
get classes() {
|
|
8
|
-
return `df-progressindicator-backdrop ${this.backdropClass || ''} ${this.isGlobalBackdrop ? 'df-progressindicator-backdrop-global' : 'df-progressindicator-backdrop-contextual'}`;
|
|
9
|
-
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfProgressIndicatorBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: DfProgressIndicatorBackdropComponent, isStandalone: true, selector: "df-progressindicator-backdrop", inputs: { backdropClass: "backdropClass", isGlobalBackdrop: "isGlobalBackdrop" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfProgressIndicatorBackdropComponent, decorators: [{
|
|
14
|
-
type: Component,
|
|
15
|
-
args: [{
|
|
16
|
-
selector: 'df-progressindicator-backdrop',
|
|
17
|
-
template: '',
|
|
18
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
19
|
-
standalone: true
|
|
20
|
-
}]
|
|
21
|
-
}], propDecorators: { classes: [{
|
|
22
|
-
type: HostBinding,
|
|
23
|
-
args: ['class']
|
|
24
|
-
}], backdropClass: [{
|
|
25
|
-
type: Input
|
|
26
|
-
}], isGlobalBackdrop: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NpbmRpY2F0b3ItYmFja2Ryb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL3Byb2dyZXNzaW5kaWNhdG9yLWJhY2tkcm9wLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUXZGLE1BQU0sT0FBTyxvQ0FBb0M7SUFOakQ7UUFhVyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7S0FDbEM7SUFQQyxJQUEwQixPQUFPO1FBQy9CLE9BQU8saUNBQWlDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxJQUM5RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsQ0FBQywwQ0FDbkUsRUFBRSxDQUFDO0lBQ0wsQ0FBQzs4R0FMVSxvQ0FBb0M7a0dBQXBDLG9DQUFvQyw4TkFKckMsRUFBRTs7MkZBSUQsb0NBQW9DO2tCQU5oRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRTJCLE9BQU87c0JBQWhDLFdBQVc7dUJBQUMsT0FBTztnQkFLWCxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi1wcm9ncmVzc2luZGljYXRvci1iYWNrZHJvcCcsXG4gIHRlbXBsYXRlOiAnJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZQcm9ncmVzc0luZGljYXRvckJhY2tkcm9wQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCBjbGFzc2VzKCkge1xuICAgIHJldHVybiBgZGYtcHJvZ3Jlc3NpbmRpY2F0b3ItYmFja2Ryb3AgJHt0aGlzLmJhY2tkcm9wQ2xhc3MgfHwgJyd9ICR7XG4gICAgICB0aGlzLmlzR2xvYmFsQmFja2Ryb3AgPyAnZGYtcHJvZ3Jlc3NpbmRpY2F0b3ItYmFja2Ryb3AtZ2xvYmFsJyA6ICdkZi1wcm9ncmVzc2luZGljYXRvci1iYWNrZHJvcC1jb250ZXh0dWFsJ1xuICAgIH1gO1xuICB9XG4gIEBJbnB1dCgpIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzR2xvYmFsQmFja2Ryb3AgPSB0cnVlO1xufVxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export var DfProgressIndicatorContentType;
|
|
2
|
-
(function (DfProgressIndicatorContentType) {
|
|
3
|
-
DfProgressIndicatorContentType["SPINNER"] = "spinner";
|
|
4
|
-
DfProgressIndicatorContentType["PROGRESSBAR"] = "progressbar";
|
|
5
|
-
})(DfProgressIndicatorContentType || (DfProgressIndicatorContentType = {}));
|
|
6
|
-
export class DfProgressIndicatorContentSpinner {
|
|
7
|
-
constructor(spinnerInput) {
|
|
8
|
-
this.type = DfProgressIndicatorContentType.SPINNER;
|
|
9
|
-
this.spinnerInput = spinnerInput;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class DfProgressIndicatorContentProgressBar {
|
|
13
|
-
constructor(progressBarInput, position) {
|
|
14
|
-
this.type = DfProgressIndicatorContentType.PROGRESSBAR;
|
|
15
|
-
this.progressBarInput = progressBarInput;
|
|
16
|
-
this.position = position || DfProgressIndicatorContentPosition.TOP;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export var DfProgressIndicatorContentPosition;
|
|
20
|
-
(function (DfProgressIndicatorContentPosition) {
|
|
21
|
-
DfProgressIndicatorContentPosition["TOP"] = "top";
|
|
22
|
-
DfProgressIndicatorContentPosition["BOTTOM"] = "bottom";
|
|
23
|
-
DfProgressIndicatorContentPosition["CENTERED"] = "centered";
|
|
24
|
-
})(DfProgressIndicatorContentPosition || (DfProgressIndicatorContentPosition = {}));
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3NpbmRpY2F0b3ItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3Byb2dyZXNzaW5kaWNhdG9yL3Byb2dyZXNzaW5kaWNhdG9yLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2QkEsTUFBTSxDQUFOLElBQVksOEJBR1g7QUFIRCxXQUFZLDhCQUE4QjtJQUN4QyxxREFBbUIsQ0FBQTtJQUNuQiw2REFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSFcsOEJBQThCLEtBQTlCLDhCQUE4QixRQUd6QztBQUVELE1BQU0sT0FBTyxpQ0FBaUM7SUFPNUMsWUFBWSxZQUE0RDtRQU4vRCxTQUFJLEdBQUcsOEJBQThCLENBQUMsT0FBTyxDQUFDO1FBT3JELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxxQ0FBcUM7SUFPaEQsWUFBWSxnQkFBd0MsRUFBRSxRQUE2QztRQU4xRixTQUFJLEdBQUcsOEJBQThCLENBQUMsV0FBVyxDQUFDO1FBT3pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxrQ0FBa0MsQ0FBQyxHQUFHLENBQUM7SUFDckUsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFOLElBQVksa0NBSVg7QUFKRCxXQUFZLGtDQUFrQztJQUM1QyxpREFBVyxDQUFBO0lBQ1gsdURBQWlCLENBQUE7SUFDakIsMkRBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUpXLGtDQUFrQyxLQUFsQyxrQ0FBa0MsUUFJN0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERmUHJvZ3Jlc3NJbmRpY2F0b3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJhY2tkcm9wIGVsZW1lbnQgd2lsbCBiZSBjcmVhdGVkIGZvciBhIGdpdmVuIHByb2dyZXNzIGluZGljYXRvci5cbiAgICogRGVmYXVsdCB2YWx1ZSBpcyBgdHJ1ZWAuXG4gICAqL1xuICBiYWNrZHJvcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgc2VsZWN0b3Igc3BlY2lmeWluZyB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGVsZW1lbnRzIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgICogSWYgbm90IHNwZWNpZmllZCwgd2lsbCBiZSBgYm9keWAuXG4gICAqL1xuICBjb250YWluZXI/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogQSBjdXN0b20gY2xhc3MgdG8gYXBwZW5kIHRvIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgY29udGFpbmVyLlxuICAgKi9cbiAgY29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHBvc2l0aW9uIG9mIHRoZSBjb250ZW50IGluIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBwb3NpdGlvbj86IERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250ZW50UG9zaXRpb247XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGNsYXNzIHRvIGFwcGVuZCB0byB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGJhY2tkcm9wLlxuICAgKi9cbiAgYmFja2Ryb3BDbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gRGZQcm9ncmVzc0luZGljYXRvckNvbnRlbnRUeXBlIHtcbiAgU1BJTk5FUiA9ICdzcGlubmVyJyxcbiAgUFJPR1JFU1NCQVIgPSAncHJvZ3Jlc3NiYXInXG59XG5cbmV4cG9ydCBjbGFzcyBEZlByb2dyZXNzSW5kaWNhdG9yQ29udGVudFNwaW5uZXIge1xuICByZWFkb25seSB0eXBlID0gRGZQcm9ncmVzc0luZGljYXRvckNvbnRlbnRUeXBlLlNQSU5ORVI7XG4gIHNwaW5uZXJJbnB1dD86IHtcbiAgICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG4gICAgYXJpYUxhYmVsPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHNwaW5uZXJJbnB1dD86IHsgY29udGVudENsYXNzPzogc3RyaW5nOyBhcmlhTGFiZWw/OiBzdHJpbmcgfSkge1xuICAgIHRoaXMuc3Bpbm5lcklucHV0ID0gc3Bpbm5lcklucHV0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZlByb2dyZXNzSW5kaWNhdG9yQ29udGVudFByb2dyZXNzQmFyIHtcbiAgcmVhZG9ubHkgdHlwZSA9IERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250ZW50VHlwZS5QUk9HUkVTU0JBUjtcbiAgcHJvZ3Jlc3NCYXJJbnB1dD86IHtcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcbiAgfTtcbiAgcG9zaXRpb246IERmUHJvZ3Jlc3NJbmRpY2F0b3JDb250ZW50UG9zaXRpb247XG5cbiAgY29uc3RydWN0b3IocHJvZ3Jlc3NCYXJJbnB1dD86IHsgYXJpYUxhYmVsOiBzdHJpbmcgfSwgcG9zaXRpb24/OiBEZlByb2dyZXNzSW5kaWNhdG9yQ29udGVudFBvc2l0aW9uKSB7XG4gICAgdGhpcy5wcm9ncmVzc0JhcklucHV0ID0gcHJvZ3Jlc3NCYXJJbnB1dDtcbiAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb24gfHwgRGZQcm9ncmVzc0luZGljYXRvckNvbnRlbnRQb3NpdGlvbi5UT1A7XG4gIH1cbn1cblxuZXhwb3J0IGVudW0gRGZQcm9ncmVzc0luZGljYXRvckNvbnRlbnRQb3NpdGlvbiB7XG4gIFRPUCA9ICd0b3AnLFxuICBCT1RUT00gPSAnYm90dG9tJyxcbiAgQ0VOVEVSRUQgPSAnY2VudGVyZWQnXG59XG4iXX0=
|