@pobuca/email-builder 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +1 -1
  2. package/bundles/pobuca-email-builder.umd.js +4464 -4414
  3. package/bundles/pobuca-email-builder.umd.js.map +1 -1
  4. package/bundles/pobuca-email-builder.umd.min.js +1 -1
  5. package/bundles/pobuca-email-builder.umd.min.js.map +1 -1
  6. package/esm2015/lib/classes/DefaultEmail.js +54 -53
  7. package/esm2015/lib/classes/Elements.js +229 -229
  8. package/esm2015/lib/classes/Structure.js +89 -89
  9. package/esm2015/lib/components/block/block.component.js +89 -89
  10. package/esm2015/lib/components/block-settings/block-settings.component.js +53 -53
  11. package/esm2015/lib/components/builder-container/builder-container.component.js +114 -114
  12. package/esm2015/lib/components/dialog.component.js +30 -30
  13. package/esm2015/lib/components/general-settings/general-settings.component.js +25 -25
  14. package/esm2015/lib/components/import-dialog/import-dialog.component.js +62 -62
  15. package/esm2015/lib/components/preview.component.js +89 -89
  16. package/esm2015/lib/components/structure/structure.component.js +163 -163
  17. package/esm2015/lib/components/structure-settings/structure-settings.component.js +31 -31
  18. package/esm2015/lib/components/template-list-dialog/template-list-dialog.component.js +45 -45
  19. package/esm2015/lib/directives/dynamic-component.directive.js +46 -46
  20. package/esm2015/lib/elements/abstract-block.js +23 -23
  21. package/esm2015/lib/elements/button/button.component.js +29 -29
  22. package/esm2015/lib/elements/divider/divider.component.js +30 -30
  23. package/esm2015/lib/elements/image/image.component.js +54 -54
  24. package/esm2015/lib/elements/social/social.component.js +42 -42
  25. package/esm2015/lib/elements/spacer/spacer.component.js +30 -30
  26. package/esm2015/lib/elements/text-element/text-element.component.js +80 -80
  27. package/esm2015/lib/groups/align.js +79 -79
  28. package/esm2015/lib/groups/back-repeat.js +55 -55
  29. package/esm2015/lib/groups/border.js +102 -102
  30. package/esm2015/lib/groups/color.js +139 -139
  31. package/esm2015/lib/groups/direction.js +63 -63
  32. package/esm2015/lib/groups/font-styles.js +127 -112
  33. package/esm2015/lib/groups/gaps.js +45 -45
  34. package/esm2015/lib/groups/line-height.js +68 -68
  35. package/esm2015/lib/groups/link.js +67 -67
  36. package/esm2015/lib/groups/margin.js +45 -45
  37. package/esm2015/lib/groups/padding.js +53 -53
  38. package/esm2015/lib/groups/upload-image.js +112 -112
  39. package/esm2015/lib/groups/width-height.js +94 -94
  40. package/esm2015/lib/interceptors/pb-interceptor.interceptor.js +51 -51
  41. package/esm2015/lib/interfaces/interfaces.js +13 -13
  42. package/esm2015/lib/pb-email-builder.component.js +258 -246
  43. package/esm2015/lib/pb-email-builder.module.js +291 -291
  44. package/esm2015/lib/pb-email-builder.service.js +134 -134
  45. package/esm2015/lib/pipes/slugify.pipe.js +39 -39
  46. package/esm2015/lib/services/internals/pb-email-object-store/pb-email-object-store.service.js +175 -165
  47. package/esm2015/lib/services/internals/user-interfaces/user-interface.service.js +122 -122
  48. package/esm2015/lib/services/pb-storage/FreeUsersStorage.class.js +11 -11
  49. package/esm2015/lib/services/pb-storage/index.js +7 -7
  50. package/esm2015/lib/services/pb-storage/pb-storage.service.js +79 -79
  51. package/esm2015/lib/services/user-image-uploader-service/free-users-image-uploader.service.js +26 -26
  52. package/esm2015/lib/services/user-image-uploader-service/index.js +8 -8
  53. package/esm2015/lib/services/user-image-uploader-service/paid-users-image-uploader.service.js +30 -30
  54. package/esm2015/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.js +112 -112
  55. package/esm2015/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.js +91 -91
  56. package/esm2015/lib/services/user-image-uploader-service/user-image-uploader.service.js +26 -26
  57. package/esm2015/lib/services/user-middleware-service/FreeUsersMiddleware.js +31 -31
  58. package/esm2015/lib/services/user-middleware-service/PaidUsersMiddleware.js +12 -12
  59. package/esm2015/lib/services/user-middleware-service/index.js +8 -8
  60. package/esm2015/lib/services/user-middleware-service/pb-middlewares.service.js +195 -195
  61. package/esm2015/lib/services/user-rest-api-service/free-users-rest-api.service.js +16 -16
  62. package/esm2015/lib/services/user-rest-api-service/index.js +7 -7
  63. package/esm2015/lib/services/user-rest-api-service/user-rest-api.service.js +116 -116
  64. package/esm2015/lib/tokens/private-tokens.js +17 -17
  65. package/esm2015/lib/tokens/tokens.js +159 -159
  66. package/esm2015/lib/utils.js +147 -147
  67. package/esm2015/pobuca-email-builder.js +42 -42
  68. package/esm2015/public_api.js +26 -26
  69. package/fesm2015/pobuca-email-builder.js +4206 -4168
  70. package/fesm2015/pobuca-email-builder.js.map +1 -1
  71. package/lib/classes/DefaultEmail.d.ts +10 -9
  72. package/lib/classes/Elements.d.ts +62 -62
  73. package/lib/classes/Structure.d.ts +11 -11
  74. package/lib/components/block/block.component.d.ts +25 -25
  75. package/lib/components/block-settings/block-settings.component.d.ts +18 -18
  76. package/lib/components/builder-container/builder-container.component.d.ts +36 -36
  77. package/lib/components/dialog.component.d.ts +10 -10
  78. package/lib/components/general-settings/general-settings.component.d.ts +6 -6
  79. package/lib/components/import-dialog/import-dialog.component.d.ts +16 -16
  80. package/lib/components/preview.component.d.ts +18 -18
  81. package/lib/components/structure/structure.component.d.ts +43 -43
  82. package/lib/components/structure-settings/structure-settings.component.d.ts +9 -9
  83. package/lib/components/template-list-dialog/template-list-dialog.component.d.ts +15 -15
  84. package/lib/directives/dynamic-component.directive.d.ts +13 -13
  85. package/lib/elements/abstract-block.d.ts +8 -8
  86. package/lib/elements/button/button.component.d.ts +18 -18
  87. package/lib/elements/divider/divider.component.d.ts +10 -10
  88. package/lib/elements/image/image.component.d.ts +19 -19
  89. package/lib/elements/social/social.component.d.ts +21 -21
  90. package/lib/elements/spacer/spacer.component.d.ts +5 -5
  91. package/lib/elements/text-element/text-element.component.d.ts +52 -52
  92. package/lib/groups/align.d.ts +17 -17
  93. package/lib/groups/back-repeat.d.ts +8 -8
  94. package/lib/groups/border.d.ts +13 -13
  95. package/lib/groups/color.d.ts +26 -26
  96. package/lib/groups/direction.d.ts +13 -13
  97. package/lib/groups/font-styles.d.ts +21 -17
  98. package/lib/groups/gaps.d.ts +7 -7
  99. package/lib/groups/line-height.d.ts +12 -12
  100. package/lib/groups/link.d.ts +11 -11
  101. package/lib/groups/margin.d.ts +8 -8
  102. package/lib/groups/padding.d.ts +8 -8
  103. package/lib/groups/upload-image.d.ts +19 -19
  104. package/lib/groups/width-height.d.ts +19 -19
  105. package/lib/interceptors/pb-interceptor.interceptor.d.ts +10 -10
  106. package/lib/interfaces/interfaces.d.ts +430 -422
  107. package/lib/pb-email-builder.component.d.ts +67 -67
  108. package/lib/pb-email-builder.module.d.ts +51 -51
  109. package/lib/pb-email-builder.service.d.ts +83 -83
  110. package/lib/pipes/slugify.pipe.d.ts +9 -9
  111. package/lib/services/internals/pb-email-object-store/pb-email-object-store.service.d.ts +50 -50
  112. package/lib/services/internals/user-interfaces/user-interface.service.d.ts +46 -46
  113. package/lib/services/pb-storage/FreeUsersStorage.class.d.ts +6 -6
  114. package/lib/services/pb-storage/index.d.ts +2 -2
  115. package/lib/services/pb-storage/pb-storage.service.d.ts +54 -54
  116. package/lib/services/user-image-uploader-service/free-users-image-uploader.service.d.ts +12 -12
  117. package/lib/services/user-image-uploader-service/index.d.ts +3 -3
  118. package/lib/services/user-image-uploader-service/paid-users-image-uploader.service.d.ts +14 -14
  119. package/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.d.ts +28 -28
  120. package/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.d.ts +27 -27
  121. package/lib/services/user-image-uploader-service/user-image-uploader.service.d.ts +26 -26
  122. package/lib/services/user-middleware-service/FreeUsersMiddleware.d.ts +15 -15
  123. package/lib/services/user-middleware-service/PaidUsersMiddleware.d.ts +7 -7
  124. package/lib/services/user-middleware-service/index.d.ts +3 -3
  125. package/lib/services/user-middleware-service/pb-middlewares.service.d.ts +190 -190
  126. package/lib/services/user-rest-api-service/free-users-rest-api.service.d.ts +10 -10
  127. package/lib/services/user-rest-api-service/index.d.ts +2 -2
  128. package/lib/services/user-rest-api-service/user-rest-api.service.d.ts +82 -82
  129. package/lib/tokens/private-tokens.d.ts +5 -5
  130. package/lib/tokens/tokens.d.ts +70 -70
  131. package/lib/utils.d.ts +88 -88
  132. package/package.json +8 -3
  133. package/pobuca-email-builder.d.ts +42 -42
  134. package/pobuca-email-builder.metadata.json +1 -1
  135. package/public_api.d.ts +16 -16
@@ -1,89 +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
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2NsYXNzZXMvU3RydWN0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUlILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQTRCO0lBQzVELFVBQVUsRUFBRTtRQUNWLEtBQUssRUFBRSxhQUFhO0tBQ3JCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsQ0FBQztRQUNULEtBQUssRUFBRSxPQUFPO0tBQ2Y7SUFDRCxhQUFhLEVBQUUsS0FBSztDQUNyQixDQUFDO0FBRUYsTUFBTSxPQUFPLFNBQVM7SUFtQ3BCLFlBQXFCLE9BQXdCLFFBQVEsRUFBUyxXQUF3QixFQUFFLEVBQUUsT0FBMkI7UUFBaEcsU0FBSSxHQUFKLElBQUksQ0FBNEI7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQWxDeEYsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNILE9BQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFzQjtZQUMzQixTQUFTLEVBQUUsS0FBSztZQUNoQixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxPQUFPO2dCQUNkLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEdBQUcsRUFBRSxFQUFFO2dCQUNQLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEdBQUc7b0JBQ1YsSUFBSSxFQUFFLElBQUk7b0JBQ1YsSUFBSSxFQUFFLElBQUk7b0JBQ1YsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO2lCQUN2QzthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxDQUFDO2dCQUNOLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksRUFBRSxDQUFDO2FBQ1I7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxFQUFFLENBQUM7YUFDVjtZQUNELElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDYixDQUFDO1FBR0EsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQzthQUNsQjtpQkFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO2lCQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7YUFDbEI7U0FDRjtRQUVELE1BQU0sT0FBTyxHQUE4QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdHLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN2QjthQUFNLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUM3QixZQUFZLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdkI7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzVCLFlBQVksR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkM7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqRCxPQUFPO1lBQ1AsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSVN0cnVjdHVyZSwgSVN0cnVjdHVyZUNvbHVtbk9wdGlvbnMsIElTdHJ1Y3R1cmVPcHRpb25zLCBUU3RydWN0dXJlVHlwZXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBUQmxvY2tzIH0gZnJvbSAnLi9FbGVtZW50cyc7XHJcbmltcG9ydCB7IGRlZmF1bHRzRGVlcCB9IGZyb20gJy4uL3V0aWxzJztcclxuXHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29sdW1uc09wdGlvbnM6IElTdHJ1Y3R1cmVDb2x1bW5PcHRpb25zID0ge1xyXG4gIGJhY2tncm91bmQ6IHtcclxuICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnXHJcbiAgfSxcclxuICBib3JkZXI6IHtcclxuICAgIHdpZHRoOiAwLFxyXG4gICAgY29sb3I6ICcjY2NjY2NjJyxcclxuICAgIHJhZGl1czogMCxcclxuICAgIHN0eWxlOiAnc29saWQnXHJcbiAgfSxcclxuICB2ZXJ0aWNhbEFsaWduOiAndG9wJ1xyXG59O1xyXG5cclxuZXhwb3J0IGNsYXNzIFN0cnVjdHVyZSBpbXBsZW1lbnRzIElTdHJ1Y3R1cmUge1xyXG4gIGNvbHVtbnMgPSAxO1xyXG4gIHJlYWRvbmx5IGlkID0gRGF0ZS5ub3coKTtcclxuICBvcHRpb25zOiBJU3RydWN0dXJlT3B0aW9ucyA9IHtcclxuICAgIGZ1bGxXaWR0aDogZmFsc2UsXHJcbiAgICBib3JkZXI6IHtcclxuICAgICAgY29sb3I6ICcjY2NjY2NjJyxcclxuICAgICAgc3R5bGU6ICdzb2xpZCcsXHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgICByYWRpdXM6IDBcclxuICAgIH0sXHJcbiAgICBiYWNrZ3JvdW5kOiB7XHJcbiAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXHJcbiAgICAgIHVybDogJycsXHJcbiAgICAgIHJlcGVhdDogJ3JlcGVhdCcsXHJcbiAgICAgIHNpemU6IHtcclxuICAgICAgICB2YWx1ZTogMTAwLFxyXG4gICAgICAgIHVuaXQ6ICdweCcsXHJcbiAgICAgICAgYXV0bzogdHJ1ZSxcclxuICAgICAgICB1bml0czogWydweCcsICclJywgJ2NvdmVyJywgJ2NvbnRhaW4nXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgcGFkZGluZzoge1xyXG4gICAgICB0b3A6IDQsXHJcbiAgICAgIHJpZ2h0OiA0LFxyXG4gICAgICBib3R0b206IDQsXHJcbiAgICAgIGxlZnQ6IDRcclxuICAgIH0sXHJcbiAgICBtYXJnaW46IHtcclxuICAgICAgdG9wOiAwLFxyXG4gICAgICBib3R0b206IDBcclxuICAgIH0sXHJcbiAgICBnYXBzOiBbNCwgNF1cclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihyZWFkb25seSB0eXBlOiBUU3RydWN0dXJlVHlwZXMgPSAnY29sc18xJywgcHVibGljIGVsZW1lbnRzOiBUQmxvY2tzW11bXSA9IFtdLCBvcHRpb25zPzogSVN0cnVjdHVyZU9wdGlvbnMpIHtcclxuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgIGlmIChbJ2NvbHNfMicsICdjb2xzXzEyJywgJ2NvbHNfMjEnXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucyA9IDI7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHNfMycpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbnMgPSAzO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2xzXzQnKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gNDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbHVtbnM6IElTdHJ1Y3R1cmVDb2x1bW5PcHRpb25zW10gPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmNvbHVtbnMgfSwgKCkgPT4gZGVmYXVsdENvbHVtbnNPcHRpb25zKTtcclxuXHJcbiAgICBsZXQgY29sdW1uc1dpZHRoID0gWzFdO1xyXG4gICAgaWYgKHR5cGUgPT09ICdjb2xzXzIxJykge1xyXG4gICAgICBjb2x1bW5zV2lkdGggPSBbNCwgNl07XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2xzXzEyJykge1xyXG4gICAgICBjb2x1bW5zV2lkdGggPSBbNiwgNF07XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2xzXzInKSB7XHJcbiAgICAgIGNvbHVtbnNXaWR0aCA9IFs1LCA1XTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbHNfMycpIHtcclxuICAgICAgY29sdW1uc1dpZHRoID0gWzMuMzMsIDMuMzMsIDMuMzNdO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY29sc180Jykge1xyXG4gICAgICBjb2x1bW5zV2lkdGggPSBbMi41LCAyLjUsIDIuNSwgMi41XTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBkZWZhdWx0c0RlZXAob3B0aW9ucywgdGhpcy5vcHRpb25zLCB7XHJcbiAgICAgIGNvbHVtbnMsXHJcbiAgICAgIGNvbHVtbnNXaWR0aFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,89 +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==
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: "<!--\r\n ~ Copyright (c) 2024 Pobuca.\r\n ~ All rights reserved.\r\n -->\r\n\r\n<ng-content select=\".move\"></ng-content>\r\n<div class=\"tools\" fxLayout fxLayoutGap=\"0.25rem\">\r\n <button mat-icon-button (click)=\"duplicateBlock()\" i18n-matTooltip=\"block|Duplicate Block\"\r\n matTooltip=\"Duplicate Block\">\r\n <mat-icon i18n-aria-label=\"block|Duplicate Block\" aria-label=\"Duplicate block\" inline>file_copy</mat-icon>\r\n </button>\r\n <button mat-icon-button (click)=\"removeBlock()\" i18n-matTooltip=\"block|Remove Block\" class=\"delete\"\r\n matTooltip=\"Remove Block\">\r\n <mat-icon i18n-aria-label=\"block|Remove Block\" aria-label=\"Delete block\" inline>delete_forever</mat-icon>\r\n </button>\r\n</div>\r\n<ng-content *pbDynamicComponent=\"block\"></ng-content>\r\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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Ii8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgRG9DaGVjayxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBleGhhdXN0TWFwLCB0YWtlLCBtYXAsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRCbG9ja3MgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0VsZW1lbnRzJztcclxuaW1wb3J0IHsgUGJVc2VySW50ZXJmYWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ludGVybmFscy91c2VyLWludGVyZmFjZXMvdXNlci1pbnRlcmZhY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGJVc2VyTWlkZGxld2FyZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci1taWRkbGV3YXJlLXNlcnZpY2UvcGItbWlkZGxld2FyZXMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BiLWJsb2NrJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmxvY2suY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Jsb2NrLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEJsb2NrQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjaywgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGJsb2NrOiBUQmxvY2tzO1xyXG4gIEBJbnB1dCgpIGNvbHVtbjogVEJsb2Nrc1tdO1xyXG4gIEBJbnB1dCgpIGluZGV4OiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBpc0FjdGl2ZSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50SXNEZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBvbkhvc3RDbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmVkaXRCbG9jaygpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKSBnZXQgaXNCbG9ja0FjdGl2ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmlzQWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBiTWlkZGxld2FyZXNTZXJ2aWNlOiBQYlVzZXJNaWRkbGV3YXJlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJJbnRlcmZhY2VTZXJ2aWNlOiBQYlVzZXJJbnRlcmZhY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbWFpbE9iamVjdFN0b3JlOiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIHJlbW92ZUJsb2NrKCkge1xyXG4gICAgdGhpcy5wYk1pZGRsZXdhcmVzU2VydmljZVxyXG4gICAgICAucmVtb3ZlQmxvY2sodGhpcy5pbmRleCwgdGhpcy5jb2x1bW4sIHRoaXMuYmxvY2spXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy51c2VySW50ZXJmYWNlU2VydmljZS5jb25maXJtRGlhbG9nJCgpKSxcclxuICAgICAgICBmaWx0ZXIocmVtb3ZlQWxsb3dlZCA9PiByZW1vdmVBbGxvd2VkKSxcclxuICAgICAgICB0YWtlKDEpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbWFpbE9iamVjdFN0b3JlLnJlbW92ZUJsb2NrKHRoaXMuaW5kZXgsIHRoaXMuY29sdW1uKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVCbG9jaygpIHtcclxuICAgIHRoaXMucGJNaWRkbGV3YXJlc1NlcnZpY2VcclxuICAgICAgLmR1cGxpY2F0ZUJsb2NrKHRoaXMuaW5kZXgsIHRoaXMuY29sdW1uLCB0aGlzLmJsb2NrKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoZGF0YSA9PiB0aGlzLmVtYWlsT2JqZWN0U3RvcmUuZHVwbGljYXRlQmxvY2soZGF0YS5pbmRleCwgZGF0YS5jb2x1bW4sIGRhdGEuYmxvY2spKSxcclxuICAgICAgICB0YWtlKDEpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5jaFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBlZGl0QmxvY2soKSB7XHJcbiAgICB0aGlzLnBiTWlkZGxld2FyZXNTZXJ2aWNlXHJcbiAgICAgIC5lZGl0QmxvY2sodGhpcy5ibG9jaylcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZShibG9jayA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VySW50ZXJmYWNlU2VydmljZS5lZGl0QmxvY2soYmxvY2spO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51c2VySW50ZXJmYWNlU2VydmljZS5jdXJyZW50RWRpdGluZ0Jsb2NrJFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoY3VycmVudEVkaXRpbmdCbG9jayA9PiBjdXJyZW50RWRpdGluZ0Jsb2NrID09PSB0aGlzLmJsb2NrKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnRJc0Rlc3Ryb3llZCQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShpc0FjdGl2ZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuY2hSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50SXNEZXN0cm95ZWQkLm5leHQoJycpO1xyXG4gICAgdGhpcy5jb21wb25lbnRJc0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,53 +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
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: "<!--\r\n ~ Copyright (c) 2024 Pobuca.\r\n ~ All rights reserved.\r\n -->\r\n\r\n<ng-container *ngIf=\"block$ | async as currentBlock\">\r\n <mat-accordion>\r\n <mat-expansion-panel expanded *ngIf=\"hasProperty(currentBlock.options, 'font')\">\r\n <mat-expansion-panel-header i18n=\"settings|Font\">\r\n Font\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <pb-color [options]=\"currentBlock.options\" key=\"color\"></pb-color>\r\n <pb-font-styles [font]=\"currentBlock.options.font\"></pb-font-styles>\r\n <pb-line-height *ngIf=\"currentBlock.type !== 'social'\" [lineHeight]=\"currentBlock.options.lineHeight\">\r\n </pb-line-height>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n\r\n <ng-container *ngIf=\"currentBlock.type === 'image'\">\r\n <mat-expansion-panel expanded>\r\n <mat-expansion-panel-header i18n=\"settings|Image\">\r\n Image\r\n </mat-expansion-panel-header>\r\n <pb-image-upload [block]=\"currentBlock\"></pb-image-upload>\r\n </mat-expansion-panel>\r\n\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header i18n=\"settings|Image Attributes\">\r\n Attributes\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"group f-large\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label i18n=\"settings|Image Alt\">Alt</mat-label>\r\n <input matInput [(ngModel)]=\"currentBlock.options.title\" type=\"text\" i18n-placeholder\r\n placeholder=\"settings|Image Alt\" (input)=\"markForCheck()\" />\r\n </mat-form-field>\r\n <pb-align [model]=\"currentBlock.options\"></pb-align>\r\n </div>\r\n <pb-link [link]=\"currentBlock.options.link\"></pb-link>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentBlock.type === 'button'\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header i18n=\"settings|Button Text\">\r\n Button Text\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label i18n=\"settings|Button Text\">Button Text</mat-label>\r\n <input matInput [(ngModel)]=\"currentBlock.innerText\" type=\"text\" i18n-placeholder\r\n placeholder=\"settings|Button Text\" (input)=\"markForCheck()\" />\r\n </mat-form-field>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n\r\n\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header i18n=\"settings|Background\">\r\n Background\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <pb-color [options]=\"currentBlock.options\"></pb-color>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header i18n=\"settings|Button Attributes\">\r\n Attributes\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"group two\" style=\"padding-bottom: 0\">\r\n <pb-align [model]=\"currentBlock.options\" [disabled]=\"currentBlock.options.fullWidth\"></pb-align>\r\n <mat-slide-toggle style=\"margin-top: -24px\" [(ngModel)]=\"currentBlock.options.fullWidth\"\r\n (change)=\"markForCheck()\">\r\n <ng-container i18n=\"settings|Button Full Width\">Full Width</ng-container>\r\n </mat-slide-toggle>\r\n </div>\r\n <pb-link [link]=\"currentBlock.options.link\"></pb-link>\r\n <pb-padding [padding]=\"currentBlock.options.innerPadding\"></pb-padding>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n\r\n <mat-expansion-panel [expanded]=\"currentBlock.type === 'spacer'\"\r\n *ngIf=\"hasProperty(currentBlock.options, 'width') || hasProperty(currentBlock.options, 'height')\">\r\n <mat-expansion-panel-header i18n=\"settings|Sizes\">\r\n Sizes\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <pb-width-height *ngIf=\"hasProperty(currentBlock.options, 'width')\" [model]=\"currentBlock.options.width\"\r\n label=\"width\"></pb-width-height>\r\n <pb-width-height *ngIf=\"hasProperty(currentBlock.options, 'height')\" [model]=\"currentBlock.options.height\"\r\n label=\"height\"></pb-width-height>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n\r\n <mat-expansion-panel *ngIf=\"hasProperty(currentBlock.options, 'background')\">\r\n <mat-expansion-panel-header i18n=\"settings|Background\">\r\n Background\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <pb-color [options]=\"currentBlock.options.background\"></pb-color>\r\n </ng-template>\r\n backgroundColor\r\n </mat-expansion-panel>\r\n\r\n <mat-expansion-panel [expanded]=\"currentBlock.type === 'divider'\"\r\n *ngIf=\"hasProperty(currentBlock.options, 'border')\">\r\n <mat-expansion-panel-header>\r\n <ng-container i18n=\"settings|Divider Styles\" *ngIf=\"currentBlock.type === 'divider'\">Styles</ng-container>\r\n <ng-container i18n=\"settings|Border\" *ngIf=\"currentBlock.type !== 'divider'\">Border</ng-container>\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <pb-border [border]=\"currentBlock.options.border\"></pb-border>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n\r\n <ng-container *ngIf=\"currentBlock.type === 'social'\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header i18n=\"settings|Icons\">\r\n Icons\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label i18n=\"settings|Add new Network\">Add new Network</mat-label>\r\n <mat-select (selectionChange)=\"addSocialNetwork($event, currentBlock)\" [disabled]=\"!socialNetworks.length\">\r\n <mat-option style=\"text-transform: capitalize\" *ngFor=\"let link of socialNetworks(currentBlock)\"\r\n [value]=\"link\">\r\n {{ link }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n\r\n <mat-expansion-panel class=\"networks-list\" *ngFor=\"let network of currentBlock.networks\">\r\n <mat-expansion-panel-header style=\"text-transform: capitalize\">\r\n <img [class]=\"network.name\" [src]=\"getSocialIcon(network.name)\" [alt]=\"network.name\" />\r\n {{ network.name }}\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"networks-list-item\">\r\n <div class=\"item-info\">\r\n <mat-form-field matLine appearance=\"outline\">\r\n <mat-label i18n=\"settings|Social Network Label\">Label</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"network.label\"\r\n i18n-placeholder=\"settings|Social Network Label\" placeholder=\"Label\" type=\"text\"\r\n (input)=\"markForCheck()\" />\r\n </mat-form-field>\r\n <button mat-stroked-button color=\"warn\" (click)=\"removeSocialNetwork(network, currentBlock)\">\r\n <mat-icon>delete_forever</mat-icon>\r\n </button>\r\n </div>\r\n <mat-form-field matLine appearance=\"outline\">\r\n <mat-label style=\"text-transform: capitalize\">\r\n {{ network.name }} <ng-container i18n=\"settings|Social Network Link\">Link</ng-container>\r\n </mat-label>\r\n <input autocomplete=\"off\" matInput [(ngModel)]=\"network.href\" type=\"url\" (input)=\"markForCheck()\" />\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header i18n=\"settings|Social Styles\">\r\n Styles\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"group two\" style=\"padding-bottom: 0\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label i18n=\"settings|Social Model\">Mode</mat-label>\r\n <mat-select (selectionChange)=\"markForCheck()\" i18n-placeholder=\"settings|Social Model\" placeholder=\"Mode\"\r\n [(value)]=\"currentBlock.options.mode\" disableRipple>\r\n <mat-option *ngFor=\"let mode of ['horizontal', 'vertical']\" [value]=\"mode\">\r\n {{ mode }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <pb-align [model]=\"currentBlock.options\"></pb-align>\r\n </div>\r\n <pb-line-height [units]=\"['px']\" [lineHeight]=\"currentBlock.options.iconSize\" label=\"Icon Size\">\r\n </pb-line-height>\r\n <pb-padding [padding]=\"currentBlock.options.innerPadding\"></pb-padding>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n\r\n <mat-expansion-panel *ngIf=\"hasProperty(currentBlock.options, 'padding')\">\r\n <mat-expansion-panel-header i18n=\"settings|Padding\">\r\n Padding\r\n </mat-expansion-panel-header>\r\n <ng-template matExpansionPanelContent>\r\n <pb-padding [padding]=\"currentBlock.options.padding\"></pb-padding>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</ng-container>\r\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;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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2stc2V0dGluZ3MvYmxvY2stc2V0dGluZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFTekgsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUNVLGVBQXVDLEVBQ3ZDLFdBQXNDLEVBQ1YsUUFBa0I7UUFGOUMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUEyQjtRQUNWLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMeEQsV0FBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUM7SUFNaEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUF1QixFQUFFLFFBQWdCO1FBQ25ELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFrQjtRQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hHLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQW1CLEVBQUUsS0FBa0I7UUFDckUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUF1QixFQUFFLEtBQWtCO1FBQzdELEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZTtRQUMzQixPQUFPLGNBQWMsQ0FBQyxHQUFHLE9BQU8sTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7O1lBekNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixpMFRBQThDO2dCQUU5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFWUSxzQkFBc0I7WUFFdEIseUJBQXlCO3dDQWU3QixNQUFNLFNBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cclxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcblxyXG5pbXBvcnQgeyBTb2NpYWxCbG9jaywgVEJsb2Nrc09wdGlvbnMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0VsZW1lbnRzJztcclxuaW1wb3J0IHsgSVNvY2lhbE5ldHdvcmsgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBnZXRBc3NldEJ5UGF0aCB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgUGJVc2VySW50ZXJmYWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ludGVybmFscy91c2VyLWludGVyZmFjZXMvdXNlci1pbnRlcmZhY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFBCX1NPQ0lBTF9ORVRXT1JLUyB9IGZyb20gJy4uLy4uL3Rva2Vucy90b2tlbnMnO1xyXG5pbXBvcnQgeyBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW50ZXJuYWxzL3BiLWVtYWlsLW9iamVjdC1zdG9yZS9wYi1lbWFpbC1vYmplY3Qtc3RvcmUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BiLWJsb2NrLXNldHRpbmdzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmxvY2stc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Jsb2NrLXNldHRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmxvY2tTZXR0aW5nc0NvbXBvbmVudCB7XHJcbiAgYmxvY2skID0gdGhpcy5pbnRlcm5hbFNlcnZpY2UuY3VycmVudEVkaXRpbmdCbG9jayQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbnRlcm5hbFNlcnZpY2U6IFBiVXNlckludGVyZmFjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlLFxyXG4gICAgQEluamVjdChQQl9TT0NJQUxfTkVUV09SS1MpIHByaXZhdGUgbmV0d29ya3M6IHN0cmluZ1tdXHJcbiAgKSB7fVxyXG5cclxuICBoYXNQcm9wZXJ0eShvcHRpb25zOiBUQmxvY2tzT3B0aW9ucywgcHJvcGVydHk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG9wdGlvbnMuaGFzT3duUHJvcGVydHkocHJvcGVydHkpO1xyXG4gIH1cclxuXHJcbiAgbWFya0ZvckNoZWNrKCkge1xyXG4gICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNvY2lhbE5ldHdvcmtzKGJsb2NrOiBTb2NpYWxCbG9jaykge1xyXG4gICAgcmV0dXJuIHRoaXMubmV0d29ya3MuZmlsdGVyKGxpbmsgPT4gIWJsb2NrLm5ldHdvcmtzLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBsaW5rKSkuc29ydCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkU29jaWFsTmV0d29yayh7IHZhbHVlLCBzb3VyY2UgfTogTWF0U2VsZWN0Q2hhbmdlLCBibG9jazogU29jaWFsQmxvY2spIHtcclxuICAgIGJsb2NrLm5ldHdvcmtzLnB1c2goeyBuYW1lOiB2YWx1ZSwgaHJlZjogJycsIGxhYmVsOiAnJyB9KTtcclxuICAgIHNvdXJjZS52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNvY2lhbE5ldHdvcmsobmV0d29yazogSVNvY2lhbE5ldHdvcmssIGJsb2NrOiBTb2NpYWxCbG9jaykge1xyXG4gICAgYmxvY2submV0d29ya3MgPSBibG9jay5uZXR3b3Jrcy5maWx0ZXIobiA9PiBuICE9PSBuZXR3b3JrKTtcclxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTb2NpYWxJY29uKG5ldHdvcms6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGdldEFzc2V0QnlQYXRoKGAke25ldHdvcmt9LnBuZ2ApO1xyXG4gIH1cclxufVxyXG4iXX0=