@indice/ng-components 0.2.159-beta.9 → 0.2.160-beta.1
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/_styles.css +1188 -1215
- package/bundles/indice-ng-components.umd.js +4597 -0
- package/bundles/indice-ng-components.umd.js.map +1 -0
- package/{esm2020/indice-ng-components.mjs → esm2015/indice-ng-components.js} +0 -0
- package/{esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs → esm2015/lib/controls/avatar-initials/avatar-initials.component.js} +8 -5
- package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +23 -0
- package/{esm2020/lib/controls/combobox/combobox.component.mjs → esm2015/lib/controls/combobox/combobox.component.js} +10 -7
- package/esm2015/lib/controls/date-picker/date-picker.component.js +301 -0
- package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +72 -0
- package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +39 -0
- package/esm2015/lib/controls/language-selection/language-selection.component.js +35 -0
- package/{esm2020/lib/controls/list-view/list-column.component.mjs → esm2015/lib/controls/list-view/list-column.component.js} +4 -4
- package/{esm2020/lib/controls/list-view/list-details-section.component.mjs → esm2015/lib/controls/list-view/list-details-section.component.js} +4 -4
- package/{esm2020/lib/controls/list-view/list-tile.component.mjs → esm2015/lib/controls/list-view/list-tile.component.js} +4 -4
- package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +32 -0
- package/esm2015/lib/controls/list-view/list-view.component.js +195 -0
- package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +45 -0
- package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +76 -0
- package/esm2015/lib/controls/pager/pager.component.js +133 -0
- package/esm2015/lib/controls/side-pane/side-pane.component.js +76 -0
- package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +29 -0
- package/{esm2020/lib/controls/stepper/lib-step-info.directive.mjs → esm2015/lib/controls/stepper/lib-step-info.directive.js} +4 -4
- package/{esm2020/lib/controls/stepper/lib-step-label.directive.mjs → esm2015/lib/controls/stepper/lib-step-label.directive.js} +4 -4
- package/esm2015/lib/controls/stepper/lib-step.component.js +84 -0
- package/esm2015/lib/controls/stepper/lib-stepper.component.js +90 -0
- package/{esm2020/lib/controls/stepper/types/step-selected-event.mjs → esm2015/lib/controls/stepper/types/step-selected-event.js} +0 -0
- package/{esm2020/lib/controls/stepper/types/stepper-type.mjs → esm2015/lib/controls/stepper/types/stepper-type.js} +0 -0
- package/esm2015/lib/controls/tabs/lib-tab-group.component.js +66 -0
- package/esm2015/lib/controls/tabs/lib-tab.component.js +58 -0
- package/esm2015/lib/controls/toaster/toaster-container.component.js +31 -0
- package/esm2015/lib/controls/toaster/toaster.component.js +34 -0
- package/esm2015/lib/controls/toggle/toggle.component.js +68 -0
- package/esm2015/lib/controls/user-profile-menu/user-profile-menu.component.js +75 -0
- package/{esm2020/lib/directives/click-outside.directive.mjs → esm2015/lib/directives/click-outside.directive.js} +4 -4
- package/{esm2020/lib/directives/dynamic-component-host.directive.mjs → esm2015/lib/directives/dynamic-component-host.directive.js} +4 -4
- package/esm2015/lib/helpers/base-list.component.js +183 -0
- package/{esm2020/lib/icons.mjs → esm2015/lib/icons.js} +0 -0
- package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +22 -0
- package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +136 -0
- package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +108 -0
- package/esm2015/lib/layouts/shell/shell-sidebar/shell-sidebar.component.js +50 -0
- package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +85 -0
- package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +53 -0
- package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +101 -0
- package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +110 -0
- package/{esm2020/lib/ng-components.module.mjs → esm2015/lib/ng-components.module.js} +11 -12
- package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +35 -0
- package/{esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs → esm2015/lib/pages/auth/auth-renew/auth-renew.component.js} +4 -4
- package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +32 -0
- package/esm2015/lib/pages/http-status/error/error.component.js +20 -0
- package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +18 -0
- package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +17 -0
- package/{esm2020/lib/pipes/address.pipe.mjs → esm2015/lib/pipes/address.pipe.js} +4 -4
- package/{esm2020/lib/pipes/duration-format.pipe.mjs → esm2015/lib/pipes/duration-format.pipe.js} +4 -4
- package/{esm2020/lib/services/component-loader/component-loader-options.class.mjs → esm2015/lib/services/component-loader/component-loader-options.class.js} +0 -0
- package/esm2015/lib/services/component-loader/component-loader.class.js +192 -0
- package/{esm2020/lib/services/component-loader/component-loader.factory.mjs → esm2015/lib/services/component-loader/component-loader.factory.js} +4 -4
- package/{esm2020/lib/services/component-loader/content-ref.class.mjs → esm2015/lib/services/component-loader/content-ref.class.js} +0 -0
- package/esm2015/lib/services/modal-service/modal-backdrop-component.js +44 -0
- package/esm2015/lib/services/modal-service/modal-container-component.js +128 -0
- package/{esm2020/lib/services/modal-service/modal-options.class.mjs → esm2015/lib/services/modal-service/modal-options.class.js} +4 -4
- package/esm2015/lib/services/modal-service/modal-service.js +220 -0
- package/{esm2020/lib/services/modal-service/modal-styles.class.mjs → esm2015/lib/services/modal-service/modal-styles.class.js} +0 -0
- package/{esm2020/lib/services/modal-service/modal.class.mjs → esm2015/lib/services/modal-service/modal.class.js} +4 -4
- package/{esm2020/lib/services/toaster.service.mjs → esm2015/lib/services/toaster.service.js} +4 -4
- package/{esm2020/lib/tokens.mjs → esm2015/lib/tokens.js} +0 -0
- package/esm2015/lib/types.js +129 -0
- package/esm2015/public-api.js +61 -0
- package/fesm2015/indice-ng-components.js +3977 -0
- package/fesm2015/indice-ng-components.js.map +1 -0
- package/{index.d.ts → indice-ng-components.d.ts} +0 -0
- package/lib/controls/avatar-initials/avatar-initials.component.d.ts +1 -1
- package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +1 -1
- package/lib/controls/combobox/combobox.component.d.ts +1 -1
- package/lib/controls/date-picker/date-picker.component.d.ts +1 -1
- package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +1 -1
- package/lib/controls/kpi-tile/kpi-tile.component.d.ts +1 -1
- package/lib/controls/language-selection/language-selection.component.d.ts +1 -1
- package/lib/controls/list-view/list-column.component.d.ts +1 -1
- package/lib/controls/list-view/list-details-section.component.d.ts +1 -1
- package/lib/controls/list-view/list-tile.component.d.ts +1 -1
- package/lib/controls/list-view/list-view-empty-state.component.d.ts +1 -1
- package/lib/controls/list-view/list-view.component.d.ts +17 -16
- package/lib/controls/nav-links-list/nav-links-list.component.d.ts +1 -1
- package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +4 -4
- package/lib/controls/pager/pager.component.d.ts +1 -1
- package/lib/controls/side-pane/side-pane.component.d.ts +1 -1
- package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +1 -1
- package/lib/controls/stepper/lib-step-info.directive.d.ts +1 -1
- package/lib/controls/stepper/lib-step-label.directive.d.ts +1 -1
- package/lib/controls/stepper/lib-step.component.d.ts +1 -1
- package/lib/controls/stepper/lib-stepper.component.d.ts +1 -1
- package/lib/controls/tabs/lib-tab-group.component.d.ts +1 -1
- package/lib/controls/tabs/lib-tab.component.d.ts +1 -1
- package/lib/controls/toaster/toaster-container.component.d.ts +1 -1
- package/lib/controls/toaster/toaster.component.d.ts +1 -1
- package/lib/controls/toggle/toggle.component.d.ts +1 -1
- package/lib/controls/user-profile-menu/user-profile-menu.component.d.ts +1 -1
- package/lib/directives/click-outside.directive.d.ts +1 -1
- package/lib/directives/dynamic-component-host.directive.d.ts +1 -1
- package/lib/helpers/base-list.component.d.ts +1 -1
- package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +1 -1
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +3 -2
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +1 -1
- package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +1 -1
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +1 -1
- package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +1 -1
- package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +1 -1
- package/lib/layouts/views/view-layout/view-layout.component.d.ts +1 -1
- package/lib/ng-components.module.d.ts +4 -5
- package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +1 -1
- package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +1 -1
- package/lib/pages/auth/logged-out/logged-out.component.d.ts +1 -1
- package/lib/pages/http-status/error/error.component.d.ts +1 -1
- package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +1 -1
- package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +1 -1
- package/lib/pipes/address.pipe.d.ts +1 -1
- package/lib/pipes/duration-format.pipe.d.ts +1 -1
- package/lib/services/modal-service/modal-backdrop-component.d.ts +1 -1
- package/lib/services/modal-service/modal-container-component.d.ts +1 -1
- package/lib/types.d.ts +5 -0
- package/package.json +8 -21
- package/public-api.d.ts +0 -2
- package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +0 -20
- package/esm2020/lib/controls/date-picker/date-picker.component.mjs +0 -292
- package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +0 -68
- package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +0 -36
- package/esm2020/lib/controls/language-selection/language-selection.component.mjs +0 -31
- package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +0 -29
- package/esm2020/lib/controls/list-view/list-view.component.mjs +0 -183
- package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +0 -42
- package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +0 -77
- package/esm2020/lib/controls/pager/pager.component.mjs +0 -130
- package/esm2020/lib/controls/side-pane/side-pane.component.mjs +0 -72
- package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +0 -25
- package/esm2020/lib/controls/stepper/lib-step.component.mjs +0 -81
- package/esm2020/lib/controls/stepper/lib-stepper.component.mjs +0 -85
- package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +0 -59
- package/esm2020/lib/controls/tabs/lib-tab.component.mjs +0 -57
- package/esm2020/lib/controls/toaster/toaster-container.component.mjs +0 -28
- package/esm2020/lib/controls/toaster/toaster.component.mjs +0 -31
- package/esm2020/lib/controls/toggle/toggle.component.mjs +0 -64
- package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +0 -71
- package/esm2020/lib/helpers/base-list.component.mjs +0 -181
- package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +0 -19
- package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +0 -130
- package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +0 -104
- package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +0 -47
- package/esm2020/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +0 -45
- package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +0 -80
- package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +0 -49
- package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +0 -98
- package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +0 -104
- package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +0 -31
- package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +0 -28
- package/esm2020/lib/pages/http-status/error/error.component.mjs +0 -17
- package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +0 -15
- package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +0 -14
- package/esm2020/lib/services/component-loader/component-loader.class.mjs +0 -188
- package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +0 -44
- package/esm2020/lib/services/modal-service/modal-container-component.mjs +0 -126
- package/esm2020/lib/services/modal-service/modal-service.mjs +0 -219
- package/esm2020/lib/types.mjs +0 -123
- package/esm2020/public-api.mjs +0 -63
- package/fesm2015/indice-ng-components.mjs +0 -3925
- package/fesm2015/indice-ng-components.mjs.map +0 -1
- package/fesm2020/indice-ng-components.mjs +0 -3856
- package/fesm2020/indice-ng-components.mjs.map +0 -1
- package/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.d.ts +0 -14
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Inject, Input, Optional, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { LIBSTEPPER_ACCESSOR } from '../../tokens';
|
|
3
|
+
import { LibStepInfoDirective } from './lib-step-info.directive';
|
|
4
|
+
import { LibStepLabelDirective } from './lib-step-label.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export var StepState;
|
|
7
|
+
(function (StepState) {
|
|
8
|
+
StepState["Active"] = "Active";
|
|
9
|
+
StepState["Completed"] = "Completed";
|
|
10
|
+
StepState["Upcoming"] = "Upcoming";
|
|
11
|
+
})(StepState || (StepState = {}));
|
|
12
|
+
;
|
|
13
|
+
export class LibStepComponent {
|
|
14
|
+
constructor(_stepper) {
|
|
15
|
+
this._stepper = _stepper;
|
|
16
|
+
}
|
|
17
|
+
/** Indicates the index of the step. */
|
|
18
|
+
get index() {
|
|
19
|
+
var _a;
|
|
20
|
+
return (_a = this._stepper) === null || _a === void 0 ? void 0 : _a.steps.toArray().indexOf(this);
|
|
21
|
+
}
|
|
22
|
+
/** Indicates whether this step is the last step. */
|
|
23
|
+
get isLast() {
|
|
24
|
+
var _a;
|
|
25
|
+
return ((_a = this._stepper) === null || _a === void 0 ? void 0 : _a.steps.length) - 1 === this.index;
|
|
26
|
+
}
|
|
27
|
+
/** Indicates whether you can navigate to the step or not. */
|
|
28
|
+
get isValid() {
|
|
29
|
+
if (!this.stepControl) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return this.stepControl.valid;
|
|
33
|
+
}
|
|
34
|
+
/** Shows the current state of the step. */
|
|
35
|
+
get state() {
|
|
36
|
+
var _a;
|
|
37
|
+
const currentIndex = (_a = this._stepper) === null || _a === void 0 ? void 0 : _a.currentStepIndex;
|
|
38
|
+
if (currentIndex === this.index) {
|
|
39
|
+
return StepState.Active;
|
|
40
|
+
}
|
|
41
|
+
if (currentIndex > this.index) {
|
|
42
|
+
return StepState.Completed;
|
|
43
|
+
}
|
|
44
|
+
return StepState.Upcoming;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
LibStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepComponent, deps: [{ token: LIBSTEPPER_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
LibStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibStepComponent, selector: "lib-step", inputs: { class: "class", stepControl: "stepControl" }, queries: [{ propertyName: "stepLabel", first: true, predicate: LibStepLabelDirective, descendants: true }, { propertyName: "stepInfo", first: true, predicate: LibStepInfoDirective, descendants: true }], viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `
|
|
49
|
+
<ng-template>
|
|
50
|
+
<ng-content></ng-content>
|
|
51
|
+
</ng-template>
|
|
52
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepComponent, decorators: [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{
|
|
56
|
+
selector: 'lib-step',
|
|
57
|
+
template: `
|
|
58
|
+
<ng-template>
|
|
59
|
+
<ng-content></ng-content>
|
|
60
|
+
</ng-template>
|
|
61
|
+
`,
|
|
62
|
+
encapsulation: ViewEncapsulation.None,
|
|
63
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
64
|
+
}]
|
|
65
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
66
|
+
type: Optional
|
|
67
|
+
}, {
|
|
68
|
+
type: Inject,
|
|
69
|
+
args: [LIBSTEPPER_ACCESSOR]
|
|
70
|
+
}] }]; }, propDecorators: { content: [{
|
|
71
|
+
type: ViewChild,
|
|
72
|
+
args: [TemplateRef, { static: true }]
|
|
73
|
+
}], stepLabel: [{
|
|
74
|
+
type: ContentChild,
|
|
75
|
+
args: [LibStepLabelDirective]
|
|
76
|
+
}], stepInfo: [{
|
|
77
|
+
type: ContentChild,
|
|
78
|
+
args: [LibStepInfoDirective]
|
|
79
|
+
}], class: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], stepControl: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckosT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVuRSxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ2pCLDhCQUFpQixDQUFBO0lBQ2pCLG9DQUF1QixDQUFBO0lBQ3ZCLGtDQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQUFBLENBQUM7QUFZRixNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQzZELFFBQWM7UUFBZCxhQUFRLEdBQVIsUUFBUSxDQUFNO0lBQ3ZFLENBQUM7SUFhTCx1Q0FBdUM7SUFDdkMsSUFBVyxLQUFLOztRQUNaLE9BQU8sTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELElBQVcsTUFBTTs7UUFDYixPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxLQUFLLENBQUMsTUFBTSxJQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsSUFBVyxPQUFPO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxJQUFXLEtBQUs7O1FBQ1osTUFBTSxZQUFZLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxnQkFBZ0IsQ0FBQztRQUNyRCxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzdCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQztTQUMzQjtRQUNELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDM0IsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7OzhHQTVDUSxnQkFBZ0Isa0JBRUQsbUJBQW1CO2tHQUZsQyxnQkFBZ0IsK0lBUVgscUJBQXFCLDJFQUVyQixvQkFBb0IseUZBSnZCLFdBQVcsOERBZFo7Ozs7S0FJVDs0RkFJUSxnQkFBZ0I7a0JBVjVCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFFBQVEsRUFBRTs7OztLQUlUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OzBCQUdRLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1COzRDQUlNLE9BQU87c0JBQXZELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFSSxTQUFTO3NCQUFwRCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFFUSxRQUFRO3NCQUFsRCxZQUFZO3VCQUFDLG9CQUFvQjtnQkFFbEIsS0FBSztzQkFBcEIsS0FBSztnQkFFVSxXQUFXO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTElCU1RFUFBFUl9BQ0NFU1NPUiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IExpYlN0ZXBJbmZvRGlyZWN0aXZlIH0gZnJvbSAnLi9saWItc3RlcC1pbmZvLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IExpYlN0ZXBMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vbGliLXN0ZXAtbGFiZWwuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCBlbnVtIFN0ZXBTdGF0ZSB7XHJcbiAgICBBY3RpdmUgPSAnQWN0aXZlJyxcclxuICAgIENvbXBsZXRlZCA9ICdDb21wbGV0ZWQnLFxyXG4gICAgVXBjb21pbmcgPSAnVXBjb21pbmcnXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXN0ZXAnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgYCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliU3RlcENvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExJQlNURVBQRVJfQUNDRVNTT1IpIHB1YmxpYyByZWFkb25seSBfc3RlcHBlcj86IGFueVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICAvKiogVGhlIGNvbnRlbnQgcHJvdmlkZWQgZm9yIHRoZSBzdGVwLiAqL1xyXG4gICAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgLyoqIFRoZSBsYWJlbCBvZiB0aGUgc3RlcCBkaXNwbGF5ZWQgaW4gaGVhZGVyLCBpZiBhcHBsaWNhYmxlLiAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChMaWJTdGVwTGFiZWxEaXJlY3RpdmUpIHB1YmxpYyBzdGVwTGFiZWw6IExpYlN0ZXBMYWJlbERpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcclxuICAgIC8qKiBUaGUgaW5mbyBvZiB0aGUgc3RlcCBkaXNwbGF5ZWQgaW4gaGVhZGVyLCBpZiBhcHBsaWNhYmxlLiAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChMaWJTdGVwSW5mb0RpcmVjdGl2ZSkgcHVibGljIHN0ZXBJbmZvOiBMaWJTdGVwSW5mb0RpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcclxuICAgIC8qKiBBbiBvcHRpb25hbCBDU1MgY2xhc3MgZm9yIHRoZSBzdGVwIGhlYWRlci4gKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIFRoZSBhYnN0cmFjdCBjb250cm9sIG9mIHRoZSBzdGVwLiAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHN0ZXBDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqIEluZGljYXRlcyB0aGUgaW5kZXggb2YgdGhlIHN0ZXAuICovXHJcbiAgICBwdWJsaWMgZ2V0IGluZGV4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXBwZXI/LnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHN0ZXAgaXMgdGhlIGxhc3Qgc3RlcC4gKi9cclxuICAgIHB1YmxpYyBnZXQgaXNMYXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdGVwcGVyPy5zdGVwcy5sZW5ndGggLSAxID09PSB0aGlzLmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB5b3UgY2FuIG5hdmlnYXRlIHRvIHRoZSBzdGVwIG9yIG5vdC4gKi9cclxuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RlcENvbnRyb2wpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBDb250cm9sLnZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBTaG93cyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3RlcC4gKi9cclxuICAgIHB1YmxpYyBnZXQgc3RhdGUoKTogU3RlcFN0YXRlIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLl9zdGVwcGVyPy5jdXJyZW50U3RlcEluZGV4O1xyXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IHRoaXMuaW5kZXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFN0ZXBTdGF0ZS5BY3RpdmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPiB0aGlzLmluZGV4KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBTdGVwU3RhdGUuQ29tcGxldGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gU3RlcFN0YXRlLlVwY29taW5nO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output } from '@angular/core';
|
|
2
|
+
import { LibStepComponent, StepState } from './lib-step.component';
|
|
3
|
+
import { LIBSTEPPER_ACCESSOR } from '../../tokens';
|
|
4
|
+
import { StepperType } from './types/stepper-type';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
export class LibStepperComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
// Private properties.
|
|
10
|
+
this._currentStepIndex = 0;
|
|
11
|
+
/** Emmited when a step change occurs. */
|
|
12
|
+
this.stepChanged = new EventEmitter();
|
|
13
|
+
/** Indicates whether each step has to be validated before proceeding to the next. */
|
|
14
|
+
this.linear = false;
|
|
15
|
+
/** The type of the stepper. */
|
|
16
|
+
this.type = StepperType.Panels;
|
|
17
|
+
this.StepState = StepState;
|
|
18
|
+
this.StepperType = StepperType;
|
|
19
|
+
}
|
|
20
|
+
/** The current wizard step. */
|
|
21
|
+
get currentStep() {
|
|
22
|
+
var _a;
|
|
23
|
+
return (_a = this.steps) === null || _a === void 0 ? void 0 : _a.get(this._currentStepIndex);
|
|
24
|
+
}
|
|
25
|
+
/** The index (starting from zero) of the current wizard step. */
|
|
26
|
+
get currentStepIndex() {
|
|
27
|
+
return this._currentStepIndex;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() { }
|
|
30
|
+
/** Proceeds to the next step, if any. */
|
|
31
|
+
goToNextStep() {
|
|
32
|
+
// Cannot go forward.
|
|
33
|
+
if (this._currentStepIndex === this.steps.length - 1) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.updateCurrentStepIndex(this._currentStepIndex + 1);
|
|
37
|
+
}
|
|
38
|
+
/** Proceeds to the previous step, if any. */
|
|
39
|
+
goToPreviousStep() {
|
|
40
|
+
// Cannot go back.
|
|
41
|
+
if (this._currentStepIndex === 0) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.updateCurrentStepIndex(this._currentStepIndex - 1);
|
|
45
|
+
}
|
|
46
|
+
onSelectStep(selectedStep) {
|
|
47
|
+
this.updateCurrentStepIndex(selectedStep.index);
|
|
48
|
+
}
|
|
49
|
+
updateCurrentStepIndex(newIndex) {
|
|
50
|
+
const stepsArray = this.steps.toArray();
|
|
51
|
+
const currentStep = stepsArray[this.currentStepIndex];
|
|
52
|
+
const shouldStop = this.linear && ((!currentStep.isValid && newIndex >= this.currentStepIndex) || // If current step is invalid and want to go forward, then stop.
|
|
53
|
+
(currentStep.isValid && newIndex > this.currentStepIndex + 1 && stepsArray.slice(this.currentStepIndex + 1, newIndex).some(x => !x.isValid)) // If going forward (more than 1 steps), check if there are any invalid steps in between.
|
|
54
|
+
);
|
|
55
|
+
if (shouldStop) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.stepChanged.emit({
|
|
59
|
+
selectedIndex: newIndex,
|
|
60
|
+
previouslySelectedIndex: this.currentStepIndex,
|
|
61
|
+
selectedStep: stepsArray[newIndex],
|
|
62
|
+
previouslySelectedStep: currentStep
|
|
63
|
+
});
|
|
64
|
+
this._currentStepIndex = newIndex;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
LibStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
LibStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibStepperComponent, selector: "lib-stepper", inputs: { linear: "linear", type: "type" }, outputs: { stepChanged: "stepChanged" }, providers: [
|
|
69
|
+
{ provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
|
|
70
|
+
], queries: [{ propertyName: "steps", predicate: LibStepComponent, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- Bullets -->\r\n <nav class=\"flex items-center justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Bullets\">\r\n <p class=\"text-sm font-medium\">Step {{ currentStepIndex + 1 }} of {{ steps.length }}</p>\r\n <ol role=\"list\" class=\"ml-8 flex items-center space-x-5\">\r\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\r\n <!-- Completed Step -->\r\n <div class=\"block w-2.5 h-2.5 bg-blue-600 rounded-full hover:bg-blue-900\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"relative flex items-center justify-center\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"absolute w-5 h-5 p-px flex\" aria-hidden=\"true\">\r\n <span class=\"w-full h-full rounded-full bg-blue-200\"></span>\r\n </span>\r\n <span class=\"relative block w-2.5 h-2.5 bg-blue-600 rounded-full\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div href=\"#\" class=\"block w-2.5 h-2.5 bg-gray-200 rounded-full hover:bg-gray-400\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Bullets & Text -->\r\n <div class=\"flex items-center justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.BulletsAndText\">\r\n <nav aria-label=\"Progress\">\r\n <ol role=\"list\" class=\"space-y-6\">\r\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\r\n <!-- Complete Step -->\r\n <div class=\"group\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"flex items-start\">\r\n <span class=\"flex-shrink-0 relative h-5 w-5 flex items-center justify-center\">\r\n <svg class=\"h-full w-full text-blue-600 group-hover:text-blue-800\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"ml-3 text-sm font-medium text-gray-500 group-hover:text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"flex items-start\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"flex-shrink-0 h-5 w-5 relative flex items-center justify-center\" aria-hidden=\"true\">\r\n <span class=\"absolute h-4 w-4 rounded-full bg-blue-200\"></span>\r\n <span class=\"relative block w-2 h-2 bg-blue-600 rounded-full\"></span>\r\n </span>\r\n <span class=\"ml-3 text-sm font-medium text-blue-600\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"flex items-start\">\r\n <div class=\"flex-shrink-0 h-5 w-5 relative flex items-center justify-center\" aria-hidden=\"true\">\r\n <div class=\"h-2 w-2 bg-gray-300 rounded-full group-hover:bg-gray-400\"></div>\r\n </div>\r\n <p class=\"ml-3 text-sm font-medium text-gray-500 group-hover:text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Circles -->\r\n <nav class=\"flex justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Circles\">\r\n <ol class=\"flex items-center\" role=\"list\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pr-8 sm:pr-20 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-blue-600\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full hover:bg-blue-900\">\r\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\" aria-current=\"step\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"group relative w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\" aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Circles With Text -->\r\n <nav class=\"flex items-center justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.CirclesWithText\">\r\n <ol role=\"list\" class=\"overflow-hidden\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pb-10 cursor-pointer\">\r\n <!-- Complete Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-blue-600\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\" aria-current=\"step\">\r\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-blue-600\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\r\n <div href=\"#\" class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-gray-500\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels -->\r\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Panels\">\r\n <ol role=\"list\" class=\"border border-gray-300 rounded-md divide-y divide-gray-300 md:flex md:divide-y-0\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative md:flex-1 md:flex cursor-pointer\">\r\n <!-- Completed step -->\r\n <div class=\"group flex items-center w-full\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active step -->\r\n <div class=\"px-6 py-4 flex items-center text-sm font-medium\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\r\n <span class=\"text-blue-600\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-blue-600\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming step -->\r\n <div class=\"group flex items-center\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"text-gray-500 group-hover:text-gray-900\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-500 group-hover:text-gray-900\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Arrow separator for lg screens and up -->\r\n <div *ngIf=\"!step.isLast\" class=\"hidden md:block absolute top-0 right-0 h-full w-5\" aria-hidden=\"true\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 22 80\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0 -2L20 40L0 82\" vector-effect=\"non-scaling-stroke\" stroke=\"currentcolor\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels With Border -->\r\n <div class=\"border-t border-b border-gray-200\" *ngSwitchCase=\"StepperType.PanelsWithBorder\">\r\n <nav class=\"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8\" aria-label=\"Progress\">\r\n <ol role=\"list\" class=\"rounded-md overflow-hidden flex border-l border-r border-gray-200 lg:rounded-none\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative overflow-hidden lg:flex-1 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <div class=\"border border-gray-200 overflow-hidden border-b-0 rounded-t-md lg:border-0\" *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"group\">\r\n <span class=\"absolute top-0 left-0 w-1 h-full bg-transparent group-hover:bg-gray-200 lg:w-full lg:h-1 lg:bottom-0 lg:top-auto\" aria-hidden=\"true\"></span>\r\n <span class=\"px-6 py-5 flex items-start text-sm font-medium\">\r\n <span class=\"flex-shrink-0\">\r\n <span class=\"w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full\">\r\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"mt-0.5 ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm font-medium text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"border border-gray-200 overflow-hidden lg:border-0\" *ngIf=\"step.state === StepState.Active\">\r\n <div aria-current=\"step\">\r\n <span class=\"absolute top-0 left-0 w-1 h-full bg-blue-600 lg:w-full lg:h-1 lg:bottom-0 lg:top-auto\" aria-hidden=\"true\"></span>\r\n <span class=\"px-6 py-5 flex items-start text-sm font-medium lg:pl-9\">\r\n <span class=\"flex-shrink-0\">\r\n <span class=\"w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\r\n <span class=\"text-blue-600\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"mt-0.5 ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold text-blue-600 tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm font-medium text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"hidden absolute top-0 left-0 w-3 inset-0 lg:block\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"border border-gray-200 overflow-hidden border-t-0 rounded-b-md lg:border-0\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"group\">\r\n <span class=\"absolute top-0 left-0 w-1 h-full bg-transparent group-hover:bg-gray-200 lg:w-full lg:h-1 lg:bottom-0 lg:top-auto\" aria-hidden=\"true\"></span>\r\n <span class=\"px-6 py-5 flex items-start text-sm font-medium lg:pl-9\">\r\n <span class=\"flex-shrink-0\">\r\n <span class=\"w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full\">\r\n <span class=\"text-gray-500\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"mt-0.5 ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold text-gray-500 tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm font-medium text-gray-500\" *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"hidden absolute top-0 left-0 w-3 inset-0 lg:block\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Progress -->\r\n <div *ngSwitchCase=\"StepperType.Progress\">\r\n <div class=\"mt-6\" aria-hidden=\"true\">\r\n <div class=\"bg-gray-200 rounded-full overflow-hidden\">\r\n <div class=\"h-2 bg-blue-600 rounded-full\" [style.width]=\"(((currentStepIndex + 1) / steps.length) * 100) + '%'\"></div>\r\n </div>\r\n <div class=\"hidden sm:grid grid-cols-4 text-sm font-medium text-gray-600 mt-6\">\r\n <div *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"text-blue-600 cursor-pointer\">\r\n <ng-container *ngIf=\"step.stepLabel\" [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Simple -->\r\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Simple\">\r\n <ol role=\"list\" class=\"space-y-4 md:flex md:space-y-0 md:space-x-8\">\r\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"md:flex-1 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-blue-600 hover:border-blue-800 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase group-hover:text-blue-800\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"pl-4 py-2 flex flex-col border-l-4 border-blue-600 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-gray-200 hover:border-gray-300 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"text-xs text-gray-500 font-semibold tracking-wide uppercase group-hover:text-gray-700\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n</ng-container>\r\n<ng-container *ngFor=\"let step of steps\">\r\n <ng-container *ngIf=\"step.state === StepState.Active\" [ngTemplateOutlet]=\"step.content\"></ng-container>\r\n</ng-container>", directives: [{ type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibStepperComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{
|
|
74
|
+
selector: 'lib-stepper',
|
|
75
|
+
templateUrl: './lib-stepper.component.html',
|
|
76
|
+
providers: [
|
|
77
|
+
{ provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
|
|
78
|
+
]
|
|
79
|
+
}]
|
|
80
|
+
}], ctorParameters: function () { return []; }, propDecorators: { steps: [{
|
|
81
|
+
type: ContentChildren,
|
|
82
|
+
args: [LibStepComponent, { descendants: true }]
|
|
83
|
+
}], stepChanged: [{
|
|
84
|
+
type: Output
|
|
85
|
+
}], linear: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], type: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFVbkQsTUFBTSxPQUFPLG1CQUFtQjtJQUk1QjtRQUhBLHNCQUFzQjtRQUNkLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQU10Qyx5Q0FBeUM7UUFDZixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQzlFLHFGQUFxRjtRQUNyRSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hDLCtCQUErQjtRQUNmLFNBQUksR0FBZ0IsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUNoRCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBWGpCLENBQUM7SUFhakIsK0JBQStCO0lBQy9CLElBQVcsV0FBVzs7UUFDbEIsT0FBTyxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFTSxRQUFRLEtBQVcsQ0FBQztJQUUzQix5Q0FBeUM7SUFDbEMsWUFBWTtRQUNmLHFCQUFxQjtRQUNyQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEQsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsNkNBQTZDO0lBQ3RDLGdCQUFnQjtRQUNuQixrQkFBa0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxFQUFFO1lBQzlCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUE4QjtRQUM5QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxRQUFnQjtRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQzlCLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxnRUFBZ0U7WUFDL0gsQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHlGQUF5RjtTQUN6TyxDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUU7WUFDWixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNsQixhQUFhLEVBQUUsUUFBUTtZQUN2Qix1QkFBdUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQzlDLFlBQVksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2xDLHNCQUFzQixFQUFFLFdBQVc7U0FDdEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztJQUN0QyxDQUFDOztpSEFwRVEsbUJBQW1CO3FHQUFuQixtQkFBbUIsMkhBSmpCO1FBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO0tBQ3ZGLGdEQVNnQixnQkFBZ0IsZ0RDckJyQyx3NzBCQTZWZTs0RkQvVUYsbUJBQW1CO2tCQVAvQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtxQkFDdkY7aUJBQ0o7MEVBUW9FLEtBQUs7c0JBQXJFLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUU5QixXQUFXO3NCQUFwQyxNQUFNO2dCQUVTLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBMaWJTdGVwQ29tcG9uZW50LCBTdGVwU3RhdGUgfSBmcm9tICcuL2xpYi1zdGVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExJQlNURVBQRVJfQUNDRVNTT1IgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBTdGVwcGVyVHlwZSB9IGZyb20gJy4vdHlwZXMvc3RlcHBlci10eXBlJztcclxuaW1wb3J0IHsgU3RlcFNlbGVjdGVkRXZlbnQgfSBmcm9tICcuL3R5cGVzL3N0ZXAtc2VsZWN0ZWQtZXZlbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1zdGVwcGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9saWItc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IExJQlNURVBQRVJfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpYlN0ZXBwZXJDb21wb25lbnQpIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpYlN0ZXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgLy8gUHJpdmF0ZSBwcm9wZXJ0aWVzLlxyXG4gICAgcHJpdmF0ZSBfY3VycmVudFN0ZXBJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIC8qKiBUaGUgaW5uZXIgc3RlcHMgb2YgdGhlIHdpemFyZC4gKi9cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oTGliU3RlcENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwdWJsaWMgc3RlcHMhOiBRdWVyeUxpc3Q8TGliU3RlcENvbXBvbmVudD47XHJcbiAgICAvKiogRW1taXRlZCB3aGVuIGEgc3RlcCBjaGFuZ2Ugb2NjdXJzLiAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzdGVwQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFNlbGVjdGVkRXZlbnQ+KCk7XHJcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgZWFjaCBzdGVwIGhhcyB0byBiZSB2YWxpZGF0ZWQgYmVmb3JlIHByb2NlZWRpbmcgdG8gdGhlIG5leHQuICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbGluZWFyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhlIHN0ZXBwZXIuICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdHlwZTogU3RlcHBlclR5cGUgPSBTdGVwcGVyVHlwZS5QYW5lbHM7XHJcbiAgICBwdWJsaWMgU3RlcFN0YXRlID0gU3RlcFN0YXRlO1xyXG4gICAgcHVibGljIFN0ZXBwZXJUeXBlID0gU3RlcHBlclR5cGU7XHJcblxyXG4gICAgLyoqIFRoZSBjdXJyZW50IHdpemFyZCBzdGVwLiAqL1xyXG4gICAgcHVibGljIGdldCBjdXJyZW50U3RlcCgpOiBMaWJTdGVwQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcz8uZ2V0KHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgaW5kZXggKHN0YXJ0aW5nIGZyb20gemVybykgb2YgdGhlIGN1cnJlbnQgd2l6YXJkIHN0ZXAuICovXHJcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRTdGVwSW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFN0ZXBJbmRleDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgICAvKiogUHJvY2VlZHMgdG8gdGhlIG5leHQgc3RlcCwgaWYgYW55LiAqL1xyXG4gICAgcHVibGljIGdvVG9OZXh0U3RlcCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBDYW5ub3QgZ28gZm9yd2FyZC5cclxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFN0ZXBJbmRleCA9PT0gdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcEluZGV4KHRoaXMuX2N1cnJlbnRTdGVwSW5kZXggKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUHJvY2VlZHMgdG8gdGhlIHByZXZpb3VzIHN0ZXAsIGlmIGFueS4gKi9cclxuICAgIHB1YmxpYyBnb1RvUHJldmlvdXNTdGVwKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIENhbm5vdCBnbyBiYWNrLlxyXG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50U3RlcEluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcEluZGV4KHRoaXMuX2N1cnJlbnRTdGVwSW5kZXggLSAxKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25TZWxlY3RTdGVwKHNlbGVjdGVkU3RlcDogTGliU3RlcENvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXBJbmRleChzZWxlY3RlZFN0ZXAuaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ3VycmVudFN0ZXBJbmRleChuZXdJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gc3RlcHNBcnJheVt0aGlzLmN1cnJlbnRTdGVwSW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZFN0b3AgPSB0aGlzLmxpbmVhciAmJiAoXHJcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBuZXdJbmRleCA+PSB0aGlzLmN1cnJlbnRTdGVwSW5kZXgpIHx8IC8vIElmIGN1cnJlbnQgc3RlcCBpcyBpbnZhbGlkIGFuZCB3YW50IHRvIGdvIGZvcndhcmQsIHRoZW4gc3RvcC5cclxuICAgICAgICAgICAgKGN1cnJlbnRTdGVwLmlzVmFsaWQgJiYgbmV3SW5kZXggPiB0aGlzLmN1cnJlbnRTdGVwSW5kZXggKyAxICYmIHN0ZXBzQXJyYXkuc2xpY2UodGhpcy5jdXJyZW50U3RlcEluZGV4ICsgMSwgbmV3SW5kZXgpLnNvbWUoeCA9PiAheC5pc1ZhbGlkKSkgLy8gSWYgZ29pbmcgZm9yd2FyZCAobW9yZSB0aGFuIDEgc3RlcHMpLCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGludmFsaWQgc3RlcHMgaW4gYmV0d2Vlbi5cclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzaG91bGRTdG9wKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGVwQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbmRleDogbmV3SW5kZXgsXHJcbiAgICAgICAgICAgIHByZXZpb3VzbHlTZWxlY3RlZEluZGV4OiB0aGlzLmN1cnJlbnRTdGVwSW5kZXgsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkU3RlcDogc3RlcHNBcnJheVtuZXdJbmRleF0sXHJcbiAgICAgICAgICAgIHByZXZpb3VzbHlTZWxlY3RlZFN0ZXA6IGN1cnJlbnRTdGVwXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCA9IG5ld0luZGV4O1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICAgIDwhLS0gQnVsbGV0cyAtLT5cclxuICAgIDxuYXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiIGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5CdWxsZXRzXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+U3RlcCB7eyBjdXJyZW50U3RlcEluZGV4ICsgMSB9fSBvZiB7eyBzdGVwcy5sZW5ndGggfX08L3A+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJtbC04IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNVwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZWQgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jayB3LTIuNSBoLTIuNSBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGwgaG92ZXI6YmctYmx1ZS05MDBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIiBhcmlhLWN1cnJlbnQ9XCJzdGVwXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhYnNvbHV0ZSB3LTUgaC01IHAtcHggZmxleFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgcm91bmRlZC1mdWxsIGJnLWJsdWUtMjAwXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlIGJsb2NrIHctMi41IGgtMi41IGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgaHJlZj1cIiNcIiBjbGFzcz1cImJsb2NrIHctMi41IGgtMi41IGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBob3ZlcjpiZy1ncmF5LTQwMFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuICAgIDwvbmF2PlxyXG4gICAgPCEtLSBCdWxsZXRzICYgVGV4dCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiIGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5CdWxsZXRzQW5kVGV4dFwiPlxyXG4gICAgICAgIDxuYXYgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgIDxvbCByb2xlPVwibGlzdFwiIGNsYXNzPVwic3BhY2UteS02XCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ29tcGxldGUgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgcmVsYXRpdmUgaC01IHctNSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsIHRleHQtYmx1ZS02MDAgZ3JvdXAtaG92ZXI6dGV4dC1ibHVlLTgwMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy05LjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEwLjU4NiA3LjcwNyA5LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDQtNHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDAgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTkwMFwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0XCIgYXJpYS1jdXJyZW50PVwic3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgaC01IHctNSByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhYnNvbHV0ZSBoLTQgdy00IHJvdW5kZWQtZnVsbCBiZy1ibHVlLTIwMFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgdy0yIGgtMiBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ibHVlLTYwMFwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgaC01IHctNSByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTIgdy0yIGJnLWdyYXktMzAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ncmF5LTQwMFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1sLTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwIGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDBcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gQ2lyY2xlcyAtLT5cclxuICAgIDxuYXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyXCIgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCIgKm5nU3dpdGNoQ2FzZT1cIlN0ZXBwZXJUeXBlLkNpcmNsZXNcIj5cclxuICAgICAgICA8b2wgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiIHJvbGU9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cInJlbGF0aXZlIHByLTggc206cHItMjAgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29tcGxldGVkIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkNvbXBsZXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTAuNSB3LWZ1bGwgYmctYmx1ZS02MDBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGwgaG92ZXI6YmctYmx1ZS05MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInctNSBoLTUgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTAuNSB3LWZ1bGwgYmctZ3JheS0yMDBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSBib3JkZXItMiBib3JkZXItYmx1ZS02MDAgcm91bmRlZC1mdWxsXCIgYXJpYS1jdXJyZW50PVwic3RlcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTAuNSB3LWZ1bGwgYmctZ3JheS0yMDBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAgcmVsYXRpdmUgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSBib3JkZXItMiBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1mdWxsIGhvdmVyOmJvcmRlci1ncmF5LTQwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ncmF5LTMwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvb2w+XHJcbiAgICA8L25hdj5cclxuICAgIDwhLS0gQ2lyY2xlcyBXaXRoIFRleHQgLS0+XHJcbiAgICA8bmF2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQ2lyY2xlc1dpdGhUZXh0XCI+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiIGNsYXNzPVwicmVsYXRpdmUgcGItMTAgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29tcGxldGUgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIi1tbC1weCBhYnNvbHV0ZSBtdC0wLjUgdG9wLTQgbGVmdC00IHctMC41IGgtZnVsbCBiZy1ibHVlLTYwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICpuZ0lmPVwiIXN0ZXAuaXNMYXN0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQgZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTkgZmxleCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpdmUgei0xMCB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ibHVlLTgwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJ3LTUgaC01IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgbWluLXctMCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiICpuZ0lmPVwic3RlcC5zdGVwSW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItbWwtcHggYWJzb2x1dGUgbXQtMC41IHRvcC00IGxlZnQtNCB3LTAuNSBoLWZ1bGwgYmctZ3JheS0zMDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cIiFzdGVwLmlzTGFzdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0IGdyb3VwXCIgYXJpYS1jdXJyZW50PVwic3RlcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtOSBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgYm9yZGVyLTIgYm9yZGVyLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC0yLjUgdy0yLjUgYmctYmx1ZS02MDAgcm91bmRlZC1mdWxsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtNCBtaW4tdy0wIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlIHRleHQtYmx1ZS02MDBcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcEluZm8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFVwY29taW5nIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIi1tbC1weCBhYnNvbHV0ZSBtdC0wLjUgdG9wLTQgbGVmdC00IHctMC41IGgtZnVsbCBiZy1ncmF5LTMwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICpuZ0lmPVwiIXN0ZXAuaXNMYXN0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBocmVmPVwiI1wiIGNsYXNzPVwicmVsYXRpdmUgZmxleCBpdGVtcy1zdGFydCBncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtOSBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3Zlcjpib3JkZXItZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ncmF5LTMwMFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgbWluLXctMCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZSB0ZXh0LWdyYXktNTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBJbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvb2w+XHJcbiAgICA8L25hdj5cclxuICAgIDwhLS0gUGFuZWxzIC0tPlxyXG4gICAgPG5hdiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuUGFuZWxzXCI+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbWQgZGl2aWRlLXkgZGl2aWRlLWdyYXktMzAwIG1kOmZsZXggbWQ6ZGl2aWRlLXktMFwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIiAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCIgY2xhc3M9XCJyZWxhdGl2ZSBtZDpmbGV4LTEgbWQ6ZmxleCBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZWQgc3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGxcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTYgcHktNCBmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1zaHJpbmstMCB3LTEwIGgtMTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmx1ZS02MDAgcm91bmRlZC1mdWxsIGdyb3VwLWhvdmVyOmJnLWJsdWUtODAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy02IGgtNiB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtNCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIHN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNiBweS00IGZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW1cIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgdy0xMCBoLTEwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci0yIGJvcmRlci1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsdWUtNjAwXCI+e3sgKHN0ZXAuaW5kZXggKyAxKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ibHVlLTYwMFwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBzdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwIGZsZXggaXRlbXMtY2VudGVyXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuVXBjb21pbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTYgcHktNCBmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1zaHJpbmstMCB3LTEwIGgtMTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3Zlcjpib3JkZXItZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTUwMCBncm91cC1ob3Zlcjp0ZXh0LWdyYXktOTAwXCI+e3sgKHN0ZXAuaW5kZXggKyAxKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwIGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDBcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQXJyb3cgc2VwYXJhdG9yIGZvciBsZyBzY3JlZW5zIGFuZCB1cCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3RlcC5pc0xhc3RcIiBjbGFzcz1cImhpZGRlbiBtZDpibG9jayBhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGgtZnVsbCB3LTVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC1mdWxsIHctZnVsbCB0ZXh0LWdyYXktMzAwXCIgdmlld0JveD1cIjAgMCAyMiA4MFwiIGZpbGw9XCJub25lXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIC0yTDIwIDQwTDAgODJcIiB2ZWN0b3ItZWZmZWN0PVwibm9uLXNjYWxpbmctc3Ryb2tlXCIgc3Ryb2tlPVwiY3VycmVudGNvbG9yXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuICAgIDwvbmF2PlxyXG4gICAgPCEtLSBQYW5lbHMgV2l0aCBCb3JkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXQgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCIgKm5nU3dpdGNoQ2FzZT1cIlN0ZXBwZXJUeXBlLlBhbmVsc1dpdGhCb3JkZXJcIj5cclxuICAgICAgICA8bmF2IGNsYXNzPVwibXgtYXV0byBtYXgtdy03eGwgcHgtNCBzbTpweC02IGxnOnB4LThcIiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJyb3VuZGVkLW1kIG92ZXJmbG93LWhpZGRlbiBmbGV4IGJvcmRlci1sIGJvcmRlci1yIGJvcmRlci1ncmF5LTIwMCBsZzpyb3VuZGVkLW5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cInJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiBsZzpmbGV4LTEgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIG92ZXJmbG93LWhpZGRlbiBib3JkZXItYi0wIHJvdW5kZWQtdC1tZCBsZzpib3JkZXItMFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkNvbXBsZXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctMSBoLWZ1bGwgYmctdHJhbnNwYXJlbnQgZ3JvdXAtaG92ZXI6YmctZ3JheS0yMDAgbGc6dy1mdWxsIGxnOmgtMSBsZzpib3R0b20tMCBsZzp0b3AtYXV0b1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtNiBweS01IGZsZXggaXRlbXMtc3RhcnQgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMTAgaC0xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJ3LTYgaC02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0bC04IDhhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDAxMS40MTQtMS40MTRMOCAxMi41ODZsNy4yOTMtNy4yOTNhMSAxIDAgMDExLjQxNCAwelwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0wLjUgbWwtNCBtaW4tdy0wIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2VcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIG92ZXJmbG93LWhpZGRlbiBsZzpib3JkZXItMFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFyaWEtY3VycmVudD1cInN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctMSBoLWZ1bGwgYmctYmx1ZS02MDAgbGc6dy1mdWxsIGxnOmgtMSBsZzpib3R0b20tMCBsZzp0b3AtYXV0b1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtNiBweS01IGZsZXggaXRlbXMtc3RhcnQgdGV4dC1zbSBmb250LW1lZGl1bSBsZzpwbC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy0xMCBoLTEwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci0yIGJvcmRlci1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ibHVlLTYwMFwiPnt7IHN0ZXAuaW5kZXggKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMC41IG1sLTQgbWluLXctMCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYmx1ZS02MDAgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2VcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZXBhcmF0b3IgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4gYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctMyBpbnNldC0wIGxnOmJsb2NrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCJzdGVwLmluZGV4ICE9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC1mdWxsIHctZnVsbCB0ZXh0LWdyYXktMzAwXCIgdmlld0JveD1cIjAgMCAxMiA4MlwiIGZpbGw9XCJub25lXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAuNSAwVjMxTDEwLjUgNDFMMC41IDUxVjgyXCIgc3Ryb2tlPVwiY3VycmVudGNvbG9yXCIgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyYXktMjAwIG92ZXJmbG93LWhpZGRlbiBib3JkZXItdC0wIHJvdW5kZWQtYi1tZCBsZzpib3JkZXItMFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgdy0xIGgtZnVsbCBiZy10cmFuc3BhcmVudCBncm91cC1ob3ZlcjpiZy1ncmF5LTIwMCBsZzp3LWZ1bGwgbGc6aC0xIGxnOmJvdHRvbS0wIGxnOnRvcC1hdXRvXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC02IHB5LTUgZmxleCBpdGVtcy1zdGFydCB0ZXh0LXNtIGZvbnQtbWVkaXVtIGxnOnBsLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LTEwIGgtMTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNTAwXCI+e3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0wLjUgbWwtNCBtaW4tdy0wIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTUwMCB0cmFja2luZy13aWRlIHVwcGVyY2FzZVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMFwiICpuZ0lmPVwic3RlcC5zdGVwSW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlcGFyYXRvciAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgdy0zIGluc2V0LTAgbGc6YmxvY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cInN0ZXAuaW5kZXggIT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsIHRleHQtZ3JheS0zMDBcIiB2aWV3Qm94PVwiMCAwIDEyIDgyXCIgZmlsbD1cIm5vbmVcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC41IDBWMzFMMTAuNSA0MUwwLjUgNTFWODJcIiBzdHJva2U9XCJjdXJyZW50Y29sb3JcIiB2ZWN0b3ItZWZmZWN0PVwibm9uLXNjYWxpbmctc3Ryb2tlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gUHJvZ3Jlc3MgLS0+XHJcbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5Qcm9ncmVzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC02XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0yIGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiIFtzdHlsZS53aWR0aF09XCIoKChjdXJyZW50U3RlcEluZGV4ICsgMSkgLyBzdGVwcy5sZW5ndGgpICogMTAwKSArICclJ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiBzbTpncmlkIGdyaWQtY29scy00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCBtdC02XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiIGNsYXNzPVwidGV4dC1ibHVlLTYwMCBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gU2ltcGxlIC0tPlxyXG4gICAgPG5hdiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuU2ltcGxlXCI+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJzcGFjZS15LTQgbWQ6ZmxleCBtZDpzcGFjZS15LTAgbWQ6c3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cIm1kOmZsZXgtMSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZWQgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBwbC00IHB5LTIgZmxleCBmbGV4LWNvbCBib3JkZXItbC00IGJvcmRlci1ibHVlLTYwMCBob3Zlcjpib3JkZXItYmx1ZS04MDAgbWQ6cGwtMCBtZDpwdC00IG1kOnBiLTAgbWQ6Ym9yZGVyLWwtMCBtZDpib3JkZXItdC00XCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIHRleHQtYmx1ZS02MDAgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZSBncm91cC1ob3Zlcjp0ZXh0LWJsdWUtODAwXCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGwtNCBweS0yIGZsZXggZmxleC1jb2wgYm9yZGVyLWwtNCBib3JkZXItYmx1ZS02MDAgbWQ6cGwtMCBtZDpwdC00IG1kOnBiLTAgbWQ6Ym9yZGVyLWwtMCBtZDpib3JkZXItdC00XCIgYXJpYS1jdXJyZW50PVwic3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyB0ZXh0LWJsdWUtNjAwIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2VcIj5TdGVwIHt7IHN0ZXAuaW5kZXggKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwIHBsLTQgcHktMiBmbGV4IGZsZXgtY29sIGJvcmRlci1sLTQgYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCBtZDpwbC0wIG1kOnB0LTQgbWQ6cGItMCBtZDpib3JkZXItbC0wIG1kOmJvcmRlci10LTRcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTcwMFwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuICAgIDwvbmF2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+Il19
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component, ContentChildren, EventEmitter, forwardRef, Output } from '@angular/core';
|
|
2
|
+
import { LIBTABGROUP_ACCESSOR } from '../../tokens';
|
|
3
|
+
import { LibTabComponent } from './lib-tab.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class LibTabGroupComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
/** The inner tabs of the group. */
|
|
9
|
+
this.tabs = undefined;
|
|
10
|
+
/** Emmited when a step change occurs. */
|
|
11
|
+
this.tabChanged = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
/** The current tab. */
|
|
14
|
+
get currentTab() {
|
|
15
|
+
var _a;
|
|
16
|
+
return (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.find(x => x.isActive);
|
|
17
|
+
}
|
|
18
|
+
/** The index (starting from zero) of the current tab. */
|
|
19
|
+
get currentΤabIndex() {
|
|
20
|
+
var _a;
|
|
21
|
+
return ((_a = this.currentTab) === null || _a === void 0 ? void 0 : _a.index) || undefined;
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() { }
|
|
24
|
+
ngAfterContentInit() {
|
|
25
|
+
if (!this.tabs) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
ngAfterContentChecked() {
|
|
30
|
+
if (this.tabs && this.tabs.length > 0) {
|
|
31
|
+
const anyActive = this.tabs.filter(x => x.isActive).length > 0;
|
|
32
|
+
if (!anyActive) {
|
|
33
|
+
this.tabs.get(0).isActive = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
onTabChanged(selectedTab) {
|
|
38
|
+
this.tabs.forEach((tab) => tab.isActive = tab.id === selectedTab.id);
|
|
39
|
+
this.tabChanged.emit(selectedTab);
|
|
40
|
+
}
|
|
41
|
+
onTabSelectChanged(selectedTabIndex) {
|
|
42
|
+
var _a;
|
|
43
|
+
this.tabs.forEach((tab, index) => tab.isActive = index === selectedTabIndex);
|
|
44
|
+
this.tabChanged.emit((_a = this.tabs) === null || _a === void 0 ? void 0 : _a.get(selectedTabIndex));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
LibTabGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
LibTabGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibTabGroupComponent, selector: "lib-tab-group", outputs: { tabChanged: "tabChanged" }, providers: [
|
|
49
|
+
{ provide: LIBTABGROUP_ACCESSOR, useExisting: forwardRef(() => LibTabGroupComponent) }
|
|
50
|
+
], queries: [{ propertyName: "tabs", predicate: LibTabComponent, descendants: true }], ngImport: i0, template: "<div class=\"tab-group-select-hidden\">\r\n <label for=\"tabs\" class=\"sr-only\">Select a tab</label>\r\n <select id=\"tabs\" name=\"tabs\" (change)=\"onTabSelectChanged(+tabsSelect.value)\" class=\"tab-group-select\" #tabsSelect>\r\n <option [value]=\"i\" *ngFor=\"let tab of tabs; let i = index\">{{ tab.label }}</option>\r\n </select>\r\n</div>\r\n<div class=\"tab-group-container-hidden\">\r\n <div class=\"tab-group-container\">\r\n <nav class=\"tab-group-container-nav\" aria-label=\"Tabs\">\r\n <a *ngFor=\"let tab of tabs\" href=\"javascript:void(0)\" [class.tab]=\"!tab.isActive\" [class.tab-active]=\"tab.isActive\" (click)=\"onTabChanged(tab)\">\r\n {{ tab.label }}\r\n </a>\r\n </nav>\r\n </div>\r\n</div>\r\n<div *ngIf=\"currentTab?.content\">\r\n <ng-container [ngTemplateOutlet]=\"currentTab!.content\"></ng-container>\r\n</div>", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabGroupComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{
|
|
54
|
+
selector: 'lib-tab-group',
|
|
55
|
+
templateUrl: './lib-tab-group.component.html',
|
|
56
|
+
providers: [
|
|
57
|
+
{ provide: LIBTABGROUP_ACCESSOR, useExisting: forwardRef(() => LibTabGroupComponent) }
|
|
58
|
+
]
|
|
59
|
+
}]
|
|
60
|
+
}], ctorParameters: function () { return []; }, propDecorators: { tabs: [{
|
|
61
|
+
type: ContentChildren,
|
|
62
|
+
args: [LibTabComponent, { descendants: true }]
|
|
63
|
+
}], tabChanged: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}] } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXRhYi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdGFicy9saWItdGFiLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy90YWJzL2xpYi10YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXZKLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQVN0RCxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCO1FBRUEsbUNBQW1DO1FBQzZCLFNBQUksR0FBMkMsU0FBUyxDQUFDO1FBQ3pILHlDQUF5QztRQUN4QixlQUFVLEdBQWtDLElBQUksWUFBWSxFQUFtQixDQUFDO0lBTGpGLENBQUM7SUFPakIsdUJBQXVCO0lBQ3ZCLElBQVcsVUFBVTs7UUFDakIsT0FBTyxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQseURBQXlEO0lBQ3pELElBQVcsZUFBZTs7UUFDdEIsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsS0FBSyxLQUFJLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sUUFBUSxLQUFXLENBQUM7SUFFcEIsa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osT0FBTztTQUNWO0lBQ0wsQ0FBQztJQUVNLHFCQUFxQjtRQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQ3JDO1NBQ0o7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLFdBQTRCO1FBQzVDLElBQUksQ0FBQyxJQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBb0IsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsZ0JBQXdCOztRQUM5QyxJQUFJLENBQUMsSUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQW9CLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksMENBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDOztrSEEzQ1Esb0JBQW9CO3NHQUFwQixvQkFBb0IsK0VBSmxCO1FBQ1AsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO0tBQ3pGLCtDQU1nQixlQUFlLGdEQ2hCcEMsMDVCQWlCTTs0RkRMTyxvQkFBb0I7a0JBUGhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO3FCQUN6RjtpQkFDSjswRUFLbUUsSUFBSTtzQkFBbkUsZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUV0QyxVQUFVO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTElCVEFCR1JPVVBfQUNDRVNTT1IgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBMaWJUYWJDb21wb25lbnQgfSBmcm9tICcuL2xpYi10YWIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItdGFiLWdyb3VwJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9saWItdGFiLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogTElCVEFCR1JPVVBfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpYlRhYkdyb3VwQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJUYWJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIC8qKiBUaGUgaW5uZXIgdGFicyBvZiB0aGUgZ3JvdXAuICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKExpYlRhYkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwdWJsaWMgdGFiczogUXVlcnlMaXN0PExpYlRhYkNvbXBvbmVudD4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAvKiogRW1taXRlZCB3aGVuIGEgc3RlcCBjaGFuZ2Ugb2NjdXJzLiAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyB0YWJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8TGliVGFiQ29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGliVGFiQ29tcG9uZW50PigpO1xyXG5cclxuICAgIC8qKiBUaGUgY3VycmVudCB0YWIuICovXHJcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRUYWIoKTogTGliVGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50YWJzPy5maW5kKHggPT4geC5pc0FjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRoZSBpbmRleCAoc3RhcnRpbmcgZnJvbSB6ZXJvKSBvZiB0aGUgY3VycmVudCB0YWIuICovXHJcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnTOpGFiSW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFiPy5pbmRleCB8fCB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMudGFicykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFicyAmJiB0aGlzLnRhYnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBhbnlBY3RpdmUgPSB0aGlzLnRhYnMuZmlsdGVyKHggPT4geC5pc0FjdGl2ZSkubGVuZ3RoID4gMDtcclxuICAgICAgICAgICAgaWYgKCFhbnlBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFicy5nZXQoMCkhLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25UYWJDaGFuZ2VkKHNlbGVjdGVkVGFiOiBMaWJUYWJDb21wb25lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRhYnMhLmZvckVhY2goKHRhYjogTGliVGFiQ29tcG9uZW50KSA9PiB0YWIuaXNBY3RpdmUgPSB0YWIuaWQgPT09IHNlbGVjdGVkVGFiLmlkKTtcclxuICAgICAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdChzZWxlY3RlZFRhYik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uVGFiU2VsZWN0Q2hhbmdlZChzZWxlY3RlZFRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRhYnMhLmZvckVhY2goKHRhYjogTGliVGFiQ29tcG9uZW50LCBpbmRleDogbnVtYmVyKSA9PiB0YWIuaXNBY3RpdmUgPSBpbmRleCA9PT0gc2VsZWN0ZWRUYWJJbmRleCk7XHJcbiAgICAgICAgdGhpcy50YWJDaGFuZ2VkLmVtaXQodGhpcy50YWJzPy5nZXQoc2VsZWN0ZWRUYWJJbmRleCkpO1xyXG4gICAgfVxyXG59IiwiPGRpdiBjbGFzcz1cInRhYi1ncm91cC1zZWxlY3QtaGlkZGVuXCI+XHJcbiAgICA8bGFiZWwgZm9yPVwidGFic1wiIGNsYXNzPVwic3Itb25seVwiPlNlbGVjdCBhIHRhYjwvbGFiZWw+XHJcbiAgICA8c2VsZWN0IGlkPVwidGFic1wiIG5hbWU9XCJ0YWJzXCIgKGNoYW5nZSk9XCJvblRhYlNlbGVjdENoYW5nZWQoK3RhYnNTZWxlY3QudmFsdWUpXCIgY2xhc3M9XCJ0YWItZ3JvdXAtc2VsZWN0XCIgI3RhYnNTZWxlY3Q+XHJcbiAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaVwiICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiPnt7IHRhYi5sYWJlbCB9fTwvb3B0aW9uPlxyXG4gICAgPC9zZWxlY3Q+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwidGFiLWdyb3VwLWNvbnRhaW5lci1oaWRkZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWItZ3JvdXAtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG5hdiBjbGFzcz1cInRhYi1ncm91cC1jb250YWluZXItbmF2XCIgYXJpYS1sYWJlbD1cIlRhYnNcIj5cclxuICAgICAgICAgICAgPGEgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy50YWJdPVwiIXRhYi5pc0FjdGl2ZVwiIFtjbGFzcy50YWItYWN0aXZlXT1cInRhYi5pc0FjdGl2ZVwiIChjbGljayk9XCJvblRhYkNoYW5nZWQodGFiKVwiPlxyXG4gICAgICAgICAgICAgICAge3sgdGFiLmxhYmVsIH19XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L25hdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImN1cnJlbnRUYWI/LmNvbnRlbnRcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VycmVudFRhYiEuY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Inject, Input, Optional, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import * as uuid from 'uuid';
|
|
3
|
+
import { LIBTABGROUP_ACCESSOR } from '../../tokens';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class LibTabComponent {
|
|
6
|
+
constructor(_tabGroup) {
|
|
7
|
+
this._tabGroup = _tabGroup;
|
|
8
|
+
this._isActive = false;
|
|
9
|
+
}
|
|
10
|
+
/** Indicates the index of the tab. */
|
|
11
|
+
get index() {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
return ((_b = (_a = this._tabGroup) === null || _a === void 0 ? void 0 : _a.tabs) === null || _b === void 0 ? void 0 : _b.toArray().indexOf(this)) || undefined;
|
|
14
|
+
}
|
|
15
|
+
/** Indicates whether the tab is active. */
|
|
16
|
+
get isActive() {
|
|
17
|
+
return this._isActive;
|
|
18
|
+
}
|
|
19
|
+
/** Setter for LibTabComponent isActive property. */
|
|
20
|
+
set isActive(isActive) {
|
|
21
|
+
this._isActive = isActive;
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
this.id = this.id || uuid.v4();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
LibTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabComponent, deps: [{ token: LIBTABGROUP_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
LibTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: LibTabComponent, selector: "lib-tab", inputs: { label: "label", id: "id" }, viewQueries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: `
|
|
29
|
+
<ng-template>
|
|
30
|
+
<ng-content></ng-content>
|
|
31
|
+
</ng-template>
|
|
32
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: LibTabComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{
|
|
36
|
+
selector: 'lib-tab',
|
|
37
|
+
template: `
|
|
38
|
+
<ng-template>
|
|
39
|
+
<ng-content></ng-content>
|
|
40
|
+
</ng-template>
|
|
41
|
+
`,
|
|
42
|
+
encapsulation: ViewEncapsulation.None,
|
|
43
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
44
|
+
}]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
46
|
+
type: Optional
|
|
47
|
+
}, {
|
|
48
|
+
type: Inject,
|
|
49
|
+
args: [LIBTABGROUP_ACCESSOR]
|
|
50
|
+
}] }]; }, propDecorators: { content: [{
|
|
51
|
+
type: ViewChild,
|
|
52
|
+
args: [TemplateRef, { static: true }]
|
|
53
|
+
}], label: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], id: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}] } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdGFicy9saWItdGFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0ksT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVlwRCxNQUFNLE9BQU8sZUFBZTtJQUd4QixZQUM4RCxTQUFlO1FBQWYsY0FBUyxHQUFULFNBQVMsQ0FBTTtRQUhyRSxjQUFTLEdBQVksS0FBSyxDQUFDO0lBSS9CLENBQUM7SUFTTCxzQ0FBc0M7SUFDdEMsSUFBVyxLQUFLOztRQUNaLE9BQU8sQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsSUFBSSwwQ0FBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFJLFNBQVMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELElBQVcsUUFBUSxDQUFDLFFBQWlCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs2R0EvQlEsZUFBZSxrQkFJQSxvQkFBb0I7aUdBSm5DLGVBQWUsOEhBUWIsV0FBVyw4REFoQlo7Ozs7S0FJVDs0RkFJUSxlQUFlO2tCQVYzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUU7Ozs7S0FJVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzswQkFLUSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQjs0Q0FJSyxPQUFPO3NCQUF2RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXhCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBRVUsRUFBRTtzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBMSUJUQUJHUk9VUF9BQ0NFU1NPUiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXRhYicsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgcHJpdmF0ZSBfaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExJQlRBQkdST1VQX0FDQ0VTU09SKSBwdWJsaWMgcmVhZG9ubHkgX3RhYkdyb3VwPzogYW55XHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKiBUaGUgY29udGVudCBwcm92aWRlZCBmb3IgdGhlIHRhYi4gKi9cclxuICAgIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIC8qKiBBIGxhYmVsIGZvciB0aGUgdGFiIGhlYWRlci4gKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIEluZGljYXRlcyB0aGUgdW5pcXVlIGlkIGFzc2lnbmVkIGluIHRoZSB0YWIuICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaWQhOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEluZGljYXRlcyB0aGUgaW5kZXggb2YgdGhlIHRhYi4gKi9cclxuICAgIHB1YmxpYyBnZXQgaW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiR3JvdXA/LnRhYnM/LnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpIHx8IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhYiBpcyBhY3RpdmUuICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogU2V0dGVyIGZvciBMaWJUYWJDb21wb25lbnQgaXNBY3RpdmUgcHJvcGVydHkuICovXHJcbiAgICBwdWJsaWMgc2V0IGlzQWN0aXZlKGlzQWN0aXZlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5faXNBY3RpdmUgPSBpc0FjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuaWQgfHwgdXVpZC52NCgpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/toaster.service";
|
|
4
|
+
import * as i2 from "./toaster.component";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
export class ToasterContainerComponent {
|
|
7
|
+
constructor(toaster) {
|
|
8
|
+
this.toaster = toaster;
|
|
9
|
+
this.toasts = [];
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.toaster.toast$
|
|
13
|
+
.subscribe(toast => {
|
|
14
|
+
this.toasts = [toast, ...this.toasts];
|
|
15
|
+
setTimeout(() => this.toasts.pop(), toast.delay || 6000);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
remove(index) {
|
|
19
|
+
this.toasts = this.toasts.slice(0, index).concat(this.toasts.slice(index + 1));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
ToasterContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterContainerComponent, deps: [{ token: i1.ToasterService }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
ToasterContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ToasterContainerComponent, selector: "lib-toaster-container", ngImport: i0, template: "<lib-toaster *ngFor=\"let toast of toasts; let i=index\" [toast]=\"toast\" [i]=\"i\" (remove)=\"remove($event)\"></lib-toaster>\r\n", components: [{ type: i2.ToasterComponent, selector: "lib-toaster", inputs: ["toast", "i"], outputs: ["remove"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ToasterContainerComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{
|
|
27
|
+
selector: 'lib-toaster-container',
|
|
28
|
+
templateUrl: './toaster-container.component.html'
|
|
29
|
+
}]
|
|
30
|
+
}], ctorParameters: function () { return [{ type: i1.ToasterService }]; } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Rlci1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3RvYXN0ZXIvdG9hc3Rlci1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3RvYXN0ZXIvdG9hc3Rlci1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRbEQsTUFBTSxPQUFPLHlCQUF5QjtJQUlwQyxZQUFvQixPQUF1QjtRQUF2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUYzQyxXQUFNLEdBQVksRUFBRSxDQUFDO0lBRTBCLENBQUM7SUFFaEQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTthQUNoQixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDOzt1SEFoQlUseUJBQXlCOzJHQUF6Qix5QkFBeUIsNkRDUnRDLHFJQUNBOzRGRE9hLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsb0NBQW9DO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3QgfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10b2FzdGVyLWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RvYXN0ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9hc3RlckNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHRvYXN0czogVG9hc3RbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvYXN0ZXIudG9hc3QkXHJcbiAgICAgIC5zdWJzY3JpYmUodG9hc3QgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RzID0gW3RvYXN0LCAuLi50aGlzLnRvYXN0c107XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRvYXN0cy5wb3AoKSwgdG9hc3QuZGVsYXkgfHwgNjAwMCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudG9hc3RzID0gdGhpcy50b2FzdHMuc2xpY2UoMCwgaW5kZXgpLmNvbmNhdCh0aGlzLnRvYXN0cy5zbGljZShpbmRleCArIDEpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxsaWItdG9hc3RlciAqbmdGb3I9XCJsZXQgdG9hc3Qgb2YgdG9hc3RzOyBsZXQgaT1pbmRleFwiIFt0b2FzdF09XCJ0b2FzdFwiIFtpXT1cImlcIiAocmVtb3ZlKT1cInJlbW92ZSgkZXZlbnQpXCI+PC9saWItdG9hc3Rlcj5cclxuIl19
|