design-angular-kit 1.0.0-7 → 1.0.0-8
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/esm2020/lib/abstracts/abstract-form-component.mjs +6 -5
- package/esm2020/lib/abstracts/abstract.component.mjs +13 -6
- package/esm2020/lib/components/core/accordion/accordion.component.mjs +19 -8
- package/esm2020/lib/components/core/alert/alert.component.mjs +46 -6
- package/esm2020/lib/components/core/button/button.directive.mjs +14 -12
- package/esm2020/lib/components/core/carousel/carousel/carousel.component.mjs +3 -3
- package/esm2020/lib/components/core/collapse/collapse.component.mjs +23 -18
- package/esm2020/lib/components/core/dropdown/dropdown/dropdown.component.mjs +74 -4
- package/esm2020/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +8 -11
- package/esm2020/lib/components/core/link/link.component.mjs +9 -8
- package/esm2020/lib/components/core/modal/modal.component.mjs +5 -5
- package/esm2020/lib/components/core/popover/popover.directive.mjs +5 -2
- package/esm2020/lib/components/core/tab/tab-container/tab-container.component.mjs +37 -11
- package/esm2020/lib/components/core/tab/tab-item/tab-item.component.mjs +4 -4
- package/esm2020/lib/components/core/tooltip/tooltip.directive.mjs +4 -1
- package/esm2020/lib/components/form/input/input.component.mjs +2 -2
- package/esm2020/lib/components/form/password-input/password-input.component.mjs +1 -1
- package/esm2020/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +1 -1
- package/esm2020/lib/components/form/upload-file-list/upload-file-list.component.mjs +13 -10
- package/esm2020/lib/components/navigation/back-to-top/back-to-top.component.mjs +41 -6
- package/esm2020/lib/components/navigation/header/header.component.mjs +9 -7
- package/esm2020/lib/components/utils/language-switcher/language-switcher.component.mjs +1 -1
- package/esm2020/lib/utils/file-utils.mjs +9 -1
- package/fesm2015/design-angular-kit.mjs +416 -193
- package/fesm2015/design-angular-kit.mjs.map +1 -1
- package/fesm2020/design-angular-kit.mjs +395 -189
- package/fesm2020/design-angular-kit.mjs.map +1 -1
- package/lib/abstracts/abstract-form-component.d.ts +4 -3
- package/lib/abstracts/abstract.component.d.ts +10 -4
- package/lib/components/core/accordion/accordion.component.d.ts +4 -8
- package/lib/components/core/alert/alert.component.d.ts +24 -2
- package/lib/components/core/button/button.directive.d.ts +5 -7
- package/lib/components/core/carousel/carousel/carousel.component.d.ts +1 -1
- package/lib/components/core/collapse/collapse.component.d.ts +8 -7
- package/lib/components/core/dropdown/dropdown/dropdown.component.d.ts +41 -3
- package/lib/components/core/dropdown/dropdown-item/dropdown-item.component.d.ts +0 -5
- package/lib/components/core/link/link.component.d.ts +2 -5
- package/lib/components/core/modal/modal.component.d.ts +2 -2
- package/lib/components/core/popover/popover.directive.d.ts +3 -2
- package/lib/components/core/tab/tab-container/tab-container.component.d.ts +6 -4
- package/lib/components/core/tooltip/tooltip.directive.d.ts +3 -2
- package/lib/components/form/password-input/password-input.component.d.ts +2 -1
- package/lib/components/form/upload-drag-drop/upload-drag-drop.component.d.ts +2 -1
- package/lib/components/form/upload-file-list/upload-file-list.component.d.ts +3 -3
- package/lib/components/navigation/back-to-top/back-to-top.component.d.ts +22 -3
- package/lib/components/navigation/header/header.component.d.ts +6 -4
- package/lib/utils/file-utils.d.ts +5 -0
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { isTrueBooleanInput } from
|
|
3
|
-
import { AbstractComponent } from
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import { AbstractComponent } from '../../../abstracts/abstract.component';
|
|
4
|
+
import { BackToTop } from 'bootstrap-italia';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../../utils/icon/icon.component";
|
|
6
7
|
export class BackToTopComponent extends AbstractComponent {
|
|
@@ -21,12 +22,43 @@ export class BackToTopComponent extends AbstractComponent {
|
|
|
21
22
|
get isDark() {
|
|
22
23
|
return isTrueBooleanInput(this.dark);
|
|
23
24
|
}
|
|
25
|
+
ngAfterViewInit() {
|
|
26
|
+
super.ngAfterViewInit();
|
|
27
|
+
if (this.backToTopElement) {
|
|
28
|
+
const element = this.backToTopElement.nativeElement;
|
|
29
|
+
this.backToTop = BackToTop.getOrCreateInstance(element);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Show button
|
|
34
|
+
*/
|
|
35
|
+
show() {
|
|
36
|
+
this.backToTop?.show();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Hide the button
|
|
40
|
+
*/
|
|
41
|
+
hide() {
|
|
42
|
+
this.backToTop?.hide();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Activates the scroll animation towards the Y coordinate indicated by the positionTop option
|
|
46
|
+
*/
|
|
47
|
+
scrollToTop() {
|
|
48
|
+
this.backToTop?.scrollToTop();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Eliminate component features
|
|
52
|
+
*/
|
|
53
|
+
dispose() {
|
|
54
|
+
this.backToTop?.dispose();
|
|
55
|
+
}
|
|
24
56
|
}
|
|
25
57
|
BackToTopComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BackToTopComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
-
BackToTopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BackToTopComponent, selector: "it-back-to-top", inputs: { id: "id", small: "small", shadow: "shadow", dark: "dark" }, usesInheritance: true, ngImport: i0, template: "<a [id]=\"id\"\n href=\"#\"\n aria-hidden=\"true\"\n
|
|
58
|
+
BackToTopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: BackToTopComponent, selector: "it-back-to-top", inputs: { id: "id", small: "small", shadow: "shadow", dark: "dark" }, viewQueries: [{ propertyName: "backToTopElement", first: true, predicate: ["backToTop"], descendants: true }], exportAs: ["itBackToTop"], usesInheritance: true, ngImport: i0, template: "<a #backToTop [id]=\"id\"\n href=\"#\"\n aria-hidden=\"true\"\n class=\"back-to-top\"\n [class.back-to-top-small]=\"isSmall\"\n [class.shadow]=\"isShadow\"\n [class.dark]=\"isDark\">\n\n <it-icon name=\"arrow-up\" [color]=\"isDark ? 'secondary' : 'light'\"></it-icon>\n</a>\n", dependencies: [{ kind: "component", type: i1.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
27
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: BackToTopComponent, decorators: [{
|
|
28
60
|
type: Component,
|
|
29
|
-
args: [{ selector: 'it-back-to-top', template: "<a [id]=\"id\"\n href=\"#\"\n aria-hidden=\"true\"\n
|
|
61
|
+
args: [{ selector: 'it-back-to-top', exportAs: 'itBackToTop', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a #backToTop [id]=\"id\"\n href=\"#\"\n aria-hidden=\"true\"\n class=\"back-to-top\"\n [class.back-to-top-small]=\"isSmall\"\n [class.shadow]=\"isShadow\"\n [class.dark]=\"isDark\">\n\n <it-icon name=\"arrow-up\" [color]=\"isDark ? 'secondary' : 'light'\"></it-icon>\n</a>\n" }]
|
|
30
62
|
}], propDecorators: { id: [{
|
|
31
63
|
type: Input
|
|
32
64
|
}], small: [{
|
|
@@ -35,5 +67,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
35
67
|
type: Input
|
|
36
68
|
}], dark: [{
|
|
37
69
|
type: Input
|
|
70
|
+
}], backToTopElement: [{
|
|
71
|
+
type: ViewChild,
|
|
72
|
+
args: ['backToTop']
|
|
38
73
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay10by10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL2JhY2stdG8tdG9wL2JhY2stdG8tdG9wLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9iYWNrLXRvLXRvcC9iYWNrLXRvLXRvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBUTdDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFOekQ7O1FBUUU7OztXQUdHO1FBQ2UsT0FBRSxHQUFXLG9CQUFvQixDQUFDO0tBcUVyRDtJQWhEQyxJQUFJLE9BQU87UUFDVCxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFUSxlQUFlO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1lBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzVCLENBQUM7OytHQTFFVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2UkNYL0Isa1NBVUE7MkZEQ2Esa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGdCQUFnQixZQUVoQixhQUFhLG1CQUNOLHVCQUF1QixDQUFDLE1BQU07OEJBUTdCLEVBQUU7c0JBQW5CLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSTBCLGdCQUFnQjtzQkFBL0MsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWNrVG9Ub3AgfSBmcm9tICdib290c3RyYXAtaXRhbGlhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtYmFjay10by10b3AnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFjay10by10b3AuY29tcG9uZW50Lmh0bWwnLFxuICBleHBvcnRBczogJ2l0QmFja1RvVG9wJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFja1RvVG9wQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBUaGUgYmFjayB0byB0b3AgSURcbiAgICogQGRlZmF1bHQgJ2JhY2stdG8tdG9wLWJ1dHRvbidcbiAgICovXG4gIEBJbnB1dCgpIG92ZXJyaWRlIGlkOiBzdHJpbmcgPSAnYmFjay10by10b3AtYnV0dG9uJztcblxuICAvKipcbiAgICogU2hvdyBzbWFsbCBidXR0b25cbiAgICovXG4gIEBJbnB1dCgpIHNtYWxsPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBTaG93IHNoYWRvd1xuICAgKi9cbiAgQElucHV0KCkgc2hhZG93PzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBCdXR0b24gdXNhYmxlIGJ1dHRvbiBvbiBhIGRhcmsgYmFja2dyb3VuZFxuICAgKi9cbiAgQElucHV0KCkgZGFyaz86IEJvb2xlYW5JbnB1dDtcblxuICBwcml2YXRlIGJhY2tUb1RvcD86IEJhY2tUb1RvcDtcblxuICBAVmlld0NoaWxkKCdiYWNrVG9Ub3AnKSBwcml2YXRlIGJhY2tUb1RvcEVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxBbmNob3JFbGVtZW50PjtcblxuICBnZXQgaXNTbWFsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuc21hbGwpO1xuICB9XG5cbiAgZ2V0IGlzU2hhZG93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5zaGFkb3cpO1xuICB9XG5cbiAgZ2V0IGlzRGFyaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuZGFyayk7XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbiAgICBpZiAodGhpcy5iYWNrVG9Ub3BFbGVtZW50KSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5iYWNrVG9Ub3BFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB0aGlzLmJhY2tUb1RvcCA9IEJhY2tUb1RvcC5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGJ1dHRvblxuICAgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrVG9Ub3A/LnNob3coKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIHRoZSBidXR0b25cbiAgICovXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja1RvVG9wPy5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBzY3JvbGwgYW5pbWF0aW9uIHRvd2FyZHMgdGhlIFkgY29vcmRpbmF0ZSBpbmRpY2F0ZWQgYnkgdGhlIHBvc2l0aW9uVG9wIG9wdGlvblxuICAgKi9cbiAgcHVibGljIHNjcm9sbFRvVG9wKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja1RvVG9wPy5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmF0ZSBjb21wb25lbnQgZmVhdHVyZXNcbiAgICovXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja1RvVG9wPy5kaXNwb3NlKCk7XG4gIH1cbn1cbiIsIjxhICNiYWNrVG9Ub3AgW2lkXT1cImlkXCJcbiAgIGhyZWY9XCIjXCJcbiAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICBjbGFzcz1cImJhY2stdG8tdG9wXCJcbiAgIFtjbGFzcy5iYWNrLXRvLXRvcC1zbWFsbF09XCJpc1NtYWxsXCJcbiAgIFtjbGFzcy5zaGFkb3ddPVwiaXNTaGFkb3dcIlxuICAgW2NsYXNzLmRhcmtdPVwiaXNEYXJrXCI+XG5cbiAgPGl0LWljb24gbmFtZT1cImFycm93LXVwXCIgW2NvbG9yXT1cImlzRGFyayA/ICdzZWNvbmRhcnknIDogJ2xpZ2h0J1wiPjwvaXQtaWNvbj5cbjwvYT5cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { isTrueBooleanInput } from
|
|
3
|
-
import { AbstractComponent } from
|
|
2
|
+
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import { AbstractComponent } from '../../../abstracts/abstract.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/common";
|
|
6
6
|
import * as i2 from "../../core/button/button.directive";
|
|
@@ -11,11 +11,13 @@ export class HeaderComponent extends AbstractComponent {
|
|
|
11
11
|
* TODO: complete header
|
|
12
12
|
* @param _renderer
|
|
13
13
|
* @param _elementRef
|
|
14
|
+
* @param _changeDetectorRef
|
|
14
15
|
*/
|
|
15
|
-
constructor(_renderer, _elementRef) {
|
|
16
|
-
super(_renderer, _elementRef);
|
|
16
|
+
constructor(_renderer, _elementRef, _changeDetectorRef) {
|
|
17
|
+
super(_renderer, _elementRef, _changeDetectorRef);
|
|
17
18
|
this._renderer = _renderer;
|
|
18
19
|
this._elementRef = _elementRef;
|
|
20
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
19
21
|
this.showSlim = true;
|
|
20
22
|
this.loginStyle = 'full';
|
|
21
23
|
this.smallHeader = true;
|
|
@@ -36,12 +38,12 @@ export class HeaderComponent extends AbstractComponent {
|
|
|
36
38
|
return isTrueBooleanInput(this.showSearch);
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
|
-
HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HeaderComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
42
|
HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: HeaderComponent, selector: "it-header", inputs: { light: "light", showSlim: "showSlim", slimTitle: "slimTitle", loginStyle: "loginStyle", smallHeader: "smallHeader", showSearch: "showSearch" }, outputs: { loginClick: "loginClick", searchClick: "searchClick" }, usesInheritance: true, ngImport: i0, template: "<header class=\"it-header-wrapper\">\n <div *ngIf=\"isShowSlim\" class=\"it-header-slim-wrapper\" [class.theme-light]=\"isLight\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-slim-wrapper-content\">\n <a class=\"d-none d-lg-block navbar-brand\" href=\"#\">{{slimTitle}}</a>\n <div class=\"nav-mobile\">\n <nav [attr.aria-label]=\"'it.navigation.secondary-navigation'|translate\">\n <a class=\"it-opener d-lg-none\" data-bs-toggle=\"collapse\" href=\"#menuC1\" role=\"button\"\n aria-expanded=\"false\" aria-controls=\"menuC1\">\n <span>{{slimTitle}}</span>\n <it-icon name=\"expand\"></it-icon>\n </a>\n <div class=\"link-list-wrapper collapse\" id=\"menuC1\">\n <ng-content select=\"[slimLinkList]\"></ng-content>\n </div>\n </nav>\n </div>\n <div class=\"it-header-slim-right-zone\">\n <!-- TODO: add language dropdown -->\n <ng-content select=\"[slimRightZone]\"></ng-content>\n <div *ngIf=\"loginStyle === 'default'\" class=\"it-access-top-wrapper\">\n <a class=\"btn btn-primary btn-sm\" (click)=\"loginClick.emit($event)\">\n {{'it.navigation.login'|translate}}\n </a>\n </div>\n </div>\n <button *ngIf=\"loginStyle === 'full'\" itButton=\"primary\" class=\"btn-full\" (click)=\"loginClick.emit($event)\">\n <span class=\"rounded-icon\">\n <it-icon name=\"user\" color=\"primary\"></it-icon>\n <span class=\"d-none d-lg-block\">{{'it.navigation.full-login'|translate}}</span>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"it-nav-wrapper\">\n <div class=\"it-header-center-wrapper\" [class.it-small-header]=\"isSmallHeader\">\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-center-content-wrapper\">\n <div class=\"it-brand-wrapper\">\n <ng-content select=\"[brand]\"></ng-content>\n </div>\n <div class=\"it-right-zone\">\n <ng-content select=\"[rightZone]\"></ng-content>\n\n <div class=\"it-search-wrapper\" *ngIf=\"isShowSearch\">\n <span class=\"d-none d-md-block\">{{'it.navigation.search'|translate}}</span>\n <a class=\"search-link rounded-icon\" [attr.aria-label]=\"'it.navigation.website-search'|translate\" (click)=\"searchClick.emit($event)\">\n <it-icon name=\"search\"></it-icon>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- TODO: complete header -->\n </div>\n</header>\n", styles: [".nav-mobile:has(.link-list-wrapper:empty){display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[itButton]", inputs: ["itButton", "size", "block", "disabled"], exportAs: ["itButton"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "class"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
41
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
42
44
|
type: Component,
|
|
43
45
|
args: [{ selector: 'it-header', template: "<header class=\"it-header-wrapper\">\n <div *ngIf=\"isShowSlim\" class=\"it-header-slim-wrapper\" [class.theme-light]=\"isLight\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-slim-wrapper-content\">\n <a class=\"d-none d-lg-block navbar-brand\" href=\"#\">{{slimTitle}}</a>\n <div class=\"nav-mobile\">\n <nav [attr.aria-label]=\"'it.navigation.secondary-navigation'|translate\">\n <a class=\"it-opener d-lg-none\" data-bs-toggle=\"collapse\" href=\"#menuC1\" role=\"button\"\n aria-expanded=\"false\" aria-controls=\"menuC1\">\n <span>{{slimTitle}}</span>\n <it-icon name=\"expand\"></it-icon>\n </a>\n <div class=\"link-list-wrapper collapse\" id=\"menuC1\">\n <ng-content select=\"[slimLinkList]\"></ng-content>\n </div>\n </nav>\n </div>\n <div class=\"it-header-slim-right-zone\">\n <!-- TODO: add language dropdown -->\n <ng-content select=\"[slimRightZone]\"></ng-content>\n <div *ngIf=\"loginStyle === 'default'\" class=\"it-access-top-wrapper\">\n <a class=\"btn btn-primary btn-sm\" (click)=\"loginClick.emit($event)\">\n {{'it.navigation.login'|translate}}\n </a>\n </div>\n </div>\n <button *ngIf=\"loginStyle === 'full'\" itButton=\"primary\" class=\"btn-full\" (click)=\"loginClick.emit($event)\">\n <span class=\"rounded-icon\">\n <it-icon name=\"user\" color=\"primary\"></it-icon>\n <span class=\"d-none d-lg-block\">{{'it.navigation.full-login'|translate}}</span>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"it-nav-wrapper\">\n <div class=\"it-header-center-wrapper\" [class.it-small-header]=\"isSmallHeader\">\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"it-header-center-content-wrapper\">\n <div class=\"it-brand-wrapper\">\n <ng-content select=\"[brand]\"></ng-content>\n </div>\n <div class=\"it-right-zone\">\n <ng-content select=\"[rightZone]\"></ng-content>\n\n <div class=\"it-search-wrapper\" *ngIf=\"isShowSearch\">\n <span class=\"d-none d-md-block\">{{'it.navigation.search'|translate}}</span>\n <a class=\"search-link rounded-icon\" [attr.aria-label]=\"'it.navigation.website-search'|translate\" (click)=\"searchClick.emit($event)\">\n <it-icon name=\"search\"></it-icon>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- TODO: complete header -->\n </div>\n</header>\n", styles: [".nav-mobile:has(.link-list-wrapper:empty){display:none}\n"] }]
|
|
44
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { light: [{
|
|
46
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { light: [{
|
|
45
47
|
type: Input
|
|
46
48
|
}], showSlim: [{
|
|
47
49
|
type: Input
|
|
@@ -58,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
58
60
|
}], searchClick: [{
|
|
59
61
|
type: Output
|
|
60
62
|
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7O0FBTzFFLE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFpQjtJQWtCcEQ7Ozs7O09BS0c7SUFDSCxZQUM4QixTQUFvQixFQUNwQixXQUF1QixFQUN2QixrQkFBcUM7UUFFakUsS0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUp0QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUF2QjFELGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBSS9CLGVBQVUsR0FBZ0MsTUFBTSxDQUFDO1FBRWpELGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUVsQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQWtCeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7NEdBaERVLGVBQWU7Z0dBQWYsZUFBZSxxU0NUNUIsKy9GQW1FQTsyRkQxRGEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxXQUFXO3lKQU1aLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGxpZ2h0PzogQm9vbGVhbklucHV0O1xuXG4gIEBJbnB1dCgpIHNob3dTbGltPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzbGltVGl0bGU/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgbG9naW5TdHlsZTogJ25vbmUnIHwgJ2RlZmF1bHQnIHwgJ2Z1bGwnID0gJ2Z1bGwnO1xuXG4gIEBJbnB1dCgpIHNtYWxsSGVhZGVyPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzaG93U2VhcmNoPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgbG9naW5DbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PjtcblxuICBAT3V0cHV0KCkgc2VhcmNoQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD47XG5cbiAgLyoqXG4gICAqIFRPRE86IGNvbXBsZXRlIGhlYWRlclxuICAgKiBAcGFyYW0gX3JlbmRlcmVyXG4gICAqIEBwYXJhbSBfZWxlbWVudFJlZlxuICAgKiBAcGFyYW0gX2NoYW5nZURldGVjdG9yUmVmXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKF9yZW5kZXJlciwgX2VsZW1lbnRSZWYsIF9jaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgdGhpcy5sb2dpbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICB0aGlzLnNlYXJjaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgfVxuXG4gIGdldCBpc0xpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5saWdodCk7XG4gIH1cblxuICBnZXQgaXNTaG93U2xpbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuc2hvd1NsaW0pO1xuICB9XG5cbiAgZ2V0IGlzU21hbGxIZWFkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLnNtYWxsSGVhZGVyKTtcbiAgfVxuXG4gIGdldCBpc1Nob3dTZWFyY2goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLnNob3dTZWFyY2gpO1xuICB9XG5cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJpdC1oZWFkZXItd3JhcHBlclwiPlxuICA8ZGl2ICpuZ0lmPVwiaXNTaG93U2xpbVwiIGNsYXNzPVwiaXQtaGVhZGVyLXNsaW0td3JhcHBlclwiIFtjbGFzcy50aGVtZS1saWdodF09XCJpc0xpZ2h0XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIml0LWhlYWRlci1zbGltLXdyYXBwZXItY29udGVudFwiPlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkLW5vbmUgZC1sZy1ibG9jayBuYXZiYXItYnJhbmRcIiBocmVmPVwiI1wiPnt7c2xpbVRpdGxlfX08L2E+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LW1vYmlsZVwiPlxuICAgICAgICAgICAgICA8bmF2IFthdHRyLmFyaWEtbGFiZWxdPVwiJ2l0Lm5hdmlnYXRpb24uc2Vjb25kYXJ5LW5hdmlnYXRpb24nfHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiaXQtb3BlbmVyIGQtbGctbm9uZVwiIGRhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIiBocmVmPVwiI21lbnVDMVwiIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJtZW51QzFcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c2xpbVRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aXQtaWNvbiBuYW1lPVwiZXhwYW5kXCI+PC9pdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluay1saXN0LXdyYXBwZXIgY29sbGFwc2VcIiBpZD1cIm1lbnVDMVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NsaW1MaW5rTGlzdF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXQtaGVhZGVyLXNsaW0tcmlnaHQtem9uZVwiPlxuICAgICAgICAgICAgICA8IS0tIFRPRE86IGFkZCBsYW5ndWFnZSBkcm9wZG93biAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NsaW1SaWdodFpvbmVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9naW5TdHlsZSA9PT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJpdC1hY2Nlc3MtdG9wLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwibG9naW5DbGljay5lbWl0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIHt7J2l0Lm5hdmlnYXRpb24ubG9naW4nfHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImxvZ2luU3R5bGUgPT09ICdmdWxsJ1wiIGl0QnV0dG9uPVwicHJpbWFyeVwiIGNsYXNzPVwiYnRuLWZ1bGxcIiAoY2xpY2spPVwibG9naW5DbGljay5lbWl0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3VuZGVkLWljb25cIj5cbiAgICAgICAgICAgICAgICA8aXQtaWNvbiBuYW1lPVwidXNlclwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtbm9uZSBkLWxnLWJsb2NrXCI+e3snaXQubmF2aWdhdGlvbi5mdWxsLWxvZ2luJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaXQtbmF2LXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXQtaGVhZGVyLWNlbnRlci13cmFwcGVyXCIgW2NsYXNzLml0LXNtYWxsLWhlYWRlcl09XCJpc1NtYWxsSGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXQtaGVhZGVyLWNlbnRlci1jb250ZW50LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0LWJyYW5kLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnJhbmRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0LXJpZ2h0LXpvbmVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHRab25lXVwiPjwvbmctY29udGVudD5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdC1zZWFyY2gtd3JhcHBlclwiICpuZ0lmPVwiaXNTaG93U2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtbm9uZSBkLW1kLWJsb2NrXCI+e3snaXQubmF2aWdhdGlvbi5zZWFyY2gnfHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJzZWFyY2gtbGluayByb3VuZGVkLWljb25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidpdC5uYXZpZ2F0aW9uLndlYnNpdGUtc2VhcmNoJ3x0cmFuc2xhdGVcIiAoY2xpY2spPVwic2VhcmNoQ2xpY2suZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpdC1pY29uIG5hbWU9XCJzZWFyY2hcIj48L2l0LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFRPRE86IGNvbXBsZXRlIGhlYWRlciAtLT5cbiAgPC9kaXY+XG48L2hlYWRlcj5cbiJdfQ==
|
|
@@ -29,7 +29,7 @@ export class LanguageSwitcherComponent {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
LanguageSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
LanguageSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LanguageSwitcherComponent, selector: "it-language-switcher", inputs: { availableLanguages: "availableLanguages" }, ngImport: i0, template: "<it-dropdown id=\"language-switcher\">\n <ng-container button>\n <span class=\"visually-hidden\">{{'it.utils.selected' | translate: { lang: (currentLang$ | async)?.label } }}</span>\n <span>{{(currentLang$ | async)?.label || ('it.utils.select-language' | translate)}}</span>\n </ng-container>\n\n <ng-container list>\n <it-dropdown-item *ngFor=\"let lang of availableLanguages\" (click)=\"changeLanguage(lang.code)\"\n [active]=\"lang.code === (currentLang$ | async)?.code\">\n {{lang.label}}\n <span class=\"visually-hidden\" *ngIf=\"lang.code === (currentLang$ | async)?.code\">\n {{'it.utils.selected' | translate}}\n </span>\n </it-dropdown-item>\n </ng-container>\n</it-dropdown>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownComponent, selector: "it-dropdown[id]", inputs: ["color", "direction", "fullWidth", "dark"] }, { kind: "component", type: i4.DropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
32
|
+
LanguageSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LanguageSwitcherComponent, selector: "it-language-switcher", inputs: { availableLanguages: "availableLanguages" }, ngImport: i0, template: "<it-dropdown id=\"language-switcher\">\n <ng-container button>\n <span class=\"visually-hidden\">{{'it.utils.selected' | translate: { lang: (currentLang$ | async)?.label } }}</span>\n <span>{{(currentLang$ | async)?.label || ('it.utils.select-language' | translate)}}</span>\n </ng-container>\n\n <ng-container list>\n <it-dropdown-item *ngFor=\"let lang of availableLanguages\" (click)=\"changeLanguage(lang.code)\"\n [active]=\"lang.code === (currentLang$ | async)?.code\">\n {{lang.label}}\n <span class=\"visually-hidden\" *ngIf=\"lang.code === (currentLang$ | async)?.code\">\n {{'it.utils.selected' | translate}}\n </span>\n </it-dropdown-item>\n </ng-container>\n</it-dropdown>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownComponent, selector: "it-dropdown[id]", inputs: ["color", "direction", "fullWidth", "dark"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["itDropdown"] }, { kind: "component", type: i4.DropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
35
|
args: [{ selector: 'it-language-switcher', template: "<it-dropdown id=\"language-switcher\">\n <ng-container button>\n <span class=\"visually-hidden\">{{'it.utils.selected' | translate: { lang: (currentLang$ | async)?.label } }}</span>\n <span>{{(currentLang$ | async)?.label || ('it.utils.select-language' | translate)}}</span>\n </ng-container>\n\n <ng-container list>\n <it-dropdown-item *ngFor=\"let lang of availableLanguages\" (click)=\"changeLanguage(lang.code)\"\n [active]=\"lang.code === (currentLang$ | async)?.code\">\n {{lang.label}}\n <span class=\"visually-hidden\" *ngIf=\"lang.code === (currentLang$ | async)?.code\">\n {{'it.utils.selected' | translate}}\n </span>\n </it-dropdown-item>\n </ng-container>\n</it-dropdown>\n" }]
|
|
@@ -61,5 +61,13 @@ export class FileUtils {
|
|
|
61
61
|
const fileBlob = FileUtils.base64ToBlob(base64, mimeType);
|
|
62
62
|
return new File([fileBlob], filename, { type: mimeType });
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Extract the MIME type from base64 string
|
|
66
|
+
* @param base64 the base64 string
|
|
67
|
+
*/
|
|
68
|
+
static getMimeTypeFromBase64(base64) {
|
|
69
|
+
const mime = base64.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/);
|
|
70
|
+
return (mime && mime.length) ? mime[1] : undefined;
|
|
71
|
+
}
|
|
64
72
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL3V0aWxzL2ZpbGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxNQUFNLE9BQU8sU0FBUztJQUVwQjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQVUsRUFBRSxRQUFRLEdBQUcsQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUNYLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2YsTUFBTSxFQUFFLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQVU7UUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLE9BQU8sSUFBSSxVQUFVLENBQVMsUUFBUSxDQUFDLEVBQUU7WUFDdkMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxZQUFZLFdBQVcsRUFBRTtvQkFDckUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3pDO2dCQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDekQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQWMsRUFBRSxRQUFnQixFQUFFLFFBQWdCO1FBQzNFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLE1BQWM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBGaWxlVXRpbHMge1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGZpbGUgc2l6ZSBzdHJpbmdcbiAgICogQHBhcmFtIGZpbGUgdGhlIGZpbGVcbiAgICogQHBhcmFtIGRlY2ltYWxzIGRlY2ltYWwgdG8gc2hvd1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRGaWxlU2l6ZVN0cmluZyhmaWxlOiBGaWxlLCBkZWNpbWFscyA9IDIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJ5dGVzID0gZmlsZS5zaXplO1xuICAgIGlmICghK2J5dGVzKSB7XG4gICAgICByZXR1cm4gJzAgQnl0ZXMnO1xuICAgIH1cblxuICAgIGNvbnN0IGsgPSAxMDI0O1xuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPCAwID8gMCA6IGRlY2ltYWxzO1xuICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICAgIHJldHVybiBgJHtwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKGRtKSl9ICR7c2l6ZXNbaV19YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgZmlsZSB0byBiYXNlNjQgc3RyaW5nXG4gICAqIEBwYXJhbSBmaWxlIHRoZSBiYXNlNjQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbGVUb0Jhc2U2NChmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4ob2JzZXJ2ZXIgPT4ge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LnJlc3VsdCB8fCB0YXJnZXQucmVzdWx0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZXJyb3IoJ0Vycm9yIG9uIHBhcnNlJyk7XG4gICAgICAgIH1cbiAgICAgICAgb2JzZXJ2ZXIubmV4dCh0YXJnZXQucmVzdWx0KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGJhc2U2NCB0byBCbG9iXG4gICAqIEBwYXJhbSBiYXNlNjQgdGhlIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1wiPk1JTUUgdHlwZTwvYT4gKGV4YW1wbGUgJ2FwcGxpY2F0aW9uL3BkZicpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NFRvQmxvYihiYXNlNjQ6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IEJsb2Ige1xuICAgIGNvbnN0IGJ5dGVTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgICBjb25zdCBpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlU3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnQ4QXJyYXlbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQmxvYihbaW50OEFycmF5XSwgeyB0eXBlOiBtaW1lVHlwZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGJhc2U2NCB0byBGaWxlXG4gICAqIEBwYXJhbSBiYXNlNjQgdGhlIGJhc2U2NCBzdHJpbmdcbiAgICogQHBhcmFtIG1pbWVUeXBlIHRoZSA8YSBocmVmPVwiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1wiPk1JTUUgdHlwZTwvYT4gKGV4YW1wbGUgJ2FwcGxpY2F0aW9uL3BkZicpXG4gICAqIEBwYXJhbSBmaWxlbmFtZSB0aGUgZmlsZSBuYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NFRvRmlsZShiYXNlNjQ6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IEZpbGUge1xuICAgIGNvbnN0IGZpbGVCbG9iID0gRmlsZVV0aWxzLmJhc2U2NFRvQmxvYihiYXNlNjQsIG1pbWVUeXBlKTtcbiAgICByZXR1cm4gbmV3IEZpbGUoW2ZpbGVCbG9iXSwgZmlsZW5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCB0aGUgTUlNRSB0eXBlIGZyb20gYmFzZTY0IHN0cmluZ1xuICAgKiBAcGFyYW0gYmFzZTY0IHRoZSBiYXNlNjQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldE1pbWVUeXBlRnJvbUJhc2U2NChiYXNlNjQ6IHN0cmluZyk6IHN0cmluZ3x1bmRlZmluZWQge1xuICAgIGNvbnN0IG1pbWUgPSBiYXNlNjQubWF0Y2goL2RhdGE6KFthLXpBLVowLTldK1xcL1thLXpBLVowLTktLitdKykuKiwuKi8pO1xuICAgIHJldHVybiAobWltZSAmJiBtaW1lLmxlbmd0aCkgPyBtaW1lWzFdIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|