@pobuca/email-builder 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bundles/pobuca-email-builder.umd.js +4464 -4414
- package/bundles/pobuca-email-builder.umd.js.map +1 -1
- package/bundles/pobuca-email-builder.umd.min.js +1 -1
- package/bundles/pobuca-email-builder.umd.min.js.map +1 -1
- package/esm2015/lib/classes/DefaultEmail.js +54 -53
- package/esm2015/lib/classes/Elements.js +229 -229
- package/esm2015/lib/classes/Structure.js +89 -89
- package/esm2015/lib/components/block/block.component.js +89 -89
- package/esm2015/lib/components/block-settings/block-settings.component.js +53 -53
- package/esm2015/lib/components/builder-container/builder-container.component.js +114 -114
- package/esm2015/lib/components/dialog.component.js +30 -30
- package/esm2015/lib/components/general-settings/general-settings.component.js +25 -25
- package/esm2015/lib/components/import-dialog/import-dialog.component.js +62 -62
- package/esm2015/lib/components/preview.component.js +89 -89
- package/esm2015/lib/components/structure/structure.component.js +163 -163
- package/esm2015/lib/components/structure-settings/structure-settings.component.js +31 -31
- package/esm2015/lib/components/template-list-dialog/template-list-dialog.component.js +45 -45
- package/esm2015/lib/directives/dynamic-component.directive.js +46 -46
- package/esm2015/lib/elements/abstract-block.js +23 -23
- package/esm2015/lib/elements/button/button.component.js +29 -29
- package/esm2015/lib/elements/divider/divider.component.js +30 -30
- package/esm2015/lib/elements/image/image.component.js +54 -54
- package/esm2015/lib/elements/social/social.component.js +42 -42
- package/esm2015/lib/elements/spacer/spacer.component.js +30 -30
- package/esm2015/lib/elements/text-element/text-element.component.js +80 -80
- package/esm2015/lib/groups/align.js +79 -79
- package/esm2015/lib/groups/back-repeat.js +55 -55
- package/esm2015/lib/groups/border.js +102 -102
- package/esm2015/lib/groups/color.js +139 -139
- package/esm2015/lib/groups/direction.js +63 -63
- package/esm2015/lib/groups/font-styles.js +127 -112
- package/esm2015/lib/groups/gaps.js +45 -45
- package/esm2015/lib/groups/line-height.js +68 -68
- package/esm2015/lib/groups/link.js +67 -67
- package/esm2015/lib/groups/margin.js +45 -45
- package/esm2015/lib/groups/padding.js +53 -53
- package/esm2015/lib/groups/upload-image.js +112 -112
- package/esm2015/lib/groups/width-height.js +94 -94
- package/esm2015/lib/interceptors/pb-interceptor.interceptor.js +51 -51
- package/esm2015/lib/interfaces/interfaces.js +13 -13
- package/esm2015/lib/pb-email-builder.component.js +258 -246
- package/esm2015/lib/pb-email-builder.module.js +291 -291
- package/esm2015/lib/pb-email-builder.service.js +134 -134
- package/esm2015/lib/pipes/slugify.pipe.js +39 -39
- package/esm2015/lib/services/internals/pb-email-object-store/pb-email-object-store.service.js +175 -165
- package/esm2015/lib/services/internals/user-interfaces/user-interface.service.js +122 -122
- package/esm2015/lib/services/pb-storage/FreeUsersStorage.class.js +11 -11
- package/esm2015/lib/services/pb-storage/index.js +7 -7
- package/esm2015/lib/services/pb-storage/pb-storage.service.js +79 -79
- package/esm2015/lib/services/user-image-uploader-service/free-users-image-uploader.service.js +26 -26
- package/esm2015/lib/services/user-image-uploader-service/index.js +8 -8
- package/esm2015/lib/services/user-image-uploader-service/paid-users-image-uploader.service.js +30 -30
- package/esm2015/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.js +112 -112
- package/esm2015/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.js +91 -91
- package/esm2015/lib/services/user-image-uploader-service/user-image-uploader.service.js +26 -26
- package/esm2015/lib/services/user-middleware-service/FreeUsersMiddleware.js +31 -31
- package/esm2015/lib/services/user-middleware-service/PaidUsersMiddleware.js +12 -12
- package/esm2015/lib/services/user-middleware-service/index.js +8 -8
- package/esm2015/lib/services/user-middleware-service/pb-middlewares.service.js +195 -195
- package/esm2015/lib/services/user-rest-api-service/free-users-rest-api.service.js +16 -16
- package/esm2015/lib/services/user-rest-api-service/index.js +7 -7
- package/esm2015/lib/services/user-rest-api-service/user-rest-api.service.js +116 -116
- package/esm2015/lib/tokens/private-tokens.js +17 -17
- package/esm2015/lib/tokens/tokens.js +159 -159
- package/esm2015/lib/utils.js +147 -147
- package/esm2015/pobuca-email-builder.js +42 -42
- package/esm2015/public_api.js +26 -26
- package/fesm2015/pobuca-email-builder.js +4206 -4168
- package/fesm2015/pobuca-email-builder.js.map +1 -1
- package/lib/classes/DefaultEmail.d.ts +10 -9
- package/lib/classes/Elements.d.ts +62 -62
- package/lib/classes/Structure.d.ts +11 -11
- package/lib/components/block/block.component.d.ts +25 -25
- package/lib/components/block-settings/block-settings.component.d.ts +18 -18
- package/lib/components/builder-container/builder-container.component.d.ts +36 -36
- package/lib/components/dialog.component.d.ts +10 -10
- package/lib/components/general-settings/general-settings.component.d.ts +6 -6
- package/lib/components/import-dialog/import-dialog.component.d.ts +16 -16
- package/lib/components/preview.component.d.ts +18 -18
- package/lib/components/structure/structure.component.d.ts +43 -43
- package/lib/components/structure-settings/structure-settings.component.d.ts +9 -9
- package/lib/components/template-list-dialog/template-list-dialog.component.d.ts +15 -15
- package/lib/directives/dynamic-component.directive.d.ts +13 -13
- package/lib/elements/abstract-block.d.ts +8 -8
- package/lib/elements/button/button.component.d.ts +18 -18
- package/lib/elements/divider/divider.component.d.ts +10 -10
- package/lib/elements/image/image.component.d.ts +19 -19
- package/lib/elements/social/social.component.d.ts +21 -21
- package/lib/elements/spacer/spacer.component.d.ts +5 -5
- package/lib/elements/text-element/text-element.component.d.ts +52 -52
- package/lib/groups/align.d.ts +17 -17
- package/lib/groups/back-repeat.d.ts +8 -8
- package/lib/groups/border.d.ts +13 -13
- package/lib/groups/color.d.ts +26 -26
- package/lib/groups/direction.d.ts +13 -13
- package/lib/groups/font-styles.d.ts +21 -17
- package/lib/groups/gaps.d.ts +7 -7
- package/lib/groups/line-height.d.ts +12 -12
- package/lib/groups/link.d.ts +11 -11
- package/lib/groups/margin.d.ts +8 -8
- package/lib/groups/padding.d.ts +8 -8
- package/lib/groups/upload-image.d.ts +19 -19
- package/lib/groups/width-height.d.ts +19 -19
- package/lib/interceptors/pb-interceptor.interceptor.d.ts +10 -10
- package/lib/interfaces/interfaces.d.ts +430 -422
- package/lib/pb-email-builder.component.d.ts +67 -67
- package/lib/pb-email-builder.module.d.ts +51 -51
- package/lib/pb-email-builder.service.d.ts +83 -83
- package/lib/pipes/slugify.pipe.d.ts +9 -9
- package/lib/services/internals/pb-email-object-store/pb-email-object-store.service.d.ts +50 -50
- package/lib/services/internals/user-interfaces/user-interface.service.d.ts +46 -46
- package/lib/services/pb-storage/FreeUsersStorage.class.d.ts +6 -6
- package/lib/services/pb-storage/index.d.ts +2 -2
- package/lib/services/pb-storage/pb-storage.service.d.ts +54 -54
- package/lib/services/user-image-uploader-service/free-users-image-uploader.service.d.ts +12 -12
- package/lib/services/user-image-uploader-service/index.d.ts +3 -3
- package/lib/services/user-image-uploader-service/paid-users-image-uploader.service.d.ts +14 -14
- package/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.d.ts +28 -28
- package/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.d.ts +27 -27
- package/lib/services/user-image-uploader-service/user-image-uploader.service.d.ts +26 -26
- package/lib/services/user-middleware-service/FreeUsersMiddleware.d.ts +15 -15
- package/lib/services/user-middleware-service/PaidUsersMiddleware.d.ts +7 -7
- package/lib/services/user-middleware-service/index.d.ts +3 -3
- package/lib/services/user-middleware-service/pb-middlewares.service.d.ts +190 -190
- package/lib/services/user-rest-api-service/free-users-rest-api.service.d.ts +10 -10
- package/lib/services/user-rest-api-service/index.d.ts +2 -2
- package/lib/services/user-rest-api-service/user-rest-api.service.d.ts +82 -82
- package/lib/tokens/private-tokens.d.ts +5 -5
- package/lib/tokens/tokens.d.ts +70 -70
- package/lib/utils.d.ts +88 -88
- package/package.json +8 -3
- package/pobuca-email-builder.d.ts +42 -42
- package/pobuca-email-builder.metadata.json +1 -1
- package/public_api.d.ts +16 -16
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 Pobuca.
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
*/
|
|
5
|
-
import { ChangeDetectionStrategy, Component, HostListener, Input } from '@angular/core';
|
|
6
|
-
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
-
// import { PbEmailBuilderService } from '../pb-email-builder.service';
|
|
8
|
-
// import { parseColor } from '../utils';
|
|
9
|
-
export class ColorComponent {
|
|
10
|
-
constructor(emailObject) {
|
|
11
|
-
this.emailObject = emailObject;
|
|
12
|
-
this.disabled = false;
|
|
13
|
-
this.key = 'backgroundColor';
|
|
14
|
-
this.transparent = false;
|
|
15
|
-
this.showColorPicker = false;
|
|
16
|
-
}
|
|
17
|
-
get currentColorModel() {
|
|
18
|
-
return this.options[this.key];
|
|
19
|
-
}
|
|
20
|
-
set currentColorModel(hex) {
|
|
21
|
-
this.options[this.key] = hex;
|
|
22
|
-
}
|
|
23
|
-
get currentColor() {
|
|
24
|
-
return this.transparent ? this.oldValue : this.currentColorModel;
|
|
25
|
-
}
|
|
26
|
-
set currentColor(hex) {
|
|
27
|
-
this.currentColorModel = hex;
|
|
28
|
-
}
|
|
29
|
-
onHostMouseLeave() {
|
|
30
|
-
this.showColorPicker = false;
|
|
31
|
-
}
|
|
32
|
-
changeColor(event) {
|
|
33
|
-
this.currentColor = event.color.hex;
|
|
34
|
-
this.emailObject.markForCheck();
|
|
35
|
-
}
|
|
36
|
-
makeTransparentColor() {
|
|
37
|
-
this.showColorPicker = false;
|
|
38
|
-
if (this.transparent) {
|
|
39
|
-
this.oldValue = this.currentColorModel;
|
|
40
|
-
this.currentColor = 'transparent';
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
this.currentColor = this.oldValue;
|
|
44
|
-
}
|
|
45
|
-
this.emailObject.markForCheck();
|
|
46
|
-
}
|
|
47
|
-
ngOnInit() {
|
|
48
|
-
if (this.currentColor === 'transparent') {
|
|
49
|
-
this.transparent = true;
|
|
50
|
-
this.oldValue = '#ffffff';
|
|
51
|
-
}
|
|
52
|
-
// this.changeContrastColor();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
ColorComponent.decorators = [
|
|
56
|
-
{ type: Component, args: [{
|
|
57
|
-
selector: 'pb-color',
|
|
58
|
-
template: `
|
|
59
|
-
<div class="group" *ngIf="showTransparent">
|
|
60
|
-
<mat-slide-toggle
|
|
61
|
-
[disabled]="disabled"
|
|
62
|
-
[(ngModel)]="transparent"
|
|
63
|
-
(change)="makeTransparentColor()"
|
|
64
|
-
i18n="Color settings|Make color transparent"
|
|
65
|
-
>
|
|
66
|
-
Transparent
|
|
67
|
-
</mat-slide-toggle>
|
|
68
|
-
</div>
|
|
69
|
-
<div class="group two">
|
|
70
|
-
<mat-form-field appearance="outline">
|
|
71
|
-
<mat-label i18n="Color settings|Change color">Color</mat-label>
|
|
72
|
-
<input matInput [disabled]="transparent || disabled" (focus)="showColorPicker = false" [(ngModel)]="currentColor" type="text" />
|
|
73
|
-
</mat-form-field>
|
|
74
|
-
<div class="choose-color" [class.transparent]="transparent || disabled">
|
|
75
|
-
<div class="current-color" (mouseover)="showColorPicker = !transparent" [style.backgroundColor]="currentColor"></div>
|
|
76
|
-
<color-chrome
|
|
77
|
-
[disableAlpha]="true"
|
|
78
|
-
*ngIf="showColorPicker"
|
|
79
|
-
(onChangeComplete)="changeColor($event)"
|
|
80
|
-
[color]="currentColor"
|
|
81
|
-
></color-chrome>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
`,
|
|
85
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
86
|
-
styles: [`
|
|
87
|
-
:host {
|
|
88
|
-
display: block;
|
|
89
|
-
position: relative;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
mat-form-field {
|
|
93
|
-
width: 100%;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.choose-color {
|
|
97
|
-
display: block;
|
|
98
|
-
height: 100%;
|
|
99
|
-
width: 100%;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.current-color {
|
|
103
|
-
width: 100%;
|
|
104
|
-
height: 48px;
|
|
105
|
-
border-radius: 5px;
|
|
106
|
-
margin: 0.25em 0;
|
|
107
|
-
cursor: pointer;
|
|
108
|
-
display: flex;
|
|
109
|
-
align-items: center;
|
|
110
|
-
justify-content: center;
|
|
111
|
-
border: 1px solid rgba(0, 0, 0, 0.12);
|
|
112
|
-
transition: background-color 500ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.choose-color.transparent .current-color {
|
|
116
|
-
opacity: 0.5;
|
|
117
|
-
pointer-events: none;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
color-chrome {
|
|
121
|
-
position: absolute;
|
|
122
|
-
top: calc(100% - 1em);
|
|
123
|
-
right: 0;
|
|
124
|
-
z-index: 9;
|
|
125
|
-
}
|
|
126
|
-
`]
|
|
127
|
-
},] }
|
|
128
|
-
];
|
|
129
|
-
ColorComponent.ctorParameters = () => [
|
|
130
|
-
{ type: PbEmailObjectStoreService }
|
|
131
|
-
];
|
|
132
|
-
ColorComponent.propDecorators = {
|
|
133
|
-
options: [{ type: Input }],
|
|
134
|
-
showTransparent: [{ type: Input }],
|
|
135
|
-
disabled: [{ type: Input }],
|
|
136
|
-
key: [{ type: Input }],
|
|
137
|
-
onHostMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]
|
|
138
|
-
};
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectionStrategy, Component, HostListener, Input } from '@angular/core';
|
|
6
|
+
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
+
// import { PbEmailBuilderService } from '../pb-email-builder.service';
|
|
8
|
+
// import { parseColor } from '../utils';
|
|
9
|
+
export class ColorComponent {
|
|
10
|
+
constructor(emailObject) {
|
|
11
|
+
this.emailObject = emailObject;
|
|
12
|
+
this.disabled = false;
|
|
13
|
+
this.key = 'backgroundColor';
|
|
14
|
+
this.transparent = false;
|
|
15
|
+
this.showColorPicker = false;
|
|
16
|
+
}
|
|
17
|
+
get currentColorModel() {
|
|
18
|
+
return this.options[this.key];
|
|
19
|
+
}
|
|
20
|
+
set currentColorModel(hex) {
|
|
21
|
+
this.options[this.key] = hex;
|
|
22
|
+
}
|
|
23
|
+
get currentColor() {
|
|
24
|
+
return this.transparent ? this.oldValue : this.currentColorModel;
|
|
25
|
+
}
|
|
26
|
+
set currentColor(hex) {
|
|
27
|
+
this.currentColorModel = hex;
|
|
28
|
+
}
|
|
29
|
+
onHostMouseLeave() {
|
|
30
|
+
this.showColorPicker = false;
|
|
31
|
+
}
|
|
32
|
+
changeColor(event) {
|
|
33
|
+
this.currentColor = event.color.hex;
|
|
34
|
+
this.emailObject.markForCheck();
|
|
35
|
+
}
|
|
36
|
+
makeTransparentColor() {
|
|
37
|
+
this.showColorPicker = false;
|
|
38
|
+
if (this.transparent) {
|
|
39
|
+
this.oldValue = this.currentColorModel;
|
|
40
|
+
this.currentColor = 'transparent';
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.currentColor = this.oldValue;
|
|
44
|
+
}
|
|
45
|
+
this.emailObject.markForCheck();
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
if (this.currentColor === 'transparent') {
|
|
49
|
+
this.transparent = true;
|
|
50
|
+
this.oldValue = '#ffffff';
|
|
51
|
+
}
|
|
52
|
+
// this.changeContrastColor();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ColorComponent.decorators = [
|
|
56
|
+
{ type: Component, args: [{
|
|
57
|
+
selector: 'pb-color',
|
|
58
|
+
template: `
|
|
59
|
+
<div class="group" *ngIf="showTransparent">
|
|
60
|
+
<mat-slide-toggle
|
|
61
|
+
[disabled]="disabled"
|
|
62
|
+
[(ngModel)]="transparent"
|
|
63
|
+
(change)="makeTransparentColor()"
|
|
64
|
+
i18n="Color settings|Make color transparent"
|
|
65
|
+
>
|
|
66
|
+
Transparent
|
|
67
|
+
</mat-slide-toggle>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="group two">
|
|
70
|
+
<mat-form-field appearance="outline">
|
|
71
|
+
<mat-label i18n="Color settings|Change color">Color</mat-label>
|
|
72
|
+
<input matInput [disabled]="transparent || disabled" (focus)="showColorPicker = false" [(ngModel)]="currentColor" type="text" />
|
|
73
|
+
</mat-form-field>
|
|
74
|
+
<div class="choose-color" [class.transparent]="transparent || disabled">
|
|
75
|
+
<div class="current-color" (mouseover)="showColorPicker = !transparent" [style.backgroundColor]="currentColor"></div>
|
|
76
|
+
<color-chrome
|
|
77
|
+
[disableAlpha]="true"
|
|
78
|
+
*ngIf="showColorPicker"
|
|
79
|
+
(onChangeComplete)="changeColor($event)"
|
|
80
|
+
[color]="currentColor"
|
|
81
|
+
></color-chrome>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
`,
|
|
85
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
86
|
+
styles: [`
|
|
87
|
+
:host {
|
|
88
|
+
display: block;
|
|
89
|
+
position: relative;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
mat-form-field {
|
|
93
|
+
width: 100%;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.choose-color {
|
|
97
|
+
display: block;
|
|
98
|
+
height: 100%;
|
|
99
|
+
width: 100%;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.current-color {
|
|
103
|
+
width: 100%;
|
|
104
|
+
height: 48px;
|
|
105
|
+
border-radius: 5px;
|
|
106
|
+
margin: 0.25em 0;
|
|
107
|
+
cursor: pointer;
|
|
108
|
+
display: flex;
|
|
109
|
+
align-items: center;
|
|
110
|
+
justify-content: center;
|
|
111
|
+
border: 1px solid rgba(0, 0, 0, 0.12);
|
|
112
|
+
transition: background-color 500ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.choose-color.transparent .current-color {
|
|
116
|
+
opacity: 0.5;
|
|
117
|
+
pointer-events: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
color-chrome {
|
|
121
|
+
position: absolute;
|
|
122
|
+
top: calc(100% - 1em);
|
|
123
|
+
right: 0;
|
|
124
|
+
z-index: 9;
|
|
125
|
+
}
|
|
126
|
+
`]
|
|
127
|
+
},] }
|
|
128
|
+
];
|
|
129
|
+
ColorComponent.ctorParameters = () => [
|
|
130
|
+
{ type: PbEmailObjectStoreService }
|
|
131
|
+
];
|
|
132
|
+
ColorComponent.propDecorators = {
|
|
133
|
+
options: [{ type: Input }],
|
|
134
|
+
showTransparent: [{ type: Input }],
|
|
135
|
+
disabled: [{ type: Input }],
|
|
136
|
+
key: [{ type: Input }],
|
|
137
|
+
onHostMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUV0SCx1RUFBdUU7QUFDdkUseUNBQXlDO0FBNEV6QyxNQUFNLE9BQU8sY0FBYztJQVd6QixZQUFvQixXQUFzQztRQUF0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBMkI7UUFSakQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixRQUFHLEdBQWdDLGlCQUFpQixDQUFDO1FBRTlELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBSXFDLENBQUM7SUFFOUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxHQUFXO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRTJCLGdCQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxhQUFhLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDM0I7UUFDRCw4QkFBOEI7SUFDaEMsQ0FBQzs7O1lBaklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkE0Q3BCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBckU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdDQzthQThCSjs7O1lBOUVRLHlCQUF5Qjs7O3NCQWdGL0IsS0FBSzs4QkFDTCxLQUFLO3VCQUNMLEtBQUs7a0JBQ0wsS0FBSzsrQkF5QkwsWUFBWSxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxyXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb2xvckV2ZW50IH0gZnJvbSAnbmd4LWNvbG9yJztcclxuaW1wb3J0IHsgUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVybmFscy9wYi1lbWFpbC1vYmplY3Qtc3RvcmUvcGItZW1haWwtb2JqZWN0LXN0b3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUQmxvY2tzT3B0aW9ucyB9IGZyb20gJy4uL2NsYXNzZXMvRWxlbWVudHMnO1xyXG4vLyBpbXBvcnQgeyBQYkVtYWlsQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi9wYi1lbWFpbC1idWlsZGVyLnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBwYXJzZUNvbG9yIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYi1jb2xvcicsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgXHJcbiAgICAgIDpob3N0IHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hdC1mb3JtLWZpZWxkIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmNob29zZS1jb2xvciB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY3VycmVudC1jb2xvciB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgICAgICBtYXJnaW46IDAuMjVlbSAwO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDUwMG1zIGN1YmljLWJlemllcigwLjQ0NSwgMC4wNSwgMC41NSwgMC45NSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jaG9vc2UtY29sb3IudHJhbnNwYXJlbnQgLmN1cnJlbnQtY29sb3Ige1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29sb3ItY2hyb21lIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxZW0pO1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDk7XHJcbiAgICAgIH1cclxuICAgIGBcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiAqbmdJZj1cInNob3dUcmFuc3BhcmVudFwiPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJtYWtlVHJhbnNwYXJlbnRDb2xvcigpXCJcclxuICAgICAgICBpMThuPVwiQ29sb3Igc2V0dGluZ3N8TWFrZSBjb2xvciB0cmFuc3BhcmVudFwiXHJcbiAgICAgID5cclxuICAgICAgICBUcmFuc3BhcmVudFxyXG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJncm91cCB0d29cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPVwiQ29sb3Igc2V0dGluZ3N8Q2hhbmdlIGNvbG9yXCI+Q29sb3I8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Rpc2FibGVkXT1cInRyYW5zcGFyZW50IHx8IGRpc2FibGVkXCIgKGZvY3VzKT1cInNob3dDb2xvclBpY2tlciA9IGZhbHNlXCIgWyhuZ01vZGVsKV09XCJjdXJyZW50Q29sb3JcIiB0eXBlPVwidGV4dFwiIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjaG9vc2UtY29sb3JcIiBbY2xhc3MudHJhbnNwYXJlbnRdPVwidHJhbnNwYXJlbnQgfHwgZGlzYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VycmVudC1jb2xvclwiIChtb3VzZW92ZXIpPVwic2hvd0NvbG9yUGlja2VyID0gIXRyYW5zcGFyZW50XCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjdXJyZW50Q29sb3JcIj48L2Rpdj5cclxuICAgICAgICA8Y29sb3ItY2hyb21lXHJcbiAgICAgICAgICBbZGlzYWJsZUFscGhhXT1cInRydWVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93Q29sb3JQaWNrZXJcIlxyXG4gICAgICAgICAgKG9uQ2hhbmdlQ29tcGxldGUpPVwiY2hhbmdlQ29sb3IoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbY29sb3JdPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICA+PC9jb2xvci1jaHJvbWU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFRCbG9ja3NPcHRpb25zICYgeyBjb2xvcj86IHN0cmluZzsgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nIH07XHJcbiAgQElucHV0KCkgc2hvd1RyYW5zcGFyZW50OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkga2V5OiAnYmFja2dyb3VuZENvbG9yJyB8ICdjb2xvcicgPSAnYmFja2dyb3VuZENvbG9yJztcclxuXHJcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZTtcclxuICBzaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBvbGRWYWx1ZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxyXG5cclxuICBnZXQgY3VycmVudENvbG9yTW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMua2V5XTtcclxuICB9XHJcblxyXG4gIHNldCBjdXJyZW50Q29sb3JNb2RlbChoZXg6IHN0cmluZykge1xyXG4gICAgdGhpcy5vcHRpb25zW3RoaXMua2V5XSA9IGhleDtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50Q29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc3BhcmVudCA/IHRoaXMub2xkVmFsdWUgOiB0aGlzLmN1cnJlbnRDb2xvck1vZGVsO1xyXG4gIH1cclxuXHJcbiAgc2V0IGN1cnJlbnRDb2xvcihoZXg6IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50Q29sb3JNb2RlbCA9IGhleDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKSBvbkhvc3RNb3VzZUxlYXZlKCkge1xyXG4gICAgdGhpcy5zaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKGV2ZW50OiBDb2xvckV2ZW50KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRDb2xvciA9IGV2ZW50LmNvbG9yLmhleDtcclxuICAgIHRoaXMuZW1haWxPYmplY3QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBtYWtlVHJhbnNwYXJlbnRDb2xvcigpIHtcclxuICAgIHRoaXMuc2hvd0NvbG9yUGlja2VyID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy50cmFuc3BhcmVudCkge1xyXG4gICAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy5jdXJyZW50Q29sb3JNb2RlbDtcclxuICAgICAgdGhpcy5jdXJyZW50Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50Q29sb3IgPSB0aGlzLm9sZFZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudENvbG9yID09PSAndHJhbnNwYXJlbnQnKSB7XHJcbiAgICAgIHRoaXMudHJhbnNwYXJlbnQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9sZFZhbHVlID0gJyNmZmZmZmYnO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5jaGFuZ2VDb250cmFzdENvbG9yKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2024 Pobuca.
|
|
3
|
-
* All rights reserved.
|
|
4
|
-
*/
|
|
5
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
-
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
-
export class DirectionComponent {
|
|
8
|
-
constructor(emailObject) {
|
|
9
|
-
this.emailObject = emailObject;
|
|
10
|
-
this.dirLabels = new Map([
|
|
11
|
-
['ltr', $localize `:@@direction_ltr:Left to right`],
|
|
12
|
-
['rtl', $localize `:@@direction_rtl:Right to left`]
|
|
13
|
-
]);
|
|
14
|
-
}
|
|
15
|
-
markForCheck() {
|
|
16
|
-
this.emailObject.markForCheck();
|
|
17
|
-
}
|
|
18
|
-
getDirections() {
|
|
19
|
-
return ['ltr', 'rtl'];
|
|
20
|
-
}
|
|
21
|
-
getDirectionLabel(dir) {
|
|
22
|
-
return this.dirLabels.get(dir);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
DirectionComponent.decorators = [
|
|
26
|
-
{ type: Component, args: [{
|
|
27
|
-
selector: 'pb-direction',
|
|
28
|
-
template: `
|
|
29
|
-
<mat-form-field appearance="outline">
|
|
30
|
-
<mat-label i18n="settings|Direction">Direction</mat-label>
|
|
31
|
-
<mat-select
|
|
32
|
-
i18n-placeholder="settings|Direction"
|
|
33
|
-
placeholder="Direction"
|
|
34
|
-
[(value)]="model.direction"
|
|
35
|
-
(selectionChange)="markForCheck()"
|
|
36
|
-
disableRipple
|
|
37
|
-
>
|
|
38
|
-
<mat-option *ngFor="let dir of getDirections()" [value]="dir">
|
|
39
|
-
{{ getDirectionLabel(dir) }}
|
|
40
|
-
</mat-option>
|
|
41
|
-
</mat-select>
|
|
42
|
-
</mat-form-field>
|
|
43
|
-
`,
|
|
44
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
45
|
-
styles: [`
|
|
46
|
-
:host {
|
|
47
|
-
display: block;
|
|
48
|
-
width: 100%;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
mat-form-field {
|
|
52
|
-
width: 100%;
|
|
53
|
-
}
|
|
54
|
-
`]
|
|
55
|
-
},] }
|
|
56
|
-
];
|
|
57
|
-
DirectionComponent.ctorParameters = () => [
|
|
58
|
-
{ type: PbEmailObjectStoreService }
|
|
59
|
-
];
|
|
60
|
-
DirectionComponent.propDecorators = {
|
|
61
|
-
model: [{ type: Input }]
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
+
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
7
|
+
export class DirectionComponent {
|
|
8
|
+
constructor(emailObject) {
|
|
9
|
+
this.emailObject = emailObject;
|
|
10
|
+
this.dirLabels = new Map([
|
|
11
|
+
['ltr', $localize `:@@direction_ltr:Left to right`],
|
|
12
|
+
['rtl', $localize `:@@direction_rtl:Right to left`]
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
markForCheck() {
|
|
16
|
+
this.emailObject.markForCheck();
|
|
17
|
+
}
|
|
18
|
+
getDirections() {
|
|
19
|
+
return ['ltr', 'rtl'];
|
|
20
|
+
}
|
|
21
|
+
getDirectionLabel(dir) {
|
|
22
|
+
return this.dirLabels.get(dir);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
DirectionComponent.decorators = [
|
|
26
|
+
{ type: Component, args: [{
|
|
27
|
+
selector: 'pb-direction',
|
|
28
|
+
template: `
|
|
29
|
+
<mat-form-field appearance="outline">
|
|
30
|
+
<mat-label i18n="settings|Direction">Direction</mat-label>
|
|
31
|
+
<mat-select
|
|
32
|
+
i18n-placeholder="settings|Direction"
|
|
33
|
+
placeholder="Direction"
|
|
34
|
+
[(value)]="model.direction"
|
|
35
|
+
(selectionChange)="markForCheck()"
|
|
36
|
+
disableRipple
|
|
37
|
+
>
|
|
38
|
+
<mat-option *ngFor="let dir of getDirections()" [value]="dir">
|
|
39
|
+
{{ getDirectionLabel(dir) }}
|
|
40
|
+
</mat-option>
|
|
41
|
+
</mat-select>
|
|
42
|
+
</mat-form-field>
|
|
43
|
+
`,
|
|
44
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
45
|
+
styles: [`
|
|
46
|
+
:host {
|
|
47
|
+
display: block;
|
|
48
|
+
width: 100%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
mat-form-field {
|
|
52
|
+
width: 100%;
|
|
53
|
+
}
|
|
54
|
+
`]
|
|
55
|
+
},] }
|
|
56
|
+
];
|
|
57
|
+
DirectionComponent.ctorParameters = () => [
|
|
58
|
+
{ type: PbEmailObjectStoreService }
|
|
59
|
+
];
|
|
60
|
+
DirectionComponent.propDecorators = {
|
|
61
|
+
model: [{ type: Input }]
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2dyb3Vwcy9kaXJlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFrQ3RILE1BQU0sT0FBTyxrQkFBa0I7SUFVN0IsWUFBb0IsV0FBc0M7UUFBdEMsZ0JBQVcsR0FBWCxXQUFXLENBQTJCO1FBTGxELGNBQVMsR0FBd0IsSUFBSSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFBLGdDQUFnQyxDQUFDO1lBQ2xELENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQSxnQ0FBZ0MsQ0FBQztTQUNuRCxDQUFDLENBQUM7SUFFMEQsQ0FBQztJQUU5RCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQWU7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2dCQWFELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO3lCQVg3Qzs7Ozs7Ozs7O0tBU0M7YUFHSjs7O1lBakNRLHlCQUF5Qjs7O29CQW1DL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGItZGlyZWN0aW9uJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cInNldHRpbmdzfERpcmVjdGlvblwiPkRpcmVjdGlvbjwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgIGkxOG4tcGxhY2Vob2xkZXI9XCJzZXR0aW5nc3xEaXJlY3Rpb25cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRGlyZWN0aW9uXCJcclxuICAgICAgICBbKHZhbHVlKV09XCJtb2RlbC5kaXJlY3Rpb25cIlxyXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwibWFya0ZvckNoZWNrKClcIlxyXG4gICAgICAgIGRpc2FibGVSaXBwbGVcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkaXIgb2YgZ2V0RGlyZWN0aW9ucygpXCIgW3ZhbHVlXT1cImRpclwiPlxyXG4gICAgICAgICAge3sgZ2V0RGlyZWN0aW9uTGFiZWwoZGlyKSB9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICBgLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYFxyXG4gICAgICA6aG9zdCB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hdC1mb3JtLWZpZWxkIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgYFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbW9kZWw6IHtcclxuICAgIGRpcmVjdGlvbjogVERpcmVjdGlvbjtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGRpckxhYmVsczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoW1xyXG4gICAgWydsdHInLCAkbG9jYWxpemVgOkBAZGlyZWN0aW9uX2x0cjpMZWZ0IHRvIHJpZ2h0YF0sXHJcbiAgICBbJ3J0bCcsICRsb2NhbGl6ZWA6QEBkaXJlY3Rpb25fcnRsOlJpZ2h0IHRvIGxlZnRgXVxyXG4gIF0pO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxyXG5cclxuICBtYXJrRm9yQ2hlY2soKSB7XHJcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9ucygpOiBURGlyZWN0aW9uW10ge1xyXG4gICAgcmV0dXJuIFsnbHRyJywgJ3J0bCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9uTGFiZWwoZGlyOiBURGlyZWN0aW9uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRpckxhYmVscy5nZXQoZGlyKTtcclxuICB9XHJcbn1cclxuIl19
|