@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.
Files changed (150) hide show
  1. package/README.md +1 -0
  2. package/assets/icons/dribbble.png +0 -0
  3. package/assets/icons/facebook.png +0 -0
  4. package/assets/icons/github.png +0 -0
  5. package/assets/icons/instagram.png +0 -0
  6. package/assets/icons/linkedin.png +0 -0
  7. package/assets/icons/medium.png +0 -0
  8. package/assets/icons/pinterest.png +0 -0
  9. package/assets/icons/snapchat.png +0 -0
  10. package/assets/icons/soundcloud.png +0 -0
  11. package/assets/icons/tumblr.png +0 -0
  12. package/assets/icons/twitter.png +0 -0
  13. package/assets/icons/vimeo.png +0 -0
  14. package/assets/icons/web.png +0 -0
  15. package/assets/icons/xing.png +0 -0
  16. package/assets/icons/youtube.png +0 -0
  17. package/bundles/pobuca-email-builder.umd.js +4664 -0
  18. package/bundles/pobuca-email-builder.umd.js.map +1 -0
  19. package/bundles/pobuca-email-builder.umd.min.js +2 -0
  20. package/bundles/pobuca-email-builder.umd.min.js.map +1 -0
  21. package/esm2015/lib/classes/DefaultEmail.js +53 -0
  22. package/esm2015/lib/classes/Elements.js +229 -0
  23. package/esm2015/lib/classes/Structure.js +89 -0
  24. package/esm2015/lib/components/block/block.component.js +89 -0
  25. package/esm2015/lib/components/block-settings/block-settings.component.js +53 -0
  26. package/esm2015/lib/components/builder-container/builder-container.component.js +114 -0
  27. package/esm2015/lib/components/dialog.component.js +30 -0
  28. package/esm2015/lib/components/general-settings/general-settings.component.js +25 -0
  29. package/esm2015/lib/components/import-dialog/import-dialog.component.js +62 -0
  30. package/esm2015/lib/components/preview.component.js +89 -0
  31. package/esm2015/lib/components/structure/structure.component.js +163 -0
  32. package/esm2015/lib/components/structure-settings/structure-settings.component.js +31 -0
  33. package/esm2015/lib/components/template-list-dialog/template-list-dialog.component.js +45 -0
  34. package/esm2015/lib/directives/dynamic-component.directive.js +46 -0
  35. package/esm2015/lib/elements/abstract-block.js +23 -0
  36. package/esm2015/lib/elements/button/button.component.js +29 -0
  37. package/esm2015/lib/elements/divider/divider.component.js +30 -0
  38. package/esm2015/lib/elements/image/image.component.js +54 -0
  39. package/esm2015/lib/elements/social/social.component.js +42 -0
  40. package/esm2015/lib/elements/spacer/spacer.component.js +30 -0
  41. package/esm2015/lib/elements/text-element/text-element.component.js +80 -0
  42. package/esm2015/lib/groups/align.js +79 -0
  43. package/esm2015/lib/groups/back-repeat.js +55 -0
  44. package/esm2015/lib/groups/border.js +102 -0
  45. package/esm2015/lib/groups/color.js +139 -0
  46. package/esm2015/lib/groups/direction.js +63 -0
  47. package/esm2015/lib/groups/font-styles.js +112 -0
  48. package/esm2015/lib/groups/gaps.js +45 -0
  49. package/esm2015/lib/groups/line-height.js +68 -0
  50. package/esm2015/lib/groups/link.js +67 -0
  51. package/esm2015/lib/groups/margin.js +45 -0
  52. package/esm2015/lib/groups/padding.js +53 -0
  53. package/esm2015/lib/groups/upload-image.js +112 -0
  54. package/esm2015/lib/groups/width-height.js +94 -0
  55. package/esm2015/lib/interceptors/pb-interceptor.interceptor.js +51 -0
  56. package/esm2015/lib/interfaces/interfaces.js +13 -0
  57. package/esm2015/lib/pb-email-builder.component.js +246 -0
  58. package/esm2015/lib/pb-email-builder.module.js +291 -0
  59. package/esm2015/lib/pb-email-builder.service.js +134 -0
  60. package/esm2015/lib/pipes/slugify.pipe.js +39 -0
  61. package/esm2015/lib/services/internals/pb-email-object-store/pb-email-object-store.service.js +165 -0
  62. package/esm2015/lib/services/internals/user-interfaces/user-interface.service.js +122 -0
  63. package/esm2015/lib/services/pb-storage/FreeUsersStorage.class.js +11 -0
  64. package/esm2015/lib/services/pb-storage/index.js +7 -0
  65. package/esm2015/lib/services/pb-storage/pb-storage.service.js +79 -0
  66. package/esm2015/lib/services/user-image-uploader-service/free-users-image-uploader.service.js +26 -0
  67. package/esm2015/lib/services/user-image-uploader-service/index.js +8 -0
  68. package/esm2015/lib/services/user-image-uploader-service/paid-users-image-uploader.service.js +30 -0
  69. package/esm2015/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.js +112 -0
  70. package/esm2015/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.js +91 -0
  71. package/esm2015/lib/services/user-image-uploader-service/user-image-uploader.service.js +26 -0
  72. package/esm2015/lib/services/user-middleware-service/FreeUsersMiddleware.js +31 -0
  73. package/esm2015/lib/services/user-middleware-service/PaidUsersMiddleware.js +12 -0
  74. package/esm2015/lib/services/user-middleware-service/index.js +8 -0
  75. package/esm2015/lib/services/user-middleware-service/pb-middlewares.service.js +195 -0
  76. package/esm2015/lib/services/user-rest-api-service/free-users-rest-api.service.js +16 -0
  77. package/esm2015/lib/services/user-rest-api-service/index.js +7 -0
  78. package/esm2015/lib/services/user-rest-api-service/user-rest-api.service.js +116 -0
  79. package/esm2015/lib/tokens/private-tokens.js +17 -0
  80. package/esm2015/lib/tokens/tokens.js +159 -0
  81. package/esm2015/lib/utils.js +147 -0
  82. package/esm2015/pobuca-email-builder.js +43 -0
  83. package/esm2015/public_api.js +26 -0
  84. package/fesm2015/pobuca-email-builder.js +4335 -0
  85. package/fesm2015/pobuca-email-builder.js.map +1 -0
  86. package/lib/classes/DefaultEmail.d.ts +9 -0
  87. package/lib/classes/Elements.d.ts +62 -0
  88. package/lib/classes/Structure.d.ts +11 -0
  89. package/lib/components/block/block.component.d.ts +25 -0
  90. package/lib/components/block-settings/block-settings.component.d.ts +18 -0
  91. package/lib/components/builder-container/builder-container.component.d.ts +36 -0
  92. package/lib/components/dialog.component.d.ts +10 -0
  93. package/lib/components/general-settings/general-settings.component.d.ts +6 -0
  94. package/lib/components/import-dialog/import-dialog.component.d.ts +16 -0
  95. package/lib/components/preview.component.d.ts +18 -0
  96. package/lib/components/structure/structure.component.d.ts +43 -0
  97. package/lib/components/structure-settings/structure-settings.component.d.ts +9 -0
  98. package/lib/components/template-list-dialog/template-list-dialog.component.d.ts +15 -0
  99. package/lib/directives/dynamic-component.directive.d.ts +13 -0
  100. package/lib/elements/abstract-block.d.ts +8 -0
  101. package/lib/elements/button/button.component.d.ts +18 -0
  102. package/lib/elements/divider/divider.component.d.ts +10 -0
  103. package/lib/elements/image/image.component.d.ts +19 -0
  104. package/lib/elements/social/social.component.d.ts +21 -0
  105. package/lib/elements/spacer/spacer.component.d.ts +5 -0
  106. package/lib/elements/text-element/text-element.component.d.ts +52 -0
  107. package/lib/groups/align.d.ts +17 -0
  108. package/lib/groups/back-repeat.d.ts +8 -0
  109. package/lib/groups/border.d.ts +13 -0
  110. package/lib/groups/color.d.ts +26 -0
  111. package/lib/groups/direction.d.ts +13 -0
  112. package/lib/groups/font-styles.d.ts +17 -0
  113. package/lib/groups/gaps.d.ts +7 -0
  114. package/lib/groups/line-height.d.ts +12 -0
  115. package/lib/groups/link.d.ts +11 -0
  116. package/lib/groups/margin.d.ts +8 -0
  117. package/lib/groups/padding.d.ts +8 -0
  118. package/lib/groups/upload-image.d.ts +19 -0
  119. package/lib/groups/width-height.d.ts +19 -0
  120. package/lib/interceptors/pb-interceptor.interceptor.d.ts +10 -0
  121. package/lib/interfaces/interfaces.d.ts +422 -0
  122. package/lib/pb-email-builder.component.d.ts +67 -0
  123. package/lib/pb-email-builder.module.d.ts +51 -0
  124. package/lib/pb-email-builder.service.d.ts +83 -0
  125. package/lib/pipes/slugify.pipe.d.ts +9 -0
  126. package/lib/services/internals/pb-email-object-store/pb-email-object-store.service.d.ts +50 -0
  127. package/lib/services/internals/user-interfaces/user-interface.service.d.ts +46 -0
  128. package/lib/services/pb-storage/FreeUsersStorage.class.d.ts +6 -0
  129. package/lib/services/pb-storage/index.d.ts +2 -0
  130. package/lib/services/pb-storage/pb-storage.service.d.ts +54 -0
  131. package/lib/services/user-image-uploader-service/free-users-image-uploader.service.d.ts +12 -0
  132. package/lib/services/user-image-uploader-service/index.d.ts +3 -0
  133. package/lib/services/user-image-uploader-service/paid-users-image-uploader.service.d.ts +14 -0
  134. package/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.d.ts +28 -0
  135. package/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.d.ts +27 -0
  136. package/lib/services/user-image-uploader-service/user-image-uploader.service.d.ts +26 -0
  137. package/lib/services/user-middleware-service/FreeUsersMiddleware.d.ts +15 -0
  138. package/lib/services/user-middleware-service/PaidUsersMiddleware.d.ts +7 -0
  139. package/lib/services/user-middleware-service/index.d.ts +3 -0
  140. package/lib/services/user-middleware-service/pb-middlewares.service.d.ts +190 -0
  141. package/lib/services/user-rest-api-service/free-users-rest-api.service.d.ts +10 -0
  142. package/lib/services/user-rest-api-service/index.d.ts +2 -0
  143. package/lib/services/user-rest-api-service/user-rest-api.service.d.ts +82 -0
  144. package/lib/tokens/private-tokens.d.ts +5 -0
  145. package/lib/tokens/tokens.d.ts +70 -0
  146. package/lib/utils.d.ts +88 -0
  147. package/package.json +37 -0
  148. package/pobuca-email-builder.d.ts +42 -0
  149. package/pobuca-email-builder.metadata.json +1 -0
  150. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxlbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvY2xhc3Nlcy9FbGVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBb0J4QyxNQUFNLE9BQWdCLFFBQVE7Q0FNN0I7QUFFRCxNQUFNLE9BQU8sU0FBUztJQXlCcEIsWUFDUyxTQUFrQixFQUN6QixPQUEyQixFQUNwQixRQUFxQjtRQUMxQixRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxFQUFFO0tBQ1o7UUFMTSxjQUFTLEdBQVQsU0FBUyxDQUFTO1FBRWxCLFVBQUssR0FBTCxLQUFLLENBR1g7UUE5Qk0sU0FBSSxHQUFHLE1BQU0sQ0FBQztRQUNkLFNBQUksR0FBRyxhQUFhLENBQUM7UUFDdkIsWUFBTyxHQUFzQjtZQUNsQyxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLEtBQUssRUFBRSxRQUFRO2dCQUNmLElBQUksRUFBRSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxHQUFHO2FBQ1o7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNELE9BQU8sRUFBRTtnQkFDUCxHQUFHLEVBQUUsRUFBRTtnQkFDUCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxNQUFNLEVBQUUsRUFBRTtnQkFDVixJQUFJLEVBQUUsRUFBRTthQUNUO1NBQ0YsQ0FBQztRQUNGLFVBQUssR0FBRyxTQUFTLENBQUEsb0JBQW9CLENBQUM7UUFVcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQXFDckIsWUFDUyxNQUFNLG9EQUFvRCxFQUNqRSxPQUE0QixFQUNyQixRQUFxQjtRQUMxQixRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxFQUFFO0tBQ1o7UUFMTSxRQUFHLEdBQUgsR0FBRyxDQUF1RDtRQUUxRCxVQUFLLEdBQUwsS0FBSyxDQUdYO1FBMUNNLFNBQUksR0FBRyxPQUFPLENBQUM7UUFDZixTQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLFlBQU8sR0FBdUI7WUFDbkMsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsT0FBTztnQkFDZCxLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsQ0FBQzthQUNWO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQzthQUNkO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQzthQUNkO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxRQUFRO2FBQ2pCO1lBQ0QsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsRUFBRTtZQUNULE9BQU8sRUFBRTtnQkFDUCxHQUFHLEVBQUUsQ0FBQztnQkFDTixLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQzthQUNSO1NBQ0YsQ0FBQztRQUNGLFVBQUssR0FBRyxTQUFTLENBQUEsc0JBQXNCLENBQUM7UUFVdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVztJQThDdEIsWUFDUyxZQUFvQixhQUFhLEVBQ3hDLE9BQTZCLEVBQ3RCLFFBQXFCO1FBQzFCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEVBQUU7S0FDWjtRQUxNLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBRWpDLFVBQUssR0FBTCxLQUFLLENBR1g7UUFuRE0sU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUNoQixTQUFJLEdBQUcsc0JBQXNCLENBQUM7UUFDaEMsWUFBTyxHQUF3QjtZQUNwQyxlQUFlLEVBQUUsU0FBUztZQUMxQixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxPQUFPO2dCQUNkLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7WUFDRCxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLElBQUksRUFBRSxFQUFFO2dCQUNSLEtBQUssRUFBRSxRQUFRO2dCQUNmLE1BQU0sRUFBRSxHQUFHO2FBQ1o7WUFFRCxLQUFLLEVBQUUsUUFBUTtZQUNmLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLDJCQUEyQjtZQUMzQixVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsSUFBSSxFQUFFLEdBQUc7YUFDVjtZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsRUFBRTtnQkFDUixNQUFNLEVBQUUsUUFBUTthQUNqQjtZQUNELFlBQVksRUFBRTtnQkFDWixHQUFHLEVBQUUsRUFBRTtnQkFDUCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxNQUFNLEVBQUUsRUFBRTtnQkFDVixJQUFJLEVBQUUsRUFBRTthQUNUO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxFQUFFO2dCQUNQLEtBQUssRUFBRSxFQUFFO2dCQUNULE1BQU0sRUFBRSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFO2FBQ1Q7U0FDRixDQUFDO1FBQ0YsVUFBSyxHQUFHLFNBQVMsQ0FBQSx3QkFBd0IsQ0FBQztRQVV4QyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxZQUFZO0lBa0J2QixZQUNFLE9BQThCLEVBQ3ZCLFFBQXFCO1FBQzFCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsT0FBTyxFQUFFLEVBQUU7S0FDWjtRQUhNLFVBQUssR0FBTCxLQUFLLENBR1g7UUF0Qk0sU0FBSSxHQUFHLFNBQVMsQ0FBQztRQUNqQixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2xCLFlBQU8sR0FBeUI7WUFDckMsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsT0FBTztnQkFDZCxLQUFLLEVBQUUsQ0FBQzthQUNUO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxFQUFFO2dCQUNQLEtBQUssRUFBRSxFQUFFO2dCQUNULE1BQU0sRUFBRSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFO2FBQ1Q7U0FDRixDQUFDO1FBQ0YsVUFBSyxHQUFHLFNBQVMsQ0FBQSwwQkFBMEIsQ0FBQztRQVMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBYXRCLFlBQ0UsT0FBNkIsRUFDdEIsUUFBcUI7UUFDMUIsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsRUFBRTtLQUNaO1FBSE0sVUFBSyxHQUFMLEtBQUssQ0FHWDtRQWpCTSxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2hCLFNBQUksR0FBRyx1QkFBdUIsQ0FBQztRQUN4QyxVQUFLLEdBQUcsU0FBUyxDQUFBLHdCQUF3QixDQUFDO1FBRTFDLFlBQU8sR0FBd0I7WUFDN0IsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQzthQUNkO1NBQ0YsQ0FBQztRQVNBLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFzQ3RCLDZDQUE2QztJQUM3QyxZQUNTLFdBQTZCLEVBQUUsRUFDdEMsT0FBNkIsRUFDdEIsUUFBcUI7UUFDMUIsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsRUFBRTtLQUNaO1FBTE0sYUFBUSxHQUFSLFFBQVEsQ0FBdUI7UUFFL0IsVUFBSyxHQUFMLEtBQUssQ0FHWDtRQTVDTSxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2hCLFNBQUksR0FBRyxPQUFPLENBQUM7UUFDeEIsVUFBSyxHQUFHLFNBQVMsQ0FBQSx1QkFBdUIsQ0FBQztRQUV6QyxZQUFPLEdBQXdCO1lBQzdCLEtBQUssRUFBRSxRQUFRO1lBQ2YsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixLQUFLLEVBQUUsUUFBUTtnQkFDZixJQUFJLEVBQUUsRUFBRTtnQkFDUixNQUFNLEVBQUUsR0FBRzthQUNaO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEtBQUssRUFBRSxFQUFFO2dCQUNULElBQUksRUFBRSxJQUFJO2FBQ1g7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDWDtZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hCLFlBQVksRUFBRTtnQkFDWixHQUFHLEVBQUUsQ0FBQztnQkFDTixLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQzthQUNSO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxFQUFFO2dCQUNQLEtBQUssRUFBRSxFQUFFO2dCQUNULE1BQU0sRUFBRSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFO2FBQ1Q7U0FDRixDQUFDO1FBV0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgZGVmYXVsdHNEZWVwIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgSUJsb2NrU3RhdGUsXG4gIElCdXR0b25CbG9ja09wdGlvbnMsXG4gIElEaXZpZGVyQmxvY2tPcHRpb25zLFxuICBJSW1hZ2VCTG9ja09wdGlvbnMsXG4gIElTb2NpYWxCbG9ja09wdGlvbnMsXG4gIElTb2NpYWxOZXR3b3JrLFxuICBJU3BhY2VyQmxvY2tPcHRpb25zLFxuICBJVGV4dEJsb2NrT3B0aW9uc1xufSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgdHlwZSBUQmxvY2tzT3B0aW9ucyA9XG4gIHwgSVRleHRCbG9ja09wdGlvbnNcbiAgfCBJSW1hZ2VCTG9ja09wdGlvbnNcbiAgfCBJQnV0dG9uQmxvY2tPcHRpb25zXG4gIHwgSURpdmlkZXJCbG9ja09wdGlvbnNcbiAgfCBJU3BhY2VyQmxvY2tPcHRpb25zXG4gIHwgSVNvY2lhbEJsb2NrT3B0aW9ucztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFJUEJsb2NrIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSBpY29uOiBzdHJpbmc7XG4gIGFic3RyYWN0IHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBvcHRpb25zOiBUQmxvY2tzT3B0aW9ucztcbiAgcHVibGljIHN0YXRlOiBJQmxvY2tTdGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIFRleHRCbG9jayBpbXBsZW1lbnRzIEFJUEJsb2NrIHtcbiAgcmVhZG9ubHkgdHlwZSA9ICd0ZXh0JztcbiAgcmVhZG9ubHkgaWNvbiA9ICd0ZXh0X2Zvcm1hdCc7XG4gIHB1YmxpYyBvcHRpb25zOiBJVGV4dEJsb2NrT3B0aW9ucyA9IHtcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIGZvbnQ6IHtcbiAgICAgIGZhbGxiYWNrOiAnQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZicsXG4gICAgICBmYW1pbHk6ICdSb2JvdG8nLFxuICAgICAgc3R5bGU6ICdub3JtYWwnLFxuICAgICAgc2l6ZTogMTYsXG4gICAgICB3ZWlnaHQ6IDQwMFxuICAgIH0sXG4gICAgbGluZUhlaWdodDoge1xuICAgICAgdmFsdWU6IDQwLFxuICAgICAgdW5pdDogJ25vbmUnXG4gICAgfSxcbiAgICBwYWRkaW5nOiB7XG4gICAgICB0b3A6IDEwLFxuICAgICAgcmlnaHQ6IDI1LFxuICAgICAgYm90dG9tOiAxMCxcbiAgICAgIGxlZnQ6IDI1XG4gICAgfVxuICB9O1xuICB0aXRsZSA9ICRsb2NhbGl6ZWA6QEB0ZXh0X2Jsb2NrOlRleHRgO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbm5lclRleHQ/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