@byuhbll/components 5.0.1 → 6.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/byuhbll-components.mjs +98 -107
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/lib/ss-search-bar/advanced-search/advanced-search.component.d.ts +1 -4
- package/lib/ss-search-bar/models/advanced-search.model.d.ts +3 -3
- package/lib/ss-search-bar/models/search-scope.model.d.ts +1 -1
- package/lib/ss-search-bar/simple-search/simple-search.component.d.ts +1 -1
- package/lib/status-button/status-button.component.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/byuhbll-components.mjs +0 -5
- package/esm2022/lib/animations/animations.mjs +0 -22
- package/esm2022/lib/checkbox/checkbox.component.mjs +0 -15
- package/esm2022/lib/contact-utils.mjs +0 -41
- package/esm2022/lib/copy-tooltip/copy-tooltip.component.mjs +0 -49
- package/esm2022/lib/expand-collapse/expand-collapse.component.mjs +0 -31
- package/esm2022/lib/hbll-footer/hbll-footer.component.mjs +0 -111
- package/esm2022/lib/hbll-header/hbll-header.component.mjs +0 -142
- package/esm2022/lib/hbll-header/models/library-hours.mjs +0 -2
- package/esm2022/lib/hbll-header/nav-bar/nav-bar.component.mjs +0 -352
- package/esm2022/lib/hbll-header/nav-bar-dropdown/nav-bar-dropdown.component.mjs +0 -57
- package/esm2022/lib/hbll-header/pipes/library-hours.pipe.mjs +0 -31
- package/esm2022/lib/hbll-header/pipes/truncate.pipe.mjs +0 -17
- package/esm2022/lib/header-with-impersonation/header-with-impersonation.component.mjs +0 -41
- package/esm2022/lib/impersonate-modal/impersonate-modal.component.mjs +0 -190
- package/esm2022/lib/impersonation-banner/impersonation-banner.component.mjs +0 -151
- package/esm2022/lib/impersonation-banner/models/application-access.mjs +0 -7
- package/esm2022/lib/impersonation-banner/models/person-summary.mjs +0 -15
- package/esm2022/lib/models/token-payload.mjs +0 -2
- package/esm2022/lib/multi-select/multi-select.component.mjs +0 -115
- package/esm2022/lib/pipes/hbll-item-type-icon.pipe.mjs +0 -128
- package/esm2022/lib/snackbar/snackbar.component.mjs +0 -151
- package/esm2022/lib/snackbar/snackbar.service.mjs +0 -90
- package/esm2022/lib/ss-search-bar/advanced-search/advanced-search.component.mjs +0 -273
- package/esm2022/lib/ss-search-bar/constants.mjs +0 -153
- package/esm2022/lib/ss-search-bar/date-range/date-range.component.mjs +0 -71
- package/esm2022/lib/ss-search-bar/models/advanced-search.model.mjs +0 -5
- package/esm2022/lib/ss-search-bar/models/search-config.model.mjs +0 -2
- package/esm2022/lib/ss-search-bar/models/search-scope.model.mjs +0 -3
- package/esm2022/lib/ss-search-bar/pipes/advanced-field-warning.pipe.mjs +0 -34
- package/esm2022/lib/ss-search-bar/pipes/advanced-queries.pipe.mjs +0 -33
- package/esm2022/lib/ss-search-bar/pipes/field-by-scope.pipe.mjs +0 -27
- package/esm2022/lib/ss-search-bar/simple-search/simple-search.component.mjs +0 -87
- package/esm2022/lib/ss-search-bar/ss-search-bar.component.mjs +0 -98
- package/esm2022/lib/ss-search-bar/utils.mjs +0 -16
- package/esm2022/lib/status-button/status-button.component.mjs +0 -104
- package/esm2022/lib/utils.mjs +0 -7
- package/esm2022/public-api.mjs +0 -19
|
@@ -105,10 +105,7 @@ export declare class AdvancedSearchComponent implements OnDestroy {
|
|
|
105
105
|
readonly 'law -- iclrs': "Law & Religion Studies";
|
|
106
106
|
readonly 'law -- main': "Main Collection";
|
|
107
107
|
readonly 'law -- media': "Media";
|
|
108
|
-
readonly 'law -- reserve': "Reserve";
|
|
109
|
-
* Takes a `FormGroup` and syncs up the `field` and `qualifier` values.
|
|
110
|
-
* After syncing, when the `field` value changes, the `qualifier` value will update appropriately.
|
|
111
|
-
*/
|
|
108
|
+
readonly 'law -- reserve': "Reserve";
|
|
112
109
|
readonly 'law -- self_help': "Self Help";
|
|
113
110
|
readonly 'law -- study_guides': "Study Guides";
|
|
114
111
|
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ADVANCED_SEARCH_OPTIONS } from '../constants';
|
|
2
2
|
export type AdvancedSearchBooleanOption = (typeof ADVANCED_SEARCH_OPTIONS.boolean)[number];
|
|
3
3
|
export type AdvancedSearchFieldOption = (typeof ADVANCED_SEARCH_OPTIONS.fields)[number];
|
|
4
|
-
export declare const isAdvancedSearchFieldOption: (field: string) => field is
|
|
4
|
+
export declare const isAdvancedSearchFieldOption: (field: string) => field is AdvancedSearchLocalFieldOption;
|
|
5
5
|
export type AdvancedSearchLocalFieldOption = (typeof ADVANCED_SEARCH_OPTIONS.localFields)[number];
|
|
6
|
-
export declare const isAdvancedSearchLocalFieldOption: (field: string) => field is
|
|
6
|
+
export declare const isAdvancedSearchLocalFieldOption: (field: string) => field is AdvancedSearchLocalFieldOption;
|
|
7
7
|
export type AdvancedSearchExternalFieldOption = (typeof ADVANCED_SEARCH_OPTIONS.externalFields)[number];
|
|
8
|
-
export declare const isAdvancedSearchExternalFieldOption: (field: string) => field is
|
|
8
|
+
export declare const isAdvancedSearchExternalFieldOption: (field: string) => field is AdvancedSearchExternalFieldOption;
|
|
9
9
|
export type AdvancedSearchQualifierOption = (typeof ADVANCED_SEARCH_OPTIONS.qualifiers)[keyof typeof ADVANCED_SEARCH_OPTIONS.qualifiers][number];
|
|
10
10
|
export type AdvancedSearchResultsPerPageOption = (typeof ADVANCED_SEARCH_OPTIONS.resultsPerPage)[number];
|
|
11
11
|
export type AdvancedSearchLanguageOption = (keyof typeof ADVANCED_SEARCH_OPTIONS.languages)[number];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
declare const searchScopeValues: readonly ["local", "external"];
|
|
2
2
|
export type SearchScope = (typeof searchScopeValues)[number];
|
|
3
|
-
export declare const isSearchScope: (scope: string) => scope is
|
|
3
|
+
export declare const isSearchScope: (scope: string) => scope is SearchScope;
|
|
4
4
|
export {};
|
|
@@ -16,7 +16,7 @@ export declare class SimpleSearchComponent implements OnInit, OnDestroy {
|
|
|
16
16
|
protected searchForm: import("@angular/forms").FormGroup<{
|
|
17
17
|
simpleQuery: FormControl<string>;
|
|
18
18
|
}>;
|
|
19
|
-
get simpleQuery(): FormControl
|
|
19
|
+
get simpleQuery(): FormControl;
|
|
20
20
|
ngOnInit(): void;
|
|
21
21
|
ngOnDestroy(): void;
|
|
22
22
|
protected emitSimpleSearch: () => void;
|
|
@@ -26,7 +26,7 @@ export declare class StatusButtonComponent {
|
|
|
26
26
|
private _clearVariant;
|
|
27
27
|
label: string;
|
|
28
28
|
set status(value: 'success' | 'info' | 'warning' | 'error' | 'disabled');
|
|
29
|
-
get status():
|
|
29
|
+
get status(): "success" | "info" | "warning" | "error" | "disabled";
|
|
30
30
|
set leftIcon(value: string);
|
|
31
31
|
get leftIcon(): string;
|
|
32
32
|
set rightIcon(value: string);
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@byuhbll/components",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0-rc.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
5
|
+
"@angular/common": "^19.2.17",
|
|
6
|
+
"@angular/core": "^19.2.17"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"tslib": "^2.
|
|
9
|
+
"tslib": "^2.6.2"
|
|
10
10
|
},
|
|
11
11
|
"sideEffects": false,
|
|
12
12
|
"exports": {
|
|
@@ -33,8 +33,6 @@
|
|
|
33
33
|
},
|
|
34
34
|
".": {
|
|
35
35
|
"types": "./index.d.ts",
|
|
36
|
-
"esm2022": "./esm2022/byuhbll-components.mjs",
|
|
37
|
-
"esm": "./esm2022/byuhbll-components.mjs",
|
|
38
36
|
"default": "./fesm2022/byuhbll-components.mjs"
|
|
39
37
|
}
|
|
40
38
|
},
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl1aGJsbC1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvYnl1aGJsbC1jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { trigger, transition, animate, style, group, query, animateChild, } from '@angular/animations';
|
|
2
|
-
export const libHbllExpandCollapse = trigger('libHbllExpandCollapse', [
|
|
3
|
-
transition('void <=> *', []),
|
|
4
|
-
transition('* <=> *', [
|
|
5
|
-
group([
|
|
6
|
-
style({ height: '{{startHeight}}px' }),
|
|
7
|
-
query('@*', [animateChild()], { optional: true }),
|
|
8
|
-
animate('.15s ease-in-out'),
|
|
9
|
-
]),
|
|
10
|
-
], { params: { startHeight: '0px' } }),
|
|
11
|
-
]);
|
|
12
|
-
export const libHbllFadeInOut = trigger('libHbllFadeInOut', [
|
|
13
|
-
transition(':enter', [style({ opacity: '0' }), animate('.15s ease-out')]),
|
|
14
|
-
transition(':leave', [animate('.15s ease-out', style({ opacity: '0' }))]),
|
|
15
|
-
]);
|
|
16
|
-
export const libHbllFadeIn = trigger('libHbllFadeIn', [
|
|
17
|
-
transition(':enter', [style({ opacity: '0' }), animate('.15s ease-out')]),
|
|
18
|
-
]);
|
|
19
|
-
export const libHbllFadeOut = trigger('libHbllFadeOut', [
|
|
20
|
-
transition(':leave', [animate('.15s ease-out', style({ opacity: '0' }))]),
|
|
21
|
-
]);
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9hbmltYXRpb25zL2FuaW1hdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFlBQVksR0FDZixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtJQUNsRSxVQUFVLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUM1QixVQUFVLENBQ04sU0FBUyxFQUNUO1FBQ0ksS0FBSyxDQUFDO1lBQ0YsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLENBQUM7WUFDdEMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDakQsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1NBQzlCLENBQUM7S0FDTCxFQUNELEVBQUUsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ3JDO0NBQ0osQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFO0lBQ3hELFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN6RSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDNUUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUU7SUFDbEQsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0NBQzVFLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7SUFDcEQsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgdHJpZ2dlcixcbiAgICB0cmFuc2l0aW9uLFxuICAgIGFuaW1hdGUsXG4gICAgc3R5bGUsXG4gICAgZ3JvdXAsXG4gICAgcXVlcnksXG4gICAgYW5pbWF0ZUNoaWxkLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IGxpYkhibGxFeHBhbmRDb2xsYXBzZSA9IHRyaWdnZXIoJ2xpYkhibGxFeHBhbmRDb2xsYXBzZScsIFtcbiAgICB0cmFuc2l0aW9uKCd2b2lkIDw9PiAqJywgW10pLFxuICAgIHRyYW5zaXRpb24oXG4gICAgICAgICcqIDw9PiAqJyxcbiAgICAgICAgW1xuICAgICAgICAgICAgZ3JvdXAoW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAne3tzdGFydEhlaWdodH19cHgnIH0pLFxuICAgICAgICAgICAgICAgIHF1ZXJ5KCdAKicsIFthbmltYXRlQ2hpbGQoKV0sIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnLjE1cyBlYXNlLWluLW91dCcpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICAgIHsgcGFyYW1zOiB7IHN0YXJ0SGVpZ2h0OiAnMHB4JyB9IH0sXG4gICAgKSxcbl0pO1xuXG5leHBvcnQgY29uc3QgbGliSGJsbEZhZGVJbk91dCA9IHRyaWdnZXIoJ2xpYkhibGxGYWRlSW5PdXQnLCBbXG4gICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogJzAnIH0pLCBhbmltYXRlKCcuMTVzIGVhc2Utb3V0JyldKSxcbiAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgnLjE1cyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogJzAnIH0pKV0pLFxuXSk7XG5cbmV4cG9ydCBjb25zdCBsaWJIYmxsRmFkZUluID0gdHJpZ2dlcignbGliSGJsbEZhZGVJbicsIFtcbiAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSksIGFuaW1hdGUoJy4xNXMgZWFzZS1vdXQnKV0pLFxuXSk7XG5cbmV4cG9ydCBjb25zdCBsaWJIYmxsRmFkZU91dCA9IHRyaWdnZXIoJ2xpYkhibGxGYWRlT3V0JywgW1xuICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFthbmltYXRlKCcuMTVzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSkpXSksXG5dKTtcbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, input } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class HbllCheckboxComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.isChecked = input(false);
|
|
7
|
-
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HbllCheckboxComponent, isStandalone: true, selector: "lib-checkbox", inputs: { isChecked: { classPropertyName: "isChecked", publicName: "isChecked", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span class=\"components-checkbox-container\" [class.components-checked]=\"isChecked()\">\n @if (isChecked()) {\n <span class=\"material-symbols-outlined components-icon\"> check </span>\n }\n</span>\n", styles: [".components-checkbox-container{transition:.15s;height:1.13em;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;border-radius:4px;border:solid 1px #707070;color:#fff;box-sizing:border-box;position:relative}.components-checkbox-container.components-checked{border-color:#3a6093;background-color:#3a6093}.components-checkbox-container.components-checked .components-icon{position:absolute;font-size:1.1em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllCheckboxComponent, decorators: [{
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ selector: 'lib-checkbox', standalone: true, imports: [CommonModule], template: "<span class=\"components-checkbox-container\" [class.components-checked]=\"isChecked()\">\n @if (isChecked()) {\n <span class=\"material-symbols-outlined components-icon\"> check </span>\n }\n</span>\n", styles: [".components-checkbox-container{transition:.15s;height:1.13em;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;border-radius:4px;border:solid 1px #707070;color:#fff;box-sizing:border-box;position:relative}.components-checkbox-container.components-checked{border-color:#3a6093;background-color:#3a6093}.components-checkbox-container.components-checked .components-icon{position:absolute;font-size:1.1em}\n"] }]
|
|
14
|
-
}] });
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU2pELE1BQU0sT0FBTyxxQkFBcUI7SUFQbEM7UUFRSSxjQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzVCOzhHQUZZLHFCQUFxQjtrR0FBckIscUJBQXFCLHdOQ1ZsQyx3TkFLQSxtZURHYyxZQUFZOzsyRkFFYixxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWNoZWNrYm94JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSGJsbENoZWNrYm94Q29tcG9uZW50IHtcbiAgICBpc0NoZWNrZWQgPSBpbnB1dChmYWxzZSk7XG59XG4iLCI8c3BhbiBjbGFzcz1cImNvbXBvbmVudHMtY2hlY2tib3gtY29udGFpbmVyXCIgW2NsYXNzLmNvbXBvbmVudHMtY2hlY2tlZF09XCJpc0NoZWNrZWQoKVwiPlxuICAgIEBpZiAoaXNDaGVja2VkKCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNvbXBvbmVudHMtaWNvblwiPiBjaGVjayA8L3NwYW4+XG4gICAgfVxuPC9zcGFuPlxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Validators } from '@angular/forms';
|
|
2
|
-
const EMAIL_PATH = 'email';
|
|
3
|
-
const FEEDBACK_PATH = 'feedback';
|
|
4
|
-
export const USER_STATUSES = [
|
|
5
|
-
'',
|
|
6
|
-
'Undergraduate',
|
|
7
|
-
'Graduate',
|
|
8
|
-
'Faculty',
|
|
9
|
-
'Staff',
|
|
10
|
-
'Library Employee',
|
|
11
|
-
'Other',
|
|
12
|
-
];
|
|
13
|
-
export const createContactForm = (fb) => fb.nonNullable.group({
|
|
14
|
-
name: [''],
|
|
15
|
-
email: [''],
|
|
16
|
-
message: ['', Validators.required],
|
|
17
|
-
status: [''],
|
|
18
|
-
});
|
|
19
|
-
export const submitEmail = (payload, byuid, http, apiBaseUrl) => submitContactForm({ ...payload, byuId: byuid }, http, EMAIL_PATH, apiBaseUrl);
|
|
20
|
-
export const submitFeedback = (payload, http, apiBaseUrl) => submitContactForm({ ...payload, origin: location.href }, http, FEEDBACK_PATH, apiBaseUrl);
|
|
21
|
-
const submitContactForm = (payload, http, path, apiBaseUrl) => http.post(`${apiBaseUrl}/${path}`, payload);
|
|
22
|
-
export const getUserStatusFromRoles = (roles) => {
|
|
23
|
-
let userStatus = '';
|
|
24
|
-
if (roles.includes('undergraduateStudent')) {
|
|
25
|
-
userStatus = 'Undergraduate';
|
|
26
|
-
}
|
|
27
|
-
if (roles.includes('graduateStudent')) {
|
|
28
|
-
userStatus = 'Graduate';
|
|
29
|
-
}
|
|
30
|
-
if (roles.includes('staffEmployee')) {
|
|
31
|
-
userStatus = 'Staff';
|
|
32
|
-
}
|
|
33
|
-
if (roles.includes('facultyEmployee')) {
|
|
34
|
-
userStatus = 'Faculty';
|
|
35
|
-
}
|
|
36
|
-
if (roles.includes('libraryEmployee')) {
|
|
37
|
-
userStatus = 'Library Employee';
|
|
38
|
-
}
|
|
39
|
-
return userStatus;
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250YWN0LXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixFQUFFO0lBQ0YsZUFBZTtJQUNmLFVBQVU7SUFDVixTQUFTO0lBQ1QsT0FBTztJQUNQLGtCQUFrQjtJQUNsQixPQUFPO0NBQ0QsQ0FBQztBQVdYLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsRUFBZSxFQUFFLEVBQUUsQ0FDakQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDakIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ1YsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ1gsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsTUFBTSxFQUFFLENBQUMsRUFBOEIsQ0FBQztDQUMzQyxDQUFDLENBQUM7QUFFUCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FDdkIsT0FBdUIsRUFDdkIsS0FBYSxFQUNiLElBQWdCLEVBQ2hCLFVBQWtCLEVBQ3BCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRW5GLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQXVCLEVBQUUsSUFBZ0IsRUFBRSxVQUFrQixFQUFFLEVBQUUsQ0FDNUYsaUJBQWlCLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFOUYsTUFBTSxpQkFBaUIsR0FBRyxDQUN0QixPQUFrRSxFQUNsRSxJQUFnQixFQUNoQixJQUE4QyxFQUM5QyxVQUFrQixFQUNwQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBVSxHQUFHLFVBQVUsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUUxRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWUsRUFBYyxFQUFFO0lBQ2xFLElBQUksVUFBVSxHQUFlLEVBQUUsQ0FBQztJQUNoQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1FBQ3pDLFVBQVUsR0FBRyxlQUFlLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDcEMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDbEMsVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUNwQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ3BDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5jb25zdCBFTUFJTF9QQVRIID0gJ2VtYWlsJztcbmNvbnN0IEZFRURCQUNLX1BBVEggPSAnZmVlZGJhY2snO1xuXG5leHBvcnQgY29uc3QgVVNFUl9TVEFUVVNFUyA9IFtcbiAgICAnJyxcbiAgICAnVW5kZXJncmFkdWF0ZScsXG4gICAgJ0dyYWR1YXRlJyxcbiAgICAnRmFjdWx0eScsXG4gICAgJ1N0YWZmJyxcbiAgICAnTGlicmFyeSBFbXBsb3llZScsXG4gICAgJ090aGVyJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFVzZXJTdGF0dXMgPSAodHlwZW9mIFVTRVJfU1RBVFVTRVMpW251bWJlcl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdFBheWxvYWQge1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHN0YXR1cz86IFVzZXJTdGF0dXM7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250YWN0Rm9ybSA9IChmYjogRm9ybUJ1aWxkZXIpID0+XG4gICAgZmIubm9uTnVsbGFibGUuZ3JvdXAoe1xuICAgICAgICBuYW1lOiBbJyddLFxuICAgICAgICBlbWFpbDogWycnXSxcbiAgICAgICAgbWVzc2FnZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgc3RhdHVzOiBbJycgYXMgQ29udGFjdFBheWxvYWRbJ3N0YXR1cyddXSxcbiAgICB9KTtcblxuZXhwb3J0IGNvbnN0IHN1Ym1pdEVtYWlsID0gKFxuICAgIHBheWxvYWQ6IENvbnRhY3RQYXlsb2FkLFxuICAgIGJ5dWlkOiBzdHJpbmcsXG4gICAgaHR0cDogSHR0cENsaWVudCxcbiAgICBhcGlCYXNlVXJsOiBzdHJpbmcsXG4pID0+IHN1Ym1pdENvbnRhY3RGb3JtKHsgLi4ucGF5bG9hZCwgYnl1SWQ6IGJ5dWlkIH0sIGh0dHAsIEVNQUlMX1BBVEgsIGFwaUJhc2VVcmwpO1xuXG5leHBvcnQgY29uc3Qgc3VibWl0RmVlZGJhY2sgPSAocGF5bG9hZDogQ29udGFjdFBheWxvYWQsIGh0dHA6IEh0dHBDbGllbnQsIGFwaUJhc2VVcmw6IHN0cmluZykgPT5cbiAgICBzdWJtaXRDb250YWN0Rm9ybSh7IC4uLnBheWxvYWQsIG9yaWdpbjogbG9jYXRpb24uaHJlZiB9LCBodHRwLCBGRUVEQkFDS19QQVRILCBhcGlCYXNlVXJsKTtcblxuY29uc3Qgc3VibWl0Q29udGFjdEZvcm0gPSAoXG4gICAgcGF5bG9hZDogQ29udGFjdFBheWxvYWQgJiB7IG9yaWdpbj86IHN0cmluZyB9ICYgeyBieXVJZD86IHN0cmluZyB9LFxuICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcGF0aDogdHlwZW9mIEVNQUlMX1BBVEggfCB0eXBlb2YgRkVFREJBQ0tfUEFUSCxcbiAgICBhcGlCYXNlVXJsOiBzdHJpbmcsXG4pID0+IGh0dHAucG9zdDx1bmtub3duPihgJHthcGlCYXNlVXJsfS8ke3BhdGh9YCwgcGF5bG9hZCk7XG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyU3RhdHVzRnJvbVJvbGVzID0gKHJvbGVzOiBzdHJpbmdbXSk6IFVzZXJTdGF0dXMgPT4ge1xuICAgIGxldCB1c2VyU3RhdHVzOiBVc2VyU3RhdHVzID0gJyc7XG4gICAgaWYgKHJvbGVzLmluY2x1ZGVzKCd1bmRlcmdyYWR1YXRlU3R1ZGVudCcpKSB7XG4gICAgICAgIHVzZXJTdGF0dXMgPSAnVW5kZXJncmFkdWF0ZSc7XG4gICAgfVxuICAgIGlmIChyb2xlcy5pbmNsdWRlcygnZ3JhZHVhdGVTdHVkZW50JykpIHtcbiAgICAgICAgdXNlclN0YXR1cyA9ICdHcmFkdWF0ZSc7XG4gICAgfVxuICAgIGlmIChyb2xlcy5pbmNsdWRlcygnc3RhZmZFbXBsb3llZScpKSB7XG4gICAgICAgIHVzZXJTdGF0dXMgPSAnU3RhZmYnO1xuICAgIH1cbiAgICBpZiAocm9sZXMuaW5jbHVkZXMoJ2ZhY3VsdHlFbXBsb3llZScpKSB7XG4gICAgICAgIHVzZXJTdGF0dXMgPSAnRmFjdWx0eSc7XG4gICAgfVxuICAgIGlmIChyb2xlcy5pbmNsdWRlcygnbGlicmFyeUVtcGxveWVlJykpIHtcbiAgICAgICAgdXNlclN0YXR1cyA9ICdMaWJyYXJ5IEVtcGxveWVlJztcbiAgICB9XG4gICAgcmV0dXJuIHVzZXJTdGF0dXM7XG59O1xuIl19
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/material/tooltip";
|
|
6
|
-
export class CopyTooltipComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.position = 'below';
|
|
9
|
-
this.clipboardCopyMessage = 'Copy';
|
|
10
|
-
this.copyToClipboard = async (text) => {
|
|
11
|
-
// Ensure the tooltip doesn't disappear when button is clicked
|
|
12
|
-
this.tooltip.show();
|
|
13
|
-
if (text) {
|
|
14
|
-
try {
|
|
15
|
-
await navigator.clipboard.writeText(text).then(() => {
|
|
16
|
-
this.clipboardCopyMessage = 'Copied!';
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
this.clipboardCopyMessage = 'Failed to copy';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
else
|
|
24
|
-
this.clipboardCopyMessage = 'Nothing to copy!';
|
|
25
|
-
};
|
|
26
|
-
this.handleMouseLeave = () => {
|
|
27
|
-
// Manually hide in case the user hovers over the tooltip
|
|
28
|
-
this.tooltip.hide();
|
|
29
|
-
// Delay to account for tooltip animation
|
|
30
|
-
setTimeout(() => {
|
|
31
|
-
this.clipboardCopyMessage = 'Copy';
|
|
32
|
-
}, 100);
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CopyTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: CopyTooltipComponent, isStandalone: true, selector: "lib-copy-tooltip", inputs: { position: "position", copyText: "copyText" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<div\n (click)=\"copyToClipboard(copyText)\"\n [matTooltip]=\"clipboardCopyMessage\"\n [matTooltipPosition]=\"position\"\n (mouseleave)=\"handleMouseLeave()\"\n data-testid=\"tooltip\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CopyTooltipComponent, decorators: [{
|
|
39
|
-
type: Component,
|
|
40
|
-
args: [{ selector: 'lib-copy-tooltip', standalone: true, imports: [CommonModule, MatTooltipModule], template: "<div\n (click)=\"copyToClipboard(copyText)\"\n [matTooltip]=\"clipboardCopyMessage\"\n [matTooltipPosition]=\"position\"\n (mouseleave)=\"handleMouseLeave()\"\n data-testid=\"tooltip\"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
|
41
|
-
}], propDecorators: { position: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], copyText: [{
|
|
44
|
-
type: Input
|
|
45
|
-
}], tooltip: [{
|
|
46
|
-
type: ViewChild,
|
|
47
|
-
args: [MatTooltip]
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3B5LXRvb2x0aXAvY29weS10b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3B5LXRvb2x0aXAvY29weS10b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBUzFGLE1BQU0sT0FBTyxvQkFBb0I7SUFQakM7UUFRYSxhQUFRLEdBQW9CLE9BQU8sQ0FBQztRQUl0Qyx5QkFBb0IsR0FBRyxNQUFNLENBQUM7UUFFOUIsb0JBQWUsR0FBRyxLQUFLLEVBQUUsSUFBYSxFQUFFLEVBQUU7WUFDN0MsOERBQThEO1lBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUM7b0JBQ0QsTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNoRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDO29CQUMxQyxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDTCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7Z0JBQ2pELENBQUM7WUFDTCxDQUFDOztnQkFBTSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsa0JBQWtCLENBQUM7UUFDMUQsQ0FBQyxDQUFDO1FBRUsscUJBQWdCLEdBQUcsR0FBRyxFQUFFO1lBQzNCLHlEQUF5RDtZQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLHlDQUF5QztZQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7WUFDdkMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQyxDQUFDO0tBQ0w7OEdBN0JZLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDZLQUdsQixVQUFVLGdEQ2R6QixxUEFTQSx5RERGYyxZQUFZLDhCQUFFLGdCQUFnQjs7MkZBSS9CLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDSSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDOzhCQUtoQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ2lCLE9BQU87c0JBQTdCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXAsIE1hdFRvb2x0aXBNb2R1bGUsIFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1jb3B5LXRvb2x0aXAnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvcHktdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29weS10b29sdGlwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvcHlUb29sdGlwQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBwb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uID0gJ2JlbG93JztcbiAgICBASW5wdXQoKSBjb3B5VGV4dD86IHN0cmluZztcbiAgICBAVmlld0NoaWxkKE1hdFRvb2x0aXApIHRvb2x0aXAhOiBNYXRUb29sdGlwO1xuXG4gICAgcHVibGljIGNsaXBib2FyZENvcHlNZXNzYWdlID0gJ0NvcHknO1xuXG4gICAgcHVibGljIGNvcHlUb0NsaXBib2FyZCA9IGFzeW5jICh0ZXh0Pzogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGUgdG9vbHRpcCBkb2Vzbid0IGRpc2FwcGVhciB3aGVuIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAgICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gICAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsaXBib2FyZENvcHlNZXNzYWdlID0gJ0NvcGllZCEnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmRDb3B5TWVzc2FnZSA9ICdGYWlsZWQgdG8gY29weSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB0aGlzLmNsaXBib2FyZENvcHlNZXNzYWdlID0gJ05vdGhpbmcgdG8gY29weSEnO1xuICAgIH07XG5cbiAgICBwdWJsaWMgaGFuZGxlTW91c2VMZWF2ZSA9ICgpID0+IHtcbiAgICAgICAgLy8gTWFudWFsbHkgaGlkZSBpbiBjYXNlIHRoZSB1c2VyIGhvdmVycyBvdmVyIHRoZSB0b29sdGlwXG4gICAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgIC8vIERlbGF5IHRvIGFjY291bnQgZm9yIHRvb2x0aXAgYW5pbWF0aW9uXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmRDb3B5TWVzc2FnZSA9ICdDb3B5JztcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9O1xufVxuIiwiPGRpdlxuICAgIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoY29weVRleHQpXCJcbiAgICBbbWF0VG9vbHRpcF09XCJjbGlwYm9hcmRDb3B5TWVzc2FnZVwiXG4gICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJwb3NpdGlvblwiXG4gICAgKG1vdXNlbGVhdmUpPVwiaGFuZGxlTW91c2VMZWF2ZSgpXCJcbiAgICBkYXRhLXRlc3RpZD1cInRvb2x0aXBcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { libHbllExpandCollapse } from '../animations/animations';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
export class ExpandCollapseComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this._isExpanded = false;
|
|
9
|
-
this.heightOfContent = 0;
|
|
10
|
-
}
|
|
11
|
-
set isExpanded(isExpanded) {
|
|
12
|
-
this.heightOfContent = this.contentRef?.nativeElement.clientHeight;
|
|
13
|
-
this._isExpanded = isExpanded;
|
|
14
|
-
}
|
|
15
|
-
get isExpanded() {
|
|
16
|
-
return this._isExpanded;
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ExpandCollapseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ExpandCollapseComponent, isStandalone: true, selector: "lib-expand-collapse", inputs: { isExpanded: "isExpanded" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }], ngImport: i0, template: "<div\n #contentRef\n data-testid=\"contentRef\"\n [@libHbllExpandCollapse]=\"{\n value: isExpanded,\n params: { startHeight: heightOfContent },\n }\"\n class=\"hbll-expand-collapse-content-wrapper\"\n [ngClass]=\"{ 'hbll-expand-collapse-collapsed': !isExpanded }\"\n>\n <div data-testid=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".hbll-expand-collapse-collapsed{height:0}.hbll-expand-collapse-content-wrapper{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [libHbllExpandCollapse], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ExpandCollapseComponent, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{ selector: 'lib-expand-collapse', changeDetection: ChangeDetectionStrategy.OnPush, animations: [libHbllExpandCollapse], standalone: true, imports: [CommonModule], template: "<div\n #contentRef\n data-testid=\"contentRef\"\n [@libHbllExpandCollapse]=\"{\n value: isExpanded,\n params: { startHeight: heightOfContent },\n }\"\n class=\"hbll-expand-collapse-content-wrapper\"\n [ngClass]=\"{ 'hbll-expand-collapse-collapsed': !isExpanded }\"\n>\n <div data-testid=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".hbll-expand-collapse-collapsed{height:0}.hbll-expand-collapse-content-wrapper{overflow:hidden}\n"] }]
|
|
24
|
-
}], propDecorators: { contentRef: [{
|
|
25
|
-
type: ViewChild,
|
|
26
|
-
args: ['contentRef']
|
|
27
|
-
}], isExpanded: [{
|
|
28
|
-
type: Input,
|
|
29
|
-
args: [{ required: true }]
|
|
30
|
-
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kLWNvbGxhcHNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9leHBhbmQtY29sbGFwc2UvZXhwYW5kLWNvbGxhcHNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9leHBhbmQtY29sbGFwc2UvZXhwYW5kLWNvbGxhcHNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQVdqRSxNQUFNLE9BQU8sdUJBQXVCO0lBVHBDO1FBWVksZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFTbEIsb0JBQWUsR0FBRyxDQUFDLENBQUM7S0FDakM7SUFURyxJQUErQixVQUFVLENBQUMsVUFBbUI7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUM7UUFDbkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDOzhHQVZRLHVCQUF1QjtrR0FBdkIsdUJBQXVCLCtOQ2JwQyx5WUFjQSwwSkRIYyxZQUFZLCtHQUZWLENBQUMscUJBQXFCLENBQUM7OzJGQUkxQix1QkFBdUI7a0JBVG5DLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsQ0FBQyxxQkFBcUIsQ0FBQyxjQUN2QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBR1UsVUFBVTtzQkFBMUMsU0FBUzt1QkFBQyxZQUFZO2dCQUdRLFVBQVU7c0JBQXhDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGxpYkhibGxFeHBhbmRDb2xsYXBzZSB9IGZyb20gJy4uL2FuaW1hdGlvbnMvYW5pbWF0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWV4cGFuZC1jb2xsYXBzZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V4cGFuZC1jb2xsYXBzZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZXhwYW5kLWNvbGxhcHNlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW2xpYkhibGxFeHBhbmRDb2xsYXBzZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRXhwYW5kQ29sbGFwc2VDb21wb25lbnQge1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnRSZWYnKSBwcml2YXRlIGNvbnRlbnRSZWYhOiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSBfaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBpc0V4cGFuZGVkKGlzRXhwYW5kZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5oZWlnaHRPZkNvbnRlbnQgPSB0aGlzLmNvbnRlbnRSZWY/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICB0aGlzLl9pc0V4cGFuZGVkID0gaXNFeHBhbmRlZDtcbiAgICB9XG4gICAgZ2V0IGlzRXhwYW5kZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0V4cGFuZGVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoZWlnaHRPZkNvbnRlbnQgPSAwO1xufVxuIiwiPGRpdlxuICAgICNjb250ZW50UmVmXG4gICAgZGF0YS10ZXN0aWQ9XCJjb250ZW50UmVmXCJcbiAgICBbQGxpYkhibGxFeHBhbmRDb2xsYXBzZV09XCJ7XG4gICAgICAgIHZhbHVlOiBpc0V4cGFuZGVkLFxuICAgICAgICBwYXJhbXM6IHsgc3RhcnRIZWlnaHQ6IGhlaWdodE9mQ29udGVudCB9LFxuICAgIH1cIlxuICAgIGNsYXNzPVwiaGJsbC1leHBhbmQtY29sbGFwc2UtY29udGVudC13cmFwcGVyXCJcbiAgICBbbmdDbGFzc109XCJ7ICdoYmxsLWV4cGFuZC1jb2xsYXBzZS1jb2xsYXBzZWQnOiAhaXNFeHBhbmRlZCB9XCJcbj5cbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { Component, inject, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { HttpClient } from '@angular/common/http';
|
|
5
|
-
import { createContactForm, submitEmail, USER_STATUSES } from '../contact-utils';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common";
|
|
8
|
-
import * as i2 from "@angular/forms";
|
|
9
|
-
export class HbllFooterComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.fb = inject(FormBuilder);
|
|
12
|
-
this.http = inject(HttpClient);
|
|
13
|
-
this.footerSkipTargetId = 'hbllChatBtn';
|
|
14
|
-
// TODO: Convert these to signal inputs: https://github.com/angular/angular/issues/57755
|
|
15
|
-
this.mainsitebaseurl = 'https://lib.byu.edu';
|
|
16
|
-
this.myaccountapibaseuri = 'https://api.lib.byu.edu/v1';
|
|
17
|
-
this.byuid = '';
|
|
18
|
-
this.date = new Date();
|
|
19
|
-
this.isSubmitted = false;
|
|
20
|
-
this.isLoading = false;
|
|
21
|
-
this.hasConnectionError = false;
|
|
22
|
-
this.isEmailSent = false;
|
|
23
|
-
this.emailForm = createContactForm(this.fb);
|
|
24
|
-
this.userStatuses = USER_STATUSES;
|
|
25
|
-
this.sendEmail = () => {
|
|
26
|
-
this.isSubmitted = true;
|
|
27
|
-
if (this.emailForm.invalid)
|
|
28
|
-
return;
|
|
29
|
-
this.isLoading = true;
|
|
30
|
-
submitEmail(this.emailForm.value, this.byuid, this.http, this.myaccountapibaseuri).subscribe({
|
|
31
|
-
error: () => {
|
|
32
|
-
this.hasConnectionError = true;
|
|
33
|
-
this.isLoading = false;
|
|
34
|
-
},
|
|
35
|
-
complete: () => {
|
|
36
|
-
this.hasConnectionError = false;
|
|
37
|
-
this.isLoading = false;
|
|
38
|
-
this.isEmailSent = true;
|
|
39
|
-
this.emailForm.reset();
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
this.handleClose = () => {
|
|
44
|
-
if (this.isEmailSent) {
|
|
45
|
-
this.isEmailSent = false;
|
|
46
|
-
this.hasConnectionError = false;
|
|
47
|
-
this.isLoading = false;
|
|
48
|
-
}
|
|
49
|
-
this.isSubmitted = false;
|
|
50
|
-
};
|
|
51
|
-
// Expose this to be called from consuming applications.
|
|
52
|
-
this.openEmailForm = (formValues) => {
|
|
53
|
-
if (formValues) {
|
|
54
|
-
if (formValues.name)
|
|
55
|
-
this.emailForm.controls.name.setValue(formValues.name);
|
|
56
|
-
if (formValues.email)
|
|
57
|
-
this.emailForm.controls.email.setValue(formValues.email);
|
|
58
|
-
if (formValues.message)
|
|
59
|
-
this.emailForm.controls.message.setValue(formValues.message);
|
|
60
|
-
if (formValues.status)
|
|
61
|
-
this.emailForm.controls.status.setValue(formValues.status);
|
|
62
|
-
}
|
|
63
|
-
this.emailDialog.nativeElement.showModal();
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
set emailname(name) {
|
|
67
|
-
this.emailForm.controls.name.setValue(name);
|
|
68
|
-
}
|
|
69
|
-
set emailemail(email) {
|
|
70
|
-
this.emailForm.controls.email.setValue(email);
|
|
71
|
-
}
|
|
72
|
-
set emailmessage(message) {
|
|
73
|
-
this.emailForm.controls.message.setValue(message);
|
|
74
|
-
}
|
|
75
|
-
set emailstatus(status) {
|
|
76
|
-
this.emailForm.controls.status.setValue(status);
|
|
77
|
-
}
|
|
78
|
-
skipFooter() {
|
|
79
|
-
const skipTarget = document.getElementById(this.footerSkipTargetId);
|
|
80
|
-
if (skipTarget) {
|
|
81
|
-
skipTarget.focus();
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
console.warn('Skip footer target not found on the page.');
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HbllFooterComponent, isStandalone: true, selector: "lib-hbll-footer", inputs: { mainsitebaseurl: "mainsitebaseurl", myaccountapibaseuri: "myaccountapibaseuri", byuid: "byuid", emailname: "emailname", emailemail: "emailemail", emailmessage: "emailmessage", emailstatus: "emailstatus" }, viewQueries: [{ propertyName: "emailDialog", first: true, predicate: ["emailDialog"], descendants: true }], ngImport: i0, template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <button class=\"skip-link-footer\" (click)=\"skipFooter()\">Skip footer</button>\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\">Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n > <strong>Call</strong> (801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n > <strong>Text</strong> (801) 623-6838\n </a>\n </li>\n <li>\n <button\n (click)=\"emailDialog.showModal()\"\n data-testid=\"emailUsBtn\"\n style=\"padding: 4px\"\n >\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n > \n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n <ul>\n <li>\n <a href=\"https://lib.byu.edu/announcements\"\n ><span class=\"material-symbols-outlined social-icon\"> featured_seasonal_and_gifts</span\n > Explore what\u2019s new\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />© {{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <span id=\"teconsent\"></span>\n </div>\n </section>\n </div>\n <div id=\"consent-banner\"></div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailQuestionComment\">\n Question or comment <span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailQuestionComment\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}.skip-link-footer{position:absolute;top:30px;left:30px;background:#fff;color:#00285b;font-size:1em;font-weight:580;padding:8px 16px;border:3px solid #0050b7;border-radius:4px;cursor:pointer;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.skip-link-footer:focus{opacity:1;pointer-events:auto;transform:none}.skip-link-footer:hover{color:#00285b;background-color:#e3edf8;border-color:#e3edf8}footer{line-height:1.2em;background-color:#e6e6e6}footer a{padding:4px}footer ::ng-deep #consent-banner{z-index:11;position:fixed}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:1.25rem!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper .hbll-footer-links .social-icon{font-size:20px;padding:2px}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:IBM Plex Sans,sans-serif;font-optical-sizing:auto;font-weight:300;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em;display:flex;align-items:center;justify-content:center;gap:5px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a{color:#fff;text-decoration:underline;padding:4px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a:hover{color:#fff}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
89
|
-
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllFooterComponent, decorators: [{
|
|
91
|
-
type: Component,
|
|
92
|
-
args: [{ selector: 'lib-hbll-footer', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <button class=\"skip-link-footer\" (click)=\"skipFooter()\">Skip footer</button>\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\">Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n > <strong>Call</strong> (801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n > <strong>Text</strong> (801) 623-6838\n </a>\n </li>\n <li>\n <button\n (click)=\"emailDialog.showModal()\"\n data-testid=\"emailUsBtn\"\n style=\"padding: 4px\"\n >\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n > \n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n <ul>\n <li>\n <a href=\"https://lib.byu.edu/announcements\"\n ><span class=\"material-symbols-outlined social-icon\"> featured_seasonal_and_gifts</span\n > Explore what\u2019s new\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />© {{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <span id=\"teconsent\"></span>\n </div>\n </section>\n </div>\n <div id=\"consent-banner\"></div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailQuestionComment\">\n Question or comment <span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailQuestionComment\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}.skip-link-footer{position:absolute;top:30px;left:30px;background:#fff;color:#00285b;font-size:1em;font-weight:580;padding:8px 16px;border:3px solid #0050b7;border-radius:4px;cursor:pointer;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.skip-link-footer:focus{opacity:1;pointer-events:auto;transform:none}.skip-link-footer:hover{color:#00285b;background-color:#e3edf8;border-color:#e3edf8}footer{line-height:1.2em;background-color:#e6e6e6}footer a{padding:4px}footer ::ng-deep #consent-banner{z-index:11;position:fixed}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:1.25rem!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper .hbll-footer-links .social-icon{font-size:20px;padding:2px}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:IBM Plex Sans,sans-serif;font-optical-sizing:auto;font-weight:300;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em;display:flex;align-items:center;justify-content:center;gap:5px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a{color:#fff;text-decoration:underline;padding:4px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a:hover{color:#fff}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"] }]
|
|
93
|
-
}], propDecorators: { emailDialog: [{
|
|
94
|
-
type: ViewChild,
|
|
95
|
-
args: ['emailDialog']
|
|
96
|
-
}], mainsitebaseurl: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}], myaccountapibaseuri: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}], byuid: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], emailname: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], emailemail: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], emailmessage: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], emailstatus: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGJsbC1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2hibGwtZm9vdGVyL2hibGwtZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9oYmxsLWZvb3Rlci9oYmxsLWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBU2pHLE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLHVCQUFrQixHQUFHLGFBQWEsQ0FBQztRQUVwRCx3RkFBd0Y7UUFDL0Usb0JBQWUsR0FBRyxxQkFBcUIsQ0FBQztRQUN4Qyx3QkFBbUIsR0FBRyw0QkFBNEIsQ0FBQztRQUNuRCxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBZWxCLFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxhQUFhLENBQUM7UUFFN0IsY0FBUyxHQUFHLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBRXRCLFdBQVcsQ0FDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQXVCLEVBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsbUJBQW1CLENBQzNCLENBQUMsU0FBUyxDQUFDO2dCQUNSLEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQzNCLENBQUM7Z0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDWCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO29CQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFFUSxnQkFBVyxHQUFHLEdBQUcsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRix3REFBd0Q7UUFDeEQsa0JBQWEsR0FBRyxDQUFDLFVBQXdDLEVBQUUsRUFBRTtZQUN6RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLElBQUksVUFBVSxDQUFDLElBQUk7b0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVFLElBQUksVUFBVSxDQUFDLEtBQUs7b0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9FLElBQUksVUFBVSxDQUFDLE9BQU87b0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JGLElBQUksVUFBVSxDQUFDLE1BQU07b0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEYsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9DLENBQUMsQ0FBQztLQVVMO0lBekVHLElBQWEsU0FBUyxDQUFDLElBQVk7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsS0FBYTtRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFhLFlBQVksQ0FBQyxPQUFlO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELElBQWEsV0FBVyxDQUFDLE1BQWdDO1FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQXNERCxVQUFVO1FBQ04sTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQWdCLENBQUM7UUFDbkYsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0wsQ0FBQzs4R0FsRlEsbUJBQW1CO2tHQUFuQixtQkFBbUIsK1lDYmhDLDZvVUEyT0EseTBNRGxPYyxZQUFZLHNJQUFFLG1CQUFtQjs7MkZBSWxDLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDSSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUM7OEJBUVYsV0FBVztzQkFBNUMsU0FBUzt1QkFBQyxhQUFhO2dCQUVmLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFTyxTQUFTO3NCQUFyQixLQUFLO2dCQUdPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR08sWUFBWTtzQkFBeEIsS0FBSztnQkFHTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb250YWN0UGF5bG9hZCwgY3JlYXRlQ29udGFjdEZvcm0sIHN1Ym1pdEVtYWlsLCBVU0VSX1NUQVRVU0VTIH0gZnJvbSAnLi4vY29udGFjdC11dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWhibGwtZm9vdGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oYmxsLWZvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2hibGwtZm9vdGVyLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgSGJsbEZvb3RlckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9vdGVyU2tpcFRhcmdldElkID0gJ2hibGxDaGF0QnRuJztcbiAgICBAVmlld0NoaWxkKCdlbWFpbERpYWxvZycpIHByaXZhdGUgZW1haWxEaWFsb2chOiBFbGVtZW50UmVmO1xuICAgIC8vIFRPRE86IENvbnZlcnQgdGhlc2UgdG8gc2lnbmFsIGlucHV0czogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNTc3NTVcbiAgICBASW5wdXQoKSBtYWluc2l0ZWJhc2V1cmwgPSAnaHR0cHM6Ly9saWIuYnl1LmVkdSc7XG4gICAgQElucHV0KCkgbXlhY2NvdW50YXBpYmFzZXVyaSA9ICdodHRwczovL2FwaS5saWIuYnl1LmVkdS92MSc7XG4gICAgQElucHV0KCkgYnl1aWQ6IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KCkgc2V0IGVtYWlsbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMubmFtZS5zZXRWYWx1ZShuYW1lKTtcbiAgICB9XG4gICAgQElucHV0KCkgc2V0IGVtYWlsZW1haWwoZW1haWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmVtYWlsRm9ybS5jb250cm9scy5lbWFpbC5zZXRWYWx1ZShlbWFpbCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBlbWFpbG1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZW1haWxGb3JtLmNvbnRyb2xzLm1lc3NhZ2Uuc2V0VmFsdWUobWVzc2FnZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBlbWFpbHN0YXR1cyhzdGF0dXM6IENvbnRhY3RQYXlsb2FkWydzdGF0dXMnXSkge1xuICAgICAgICB0aGlzLmVtYWlsRm9ybS5jb250cm9scy5zdGF0dXMuc2V0VmFsdWUoc3RhdHVzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgcHJvdGVjdGVkIGlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBoYXNDb25uZWN0aW9uRXJyb3IgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgaXNFbWFpbFNlbnQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgZW1haWxGb3JtID0gY3JlYXRlQ29udGFjdEZvcm0odGhpcy5mYik7XG4gICAgcHJvdGVjdGVkIHVzZXJTdGF0dXNlcyA9IFVTRVJfU1RBVFVTRVM7XG5cbiAgICBwcm90ZWN0ZWQgc2VuZEVtYWlsID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZW1haWxGb3JtLmludmFsaWQpIHJldHVybjtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIHN1Ym1pdEVtYWlsKFxuICAgICAgICAgICAgdGhpcy5lbWFpbEZvcm0udmFsdWUgYXMgQ29udGFjdFBheWxvYWQsXG4gICAgICAgICAgICB0aGlzLmJ5dWlkLFxuICAgICAgICAgICAgdGhpcy5odHRwLFxuICAgICAgICAgICAgdGhpcy5teWFjY291bnRhcGliYXNldXJpLFxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ29ubmVjdGlvbkVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNDb25uZWN0aW9uRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFbWFpbFNlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0VtYWlsU2VudCkge1xuICAgICAgICAgICAgdGhpcy5pc0VtYWlsU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5oYXNDb25uZWN0aW9uRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICAvLyBFeHBvc2UgdGhpcyB0byBiZSBjYWxsZWQgZnJvbSBjb25zdW1pbmcgYXBwbGljYXRpb25zLlxuICAgIG9wZW5FbWFpbEZvcm0gPSAoZm9ybVZhbHVlcz86IHR5cGVvZiB0aGlzLmVtYWlsRm9ybS52YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoZm9ybVZhbHVlcykge1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMubmFtZSkgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMubmFtZS5zZXRWYWx1ZShmb3JtVmFsdWVzLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMuZW1haWwpIHRoaXMuZW1haWxGb3JtLmNvbnRyb2xzLmVtYWlsLnNldFZhbHVlKGZvcm1WYWx1ZXMuZW1haWwpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMubWVzc2FnZSkgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMubWVzc2FnZS5zZXRWYWx1ZShmb3JtVmFsdWVzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMuc3RhdHVzKSB0aGlzLmVtYWlsRm9ybS5jb250cm9scy5zdGF0dXMuc2V0VmFsdWUoZm9ybVZhbHVlcy5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1haWxEaWFsb2cubmF0aXZlRWxlbWVudC5zaG93TW9kYWwoKTtcbiAgICB9O1xuXG4gICAgc2tpcEZvb3RlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2tpcFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuZm9vdGVyU2tpcFRhcmdldElkKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKHNraXBUYXJnZXQpIHtcbiAgICAgICAgICAgIHNraXBUYXJnZXQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignU2tpcCBmb290ZXIgdGFyZ2V0IG5vdCBmb3VuZCBvbiB0aGUgcGFnZS4nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxmb290ZXI+XG4gICAgPGRpdiBjbGFzcz1cImhibGwtZm9vdGVyLXdyYXBwZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNraXAtbGluay1mb290ZXJcIiAoY2xpY2spPVwic2tpcEZvb3RlcigpXCI+U2tpcCBmb290ZXI8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtZm9vdGVyLWxpbmtzXCI+XG4gICAgICAgICAgICA8c2VjdGlvbiBhcmlhLWxhYmVsbGVkYnk9XCJmb290ZXJDb250YWN0SGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxoMyBpZD1cImZvb3RlckNvbnRhY3RIZWFkaW5nXCI+Q29udGFjdDwvaDM+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YWRkcmVzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQLk8uIEJveCAyNjgwMDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZvLCBVVCA4NDYwMi02ODAwXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FkZHJlc3M+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ0ZWw6ODAxLTQyMi02MDYxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtZm9vdGVyLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVfaW5fdGFsayA8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Jm5ic3A7IDxzdHJvbmc+Q2FsbDwvc3Ryb25nPiZuYnNwOyg4MDEpIDQyMi02MDYxXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJzbXM6ODAxLTYyMy02ODM4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtZm9vdGVyLWljb25cIj4gc21zIDwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mbmJzcDsgPHN0cm9uZz5UZXh0PC9zdHJvbmc+Jm5ic3A7KDgwMSkgNjIzLTY4MzhcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbWFpbERpYWxvZy5zaG93TW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbWFpbFVzQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDRweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtZm9vdGVyLWljb25cIj4gbWFpbCA8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Jm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5FbWFpbCB1czwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGFyaWEtbGFiZWxsZWRieT1cImZvb3RlclJlc291cmNlc0hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8aDMgaWQ9XCJmb290ZXJSZXNvdXJjZXNIZWFkaW5nXCI+UmVzb3VyY2VzPC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7eyBtYWluc2l0ZWJhc2V1cmwgfX0vc2l0ZS1pbmRleC9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5BLVogU2l0ZSBJbmRleDwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3sgbWFpbnNpdGViYXNldXJsIH19L2Fib3V0L3BvbGljaWVzL1wiPlBvbGljaWVzPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3sgbWFpbnNpdGViYXNldXJsIH19L2Fib3V0L2xvY2F0aW9uL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlBhcmtpbmcgJiBEaXJlY3Rpb25zPC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3VhYy5ieXUuZWR1L2FjY2Vzc2liaWxpdHktbGFiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+QWNjZXNzaWJpbGl0eSBSZXNvdXJjZXM8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vaHIubGliLmJ5dS5lZHUvYnl1LWxpYnJhcnktam9ic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkVtcGxveW1lbnQgT3Bwb3J0dW5pdGllczwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8c2VjdGlvbiBhcmlhLWxhYmVsbGVkYnk9XCJmb290ZXJGcmllbmRzSGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxoMyBpZD1cImZvb3RlckZyaWVuZHNIZWFkaW5nXCI+RnJpZW5kcyBpbiB0aGUgTGlicmFyeTwvaDM+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9jdGwuYnl1LmVkdVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkNlbnRlciBmb3IgVGVhY2hpbmcgYW5kIExlYXJuaW5nPC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2NvcHlyaWdodC5ieXUuZWR1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Q29weXJpZ2h0IExpY2Vuc2luZyBPZmZpY2U8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZmFjdWx0eWNlbnRlci5ieXUuZWR1L2Fib3V0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5GYWN1bHR5IENlbnRlcjwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9kaW5pbmcuYnl1LmVkdS9saWJyYXJ5LWNhZmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5MaWJyYXJ5IENhZmU8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgPHNlY3Rpb24gYXJpYS1sYWJlbGxlZGJ5PVwiZm9vdGVyQ29ubmVjdEhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8aDMgaWQ9XCJmb290ZXJDb25uZWN0SGVhZGluZ1wiPkNvbm5lY3Q8L2gzPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImhibGwtZm9vdGVyLXNvY2lhbC1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy5mYWNlYm9vay5jb20vYnl1aGJsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWZvb3Rlci1zb2NpYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL21lZGlhLmxpYi5ieXUuZWR1L3dlYi1hc3NldHMvaW1hZ2VzLzEuMC4wL2ZhY2Vib29rLWNvbG9yLXJvdW5kLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkZhY2Vib29rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJGYWNlYm9va1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vYnl1X2hibGwvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhibGwtZm9vdGVyLXNvY2lhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vbWVkaWEubGliLmJ5dS5lZHUvd2ViLWFzc2V0cy9pbWFnZXMvMS4wLjAvaW5zdGFncmFtLWNvbG9yLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkluc3RhZ3JhbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiSW5zdGFncmFtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9saWIuYnl1LmVkdS9hbm5vdW5jZW1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHNvY2lhbC1pY29uXCI+IGZlYXR1cmVkX3NlYXNvbmFsX2FuZF9naWZ0czwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mbmJzcDsgRXhwbG9yZSB3aGF04oCZcyBuZXdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJoYmxsLWZvb3Rlci1ib3R0b21cIiBhcmlhLWxhYmVsPVwiQm90dG9tLW1vc3QgcGFydCBvZiB0aGUgZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9ieXUuZWR1XCIgdGFyZ2V0PVwiX2JsYW5rXCI+QlJJR0hBTSBZT1VORyBVTklWRVJTSVRZPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIFBST1ZPLCBVVCA4NDYwMiwgVVNBIHwgPGEgaHJlZj1cInNtczo4MDEtNDIyLTYwNjFcIj4oODAxKSA0MjItNjA2MTwvYT5cbiAgICAgICAgICAgIDxiciAvPiZjb3B5OyZuYnNwO3t7IGRhdGUgfCBkYXRlOiAneXl5eScgfX1cbiAgICAgICAgICAgIEFMTCBSSUdIVFMgUkVTRVJWRURcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWZvb3Rlci1wcml2YWN5XCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vcHJpdmFjeS5ieXUuZWR1L1wiIHRhcmdldD1cIl9ibGFua1wiPlByaXZhY3kgTm90aWNlPC9hPlxuICAgICAgICAgICAgICAgIHxcbiAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInRlY29uc2VudFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cImNvbnNlbnQtYmFubmVyXCI+PC9kaXY+XG48L2Zvb3Rlcj5cblxuPGRpYWxvZ1xuICAgICNlbWFpbERpYWxvZ1xuICAgIG9ubW91c2Vkb3duPVwiZXZlbnQudGFyZ2V0ID09PSB0aGlzICYmIHRoaXMuY2xvc2UoKVwiXG4gICAgKGNsb3NlKT1cImhhbmRsZUNsb3NlKClcIlxuICAgIGRhdGEtdGVzdGlkPVwiZGlhbG9nXCJcbj5cbiAgICBAaWYgKCFpc0VtYWlsU2VudCkge1xuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImVtYWlsRm9ybVwiIChzdWJtaXQpPVwic2VuZEVtYWlsKClcIiBkYXRhLXRlc3RpZD1cImZvcm1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWZvb3Rlci1lbWFpbC10b3BcIj5cbiAgICAgICAgICAgICAgICA8aDE+RW1haWwgVXM8L2gxPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImVtYWlsRGlhbG9nLmNsb3NlKClcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS10ZXN0aWQ9XCJjbG9zZUJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gY2xvc2UgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiaGJsbEZvb3RlckVtYWlsTmFtZVwiPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJoYmxsRm9vdGVyRW1haWxOYW1lXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbWFpbE5hbWVJbnB1dFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhibGxGb290ZXJFbWFpbEVtYWlsXCI+XG4gICAgICAgICAgICAgICAgRW1haWwgKHBsZWFzZSBwcm92aWRlIGlmIHlvdSB3b3VsZCBsaWtlIGEgcmVzcG9uc2UpPC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJoYmxsRm9vdGVyRW1haWxFbWFpbFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVtYWlsRW1haWxJbnB1dFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhibGxGb290ZXJFbWFpbFF1ZXN0aW9uQ29tbWVudFwiPlxuICAgICAgICAgICAgICAgIFF1ZXN0aW9uIG9yIGNvbW1lbnQmbmJzcDs8c3BhbiBjbGFzcz1cImhibGwtZm9vdGVyLWVtYWlsLXJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cImhibGxGb290ZXJFbWFpbFF1ZXN0aW9uQ29tbWVudFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZW1haWxNZXNzYWdlSW5wdXRcIlxuICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICBAaWYgKGlzU3VibWl0dGVkICYmIGVtYWlsRm9ybS5jb250cm9scy5tZXNzYWdlLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGJsbC1mb290ZXItZW1haWwtcmVxdWlyZWQgaGJsbC1mb290ZXItZW1haWwtZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvbW1lbnRFcnJvclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaGJsbC1mb290ZXItZW1haWwtZXJyb3ItaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ1xuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UGxlYXNlIGZpbGwgb3V0IHRoaXMgZmllbGQ8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYmxsRm9vdGVyRW1haWxTdGF0dXNcIj5Sb2xlPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGJsbC1mb290ZXItc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGJsbEZvb3RlckVtYWlsU3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbWFpbFN0YXR1c0lucHV0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgdmFsdWU9XCJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoc3RhdHVzIG9mIHVzZXJTdGF0dXNlcyB8IHNsaWNlOiAxOyB0cmFjayBzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInN0YXR1c1wiPnt7IHN0YXR1cyB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItZW1haWwtYm90dG9tLWJhclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoaGFzQ29ubmVjdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGJsbC1mb290ZXItY29ubmVjdGlvbi1lcnJvclwiIGRhdGEtdGVzdGlkPVwiY29ubmVjdGlvbkVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aT5UaGVyZSB3YXMgYW4gZXJyb3Igc2VuZGluZyB5b3VyIGVtYWlsLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGlsbC1idG4tLWNvbXBvbmVudHNcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VuZEVtYWlsQnRuXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFNlbmRcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWZvb3Rlci1lbWFpbC1zdWNjZXNzXCIgZGF0YS10ZXN0aWQ9XCJzdWNjZXNzTWVzc2FnZVwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgWW91ciBlbWFpbCB3YXMgc2VudCBzdWNjZXNzZnVsbHkuIElmIHlvdSBzdXBwbGllZCB5b3VyIGVtYWlsIGFkZHJlc3MsIHdlIHdpbGwgZ2V0XG4gICAgICAgICAgICAgICAgYmFjayB0byB5b3Ugc2hvcnRseS48YnIgLz5UaGFuayB5b3UhXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGlsbC1idG4tLWNvbXBvbmVudHNcIiAoY2xpY2spPVwiZW1haWxEaWFsb2cuY2xvc2UoKVwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICBDbG9zZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGlhbG9nPlxuIl19
|