@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620
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/fesm2022/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -115
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
|
2
|
-
import { Overlay } from '../../../display/view-overlay/view-overlay.component';
|
|
3
|
-
import { DialogResult } from '../../../display/dialog/dialog-types';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../../display/dialog/dialog.service";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/router";
|
|
8
|
-
import * as i4 from "@angular/cdk/scrolling";
|
|
9
|
-
import * as i5 from "../../../controls/button/button.component";
|
|
10
|
-
import * as i6 from "../../../display/view-overlay/view-overlay.component";
|
|
11
|
-
import * as i7 from "../../../controls/banner/banner.component";
|
|
12
|
-
import * as i8 from "../../../controls/dropdown/dropdown.component";
|
|
13
|
-
import * as i9 from "../page-title/page-title.component";
|
|
14
|
-
export class PageViewComponent {
|
|
15
|
-
constructor(dialogService) {
|
|
16
|
-
this.dialogService = dialogService;
|
|
17
|
-
/**
|
|
18
|
-
* Set to true when page-view is inside a dialog to adjust styles and hide breadcrumbs.
|
|
19
|
-
*/
|
|
20
|
-
this.isDialog = false;
|
|
21
|
-
/**
|
|
22
|
-
* Set to true to enable read only mode. Only a single secondary action will be available
|
|
23
|
-
*/
|
|
24
|
-
this.readonly = false;
|
|
25
|
-
/**
|
|
26
|
-
* Controls Overlay that masks the page view content. Only the header is not masked when the overlay is visible. Default is pending Overlay with no message
|
|
27
|
-
*/
|
|
28
|
-
this.status = new Overlay('pending');
|
|
29
|
-
/**
|
|
30
|
-
* Set to false to hide the entire header, including breadcrumbs and error banner. Default is true.
|
|
31
|
-
*/
|
|
32
|
-
this.showHeader = true;
|
|
33
|
-
/**
|
|
34
|
-
* Label for the actions dropdown in the header. Default is 'Actions'
|
|
35
|
-
*/
|
|
36
|
-
this.moreActionsLabel = 'Actions';
|
|
37
|
-
/**
|
|
38
|
-
* Label for the secondary button in the header. Default is 'Cancel'
|
|
39
|
-
*/
|
|
40
|
-
this.secondaryActionLabel = 'Cancel';
|
|
41
|
-
this.hideSecondaryAction = false;
|
|
42
|
-
/** Flag for hiding the tiny close button in the top-right corner of dialog while in pending state only */
|
|
43
|
-
this.hideCloseOnPending = false;
|
|
44
|
-
/**
|
|
45
|
-
* Label for the primary button in the header. Default is 'Save'
|
|
46
|
-
*/
|
|
47
|
-
this.primaryActionLabel = 'Save';
|
|
48
|
-
this.hidePrimaryAction = false;
|
|
49
|
-
/**
|
|
50
|
-
* Pins the footer to the bottom of the view and overlays any overflowing content
|
|
51
|
-
*/
|
|
52
|
-
this.stickyFooter = true;
|
|
53
|
-
/**
|
|
54
|
-
* Prevents content from overflowing the view. Content must manage overflow instead.
|
|
55
|
-
*/
|
|
56
|
-
this.fitContent = false;
|
|
57
|
-
/**
|
|
58
|
-
* Disables the primary action button
|
|
59
|
-
*/
|
|
60
|
-
this.disablePrimaryAction = false;
|
|
61
|
-
/** Changes the background color for the content and overlay to white */
|
|
62
|
-
this.bgContent = false;
|
|
63
|
-
this.onPrimaryAction = new EventEmitter();
|
|
64
|
-
this.onSecondaryAction = new EventEmitter();
|
|
65
|
-
}
|
|
66
|
-
primaryAction(event) {
|
|
67
|
-
if (this.onPrimaryAction) {
|
|
68
|
-
this.onPrimaryAction.emit(event);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
secondaryAction(event) {
|
|
72
|
-
if (this.onSecondaryAction) {
|
|
73
|
-
this.onSecondaryAction.emit(event);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
closeDialog() {
|
|
77
|
-
this.dialogService.closeLatestDialog(new DialogResult(false));
|
|
78
|
-
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageViewComponent, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageViewComponent, selector: "ec-page-view", inputs: { isDialog: "isDialog", readonly: "readonly", status: "status", showHeader: "showHeader", errors: "errors", breadcrumbs: "breadcrumbs", title: "title", titleIcon: "titleIcon", subTitle: "subTitle", subTitleUrl: "subTitleUrl", moreActionsLabel: "moreActionsLabel", moreActions: "moreActions", secondaryActionLabel: "secondaryActionLabel", hideSecondaryAction: "hideSecondaryAction", hideCloseOnPending: "hideCloseOnPending", primaryActionLabel: "primaryActionLabel", hidePrimaryAction: "hidePrimaryAction", customTitleTemplate: "customTitleTemplate", customActionsTemplate: "customActionsTemplate", customHeaderTemplate: "customHeaderTemplate", footerTemplate: "footerTemplate", customErrorBannerTemplate: "customErrorBannerTemplate", stickyFooter: "stickyFooter", fitContent: "fitContent", disablePrimaryAction: "disablePrimaryAction", bgContent: "bgContent" }, outputs: { onPrimaryAction: "onPrimaryAction", onSecondaryAction: "onSecondaryAction" }, host: { properties: { "class.bg-content": "this.bgContent" }, classAttribute: "flex-grow" }, ngImport: i0, template: "<div ecOverlay\n [status]=\"status?.status\"\n [message]=\"status?.message\"\n [displayAsMask]=\"true\"\n class=\"flex-grow d-flex\"\n [ngClass]=\"{'bg-body': !bgContent, 'bg-content': bgContent}\">\n <div id=\"PageViewScrollContainer\"\n class=\"d-flex flex-column flex-grow scroll-y\"\n [class.is-dialog]=\"isDialog\"\n [class.fit-content]=\"fitContent\"\n [class.sticky-footer]=\"stickyFooter && !!footerTemplate\"\n [class.overlay-visible]=\"status?.status !== 'hasData'\"\n [class.footer-visible]=\"!!footerTemplate\"\n cdkScrollable>\n <section>\n <ng-content></ng-content>\n </section>\n\n <footer *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </footer>\n\n <header *ngIf=\"showHeader\">\n <ol id=\"breadcrumbs\"\n *ngIf=\"breadcrumbs?.length && !isDialog\">\n <li *ngFor=\"let crumb of breadcrumbs; last as isLast\">\n <a *ngIf=\"crumb.url; else label\"\n [routerLink]=\"crumb.url\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </a>\n <ng-template #label>{{crumb.label}}</ng-template>\n </li>\n </ol>\n\n <div class=\"titlebar\">\n <app-page-title *ngIf=\"!customTitleTemplate; else customTitle\"\n [title]=\"title\"\n [subTitle]=\"subTitle\"\n [subTitleUrl]=\"subTitleUrl\"\n [titleIcon]=\"titleIcon\"\n class=\"title text-truncate\">\n </app-page-title>\n\n <ng-template #customTitle>\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"customTitleTemplate\"></ng-container>\n </div>\n </ng-template>\n\n <div class=\"actions\">\n <ec-button id=\"primaryAction\"\n class=\"ml-2\"\n *ngIf=\"!hidePrimaryAction && onPrimaryAction.observers?.length && !readonly\"\n [disabled]=\"status?.status === 'pending' || disablePrimaryAction\"\n type=\"primary\"\n [label]=\"primaryActionLabel\"\n (clicked)=\"primaryAction($event)\">\n </ec-button>\n <ec-button id=\"secondaryAction\"\n class=\"ml-2\"\n *ngIf=\"!hideSecondaryAction && onSecondaryAction.observers?.length\"\n type=\"secondary\"\n [label]=\"readonly ? 'Close' : secondaryActionLabel\"\n (clicked)=\"secondaryAction($event)\">\n </ec-button>\n <ec-dropdown id=\"moreActions\"\n *ngIf=\"moreActions?.length && !readonly\"\n [disabled]=\"status?.status === 'pending'\"\n class=\"ml-2\"\n buttonType=\"text\"\n [label]=\"moreActionsLabel\"\n [items]=\"moreActions\">\n </ec-dropdown>\n <ng-container *ngTemplateOutlet=\"customActionsTemplate\"></ng-container>\n </div>\n </div>\n\n <div *ngIf=\"customHeaderTemplate\"\n class=\"page-header\">\n <ng-container *ngTemplateOutlet=\"customHeaderTemplate\"></ng-container>\n </div>\n\n <ec-banner *ngIf=\"!customErrorBannerTemplate && errors; else customErrorBannerOutlet\"\n id=\"pageViewErrors\"\n [class.border-bottom-0]=\"!isDialog\">\n <div [innerHtml]=\"errors\"></div>\n </ec-banner>\n\n <ng-template #customErrorBannerOutlet>\n <ec-banner *ngIf=\"errors\"\n id=\"pageViewErrors\"\n [class.border-bottom-0]=\"!isDialog\">\n <ng-container *ngTemplateOutlet=\"customErrorBannerTemplate\"></ng-container>\n </ec-banner>\n </ng-template>\n </header>\n </div>\n\n <ec-button *ngIf=\"isDialog && ( (status?.status === 'pending' && !hideCloseOnPending) || status?.status === 'error')\"\n id=\"pageViewDialogClose\"\n type=\"icon\"\n icon=\"icon-cancel\"\n (clicked)=\"closeDialog()\">\n </ec-button>\n</div>", styles: [":host{flex:1 1;min-height:0;display:flex}header{background-color:var(--ec-background-color-body);position:sticky;top:0;order:1;padding:1rem 1.5rem .5rem;flex:none;z-index:var(--ec-z-index-sticky-page-header)}ol{font-size:var(--ec-font-size-label);line-height:1rem;grid-column:1/3;grid-row:1/2;list-style:none;padding:0;margin:0 0 .25rem}ol li{display:inline}ol li:not(:last-child):after{content:\" / \";display:inline;color:var(--ec-color-secondary-dark)}div[ecOverlay]{position:relative}.titlebar{display:grid;grid-template-columns:auto max-content;grid-template-rows:max-content max-content;gap:0 1rem}.title{grid-column:1/2;grid-row:2/3;align-self:center}.actions{grid-column:2/3;grid-row:2/3;display:flex;flex-direction:row-reverse}ec-banner{margin-top:1rem}section{padding:var(--ec-page-view-padding-section, .5rem 1.5rem 2rem);order:2;flex:1 0 auto;min-height:0}:not(.is-dialog)>section{z-index:0}footer{background-color:var(--ec-background-color-body);order:3;padding:0 1.5rem;height:4.5rem;flex:none;display:flex;align-items:center}.is-dialog header{padding:0}.is-dialog .titlebar{background-color:var(--ec-background-color);padding:1rem}.is-dialog ec-banner{margin:0}.is-dialog section{padding:var(--ec-page-view-padding-section, 1rem 1rem 1.5rem)}.sticky-footer section{padding-bottom:4.5rem}.sticky-footer footer{position:sticky;bottom:0;z-index:var(--ec-z-index-sticky-page-header)}.fit-content>section{flex:1 1;display:flex}.footer-visible section{padding-bottom:0}.overlay-visible header{z-index:var(--ec-z-index-overlay)1}.overlay-visible ec-banner{display:none}:host(.bg-content) header{background-color:var(--ec-background-color)}:host(.bg-content) section{background-color:var(--ec-background-color)}:host(.bg-content) footer{background-color:var(--ec-background-color)}#pageViewDialogClose{position:absolute;top:1rem;right:1rem;z-index:calc(var(--ec-z-index-overlay) + 1)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i5.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "lockButton", "icon", "iconColor", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "component", type: i6.ViewOverlayComponent, selector: "[ecOverlay]", inputs: ["status", "message", "action", "noDataTemplate", "displayAsMask", "overlayClassList"] }, { kind: "component", type: i7.BannerComponent, selector: "ec-banner", inputs: ["hidden", "id", "type", "bannerStyle", "title", "text", "list", "showCloseBtn", "autoHideOnClose", "customIcon", "rememberClosed"], outputs: ["closed"] }, { kind: "component", type: i8.DropdownComponent, selector: "ec-dropdown", inputs: ["id", "autofocus", "status", "disabled", "label", "icon", "buttonType", "buttonAlignment", "buttonTitle", "tabindex", "showArrow", "items", "menuTemplateType", "menuTitle", "menuHeight", "menuWidth", "menuMinWidth", "menuPosition", "menuFooter", "popupFixed", "buttonCustomTemplate", "pending"], outputs: ["itemSelected", "popupOpened"] }, { kind: "component", type: i9.PageTitleComponent, selector: "app-page-title", inputs: ["title", "titleIcon", "subTitle", "subTitleUrl"] }] }); }
|
|
81
|
-
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageViewComponent, decorators: [{
|
|
83
|
-
type: Component,
|
|
84
|
-
args: [{ selector: 'ec-page-view', host: {
|
|
85
|
-
class: "flex-grow"
|
|
86
|
-
}, template: "<div ecOverlay\n [status]=\"status?.status\"\n [message]=\"status?.message\"\n [displayAsMask]=\"true\"\n class=\"flex-grow d-flex\"\n [ngClass]=\"{'bg-body': !bgContent, 'bg-content': bgContent}\">\n <div id=\"PageViewScrollContainer\"\n class=\"d-flex flex-column flex-grow scroll-y\"\n [class.is-dialog]=\"isDialog\"\n [class.fit-content]=\"fitContent\"\n [class.sticky-footer]=\"stickyFooter && !!footerTemplate\"\n [class.overlay-visible]=\"status?.status !== 'hasData'\"\n [class.footer-visible]=\"!!footerTemplate\"\n cdkScrollable>\n <section>\n <ng-content></ng-content>\n </section>\n\n <footer *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </footer>\n\n <header *ngIf=\"showHeader\">\n <ol id=\"breadcrumbs\"\n *ngIf=\"breadcrumbs?.length && !isDialog\">\n <li *ngFor=\"let crumb of breadcrumbs; last as isLast\">\n <a *ngIf=\"crumb.url; else label\"\n [routerLink]=\"crumb.url\">\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </a>\n <ng-template #label>{{crumb.label}}</ng-template>\n </li>\n </ol>\n\n <div class=\"titlebar\">\n <app-page-title *ngIf=\"!customTitleTemplate; else customTitle\"\n [title]=\"title\"\n [subTitle]=\"subTitle\"\n [subTitleUrl]=\"subTitleUrl\"\n [titleIcon]=\"titleIcon\"\n class=\"title text-truncate\">\n </app-page-title>\n\n <ng-template #customTitle>\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"customTitleTemplate\"></ng-container>\n </div>\n </ng-template>\n\n <div class=\"actions\">\n <ec-button id=\"primaryAction\"\n class=\"ml-2\"\n *ngIf=\"!hidePrimaryAction && onPrimaryAction.observers?.length && !readonly\"\n [disabled]=\"status?.status === 'pending' || disablePrimaryAction\"\n type=\"primary\"\n [label]=\"primaryActionLabel\"\n (clicked)=\"primaryAction($event)\">\n </ec-button>\n <ec-button id=\"secondaryAction\"\n class=\"ml-2\"\n *ngIf=\"!hideSecondaryAction && onSecondaryAction.observers?.length\"\n type=\"secondary\"\n [label]=\"readonly ? 'Close' : secondaryActionLabel\"\n (clicked)=\"secondaryAction($event)\">\n </ec-button>\n <ec-dropdown id=\"moreActions\"\n *ngIf=\"moreActions?.length && !readonly\"\n [disabled]=\"status?.status === 'pending'\"\n class=\"ml-2\"\n buttonType=\"text\"\n [label]=\"moreActionsLabel\"\n [items]=\"moreActions\">\n </ec-dropdown>\n <ng-container *ngTemplateOutlet=\"customActionsTemplate\"></ng-container>\n </div>\n </div>\n\n <div *ngIf=\"customHeaderTemplate\"\n class=\"page-header\">\n <ng-container *ngTemplateOutlet=\"customHeaderTemplate\"></ng-container>\n </div>\n\n <ec-banner *ngIf=\"!customErrorBannerTemplate && errors; else customErrorBannerOutlet\"\n id=\"pageViewErrors\"\n [class.border-bottom-0]=\"!isDialog\">\n <div [innerHtml]=\"errors\"></div>\n </ec-banner>\n\n <ng-template #customErrorBannerOutlet>\n <ec-banner *ngIf=\"errors\"\n id=\"pageViewErrors\"\n [class.border-bottom-0]=\"!isDialog\">\n <ng-container *ngTemplateOutlet=\"customErrorBannerTemplate\"></ng-container>\n </ec-banner>\n </ng-template>\n </header>\n </div>\n\n <ec-button *ngIf=\"isDialog && ( (status?.status === 'pending' && !hideCloseOnPending) || status?.status === 'error')\"\n id=\"pageViewDialogClose\"\n type=\"icon\"\n icon=\"icon-cancel\"\n (clicked)=\"closeDialog()\">\n </ec-button>\n</div>", styles: [":host{flex:1 1;min-height:0;display:flex}header{background-color:var(--ec-background-color-body);position:sticky;top:0;order:1;padding:1rem 1.5rem .5rem;flex:none;z-index:var(--ec-z-index-sticky-page-header)}ol{font-size:var(--ec-font-size-label);line-height:1rem;grid-column:1/3;grid-row:1/2;list-style:none;padding:0;margin:0 0 .25rem}ol li{display:inline}ol li:not(:last-child):after{content:\" / \";display:inline;color:var(--ec-color-secondary-dark)}div[ecOverlay]{position:relative}.titlebar{display:grid;grid-template-columns:auto max-content;grid-template-rows:max-content max-content;gap:0 1rem}.title{grid-column:1/2;grid-row:2/3;align-self:center}.actions{grid-column:2/3;grid-row:2/3;display:flex;flex-direction:row-reverse}ec-banner{margin-top:1rem}section{padding:var(--ec-page-view-padding-section, .5rem 1.5rem 2rem);order:2;flex:1 0 auto;min-height:0}:not(.is-dialog)>section{z-index:0}footer{background-color:var(--ec-background-color-body);order:3;padding:0 1.5rem;height:4.5rem;flex:none;display:flex;align-items:center}.is-dialog header{padding:0}.is-dialog .titlebar{background-color:var(--ec-background-color);padding:1rem}.is-dialog ec-banner{margin:0}.is-dialog section{padding:var(--ec-page-view-padding-section, 1rem 1rem 1.5rem)}.sticky-footer section{padding-bottom:4.5rem}.sticky-footer footer{position:sticky;bottom:0;z-index:var(--ec-z-index-sticky-page-header)}.fit-content>section{flex:1 1;display:flex}.footer-visible section{padding-bottom:0}.overlay-visible header{z-index:var(--ec-z-index-overlay)1}.overlay-visible ec-banner{display:none}:host(.bg-content) header{background-color:var(--ec-background-color)}:host(.bg-content) section{background-color:var(--ec-background-color)}:host(.bg-content) footer{background-color:var(--ec-background-color)}#pageViewDialogClose{position:absolute;top:1rem;right:1rem;z-index:calc(var(--ec-z-index-overlay) + 1)}\n"] }]
|
|
87
|
-
}], ctorParameters: () => [{ type: i1.DialogService }], propDecorators: { isDialog: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], readonly: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}], status: [{
|
|
92
|
-
type: Input
|
|
93
|
-
}], showHeader: [{
|
|
94
|
-
type: Input
|
|
95
|
-
}], errors: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], breadcrumbs: [{
|
|
98
|
-
type: Input
|
|
99
|
-
}], title: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}], titleIcon: [{
|
|
102
|
-
type: Input
|
|
103
|
-
}], subTitle: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], subTitleUrl: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], moreActionsLabel: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], moreActions: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], secondaryActionLabel: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], hideSecondaryAction: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], hideCloseOnPending: [{
|
|
116
|
-
type: Input
|
|
117
|
-
}], primaryActionLabel: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], hidePrimaryAction: [{
|
|
120
|
-
type: Input
|
|
121
|
-
}], customTitleTemplate: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], customActionsTemplate: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], customHeaderTemplate: [{
|
|
126
|
-
type: Input
|
|
127
|
-
}], footerTemplate: [{
|
|
128
|
-
type: Input
|
|
129
|
-
}], customErrorBannerTemplate: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], stickyFooter: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], fitContent: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], disablePrimaryAction: [{
|
|
136
|
-
type: Input
|
|
137
|
-
}], bgContent: [{
|
|
138
|
-
type: HostBinding,
|
|
139
|
-
args: ['class.bg-content']
|
|
140
|
-
}, {
|
|
141
|
-
type: Input
|
|
142
|
-
}], onPrimaryAction: [{
|
|
143
|
-
type: Output
|
|
144
|
-
}], onSecondaryAction: [{
|
|
145
|
-
type: Output
|
|
146
|
-
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBSWpHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7O0FBVXBFLE1BQU0sT0FBTyxpQkFBaUI7SUE4RzVCLFlBQ1UsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE5R3RDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUM7O1dBRUc7UUFDYSxXQUFNLEdBQWEsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFDYSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBb0IzQzs7V0FFRztRQUNhLHFCQUFnQixHQUFZLFNBQVMsQ0FBQztRQU10RDs7V0FFRztRQUNhLHlCQUFvQixHQUFZLFFBQVEsQ0FBQztRQUN6Qyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFNUMsMEdBQTBHO1FBQzFGLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUVwRDs7V0FFRztRQUNhLHVCQUFrQixHQUFZLE1BQU0sQ0FBQztRQUNyQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUEyQjFDOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEM7O1dBRUc7UUFDYSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5DOztXQUVHO1FBQ2EseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdDLHdFQUF3RTtRQUV4RCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWpCLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFJdkUsQ0FBQztJQUVFLGFBQWEsQ0FBQyxLQUFVO1FBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQVU7UUFDL0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0FoSVUsaUJBQWlCO21HQUFqQixpQkFBaUIsZ2xDQ2Y5Qiw0eUpBd0dNOzs0RkR6Rk8saUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGNBQWMsUUFHbEI7d0JBQ0osS0FBSyxFQUFFLFdBQVc7cUJBQ25CO2tGQU1lLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS1UsUUFBUTtzQkFBdkIsS0FBSztnQkFLVSxNQUFNO3NCQUFyQixLQUFLO2dCQUtVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFLVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUlVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFHVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBS1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFLVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBS1UscUJBQXFCO3NCQUFwQyxLQUFLO2dCQUtVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFLVSxjQUFjO3NCQUE3QixLQUFLO2dCQUtVLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFLVSxZQUFZO3NCQUEzQixLQUFLO2dCQUtVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBS1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUlVLFNBQVM7c0JBRHhCLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsS0FBSztnQkFFVyxlQUFlO3NCQUEvQixNQUFNO2dCQUNVLGlCQUFpQjtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2SXRlbSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWl0ZW0nO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLXR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWMtcGFnZS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2Utdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2Utdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7XG4gICAgY2xhc3M6IFwiZmxleC1ncm93XCJcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVmlld0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB3aGVuIHBhZ2UtdmlldyBpcyBpbnNpZGUgYSBkaWFsb2cgdG8gYWRqdXN0IHN0eWxlcyBhbmQgaGlkZSBicmVhZGNydW1icy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgcmVhZCBvbmx5IG1vZGUuIE9ubHkgYSBzaW5nbGUgc2Vjb25kYXJ5IGFjdGlvbiB3aWxsIGJlIGF2YWlsYWJsZVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIE92ZXJsYXkgdGhhdCBtYXNrcyB0aGUgcGFnZSB2aWV3IGNvbnRlbnQuIE9ubHkgdGhlIGhlYWRlciBpcyBub3QgbWFza2VkIHdoZW4gdGhlIG92ZXJsYXkgaXMgdmlzaWJsZS4gRGVmYXVsdCBpcyBwZW5kaW5nIE92ZXJsYXkgd2l0aCBubyBtZXNzYWdlXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgc3RhdHVzPzogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdwZW5kaW5nJyk7XG5cbiAgLyoqXG4gICAqIFNldCB0byBmYWxzZSB0byBoaWRlIHRoZSBlbnRpcmUgaGVhZGVyLCBpbmNsdWRpbmcgYnJlYWRjcnVtYnMgYW5kIGVycm9yIGJhbm5lci4gRGVmYXVsdCBpcyB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhbiBlcnJvciBiYW5uZXIgdW5kZXIgdGhlIHRpdGxlYmFyIHdoZW4gcHJvdmlkZWQgYSB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBlcnJvcnM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyZWFkY3J1bWJzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGJyZWFkY3J1bWJzPzogTmF2SXRlbVtdO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBzZXR0aW5ncy4gUGFzc2VkIHRvIHRoZSBQYWdlVGl0bGVDb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZUljb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHN1YlRpdGxlVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMYWJlbCBmb3IgdGhlIGFjdGlvbnMgZHJvcGRvd24gaW4gdGhlIGhlYWRlci4gRGVmYXVsdCBpcyAnQWN0aW9ucydcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtb3JlQWN0aW9uc0xhYmVsPzogc3RyaW5nID0gJ0FjdGlvbnMnO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIGFjdGlvbnMgZHJvcGRvd24gaW4gdGhlIGhlYWRlci4gVGhlIGRyb3Bkb3duIGlzIGhpZGRlbiBpZiBub3Qgb3B0aW9ucyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbW9yZUFjdGlvbnM/OiBNZW51SXRlbVtdO1xuXG4gIC8qKlxuICAgKiBMYWJlbCBmb3IgdGhlIHNlY29uZGFyeSBidXR0b24gaW4gdGhlIGhlYWRlci4gRGVmYXVsdCBpcyAnQ2FuY2VsJ1xuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHNlY29uZGFyeUFjdGlvbkxhYmVsPzogc3RyaW5nID0gJ0NhbmNlbCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlU2Vjb25kYXJ5QWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqIEZsYWcgZm9yIGhpZGluZyB0aGUgdGlueSBjbG9zZSBidXR0b24gaW4gdGhlIHRvcC1yaWdodCBjb3JuZXIgb2YgZGlhbG9nIHdoaWxlIGluIHBlbmRpbmcgc3RhdGUgb25seSAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZUNsb3NlT25QZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgcHJpbWFyeSBidXR0b24gaW4gdGhlIGhlYWRlci4gRGVmYXVsdCBpcyAnU2F2ZSdcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBwcmltYXJ5QWN0aW9uTGFiZWw/OiBzdHJpbmcgPSAnU2F2ZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlUHJpbWFyeUFjdGlvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgdGl0bGUsIHN1YnRpdGxlIGFuZCB0aXRsZSBpY29uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVGl0bGVUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIEluc2VydGVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBkZWZhdWx0IGFjdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21BY3Rpb25zVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgdGl0bGViYXIgYW5kIGFjdGlvbnMgb2YgdGhlIGRlZmF1bHQgaGVhZGVyLiBCcmVhZGNydW1icyBhbmQgZXJyb3IgYmFubmVyIGFyZSBub3QgcmVwbGFjZWQuIENhbm5vdCBjb250YWluIGEgPGhlYWRlcj4gZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21IZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gaW5jbHVkZSBpbiB0aGUgZm9vdGVyXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZm9vdGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgRXJyb3IgQmFubmVyIGRlZmF1bHQgdGVtcGxhdGUuIFVzZWZ1bCB3aGVuIHdlIG5lZWQgdG8gc2hvdyBtb3JlIHRoYW4gdGV4dCBpbiB0aGUgYmFubmVyLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUVycm9yQmFubmVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKlxuICAgKiBQaW5zIHRoZSBmb290ZXIgdG8gdGhlIGJvdHRvbSBvZiB0aGUgdmlldyBhbmQgb3ZlcmxheXMgYW55IG92ZXJmbG93aW5nIGNvbnRlbnRcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGlja3lGb290ZXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBQcmV2ZW50cyBjb250ZW50IGZyb20gb3ZlcmZsb3dpbmcgdGhlIHZpZXcuIENvbnRlbnQgbXVzdCBtYW5hZ2Ugb3ZlcmZsb3cgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmaXRDb250ZW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIHRoZSBwcmltYXJ5IGFjdGlvbiBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlUHJpbWFyeUFjdGlvbiA9IGZhbHNlO1xuXG4gIC8qKiBDaGFuZ2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgY29udGVudCBhbmQgb3ZlcmxheSB0byB3aGl0ZSAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJnLWNvbnRlbnQnKVxuICBASW5wdXQoKSBwdWJsaWMgYmdDb250ZW50ID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBvblByaW1hcnlBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9uU2Vjb25kYXJ5QWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgcHJpbWFyeUFjdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMub25QcmltYXJ5QWN0aW9uKSB7XG4gICAgICB0aGlzLm9uUHJpbWFyeUFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2Vjb25kYXJ5QWN0aW9uKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5vblNlY29uZGFyeUFjdGlvbikge1xuICAgICAgdGhpcy5vblNlY29uZGFyeUFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlTGF0ZXN0RGlhbG9nKG5ldyBEaWFsb2dSZXN1bHQoZmFsc2UpKTtcbiAgfVxufVxuIiwiPGRpdiBlY092ZXJsYXlcbiAgICAgW3N0YXR1c109XCJzdGF0dXM/LnN0YXR1c1wiXG4gICAgIFttZXNzYWdlXT1cInN0YXR1cz8ubWVzc2FnZVwiXG4gICAgIFtkaXNwbGF5QXNNYXNrXT1cInRydWVcIlxuICAgICBjbGFzcz1cImZsZXgtZ3JvdyBkLWZsZXhcIlxuICAgICBbbmdDbGFzc109XCJ7J2JnLWJvZHknOiAhYmdDb250ZW50LCAnYmctY29udGVudCc6IGJnQ29udGVudH1cIj5cbiAgICA8ZGl2IGlkPVwiUGFnZVZpZXdTY3JvbGxDb250YWluZXJcIlxuICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1ncm93IHNjcm9sbC15XCJcbiAgICAgICAgIFtjbGFzcy5pcy1kaWFsb2ddPVwiaXNEaWFsb2dcIlxuICAgICAgICAgW2NsYXNzLmZpdC1jb250ZW50XT1cImZpdENvbnRlbnRcIlxuICAgICAgICAgW2NsYXNzLnN0aWNreS1mb290ZXJdPVwic3RpY2t5Rm9vdGVyICYmICEhZm9vdGVyVGVtcGxhdGVcIlxuICAgICAgICAgW2NsYXNzLm92ZXJsYXktdmlzaWJsZV09XCJzdGF0dXM/LnN0YXR1cyAhPT0gJ2hhc0RhdGEnXCJcbiAgICAgICAgIFtjbGFzcy5mb290ZXItdmlzaWJsZV09XCIhIWZvb3RlclRlbXBsYXRlXCJcbiAgICAgICAgIGNka1Njcm9sbGFibGU+XG4gICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPGZvb3RlciAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mb290ZXI+XG5cbiAgICAgICAgPGhlYWRlciAqbmdJZj1cInNob3dIZWFkZXJcIj5cbiAgICAgICAgICAgIDxvbCBpZD1cImJyZWFkY3J1bWJzXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImJyZWFkY3J1bWJzPy5sZW5ndGggJiYgIWlzRGlhbG9nXCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBjcnVtYiBvZiBicmVhZGNydW1iczsgbGFzdCBhcyBpc0xhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJjcnVtYi51cmw7IGVsc2UgbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjcnVtYi51cmxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWw+e3tjcnVtYi5sYWJlbH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlYmFyXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1wYWdlLXRpdGxlICpuZ0lmPVwiIWN1c3RvbVRpdGxlVGVtcGxhdGU7IGVsc2UgY3VzdG9tVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ViVGl0bGVdPVwic3ViVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ViVGl0bGVVcmxdPVwic3ViVGl0bGVVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVJY29uXT1cInRpdGxlSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGUgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXBhZ2UtdGl0bGU+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZWMtYnV0dG9uIGlkPVwicHJpbWFyeUFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlUHJpbWFyeUFjdGlvbiAmJiBvblByaW1hcnlBY3Rpb24ub2JzZXJ2ZXJzPy5sZW5ndGggJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3RhdHVzPy5zdGF0dXMgPT09ICdwZW5kaW5nJyB8fCBkaXNhYmxlUHJpbWFyeUFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJwcmltYXJ5QWN0aW9uTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInByaW1hcnlBY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2VjLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGVjLWJ1dHRvbiBpZD1cInNlY29uZGFyeUFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2Vjb25kYXJ5QWN0aW9uICYmIG9uU2Vjb25kYXJ5QWN0aW9uLm9ic2VydmVycz8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwicmVhZG9ubHkgPyAnQ2xvc2UnIDogc2Vjb25kYXJ5QWN0aW9uTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInNlY29uZGFyeUFjdGlvbigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZWMtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZWMtZHJvcGRvd24gaWQ9XCJtb3JlQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vcmVBY3Rpb25zPy5sZW5ndGggJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdGF0dXM/LnN0YXR1cyA9PT0gJ3BlbmRpbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UeXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibW9yZUFjdGlvbnNMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwibW9yZUFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9lYy1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXN0b21IZWFkZXJUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZWMtYmFubmVyICpuZ0lmPVwiIWN1c3RvbUVycm9yQmFubmVyVGVtcGxhdGUgJiYgZXJyb3JzOyBlbHNlIGN1c3RvbUVycm9yQmFubmVyT3V0bGV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYWdlVmlld0Vycm9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYm90dG9tLTBdPVwiIWlzRGlhbG9nXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cImVycm9yc1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9lYy1iYW5uZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRXJyb3JCYW5uZXJPdXRsZXQ+XG4gICAgICAgICAgICAgICAgPGVjLWJhbm5lciAqbmdJZj1cImVycm9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhZ2VWaWV3RXJyb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYm90dG9tLTBdPVwiIWlzRGlhbG9nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21FcnJvckJhbm5lclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9lYy1iYW5uZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2hlYWRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxlYy1idXR0b24gKm5nSWY9XCJpc0RpYWxvZyAmJiAoIChzdGF0dXM/LnN0YXR1cyA9PT0gJ3BlbmRpbmcnICYmICFoaWRlQ2xvc2VPblBlbmRpbmcpIHx8IHN0YXR1cz8uc3RhdHVzID09PSAnZXJyb3InKVwiXG4gICAgICAgICAgICAgICBpZD1cInBhZ2VWaWV3RGlhbG9nQ2xvc2VcIlxuICAgICAgICAgICAgICAgdHlwZT1cImljb25cIlxuICAgICAgICAgICAgICAgaWNvbj1cImljb24tY2FuY2VsXCJcbiAgICAgICAgICAgICAgIChjbGlja2VkKT1cImNsb3NlRGlhbG9nKClcIj5cbiAgICA8L2VjLWJ1dHRvbj5cbjwvZGl2PiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Injector } from '@angular/core';
|
|
2
|
-
import { ClipboardService } from 'ngx-clipboard';
|
|
3
|
-
import { SpyFactory } from './spy-factory.spec';
|
|
4
|
-
export class CopyButtonBaseTestInjectorFactory {
|
|
5
|
-
static getComponentInjector() {
|
|
6
|
-
return Injector.create({
|
|
7
|
-
providers: [
|
|
8
|
-
{
|
|
9
|
-
provide: ClipboardService,
|
|
10
|
-
useFactory: () => SpyFactory.createSpy(ClipboardService),
|
|
11
|
-
deps: []
|
|
12
|
-
}
|
|
13
|
-
]
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS1idXR0b24tYmFzZS10ZXN0LWluamVjdG9yLWZhY3Rvcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdGVzdGluZy9jb3B5LWJ1dHRvbi1iYXNlLXRlc3QtaW5qZWN0b3ItZmFjdG9yeS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxNQUFNLE9BQU8saUNBQWlDO0lBRXJDLE1BQU0sQ0FBQyxvQkFBb0I7UUFDaEMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO29CQUN6QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDeEQsSUFBSSxFQUFFLEVBQUU7aUJBQ1Q7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSAnbmd4LWNsaXBib2FyZCc7XG5pbXBvcnQgeyBTcHlGYWN0b3J5IH0gZnJvbSAnLi9zcHktZmFjdG9yeS5zcGVjJztcblxuZXhwb3J0IGNsYXNzIENvcHlCdXR0b25CYXNlVGVzdEluamVjdG9yRmFjdG9yeSB7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRDb21wb25lbnRJbmplY3RvcigpIHtcbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQ2xpcGJvYXJkU2VydmljZSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBTcHlGYWN0b3J5LmNyZWF0ZVNweShDbGlwYm9hcmRTZXJ2aWNlKSxcbiAgICAgICAgICBkZXBzOiBbXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Injector } from '@angular/core';
|
|
2
|
-
import { TelemetryService } from '../../core/telemetry.service';
|
|
3
|
-
import { SpyFactory } from './spy-factory.spec';
|
|
4
|
-
export class HierarchyBaseTestInjectorFactory {
|
|
5
|
-
static getComponentInjector() {
|
|
6
|
-
return Injector.create({
|
|
7
|
-
providers: [
|
|
8
|
-
{
|
|
9
|
-
provide: TelemetryService,
|
|
10
|
-
useFactory: () => SpyFactory.createSpy(TelemetryService),
|
|
11
|
-
deps: []
|
|
12
|
-
}
|
|
13
|
-
]
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2h5LWJhc2UtdGVzdC1pbmplY3Rvci1mYWN0b3J5LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3Rlc3RpbmcvaGllcmFyY2h5LWJhc2UtdGVzdC1pbmplY3Rvci1mYWN0b3J5LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsTUFBTSxPQUFPLGdDQUFnQztJQUVwQyxNQUFNLENBQUMsb0JBQW9CO1FBQ2hDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNyQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGdCQUFnQjtvQkFDekIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7b0JBQ3hELElBQUksRUFBRSxFQUFFO2lCQUNUO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdGVsZW1ldHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3B5RmFjdG9yeSB9IGZyb20gJy4vc3B5LWZhY3Rvcnkuc3BlYyc7XG5cbmV4cG9ydCBjbGFzcyBIaWVyYXJjaHlCYXNlVGVzdEluamVjdG9yRmFjdG9yeSB7XG4gIFxuICBwdWJsaWMgc3RhdGljIGdldENvbXBvbmVudEluamVjdG9yKCkge1xuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBUZWxlbWV0cnlTZXJ2aWNlLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IFNweUZhY3RvcnkuY3JlYXRlU3B5KFRlbGVtZXRyeVNlcnZpY2UpLFxuICAgICAgICAgIGRlcHM6IFtdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { clickEvent } from "./translation-mocks.spec";
|
|
2
|
-
export class PageBaseComponentTestHelper {
|
|
3
|
-
/**
|
|
4
|
-
* Shortcut to access the component's controls
|
|
5
|
-
*/
|
|
6
|
-
get controls() {
|
|
7
|
-
return this._component.formGroup.controls;
|
|
8
|
-
}
|
|
9
|
-
constructor(component) {
|
|
10
|
-
this._component = component;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Call and await ngOnInit and ngAfterViewInit
|
|
14
|
-
*
|
|
15
|
-
* @returns {Promise<void>}
|
|
16
|
-
*/
|
|
17
|
-
async initialize() {
|
|
18
|
-
await this._component.ngOnInit();
|
|
19
|
-
await this._component.ngAfterViewInit();
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Simulate clicking of "Save" button
|
|
23
|
-
*
|
|
24
|
-
* @returns {Promise<void>}
|
|
25
|
-
*/
|
|
26
|
-
async clickSave() {
|
|
27
|
-
await this._component.onSave(clickEvent);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Simulate saving without validate
|
|
31
|
-
*
|
|
32
|
-
* @returns {Promise<void>}
|
|
33
|
-
*/
|
|
34
|
-
async clickSaveWithoutValidate() {
|
|
35
|
-
await this._component.onSaveWithoutValidate(clickEvent);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLWNvbXBvbmVudC10ZXN0LWhlbHBlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90ZXN0aW5nL3BhZ2UtYmFzZS1jb21wb25lbnQtdGVzdC1oZWxwZXIuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsTUFBTSxPQUFPLDJCQUEyQjtJQUd0Qzs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWSxTQUFZO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVDOzs7O0tBSUM7SUFDTyxLQUFLLENBQUMsd0JBQXdCO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFBhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BhZ2UvcGFnZS1iYXNlL3BhZ2UtYmFzZS5jb21wb25lbnRcIjtcbmltcG9ydCB7IGNsaWNrRXZlbnQgfSBmcm9tIFwiLi90cmFuc2xhdGlvbi1tb2Nrcy5zcGVjXCI7XG5cbmV4cG9ydCBjbGFzcyBQYWdlQmFzZUNvbXBvbmVudFRlc3RIZWxwZXI8VCBleHRlbmRzIFBhZ2VCYXNlQ29tcG9uZW50PiB7XG4gIHByaXZhdGUgX2NvbXBvbmVudDogVDtcblxuICAvKipcbiAgICogU2hvcnRjdXQgdG8gYWNjZXNzIHRoZSBjb21wb25lbnQncyBjb250cm9sc1xuICAgKi9cbiAgcHVibGljIGdldCBjb250cm9scygpOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbCB9IHtcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50LmZvcm1Hcm91cC5jb250cm9scztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNvbXBvbmVudDogVCkge1xuICAgIHRoaXMuX2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGFuZCBhd2FpdCBuZ09uSW5pdCBhbmQgbmdBZnRlclZpZXdJbml0XG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fY29tcG9uZW50Lm5nT25Jbml0KCk7XG4gICAgYXdhaXQgdGhpcy5fY29tcG9uZW50Lm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXVsYXRlIGNsaWNraW5nIG9mIFwiU2F2ZVwiIGJ1dHRvblxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1NhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5fY29tcG9uZW50Lm9uU2F2ZShjbGlja0V2ZW50KTtcbiAgfVxuXG4gICAgLyoqXG4gICAqIFNpbXVsYXRlIHNhdmluZyB3aXRob3V0IHZhbGlkYXRlXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgICAgcHVibGljIGFzeW5jIGNsaWNrU2F2ZVdpdGhvdXRWYWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGF3YWl0IHRoaXMuX2NvbXBvbmVudC5vblNhdmVXaXRob3V0VmFsaWRhdGUoY2xpY2tFdmVudCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { Injector } from "@angular/core";
|
|
2
|
-
import { ActivatedRoute, Router } from "@angular/router";
|
|
3
|
-
import { TranslateService } from "@ngx-translate/core";
|
|
4
|
-
import { ErrorService } from "../../core/error.service";
|
|
5
|
-
import { RouterHelper } from "../../core/router-helper.service";
|
|
6
|
-
import { ScrollService } from "../../core/scroll.service";
|
|
7
|
-
import { TelemetryService } from '../../core/telemetry.service';
|
|
8
|
-
import { DialogService } from "../../display/dialog/dialog.service";
|
|
9
|
-
import { SplashService } from "../../display/splash/splash.service";
|
|
10
|
-
import { MockActivatedRoute, mockRouterFactory, mockRouterHelperFactory } from "./public-mocks.spec";
|
|
11
|
-
import { SpyFactory } from "./spy-factory.spec";
|
|
12
|
-
import { MockTranslateService } from "./translation-mocks.spec";
|
|
13
|
-
/**
|
|
14
|
-
* Contains static methods to create common injectors for unit testing
|
|
15
|
-
*/
|
|
16
|
-
export class PageBaseComponentTestInjectorFactory {
|
|
17
|
-
/**
|
|
18
|
-
* Core services retrieved via the @see Injector in our base classes.
|
|
19
|
-
*/
|
|
20
|
-
static { this.CoreProviders = [
|
|
21
|
-
{
|
|
22
|
-
provide: Router,
|
|
23
|
-
useFactory: mockRouterFactory,
|
|
24
|
-
deps: [],
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
provide: ScrollService,
|
|
28
|
-
useFactory: () => {
|
|
29
|
-
return SpyFactory.createSpy(ScrollService);
|
|
30
|
-
},
|
|
31
|
-
deps: []
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
provide: ActivatedRoute,
|
|
35
|
-
useFactory: () => {
|
|
36
|
-
return new MockActivatedRoute();
|
|
37
|
-
},
|
|
38
|
-
deps: [],
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
provide: SplashService,
|
|
42
|
-
useFactory: () => {
|
|
43
|
-
return SpyFactory.createSpy(SplashService);
|
|
44
|
-
},
|
|
45
|
-
deps: []
|
|
46
|
-
}
|
|
47
|
-
]; }
|
|
48
|
-
/**
|
|
49
|
-
* Services and such retrieved by @see PageBaseComponent via the @see Injector
|
|
50
|
-
* in addition to our core services
|
|
51
|
-
*/
|
|
52
|
-
static { this.ComponentProviders = [
|
|
53
|
-
{
|
|
54
|
-
provide: TranslateService,
|
|
55
|
-
useFactory: () => new MockTranslateService('-T'),
|
|
56
|
-
deps: []
|
|
57
|
-
},
|
|
58
|
-
{ provide: ErrorService, deps: [] },
|
|
59
|
-
{
|
|
60
|
-
provide: DialogService,
|
|
61
|
-
useFactory: () => {
|
|
62
|
-
return SpyFactory.createSpy(DialogService);
|
|
63
|
-
},
|
|
64
|
-
deps: []
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
provide: RouterHelper,
|
|
68
|
-
useFactory: () => mockRouterHelperFactory(),
|
|
69
|
-
deps: []
|
|
70
|
-
}
|
|
71
|
-
]; }
|
|
72
|
-
/**
|
|
73
|
-
* Services and such retrieved by @see WizardBaseComponent via the @see Injector
|
|
74
|
-
* in addition to our core and @see PageBaseComponent services
|
|
75
|
-
*/
|
|
76
|
-
static { this.WizardProviders = [
|
|
77
|
-
{
|
|
78
|
-
provide: TelemetryService,
|
|
79
|
-
useFactory: () => {
|
|
80
|
-
return SpyFactory.createSpy(TelemetryService);
|
|
81
|
-
},
|
|
82
|
-
deps: []
|
|
83
|
-
}
|
|
84
|
-
]; }
|
|
85
|
-
/**
|
|
86
|
-
* Get an injector which provides spy and mock objects needed by the @see PageBaseComponent
|
|
87
|
-
*/
|
|
88
|
-
static getComponentInjector() {
|
|
89
|
-
return Injector.create({ providers: [...this.CoreProviders, ...this.ComponentProviders] });
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Get an injector which provides spy and mock objects needed by the @see WizardBaseComponent
|
|
93
|
-
*/
|
|
94
|
-
static getWizardBaseComponentInjector() {
|
|
95
|
-
return Injector.create({ providers: [...this.CoreProviders, ...this.ComponentProviders, ...this.WizardProviders] });
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLWNvbXBvbmVudC10ZXN0LWluamVjdG9yLWZhY3Rvcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdGVzdGluZy9wYWdlLWJhc2UtY29tcG9uZW50LXRlc3QtaW5qZWN0b3ItZmFjdG9yeS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0NBQW9DO0lBRTdDOztPQUVHO2FBQ1ksa0JBQWEsR0FBcUI7UUFDN0M7WUFDSSxPQUFPLEVBQUUsTUFBTTtZQUNmLFVBQVUsRUFBRSxpQkFBaUI7WUFDN0IsSUFBSSxFQUFFLEVBQUU7U0FDWDtRQUNEO1lBQ0ksT0FBTyxFQUFFLGFBQWE7WUFDdEIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDYixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDOUMsQ0FBQztZQUNELElBQUksRUFBRSxFQUFFO1NBQ1g7UUFDRDtZQUNJLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDcEMsQ0FBQztZQUNELElBQUksRUFBRSxFQUFFO1NBQ1g7UUFDRDtZQUNJLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzlDLENBQUM7WUFDRCxJQUFJLEVBQUUsRUFBRTtTQUNYO0tBQ0osQ0FBQztJQUVGOzs7T0FHRzthQUNZLHVCQUFrQixHQUFxQjtRQUNsRDtZQUNJLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQ2hELElBQUksRUFBRSxFQUFFO1NBQ1g7UUFDRCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUNuQztZQUNJLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzlDLENBQUM7WUFDRCxJQUFJLEVBQUUsRUFBRTtTQUNYO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsdUJBQXVCLEVBQUU7WUFDM0MsSUFBSSxFQUFFLEVBQUU7U0FDWDtLQUNKLENBQUM7SUFFRjs7O09BR0c7YUFDWSxvQkFBZSxHQUFxQjtRQUMvQztZQUNJLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDYixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsSUFBSSxFQUFFLEVBQUU7U0FDWDtLQUNKLENBQUM7SUFFRjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0I7UUFDOUIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyw4QkFBOEI7UUFDekMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4SCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFN0YXRpY1Byb3ZpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IEVycm9yU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2Vycm9yLnNlcnZpY2VcIjtcbmltcG9ydCB7IFJvdXRlckhlbHBlciB9IGZyb20gXCIuLi8uLi9jb3JlL3JvdXRlci1oZWxwZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgU2Nyb2xsU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Njcm9sbC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90ZWxlbWV0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTcGxhc2hTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rpc3BsYXkvc3BsYXNoL3NwbGFzaC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBNb2NrQWN0aXZhdGVkUm91dGUsIG1vY2tSb3V0ZXJGYWN0b3J5LCBtb2NrUm91dGVySGVscGVyRmFjdG9yeSB9IGZyb20gXCIuL3B1YmxpYy1tb2Nrcy5zcGVjXCI7XG5pbXBvcnQgeyBTcHlGYWN0b3J5IH0gZnJvbSBcIi4vc3B5LWZhY3Rvcnkuc3BlY1wiO1xuaW1wb3J0IHsgTW9ja1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi90cmFuc2xhdGlvbi1tb2Nrcy5zcGVjXCI7XG5cbi8qKlxuICogQ29udGFpbnMgc3RhdGljIG1ldGhvZHMgdG8gY3JlYXRlIGNvbW1vbiBpbmplY3RvcnMgZm9yIHVuaXQgdGVzdGluZ1xuICovXG5leHBvcnQgY2xhc3MgUGFnZUJhc2VDb21wb25lbnRUZXN0SW5qZWN0b3JGYWN0b3J5IHtcblxuICAgIC8qKlxuICAgICAqIENvcmUgc2VydmljZXMgcmV0cmlldmVkIHZpYSB0aGUgQHNlZSBJbmplY3RvciBpbiBvdXIgYmFzZSBjbGFzc2VzLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIENvcmVQcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFJvdXRlcixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IG1vY2tSb3V0ZXJGYWN0b3J5LFxuICAgICAgICAgICAgZGVwczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNjcm9sbFNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNweUZhY3RvcnkuY3JlYXRlU3B5KFNjcm9sbFNlcnZpY2UpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVwczogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2NrQWN0aXZhdGVkUm91dGUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXBzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogU3BsYXNoU2VydmljZSxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gU3B5RmFjdG9yeS5jcmVhdGVTcHkoU3BsYXNoU2VydmljZSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXBzOiBbXVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIC8qKlxuICAgICAqIFNlcnZpY2VzIGFuZCBzdWNoIHJldHJpZXZlZCBieSBAc2VlIFBhZ2VCYXNlQ29tcG9uZW50IHZpYSB0aGUgQHNlZSBJbmplY3RvclxuICAgICAqIGluIGFkZGl0aW9uIHRvIG91ciBjb3JlIHNlcnZpY2VzXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgQ29tcG9uZW50UHJvdmlkZXJzOiBTdGF0aWNQcm92aWRlcltdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbmV3IE1vY2tUcmFuc2xhdGVTZXJ2aWNlKCctVCcpLFxuICAgICAgICAgICAgZGVwczogW11cbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBFcnJvclNlcnZpY2UsIGRlcHM6IFtdIH0sXG4gICAgICAgIHsgXG4gICAgICAgICAgICBwcm92aWRlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBTcHlGYWN0b3J5LmNyZWF0ZVNweShEaWFsb2dTZXJ2aWNlKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlcHM6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFJvdXRlckhlbHBlcixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IG1vY2tSb3V0ZXJIZWxwZXJGYWN0b3J5KCksXG4gICAgICAgICAgICBkZXBzOiBbXVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIC8qKlxuICAgICAqIFNlcnZpY2VzIGFuZCBzdWNoIHJldHJpZXZlZCBieSBAc2VlIFdpemFyZEJhc2VDb21wb25lbnQgdmlhIHRoZSBAc2VlIEluamVjdG9yXG4gICAgICogaW4gYWRkaXRpb24gdG8gb3VyIGNvcmUgYW5kIEBzZWUgUGFnZUJhc2VDb21wb25lbnQgc2VydmljZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBXaXphcmRQcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRlbGVtZXRyeVNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNweUZhY3RvcnkuY3JlYXRlU3B5KFRlbGVtZXRyeVNlcnZpY2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlcHM6IFtdXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgLyoqXG4gICAgICogR2V0IGFuIGluamVjdG9yIHdoaWNoIHByb3ZpZGVzIHNweSBhbmQgbW9jayBvYmplY3RzIG5lZWRlZCBieSB0aGUgQHNlZSBQYWdlQmFzZUNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q29tcG9uZW50SW5qZWN0b3IoKTogSW5qZWN0b3Ige1xuICAgICAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHsgcHJvdmlkZXJzOiBbLi4udGhpcy5Db3JlUHJvdmlkZXJzLCAuLi50aGlzLkNvbXBvbmVudFByb3ZpZGVyc10gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFuIGluamVjdG9yIHdoaWNoIHByb3ZpZGVzIHNweSBhbmQgbW9jayBvYmplY3RzIG5lZWRlZCBieSB0aGUgQHNlZSBXaXphcmRCYXNlQ29tcG9uZW50XG4gICAgICovXG4gICAgIHB1YmxpYyBzdGF0aWMgZ2V0V2l6YXJkQmFzZUNvbXBvbmVudEluamVjdG9yKCk6IEluamVjdG9yIHtcbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHByb3ZpZGVyczogWy4uLnRoaXMuQ29yZVByb3ZpZGVycywgLi4udGhpcy5Db21wb25lbnRQcm92aWRlcnMsIC4uLnRoaXMuV2l6YXJkUHJvdmlkZXJzXSB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview
|
|
3
|
-
* Test mocks that can be used by consumers of this library.
|
|
4
|
-
* If you do not want to export a mock, add it to `common-mocks.spec.ts` instead.
|
|
5
|
-
*/
|
|
6
|
-
import { EventEmitter, Input, Output, Pipe, Directive, Injectable } from '@angular/core';
|
|
7
|
-
import { Subject } from 'rxjs';
|
|
8
|
-
import { Router } from '@angular/router';
|
|
9
|
-
import { SpyFactory } from './spy-factory.spec';
|
|
10
|
-
import { RouterHelper } from '../../core/router-helper.service';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
/**
|
|
13
|
-
* Mock dialog based on the content type, used to test open and close functionality
|
|
14
|
-
* @deprecated Most components that need a dialog should use `dialogService.openDialog()`, which is much easier to test
|
|
15
|
-
* and does not require the use of this class. It is included for legacy test support only.
|
|
16
|
-
*/
|
|
17
|
-
export class MockDialog {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.opened = new EventEmitter();
|
|
20
|
-
this.closed = new EventEmitter();
|
|
21
|
-
this.displayAsPanel = false;
|
|
22
|
-
}
|
|
23
|
-
async open(component, context, options) {
|
|
24
|
-
this.lastContext = context;
|
|
25
|
-
this.componentRef = {
|
|
26
|
-
instance: new MockDialogContent()
|
|
27
|
-
};
|
|
28
|
-
this.opened.emit();
|
|
29
|
-
}
|
|
30
|
-
close(result) {
|
|
31
|
-
this.closed.emit(result);
|
|
32
|
-
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockDialog, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MockDialog, inputs: { size: "size" }, outputs: { opened: "opened", closed: "closed" }, ngImport: i0 }); }
|
|
35
|
-
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockDialog, decorators: [{
|
|
37
|
-
type: Directive
|
|
38
|
-
}], propDecorators: { size: [{
|
|
39
|
-
type: Input
|
|
40
|
-
}], opened: [{
|
|
41
|
-
type: Output
|
|
42
|
-
}], closed: [{
|
|
43
|
-
type: Output
|
|
44
|
-
}] } });
|
|
45
|
-
;
|
|
46
|
-
/**
|
|
47
|
-
* Mocked dialog content to test save and cancel
|
|
48
|
-
*/
|
|
49
|
-
export class MockDialogContent {
|
|
50
|
-
constructor() {
|
|
51
|
-
this.dialogId = 'MockID';
|
|
52
|
-
this.onOpen = (openContext) => { this.openArg = openContext; };
|
|
53
|
-
this.onDialogSave = new EventEmitter();
|
|
54
|
-
this.onDialogCancel = new EventEmitter();
|
|
55
|
-
this.destroyed = new Subject();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
;
|
|
59
|
-
/**
|
|
60
|
-
* Mocked DateDisplayPipe
|
|
61
|
-
*/
|
|
62
|
-
export class MockDateDisplayPipe {
|
|
63
|
-
transform(value) {
|
|
64
|
-
return '01/01/2017';
|
|
65
|
-
}
|
|
66
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockDateDisplayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
67
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MockDateDisplayPipe, name: "dateDisplay" }); }
|
|
68
|
-
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockDateDisplayPipe, decorators: [{
|
|
70
|
-
type: Pipe,
|
|
71
|
-
args: [{ name: 'dateDisplay' }]
|
|
72
|
-
}] });
|
|
73
|
-
/** Return a Router spy object that can be used as a mock in tests.*/
|
|
74
|
-
export function mockRouterFactory() {
|
|
75
|
-
const mockRouter = SpyFactory.createSpy(Router);
|
|
76
|
-
mockRouter.isActive.and.returnValue(false);
|
|
77
|
-
mockRouter.navigate.and.returnValue(Promise.resolve(true));
|
|
78
|
-
Object.defineProperty(mockRouter, 'events', { value: new Subject(), configurable: true });
|
|
79
|
-
Object.defineProperty(mockRouter, 'url', { value: '/current/route/url', writable: true });
|
|
80
|
-
return mockRouter;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Mock {@link ActivatedRoute} for spying on route and query parameters
|
|
84
|
-
*
|
|
85
|
-
* @example <caption>Declare!</caption>
|
|
86
|
-
* let mockActivatedRoute: MockActivatedRoute = new MockActivatedRoute();
|
|
87
|
-
* let paramMapSpy: jasmine.Spy;
|
|
88
|
-
* let queryParamMapSpy: jasmine.Spy;
|
|
89
|
-
* @example <caption>Provide!</caption>
|
|
90
|
-
* providers: [
|
|
91
|
-
* ...
|
|
92
|
-
* { provide: ActivatedRoute, useValue: mockActivatedRoute },
|
|
93
|
-
* ...
|
|
94
|
-
* ]
|
|
95
|
-
* @example <caption>Spy!</caption>
|
|
96
|
-
* paramMapSpy = spyOn(mockActivatedRoute.snapshot.paramMap, 'get');
|
|
97
|
-
* queryParamMapSpy = spyOn(mockActivatedRoute.snapshot.queryParamMap, 'get');
|
|
98
|
-
* @example <caption>Manipulate!</caption>
|
|
99
|
-
* paramMapSpy.and.returnValue("1234");
|
|
100
|
-
* queryParamMapSpy.and.returnValue("4321");
|
|
101
|
-
*/
|
|
102
|
-
export class MockActivatedRoute {
|
|
103
|
-
constructor() {
|
|
104
|
-
this.snapshot = {
|
|
105
|
-
paramMap: {
|
|
106
|
-
get: function (name) {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
queryParamMap: {
|
|
111
|
-
get: function (name) {
|
|
112
|
-
return null;
|
|
113
|
-
},
|
|
114
|
-
getAll: function (name) {
|
|
115
|
-
return [];
|
|
116
|
-
},
|
|
117
|
-
has: function (name) {
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
routeConfig: {},
|
|
122
|
-
};
|
|
123
|
-
this.paramMap = new Subject();
|
|
124
|
-
this.queryParamMap = new Subject();
|
|
125
|
-
this.routeConfig = {};
|
|
126
|
-
}
|
|
127
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockActivatedRoute, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
128
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockActivatedRoute }); }
|
|
129
|
-
}
|
|
130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MockActivatedRoute, decorators: [{
|
|
131
|
-
type: Injectable
|
|
132
|
-
}] });
|
|
133
|
-
/** Return a @see RouterHelper spy object that can be used as a mock in tests */
|
|
134
|
-
export function mockRouterHelperFactory() {
|
|
135
|
-
const mockRouterHelper = SpyFactory.createSpy(RouterHelper);
|
|
136
|
-
mockRouterHelper.getFullRouteParamMap.and.callFake((route) => route.paramMap);
|
|
137
|
-
mockRouterHelper.getFullRouteParams.and.callFake((route) => route.params);
|
|
138
|
-
mockRouterHelper.serializeUrlFromRoot.and.returnValue('serialized/url/from/root');
|
|
139
|
-
mockRouterHelper.getLastRouteDescendant.and.callFake((route) => route);
|
|
140
|
-
mockRouterHelper.executeWithNavigationWatcher.and.callFake(async (asyncFunc, doFunc, router) => {
|
|
141
|
-
const result = await asyncFunc();
|
|
142
|
-
await doFunc(result);
|
|
143
|
-
return result;
|
|
144
|
-
});
|
|
145
|
-
mockRouterHelper.getViewUrlSegments.and.returnValue([]);
|
|
146
|
-
return mockRouterHelper;
|
|
147
|
-
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLW1vY2tzLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3Rlc3RpbmcvcHVibGljLW1vY2tzLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUF1QixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUEwQyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUNoRTs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFEdkI7UUFHcUIsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BELFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM5RCxtQkFBYyxHQUFZLEtBQUssQ0FBQztLQWdCMUM7SUFaVSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQWlDLEVBQUUsT0FBVyxFQUFFLE9BQXVCO1FBQ3JGLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQXNCO1lBQ25DLFFBQVEsRUFBRSxJQUFJLGlCQUFpQixFQUFLO1NBQ3ZDLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBd0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0FuQlEsVUFBVTttR0FBVixVQUFVOzs0RkFBVixVQUFVO2tCQUR0QixTQUFTOzhCQUVVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1csTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNOztBQWlCVixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBQ1csYUFBUSxHQUFXLFFBQVEsQ0FBQztRQUU1QixXQUFNLEdBQTBDLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoRyxpQkFBWSxHQUFvQixJQUFJLFlBQVksRUFBSyxDQUFDO1FBQ3RELG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUQsY0FBUyxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO0lBQ3hELENBQUM7Q0FBQTtBQUFBLENBQUM7QUFFRjs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFDNUIsU0FBUyxDQUFDLEtBQTRCO1FBQ2xDLE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7K0dBSFEsbUJBQW1COzZHQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFOztBQU83QixxRUFBcUU7QUFDckUsTUFBTSxVQUFVLGlCQUFpQjtJQUM3QixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLE9BQU8sRUFBUyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxRixPQUFPLFVBQVUsQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRUksYUFBUSxHQUFHO1lBQ1AsUUFBUSxFQUFFO2dCQUNOLEdBQUcsRUFBRSxVQUFVLElBQVk7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDO2FBQ0o7WUFDRCxhQUFhLEVBQUU7Z0JBQ1gsR0FBRyxFQUFFLFVBQVUsSUFBWTtvQkFDdkIsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7Z0JBRUQsTUFBTSxFQUFFLFVBQVUsSUFBWTtvQkFDMUIsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQztnQkFFRCxHQUFHLEVBQUUsVUFBVSxJQUFZO29CQUN2QixPQUFPLEtBQUssQ0FBQztnQkFDakIsQ0FBQzthQUNKO1lBQ0QsV0FBVyxFQUFFLEVBQUU7U0FDbEIsQ0FBQztRQUNGLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixnQkFBVyxHQUFHLEVBQUUsQ0FBQTtLQUNuQjsrR0F6Qlksa0JBQWtCO21IQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7O0FBNEJYLGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsdUJBQXVCO0lBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBNkIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RHLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUE2QixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEcsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xGLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFxQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RixnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUE2QixFQUFFLE1BQXNDLEVBQUUsTUFBVyxFQUFFLEVBQUU7UUFDdEosTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUNILGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3XG4gKiBUZXN0IG1vY2tzIHRoYXQgY2FuIGJlIHVzZWQgYnkgY29uc3VtZXJzIG9mIHRoaXMgbGlicmFyeS5cbiAqIElmIHlvdSBkbyBub3Qgd2FudCB0byBleHBvcnQgYSBtb2NrLCBhZGQgaXQgdG8gYGNvbW1vbi1tb2Nrcy5zcGVjLnRzYCBpbnN0ZWFkLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBUeXBlLCBEaXJlY3RpdmUsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERpYWxvZ1Jlc3VsdCwgRGlhbG9nT3B0aW9ucyB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy10eXBlcyc7XG5pbXBvcnQgeyBEaWFsb2dDb250ZW50IH0gZnJvbSAnLi4vLi4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLWNvbnRlbnQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTcHlGYWN0b3J5IH0gZnJvbSAnLi9zcHktZmFjdG9yeS5zcGVjJztcbmltcG9ydCB7fSBmcm9tICdqYXNtaW5lJztcbmltcG9ydCB7IFJvdXRlckhlbHBlciB9IGZyb20gJy4uLy4uL2NvcmUvcm91dGVyLWhlbHBlci5zZXJ2aWNlJztcbi8qKlxuICogTW9jayBkaWFsb2cgYmFzZWQgb24gdGhlIGNvbnRlbnQgdHlwZSwgdXNlZCB0byB0ZXN0IG9wZW4gYW5kIGNsb3NlIGZ1bmN0aW9uYWxpdHlcbiAqIEBkZXByZWNhdGVkIE1vc3QgY29tcG9uZW50cyB0aGF0IG5lZWQgYSBkaWFsb2cgc2hvdWxkIHVzZSBgZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKClgLCB3aGljaCBpcyBtdWNoIGVhc2llciB0byB0ZXN0XG4gKiAgICAgICAgICAgICAgIGFuZCBkb2VzIG5vdCByZXF1aXJlIHRoZSB1c2Ugb2YgdGhpcyBjbGFzcy4gSXQgaXMgaW5jbHVkZWQgZm9yIGxlZ2FjeSB0ZXN0IHN1cHBvcnQgb25seS5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTW9ja0RpYWxvZzxUPiB7XG4gICAgQElucHV0KCkgcHVibGljIHNpemU/OiBudW1iZXIgfCAneHNtYWxsJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvcGVuZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBjbG9zZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgcHVibGljIGRpc3BsYXlBc1BhbmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29tcG9uZW50UmVmITogQ29tcG9uZW50UmVmPGFueT47XG4gICAgcHVibGljIGxhc3RDb250ZXh0PzogVDtcbiAgICBwdWJsaWMgYXN5bmMgb3Blbihjb21wb25lbnQ6IFR5cGU8RGlhbG9nQ29udGVudDxUPj4sIGNvbnRleHQ/OiBULCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmxhc3RDb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSA8Q29tcG9uZW50UmVmPGFueT4+e1xuICAgICAgICAgICAgaW5zdGFuY2U6IG5ldyBNb2NrRGlhbG9nQ29udGVudDxUPigpXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZShyZXN1bHQ/OiBEaWFsb2dSZXN1bHQ8VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdChyZXN1bHQpO1xuICAgIH1cbn07XG5cbi8qKlxuICogTW9ja2VkIGRpYWxvZyBjb250ZW50IHRvIHRlc3Qgc2F2ZSBhbmQgY2FuY2VsXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrRGlhbG9nQ29udGVudDxUPiBpbXBsZW1lbnRzIERpYWxvZ0NvbnRlbnQ8VD4ge1xuICAgIHB1YmxpYyBkaWFsb2dJZDogc3RyaW5nID0gJ01vY2tJRCc7XG4gICAgcHVibGljIG9wZW5Bcmc6IFQgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIG9uT3BlbjogKG9wZW5Db250ZXh0PzogVCB8IHVuZGVmaW5lZCkgPT4gdm9pZCA9IChvcGVuQ29udGV4dCkgPT4geyB0aGlzLm9wZW5BcmcgPSBvcGVuQ29udGV4dDsgfVxuICAgIHB1YmxpYyBvbkRpYWxvZ1NhdmU6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgICBwdWJsaWMgb25EaWFsb2dDYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBkZXN0cm95ZWQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbn07XG5cbi8qKlxuICogTW9ja2VkIERhdGVEaXNwbGF5UGlwZVxuICovXG5AUGlwZSh7IG5hbWU6ICdkYXRlRGlzcGxheScgfSlcbmV4cG9ydCBjbGFzcyBNb2NrRGF0ZURpc3BsYXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlPzogRGF0ZSB8IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJzAxLzAxLzIwMTcnO1xuICAgIH1cbn1cblxuLyoqIFJldHVybiBhIFJvdXRlciBzcHkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBtb2NrIGluIHRlc3RzLiovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1JvdXRlckZhY3RvcnkoKTogamFzbWluZS5TcHlPYmo8Um91dGVyPiB7XG4gICAgY29uc3QgbW9ja1JvdXRlciA9IFNweUZhY3RvcnkuY3JlYXRlU3B5KFJvdXRlcik7XG4gICAgbW9ja1JvdXRlci5pc0FjdGl2ZS5hbmQucmV0dXJuVmFsdWUoZmFsc2UpO1xuICAgIG1vY2tSb3V0ZXIubmF2aWdhdGUuYW5kLnJldHVyblZhbHVlKFByb21pc2UucmVzb2x2ZSh0cnVlKSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG1vY2tSb3V0ZXIsICdldmVudHMnLCB7IHZhbHVlOiBuZXcgU3ViamVjdDxFdmVudD4oKSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2NrUm91dGVyLCAndXJsJywgeyB2YWx1ZTogJy9jdXJyZW50L3JvdXRlL3VybCcsIHdyaXRhYmxlOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIG1vY2tSb3V0ZXI7XG59XG5cbi8qKlxuICogTW9jayB7QGxpbmsgQWN0aXZhdGVkUm91dGV9IGZvciBzcHlpbmcgb24gcm91dGUgYW5kIHF1ZXJ5IHBhcmFtZXRlcnNcbiAqXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5EZWNsYXJlITwvY2FwdGlvbj5cbiAqIGxldCBtb2NrQWN0aXZhdGVkUm91dGU6IE1vY2tBY3RpdmF0ZWRSb3V0ZSA9IG5ldyBNb2NrQWN0aXZhdGVkUm91dGUoKTtcbiAqIGxldCBwYXJhbU1hcFNweTogamFzbWluZS5TcHk7XG4gKiBsZXQgcXVlcnlQYXJhbU1hcFNweTogamFzbWluZS5TcHk7XG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5Qcm92aWRlITwvY2FwdGlvbj5cbiAqIHByb3ZpZGVyczogW1xuICogICAgICAuLi5cbiAqICAgICAgeyBwcm92aWRlOiBBY3RpdmF0ZWRSb3V0ZSwgdXNlVmFsdWU6IG1vY2tBY3RpdmF0ZWRSb3V0ZSB9LFxuICogICAgICAuLi5cbiAqICAgIF1cbiAqIEBleGFtcGxlIDxjYXB0aW9uPlNweSE8L2NhcHRpb24+XG4gKiBwYXJhbU1hcFNweSA9IHNweU9uKG1vY2tBY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcCwgJ2dldCcpO1xuICogcXVlcnlQYXJhbU1hcFNweSA9IHNweU9uKG1vY2tBY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLCAnZ2V0Jyk7XG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5NYW5pcHVsYXRlITwvY2FwdGlvbj5cbiAqIHBhcmFtTWFwU3B5LmFuZC5yZXR1cm5WYWx1ZShcIjEyMzRcIik7XG4gKiBxdWVyeVBhcmFtTWFwU3B5LmFuZC5yZXR1cm5WYWx1ZShcIjQzMjFcIik7XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2NrQWN0aXZhdGVkUm91dGUge1xuICAgIHNuYXBzaG90ID0ge1xuICAgICAgICBwYXJhbU1hcDoge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5UGFyYW1NYXA6IHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWxsOiBmdW5jdGlvbiAobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhhczogZnVuY3Rpb24gKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcm91dGVDb25maWc6IHt9LFxuICAgIH07XG4gICAgcGFyYW1NYXAgPSBuZXcgU3ViamVjdCgpO1xuICAgIHF1ZXJ5UGFyYW1NYXAgPSBuZXcgU3ViamVjdCgpO1xuICAgIHJvdXRlQ29uZmlnID0ge31cbn1cblxuLyoqIFJldHVybiBhIEBzZWUgUm91dGVySGVscGVyIHNweSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIG1vY2sgaW4gdGVzdHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrUm91dGVySGVscGVyRmFjdG9yeSgpOiBqYXNtaW5lLlNweU9iajxSb3V0ZXJIZWxwZXI+IHtcbiAgICBjb25zdCBtb2NrUm91dGVySGVscGVyID0gU3B5RmFjdG9yeS5jcmVhdGVTcHkoUm91dGVySGVscGVyKTtcbiAgICBtb2NrUm91dGVySGVscGVyLmdldEZ1bGxSb3V0ZVBhcmFtTWFwLmFuZC5jYWxsRmFrZSgocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpID0+IHJvdXRlLnBhcmFtTWFwKTtcbiAgICBtb2NrUm91dGVySGVscGVyLmdldEZ1bGxSb3V0ZVBhcmFtcy5hbmQuY2FsbEZha2UoKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSA9PiByb3V0ZS5wYXJhbXMpO1xuICAgIG1vY2tSb3V0ZXJIZWxwZXIuc2VyaWFsaXplVXJsRnJvbVJvb3QuYW5kLnJldHVyblZhbHVlKCdzZXJpYWxpemVkL3VybC9mcm9tL3Jvb3QnKTtcbiAgICBtb2NrUm91dGVySGVscGVyLmdldExhc3RSb3V0ZURlc2NlbmRhbnQuYW5kLmNhbGxGYWtlKChyb3V0ZTogQWN0aXZhdGVkUm91dGUpID0+IHJvdXRlKTtcbiAgICBtb2NrUm91dGVySGVscGVyLmV4ZWN1dGVXaXRoTmF2aWdhdGlvbldhdGNoZXIuYW5kLmNhbGxGYWtlKGFzeW5jIChhc3luY0Z1bmM6ICgpID0+IFByb21pc2U8YW55PiwgZG9GdW5jOiAocmVzdWx0OiBhbnkpID0+IFByb21pc2U8dm9pZD4sIHJvdXRlcjogYW55KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhc3luY0Z1bmMoKTtcbiAgICAgIGF3YWl0IGRvRnVuYyhyZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICBtb2NrUm91dGVySGVscGVyLmdldFZpZXdVcmxTZWdtZW50cy5hbmQucmV0dXJuVmFsdWUoW10pO1xuICAgIHJldHVybiBtb2NrUm91dGVySGVscGVyO1xuICB9XG4iXX0=
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export class SpyFactory {
|
|
2
|
-
/**
|
|
3
|
-
* Create a jasmine Spy Object with spies for the methods of the given type.
|
|
4
|
-
*
|
|
5
|
-
* @param {Type<T>} type Type you want as a mock object, full of spies
|
|
6
|
-
* @returns {jasmine.SpyObj<T>} Spy object, full of spies, with type definitions
|
|
7
|
-
*/
|
|
8
|
-
static createSpy(type) {
|
|
9
|
-
const methodNames = Object.getOwnPropertyNames(type.prototype);
|
|
10
|
-
const spyObj = jasmine.createSpyObj(methodNames);
|
|
11
|
-
return spyObj;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Create a jasmine Spy Object with spies for the type's properties and methods.
|
|
15
|
-
*
|
|
16
|
-
* @param {Type<T>} type Type you want as a mock object
|
|
17
|
-
* @returns {jasmine.SpyObj<T>} Spy object with method and property spies
|
|
18
|
-
*/
|
|
19
|
-
static createSpyWithProperties(type) {
|
|
20
|
-
const methodNames = Object.getOwnPropertyNames(type.prototype);
|
|
21
|
-
// Passing in "new type()" as the second param here creates spies for the properties
|
|
22
|
-
// on the provided type that return the default values for each property. To access the spies
|
|
23
|
-
// to modify return values for these properties, use getPropertySpy()
|
|
24
|
-
const spyObj = jasmine.createSpyObj(methodNames, new type());
|
|
25
|
-
return spyObj;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Returns the jasmine spy for the given property on the spy object.
|
|
29
|
-
* NOTE: This will only work for properties on spy objects created using createSpyWithProperties() as
|
|
30
|
-
* createSpy() only creates spies for the type's methods
|
|
31
|
-
*
|
|
32
|
-
* @param {jasmine.SpyObj<T>} spyObj
|
|
33
|
-
* @param {K extends keyof T} property
|
|
34
|
-
* @returns
|
|
35
|
-
*/
|
|
36
|
-
static getPropertySpy(spyObj, property) {
|
|
37
|
-
return Object.getOwnPropertyDescriptor(spyObj, property)?.get;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B5LWZhY3Rvcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdGVzdGluZy9zcHktZmFjdG9yeS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxVQUFVO0lBQ25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBSSxJQUFhO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQXNCLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHVCQUF1QixDQUFtQixJQUFhO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0Qsb0ZBQW9GO1FBQ3BGLDZGQUE2RjtRQUM3RixxRUFBcUU7UUFDckUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBc0IsQ0FBQztRQUNsRixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUF1QixNQUF5QixFQUFFLFFBQVc7UUFDckYsT0FBTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEdBQThCLENBQUM7SUFDN0YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgU3B5RmFjdG9yeSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgamFzbWluZSBTcHkgT2JqZWN0IHdpdGggc3BpZXMgZm9yIHRoZSBtZXRob2RzIG9mIHRoZSBnaXZlbiB0eXBlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUeXBlPFQ+fSB0eXBlIFR5cGUgeW91IHdhbnQgYXMgYSBtb2NrIG9iamVjdCwgZnVsbCBvZiBzcGllc1xuICAgICAqIEByZXR1cm5zIHtqYXNtaW5lLlNweU9iajxUPn0gU3B5IG9iamVjdCwgZnVsbCBvZiBzcGllcywgd2l0aCB0eXBlIGRlZmluaXRpb25zXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVTcHk8VD4odHlwZTogVHlwZTxUPik6IGphc21pbmUuU3B5T2JqPFQ+IHtcbiAgICAgICAgY29uc3QgbWV0aG9kTmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0eXBlLnByb3RvdHlwZSk7XG4gICAgICAgIGNvbnN0IHNweU9iaiA9IGphc21pbmUuY3JlYXRlU3B5T2JqKG1ldGhvZE5hbWVzKSBhcyBqYXNtaW5lLlNweU9iajxUPjtcbiAgICAgICAgcmV0dXJuIHNweU9iajtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBqYXNtaW5lIFNweSBPYmplY3Qgd2l0aCBzcGllcyBmb3IgdGhlIHR5cGUncyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7VHlwZTxUPn0gdHlwZSBUeXBlIHlvdSB3YW50IGFzIGEgbW9jayBvYmplY3RcbiAgICAgKiBAcmV0dXJucyB7amFzbWluZS5TcHlPYmo8VD59IFNweSBvYmplY3Qgd2l0aCBtZXRob2QgYW5kIHByb3BlcnR5IHNwaWVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVTcHlXaXRoUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0Pih0eXBlOiBUeXBlPFQ+KTogamFzbWluZS5TcHlPYmo8VD4ge1xuICAgICAgICBjb25zdCBtZXRob2ROYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHR5cGUucHJvdG90eXBlKTtcbiAgICAgICAgLy8gUGFzc2luZyBpbiBcIm5ldyB0eXBlKClcIiBhcyB0aGUgc2Vjb25kIHBhcmFtIGhlcmUgY3JlYXRlcyBzcGllcyBmb3IgdGhlIHByb3BlcnRpZXNcbiAgICAgICAgLy8gb24gdGhlIHByb3ZpZGVkIHR5cGUgdGhhdCByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBlYWNoIHByb3BlcnR5LiBUbyBhY2Nlc3MgdGhlIHNwaWVzXG4gICAgICAgIC8vIHRvIG1vZGlmeSByZXR1cm4gdmFsdWVzIGZvciB0aGVzZSBwcm9wZXJ0aWVzLCB1c2UgZ2V0UHJvcGVydHlTcHkoKVxuICAgICAgICBjb25zdCBzcHlPYmogPSBqYXNtaW5lLmNyZWF0ZVNweU9iaihtZXRob2ROYW1lcywgbmV3IHR5cGUoKSkgYXMgamFzbWluZS5TcHlPYmo8VD47XG4gICAgICAgIHJldHVybiBzcHlPYmo7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgamFzbWluZSBzcHkgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSBvbiB0aGUgc3B5IG9iamVjdC5cbiAgICAgKiBOT1RFOiBUaGlzIHdpbGwgb25seSB3b3JrIGZvciBwcm9wZXJ0aWVzIG9uIHNweSBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgY3JlYXRlU3B5V2l0aFByb3BlcnRpZXMoKSBhc1xuICAgICAqIGNyZWF0ZVNweSgpIG9ubHkgY3JlYXRlcyBzcGllcyBmb3IgdGhlIHR5cGUncyBtZXRob2RzXG4gICAgICogXG4gICAgICogQHBhcmFtIHtqYXNtaW5lLlNweU9iajxUPn0gc3B5T2JqXG4gICAgICogQHBhcmFtIHtLIGV4dGVuZHMga2V5b2YgVH0gcHJvcGVydHkgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eVNweTxULCBLIGV4dGVuZHMga2V5b2YgVD4oc3B5T2JqOiBqYXNtaW5lLlNweU9iajxUPiwgcHJvcGVydHk6IEspOiBqYXNtaW5lLlNweTwoKSA9PiBUW0tdPiB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNweU9iaiwgcHJvcGVydHkpPy5nZXQgYXMgamFzbWluZS5TcHk8KCkgPT4gVFtLXT47XG4gICAgfVxufVxuIl19
|