@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,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
// import { Structure } from './Structure';
|
|
6
|
+
export class Defaults {
|
|
7
|
+
constructor(structures = [], general = {
|
|
8
|
+
name: '',
|
|
9
|
+
previewText: '',
|
|
10
|
+
width: {
|
|
11
|
+
value: 600,
|
|
12
|
+
unit: 'px',
|
|
13
|
+
units: ['px']
|
|
14
|
+
},
|
|
15
|
+
background: {
|
|
16
|
+
// url: '',
|
|
17
|
+
color: '#f1f1f1',
|
|
18
|
+
// repeat: 'repeat',
|
|
19
|
+
size: {
|
|
20
|
+
value: 100,
|
|
21
|
+
unit: '%',
|
|
22
|
+
auto: true,
|
|
23
|
+
units: ['px', '%', 'cover', 'contain']
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
padding: {
|
|
27
|
+
top: 16,
|
|
28
|
+
right: 10,
|
|
29
|
+
bottom: 10,
|
|
30
|
+
left: 10
|
|
31
|
+
},
|
|
32
|
+
direction: 'ltr',
|
|
33
|
+
global: {
|
|
34
|
+
// TODO Add more global configurations
|
|
35
|
+
// fonts: [],
|
|
36
|
+
padding: {
|
|
37
|
+
top: 0,
|
|
38
|
+
right: 0,
|
|
39
|
+
bottom: 0,
|
|
40
|
+
left: 0
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}) {
|
|
44
|
+
this.structures = structures;
|
|
45
|
+
this.general = general;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class PBEmail extends Defaults {
|
|
49
|
+
constructor({ structures, general } = {}) {
|
|
50
|
+
super(structures, general);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEVtYWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2NsYXNzZXMvRGVmYXVsdEVtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUdILDJDQUEyQztBQUUzQyxNQUFNLE9BQU8sUUFBUTtJQUNuQixZQUNTLGFBQTJCLEVBQUUsRUFDN0IsVUFBMkI7UUFDaEMsSUFBSSxFQUFFLEVBQUU7UUFDUixXQUFXLEVBQUUsRUFBRTtRQUNmLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRSxHQUFHO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDZDtRQUNELFVBQVUsRUFBRTtZQUNWLFdBQVc7WUFDWCxLQUFLLEVBQUUsU0FBUztZQUNoQixvQkFBb0I7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxHQUFHO2dCQUNULElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQzthQUN2QztTQUNGO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsR0FBRyxFQUFFLEVBQUU7WUFDUCxLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEVBQUU7U0FDVDtRQUNELFNBQVMsRUFBRSxLQUFLO1FBQ2hCLE1BQU0sRUFBRTtZQUNOLHNDQUFzQztZQUN0QyxhQUFhO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxDQUFDO2dCQUNOLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksRUFBRSxDQUFDO2FBQ1I7U0FDRjtLQUNGO1FBckNNLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBb0NiO0lBQ0EsQ0FBQztDQUNMO0FBRUQsTUFBTSxPQUFPLE9BQVEsU0FBUSxRQUFRO0lBQ25DLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxLQUFlLEVBQUU7UUFDaEQsS0FBSyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgSVN0cnVjdHVyZSwgSVBCRW1haWwsIElHZW5lcmFsT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG4vLyBpbXBvcnQgeyBTdHJ1Y3R1cmUgfSBmcm9tICcuL1N0cnVjdHVyZSc7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0cyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdHJ1Y3R1cmVzOiBJU3RydWN0dXJlW10gPSBbXSxcbiAgICBwdWJsaWMgZ2VuZXJhbDogSUdlbmVyYWxPcHRpb25zID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBwcmV2aWV3VGV4dDogJycsXG4gICAgICB3aWR0aDoge1xuICAgICAgICB2YWx1ZTogNjAwLFxuICAgICAgICB1bml0OiAncHgnLFxuICAgICAgICB1bml0czogWydweCddXG4gICAgICB9LFxuICAgICAgYmFja2dyb3VuZDoge1xuICAgICAgICAvLyB1cmw6ICcnLFxuICAgICAgICBjb2xvcjogJyNmMWYxZjEnLFxuICAgICAgICAvLyByZXBlYXQ6ICdyZXBlYXQnLFxuICAgICAgICBzaXplOiB7XG4gICAgICAgICAgdmFsdWU6IDEwMCxcbiAgICAgICAgICB1bml0OiAnJScsXG4gICAgICAgICAgYXV0bzogdHJ1ZSxcbiAgICAgICAgICB1bml0czogWydweCcsICclJywgJ2NvdmVyJywgJ2NvbnRhaW4nXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcGFkZGluZzoge1xuICAgICAgICB0b3A6IDE2LFxuICAgICAgICByaWdodDogMTAsXG4gICAgICAgIGJvdHRvbTogMTAsXG4gICAgICAgIGxlZnQ6IDEwXG4gICAgICB9LFxuICAgICAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgICAgIGdsb2JhbDoge1xuICAgICAgICAvLyBUT0RPIEFkZCBtb3JlIGdsb2JhbCBjb25maWd1cmF0aW9uc1xuICAgICAgICAvLyBmb250czogW10sXG4gICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgIGxlZnQ6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgUEJFbWFpbCBleHRlbmRzIERlZmF1bHRzIHtcbiAgY29uc3RydWN0b3IoeyBzdHJ1Y3R1cmVzLCBnZW5lcmFsIH06IElQQkVtYWlsID0ge30pIHtcbiAgICBzdXBlcihzdHJ1Y3R1cmVzLCBnZW5lcmFsKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { defaultsDeep } from '../utils';
|
|
6
|
+
export class AIPBlock {
|
|
7
|
+
}
|
|
8
|
+
export class TextBlock {
|
|
9
|
+
constructor(innerText, options, state = {
|
|
10
|
+
disabled: false,
|
|
11
|
+
message: ''
|
|
12
|
+
}) {
|
|
13
|
+
this.innerText = innerText;
|
|
14
|
+
this.state = state;
|
|
15
|
+
this.type = 'text';
|
|
16
|
+
this.icon = 'text_format';
|
|
17
|
+
this.options = {
|
|
18
|
+
color: '#000000',
|
|
19
|
+
font: {
|
|
20
|
+
fallback: 'Arial, Helvetica, sans-serif',
|
|
21
|
+
family: 'Roboto',
|
|
22
|
+
style: 'normal',
|
|
23
|
+
size: 16,
|
|
24
|
+
weight: 400
|
|
25
|
+
},
|
|
26
|
+
lineHeight: {
|
|
27
|
+
value: 40,
|
|
28
|
+
unit: 'none'
|
|
29
|
+
},
|
|
30
|
+
padding: {
|
|
31
|
+
top: 10,
|
|
32
|
+
right: 25,
|
|
33
|
+
bottom: 10,
|
|
34
|
+
left: 25
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
this.title = $localize `:@@text_block:Text`;
|
|
38
|
+
this.options = defaultsDeep(options, this.options);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class ImageBlock {
|
|
42
|
+
constructor(src = 'https://via.placeholder.com/600x200?text=CHANGE+ME', options, state = {
|
|
43
|
+
disabled: false,
|
|
44
|
+
message: ''
|
|
45
|
+
}) {
|
|
46
|
+
this.src = src;
|
|
47
|
+
this.state = state;
|
|
48
|
+
this.type = 'image';
|
|
49
|
+
this.icon = 'image';
|
|
50
|
+
this.options = {
|
|
51
|
+
border: {
|
|
52
|
+
color: '#cccccc',
|
|
53
|
+
style: 'solid',
|
|
54
|
+
width: 0,
|
|
55
|
+
radius: 0
|
|
56
|
+
},
|
|
57
|
+
width: {
|
|
58
|
+
value: 100,
|
|
59
|
+
unit: 'px',
|
|
60
|
+
auto: true,
|
|
61
|
+
units: ['px']
|
|
62
|
+
},
|
|
63
|
+
height: {
|
|
64
|
+
value: 100,
|
|
65
|
+
unit: 'px',
|
|
66
|
+
auto: true,
|
|
67
|
+
units: ['px']
|
|
68
|
+
},
|
|
69
|
+
link: {
|
|
70
|
+
href: '',
|
|
71
|
+
target: '_blank'
|
|
72
|
+
},
|
|
73
|
+
align: 'center',
|
|
74
|
+
title: '',
|
|
75
|
+
padding: {
|
|
76
|
+
top: 0,
|
|
77
|
+
right: 0,
|
|
78
|
+
bottom: 0,
|
|
79
|
+
left: 0
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
this.title = $localize `:@@image_block:Image`;
|
|
83
|
+
this.options = defaultsDeep(options, this.options);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export class ButtonBlock {
|
|
87
|
+
constructor(innerText = 'Click on me', options, state = {
|
|
88
|
+
disabled: false,
|
|
89
|
+
message: ''
|
|
90
|
+
}) {
|
|
91
|
+
this.innerText = innerText;
|
|
92
|
+
this.state = state;
|
|
93
|
+
this.type = 'button';
|
|
94
|
+
this.icon = 'radio_button_checked';
|
|
95
|
+
this.options = {
|
|
96
|
+
backgroundColor: '#414141',
|
|
97
|
+
border: {
|
|
98
|
+
color: '#414141',
|
|
99
|
+
style: 'solid',
|
|
100
|
+
width: 0,
|
|
101
|
+
radius: 3
|
|
102
|
+
},
|
|
103
|
+
color: '#ffffff',
|
|
104
|
+
font: {
|
|
105
|
+
fallback: 'Arial, Helvetica, sans-serif',
|
|
106
|
+
family: 'Roboto',
|
|
107
|
+
size: 13,
|
|
108
|
+
style: 'normal',
|
|
109
|
+
weight: 400
|
|
110
|
+
},
|
|
111
|
+
align: 'center',
|
|
112
|
+
fullWidth: false,
|
|
113
|
+
// verticalAlign: 'middle',
|
|
114
|
+
lineHeight: {
|
|
115
|
+
value: 120,
|
|
116
|
+
unit: '%'
|
|
117
|
+
},
|
|
118
|
+
link: {
|
|
119
|
+
href: '',
|
|
120
|
+
target: '_blank'
|
|
121
|
+
},
|
|
122
|
+
innerPadding: {
|
|
123
|
+
top: 10,
|
|
124
|
+
right: 25,
|
|
125
|
+
bottom: 10,
|
|
126
|
+
left: 25
|
|
127
|
+
},
|
|
128
|
+
padding: {
|
|
129
|
+
top: 10,
|
|
130
|
+
right: 25,
|
|
131
|
+
bottom: 10,
|
|
132
|
+
left: 25
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
this.title = $localize `:@@button_block:Button`;
|
|
136
|
+
this.options = defaultsDeep(options, this.options);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export class DividerBlock {
|
|
140
|
+
constructor(options, state = {
|
|
141
|
+
disabled: false,
|
|
142
|
+
message: ''
|
|
143
|
+
}) {
|
|
144
|
+
this.state = state;
|
|
145
|
+
this.type = 'divider';
|
|
146
|
+
this.icon = 'remove';
|
|
147
|
+
this.options = {
|
|
148
|
+
border: {
|
|
149
|
+
color: '#000000',
|
|
150
|
+
style: 'solid',
|
|
151
|
+
width: 4
|
|
152
|
+
},
|
|
153
|
+
padding: {
|
|
154
|
+
top: 10,
|
|
155
|
+
right: 25,
|
|
156
|
+
bottom: 10,
|
|
157
|
+
left: 25
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
this.title = $localize `:@@divider_block:Divider`;
|
|
161
|
+
this.options = defaultsDeep(options, this.options);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
export class SpacerBlock {
|
|
165
|
+
constructor(options, state = {
|
|
166
|
+
disabled: false,
|
|
167
|
+
message: ''
|
|
168
|
+
}) {
|
|
169
|
+
this.state = state;
|
|
170
|
+
this.type = 'spacer';
|
|
171
|
+
this.icon = 'vertical_align_center';
|
|
172
|
+
this.title = $localize `:@@spacer_block:Spacer`;
|
|
173
|
+
this.options = {
|
|
174
|
+
height: {
|
|
175
|
+
value: 20,
|
|
176
|
+
unit: 'px',
|
|
177
|
+
units: ['px']
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
this.options = defaultsDeep(options, this.options);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export class SocialBlock {
|
|
184
|
+
// https://mjml.io/documentation/#mjml-social
|
|
185
|
+
constructor(networks = [], options, state = {
|
|
186
|
+
disabled: false,
|
|
187
|
+
message: ''
|
|
188
|
+
}) {
|
|
189
|
+
this.networks = networks;
|
|
190
|
+
this.state = state;
|
|
191
|
+
this.type = 'social';
|
|
192
|
+
this.icon = 'share';
|
|
193
|
+
this.title = $localize `:@@share_block:Social`;
|
|
194
|
+
this.options = {
|
|
195
|
+
align: 'center',
|
|
196
|
+
mode: 'horizontal',
|
|
197
|
+
font: {
|
|
198
|
+
fallback: 'Arial, Helvetica, sans-serif',
|
|
199
|
+
family: 'Roboto',
|
|
200
|
+
style: 'normal',
|
|
201
|
+
size: 16,
|
|
202
|
+
weight: 400
|
|
203
|
+
},
|
|
204
|
+
iconSize: {
|
|
205
|
+
value: 30,
|
|
206
|
+
unit: 'px'
|
|
207
|
+
},
|
|
208
|
+
lineHeight: {
|
|
209
|
+
value: 16,
|
|
210
|
+
unit: 'px'
|
|
211
|
+
},
|
|
212
|
+
color: '#333333',
|
|
213
|
+
innerPadding: {
|
|
214
|
+
top: 4,
|
|
215
|
+
right: 4,
|
|
216
|
+
bottom: 4,
|
|
217
|
+
left: 4
|
|
218
|
+
},
|
|
219
|
+
padding: {
|
|
220
|
+
top: 10,
|
|
221
|
+
right: 25,
|
|
222
|
+
bottom: 10,
|
|
223
|
+
left: 25
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
this.options = defaultsDeep(options, this.options);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxlbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvY2xhc3Nlcy9FbGVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBb0J4QyxNQUFNLE9BQWdCLFFBQVE7Q0FNN0I7QUFFRCxNQUFNLE9BQU8sU0FBUztJQXlCcEIsWUFDUyxTQUFrQixFQUN6QixPQUEyQixFQUNwQixRQUFxQjtRQUMxQixRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxFQUFFO0tBQ1o7UUFMTSxjQUFTLEdBQVQsU0FBUyxDQUFTO1FBRWxCLFVBQUssR0FBTCxLQUFLLENBR1g7UUE5Qk0sU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUNkLFNBQUksR0FBRyxhQUFhLENBQUM7UUFDdkIsWUFBTyxHQUFzQjtZQUNsQyxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLEtBQUssRUFBRSxRQUFRO2dCQUNmLElBQUksRUFBRSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxHQUFHO2FBQ1o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNELE9BQU8sRUFBRTtnQkFDUCxHQUFHLEVBQUUsRUFBRTtnQkFDUCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxNQUFNLEVBQUUsRUFBRTtnQkFDVixJQUFJLEVBQUUsRUFBRTthQUNUO1NBQ0YsQ0FBQztRQUNGLFVBQUssR0FBRyxTQUFTLENBQUEsb0JBQW9CLENBQUM7UUFVcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJ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T0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxFQUFFO2dCQUNQLEtBQUssRUFBRSxFQUFFO2dCQUNULE1BQU0sRUFBRSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFO2FBQ1Q7U0FDRixDQUFDO1FBV0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgZGVmYXVsdHNEZWVwIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgSUJsb2NrU3RhdGUsXG4gIElCdXR0b25CbG9ja09wdGlvbnMsXG4gIElEaXZpZGVyQmxvY2tPcHRpb25zLFxuICBJSW1hZ2VCTG9ja09wdGlvbnMsXG4gIElTb2NpYWxCbG9ja09wdGlvbnMsXG4gIElTb2NpYWxOZXR3b3JrLFxuICBJU3BhY2VyQmxvY2tPcHRpb25zLFxuICBJVGV4dEJsb2NrT3B0aW9uc1xufSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgdHlwZSBUQmxvY2tzT3B0aW9ucyA9XG4gIHwgSVRleHRCbG9ja09wdGlvbnNcbiAgfCBJSW1hZ2VCTG9ja09wdGlvbnNcbiAgfCBJQnV0dG9uQmxvY2tPcHRpb25zXG4gIHwgSURpdmlkZXJCbG9ja09wdGlvbnNcbiAgfCBJU3BhY2VyQmxvY2tPcHRpb25zXG4gIHwgSVNvY2lhbEJsb2NrT3B0aW9ucztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFJUEJsb2NrIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSBpY29uOiBzdHJpbmc7XG4gIGFic3RyYWN0IHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBvcHRpb25zOiBUQmxvY2tzT3B0aW9ucztcbiAgcHVibGljIHN0YXRlOiBJQmxvY2tTdGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIFRleHRCbG9jayBpbXBsZW1lbnRzIEFJUEJsb2NrIHtcbiAgcmVhZG9ubHkgdHlwZSA9ICd0ZXh0JztcbiAgcmVhZG9ubHkgaWNvbiA9ICd0ZXh0X2Zvcm1hdCc7XG4gIHB1YmxpYyBvcHRpb25zOiBJVGV4dEJsb2NrT3B0aW9ucyA9IHtcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIGZvbnQ6IHtcbiAgICAgIGZhbGxiYWNrOiAnQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZicsXG4gICAgICBmYW1pbHk6ICdSb2JvdG8nLFxuICAgICAgc3R5bGU6ICdub3JtYWwnLFxuICAgICAgc2l6ZTogMTYsXG4gICAgICB3ZWlnaHQ6IDQwMFxuICAgIH0sXG4gICAgbGluZUhlaWdodDoge1xuICAgICAgdmFsdWU6IDQwLFxuICAgICAgdW5pdDogJ25vbmUnXG4gICAgfSxcbiAgICBwYWRkaW5nOiB7XG4gICAgICB0b3A6IDEwLFxuICAgICAgcmlnaHQ6IDI1LFxuICAgICAgYm90dG9tOiAxMCxcbiAgICAgIGxlZnQ6IDI1XG4gICAgfVxuICB9O1xuICB0aXRsZSA9ICRsb2NhbGl6ZWA6QEB0ZXh0X2Jsb2NrOlRleHRgO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbm5lclRleHQ/OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IElUZXh0QmxvY2tPcHRpb25zLFxuICAgIHB1YmxpYyBzdGF0ZTogSUJsb2NrU3RhdGUgPSB7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICBtZXNzYWdlOiAnJ1xuICAgIH1cbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0gZGVmYXVsdHNEZWVwKG9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltYWdlQmxvY2sgaW1wbGVtZW50cyBBSVBCbG9jayB7XG4gIHJlYWRvbmx5IHR5cGUgPSAnaW1hZ2UnO1xuICByZWFkb25seSBpY29uID0gJ2ltYWdlJztcbiAgcHVibGljIG9wdGlvbnM6IElJbWFnZUJMb2NrT3B0aW9ucyA9IHtcbiAgICBib3JkZXI6IHtcbiAgICAgIGNvbG9yOiAnI2NjY2NjYycsXG4gICAgICBzdHlsZTogJ3NvbGlkJyxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgcmFkaXVzOiAwXG4gICAgfSxcbiAgICB3aWR0aDoge1xuICAgICAgdmFsdWU6IDEwMCxcbiAgICAgIHVuaXQ6ICdweCcsXG4gICAgICBhdXRvOiB0cnVlLFxuICAgICAgdW5pdHM6IFsncHgnXVxuICAgIH0sXG4gICAgaGVpZ2h0OiB7XG4gICAgICB2YWx1ZTogMTAwLFxuICAgICAgdW5pdDogJ3B4JyxcbiAgICAgIGF1dG86IHRydWUsXG4gICAgICB1bml0czogWydweCddXG4gICAgfSxcbiAgICBsaW5rOiB7XG4gICAgICBocmVmOiAnJyxcbiAgICAgIHRhcmdldDogJ19ibGFuaydcbiAgICB9LFxuICAgIGFsaWduOiAnY2VudGVyJyxcbiAgICB0aXRsZTogJycsXG4gICAgcGFkZGluZzoge1xuICAgICAgdG9wOiAwLFxuICAgICAgcmlnaHQ6IDAsXG4gICAgICBib3R0b206IDAsXG4gICAgICBsZWZ0OiAwXG4gICAgfVxuICB9O1xuICB0aXRsZSA9ICRsb2NhbGl6ZWA6QEBpbWFnZV9ibG9jazpJbWFnZWA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNyYyA9ICdodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vNjAweDIwMD90ZXh0PUNIQU5HRStNRScsXG4gICAgb3B0aW9ucz86IElJbWFnZUJMb2NrT3B0aW9ucyxcbiAgICBwdWJsaWMgc3RhdGU6IElCbG9ja1N0YXRlID0ge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJydcbiAgICB9XG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IGRlZmF1bHRzRGVlcChvcHRpb25zLCB0aGlzLm9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdXR0b25CbG9jayBpbXBsZW1lbnRzIEFJUEJsb2NrIHtcbiAgcmVhZG9ubHkgdHlwZSA9ICdidXR0b24nO1xuICByZWFkb25seSBpY29uID0gJ3JhZGlvX2J1dHRvbl9jaGVja2VkJztcbiAgcHVibGljIG9wdGlvbnM6IElCdXR0b25CbG9ja09wdGlvbnMgPSB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAnIzQxNDE0MScsXG4gICAgYm9yZGVyOiB7XG4gICAgICBjb2xvcjogJyM0MTQxNDEnLFxuICAgICAgc3R5bGU6ICdzb2xpZCcsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIHJhZGl1czogM1xuICAgIH0sXG4gICAgY29sb3I6ICcjZmZmZmZmJyxcbiAgICBmb250OiB7XG4gICAgICBmYWxsYmFjazogJ0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnLFxuICAgICAgZmFtaWx5OiAnUm9ib3RvJyxcbiAgICAgIHNpemU6IDEzLFxuICAgICAgc3R5bGU6ICdub3JtYWwnLFxuICAgICAgd2VpZ2h0OiA0MDBcbiAgICB9LFxuXG4gICAgYWxpZ246ICdjZW50ZXInLFxuICAgIGZ1bGxXaWR0aDogZmFsc2UsXG4gICAgLy8gdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gICAgbGluZUhlaWdodDoge1xuICAgICAgdmFsdWU6IDEyMCxcbiAgICAgIHVuaXQ6ICclJ1xuICAgIH0sXG4gICAgbGluazoge1xuICAgICAgaHJlZjogJycsXG4gICAgICB0YXJnZXQ6ICdfYmxhbmsnXG4gICAgfSxcbiAgICBpbm5lclBhZGRpbmc6IHtcbiAgICAgIHRvcDogMTAsXG4gICAgICByaWdodDogMjUsXG4gICAgICBib3R0b206IDEwLFxuICAgICAgbGVmdDogMjVcbiAgICB9LFxuICAgIHBhZGRpbmc6IHtcbiAgICAgIHRvcDogMTAsXG4gICAgICByaWdodDogMjUsXG4gICAgICBib3R0b206IDEwLFxuICAgICAgbGVmdDogMjVcbiAgICB9XG4gIH07XG4gIHRpdGxlID0gJGxvY2FsaXplYDpAQGJ1dHRvbl9ibG9jazpCdXR0b25gO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbm5lclRleHQ6IHN0cmluZyA9ICdDbGljayBvbiBtZScsXG4gICAgb3B0aW9ucz86IElCdXR0b25CbG9ja09wdGlvbnMsXG4gICAgcHVibGljIHN0YXRlOiBJQmxvY2tTdGF0ZSA9IHtcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICcnXG4gICAgfVxuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBkZWZhdWx0c0RlZXAob3B0aW9ucywgdGhpcy5vcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGl2aWRlckJsb2NrIGltcGxlbWVudHMgQUlQQmxvY2sge1xuICByZWFkb25seSB0eXBlID0gJ2RpdmlkZXInO1xuICByZWFkb25seSBpY29uID0gJ3JlbW92ZSc7XG4gIHB1YmxpYyBvcHRpb25zOiBJRGl2aWRlckJsb2NrT3B0aW9ucyA9IHtcbiAgICBib3JkZXI6IHtcbiAgICAgIGNvbG9yOiAnIzAwMDAwMCcsXG4gICAgICBzdHlsZTogJ3NvbGlkJyxcbiAgICAgIHdpZHRoOiA0XG4gICAgfSxcbiAgICBwYWRkaW5nOiB7XG4gICAgICB0b3A6IDEwLFxuICAgICAgcmlnaHQ6IDI1LFxuICAgICAgYm90dG9tOiAxMCxcbiAgICAgIGxlZnQ6IDI1XG4gICAgfVxuICB9O1xuICB0aXRsZSA9ICRsb2NhbGl6ZWA6QEBkaXZpZGVyX2Jsb2NrOkRpdmlkZXJgO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wdGlvbnM/OiBJRGl2aWRlckJsb2NrT3B0aW9ucyxcbiAgICBwdWJsaWMgc3RhdGU6IElCbG9ja1N0YXRlID0ge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJydcbiAgICB9XG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IGRlZmF1bHRzRGVlcChvcHRpb25zLCB0aGlzLm9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTcGFjZXJCbG9jayBpbXBsZW1lbnRzIEFJUEJsb2NrIHtcbiAgcmVhZG9ubHkgdHlwZSA9ICdzcGFjZXInO1xuICByZWFkb25seSBpY29uID0gJ3ZlcnRpY2FsX2FsaWduX2NlbnRlcic7XG4gIHRpdGxlID0gJGxvY2FsaXplYDpAQHNwYWNlcl9ibG9jazpTcGFjZXJgO1xuXG4gIG9wdGlvbnM6IElTcGFjZXJCbG9ja09wdGlvbnMgPSB7XG4gICAgaGVpZ2h0OiB7XG4gICAgICB2YWx1ZTogMjAsXG4gICAgICB1bml0OiAncHgnLFxuICAgICAgdW5pdHM6IFsncHgnXVxuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBvcHRpb25zPzogSVNwYWNlckJsb2NrT3B0aW9ucyxcbiAgICBwdWJsaWMgc3RhdGU6IElCbG9ja1N0YXRlID0ge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogJydcbiAgICB9XG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IGRlZmF1bHRzRGVlcChvcHRpb25zLCB0aGlzLm9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2NpYWxCbG9jayBpbXBsZW1lbnRzIEFJUEJsb2NrIHtcbiAgcmVhZG9ubHkgdHlwZSA9ICdzb2NpYWwnO1xuICByZWFkb25seSBpY29uID0gJ3NoYXJlJztcbiAgdGl0bGUgPSAkbG9jYWxpemVgOkBAc2hhcmVfYmxvY2s6U29jaWFsYDtcblxuICBvcHRpb25zOiBJU29jaWFsQmxvY2tPcHRpb25zID0ge1xuICAgIGFsaWduOiAnY2VudGVyJyxcbiAgICBtb2RlOiAnaG9yaXpvbnRhbCcsXG4gICAgZm9udDoge1xuICAgICAgZmFsbGJhY2s6ICdBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxcbiAgICAgIGZhbWlseTogJ1JvYm90bycsXG4gICAgICBzdHlsZTogJ25vcm1hbCcsXG4gICAgICBzaXplOiAxNixcbiAgICAgIHdlaWdodDogNDAwXG4gICAgfSxcbiAgICBpY29uU2l6ZToge1xuICAgICAgdmFsdWU6IDMwLFxuICAgICAgdW5pdDogJ3B4J1xuICAgIH0sXG4gICAgbGluZUhlaWdodDoge1xuICAgICAgdmFsdWU6IDE2LFxuICAgICAgdW5pdDogJ3B4J1xuICAgIH0sXG4gICAgY29sb3I6ICcjMzMzMzMzJyxcbiAgICBpbm5lclBhZGRpbmc6IHtcbiAgICAgIHRvcDogNCxcbiAgICAgIHJpZ2h0OiA0LFxuICAgICAgYm90dG9tOiA0LFxuICAgICAgbGVmdDogNFxuICAgIH0sXG4gICAgcGFkZGluZzoge1xuICAgICAgdG9wOiAxMCxcbiAgICAgIHJpZ2h0OiAyNSxcbiAgICAgIGJvdHRvbTogMTAsXG4gICAgICBsZWZ0OiAyNVxuICAgIH1cbiAgfTtcblxuICAvLyBodHRwczovL21qbWwuaW8vZG9jdW1lbnRhdGlvbi8jbWptbC1zb2NpYWxcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5ldHdvcmtzOiBJU29jaWFsTmV0d29ya1tdID0gW10sXG4gICAgb3B0aW9ucz86IElTb2NpYWxCbG9ja09wdGlvbnMsXG4gICAgcHVibGljIHN0YXRlOiBJQmxvY2tTdGF0ZSA9IHtcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6ICcnXG4gICAgfVxuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBkZWZhdWx0c0RlZXAob3B0aW9ucywgdGhpcy5vcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUQmxvY2tzID0gVGV4dEJsb2NrIHwgSW1hZ2VCbG9jayB8IEJ1dHRvbkJsb2NrIHwgRGl2aWRlckJsb2NrIHwgU3BhY2VyQmxvY2sgfCBTb2NpYWxCbG9jaztcbiJdfQ==
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { defaultsDeep } from '../utils';
|
|
6
|
+
export const defaultColumnsOptions = {
|
|
7
|
+
background: {
|
|
8
|
+
color: 'transparent'
|
|
9
|
+
},
|
|
10
|
+
border: {
|
|
11
|
+
width: 0,
|
|
12
|
+
color: '#cccccc',
|
|
13
|
+
radius: 0,
|
|
14
|
+
style: 'solid'
|
|
15
|
+
},
|
|
16
|
+
verticalAlign: 'top'
|
|
17
|
+
};
|
|
18
|
+
export class Structure {
|
|
19
|
+
constructor(type = 'cols_1', elements = [], options) {
|
|
20
|
+
this.type = type;
|
|
21
|
+
this.elements = elements;
|
|
22
|
+
this.columns = 1;
|
|
23
|
+
this.id = Date.now();
|
|
24
|
+
this.options = {
|
|
25
|
+
fullWidth: false,
|
|
26
|
+
border: {
|
|
27
|
+
color: '#cccccc',
|
|
28
|
+
style: 'solid',
|
|
29
|
+
width: 0,
|
|
30
|
+
radius: 0
|
|
31
|
+
},
|
|
32
|
+
background: {
|
|
33
|
+
color: '#ffffff',
|
|
34
|
+
url: '',
|
|
35
|
+
repeat: 'repeat',
|
|
36
|
+
size: {
|
|
37
|
+
value: 100,
|
|
38
|
+
unit: 'px',
|
|
39
|
+
auto: true,
|
|
40
|
+
units: ['px', '%', 'cover', 'contain']
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
padding: {
|
|
44
|
+
top: 4,
|
|
45
|
+
right: 4,
|
|
46
|
+
bottom: 4,
|
|
47
|
+
left: 4
|
|
48
|
+
},
|
|
49
|
+
margin: {
|
|
50
|
+
top: 0,
|
|
51
|
+
bottom: 0
|
|
52
|
+
},
|
|
53
|
+
gaps: [4, 4]
|
|
54
|
+
};
|
|
55
|
+
if (!elements.length) {
|
|
56
|
+
if (['cols_2', 'cols_12', 'cols_21'].includes(type)) {
|
|
57
|
+
this.columns = 2;
|
|
58
|
+
}
|
|
59
|
+
else if (type === 'cols_3') {
|
|
60
|
+
this.columns = 3;
|
|
61
|
+
}
|
|
62
|
+
else if (type === 'cols_4') {
|
|
63
|
+
this.columns = 4;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const columns = Array.from({ length: this.columns }, () => defaultColumnsOptions);
|
|
67
|
+
let columnsWidth = [1];
|
|
68
|
+
if (type === 'cols_21') {
|
|
69
|
+
columnsWidth = [4, 6];
|
|
70
|
+
}
|
|
71
|
+
else if (type === 'cols_12') {
|
|
72
|
+
columnsWidth = [6, 4];
|
|
73
|
+
}
|
|
74
|
+
else if (type === 'cols_2') {
|
|
75
|
+
columnsWidth = [5, 5];
|
|
76
|
+
}
|
|
77
|
+
else if (type === 'cols_3') {
|
|
78
|
+
columnsWidth = [3.33, 3.33, 3.33];
|
|
79
|
+
}
|
|
80
|
+
else if (type === 'cols_4') {
|
|
81
|
+
columnsWidth = [2.5, 2.5, 2.5, 2.5];
|
|
82
|
+
}
|
|
83
|
+
this.options = defaultsDeep(options, this.options, {
|
|
84
|
+
columns,
|
|
85
|
+
columnsWidth
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2NsYXNzZXMvU3RydWN0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUlILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQTRCO0lBQzVELFVBQVUsRUFBRTtRQUNWLEtBQUssRUFBRSxhQUFhO0tBQ3JCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsQ0FBQztRQUNULEtBQUssRUFBRSxPQUFPO0tBQ2Y7SUFDRCxhQUFhLEVBQUUsS0FBSztDQUNyQixDQUFDO0FBRUYsTUFBTSxPQUFPLFNBQVM7SUFtQ3BCLFlBQXFCLE9BQXdCLFFBQVEsRUFBUyxXQUF3QixFQUFFLEVBQUUsT0FBMkI7UUFBaEcsU0FBSSxHQUFKLElBQUksQ0FBNEI7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQWxDeEYsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNILE9BQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFzQjtZQUMzQixTQUFTLEVBQUUsS0FBSztZQUNoQixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxPQUFPO2dCQUNkLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEdBQUcsRUFBRSxFQUFFO2dCQUNQLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEdBQUc7b0JBQ1YsSUFBSSxFQUFFLElBQUk7b0JBQ1YsSUFBSSxFQUFFLElBQUk7b0JBQ1YsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO2lCQUN2QzthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxDQUFDO2dCQUNOLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksRUFBRSxDQUFDO2FBQ1I7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxFQUFFLENBQUM7YUFDVjtZQUNELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDYixDQUFDO1FBR0EsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQzthQUNsQjtpQkFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO2lCQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7YUFDbEI7U0FDRjtRQUVELE1BQU0sT0FBTyxHQUE4QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdHLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2QjthQUFNLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUM3QixZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdkI7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzVCLFlBQVksR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkM7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqRCxPQUFPO1lBQ1AsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBJU3RydWN0dXJlLCBJU3RydWN0dXJlQ29sdW1uT3B0aW9ucywgSVN0cnVjdHVyZU9wdGlvbnMsIFRTdHJ1Y3R1cmVUeXBlcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUQmxvY2tzIH0gZnJvbSAnLi9FbGVtZW50cyc7XG5pbXBvcnQgeyBkZWZhdWx0c0RlZXAgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29sdW1uc09wdGlvbnM6IElTdHJ1Y3R1cmVDb2x1bW5PcHRpb25zID0ge1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgY29sb3I6ICd0cmFuc3BhcmVudCdcbiAgfSxcbiAgYm9yZGVyOiB7XG4gICAgd2lkdGg6IDAsXG4gICAgY29sb3I6ICcjY2NjY2NjJyxcbiAgICByYWRpdXM6IDAsXG4gICAgc3R5bGU6ICdzb2xpZCdcbiAgfSxcbiAgdmVydGljYWxBbGlnbjogJ3RvcCdcbn07XG5cbmV4cG9ydCBjbGFzcyBTdHJ1Y3R1cmUgaW1wbGVtZW50cyBJU3RydWN0dXJlIHtcbiAgY29sdW1ucyA9IDE7XG4gIHJlYWRvbmx5IGlkID0gRGF0ZS5ub3coKTtcbiAgb3B0aW9uczogSVN0cnVjdHVyZU9wdGlvbnMgPSB7XG4gICAgZnVsbFdpZHRoOiBmYWxzZSxcbiAgICBib3JkZXI6IHtcbiAgICAgIGNvbG9yOiAnI2NjY2NjYycsXG4gICAgICBzdHlsZTogJ3NvbGlkJyxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgcmFkaXVzOiAwXG4gICAgfSxcbiAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICBjb2xvcjogJyNmZmZmZmYnLFxuICAgICAgdXJsOiAnJyxcbiAgICAgIHJlcGVhdDogJ3JlcGVhdCcsXG4gICAgICBzaXplOiB7XG4gICAgICAgIHZhbHVlOiAxMDAsXG4gICAgICAgIHVuaXQ6ICdweCcsXG4gICAgICAgIGF1dG86IHRydWUsXG4gICAgICAgIHVuaXRzOiBbJ3B4JywgJyUnLCAnY292ZXInLCAnY29udGFpbiddXG4gICAgICB9XG4gICAgfSxcbiAgICBwYWRkaW5nOiB7XG4gICAgICB0b3A6IDQsXG4gICAgICByaWdodDogNCxcbiAgICAgIGJvdHRvbTogNCxcbiAgICAgIGxlZnQ6IDRcbiAgICB9LFxuICAgIG1hcmdpbjoge1xuICAgICAgdG9wOiAwLFxuICAgICAgYm90dG9tOiAwXG4gICAgfSxcbiAgICBnYXBzOiBbNCwgNF1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSB0eXBlOiBUU3RydWN0dXJlVHlwZXMgPSAnY29sc18xJywgcHVibGljIGVsZW1lbnRzOiBUQmxvY2tzW11bXSA9IFtdLCBvcHRpb25zPzogSVN0cnVjdHVyZU9wdGlvbnMpIHtcbiAgICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgaWYgKFsnY29sc18yJywgJ2NvbHNfMTInLCAnY29sc18yMSddLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IDI7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2xzXzMnKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IDM7XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2xzXzQnKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IDQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uczogSVN0cnVjdHVyZUNvbHVtbk9wdGlvbnNbXSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuY29sdW1ucyB9LCAoKSA9PiBkZWZhdWx0Q29sdW1uc09wdGlvbnMpO1xuXG4gICAgbGV0IGNvbHVtbnNXaWR0aCA9IFsxXTtcbiAgICBpZiAodHlwZSA9PT0gJ2NvbHNfMjEnKSB7XG4gICAgICBjb2x1bW5zV2lkdGggPSBbNCwgNl07XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sc18xMicpIHtcbiAgICAgIGNvbHVtbnNXaWR0aCA9IFs2LCA0XTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2xzXzInKSB7XG4gICAgICBjb2x1bW5zV2lkdGggPSBbNSwgNV07XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sc18zJykge1xuICAgICAgY29sdW1uc1dpZHRoID0gWzMuMzMsIDMuMzMsIDMuMzNdO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHNfNCcpIHtcbiAgICAgIGNvbHVtbnNXaWR0aCA9IFsyLjUsIDIuNSwgMi41LCAyLjVdO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IGRlZmF1bHRzRGVlcChvcHRpb25zLCB0aGlzLm9wdGlvbnMsIHtcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb2x1bW5zV2lkdGhcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component, Input, ChangeDetectionStrategy, HostListener, HostBinding, ChangeDetectorRef } from '@angular/core';
|
|
6
|
+
import { exhaustMap, take, map, filter, takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
8
|
+
import { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';
|
|
9
|
+
import { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
10
|
+
import { PbUserMiddlewaresService } from '../../services/user-middleware-service/pb-middlewares.service';
|
|
11
|
+
export class BlockComponent {
|
|
12
|
+
constructor(pbMiddlewaresService, userInterfaceService, emailObjectStore, chRef) {
|
|
13
|
+
this.pbMiddlewaresService = pbMiddlewaresService;
|
|
14
|
+
this.userInterfaceService = userInterfaceService;
|
|
15
|
+
this.emailObjectStore = emailObjectStore;
|
|
16
|
+
this.chRef = chRef;
|
|
17
|
+
this.isActive = false;
|
|
18
|
+
this.componentIsDestroyed$ = new Subject();
|
|
19
|
+
}
|
|
20
|
+
onHostClick(event) {
|
|
21
|
+
event.stopImmediatePropagation();
|
|
22
|
+
this.editBlock();
|
|
23
|
+
}
|
|
24
|
+
get isBlockActive() {
|
|
25
|
+
return this.isActive;
|
|
26
|
+
}
|
|
27
|
+
removeBlock() {
|
|
28
|
+
this.pbMiddlewaresService
|
|
29
|
+
.removeBlock(this.index, this.column, this.block)
|
|
30
|
+
.pipe(exhaustMap(() => this.userInterfaceService.confirmDialog$()), filter(removeAllowed => removeAllowed), take(1))
|
|
31
|
+
.subscribe(() => {
|
|
32
|
+
this.emailObjectStore.removeBlock(this.index, this.column);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
duplicateBlock() {
|
|
36
|
+
this.pbMiddlewaresService
|
|
37
|
+
.duplicateBlock(this.index, this.column, this.block)
|
|
38
|
+
.pipe(map(data => this.emailObjectStore.duplicateBlock(data.index, data.column, data.block)), take(1))
|
|
39
|
+
.subscribe(() => {
|
|
40
|
+
// this.chRef.markForCheck();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
editBlock() {
|
|
44
|
+
this.pbMiddlewaresService
|
|
45
|
+
.editBlock(this.block)
|
|
46
|
+
.pipe(take(1))
|
|
47
|
+
.subscribe(block => {
|
|
48
|
+
this.userInterfaceService.editBlock(block);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
ngOnInit() {
|
|
52
|
+
this.userInterfaceService.currentEditingBlock$
|
|
53
|
+
.pipe(map(currentEditingBlock => currentEditingBlock === this.block), takeUntil(this.componentIsDestroyed$))
|
|
54
|
+
.subscribe(isActive => {
|
|
55
|
+
this.isActive = isActive;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
ngDoCheck() {
|
|
59
|
+
if (this.isActive) {
|
|
60
|
+
this.chRef.markForCheck();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
ngOnDestroy() {
|
|
64
|
+
this.componentIsDestroyed$.next('');
|
|
65
|
+
this.componentIsDestroyed$.complete();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
BlockComponent.decorators = [
|
|
69
|
+
{ type: Component, args: [{
|
|
70
|
+
selector: 'pb-block',
|
|
71
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<ng-content select=\".move\"></ng-content>\n<div class=\"tools\" fxLayout fxLayoutGap=\"0.25rem\">\n <button mat-icon-button (click)=\"duplicateBlock()\" i18n-matTooltip=\"block|Duplicate Block\"\n matTooltip=\"Duplicate Block\">\n <mat-icon i18n-aria-label=\"block|Duplicate Block\" aria-label=\"Duplicate block\" inline>file_copy</mat-icon>\n </button>\n <button mat-icon-button (click)=\"removeBlock()\" i18n-matTooltip=\"block|Remove Block\" class=\"delete\"\n matTooltip=\"Remove Block\">\n <mat-icon i18n-aria-label=\"block|Remove Block\" aria-label=\"Delete block\" inline>delete_forever</mat-icon>\n </button>\n</div>\n<ng-content *pbDynamicComponent=\"block\"></ng-content>\n",
|
|
72
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
73
|
+
styles: ["/*!\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */:host{display:block;position:relative}:host.active:not(.cdk-drag-preview)>.tools{opacity:1;display:flex!important}:host.active,:host.cdk-drag-placeholder,:host.cdk-drag-preview{z-index:3;box-shadow:0 0 0 2px #3f51b5}:host:hover:not(.active){box-shadow:0 0 0 2px rgba(63,81,181,.5)}:host>.tools{direction:ltr;opacity:0;z-index:4;position:absolute;max-width:100%;bottom:-25px;right:0;display:none!important;transition:all .5s ease-in-out}:host>.tools>button{background:#3f51b5;border-radius:3px;color:#fff;line-height:0;width:25px;height:25px}:host>.tools>button mat-icon{font-size:14px;margin-top:-3px}:host>.tools ::ng-deep+*>*{transition:all .5s cubic-bezier(.445,.05,.55,.95)}"]
|
|
74
|
+
},] }
|
|
75
|
+
];
|
|
76
|
+
BlockComponent.ctorParameters = () => [
|
|
77
|
+
{ type: PbUserMiddlewaresService },
|
|
78
|
+
{ type: PbUserInterfaceService },
|
|
79
|
+
{ type: PbEmailObjectStoreService },
|
|
80
|
+
{ type: ChangeDetectorRef }
|
|
81
|
+
];
|
|
82
|
+
BlockComponent.propDecorators = {
|
|
83
|
+
block: [{ type: Input }],
|
|
84
|
+
column: [{ type: Input }],
|
|
85
|
+
index: [{ type: Input }],
|
|
86
|
+
onHostClick: [{ type: HostListener, args: ['click', ['$event'],] }],
|
|
87
|
+
isBlockActive: [{ type: HostBinding, args: ['class.active',] }]
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2svYmxvY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLHVCQUF1QixFQUN2QixZQUFZLEVBQ1osV0FBVyxFQUdYLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDekcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDekgsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFRekcsTUFBTSxPQUFPLGNBQWM7SUFpQnpCLFlBQ1Usb0JBQThDLEVBQzlDLG9CQUE0QyxFQUM1QyxnQkFBMkMsRUFDM0MsS0FBd0I7UUFIeEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUEwQjtRQUM5Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXdCO1FBQzVDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMkI7UUFDM0MsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFoQjNCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDUCwwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBZ0JwRCxDQUFDO0lBZCtCLFdBQVcsQ0FBQyxLQUFpQjtRQUM5RCxLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FB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Ii8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBEb0NoZWNrLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdExpc3RlbmVyLFxuICBIb3N0QmluZGluZyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgdGFrZSwgbWFwLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRCbG9ja3MgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0VsZW1lbnRzJztcbmltcG9ydCB7IFBiVXNlckludGVyZmFjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnRlcm5hbHMvdXNlci1pbnRlcmZhY2VzL3VzZXItaW50ZXJmYWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ludGVybmFscy9wYi1lbWFpbC1vYmplY3Qtc3RvcmUvcGItZW1haWwtb2JqZWN0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGJVc2VyTWlkZGxld2FyZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci1taWRkbGV3YXJlLXNlcnZpY2UvcGItbWlkZGxld2FyZXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BiLWJsb2NrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jsb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmxvY2suY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmxvY2tDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGJsb2NrOiBUQmxvY2tzO1xuICBASW5wdXQoKSBjb2x1bW46IFRCbG9ja3NbXTtcbiAgQElucHV0KCkgaW5kZXg6IG51bWJlcjtcblxuICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRJc0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgb25Ib3N0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmVkaXRCbG9jaygpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKSBnZXQgaXNCbG9ja0FjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0FjdGl2ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGJNaWRkbGV3YXJlc1NlcnZpY2U6IFBiVXNlck1pZGRsZXdhcmVzU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJJbnRlcmZhY2VTZXJ2aWNlOiBQYlVzZXJJbnRlcmZhY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1haWxPYmplY3RTdG9yZTogUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIGNoUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgcmVtb3ZlQmxvY2soKSB7XG4gICAgdGhpcy5wYk1pZGRsZXdhcmVzU2VydmljZVxuICAgICAgLnJlbW92ZUJsb2NrKHRoaXMuaW5kZXgsIHRoaXMuY29sdW1uLCB0aGlzLmJsb2NrKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51c2VySW50ZXJmYWNlU2VydmljZS5jb25maXJtRGlhbG9nJCgpKSxcbiAgICAgICAgZmlsdGVyKHJlbW92ZUFsbG93ZWQgPT4gcmVtb3ZlQWxsb3dlZCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmVtYWlsT2JqZWN0U3RvcmUucmVtb3ZlQmxvY2sodGhpcy5pbmRleCwgdGhpcy5jb2x1bW4pO1xuICAgICAgfSk7XG4gIH1cblxuICBkdXBsaWNhdGVCbG9jaygpIHtcbiAgICB0aGlzLnBiTWlkZGxld2FyZXNTZXJ2aWNlXG4gICAgICAuZHVwbGljYXRlQmxvY2sodGhpcy5pbmRleCwgdGhpcy5jb2x1bW4sIHRoaXMuYmxvY2spXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGRhdGEgPT4gdGhpcy5lbWFpbE9iamVjdFN0b3JlLmR1cGxpY2F0ZUJsb2NrKGRhdGEuaW5kZXgsIGRhdGEuY29sdW1uLCBkYXRhLmJsb2NrKSksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyB0aGlzLmNoUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBlZGl0QmxvY2soKSB7XG4gICAgdGhpcy5wYk1pZGRsZXdhcmVzU2VydmljZVxuICAgICAgLmVkaXRCbG9jayh0aGlzLmJsb2NrKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoYmxvY2sgPT4ge1xuICAgICAgICB0aGlzLnVzZXJJbnRlcmZhY2VTZXJ2aWNlLmVkaXRCbG9jayhibG9jayk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXNlckludGVyZmFjZVNlcnZpY2UuY3VycmVudEVkaXRpbmdCbG9jayRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoY3VycmVudEVkaXRpbmdCbG9jayA9PiBjdXJyZW50RWRpdGluZ0Jsb2NrID09PSB0aGlzLmJsb2NrKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50SXNEZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShpc0FjdGl2ZSA9PiB7XG4gICAgICAgIHRoaXMuaXNBY3RpdmUgPSBpc0FjdGl2ZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICB0aGlzLmNoUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29tcG9uZW50SXNEZXN0cm95ZWQkLm5leHQoJycpO1xuICAgIHRoaXMuY29tcG9uZW50SXNEZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024 Pobuca.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject } from '@angular/core';
|
|
6
|
+
import { getAssetByPath } from '../../utils';
|
|
7
|
+
import { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';
|
|
8
|
+
import { PB_SOCIAL_NETWORKS } from '../../tokens/tokens';
|
|
9
|
+
import { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';
|
|
10
|
+
export class BlockSettingsComponent {
|
|
11
|
+
constructor(internalService, emailObject, networks) {
|
|
12
|
+
this.internalService = internalService;
|
|
13
|
+
this.emailObject = emailObject;
|
|
14
|
+
this.networks = networks;
|
|
15
|
+
this.block$ = this.internalService.currentEditingBlock$;
|
|
16
|
+
}
|
|
17
|
+
hasProperty(options, property) {
|
|
18
|
+
return options.hasOwnProperty(property);
|
|
19
|
+
}
|
|
20
|
+
markForCheck() {
|
|
21
|
+
this.emailObject.markForCheck();
|
|
22
|
+
}
|
|
23
|
+
socialNetworks(block) {
|
|
24
|
+
return this.networks.filter(link => !block.networks.find(({ name }) => name === link)).sort();
|
|
25
|
+
}
|
|
26
|
+
addSocialNetwork({ value, source }, block) {
|
|
27
|
+
block.networks.push({ name: value, href: '', label: '' });
|
|
28
|
+
source.value = '';
|
|
29
|
+
this.markForCheck();
|
|
30
|
+
}
|
|
31
|
+
removeSocialNetwork(network, block) {
|
|
32
|
+
block.networks = block.networks.filter(n => n !== network);
|
|
33
|
+
this.markForCheck();
|
|
34
|
+
}
|
|
35
|
+
getSocialIcon(network) {
|
|
36
|
+
return getAssetByPath(`${network}.png`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
BlockSettingsComponent.decorators = [
|
|
40
|
+
{ type: Component, args: [{
|
|
41
|
+
selector: 'pb-block-settings',
|
|
42
|
+
template: "<!--\n ~ Copyright (c) 2024 Pobuca.\n ~ All rights reserved.\n -->\n\n<ng-container *ngIf=\"block$ | async as currentBlock\">\n <mat-accordion>\n <mat-expansion-panel expanded *ngIf=\"hasProperty(currentBlock.options, 'font')\">\n <mat-expansion-panel-header i18n=\"settings|Font\">\n Font\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-color [options]=\"currentBlock.options\" key=\"color\"></pb-color>\n <pb-font-styles [font]=\"currentBlock.options.font\"></pb-font-styles>\n <pb-line-height *ngIf=\"currentBlock.type !== 'social'\" [lineHeight]=\"currentBlock.options.lineHeight\">\n </pb-line-height>\n </ng-template>\n </mat-expansion-panel>\n\n <ng-container *ngIf=\"currentBlock.type === 'image'\">\n <mat-expansion-panel expanded>\n <mat-expansion-panel-header i18n=\"settings|Image\">\n Image\n </mat-expansion-panel-header>\n <pb-image-upload [block]=\"currentBlock\"></pb-image-upload>\n </mat-expansion-panel>\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"settings|Image Attributes\">\n Attributes\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <div class=\"group f-large\">\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"settings|Image Alt\">Alt</mat-label>\n <input matInput [(ngModel)]=\"currentBlock.options.title\" type=\"text\" i18n-placeholder\n placeholder=\"settings|Image Alt\" (input)=\"markForCheck()\" />\n </mat-form-field>\n <pb-align [model]=\"currentBlock.options\"></pb-align>\n </div>\n <pb-link [link]=\"currentBlock.options.link\"></pb-link>\n </ng-template>\n </mat-expansion-panel>\n </ng-container>\n\n <ng-container *ngIf=\"currentBlock.type === 'button'\">\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"settings|Button Text\">\n Button Text\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\n <mat-label i18n=\"settings|Button Text\">Button Text</mat-label>\n <input matInput [(ngModel)]=\"currentBlock.innerText\" type=\"text\" i18n-placeholder\n placeholder=\"settings|Button Text\" (input)=\"markForCheck()\" />\n </mat-form-field>\n </ng-template>\n </mat-expansion-panel>\n\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"settings|Background\">\n Background\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-color [options]=\"currentBlock.options\"></pb-color>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"settings|Button Attributes\">\n Attributes\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <div class=\"group two\" style=\"padding-bottom: 0\">\n <pb-align [model]=\"currentBlock.options\" [disabled]=\"currentBlock.options.fullWidth\"></pb-align>\n <mat-slide-toggle style=\"margin-top: -24px\" [(ngModel)]=\"currentBlock.options.fullWidth\"\n (change)=\"markForCheck()\">\n <ng-container i18n=\"settings|Button Full Width\">Full Width</ng-container>\n </mat-slide-toggle>\n </div>\n <pb-link [link]=\"currentBlock.options.link\"></pb-link>\n <pb-padding [padding]=\"currentBlock.options.innerPadding\"></pb-padding>\n </ng-template>\n </mat-expansion-panel>\n </ng-container>\n\n <mat-expansion-panel [expanded]=\"currentBlock.type === 'spacer'\"\n *ngIf=\"hasProperty(currentBlock.options, 'width') || hasProperty(currentBlock.options, 'height')\">\n <mat-expansion-panel-header i18n=\"settings|Sizes\">\n Sizes\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-width-height *ngIf=\"hasProperty(currentBlock.options, 'width')\" [model]=\"currentBlock.options.width\"\n label=\"width\"></pb-width-height>\n <pb-width-height *ngIf=\"hasProperty(currentBlock.options, 'height')\" [model]=\"currentBlock.options.height\"\n label=\"height\"></pb-width-height>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel *ngIf=\"hasProperty(currentBlock.options, 'background')\">\n <mat-expansion-panel-header i18n=\"settings|Background\">\n Background\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-color [options]=\"currentBlock.options.background\"></pb-color>\n </ng-template>\n backgroundColor\n </mat-expansion-panel>\n\n <mat-expansion-panel [expanded]=\"currentBlock.type === 'divider'\"\n *ngIf=\"hasProperty(currentBlock.options, 'border')\">\n <mat-expansion-panel-header>\n <ng-container i18n=\"settings|Divider Styles\" *ngIf=\"currentBlock.type === 'divider'\">Styles</ng-container>\n <ng-container i18n=\"settings|Border\" *ngIf=\"currentBlock.type !== 'divider'\">Border</ng-container>\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-border [border]=\"currentBlock.options.border\"></pb-border>\n </ng-template>\n </mat-expansion-panel>\n\n <ng-container *ngIf=\"currentBlock.type === 'social'\">\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"settings|Icons\">\n Icons\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\n <mat-label i18n=\"settings|Add new Network\">Add new Network</mat-label>\n <mat-select (selectionChange)=\"addSocialNetwork($event, currentBlock)\" [disabled]=\"!socialNetworks.length\">\n <mat-option style=\"text-transform: capitalize\" *ngFor=\"let link of socialNetworks(currentBlock)\"\n [value]=\"link\">\n {{ link }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel class=\"networks-list\" *ngFor=\"let network of currentBlock.networks\">\n <mat-expansion-panel-header style=\"text-transform: capitalize\">\n <img [class]=\"network.name\" [src]=\"getSocialIcon(network.name)\" [alt]=\"network.name\" />\n {{ network.name }}\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <div class=\"networks-list-item\">\n <div class=\"item-info\">\n <mat-form-field matLine appearance=\"outline\">\n <mat-label i18n=\"settings|Social Network Label\">Label</mat-label>\n <input matInput autocomplete=\"off\" [(ngModel)]=\"network.label\"\n i18n-placeholder=\"settings|Social Network Label\" placeholder=\"Label\" type=\"text\"\n (input)=\"markForCheck()\" />\n </mat-form-field>\n <button mat-stroked-button color=\"warn\" (click)=\"removeSocialNetwork(network, currentBlock)\">\n <mat-icon>delete_forever</mat-icon>\n </button>\n </div>\n <mat-form-field matLine appearance=\"outline\">\n <mat-label style=\"text-transform: capitalize\">\n {{ network.name }} <ng-container i18n=\"settings|Social Network Link\">Link</ng-container>\n </mat-label>\n <input autocomplete=\"off\" matInput [(ngModel)]=\"network.href\" type=\"url\" (input)=\"markForCheck()\" />\n </mat-form-field>\n </div>\n </ng-template>\n </mat-expansion-panel>\n\n <mat-expansion-panel>\n <mat-expansion-panel-header i18n=\"settings|Social Styles\">\n Styles\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <div class=\"group two\" style=\"padding-bottom: 0\">\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"settings|Social Model\">Mode</mat-label>\n <mat-select (selectionChange)=\"markForCheck()\" i18n-placeholder=\"settings|Social Model\" placeholder=\"Mode\"\n [(value)]=\"currentBlock.options.mode\" disableRipple>\n <mat-option *ngFor=\"let mode of ['horizontal', 'vertical']\" [value]=\"mode\">\n {{ mode }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <pb-align [model]=\"currentBlock.options\"></pb-align>\n </div>\n <pb-line-height [units]=\"['px']\" [lineHeight]=\"currentBlock.options.iconSize\" label=\"Icon Size\">\n </pb-line-height>\n <pb-padding [padding]=\"currentBlock.options.innerPadding\"></pb-padding>\n </ng-template>\n </mat-expansion-panel>\n </ng-container>\n\n <mat-expansion-panel *ngIf=\"hasProperty(currentBlock.options, 'padding')\">\n <mat-expansion-panel-header i18n=\"settings|Padding\">\n Padding\n </mat-expansion-panel-header>\n <ng-template matExpansionPanelContent>\n <pb-padding [padding]=\"currentBlock.options.padding\"></pb-padding>\n </ng-template>\n </mat-expansion-panel>\n </mat-accordion>\n</ng-container>\n",
|
|
43
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
44
|
+
encapsulation: ViewEncapsulation.None,
|
|
45
|
+
styles: ["/*!\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */.networks-list mat-expansion-panel-header .mat-content{place-items:center}.networks-list mat-expansion-panel-header img{width:20px;margin:0 .5rem 0 0;border-radius:3px}.networks-list mat-expansion-panel-header img.facebook{background-color:#3a5898}.networks-list mat-expansion-panel-header img.twitter{background-color:#d95988}.networks-list mat-expansion-panel-header img.github{background-color:#000}.networks-list mat-expansion-panel-header img.instagram{background-color:#3f729b}.networks-list mat-expansion-panel-header img.web{background-color:#4bade9}.networks-list mat-expansion-panel-header img.snapchat{background-color:#fffa54}.networks-list mat-expansion-panel-header img.youtube{background-color:#ea3323}.networks-list mat-expansion-panel-header img.vimeo{background-color:#53b4e7}.networks-list mat-expansion-panel-header img.medium{background-color:#000}.networks-list mat-expansion-panel-header img.soundcloud{background-color:#ef7f31}.networks-list mat-expansion-panel-header img.dribbble{background-color:#d95988}.networks-list mat-expansion-panel-header img.pinterest{background-color:#bd071c}.networks-list mat-expansion-panel-header img.linkedin{background-color:#0077b5}.networks-list mat-expansion-panel-header img.tumblr{background-color:#334356}.networks-list mat-expansion-panel-header img.xing{background-color:#296365}.networks-list mat-expansion-panel-header img.tiktok{background-color:#000}.networks-list-item{width:100%;display:grid;row-gap:.5rem}.networks-list-item .item-info{display:grid;grid-template-columns:2fr 1fr;-moz-column-gap:.5rem;column-gap:.5rem}.networks-list-item .item-info button{align-self:baseline;margin:.25rem 0;height:50px}.networks-list-item .item-info ::ng-deep .mat-form-field-wrapper{padding-bottom:0;margin-bottom:0}"]
|
|
46
|
+
},] }
|
|
47
|
+
];
|
|
48
|
+
BlockSettingsComponent.ctorParameters = () => [
|
|
49
|
+
{ type: PbUserInterfaceService },
|
|
50
|
+
{ type: PbEmailObjectStoreService },
|
|
51
|
+
{ type: Array, decorators: [{ type: Inject, args: [PB_SOCIAL_NETWORKS,] }] }
|
|
52
|
+
];
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2stc2V0dGluZ3MvYmxvY2stc2V0dGluZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFTekgsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUNVLGVBQXVDLEVBQ3ZDLFdBQXNDLEVBQ1YsUUFBa0I7UUFGOUMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtRQUNWLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMeEQsV0FBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUM7SUFNaEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUF1QixFQUFFLFFBQWdCO1FBQ25ELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFrQjtRQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hHLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQW1CLEVBQUUsS0FBa0I7UUFDckUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUF1QixFQUFFLEtBQWtCO1FBQzdELEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZTtRQUMzQixPQUFPLGNBQWMsQ0FBQyxHQUFHLE9BQU8sTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7O1lBekNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QiwrNlNBQThDO2dCQUU5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFWUSxzQkFBc0I7WUFFdEIseUJBQXlCO3dDQWU3QixNQUFNLFNBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5cbmltcG9ydCB7IFNvY2lhbEJsb2NrLCBUQmxvY2tzT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvRWxlbWVudHMnO1xuaW1wb3J0IHsgSVNvY2lhbE5ldHdvcmsgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0QXNzZXRCeVBhdGggfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBQYlVzZXJJbnRlcmZhY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW50ZXJuYWxzL3VzZXItaW50ZXJmYWNlcy91c2VyLWludGVyZmFjZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBCX1NPQ0lBTF9ORVRXT1JLUyB9IGZyb20gJy4uLy4uL3Rva2Vucy90b2tlbnMnO1xuaW1wb3J0IHsgUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ludGVybmFscy9wYi1lbWFpbC1vYmplY3Qtc3RvcmUvcGItZW1haWwtb2JqZWN0LXN0b3JlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwYi1ibG9jay1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ibG9jay1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jsb2NrLXNldHRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEJsb2NrU2V0dGluZ3NDb21wb25lbnQge1xuICBibG9jayQgPSB0aGlzLmludGVybmFsU2VydmljZS5jdXJyZW50RWRpdGluZ0Jsb2NrJDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludGVybmFsU2VydmljZTogUGJVc2VySW50ZXJmYWNlU2VydmljZSxcbiAgICBwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlLFxuICAgIEBJbmplY3QoUEJfU09DSUFMX05FVFdPUktTKSBwcml2YXRlIG5ldHdvcmtzOiBzdHJpbmdbXVxuICApIHt9XG5cbiAgaGFzUHJvcGVydHkob3B0aW9uczogVEJsb2Nrc09wdGlvbnMsIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gIH1cblxuICBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNvY2lhbE5ldHdvcmtzKGJsb2NrOiBTb2NpYWxCbG9jaykge1xuICAgIHJldHVybiB0aGlzLm5ldHdvcmtzLmZpbHRlcihsaW5rID0+ICFibG9jay5uZXR3b3Jrcy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gbGluaykpLnNvcnQoKTtcbiAgfVxuXG4gIGFkZFNvY2lhbE5ldHdvcmsoeyB2YWx1ZSwgc291cmNlIH06IE1hdFNlbGVjdENoYW5nZSwgYmxvY2s6IFNvY2lhbEJsb2NrKSB7XG4gICAgYmxvY2submV0d29ya3MucHVzaCh7IG5hbWU6IHZhbHVlLCBocmVmOiAnJywgbGFiZWw6ICcnIH0pO1xuICAgIHNvdXJjZS52YWx1ZSA9ICcnO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZW1vdmVTb2NpYWxOZXR3b3JrKG5ldHdvcms6IElTb2NpYWxOZXR3b3JrLCBibG9jazogU29jaWFsQmxvY2spIHtcbiAgICBibG9jay5uZXR3b3JrcyA9IGJsb2NrLm5ldHdvcmtzLmZpbHRlcihuID0+IG4gIT09IG5ldHdvcmspO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXRTb2NpYWxJY29uKG5ldHdvcms6IHN0cmluZykge1xuICAgIHJldHVybiBnZXRBc3NldEJ5UGF0aChgJHtuZXR3b3JrfS5wbmdgKTtcbiAgfVxufVxuIl19
|