@pobuca/email-builder 1.0.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 -0
- package/assets/icons/dribbble.png +0 -0
- package/assets/icons/facebook.png +0 -0
- package/assets/icons/github.png +0 -0
- package/assets/icons/instagram.png +0 -0
- package/assets/icons/linkedin.png +0 -0
- package/assets/icons/medium.png +0 -0
- package/assets/icons/pinterest.png +0 -0
- package/assets/icons/snapchat.png +0 -0
- package/assets/icons/soundcloud.png +0 -0
- package/assets/icons/tumblr.png +0 -0
- package/assets/icons/twitter.png +0 -0
- package/assets/icons/vimeo.png +0 -0
- package/assets/icons/web.png +0 -0
- package/assets/icons/xing.png +0 -0
- package/assets/icons/youtube.png +0 -0
- package/bundles/pobuca-email-builder.umd.js +4664 -0
- package/bundles/pobuca-email-builder.umd.js.map +1 -0
- package/bundles/pobuca-email-builder.umd.min.js +2 -0
- package/bundles/pobuca-email-builder.umd.min.js.map +1 -0
- package/esm2015/lib/classes/DefaultEmail.js +53 -0
- package/esm2015/lib/classes/Elements.js +229 -0
- package/esm2015/lib/classes/Structure.js +89 -0
- package/esm2015/lib/components/block/block.component.js +89 -0
- package/esm2015/lib/components/block-settings/block-settings.component.js +53 -0
- package/esm2015/lib/components/builder-container/builder-container.component.js +114 -0
- package/esm2015/lib/components/dialog.component.js +30 -0
- package/esm2015/lib/components/general-settings/general-settings.component.js +25 -0
- package/esm2015/lib/components/import-dialog/import-dialog.component.js +62 -0
- package/esm2015/lib/components/preview.component.js +89 -0
- package/esm2015/lib/components/structure/structure.component.js +163 -0
- package/esm2015/lib/components/structure-settings/structure-settings.component.js +31 -0
- package/esm2015/lib/components/template-list-dialog/template-list-dialog.component.js +45 -0
- package/esm2015/lib/directives/dynamic-component.directive.js +46 -0
- package/esm2015/lib/elements/abstract-block.js +23 -0
- package/esm2015/lib/elements/button/button.component.js +29 -0
- package/esm2015/lib/elements/divider/divider.component.js +30 -0
- package/esm2015/lib/elements/image/image.component.js +54 -0
- package/esm2015/lib/elements/social/social.component.js +42 -0
- package/esm2015/lib/elements/spacer/spacer.component.js +30 -0
- package/esm2015/lib/elements/text-element/text-element.component.js +80 -0
- package/esm2015/lib/groups/align.js +79 -0
- package/esm2015/lib/groups/back-repeat.js +55 -0
- package/esm2015/lib/groups/border.js +102 -0
- package/esm2015/lib/groups/color.js +139 -0
- package/esm2015/lib/groups/direction.js +63 -0
- package/esm2015/lib/groups/font-styles.js +112 -0
- package/esm2015/lib/groups/gaps.js +45 -0
- package/esm2015/lib/groups/line-height.js +68 -0
- package/esm2015/lib/groups/link.js +67 -0
- package/esm2015/lib/groups/margin.js +45 -0
- package/esm2015/lib/groups/padding.js +53 -0
- package/esm2015/lib/groups/upload-image.js +112 -0
- package/esm2015/lib/groups/width-height.js +94 -0
- package/esm2015/lib/interceptors/pb-interceptor.interceptor.js +51 -0
- package/esm2015/lib/interfaces/interfaces.js +13 -0
- package/esm2015/lib/pb-email-builder.component.js +246 -0
- package/esm2015/lib/pb-email-builder.module.js +291 -0
- package/esm2015/lib/pb-email-builder.service.js +134 -0
- package/esm2015/lib/pipes/slugify.pipe.js +39 -0
- package/esm2015/lib/services/internals/pb-email-object-store/pb-email-object-store.service.js +165 -0
- package/esm2015/lib/services/internals/user-interfaces/user-interface.service.js +122 -0
- package/esm2015/lib/services/pb-storage/FreeUsersStorage.class.js +11 -0
- package/esm2015/lib/services/pb-storage/index.js +7 -0
- package/esm2015/lib/services/pb-storage/pb-storage.service.js +79 -0
- package/esm2015/lib/services/user-image-uploader-service/free-users-image-uploader.service.js +26 -0
- package/esm2015/lib/services/user-image-uploader-service/index.js +8 -0
- package/esm2015/lib/services/user-image-uploader-service/paid-users-image-uploader.service.js +30 -0
- package/esm2015/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.js +112 -0
- package/esm2015/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.js +91 -0
- package/esm2015/lib/services/user-image-uploader-service/user-image-uploader.service.js +26 -0
- package/esm2015/lib/services/user-middleware-service/FreeUsersMiddleware.js +31 -0
- package/esm2015/lib/services/user-middleware-service/PaidUsersMiddleware.js +12 -0
- package/esm2015/lib/services/user-middleware-service/index.js +8 -0
- package/esm2015/lib/services/user-middleware-service/pb-middlewares.service.js +195 -0
- package/esm2015/lib/services/user-rest-api-service/free-users-rest-api.service.js +16 -0
- package/esm2015/lib/services/user-rest-api-service/index.js +7 -0
- package/esm2015/lib/services/user-rest-api-service/user-rest-api.service.js +116 -0
- package/esm2015/lib/tokens/private-tokens.js +17 -0
- package/esm2015/lib/tokens/tokens.js +159 -0
- package/esm2015/lib/utils.js +147 -0
- package/esm2015/pobuca-email-builder.js +43 -0
- package/esm2015/public_api.js +26 -0
- package/fesm2015/pobuca-email-builder.js +4335 -0
- package/fesm2015/pobuca-email-builder.js.map +1 -0
- package/lib/classes/DefaultEmail.d.ts +9 -0
- package/lib/classes/Elements.d.ts +62 -0
- package/lib/classes/Structure.d.ts +11 -0
- package/lib/components/block/block.component.d.ts +25 -0
- package/lib/components/block-settings/block-settings.component.d.ts +18 -0
- package/lib/components/builder-container/builder-container.component.d.ts +36 -0
- package/lib/components/dialog.component.d.ts +10 -0
- package/lib/components/general-settings/general-settings.component.d.ts +6 -0
- package/lib/components/import-dialog/import-dialog.component.d.ts +16 -0
- package/lib/components/preview.component.d.ts +18 -0
- package/lib/components/structure/structure.component.d.ts +43 -0
- package/lib/components/structure-settings/structure-settings.component.d.ts +9 -0
- package/lib/components/template-list-dialog/template-list-dialog.component.d.ts +15 -0
- package/lib/directives/dynamic-component.directive.d.ts +13 -0
- package/lib/elements/abstract-block.d.ts +8 -0
- package/lib/elements/button/button.component.d.ts +18 -0
- package/lib/elements/divider/divider.component.d.ts +10 -0
- package/lib/elements/image/image.component.d.ts +19 -0
- package/lib/elements/social/social.component.d.ts +21 -0
- package/lib/elements/spacer/spacer.component.d.ts +5 -0
- package/lib/elements/text-element/text-element.component.d.ts +52 -0
- package/lib/groups/align.d.ts +17 -0
- package/lib/groups/back-repeat.d.ts +8 -0
- package/lib/groups/border.d.ts +13 -0
- package/lib/groups/color.d.ts +26 -0
- package/lib/groups/direction.d.ts +13 -0
- package/lib/groups/font-styles.d.ts +17 -0
- package/lib/groups/gaps.d.ts +7 -0
- package/lib/groups/line-height.d.ts +12 -0
- package/lib/groups/link.d.ts +11 -0
- package/lib/groups/margin.d.ts +8 -0
- package/lib/groups/padding.d.ts +8 -0
- package/lib/groups/upload-image.d.ts +19 -0
- package/lib/groups/width-height.d.ts +19 -0
- package/lib/interceptors/pb-interceptor.interceptor.d.ts +10 -0
- package/lib/interfaces/interfaces.d.ts +422 -0
- package/lib/pb-email-builder.component.d.ts +67 -0
- package/lib/pb-email-builder.module.d.ts +51 -0
- package/lib/pb-email-builder.service.d.ts +83 -0
- package/lib/pipes/slugify.pipe.d.ts +9 -0
- package/lib/services/internals/pb-email-object-store/pb-email-object-store.service.d.ts +50 -0
- package/lib/services/internals/user-interfaces/user-interface.service.d.ts +46 -0
- package/lib/services/pb-storage/FreeUsersStorage.class.d.ts +6 -0
- package/lib/services/pb-storage/index.d.ts +2 -0
- package/lib/services/pb-storage/pb-storage.service.d.ts +54 -0
- package/lib/services/user-image-uploader-service/free-users-image-uploader.service.d.ts +12 -0
- package/lib/services/user-image-uploader-service/index.d.ts +3 -0
- package/lib/services/user-image-uploader-service/paid-users-image-uploader.service.d.ts +14 -0
- package/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.d.ts +28 -0
- package/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.d.ts +27 -0
- package/lib/services/user-image-uploader-service/user-image-uploader.service.d.ts +26 -0
- package/lib/services/user-middleware-service/FreeUsersMiddleware.d.ts +15 -0
- package/lib/services/user-middleware-service/PaidUsersMiddleware.d.ts +7 -0
- package/lib/services/user-middleware-service/index.d.ts +3 -0
- package/lib/services/user-middleware-service/pb-middlewares.service.d.ts +190 -0
- package/lib/services/user-rest-api-service/free-users-rest-api.service.d.ts +10 -0
- package/lib/services/user-rest-api-service/index.d.ts +2 -0
- package/lib/services/user-rest-api-service/user-rest-api.service.d.ts +82 -0
- package/lib/tokens/private-tokens.d.ts +5 -0
- package/lib/tokens/tokens.d.ts +70 -0
- package/lib/utils.d.ts +88 -0
- package/package.json +37 -0
- package/pobuca-email-builder.d.ts +42 -0
- package/pobuca-email-builder.metadata.json +1 -0
- package/public_api.d.ts +16 -0
|
@@ -0,0 +1,79 @@
|
|
|
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 AlignComponent {
|
|
8
|
+
constructor(emailObject) {
|
|
9
|
+
this.emailObject = emailObject;
|
|
10
|
+
this.mode = 'horizontal';
|
|
11
|
+
this.labels = new Map([
|
|
12
|
+
['left', $localize `:@@horizontal_align_left:Left`],
|
|
13
|
+
['center', $localize `:@@horizontal_align_center:Center`],
|
|
14
|
+
['right', $localize `:@@horizontal_align_right:Right`],
|
|
15
|
+
['top', $localize `:@@vertical_align_top:Top`],
|
|
16
|
+
['middle', $localize `:@@vertical_align_middle:Middle`],
|
|
17
|
+
['bottom', $localize `:@@vertical_align_bottom:Bottom`]
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
get currentModel() {
|
|
21
|
+
return this.model.align || this.model.verticalAlign;
|
|
22
|
+
}
|
|
23
|
+
set currentModel(value) {
|
|
24
|
+
if (this.model.align) {
|
|
25
|
+
this.model.align = value;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.model.verticalAlign = value;
|
|
29
|
+
}
|
|
30
|
+
this.emailObject.markForCheck();
|
|
31
|
+
}
|
|
32
|
+
getLabel(key) {
|
|
33
|
+
return this.labels.get(key);
|
|
34
|
+
}
|
|
35
|
+
getPositions() {
|
|
36
|
+
if (this.mode === 'vertical') {
|
|
37
|
+
return ['top', 'middle', 'bottom'];
|
|
38
|
+
}
|
|
39
|
+
return ['left', 'center', 'right'];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
AlignComponent.decorators = [
|
|
43
|
+
{ type: Component, args: [{
|
|
44
|
+
selector: 'pb-align',
|
|
45
|
+
template: `
|
|
46
|
+
<mat-form-field appearance="outline">
|
|
47
|
+
<mat-label [ngSwitch]="mode">
|
|
48
|
+
<ng-container *ngSwitchCase="'vertical'" i18n="Align Settings|Vertical Align">Vertical Align</ng-container>
|
|
49
|
+
<ng-container *ngSwitchDefault i18n="Align Settings|Align">Align</ng-container>
|
|
50
|
+
</mat-label>
|
|
51
|
+
<mat-select [(ngModel)]="currentModel" disableRipple [disabled]="disabled">
|
|
52
|
+
<mat-option *ngFor="let position of getPositions()" [value]="position">
|
|
53
|
+
{{ getLabel(position) }}
|
|
54
|
+
</mat-option>
|
|
55
|
+
</mat-select>
|
|
56
|
+
</mat-form-field>
|
|
57
|
+
`,
|
|
58
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
59
|
+
styles: [`
|
|
60
|
+
:host {
|
|
61
|
+
display: block;
|
|
62
|
+
width: 100%;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
mat-form-field {
|
|
66
|
+
width: 100%;
|
|
67
|
+
}
|
|
68
|
+
`]
|
|
69
|
+
},] }
|
|
70
|
+
];
|
|
71
|
+
AlignComponent.ctorParameters = () => [
|
|
72
|
+
{ type: PbEmailObjectStoreService }
|
|
73
|
+
];
|
|
74
|
+
AlignComponent.propDecorators = {
|
|
75
|
+
model: [{ type: Input }],
|
|
76
|
+
mode: [{ type: Input }],
|
|
77
|
+
disabled: [{ type: Input }]
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2FsaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBK0J0SCxNQUFNLE9BQU8sY0FBYztJQWN6QixZQUFvQixXQUFzQztRQUF0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBMkI7UUFaakQsU0FBSSxHQUE4QixZQUFZLENBQUM7UUFHaEQsV0FBTSxHQUFHLElBQUksR0FBRyxDQUFrQztZQUN4RCxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUEsK0JBQStCLENBQUM7WUFDbEQsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLG1DQUFtQyxDQUFDO1lBQ3hELENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQSxpQ0FBaUMsQ0FBQztZQUNyRCxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUEsMkJBQTJCLENBQUM7WUFDN0MsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLGlDQUFpQyxDQUFDO1lBQ3RELENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQSxpQ0FBaUMsQ0FBQztTQUN2RCxDQUFDLENBQUM7SUFFMEQsQ0FBQztJQUU5RCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxLQUE4QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQWUsQ0FBQztTQUNwQzthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBdUIsQ0FBQztTQUNwRDtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUE0QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUM1QixPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OztZQW5FRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7O0dBWVQ7Z0JBYUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBWDdDOzs7Ozs7Ozs7S0FTQzthQUdKOzs7WUE5QlEseUJBQXlCOzs7b0JBZ0MvQixLQUFLO21CQUNMLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVEFsaWduLCBUVmVydGljYWxBbGlnbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJuYWxzL3BiLWVtYWlsLW9iamVjdC1zdG9yZS9wYi1lbWFpbC1vYmplY3Qtc3RvcmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BiLWFsaWduJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgIDxtYXQtbGFiZWwgW25nU3dpdGNoXT1cIm1vZGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3ZlcnRpY2FsJ1wiIGkxOG49XCJBbGlnbiBTZXR0aW5nc3xWZXJ0aWNhbCBBbGlnblwiPlZlcnRpY2FsIEFsaWduPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdCBpMThuPVwiQWxpZ24gU2V0dGluZ3N8QWxpZ25cIj5BbGlnbjwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cImN1cnJlbnRNb2RlbFwiIGRpc2FibGVSaXBwbGUgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBwb3NpdGlvbiBvZiBnZXRQb3NpdGlvbnMoKVwiIFt2YWx1ZV09XCJwb3NpdGlvblwiPlxuICAgICAgICAgIHt7IGdldExhYmVsKHBvc2l0aW9uKSB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIG1hdC1mb3JtLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgYFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBbGlnbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGVsOiB7IGFsaWduPzogVEFsaWduOyB2ZXJ0aWNhbEFsaWduPzogVFZlcnRpY2FsQWxpZ24gfTtcbiAgQElucHV0KCkgbW9kZTogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyA9ICdob3Jpem9udGFsJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBsYWJlbHMgPSBuZXcgTWFwPFRBbGlnbiB8IFRWZXJ0aWNhbEFsaWduLCBzdHJpbmc+KFtcbiAgICBbJ2xlZnQnLCAkbG9jYWxpemVgOkBAaG9yaXpvbnRhbF9hbGlnbl9sZWZ0OkxlZnRgXSxcbiAgICBbJ2NlbnRlcicsICRsb2NhbGl6ZWA6QEBob3Jpem9udGFsX2FsaWduX2NlbnRlcjpDZW50ZXJgXSxcbiAgICBbJ3JpZ2h0JywgJGxvY2FsaXplYDpAQGhvcml6b250YWxfYWxpZ25fcmlnaHQ6UmlnaHRgXSxcbiAgICBbJ3RvcCcsICRsb2NhbGl6ZWA6QEB2ZXJ0aWNhbF9hbGlnbl90b3A6VG9wYF0sXG4gICAgWydtaWRkbGUnLCAkbG9jYWxpemVgOkBAdmVydGljYWxfYWxpZ25fbWlkZGxlOk1pZGRsZWBdLFxuICAgIFsnYm90dG9tJywgJGxvY2FsaXplYDpAQHZlcnRpY2FsX2FsaWduX2JvdHRvbTpCb3R0b21gXVxuICBdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxuXG4gIGdldCBjdXJyZW50TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwuYWxpZ24gfHwgdGhpcy5tb2RlbC52ZXJ0aWNhbEFsaWduO1xuICB9XG5cbiAgc2V0IGN1cnJlbnRNb2RlbCh2YWx1ZTogVEFsaWduIHwgVFZlcnRpY2FsQWxpZ24pIHtcbiAgICBpZiAodGhpcy5tb2RlbC5hbGlnbikge1xuICAgICAgdGhpcy5tb2RlbC5hbGlnbiA9IHZhbHVlIGFzIFRBbGlnbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb2RlbC52ZXJ0aWNhbEFsaWduID0gdmFsdWUgYXMgVFZlcnRpY2FsQWxpZ247XG4gICAgfVxuICAgIHRoaXMuZW1haWxPYmplY3QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXRMYWJlbChrZXk6IFRBbGlnbiB8IFRWZXJ0aWNhbEFsaWduKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHMuZ2V0KGtleSk7XG4gIH1cblxuICBnZXRQb3NpdGlvbnMoKTogVEFsaWduW10gfCBUVmVydGljYWxBbGlnbltdIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAndmVydGljYWwnKSB7XG4gICAgICByZXR1cm4gWyd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbSddO1xuICAgIH1cbiAgICByZXR1cm4gWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
6
|
+
export class BackRepatComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.disabled = false;
|
|
9
|
+
this.repeatLabels = new Map([
|
|
10
|
+
['no-repeat', $localize `:@@no_repeat:No`],
|
|
11
|
+
['repeat', $localize `:@@repeat:Repeat`],
|
|
12
|
+
['repeat-x', $localize `:@@repeat_x:X`],
|
|
13
|
+
['repeat-y', $localize `:@@repeat_y:Y`],
|
|
14
|
+
['round', $localize `:@@repeat_round:Round`],
|
|
15
|
+
['space', $localize `:@@repeat_space:Space`]
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
getRepeats() {
|
|
19
|
+
return ['no-repeat', 'repeat', 'repeat-x', 'repeat-y'];
|
|
20
|
+
}
|
|
21
|
+
getRepeatLabel(repeat) {
|
|
22
|
+
return this.repeatLabels.get(repeat);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
BackRepatComponent.decorators = [
|
|
26
|
+
{ type: Component, args: [{
|
|
27
|
+
selector: 'pb-back-repeat',
|
|
28
|
+
template: `
|
|
29
|
+
<mat-form-field appearance="outline">
|
|
30
|
+
<mat-label i18n="settings|Background Repeat">Repeat</mat-label>
|
|
31
|
+
<mat-select [(value)]="model.repeat" [disabled]="disabled" disableRipple>
|
|
32
|
+
<mat-option *ngFor="let repeat of getRepeats()" [value]="repeat">
|
|
33
|
+
{{ getRepeatLabel(repeat) }}
|
|
34
|
+
</mat-option>
|
|
35
|
+
</mat-select>
|
|
36
|
+
</mat-form-field>
|
|
37
|
+
`,
|
|
38
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
39
|
+
styles: [`
|
|
40
|
+
:host {
|
|
41
|
+
display: block;
|
|
42
|
+
width: 100%;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
mat-form-field {
|
|
46
|
+
width: 100%;
|
|
47
|
+
}
|
|
48
|
+
`]
|
|
49
|
+
},] }
|
|
50
|
+
];
|
|
51
|
+
BackRepatComponent.propDecorators = {
|
|
52
|
+
model: [{ type: Input }],
|
|
53
|
+
disabled: [{ type: Input }]
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1yZXBlYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2JhY2stcmVwZWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNkIxRSxNQUFNLE9BQU8sa0JBQWtCO0lBMUIvQjtRQTRCVyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDN0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFBLGlCQUFpQixDQUFDO1lBQ3pDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQSxrQkFBa0IsQ0FBQztZQUN2QyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUEsZUFBZSxDQUFDO1lBQ3RDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQSxlQUFlLENBQUM7WUFDdEMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFBLHVCQUF1QixDQUFDO1lBQzNDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQSx1QkFBdUIsQ0FBQztTQUM1QyxDQUFDLENBQUM7SUFTTCxDQUFDO0lBUEMsVUFBVTtRQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXlCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7O1lBN0NGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO2dCQWFELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO3lCQVg3Qzs7Ozs7Ozs7O0tBU0M7YUFHSjs7O29CQUVFLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUJhY2tncm91bmQsIFRCYWNrZ3JvdW5kUmVwZWF0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGItYmFjay1yZXBlYXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwic2V0dGluZ3N8QmFja2dyb3VuZCBSZXBlYXRcIj5SZXBlYXQ8L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IFsodmFsdWUpXT1cIm1vZGVsLnJlcGVhdFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByZXBlYXQgb2YgZ2V0UmVwZWF0cygpXCIgW3ZhbHVlXT1cInJlcGVhdFwiPlxuICAgICAgICAgIHt7IGdldFJlcGVhdExhYmVsKHJlcGVhdCkgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBtYXQtZm9ybS1maWVsZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGBcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFja1JlcGF0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbW9kZWw6IElCYWNrZ3JvdW5kO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVwZWF0TGFiZWxzID0gbmV3IE1hcChbXG4gICAgWyduby1yZXBlYXQnLCAkbG9jYWxpemVgOkBAbm9fcmVwZWF0Ok5vYF0sXG4gICAgWydyZXBlYXQnLCAkbG9jYWxpemVgOkBAcmVwZWF0OlJlcGVhdGBdLFxuICAgIFsncmVwZWF0LXgnLCAkbG9jYWxpemVgOkBAcmVwZWF0X3g6WGBdLFxuICAgIFsncmVwZWF0LXknLCAkbG9jYWxpemVgOkBAcmVwZWF0X3k6WWBdLFxuICAgIFsncm91bmQnLCAkbG9jYWxpemVgOkBAcmVwZWF0X3JvdW5kOlJvdW5kYF0sXG4gICAgWydzcGFjZScsICRsb2NhbGl6ZWA6QEByZXBlYXRfc3BhY2U6U3BhY2VgXVxuICBdKTtcblxuICBnZXRSZXBlYXRzKCk6IFRCYWNrZ3JvdW5kUmVwZWF0W10ge1xuICAgIHJldHVybiBbJ25vLXJlcGVhdCcsICdyZXBlYXQnLCAncmVwZWF0LXgnLCAncmVwZWF0LXknXTtcbiAgfVxuXG4gIGdldFJlcGVhdExhYmVsKHJlcGVhdDogVEJhY2tncm91bmRSZXBlYXQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlcGVhdExhYmVscy5nZXQocmVwZWF0KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,102 @@
|
|
|
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 BorderComponent {
|
|
8
|
+
constructor(emailObject) {
|
|
9
|
+
this.emailObject = emailObject;
|
|
10
|
+
this._styleLabels = new Map([
|
|
11
|
+
['solid', $localize `:@@border_style_solid:Solid`],
|
|
12
|
+
['dotted', $localize `:@@border_style_dotted:Dotted`],
|
|
13
|
+
['dashed', $localize `:@@border_style_dashed:Dashed`],
|
|
14
|
+
['double', $localize `:@@border_style_double:Double`],
|
|
15
|
+
['groove', $localize `:@@border_style_groove:Groove`]
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
get styleLabels() {
|
|
19
|
+
return [...this._styleLabels.keys()];
|
|
20
|
+
}
|
|
21
|
+
getStyleLabel(style) {
|
|
22
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
23
|
+
return this._styleLabels.get(style);
|
|
24
|
+
}
|
|
25
|
+
markForCheck() {
|
|
26
|
+
this.emailObject.markForCheck();
|
|
27
|
+
}
|
|
28
|
+
isEven() {
|
|
29
|
+
return Object.keys(this.border).length % 2 === 0;
|
|
30
|
+
}
|
|
31
|
+
hasOwnProperty(property) {
|
|
32
|
+
return this.border.hasOwnProperty(property);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
BorderComponent.decorators = [
|
|
36
|
+
{ type: Component, args: [{
|
|
37
|
+
selector: 'pb-border',
|
|
38
|
+
template: `
|
|
39
|
+
<div class="group" [class.three]="isEven()">
|
|
40
|
+
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('width')">
|
|
41
|
+
<mat-label i18n="Border Settings|Change Border Width">Width</mat-label>
|
|
42
|
+
<input
|
|
43
|
+
matInput
|
|
44
|
+
[(ngModel)]="border.width"
|
|
45
|
+
type="number"
|
|
46
|
+
min="0"
|
|
47
|
+
step="1"
|
|
48
|
+
(input)="markForCheck()"
|
|
49
|
+
i18n-placeholder
|
|
50
|
+
placeholder="Border Settings|Change Border Width"
|
|
51
|
+
/>
|
|
52
|
+
</mat-form-field>
|
|
53
|
+
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('radius')">
|
|
54
|
+
<mat-label i18n="Border Settings|Change Border Radius">Radius</mat-label>
|
|
55
|
+
<input
|
|
56
|
+
matInput
|
|
57
|
+
[(ngModel)]="border.radius"
|
|
58
|
+
type="number"
|
|
59
|
+
min="0"
|
|
60
|
+
step="1"
|
|
61
|
+
(input)="markForCheck()"
|
|
62
|
+
i18n-placeholder
|
|
63
|
+
placeholder="Border Settings|Change Border Radius"
|
|
64
|
+
/>
|
|
65
|
+
</mat-form-field>
|
|
66
|
+
<mat-form-field appearance="outline" *ngIf="hasOwnProperty('style')" style="min-width: 90px">
|
|
67
|
+
<mat-label i18n="Border Settings|Change Border Style">Style</mat-label>
|
|
68
|
+
<mat-select
|
|
69
|
+
placeholder="Style"
|
|
70
|
+
[disabled]="!border.width"
|
|
71
|
+
[(value)]="border.style"
|
|
72
|
+
(selectionChange)="markForCheck()"
|
|
73
|
+
disableRipple
|
|
74
|
+
>
|
|
75
|
+
<mat-option *ngFor="let style of styleLabels" [value]="style">
|
|
76
|
+
{{ getStyleLabel(style) }}
|
|
77
|
+
</mat-option>
|
|
78
|
+
</mat-select>
|
|
79
|
+
</mat-form-field>
|
|
80
|
+
</div>
|
|
81
|
+
<pb-color [options]="border" [disabled]="!border.width" *ngIf="hasOwnProperty('color')" key="color"></pb-color>
|
|
82
|
+
`,
|
|
83
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
84
|
+
styles: [`
|
|
85
|
+
:host {
|
|
86
|
+
display: block;
|
|
87
|
+
width: 100%;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
mat-form-field {
|
|
91
|
+
width: 100%;
|
|
92
|
+
}
|
|
93
|
+
`]
|
|
94
|
+
},] }
|
|
95
|
+
];
|
|
96
|
+
BorderComponent.ctorParameters = () => [
|
|
97
|
+
{ type: PbEmailObjectStoreService }
|
|
98
|
+
];
|
|
99
|
+
BorderComponent.propDecorators = {
|
|
100
|
+
border: [{ type: Input }]
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2dyb3Vwcy9ib3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUErRHRILE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQW9CLFdBQXNDO1FBQXRDLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtRQUVsRCxpQkFBWSxHQUFHLElBQUksR0FBRyxDQUEyQjtZQUN2RCxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUEsNkJBQTZCLENBQUM7WUFDakQsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLCtCQUErQixDQUFDO1lBQ3BELENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQSwrQkFBK0IsQ0FBQztZQUNwRCxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUEsK0JBQStCLENBQUM7WUFDcEQsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFBLCtCQUErQixDQUFDO1NBQ3JELENBQUMsQ0FBQztJQVIwRCxDQUFDO0lBVTlELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXVCO1FBQ25DLGlEQUFpRDtRQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OztZQTdGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q1Q7Z0JBYUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBWDdDOzs7Ozs7Ozs7S0FTQzthQUdKOzs7WUE5RFEseUJBQXlCOzs7cUJBZ0UvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQm9yZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGItYm9yZGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiBbY2xhc3MudGhyZWVdPVwiaXNFdmVuKClcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiaGFzT3duUHJvcGVydHkoJ3dpZHRoJylcIj5cbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPVwiQm9yZGVyIFNldHRpbmdzfENoYW5nZSBCb3JkZXIgV2lkdGhcIj5XaWR0aDwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYm9yZGVyLndpZHRoXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgKGlucHV0KT1cIm1hcmtGb3JDaGVjaygpXCJcbiAgICAgICAgICBpMThuLXBsYWNlaG9sZGVyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJCb3JkZXIgU2V0dGluZ3N8Q2hhbmdlIEJvcmRlciBXaWR0aFwiXG4gICAgICAgIC8+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJoYXNPd25Qcm9wZXJ0eSgncmFkaXVzJylcIj5cbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPVwiQm9yZGVyIFNldHRpbmdzfENoYW5nZSBCb3JkZXIgUmFkaXVzXCI+UmFkaXVzPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJib3JkZXIucmFkaXVzXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgKGlucHV0KT1cIm1hcmtGb3JDaGVjaygpXCJcbiAgICAgICAgICBpMThuLXBsYWNlaG9sZGVyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJCb3JkZXIgU2V0dGluZ3N8Q2hhbmdlIEJvcmRlciBSYWRpdXNcIlxuICAgICAgICAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiaGFzT3duUHJvcGVydHkoJ3N0eWxlJylcIiBzdHlsZT1cIm1pbi13aWR0aDogOTBweFwiPlxuICAgICAgICA8bWF0LWxhYmVsIGkxOG49XCJCb3JkZXIgU2V0dGluZ3N8Q2hhbmdlIEJvcmRlciBTdHlsZVwiPlN0eWxlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTdHlsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFib3JkZXIud2lkdGhcIlxuICAgICAgICAgIFsodmFsdWUpXT1cImJvcmRlci5zdHlsZVwiXG4gICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJtYXJrRm9yQ2hlY2soKVwiXG4gICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHN0eWxlIG9mIHN0eWxlTGFiZWxzXCIgW3ZhbHVlXT1cInN0eWxlXCI+XG4gICAgICAgICAgICB7eyBnZXRTdHlsZUxhYmVsKHN0eWxlKSB9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8cGItY29sb3IgW29wdGlvbnNdPVwiYm9yZGVyXCIgW2Rpc2FibGVkXT1cIiFib3JkZXIud2lkdGhcIiAqbmdJZj1cImhhc093blByb3BlcnR5KCdjb2xvcicpXCIga2V5PVwiY29sb3JcIj48L3BiLWNvbG9yPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgbWF0LWZvcm0tZmllbGQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICBgXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJvcmRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGJvcmRlcjogSUJvcmRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxuXG4gIHByaXZhdGUgX3N0eWxlTGFiZWxzID0gbmV3IE1hcDxJQm9yZGVyWydzdHlsZSddLCBzdHJpbmc+KFtcbiAgICBbJ3NvbGlkJywgJGxvY2FsaXplYDpAQGJvcmRlcl9zdHlsZV9zb2xpZDpTb2xpZGBdLFxuICAgIFsnZG90dGVkJywgJGxvY2FsaXplYDpAQGJvcmRlcl9zdHlsZV9kb3R0ZWQ6RG90dGVkYF0sXG4gICAgWydkYXNoZWQnLCAkbG9jYWxpemVgOkBAYm9yZGVyX3N0eWxlX2Rhc2hlZDpEYXNoZWRgXSxcbiAgICBbJ2RvdWJsZScsICRsb2NhbGl6ZWA6QEBib3JkZXJfc3R5bGVfZG91YmxlOkRvdWJsZWBdLFxuICAgIFsnZ3Jvb3ZlJywgJGxvY2FsaXplYDpAQGJvcmRlcl9zdHlsZV9ncm9vdmU6R3Jvb3ZlYF1cbiAgXSk7XG5cbiAgZ2V0IHN0eWxlTGFiZWxzKCk6IElCb3JkZXJbJ3N0eWxlJ11bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9zdHlsZUxhYmVscy5rZXlzKCldO1xuICB9XG5cbiAgZ2V0U3R5bGVMYWJlbChzdHlsZTogSUJvcmRlclsnc3R5bGUnXSk6IHN0cmluZyB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHJldHVybiB0aGlzLl9zdHlsZUxhYmVscy5nZXQoc3R5bGUpITtcbiAgfVxuXG4gIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgaXNFdmVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmJvcmRlcikubGVuZ3RoICUgMiA9PT0gMDtcbiAgfVxuXG4gIGhhc093blByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ib3JkZXIuaGFzT3duUHJvcGVydHkocHJvcGVydHkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUV0SCx1RUFBdUU7QUFDdkUseUNBQXlDO0FBNEV6QyxNQUFNLE9BQU8sY0FBYztJQVd6QixZQUFvQixXQUFzQztRQUF0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBMkI7UUFSakQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixRQUFHLEdBQWdDLGlCQUFpQixDQUFDO1FBRTlELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBSXFDLENBQUM7SUFFOUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxHQUFXO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRTJCLGdCQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxhQUFhLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDM0I7UUFDRCw4QkFBOEI7SUFDaEMsQ0FBQzs7O1lBaklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkE0Q3BCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBckU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdDQzthQThCSjs7O1lBOUVRLHlCQUF5Qjs7O3NCQWdGL0IsS0FBSzs4QkFDTCxLQUFLO3VCQUNMLEtBQUs7a0JBQ0wsS0FBSzsrQkF5QkwsWUFBWSxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xvckV2ZW50IH0gZnJvbSAnbmd4LWNvbG9yJztcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRCbG9ja3NPcHRpb25zIH0gZnJvbSAnLi4vY2xhc3Nlcy9FbGVtZW50cyc7XG4vLyBpbXBvcnQgeyBQYkVtYWlsQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi9wYi1lbWFpbC1idWlsZGVyLnNlcnZpY2UnO1xuLy8gaW1wb3J0IHsgcGFyc2VDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGItY29sb3InLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG5cbiAgICAgIG1hdC1mb3JtLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jaG9vc2UtY29sb3Ige1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmN1cnJlbnQtY29sb3Ige1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIG1hcmdpbjogMC4yNWVtIDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgNTAwbXMgY3ViaWMtYmV6aWVyKDAuNDQ1LCAwLjA1LCAwLjU1LCAwLjk1KTtcbiAgICAgIH1cblxuICAgICAgLmNob29zZS1jb2xvci50cmFuc3BhcmVudCAuY3VycmVudC1jb2xvciB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIGNvbG9yLWNocm9tZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxZW0pO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogOTtcbiAgICAgIH1cbiAgICBgXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwXCIgKm5nSWY9XCJzaG93VHJhbnNwYXJlbnRcIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAoY2hhbmdlKT1cIm1ha2VUcmFuc3BhcmVudENvbG9yKClcIlxuICAgICAgICBpMThuPVwiQ29sb3Igc2V0dGluZ3N8TWFrZSBjb2xvciB0cmFuc3BhcmVudFwiXG4gICAgICA+XG4gICAgICAgIFRyYW5zcGFyZW50XG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyb3VwIHR3b1wiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cIkNvbG9yIHNldHRpbmdzfENoYW5nZSBjb2xvclwiPkNvbG9yPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZGlzYWJsZWRdPVwidHJhbnNwYXJlbnQgfHwgZGlzYWJsZWRcIiAoZm9jdXMpPVwic2hvd0NvbG9yUGlja2VyID0gZmFsc2VcIiBbKG5nTW9kZWwpXT1cImN1cnJlbnRDb2xvclwiIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hvb3NlLWNvbG9yXCIgW2NsYXNzLnRyYW5zcGFyZW50XT1cInRyYW5zcGFyZW50IHx8IGRpc2FibGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50LWNvbG9yXCIgKG1vdXNlb3Zlcik9XCJzaG93Q29sb3JQaWNrZXIgPSAhdHJhbnNwYXJlbnRcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImN1cnJlbnRDb2xvclwiPjwvZGl2PlxuICAgICAgICA8Y29sb3ItY2hyb21lXG4gICAgICAgICAgW2Rpc2FibGVBbHBoYV09XCJ0cnVlXCJcbiAgICAgICAgICAqbmdJZj1cInNob3dDb2xvclBpY2tlclwiXG4gICAgICAgICAgKG9uQ2hhbmdlQ29tcGxldGUpPVwiY2hhbmdlQ29sb3IoJGV2ZW50KVwiXG4gICAgICAgICAgW2NvbG9yXT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgID48L2NvbG9yLWNocm9tZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb2xvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IFRCbG9ja3NPcHRpb25zICYgeyBjb2xvcj86IHN0cmluZzsgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nIH07XG4gIEBJbnB1dCgpIHNob3dUcmFuc3BhcmVudDogYm9vbGVhbjtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkga2V5OiAnYmFja2dyb3VuZENvbG9yJyB8ICdjb2xvcicgPSAnYmFja2dyb3VuZENvbG9yJztcblxuICB0cmFuc3BhcmVudCA9IGZhbHNlO1xuICBzaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcblxuICBwcml2YXRlIG9sZFZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbWFpbE9iamVjdDogUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSkge31cblxuICBnZXQgY3VycmVudENvbG9yTW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLmtleV07XG4gIH1cblxuICBzZXQgY3VycmVudENvbG9yTW9kZWwoaGV4OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wdGlvbnNbdGhpcy5rZXldID0gaGV4O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDb2xvcigpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc3BhcmVudCA/IHRoaXMub2xkVmFsdWUgOiB0aGlzLmN1cnJlbnRDb2xvck1vZGVsO1xuICB9XG5cbiAgc2V0IGN1cnJlbnRDb2xvcihoZXg6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudENvbG9yTW9kZWwgPSBoZXg7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Ib3N0TW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLnNob3dDb2xvclBpY2tlciA9IGZhbHNlO1xuICB9XG5cbiAgY2hhbmdlQ29sb3IoZXZlbnQ6IENvbG9yRXZlbnQpIHtcbiAgICB0aGlzLmN1cnJlbnRDb2xvciA9IGV2ZW50LmNvbG9yLmhleDtcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFrZVRyYW5zcGFyZW50Q29sb3IoKSB7XG4gICAgdGhpcy5zaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy50cmFuc3BhcmVudCkge1xuICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMuY3VycmVudENvbG9yTW9kZWw7XG4gICAgICB0aGlzLmN1cnJlbnRDb2xvciA9ICd0cmFuc3BhcmVudCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudENvbG9yID0gdGhpcy5vbGRWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRDb2xvciA9PT0gJ3RyYW5zcGFyZW50Jykge1xuICAgICAgdGhpcy50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgICB0aGlzLm9sZFZhbHVlID0gJyNmZmZmZmYnO1xuICAgIH1cbiAgICAvLyB0aGlzLmNoYW5nZUNvbnRyYXN0Q29sb3IoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2dyb3Vwcy9kaXJlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFrQ3RILE1BQU0sT0FBTyxrQkFBa0I7SUFVN0IsWUFBb0IsV0FBc0M7UUFBdEMsZ0JBQVcsR0FBWCxXQUFXLENBQTJCO1FBTGxELGNBQVMsR0FBd0IsSUFBSSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFBLGdDQUFnQyxDQUFDO1lBQ2xELENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQSxnQ0FBZ0MsQ0FBQztTQUNuRCxDQUFDLENBQUM7SUFFMEQsQ0FBQztJQUU5RCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQWU7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2dCQWFELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO3lCQVg3Qzs7Ozs7Ozs7O0tBU0M7YUFHSjs7O1lBakNRLHlCQUF5Qjs7O29CQW1DL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJuYWxzL3BiLWVtYWlsLW9iamVjdC1zdG9yZS9wYi1lbWFpbC1vYmplY3Qtc3RvcmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BiLWRpcmVjdGlvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICA8bWF0LWxhYmVsIGkxOG49XCJzZXR0aW5nc3xEaXJlY3Rpb25cIj5EaXJlY3Rpb248L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGkxOG4tcGxhY2Vob2xkZXI9XCJzZXR0aW5nc3xEaXJlY3Rpb25cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRpcmVjdGlvblwiXG4gICAgICAgIFsodmFsdWUpXT1cIm1vZGVsLmRpcmVjdGlvblwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwibWFya0ZvckNoZWNrKClcIlxuICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkaXIgb2YgZ2V0RGlyZWN0aW9ucygpXCIgW3ZhbHVlXT1cImRpclwiPlxuICAgICAgICAgIHt7IGdldERpcmVjdGlvbkxhYmVsKGRpcikgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBtYXQtZm9ybS1maWVsZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGBcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbW9kZWw6IHtcbiAgICBkaXJlY3Rpb246IFREaXJlY3Rpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBkaXJMYWJlbHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKFtcbiAgICBbJ2x0cicsICRsb2NhbGl6ZWA6QEBkaXJlY3Rpb25fbHRyOkxlZnQgdG8gcmlnaHRgXSxcbiAgICBbJ3J0bCcsICRsb2NhbGl6ZWA6QEBkaXJlY3Rpb25fcnRsOlJpZ2h0IHRvIGxlZnRgXVxuICBdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxuXG4gIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0RGlyZWN0aW9ucygpOiBURGlyZWN0aW9uW10ge1xuICAgIHJldHVybiBbJ2x0cicsICdydGwnXTtcbiAgfVxuXG4gIGdldERpcmVjdGlvbkxhYmVsKGRpcjogVERpcmVjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlyTGFiZWxzLmdldChkaXIpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';
|
|
6
|
+
import { PB_FALLBACK_FONTS, PB_GOOGLE_FONTS } from '../tokens/tokens';
|
|
7
|
+
import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
8
|
+
export class FontStylesComponent {
|
|
9
|
+
constructor(pbEmailObject, googleFonts, fallbackFonts) {
|
|
10
|
+
this.pbEmailObject = pbEmailObject;
|
|
11
|
+
this.fallbackFonts = fallbackFonts;
|
|
12
|
+
this.fontsMap = new Map();
|
|
13
|
+
this.stylesMap = new Map([
|
|
14
|
+
['normal', $localize `:@@font_style_normal:Normal`],
|
|
15
|
+
['italic', $localize `:@@font_style_italic:Italic`],
|
|
16
|
+
['oblique', $localize `:@@font_style_oblique:Oblique`]
|
|
17
|
+
]);
|
|
18
|
+
googleFonts.forEach(font => {
|
|
19
|
+
const [family, ...weights] = font.match(/[^\d:,]{2,}|\d{3}/g);
|
|
20
|
+
this.fontsMap.set(family.replace('+', ' '), [...new Set(weights.map(Number))]);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get fontWeightList() {
|
|
24
|
+
return this.isGoogleFont() ? this.fontsMap.get(this.font.family) : [100, 400, 500, 700, 900];
|
|
25
|
+
}
|
|
26
|
+
get fontFamilyList() {
|
|
27
|
+
return [...this.fontsMap.keys(), ...this.fallbackFonts];
|
|
28
|
+
}
|
|
29
|
+
get styles() {
|
|
30
|
+
return [...this.stylesMap.keys()];
|
|
31
|
+
}
|
|
32
|
+
markForCheck() {
|
|
33
|
+
this.pbEmailObject.markForCheck();
|
|
34
|
+
}
|
|
35
|
+
isGoogleFont() {
|
|
36
|
+
return this.fontsMap.has(this.font.family);
|
|
37
|
+
}
|
|
38
|
+
getStyleLabel(style) {
|
|
39
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
40
|
+
return this.stylesMap.get(style);
|
|
41
|
+
}
|
|
42
|
+
hasProperty(property) {
|
|
43
|
+
return this.font.hasOwnProperty(property);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
FontStylesComponent.decorators = [
|
|
47
|
+
{ type: Component, args: [{
|
|
48
|
+
selector: 'pb-font-styles',
|
|
49
|
+
template: `
|
|
50
|
+
<div class="group two">
|
|
51
|
+
<mat-form-field appearance="outline" *ngIf="hasProperty('family')">
|
|
52
|
+
<mat-label i18n="settings|Font Family">Family</mat-label>
|
|
53
|
+
<mat-select [(value)]="font.family" disableRipple (selectionChange)="markForCheck()">
|
|
54
|
+
<mat-option *ngFor="let name of fontFamilyList" [ngStyle]="{ fontFamily: name }" [value]="name">
|
|
55
|
+
{{ name }}
|
|
56
|
+
</mat-option>
|
|
57
|
+
</mat-select>
|
|
58
|
+
<mat-hint *ngIf="isGoogleFont()" i18n="settings|Partial support">Partial support.</mat-hint>
|
|
59
|
+
<mat-hint *ngIf="!isGoogleFont()" i18n="settings|Full support">Full support.</mat-hint>
|
|
60
|
+
</mat-form-field>
|
|
61
|
+
<mat-form-field appearance="outline" *ngIf="hasProperty('fallback')">
|
|
62
|
+
<mat-label i18n="settings|Font Fallback">Fallback</mat-label>
|
|
63
|
+
<mat-select [(value)]="font.fallback" [disabled]="!isGoogleFont()" disableRipple (selectionChange)="markForCheck()">
|
|
64
|
+
<mat-option *ngFor="let name of fallbackFonts" [ngStyle]="{ fontFamily: name }" [value]="name">
|
|
65
|
+
{{ name }}
|
|
66
|
+
</mat-option>
|
|
67
|
+
</mat-select>
|
|
68
|
+
<mat-hint i18n="settings|Full support">Full support.</mat-hint>
|
|
69
|
+
</mat-form-field>
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<div class="group three">
|
|
73
|
+
<mat-form-field appearance="outline" *ngIf="hasProperty('size')">
|
|
74
|
+
<mat-label i18n="settings|Font Size">Size</mat-label>
|
|
75
|
+
<input matInput type="number" max="30" min="10" step="1" (input)="markForCheck()" [(ngModel)]="font.size" />
|
|
76
|
+
</mat-form-field>
|
|
77
|
+
<mat-form-field appearance="outline" *ngIf="hasProperty('weight')">
|
|
78
|
+
<mat-label i18n="settings|Font Weight">Weight</mat-label>
|
|
79
|
+
<mat-select placeholder="Weight" [(value)]="font.weight" disableRipple (selectionChange)="markForCheck()">
|
|
80
|
+
<mat-option *ngFor="let weight of fontWeightList" [value]="weight">
|
|
81
|
+
{{ weight }}
|
|
82
|
+
</mat-option>
|
|
83
|
+
</mat-select>
|
|
84
|
+
</mat-form-field>
|
|
85
|
+
<mat-form-field appearance="outline" style="min-width: 90px;">
|
|
86
|
+
<mat-label i18n="settings|Font Style">Style</mat-label>
|
|
87
|
+
<mat-select placeholder="Style" [(value)]="font.style" disableRipple (selectionChange)="markForCheck()">
|
|
88
|
+
<mat-option *ngFor="let style of styles" [value]="style" i18n>
|
|
89
|
+
{{ getStyleLabel(style) }}
|
|
90
|
+
</mat-option>
|
|
91
|
+
</mat-select>
|
|
92
|
+
</mat-form-field>
|
|
93
|
+
</div>
|
|
94
|
+
`,
|
|
95
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
96
|
+
styles: [`
|
|
97
|
+
:host {
|
|
98
|
+
display: block;
|
|
99
|
+
width: 100%;
|
|
100
|
+
}
|
|
101
|
+
`]
|
|
102
|
+
},] }
|
|
103
|
+
];
|
|
104
|
+
FontStylesComponent.ctorParameters = () => [
|
|
105
|
+
{ type: PbEmailObjectStoreService },
|
|
106
|
+
{ type: Array, decorators: [{ type: Inject, args: [PB_GOOGLE_FONTS,] }] },
|
|
107
|
+
{ type: Array, decorators: [{ type: Inject, args: [PB_FALLBACK_FONTS,] }] }
|
|
108
|
+
];
|
|
109
|
+
FontStylesComponent.propDecorators = {
|
|
110
|
+
font: [{ type: Input }]
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2ZvbnQtc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUE0RHRILE1BQU0sT0FBTyxtQkFBbUI7SUFTOUIsWUFDVSxhQUF3QyxFQUN2QixXQUFxQixFQUNaLGFBQXVCO1FBRmpELGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUVkLGtCQUFhLEdBQWIsYUFBYSxDQUFVO1FBVm5ELGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUN2QyxjQUFTLEdBQUcsSUFBSSxHQUFHLENBQXlCO1lBQ2xELENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQSw2QkFBNkIsQ0FBQztZQUNsRCxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUEsNkJBQTZCLENBQUM7WUFDbEQsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFBLCtCQUErQixDQUFDO1NBQ3RELENBQUMsQ0FBQztRQU9ELFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekIsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQXFCO1FBQ2pDLGlEQUFpRDtRQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7WUF6R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNUO2dCQVNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO3lCQVA3Qzs7Ozs7S0FLQzthQUdKOzs7WUEzRFEseUJBQXlCO3dDQXVFN0IsTUFBTSxTQUFDLGVBQWU7d0NBQ3RCLE1BQU0sU0FBQyxpQkFBaUI7OzttQkFYMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRm9udCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQQl9GQUxMQkFDS19GT05UUywgUEJfR09PR0xFX0ZPTlRTIH0gZnJvbSAnLi4vdG9rZW5zL3Rva2Vucyc7XG5pbXBvcnQgeyBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJuYWxzL3BiLWVtYWlsLW9iamVjdC1zdG9yZS9wYi1lbWFpbC1vYmplY3Qtc3RvcmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BiLWZvbnQtc3R5bGVzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAgdHdvXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiAqbmdJZj1cImhhc1Byb3BlcnR5KCdmYW1pbHknKVwiPlxuICAgICAgICA8bWF0LWxhYmVsIGkxOG49XCJzZXR0aW5nc3xGb250IEZhbWlseVwiPkZhbWlseTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCBbKHZhbHVlKV09XCJmb250LmZhbWlseVwiIGRpc2FibGVSaXBwbGUgKHNlbGVjdGlvbkNoYW5nZSk9XCJtYXJrRm9yQ2hlY2soKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBuYW1lIG9mIGZvbnRGYW1pbHlMaXN0XCIgW25nU3R5bGVdPVwieyBmb250RmFtaWx5OiBuYW1lIH1cIiBbdmFsdWVdPVwibmFtZVwiPlxuICAgICAgICAgICAge3sgbmFtZSB9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJpc0dvb2dsZUZvbnQoKVwiIGkxOG49XCJzZXR0aW5nc3xQYXJ0aWFsIHN1cHBvcnRcIj5QYXJ0aWFsIHN1cHBvcnQuPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiIWlzR29vZ2xlRm9udCgpXCIgaTE4bj1cInNldHRpbmdzfEZ1bGwgc3VwcG9ydFwiPkZ1bGwgc3VwcG9ydC48L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiaGFzUHJvcGVydHkoJ2ZhbGxiYWNrJylcIj5cbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPVwic2V0dGluZ3N8Rm9udCBGYWxsYmFja1wiPkZhbGxiYWNrPC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IFsodmFsdWUpXT1cImZvbnQuZmFsbGJhY2tcIiBbZGlzYWJsZWRdPVwiIWlzR29vZ2xlRm9udCgpXCIgZGlzYWJsZVJpcHBsZSAoc2VsZWN0aW9uQ2hhbmdlKT1cIm1hcmtGb3JDaGVjaygpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG5hbWUgb2YgZmFsbGJhY2tGb250c1wiIFtuZ1N0eWxlXT1cInsgZm9udEZhbWlseTogbmFtZSB9XCIgW3ZhbHVlXT1cIm5hbWVcIj5cbiAgICAgICAgICAgIHt7IG5hbWUgfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPG1hdC1oaW50IGkxOG49XCJzZXR0aW5nc3xGdWxsIHN1cHBvcnRcIj5GdWxsIHN1cHBvcnQuPC9tYXQtaGludD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAgdGhyZWVcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiaGFzUHJvcGVydHkoJ3NpemUnKVwiPlxuICAgICAgICA8bWF0LWxhYmVsIGkxOG49XCJzZXR0aW5nc3xGb250IFNpemVcIj5TaXplPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgbWF4PVwiMzBcIiBtaW49XCIxMFwiIHN0ZXA9XCIxXCIgKGlucHV0KT1cIm1hcmtGb3JDaGVjaygpXCIgWyhuZ01vZGVsKV09XCJmb250LnNpemVcIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiaGFzUHJvcGVydHkoJ3dlaWdodCcpXCI+XG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cInNldHRpbmdzfEZvbnQgV2VpZ2h0XCI+V2VpZ2h0PC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiV2VpZ2h0XCIgWyh2YWx1ZSldPVwiZm9udC53ZWlnaHRcIiBkaXNhYmxlUmlwcGxlIChzZWxlY3Rpb25DaGFuZ2UpPVwibWFya0ZvckNoZWNrKClcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgd2VpZ2h0IG9mIGZvbnRXZWlnaHRMaXN0XCIgW3ZhbHVlXT1cIndlaWdodFwiPlxuICAgICAgICAgICAge3sgd2VpZ2h0IH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJtaW4td2lkdGg6IDkwcHg7XCI+XG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cInNldHRpbmdzfEZvbnQgU3R5bGVcIj5TdHlsZTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cIlN0eWxlXCIgWyh2YWx1ZSldPVwiZm9udC5zdHlsZVwiIGRpc2FibGVSaXBwbGUgKHNlbGVjdGlvbkNoYW5nZSk9XCJtYXJrRm9yQ2hlY2soKVwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzdHlsZSBvZiBzdHlsZXNcIiBbdmFsdWVdPVwic3R5bGVcIiBpMThuPlxuICAgICAgICAgICAge3sgZ2V0U3R5bGVMYWJlbChzdHlsZSkgfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGBcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRm9udFN0eWxlc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGZvbnQ6IElGb250O1xuICBwcml2YXRlIGZvbnRzTWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcltdPigpO1xuICBwcml2YXRlIHN0eWxlc01hcCA9IG5ldyBNYXA8SUZvbnRbJ3N0eWxlJ10sIHN0cmluZz4oW1xuICAgIFsnbm9ybWFsJywgJGxvY2FsaXplYDpAQGZvbnRfc3R5bGVfbm9ybWFsOk5vcm1hbGBdLFxuICAgIFsnaXRhbGljJywgJGxvY2FsaXplYDpAQGZvbnRfc3R5bGVfaXRhbGljOkl0YWxpY2BdLFxuICAgIFsnb2JsaXF1ZScsICRsb2NhbGl6ZWA6QEBmb250X3N0eWxlX29ibGlxdWU6T2JsaXF1ZWBdXG4gIF0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGJFbWFpbE9iamVjdDogUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSxcbiAgICBASW5qZWN0KFBCX0dPT0dMRV9GT05UUykgZ29vZ2xlRm9udHM6IHN0cmluZ1tdLFxuICAgIEBJbmplY3QoUEJfRkFMTEJBQ0tfRk9OVFMpIHB1YmxpYyBmYWxsYmFja0ZvbnRzOiBzdHJpbmdbXVxuICApIHtcbiAgICBnb29nbGVGb250cy5mb3JFYWNoKGZvbnQgPT4ge1xuICAgICAgY29uc3QgW2ZhbWlseSwgLi4ud2VpZ2h0c10gPSBmb250Lm1hdGNoKC9bXlxcZDosXXsyLH18XFxkezN9L2cpO1xuICAgICAgdGhpcy5mb250c01hcC5zZXQoZmFtaWx5LnJlcGxhY2UoJysnLCAnICcpLCBbLi4ubmV3IFNldCh3ZWlnaHRzLm1hcChOdW1iZXIpKV0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGZvbnRXZWlnaHRMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLmlzR29vZ2xlRm9udCgpID8gdGhpcy5mb250c01hcC5nZXQodGhpcy5mb250LmZhbWlseSkgOiBbMTAwLCA0MDAsIDUwMCwgNzAwLCA5MDBdO1xuICB9XG5cbiAgZ2V0IGZvbnRGYW1pbHlMaXN0KCkge1xuICAgIHJldHVybiBbLi4udGhpcy5mb250c01hcC5rZXlzKCksIC4uLnRoaXMuZmFsbGJhY2tGb250c107XG4gIH1cblxuICBnZXQgc3R5bGVzKCk6IElGb250WydzdHlsZSddW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5zdHlsZXNNYXAua2V5cygpXTtcbiAgfVxuXG4gIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLnBiRW1haWxPYmplY3QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc0dvb2dsZUZvbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9udHNNYXAuaGFzKHRoaXMuZm9udC5mYW1pbHkpO1xuICB9XG5cbiAgZ2V0U3R5bGVMYWJlbChzdHlsZTogSUZvbnRbJ3N0eWxlJ10pOiBzdHJpbmcge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICByZXR1cm4gdGhpcy5zdHlsZXNNYXAuZ2V0KHN0eWxlKSE7XG4gIH1cblxuICBoYXNQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9udC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gIH1cbn1cbiJdfQ==
|