@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,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
6
|
+
import { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';
|
|
7
|
+
import { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
8
|
+
export class StructureSettingsComponent {
|
|
9
|
+
constructor(pbInternalService, emailObject) {
|
|
10
|
+
this.pbInternalService = pbInternalService;
|
|
11
|
+
this.emailObject = emailObject;
|
|
12
|
+
this.currentStructure$ = this.pbInternalService.currentEditingStructure$;
|
|
13
|
+
}
|
|
14
|
+
markForCheck() {
|
|
15
|
+
this.emailObject.markForCheck();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
StructureSettingsComponent.decorators = [
|
|
19
|
+
{ type: Component, args: [{
|
|
20
|
+
selector: 'pb-structure-settings',
|
|
21
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<mat-accordion *ngIf=\"currentStructure$ | async as structure\">\n <mat-expansion-panel expanded>\n <mat-expansion-panel-header i18n=\"Structure settings|Change structure Background\">\n Background\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-color [options]=\"structure.options.background\" key=\"color\"></pb-color>\n <pb-image-upload [block]=\"structure.options.background\" key=\"url\" style=\"margin-bottom: 1em\"></pb-image-upload>\n <pb-back-repeat [disabled]=\"!structure.options.background.url\"\n [model]=\"structure.options.background\"></pb-back-repeat>\n <pb-width-height [disabled]=\"!structure.options.background.url\" [model]=\"structure.options.background.size\"\n label=\"size\">\n </pb-width-height>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"Structure settings|Change structure border\">\n Border\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-border [border]=\"structure.options.border\"></pb-border>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"Structure settings|Change structure padding\">\n Padding\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-padding [padding]=\"structure.options.padding\"></pb-padding>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"Structure settings|Change structure margin\">\n Margin\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-margin [margin]=\"structure.options.margin\"></pb-margin>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"Structure settings|Change structure layout\">\n Layout\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-gaps [gaps]=\"structure.options.gaps\"></pb-gaps>\n <mat-slide-toggle [disabled]=\"structure.type === 'cols_1'\" style=\"margin-top: -24px;\"\n [(ngModel)]=\"structure.options.disableResponsive\" i18n=\"Structure settings|Disable Responsive\"\n (change)=\"markForCheck()\">\n Disable Responsive\n </mat-slide-toggle>\n <mat-slide-toggle\n [(ngModel)]=\"structure.options.fullWidth\" i18n=\"Structure settings|Full Width\"\n (change)=\"markForCheck()\">\n Make section full width\n </mat-slide-toggle>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel *ngFor=\"let column of structure.options.columns; let key = index\">\n <mat-expansion-panel-header>\n <ng-container i18n=\"Structure settings|Structure Column\">Column</ng-container>\n {{ key + 1 }}\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <h3 class=\"divider\">\n <span i18n=\"Structure settings|Column Background\">Column Background</span>\n </h3>\n <pb-color [options]=\"column.background\" [showTransparent]=\"true\" key=\"color\"></pb-color>\n <h3 class=\"divider\">\n <span i18n=\"Structure settings|Column Border\">Column Border</span>\n </h3>\n <pb-border [border]=\"column.border\"></pb-border>\n <h3 class=\"divider\">\n <span i18n=\"Structure settings|Column Vertical Align\">Vertical Align</span>\n </h3>\n <pb-align [model]=\"column\" mode=\"vertical\"></pb-align>\n </ng-template>\n </mat-expansion-panel>\n</mat-accordion>\n",
|
|
22
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
23
|
+
encapsulation: ViewEncapsulation.None,
|
|
24
|
+
styles: [":host{display:block}"]
|
|
25
|
+
},] }
|
|
26
|
+
];
|
|
27
|
+
StructureSettingsComponent.ctorParameters = () => [
|
|
28
|
+
{ type: PbUserInterfaceService },
|
|
29
|
+
{ type: PbEmailObjectStoreService }
|
|
30
|
+
];
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BiLWVtYWlsLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3N0cnVjdHVyZS1zZXR0aW5ncy9zdHJ1Y3R1cmUtc2V0dGluZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDekcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFTekgsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUFvQixpQkFBeUMsRUFBVSxXQUFzQztRQUF6RixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQTJCO1FBRjdHLHNCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQztJQUU0QyxDQUFDO0lBRWpILFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xDLENBQUM7OztZQWRGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxzc0hBQWtEO2dCQUVsRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFUUSxzQkFBc0I7WUFDdEIseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYlVzZXJJbnRlcmZhY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW50ZXJuYWxzL3VzZXItaW50ZXJmYWNlcy91c2VyLWludGVyZmFjZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGItc3RydWN0dXJlLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cnVjdHVyZS1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cnVjdHVyZS1zZXR0aW5ncy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFN0cnVjdHVyZVNldHRpbmdzQ29tcG9uZW50IHtcbiAgY3VycmVudFN0cnVjdHVyZSQgPSB0aGlzLnBiSW50ZXJuYWxTZXJ2aWNlLmN1cnJlbnRFZGl0aW5nU3RydWN0dXJlJDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBiSW50ZXJuYWxTZXJ2aWNlOiBQYlVzZXJJbnRlcmZhY2VTZXJ2aWNlLCBwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxuXG4gIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component, Inject, ChangeDetectionStrategy } from '@angular/core';
|
|
6
|
+
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
7
|
+
import { BehaviorSubject } from 'rxjs';
|
|
8
|
+
import { map, pluck, take } from 'rxjs/operators';
|
|
9
|
+
export class TemplateListDialogComponent {
|
|
10
|
+
constructor(matDialogRef, templateList) {
|
|
11
|
+
this.matDialogRef = matDialogRef;
|
|
12
|
+
this.templateList = templateList;
|
|
13
|
+
this.chooseCategory$ = new BehaviorSubject('latest');
|
|
14
|
+
this.currentCategoryTemplates$ = this.chooseCategory$.pipe(map(category => this.templateList.find(list => list.category === category) || { templates: [] }), pluck('templates'), map(templates => (templates.length > 0 ? templates : null))
|
|
15
|
+
// map(tmpl => Array.from({ length: 1000 }).map((_, i) => tmpl[0]))
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
chooseTemplate(template) {
|
|
19
|
+
this.csdTemplate = template;
|
|
20
|
+
}
|
|
21
|
+
chageCategory(category) {
|
|
22
|
+
this.chooseCategory$.next(category);
|
|
23
|
+
}
|
|
24
|
+
getTemplatesList() {
|
|
25
|
+
return this.templateList.filter(({ category }) => category !== 'latest');
|
|
26
|
+
}
|
|
27
|
+
startBuilding() {
|
|
28
|
+
this.chooseCategory$.pipe(take(1)).subscribe(category => {
|
|
29
|
+
this.matDialogRef.close({ category, template: this.csdTemplate });
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
TemplateListDialogComponent.decorators = [
|
|
34
|
+
{ type: Component, args: [{
|
|
35
|
+
selector: 'pb-template-list-dialog',
|
|
36
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<div fxLayout=\"column\" style=\"height: 100%;\">\n <h2 mat-dialog-title i18n=\"templates|Modal template header\">Custom Templates</h2>\n <div class=\"mat-typography template-list-wrapper\" fxLayout fxLayoutGap=\"1rem\" fxFlex>\n <mat-list fxFlex=\"200px\" dense>\n <mat-list-item (click)=\"chageCategory('latest')\" [ngClass]=\"{active: (chooseCategory$ | async) === 'latest'}\"\n i18n=\"templates|category name\">\n Latest\n </mat-list-item>\n <mat-divider></mat-divider>\n <mat-list-item *ngFor=\"let list of getTemplatesList()\" (click)=\"chageCategory(list.category)\"\n [ngClass]=\"{active: (chooseCategory$ | async) === list.category}\" i18n=\"templates|category name\">\n {{list.category}}\n </mat-list-item>\n </mat-list>\n\n <ng-container *ngIf=\"currentCategoryTemplates$ | async as templates;else emptyCategory\">\n <cdk-virtual-scroll-viewport itemSize=\"150\" [maxBufferPx]=\"150\" fxFlex>\n <div class=\"template-list\">\n <div *cdkVirtualFor=\"let template of templates\" class=\"template-list-item\" (click)=\"chooseTemplate(template)\"\n i18n-matTooltip=\"templates|Click to choose message\" matTooltip=\"Click to choose\">\n <img [src]=\"template.thumbPath\" [alt]=\"template.title\" />\n <div class=\"description\">\n <h3>{{template.title}}</h3>\n </div>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n </div>\n <mat-dialog-actions align=\"end\">\n <button mat-button mat-dialog-close i18n=\"actions|Undo\">Undo</button>\n <button mat-button (click)=\"startBuilding()\" [disabled]=\"!csdTemplate\" i18n=\"actions|Start\">\n Start\n </button>\n </mat-dialog-actions>\n</div>\n\n\n<ng-template #emptyCategory>\n <div fxFlex fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"empty-category-notification\">\n <mat-icon>notifications</mat-icon>\n <h2 i18n=\"templates|No templates in current category message\">This category is empty!</h2>\n </div>\n</ng-template>\n",
|
|
37
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
38
|
+
styles: ["/*!\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */:host{display:block;height:inherit}.template-list-wrapper mat-list{position:sticky;top:0}.template-list-wrapper mat-list mat-list-item{text-transform:capitalize;cursor:pointer;border-radius:3px;transition:all .3s linear}.template-list-wrapper mat-list mat-list-item.active,.template-list-wrapper mat-list mat-list-item:hover{background-color:#f3f3f3}.template-list-wrapper .template-list{display:grid;gap:1rem;grid-template:150px/repeat(3,1fr)}@media screen and (max-width:699px){.template-list-wrapper .template-list{grid-template:150px/repeat(2,1fr)}}.template-list-wrapper .template-list-item{border-radius:3px;overflow:hidden;border:1px solid #ccc;padding:.5rem;position:relative;background-color:#f3f3f3}.template-list-wrapper .template-list-item img{-o-object-fit:cover;object-fit:cover;-o-object-position:top;object-position:top;height:calc(200px - 1rem);width:100%;cursor:pointer;animation:objectPosition 3s linear infinite alternate;animation-play-state:paused}.template-list-wrapper .template-list-item .description{position:absolute;bottom:0;right:0;left:0;background-color:#fff;padding:.5rem;opacity:1;transition:all .3s linear;text-transform:capitalize}.template-list-wrapper .template-list-item .description h3{margin:0}.template-list-wrapper .template-list-item:hover img{animation-play-state:running}.template-list-wrapper .template-list-item:hover .description{bottom:-44px;opacity:.6}.empty-category-notification mat-icon{height:50px;width:50px;font-size:50px}.empty-category-notification h2{text-transform:uppercase}@keyframes objectPosition{to{-o-object-position:bottom;object-position:bottom}}"]
|
|
39
|
+
},] }
|
|
40
|
+
];
|
|
41
|
+
TemplateListDialogComponent.ctorParameters = () => [
|
|
42
|
+
{ type: MatDialogRef },
|
|
43
|
+
{ type: Array, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
44
|
+
];
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtbGlzdC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGUtbGlzdC1kaWFsb2cvdGVtcGxhdGUtbGlzdC1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVVsRCxNQUFNLE9BQU8sMkJBQTJCO0lBVXRDLFlBQ1UsWUFBdUQsRUFDL0IsWUFBcUM7UUFEN0QsaUJBQVksR0FBWixZQUFZLENBQTJDO1FBQy9CLGlCQUFZLEdBQVosWUFBWSxDQUF5QjtRQVg5RCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFTLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELDhCQUF5QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDaEcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUNsQixHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELG1FQUFtRTtTQUNwRSxDQUFDO0lBTUMsQ0FBQztJQUVKLGNBQWMsQ0FBQyxRQUF1QjtRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWdCO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXJDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsOG9FQUFvRDtnQkFFcEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFYeUIsWUFBWTt3Q0F3QmpDLE1BQU0sU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHBsdWNrLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJVXNlclRlbXBsYXRlQ2F0ZWdvcnksIElVc2VyVGVtcGxhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYi10ZW1wbGF0ZS1saXN0LWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1saXN0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RlbXBsYXRlLWxpc3QtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlTGlzdERpYWxvZ0NvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGNob29zZUNhdGVnb3J5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignbGF0ZXN0Jyk7XG4gIHJlYWRvbmx5IGN1cnJlbnRDYXRlZ29yeVRlbXBsYXRlcyQgPSB0aGlzLmNob29zZUNhdGVnb3J5JC5waXBlKFxuICAgIG1hcChjYXRlZ29yeSA9PiB0aGlzLnRlbXBsYXRlTGlzdC5maW5kKGxpc3QgPT4gbGlzdC5jYXRlZ29yeSA9PT0gY2F0ZWdvcnkpIHx8IHsgdGVtcGxhdGVzOiBbXSB9KSxcbiAgICBwbHVjaygndGVtcGxhdGVzJyksXG4gICAgbWFwKHRlbXBsYXRlcyA9PiAodGVtcGxhdGVzLmxlbmd0aCA+IDAgPyB0ZW1wbGF0ZXMgOiBudWxsKSlcbiAgICAvLyBtYXAodG1wbCA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMDAwIH0pLm1hcCgoXywgaSkgPT4gdG1wbFswXSkpXG4gICk7XG4gIGNzZFRlbXBsYXRlOiBJVXNlclRlbXBsYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0RGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVMaXN0RGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIHRlbXBsYXRlTGlzdDogSVVzZXJUZW1wbGF0ZUNhdGVnb3J5W11cbiAgKSB7fVxuXG4gIGNob29zZVRlbXBsYXRlKHRlbXBsYXRlOiBJVXNlclRlbXBsYXRlKSB7XG4gICAgdGhpcy5jc2RUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgY2hhZ2VDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgdGhpcy5jaG9vc2VDYXRlZ29yeSQubmV4dChjYXRlZ29yeSk7XG4gIH1cblxuICBnZXRUZW1wbGF0ZXNMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlTGlzdC5maWx0ZXIoKHsgY2F0ZWdvcnkgfSkgPT4gY2F0ZWdvcnkgIT09ICdsYXRlc3QnKTtcbiAgfVxuXG4gIHN0YXJ0QnVpbGRpbmcoKSB7XG4gICAgdGhpcy5jaG9vc2VDYXRlZ29yeSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoY2F0ZWdvcnkgPT4ge1xuICAgICAgdGhpcy5tYXREaWFsb2dSZWYuY2xvc2UoeyBjYXRlZ29yeSwgdGVtcGxhdGU6IHRoaXMuY3NkVGVtcGxhdGUgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { ComponentFactoryResolver, Directive, Input, ViewContainerRef } from '@angular/core';
|
|
6
|
+
import { TextElementComponent } from '../elements/text-element/text-element.component';
|
|
7
|
+
import { ImageComponent } from '../elements/image/image.component';
|
|
8
|
+
import { ButtonComponent } from '../elements/button/button.component';
|
|
9
|
+
import { DividerComponent } from '../elements/divider/divider.component';
|
|
10
|
+
import { SpacerComponent } from '../elements/spacer/spacer.component';
|
|
11
|
+
import { SocialComponent } from '../elements/social/social.component';
|
|
12
|
+
const cStore = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*
|
|
16
|
+
* Soon it must be optimized, and load all components lazily.
|
|
17
|
+
*/
|
|
18
|
+
export class DynamicComponentDirective {
|
|
19
|
+
constructor(cResolver, viewContainerRef) {
|
|
20
|
+
this.cResolver = cResolver;
|
|
21
|
+
this.viewContainerRef = viewContainerRef;
|
|
22
|
+
cStore.set('text', TextElementComponent);
|
|
23
|
+
cStore.set('image', ImageComponent);
|
|
24
|
+
cStore.set('button', ButtonComponent);
|
|
25
|
+
cStore.set('divider', DividerComponent);
|
|
26
|
+
cStore.set('spacer', SpacerComponent);
|
|
27
|
+
cStore.set('social', SocialComponent);
|
|
28
|
+
}
|
|
29
|
+
set pbDynamicComponent(block) {
|
|
30
|
+
const component = this.cResolver.resolveComponentFactory(cStore.get(block.type));
|
|
31
|
+
this.viewContainerRef.createComponent(component).instance.block = block;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
DynamicComponentDirective.decorators = [
|
|
35
|
+
{ type: Directive, args: [{
|
|
36
|
+
selector: '[pbDynamicComponent]'
|
|
37
|
+
},] }
|
|
38
|
+
];
|
|
39
|
+
DynamicComponentDirective.ctorParameters = () => [
|
|
40
|
+
{ type: ComponentFactoryResolver },
|
|
41
|
+
{ type: ViewContainerRef }
|
|
42
|
+
];
|
|
43
|
+
DynamicComponentDirective.propDecorators = {
|
|
44
|
+
pbDynamicComponent: [{ type: Input }]
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2RpcmVjdGl2ZXMvZHluYW1pYy1jb21wb25lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFRLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUd0RSxNQUFNLE1BQU0sR0FBMkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVqRDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFvQixTQUFtQyxFQUFVLGdCQUFrQztRQUEvRSxjQUFTLEdBQVQsU0FBUyxDQUEwQjtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFhLGtCQUFrQixDQUFDLEtBQWM7UUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDMUUsQ0FBQzs7O1lBaEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2FBQ2pDOzs7WUFsQlEsd0JBQXdCO1lBQTBCLGdCQUFnQjs7O2lDQTZCeEUsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIERpcmVjdGl2ZSwgSW5wdXQsIFR5cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRleHRFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vZWxlbWVudHMvdGV4dC1lbGVtZW50L3RleHQtZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9lbGVtZW50cy9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWxlbWVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2VsZW1lbnRzL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3BhY2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZWxlbWVudHMvc3BhY2VyL3NwYWNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU29jaWFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZWxlbWVudHMvc29jaWFsL3NvY2lhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVEJsb2NrcyB9IGZyb20gJy4uL2NsYXNzZXMvRWxlbWVudHMnO1xuXG5jb25zdCBjU3RvcmU6IE1hcDxzdHJpbmcsIFR5cGU8YW55Pj4gPSBuZXcgTWFwKCk7XG5cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogU29vbiBpdCBtdXN0IGJlIG9wdGltaXplZCwgYW5kIGxvYWQgYWxsIGNvbXBvbmVudHMgbGF6aWx5LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcGJEeW5hbWljQ29tcG9uZW50XSdcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0NvbXBvbmVudERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY1Jlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIGNTdG9yZS5zZXQoJ3RleHQnLCBUZXh0RWxlbWVudENvbXBvbmVudCk7XG4gICAgY1N0b3JlLnNldCgnaW1hZ2UnLCBJbWFnZUNvbXBvbmVudCk7XG4gICAgY1N0b3JlLnNldCgnYnV0dG9uJywgQnV0dG9uQ29tcG9uZW50KTtcbiAgICBjU3RvcmUuc2V0KCdkaXZpZGVyJywgRGl2aWRlckNvbXBvbmVudCk7XG4gICAgY1N0b3JlLnNldCgnc3BhY2VyJywgU3BhY2VyQ29tcG9uZW50KTtcbiAgICBjU3RvcmUuc2V0KCdzb2NpYWwnLCBTb2NpYWxDb21wb25lbnQpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHBiRHluYW1pY0NvbXBvbmVudChibG9jazogVEJsb2Nrcykge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY1Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNTdG9yZS5nZXQoYmxvY2sudHlwZSkpO1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KS5pbnN0YW5jZS5ibG9jayA9IGJsb2NrO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Directive, ViewChild } from '@angular/core';
|
|
6
|
+
import { CdkPortal } from '@angular/cdk/portal';
|
|
7
|
+
// tslint:disable-next-line:no-shadowed-variable directive-class-suffix
|
|
8
|
+
export class AbstractBlock {
|
|
9
|
+
ngOnInit() {
|
|
10
|
+
// if (!this.portal) {
|
|
11
|
+
// throw new Error(`Each element should have an options' portal, add *cdkPortal inside of HTML block.`);
|
|
12
|
+
// }
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
AbstractBlock.decorators = [
|
|
16
|
+
{ type: Directive }
|
|
17
|
+
];
|
|
18
|
+
AbstractBlock.propDecorators = {
|
|
19
|
+
portal: [{ type: ViewChild, args: [CdkPortal, { static: true },] }]
|
|
20
|
+
};
|
|
21
|
+
export class AbstractEntityBlock {
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtYmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZWxlbWVudHMvYWJzdHJhY3QtYmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2hELHVFQUF1RTtBQUN2RSxNQUFNLE9BQWdCLGFBQWE7SUFJakMsUUFBUTtRQUNOLHNCQUFzQjtRQUN0QiwwR0FBMEc7UUFDMUcsSUFBSTtJQUNOLENBQUM7OztZQVZGLFNBQVM7OztxQkFJUCxTQUFTLFNBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7QUFTeEMsTUFBTSxPQUFnQixtQkFBbUI7Q0FBRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuQERpcmVjdGl2ZSgpXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tc2hhZG93ZWQtdmFyaWFibGUgZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0QmxvY2s8QWJzdHJhY3RFbnRpdHlCbG9jaz4gaW1wbGVtZW50cyBPbkluaXQge1xuICBibG9jazogQWJzdHJhY3RFbnRpdHlCbG9jaztcbiAgQFZpZXdDaGlsZChDZGtQb3J0YWwsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcG9ydGFsOiBDZGtQb3J0YWw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gaWYgKCF0aGlzLnBvcnRhbCkge1xuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKGBFYWNoIGVsZW1lbnQgc2hvdWxkIGhhdmUgYW4gb3B0aW9ucycgcG9ydGFsLCBhZGQgKmNka1BvcnRhbCBpbnNpZGUgb2YgSFRNTCBibG9jay5gKTtcbiAgICAvLyB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RW50aXR5QmxvY2sge31cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component, ViewEncapsulation } from '@angular/core';
|
|
6
|
+
import { createFont, createPadding, createBorder, createLineHeight } from '../../utils';
|
|
7
|
+
import { AbstractBlock } from '../abstract-block';
|
|
8
|
+
export class ButtonComponent extends AbstractBlock {
|
|
9
|
+
// @Input() block: ButtonBlock;
|
|
10
|
+
getButtonStyles() {
|
|
11
|
+
const { backgroundColor, border, color, font, lineHeight, innerPadding, fullWidth } = this.block.options;
|
|
12
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({ color, width: fullWidth ? '100%' : 'auto', backgroundColor }, createFont(font)), createPadding(innerPadding)), createBorder(border)), createLineHeight(lineHeight));
|
|
13
|
+
}
|
|
14
|
+
getParentStyles() {
|
|
15
|
+
const { align, padding } = this.block.options;
|
|
16
|
+
return Object.assign({ justifyContent: (align === 'center' && 'center') ||
|
|
17
|
+
(align === 'right' && 'flex-end') ||
|
|
18
|
+
'flex-start' }, createPadding(padding));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
ButtonComponent.decorators = [
|
|
22
|
+
{ type: Component, args: [{
|
|
23
|
+
selector: 'pb-button',
|
|
24
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<div fxLayout [ngStyle]=\"getParentStyles()\">\n <button type=\"button\" [class.full-width]=\"block.options.fullWidth\" [ngStyle]=\"getButtonStyles()\">\n {{ block.innerText }}\n </button>\n</div>\n",
|
|
25
|
+
encapsulation: ViewEncapsulation.Emulated,
|
|
26
|
+
styles: ["button{transition:all .5s cubic-bezier(.445,.05,.55,.95)}"]
|
|
27
|
+
},] }
|
|
28
|
+
];
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BiLWVtYWlsLWJ1aWxkZXIvc3JjL2xpYi9lbGVtZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFTLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBUWhELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQTBCO0lBQzdELCtCQUErQjtJQUUvQixlQUFlO1FBQ2IsTUFBTSxFQUNKLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRXZCLGlFQUNFLEtBQUssRUFDTCxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDbEMsZUFBZSxJQUNaLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FDaEIsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUMzQixZQUFZLENBQUMsTUFBTSxDQUFDLEdBQ3BCLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUMvQjtJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUU5Qyx1QkFDRSxjQUFjLEVBQ1osQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLFFBQVEsQ0FBQztnQkFDaEMsQ0FBQyxLQUFLLEtBQUssT0FBTyxJQUFJLFVBQVUsQ0FBQztnQkFDakMsWUFBWSxJQUNYLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFDekI7SUFDSixDQUFDOzs7WUF6Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixnU0FBc0M7Z0JBRXRDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFROzthQUMxQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQmxvY2sgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0VsZW1lbnRzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUZvbnQsXG4gIGNyZWF0ZVBhZGRpbmcsXG4gIGNyZWF0ZUJvcmRlcixcbiAgY3JlYXRlTGluZUhlaWdodFxufSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge0Fic3RyYWN0QmxvY2t9IGZyb20gJy4uL2Fic3RyYWN0LWJsb2NrJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGItYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2J1dHRvbi5jb21wb25lbnQuY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0QmxvY2s8QnV0dG9uQmxvY2s+IHtcbiAgLy8gQElucHV0KCkgYmxvY2s6IEJ1dHRvbkJsb2NrO1xuXG4gIGdldEJ1dHRvblN0eWxlcygpIHtcbiAgICBjb25zdCB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3JkZXIsXG4gICAgICBjb2xvcixcbiAgICAgIGZvbnQsXG4gICAgICBsaW5lSGVpZ2h0LFxuICAgICAgaW5uZXJQYWRkaW5nLFxuICAgICAgZnVsbFdpZHRoXG4gICAgfSA9IHRoaXMuYmxvY2sub3B0aW9ucztcblxuICAgIHJldHVybiB7XG4gICAgICBjb2xvcixcbiAgICAgIHdpZHRoOiBmdWxsV2lkdGggPyAnMTAwJScgOiAnYXV0bycsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAuLi5jcmVhdGVGb250KGZvbnQpLFxuICAgICAgLi4uY3JlYXRlUGFkZGluZyhpbm5lclBhZGRpbmcpLFxuICAgICAgLi4uY3JlYXRlQm9yZGVyKGJvcmRlciksXG4gICAgICAuLi5jcmVhdGVMaW5lSGVpZ2h0KGxpbmVIZWlnaHQpXG4gICAgfTtcbiAgfVxuXG4gIGdldFBhcmVudFN0eWxlcygpIHtcbiAgICBjb25zdCB7IGFsaWduLCBwYWRkaW5nIH0gPSB0aGlzLmJsb2NrLm9wdGlvbnM7XG5cbiAgICByZXR1cm4ge1xuICAgICAganVzdGlmeUNvbnRlbnQ6XG4gICAgICAgIChhbGlnbiA9PT0gJ2NlbnRlcicgJiYgJ2NlbnRlcicpIHx8XG4gICAgICAgIChhbGlnbiA9PT0gJ3JpZ2h0JyAmJiAnZmxleC1lbmQnKSB8fFxuICAgICAgICAnZmxleC1zdGFydCcsXG4gICAgICAuLi5jcmVhdGVQYWRkaW5nKHBhZGRpbmcpXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component } from '@angular/core';
|
|
6
|
+
import { createBorder, createPadding } from '../../utils';
|
|
7
|
+
import { AbstractBlock } from '../abstract-block';
|
|
8
|
+
export class DividerComponent extends AbstractBlock {
|
|
9
|
+
// @Input()
|
|
10
|
+
// block: DividerBlock = new DividerBlock();
|
|
11
|
+
getDividerStyles() {
|
|
12
|
+
const { border, padding } = this.block.options;
|
|
13
|
+
return Object.assign(Object.assign({}, createBorder(border, 'borderTop')), createPadding(padding, 'margin'));
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
DividerComponent.decorators = [
|
|
19
|
+
{ type: Component, args: [{
|
|
20
|
+
selector: 'pb-divider',
|
|
21
|
+
template: '<div [ngStyle]="getDividerStyles()"></div>',
|
|
22
|
+
styles: [`
|
|
23
|
+
:host {
|
|
24
|
+
display: table;
|
|
25
|
+
width: 100%;
|
|
26
|
+
}
|
|
27
|
+
`]
|
|
28
|
+
},] }
|
|
29
|
+
];
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZWxlbWVudHMvZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRWhELE9BQU8sRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQWNoRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsYUFBMkI7SUFDL0QsV0FBVztJQUNYLDRDQUE0QztJQUU1QyxnQkFBZ0I7UUFDZCxNQUFNLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdDLHVDQUNLLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEdBQ2pDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQ25DO0lBQ0osQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDOzs7WUF6QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0QixRQUFRLEVBQUUsNENBQTRDO3lCQUVsRDs7Ozs7S0FLRDthQUVKIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXZpZGVyQmxvY2t9IGZyb20gJy4uLy4uL2NsYXNzZXMvRWxlbWVudHMnO1xuaW1wb3J0IHtjcmVhdGVCb3JkZXIsIGNyZWF0ZVBhZGRpbmd9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7QWJzdHJhY3RCbG9ja30gZnJvbSAnLi4vYWJzdHJhY3QtYmxvY2snO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYi1kaXZpZGVyJyxcbiAgdGVtcGxhdGU6ICc8ZGl2IFtuZ1N0eWxlXT1cImdldERpdmlkZXJTdHlsZXMoKVwiPjwvZGl2PicsXG4gIHN0eWxlczogW1xuICAgICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERpdmlkZXJDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEJsb2NrPERpdmlkZXJCbG9jaz4gaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBASW5wdXQoKVxuICAvLyBibG9jazogRGl2aWRlckJsb2NrID0gbmV3IERpdmlkZXJCbG9jaygpO1xuXG4gIGdldERpdmlkZXJTdHlsZXMoKSB7XG4gICAgY29uc3Qge2JvcmRlciwgcGFkZGluZ30gPSB0aGlzLmJsb2NrLm9wdGlvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNyZWF0ZUJvcmRlcihib3JkZXIsICdib3JkZXJUb3AnKSxcbiAgICAgIC4uLmNyZWF0ZVBhZGRpbmcocGFkZGluZywgJ21hcmdpbicpXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { __awaiter } from "tslib";
|
|
6
|
+
import { Component, HostBinding, ChangeDetectorRef } from '@angular/core';
|
|
7
|
+
import { createBorder, createPadding, createWidthHeight } from '../../utils';
|
|
8
|
+
import { PbUserImageUploaderService } from '../../services/user-image-uploader-service/user-image-uploader.service';
|
|
9
|
+
import { PbEmailBuilderService } from '../../pb-email-builder.service';
|
|
10
|
+
import { AbstractBlock } from '../abstract-block';
|
|
11
|
+
export class ImageComponent extends AbstractBlock {
|
|
12
|
+
constructor(imageUploader, chRef, ngb) {
|
|
13
|
+
super();
|
|
14
|
+
this.imageUploader = imageUploader;
|
|
15
|
+
this.chRef = chRef;
|
|
16
|
+
this.ngb = ngb;
|
|
17
|
+
}
|
|
18
|
+
// @Input() block = new ImageBlock();
|
|
19
|
+
get align() {
|
|
20
|
+
return this.block.options.align;
|
|
21
|
+
}
|
|
22
|
+
get src() {
|
|
23
|
+
return this.block.src || 'https://via.placeholder.com/600x200?text=CHANGE+ME';
|
|
24
|
+
}
|
|
25
|
+
uploadImage() {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const src = yield this.imageUploader.browse$().toPromise();
|
|
28
|
+
if (src) {
|
|
29
|
+
this.block.src = src;
|
|
30
|
+
this.chRef.markForCheck();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
getImageStyles() {
|
|
35
|
+
const { border, width, height, padding } = this.block.options;
|
|
36
|
+
return Object.assign(Object.assign({ width: createWidthHeight(width), height: createWidthHeight(height) }, createPadding(padding)), createBorder(border));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ImageComponent.decorators = [
|
|
40
|
+
{ type: Component, args: [{
|
|
41
|
+
selector: 'pb-image',
|
|
42
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<!-- <div\n class=\"overflow\"\n *ngIf=\"(ngb.currentEditingBlock$ | async) !== block\"\n (click)=\"uploadImage()\"\n>\n <mat-icon inline>cloud_upload</mat-icon>\n</div> -->\n<img [src]=\"src\" [title]=\"block.options.title\" [ngStyle]=\"getImageStyles()\" />\n",
|
|
43
|
+
styles: [":host{display:block;line-height:0}:host:hover .overflow{opacity:1}.overflow{position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.3);opacity:0;will-change:opacity;transition:opacity .3s cubic-bezier(.075,.82,.165,1);cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;font-size:3em}.overflow mat-icon{opacity:.8}img{max-width:100%;box-sizing:border-box}"]
|
|
44
|
+
},] }
|
|
45
|
+
];
|
|
46
|
+
ImageComponent.ctorParameters = () => [
|
|
47
|
+
{ type: PbUserImageUploaderService },
|
|
48
|
+
{ type: ChangeDetectorRef },
|
|
49
|
+
{ type: PbEmailBuilderService }
|
|
50
|
+
];
|
|
51
|
+
ImageComponent.propDecorators = {
|
|
52
|
+
align: [{ type: HostBinding, args: ['style.textAlign',] }]
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2VsZW1lbnRzL2ltYWdlL2ltYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7O0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBUyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDcEgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBT2xELE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBeUI7SUFXM0QsWUFBb0IsYUFBeUMsRUFBVSxLQUF3QixFQUFTLEdBQTBCO1FBQ2hJLEtBQUssRUFBRSxDQUFDO1FBRFUsa0JBQWEsR0FBYixhQUFhLENBQTRCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUF1QjtJQUVsSSxDQUFDO0lBWkQscUNBQXFDO0lBRXJDLElBQW9DLEtBQUs7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksb0RBQW9ELENBQUM7SUFDaEYsQ0FBQztJQU1LLFdBQVc7O1lBQ2YsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzNELElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUMzQjtRQUNILENBQUM7S0FBQTtJQUVELGNBQWM7UUFDWixNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFOUQscUNBQ0UsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUMvQixNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQzlCLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FDdEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUN2QjtJQUNKLENBQUM7OztZQXJDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLDhWQUFxQzs7YUFFdEM7OztZQVJRLDBCQUEwQjtZQUhLLGlCQUFpQjtZQUloRCxxQkFBcUI7OztvQkFXM0IsV0FBVyxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBIb3N0QmluZGluZywgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEltYWdlQmxvY2sgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0VsZW1lbnRzJztcbmltcG9ydCB7IGNyZWF0ZUJvcmRlciwgY3JlYXRlUGFkZGluZywgY3JlYXRlV2lkdGhIZWlnaHQgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBQYlVzZXJJbWFnZVVwbG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXItaW1hZ2UtdXBsb2FkZXItc2VydmljZS91c2VyLWltYWdlLXVwbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGJFbWFpbEJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGItZW1haWwtYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0QmxvY2sgfSBmcm9tICcuLi9hYnN0cmFjdC1ibG9jayc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BiLWltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RCbG9jazxJbWFnZUJsb2NrPiB7XG4gIC8vIEBJbnB1dCgpIGJsb2NrID0gbmV3IEltYWdlQmxvY2soKTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRleHRBbGlnbicpIGdldCBhbGlnbigpIHtcbiAgICByZXR1cm4gdGhpcy5ibG9jay5vcHRpb25zLmFsaWduO1xuICB9XG5cbiAgZ2V0IHNyYygpIHtcbiAgICByZXR1cm4gdGhpcy5ibG9jay5zcmMgfHwgJ2h0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS82MDB4MjAwP3RleHQ9Q0hBTkdFK01FJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW1hZ2VVcGxvYWRlcjogUGJVc2VySW1hZ2VVcGxvYWRlclNlcnZpY2UsIHByaXZhdGUgY2hSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgbmdiOiBQYkVtYWlsQnVpbGRlclNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkSW1hZ2UoKSB7XG4gICAgY29uc3Qgc3JjID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZGVyLmJyb3dzZSQoKS50b1Byb21pc2UoKTtcbiAgICBpZiAoc3JjKSB7XG4gICAgICB0aGlzLmJsb2NrLnNyYyA9IHNyYztcbiAgICAgIHRoaXMuY2hSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW1hZ2VTdHlsZXMoKSB7XG4gICAgY29uc3QgeyBib3JkZXIsIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcgfSA9IHRoaXMuYmxvY2sub3B0aW9ucztcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogY3JlYXRlV2lkdGhIZWlnaHQod2lkdGgpLFxuICAgICAgaGVpZ2h0OiBjcmVhdGVXaWR0aEhlaWdodChoZWlnaHQpLFxuICAgICAgLi4uY3JlYXRlUGFkZGluZyhwYWRkaW5nKSxcbiAgICAgIC4uLmNyZWF0ZUJvcmRlcihib3JkZXIpXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component } from '@angular/core';
|
|
6
|
+
import { createFont, createLineHeight, createPadding, getAssetByPath } from '../../utils';
|
|
7
|
+
import { AbstractBlock } from '../abstract-block';
|
|
8
|
+
export class SocialComponent extends AbstractBlock {
|
|
9
|
+
// @Input()
|
|
10
|
+
// block: SocialBlock;
|
|
11
|
+
getParentStyles() {
|
|
12
|
+
const { color, font, lineHeight, padding } = this.block.options;
|
|
13
|
+
return Object.assign(Object.assign(Object.assign({ color }, createLineHeight(lineHeight)), createFont(font)), createPadding(padding));
|
|
14
|
+
}
|
|
15
|
+
getLabelStyles() {
|
|
16
|
+
const { innerPadding } = this.block.options;
|
|
17
|
+
return Object.assign(Object.assign({}, createPadding(innerPadding)), { lineHeight: 0 });
|
|
18
|
+
}
|
|
19
|
+
getSocialListStyles() {
|
|
20
|
+
const { align } = this.block.options;
|
|
21
|
+
return {
|
|
22
|
+
display: 'flex',
|
|
23
|
+
placeContent: (align === 'left' && 'flex-start') ||
|
|
24
|
+
(align === 'right' && 'flex-end') ||
|
|
25
|
+
align
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
getSocialListClasses() {
|
|
29
|
+
return `social-list ${this.block.options.mode}`;
|
|
30
|
+
}
|
|
31
|
+
getSocialNetworkIcon(network) {
|
|
32
|
+
return getAssetByPath(`${network}.png`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
SocialComponent.decorators = [
|
|
36
|
+
{ type: Component, args: [{
|
|
37
|
+
selector: 'pb-social',
|
|
38
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<div fxLayout [ngStyle]=\"getParentStyles()\">\n <div [class]=\"getSocialListClasses()\" [ngStyle]=\"getSocialListStyles()\">\n <ng-container *ngIf=\"block.networks.length; else noSocialNetworks\">\n <div class=\"social-list-item\" *ngFor=\"let network of block.networks\">\n <div [ngStyle]=\"getLabelStyles()\">\n <img [src]=\"getSocialNetworkIcon(network.name)\" [width]=\"block.options.iconSize.value\"\n [height]=\"block.options.iconSize.value\" [classList]=\"network.name\" [alt]=\"network.name\" />\n </div>\n <span *ngIf=\"network.label\">{{ network.label }}</span>\n </div>\n </ng-container>\n </div>\n</div>\n\n<ng-template #noSocialNetworks>\n <p i18n=\"social block|Empty social list message\">Please add some social networks.</p>\n</ng-template>\n",
|
|
39
|
+
styles: ["/*!\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */:host{display:block}p{margin:0}.social-list{display:flex;width:100%;flex-wrap:wrap}.social-list.horizontal{flex-direction:row}.social-list.vertical{flex-direction:column}.social-list-item{display:flex;flex-direction:row;align-items:center}.social-list-item img{border-radius:3px}.social-list-item img.facebook{background-color:#3a5898}.social-list-item img.twitter{background-color:#d95988}.social-list-item img.github{background-color:#000}.social-list-item img.instagram{background-color:#3f729b}.social-list-item img.web{background-color:#4bade9}.social-list-item img.snapchat{background-color:#fffa54}.social-list-item img.youtube{background-color:#ea3323}.social-list-item img.vimeo{background-color:#53b4e7}.social-list-item img.medium{background-color:#000}.social-list-item img.soundcloud{background-color:#ef7f31}.social-list-item img.dribbble{background-color:#d95988}.social-list-item img.pinterest{background-color:#bd071c}.social-list-item img.linkedin{background-color:#0077b5}.social-list-item img.tumblr{background-color:#334356}.social-list-item img.xing{background-color:#296365}.social-list-item img.tiktok{background-color:#000}"]
|
|
40
|
+
},] }
|
|
41
|
+
];
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BiLWVtYWlsLWJ1aWxkZXIvc3JjL2xpYi9lbGVtZW50cy9zb2NpYWwvc29jaWFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQTBCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDeEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBUWhELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQTBCO0lBQzdELFdBQVc7SUFDWCxzQkFBc0I7SUFFdEIsZUFBZTtRQUNiLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUVoRSxtREFDRSxLQUFLLElBQ0YsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQzVCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FDaEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUN6QjtJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVDLHVDQUFZLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBRSxVQUFVLEVBQUUsQ0FBQyxJQUFHO0lBQzNELENBQUM7SUFFRCxtQkFBbUI7UUFDakIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3JDLE9BQU87WUFDTCxPQUFPLEVBQUUsTUFBTTtZQUNmLFlBQVksRUFDVixDQUFDLEtBQUssS0FBSyxNQUFNLElBQUksWUFBWSxDQUFDO2dCQUNsQyxDQUFDLEtBQUssS0FBSyxPQUFPLElBQUksVUFBVSxDQUFDO2dCQUNqQyxLQUFLO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxlQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFlO1FBQ2xDLE9BQU8sY0FBYyxDQUFDLEdBQUcsT0FBTyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDOzs7WUEzQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQix3NEJBQXNDOzthQUd2QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTb2NpYWxCbG9ja30gZnJvbSAnLi4vLi4vY2xhc3Nlcy9FbGVtZW50cyc7XG5pbXBvcnQge2NyZWF0ZUZvbnQsIGNyZWF0ZUxpbmVIZWlnaHQsIGNyZWF0ZVBhZGRpbmcsIGdldEFzc2V0QnlQYXRofSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge0Fic3RyYWN0QmxvY2t9IGZyb20gJy4uL2Fic3RyYWN0LWJsb2NrJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGItc29jaWFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NvY2lhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NvY2lhbC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTb2NpYWxDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEJsb2NrPFNvY2lhbEJsb2NrPiB7XG4gIC8vIEBJbnB1dCgpXG4gIC8vIGJsb2NrOiBTb2NpYWxCbG9jaztcblxuICBnZXRQYXJlbnRTdHlsZXMoKSB7XG4gICAgY29uc3QgeyBjb2xvciwgZm9udCwgbGluZUhlaWdodCwgcGFkZGluZyB9ID0gdGhpcy5ibG9jay5vcHRpb25zO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yLFxuICAgICAgLi4uY3JlYXRlTGluZUhlaWdodChsaW5lSGVpZ2h0KSxcbiAgICAgIC4uLmNyZWF0ZUZvbnQoZm9udCksXG4gICAgICAuLi5jcmVhdGVQYWRkaW5nKHBhZGRpbmcpXG4gICAgfTtcbiAgfVxuXG4gIGdldExhYmVsU3R5bGVzKCkge1xuICAgIGNvbnN0IHsgaW5uZXJQYWRkaW5nIH0gPSB0aGlzLmJsb2NrLm9wdGlvbnM7XG4gICAgcmV0dXJuIHsgLi4uY3JlYXRlUGFkZGluZyhpbm5lclBhZGRpbmcpLCBsaW5lSGVpZ2h0OiAwIH07XG4gIH1cblxuICBnZXRTb2NpYWxMaXN0U3R5bGVzKCkge1xuICAgIGNvbnN0IHsgYWxpZ24gfSA9IHRoaXMuYmxvY2sub3B0aW9ucztcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgcGxhY2VDb250ZW50OlxuICAgICAgICAoYWxpZ24gPT09ICdsZWZ0JyAmJiAnZmxleC1zdGFydCcpIHx8XG4gICAgICAgIChhbGlnbiA9PT0gJ3JpZ2h0JyAmJiAnZmxleC1lbmQnKSB8fFxuICAgICAgICBhbGlnblxuICAgIH07XG4gIH1cblxuICBnZXRTb2NpYWxMaXN0Q2xhc3NlcygpIHtcbiAgICByZXR1cm4gYHNvY2lhbC1saXN0ICR7dGhpcy5ibG9jay5vcHRpb25zLm1vZGV9YDtcbiAgfVxuXG4gIGdldFNvY2lhbE5ldHdvcmtJY29uKG5ldHdvcms6IHN0cmluZykge1xuICAgIHJldHVybiBnZXRBc3NldEJ5UGF0aChgJHtuZXR3b3JrfS5wbmdgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component, HostBinding } from '@angular/core';
|
|
6
|
+
import { createWidthHeight } from '../../utils';
|
|
7
|
+
import { AbstractBlock } from '../abstract-block';
|
|
8
|
+
export class SpacerComponent extends AbstractBlock {
|
|
9
|
+
// @Input() block: SpacerBlock = new SpacerBlock();
|
|
10
|
+
get height() {
|
|
11
|
+
return createWidthHeight(this.block.options.height);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
SpacerComponent.decorators = [
|
|
15
|
+
{ type: Component, args: [{
|
|
16
|
+
selector: 'pb-spacer',
|
|
17
|
+
template: '',
|
|
18
|
+
styles: [`
|
|
19
|
+
:host {
|
|
20
|
+
display: table;
|
|
21
|
+
width: 100%;
|
|
22
|
+
transition: all 500ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
|
|
23
|
+
}
|
|
24
|
+
`]
|
|
25
|
+
},] }
|
|
26
|
+
];
|
|
27
|
+
SpacerComponent.propDecorators = {
|
|
28
|
+
height: [{ type: HostBinding, args: ['style.height',] }]
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BiLWVtYWlsLWJ1aWxkZXIvc3JjL2xpYi9lbGVtZW50cy9zcGFjZXIvc3BhY2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQTBCLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQWdCaEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBMEI7SUFDN0QsbURBQW1EO0lBRW5ELElBQWlDLE1BQU07UUFDckMsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7WUFuQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixRQUFRLEVBQUUsRUFBRTt5QkFFVjs7Ozs7O0tBTUM7YUFHSjs7O3FCQUlFLFdBQVcsU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmd9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTcGFjZXJCbG9ja30gZnJvbSAnLi4vLi4vY2xhc3Nlcy9FbGVtZW50cyc7XG5pbXBvcnQge2NyZWF0ZVdpZHRoSGVpZ2h0fSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmltcG9ydCB7QWJzdHJhY3RCbG9ja30gZnJvbSAnLi4vYWJzdHJhY3QtYmxvY2snO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYi1zcGFjZXInLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgNTAwbXMgY3ViaWMtYmV6aWVyKDAuNDQ1LCAwLjA1LCAwLjU1LCAwLjk1KTtcbiAgICAgIH1cbiAgICBgXG4gIF0sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNwYWNlckNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0QmxvY2s8U3BhY2VyQmxvY2s+IHtcbiAgLy8gQElucHV0KCkgYmxvY2s6IFNwYWNlckJsb2NrID0gbmV3IFNwYWNlckJsb2NrKCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKSBnZXQgaGVpZ2h0KCkge1xuICAgIHJldHVybiBjcmVhdGVXaWR0aEhlaWdodCh0aGlzLmJsb2NrLm9wdGlvbnMuaGVpZ2h0KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component, ViewEncapsulation } from '@angular/core';
|
|
6
|
+
import { debounceTime, map, mapTo, take, takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
8
|
+
import { createFont, createLineHeight, createPadding } from '../../utils';
|
|
9
|
+
import { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';
|
|
10
|
+
import { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
11
|
+
import { PbUserRestApiService } from '../../services/user-rest-api-service/user-rest-api.service';
|
|
12
|
+
import { AbstractBlock } from '../abstract-block';
|
|
13
|
+
export class TextElementComponent extends AbstractBlock {
|
|
14
|
+
constructor(userRestApi, emailObject, internalService) {
|
|
15
|
+
super();
|
|
16
|
+
this.userRestApi = userRestApi;
|
|
17
|
+
this.emailObject = emailObject;
|
|
18
|
+
this.internalService = internalService;
|
|
19
|
+
// @Input() block: TextBlock;
|
|
20
|
+
this.setAsReadOnly$ = this.internalService.currentEditingBlock$.pipe(map(editingBlock => editingBlock !== this.block));
|
|
21
|
+
this.staticQuillConfig = {
|
|
22
|
+
toolbar: {
|
|
23
|
+
container: [
|
|
24
|
+
['bold', 'italic', 'underline', 'strike'],
|
|
25
|
+
[{ header: [1, 2, 3, 4, 5, 6, false] }, { size: ['small', false, 'large', 'huge'] }],
|
|
26
|
+
[{ align: [] }, 'link'],
|
|
27
|
+
[{ list: 'ordered' }, { list: 'bullet' }],
|
|
28
|
+
[{ color: [] }, { background: [] }],
|
|
29
|
+
['clean']
|
|
30
|
+
],
|
|
31
|
+
handlers: {
|
|
32
|
+
placeholder(selector) {
|
|
33
|
+
const range = this.quill.getSelection();
|
|
34
|
+
const format = this.quill.getFormat();
|
|
35
|
+
const text = this.quill.getText(range.index, range.length);
|
|
36
|
+
this.quill.deleteText(range.index, text.length);
|
|
37
|
+
this.quill.insertText(range.index, selector, format);
|
|
38
|
+
this.quill.setSelection(range.index, selector.length);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
this.quillInit$ = this.userRestApi.getAllUserMergeFields$.pipe(map(placeholder => {
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
this.staticQuillConfig.toolbar.container.splice(-1, 0, [{ placeholder }]);
|
|
46
|
+
}), mapTo(true), take(1));
|
|
47
|
+
this.textChanged$ = new Subject();
|
|
48
|
+
this.componentDestroyed$ = new Subject();
|
|
49
|
+
}
|
|
50
|
+
getTextStyles() {
|
|
51
|
+
const { color, font, lineHeight, padding } = this.block.options;
|
|
52
|
+
return Object.assign(Object.assign(Object.assign({ color, 'word-break': 'break-all' }, createLineHeight(lineHeight)), createFont(font)), createPadding(padding));
|
|
53
|
+
}
|
|
54
|
+
contentChanged() {
|
|
55
|
+
this.textChanged$.next();
|
|
56
|
+
}
|
|
57
|
+
ngOnInit() {
|
|
58
|
+
this.textChanged$.pipe(debounceTime(600), takeUntil(this.componentDestroyed$)).subscribe(() => {
|
|
59
|
+
this.emailObject.markForCheck();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
ngOnDestroy() {
|
|
63
|
+
this.componentDestroyed$.next();
|
|
64
|
+
this.componentDestroyed$.complete();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
TextElementComponent.decorators = [
|
|
68
|
+
{ type: Component, args: [{
|
|
69
|
+
selector: 'pb-text-element',
|
|
70
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<div [ngStyle]=\"getTextStyles()\">\n <quill-editor *ngIf=\"quillInit$ | async; else loadingModules\" i18n-placeholder=\"text-element|placeholder\"\n placeholder=\"Insert text here ...\" [modules]=\"staticQuillConfig\" [readOnly]=\"setAsReadOnly$ |async\"\n [(ngModel)]=\"block.innerText\" (onContentChanged)=\"contentChanged()\">\n </quill-editor>\n</div>\n\n<ng-template #loadingModules>\n <span i18n=\"text-element|loading message\">Please wait ...</span>\n</ng-template>\n",
|
|
71
|
+
encapsulation: ViewEncapsulation.None,
|
|
72
|
+
styles: ["@charset \"UTF-8\";\n/*!\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;-o-tab-size:4;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:\"\u2022\"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:\"\u2611\"}.ql-editor ul[data-checked=false]>li:before{content:\"\u2610\"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) \". \"}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) \". \"}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) \". \"}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) \". \"}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) \". \"}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) \". \"}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) \". \"}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) \". \"}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) \". \"}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-bubble.ql-toolbar:after,.ql-bubble .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-bubble.ql-toolbar button,.ql-bubble .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-bubble.ql-toolbar button svg,.ql-bubble .ql-toolbar button svg{float:left;height:100%}.ql-bubble.ql-toolbar button:active:hover,.ql-bubble .ql-toolbar button:active:hover{outline:none}.ql-bubble.ql-toolbar input.ql-image[type=file],.ql-bubble .ql-toolbar input.ql-image[type=file]{display:none}.ql-bubble.ql-toolbar .ql-picker-item.ql-selected,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected,.ql-bubble.ql-toolbar .ql-picker-item:hover,.ql-bubble .ql-toolbar .ql-picker-item:hover,.ql-bubble.ql-toolbar .ql-picker-label.ql-active,.ql-bubble .ql-toolbar .ql-picker-label.ql-active,.ql-bubble.ql-toolbar .ql-picker-label:hover,.ql-bubble .ql-toolbar .ql-picker-label:hover,.ql-bubble.ql-toolbar button.ql-active,.ql-bubble .ql-toolbar button.ql-active,.ql-bubble.ql-toolbar button:focus,.ql-bubble .ql-toolbar button:focus,.ql-bubble.ql-toolbar button:hover,.ql-bubble .ql-toolbar button:hover{color:#fff}.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button:focus .ql-fill,.ql-bubble .ql-toolbar button:focus .ql-fill,.ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button:hover .ql-fill,.ql-bubble .ql-toolbar button:hover .ql-fill,.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#fff}.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble.ql-toolbar button.ql-active .ql-stroke,.ql-bubble .ql-toolbar button.ql-active .ql-stroke,.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar button:focus .ql-stroke,.ql-bubble .ql-toolbar button:focus .ql-stroke,.ql-bubble.ql-toolbar button:focus .ql-stroke-miter,.ql-bubble .ql-toolbar button:focus .ql-stroke-miter,.ql-bubble.ql-toolbar button:hover .ql-stroke,.ql-bubble .ql-toolbar button:hover .ql-stroke,.ql-bubble.ql-toolbar button:hover .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover .ql-stroke-miter{stroke:#fff}@media (pointer:coarse){.ql-bubble.ql-toolbar button:hover:not(.ql-active),.ql-bubble .ql-toolbar button:hover:not(.ql-active){color:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#ccc}}.ql-bubble,.ql-bubble *{box-sizing:border-box}.ql-bubble .ql-hidden{display:none}.ql-bubble .ql-out-bottom,.ql-bubble .ql-out-top{visibility:hidden}.ql-bubble .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-bubble .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-bubble .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-bubble .ql-formats{display:inline-block;vertical-align:middle}.ql-bubble .ql-formats:after{clear:both;content:\"\";display:table}.ql-bubble .ql-stroke{fill:none;stroke:#ccc;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-bubble .ql-stroke-miter{fill:none;stroke:#ccc;stroke-miterlimit:10;stroke-width:2}.ql-bubble .ql-fill,.ql-bubble .ql-stroke.ql-fill{fill:#ccc}.ql-bubble .ql-empty{fill:none}.ql-bubble .ql-even{fill-rule:evenodd}.ql-bubble .ql-stroke.ql-thin,.ql-bubble .ql-thin{stroke-width:1}.ql-bubble .ql-transparent{opacity:.4}.ql-bubble .ql-direction svg:last-child{display:none}.ql-bubble .ql-direction.ql-active svg:last-child{display:inline}.ql-bubble .ql-direction.ql-active svg:first-child{display:none}.ql-bubble .ql-editor h1{font-size:2em}.ql-bubble .ql-editor h2{font-size:1.5em}.ql-bubble .ql-editor h3{font-size:1.17em}.ql-bubble .ql-editor h4{font-size:1em}.ql-bubble .ql-editor h5{font-size:.83em}.ql-bubble .ql-editor h6{font-size:.67em}.ql-bubble .ql-editor a{text-decoration:underline}.ql-bubble .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-bubble .ql-editor code,.ql-bubble .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-bubble .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-bubble .ql-editor code{font-size:85%;padding:2px 4px}.ql-bubble .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-bubble .ql-editor img{max-width:100%}.ql-bubble .ql-picker{color:#ccc;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-bubble .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-bubble .ql-picker-label:before{display:inline-block;line-height:22px}.ql-bubble .ql-picker-options{background-color:#444;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-bubble .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-bubble .ql-picker.ql-expanded .ql-picker-label{color:#777;z-index:2}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-bubble .ql-color-picker,.ql-bubble .ql-icon-picker{width:28px}.ql-bubble .ql-color-picker .ql-picker-label,.ql-bubble .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-label svg,.ql-bubble .ql-icon-picker .ql-picker-label svg{right:4px}.ql-bubble .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-bubble .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-bubble .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-bubble .ql-picker.ql-header{width:98px}.ql-bubble .ql-picker.ql-header .ql-picker-item:before,.ql-bubble .ql-picker.ql-header .ql-picker-label:before{content:\"Normal\"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-bubble .ql-picker.ql-font{width:108px}.ql-bubble .ql-picker.ql-font .ql-picker-item:before,.ql-bubble .ql-picker.ql-font .ql-picker-label:before{content:\"Sans Serif\"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:\"Serif\"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:\"Monospace\"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-bubble .ql-picker.ql-size{width:98px}.ql-bubble .ql-picker.ql-size .ql-picker-item:before,.ql-bubble .ql-picker.ql-size .ql-picker-label:before{content:\"Normal\"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:\"Small\"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:\"Large\"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:\"Huge\"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-bubble .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-bubble .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-bubble .ql-toolbar .ql-formats{margin:8px 12px 8px 0}.ql-bubble .ql-toolbar .ql-formats:first-child{margin-left:12px}.ql-bubble .ql-color-picker svg{margin:1px}.ql-bubble .ql-color-picker .ql-picker-item.ql-selected,.ql-bubble .ql-color-picker .ql-picker-item:hover{border-color:#fff}.ql-bubble .ql-tooltip{background-color:#444;border-radius:25px;color:#fff}.ql-bubble .ql-tooltip-arrow{border-left:6px solid transparent;border-right:6px solid transparent;content:\" \";display:block;left:50%;margin-left:-6px;position:absolute}.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow{border-bottom:6px solid #444;top:-6px}.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow{border-top:6px solid #444;bottom:-6px}.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor{display:block}.ql-bubble .ql-tooltip.ql-editing .ql-formats{visibility:hidden}.ql-bubble .ql-tooltip-editor{display:none}.ql-bubble .ql-tooltip-editor input[type=text]{background:transparent;border:none;color:#fff;font-size:13px;height:100%;outline:none;padding:10px 20px;position:absolute;width:100%}.ql-bubble .ql-tooltip-editor a{top:10px;position:absolute;right:20px}.ql-bubble .ql-tooltip-editor a:before{color:#ccc;content:\"\u00D7\";font-size:16px;font-weight:700}.ql-container.ql-bubble:not(.ql-disabled) a{position:relative;white-space:nowrap}.ql-container.ql-bubble:not(.ql-disabled) a:before{background-color:#444;border-radius:15px;top:-5px;font-size:12px;color:#fff;content:attr(href);font-weight:400;overflow:hidden;padding:5px 15px;text-decoration:none;z-index:1}.ql-container.ql-bubble:not(.ql-disabled) a:after{border-top:6px solid #444;border-left:6px solid transparent;border-right:6px solid transparent;top:0;content:\" \";height:0;width:0}.ql-container.ql-bubble:not(.ql-disabled) a:after,.ql-container.ql-bubble:not(.ql-disabled) a:before{left:0;margin-left:50%;position:absolute;transform:translate(-50%,-100%);transition:visibility 0s ease .2s;visibility:hidden}.ql-container.ql-bubble:not(.ql-disabled) a:hover:after,.ql-container.ql-bubble:not(.ql-disabled) a:hover:before{visibility:visible}quill-editor{display:block;word-break:break-word}quill-editor .ql-container{font-family:inherit;font-size:inherit}quill-editor .ql-container .ql-editor{padding:0!important;line-height:inherit;font:inherit;overflow:visible}quill-editor .ql-placeholder .ql-picker-label:before{display:block;content:\"Tags\";min-width:50px}quill-editor .ql-placeholder.ql-expanded .ql-picker-item:before{content:attr(data-value);width:-moz-min-content;width:min-content}quill-editor .ql-tooltip{z-index:10;line-height:normal}quill-editor .ql-tooltip .ql-picker-options{max-height:300px;overflow:auto}quill-editor .ql-toolbar{width:600px;width:-moz-max-content;width:max-content}quill-editor h1,quill-editor h2,quill-editor h3,quill-editor h4,quill-editor h5,quill-editor h6{font-weight:inherit;line-height:inherit}"]
|
|
73
|
+
},] }
|
|
74
|
+
];
|
|
75
|
+
TextElementComponent.ctorParameters = () => [
|
|
76
|
+
{ type: PbUserRestApiService },
|
|
77
|
+
{ type: PbEmailObjectStoreService },
|
|
78
|
+
{ type: PbUserInterfaceService }
|
|
79
|
+
];
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BiLWVtYWlsLWJ1aWxkZXIvc3JjL2xpYi9lbGVtZW50cy90ZXh0LWVsZW1lbnQvdGV4dC1lbGVtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDekcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDekgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUWxELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxhQUF3QjtJQW9DaEUsWUFDVSxXQUFpQyxFQUNqQyxXQUFzQyxFQUN0QyxlQUF1QztRQUUvQyxLQUFLLEVBQUUsQ0FBQztRQUpBLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBMkI7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBdENqRCw2QkFBNkI7UUFDN0IsbUJBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0csc0JBQWlCLEdBQUc7WUFDekIsT0FBTyxFQUFFO2dCQUNQLFNBQVMsRUFBRTtvQkFDVCxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQztvQkFDekMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNwRixDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztvQkFDdkIsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDekMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztvQkFDbkMsQ0FBQyxPQUFPLENBQUM7aUJBQ1Y7Z0JBQ0QsUUFBUSxFQUFFO29CQUNSLFdBQVcsQ0FBQyxRQUFnQjt3QkFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQzt3QkFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hELENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFDYyxlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQ3ZFLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQixhQUFhO1lBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxFQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFDWCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztRQUNNLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3Qix3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBUTVDLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRWhFLG1EQUNFLEtBQUssRUFDTCxZQUFZLEVBQUUsV0FBVyxJQUN0QixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsR0FDNUIsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUNoQixhQUFhLENBQUMsT0FBTyxDQUFDLEVBQ3pCO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDNUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzs7WUEzRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLGtsQkFBNEM7Z0JBRTVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O1lBUlEsb0JBQW9CO1lBRHBCLHlCQUF5QjtZQUR6QixzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBtYXBUbywgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUZXh0QmxvY2sgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0VsZW1lbnRzJztcbmltcG9ydCB7IGNyZWF0ZUZvbnQsIGNyZWF0ZUxpbmVIZWlnaHQsIGNyZWF0ZVBhZGRpbmcgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBQYlVzZXJJbnRlcmZhY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW50ZXJuYWxzL3VzZXItaW50ZXJmYWNlcy91c2VyLWludGVyZmFjZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBiVXNlclJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci1yZXN0LWFwaS1zZXJ2aWNlL3VzZXItcmVzdC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEJsb2NrIH0gZnJvbSAnLi4vYWJzdHJhY3QtYmxvY2snO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYi10ZXh0LWVsZW1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGV4dEVsZW1lbnRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEJsb2NrPFRleHRCbG9jaz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIEBJbnB1dCgpIGJsb2NrOiBUZXh0QmxvY2s7XG4gIHNldEFzUmVhZE9ubHkkID0gdGhpcy5pbnRlcm5hbFNlcnZpY2UuY3VycmVudEVkaXRpbmdCbG9jayQucGlwZShtYXAoZWRpdGluZ0Jsb2NrID0+IGVkaXRpbmdCbG9jayAhPT0gdGhpcy5ibG9jaykpO1xuICBwdWJsaWMgc3RhdGljUXVpbGxDb25maWcgPSB7XG4gICAgdG9vbGJhcjoge1xuICAgICAgY29udGFpbmVyOiBbXG4gICAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZSddLFxuICAgICAgICBbeyBoZWFkZXI6IFsxLCAyLCAzLCA0LCA1LCA2LCBmYWxzZV0gfSwgeyBzaXplOiBbJ3NtYWxsJywgZmFsc2UsICdsYXJnZScsICdodWdlJ10gfV0sXG4gICAgICAgIFt7IGFsaWduOiBbXSB9LCAnbGluayddLFxuICAgICAgICBbeyBsaXN0OiAnb3JkZXJlZCcgfSwgeyBsaXN0OiAnYnVsbGV0JyB9XSxcbiAgICAgICAgW3sgY29sb3I6IFtdIH0sIHsgYmFja2dyb3VuZDogW10gfV0sXG4gICAgICAgIFsnY2xlYW4nXVxuICAgICAgXSxcbiAgICAgIGhhbmRsZXJzOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyKHNlbGVjdG9yOiBzdHJpbmcpIHtcbiAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5xdWlsbC5nZXRGb3JtYXQoKTtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5xdWlsbC5nZXRUZXh0KHJhbmdlLmluZGV4LCByYW5nZS5sZW5ndGgpO1xuICAgICAgICAgIHRoaXMucXVpbGwuZGVsZXRlVGV4dChyYW5nZS5pbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICAgIHRoaXMucXVpbGwuaW5zZXJ0VGV4dChyYW5nZS5pbmRleCwgc2VsZWN0b3IsIGZvcm1hdCk7XG4gICAgICAgICAgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXgsIHNlbGVjdG9yLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHB1YmxpYyByZWFkb25seSBxdWlsbEluaXQkID0gdGhpcy51c2VyUmVzdEFwaS5nZXRBbGxVc2VyTWVyZ2VGaWVsZHMkLnBpcGUoXG4gICAgbWFwKHBsYWNlaG9sZGVyID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuc3RhdGljUXVpbGxDb25maWcudG9vbGJhci5jb250YWluZXIuc3BsaWNlKC0xLCAwLCBbeyBwbGFjZWhvbGRlciB9XSk7XG4gICAgfSksXG4gICAgbWFwVG8odHJ1ZSksXG4gICAgdGFrZSgxKVxuICApO1xuICBwcml2YXRlIHRleHRDaGFuZ2VkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgY29tcG9uZW50RGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1c2VyUmVzdEFwaTogUGJVc2VyUmVzdEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbWFpbE9iamVjdDogUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIGludGVybmFsU2VydmljZTogUGJVc2VySW50ZXJmYWNlU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0VGV4dFN0eWxlcygpIHtcbiAgICBjb25zdCB7IGNvbG9yLCBmb250LCBsaW5lSGVpZ2h0LCBwYWRkaW5nIH0gPSB0aGlzLmJsb2NrLm9wdGlvbnM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3IsXG4gICAgICAnd29yZC1icmVhayc6ICdicmVhay1hbGwnLFxuICAgICAgLi4uY3JlYXRlTGluZUhlaWdodChsaW5lSGVpZ2h0KSxcbiAgICAgIC4uLmNyZWF0ZUZvbnQoZm9udCksXG4gICAgICAuLi5jcmVhdGVQYWRkaW5nKHBhZGRpbmcpXG4gICAgfTtcbiAgfVxuXG4gIGNvbnRlbnRDaGFuZ2VkKCkge1xuICAgIHRoaXMudGV4dENoYW5nZWQkLm5leHQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGV4dENoYW5nZWQkLnBpcGUoZGVib3VuY2VUaW1lKDYwMCksIHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|