@pobuca/email-builder 1.0.1 → 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,139 +1,139 @@
1
- /*
2
- * Copyright (c) 2024 Pobuca.
3
- * All rights reserved.
4
- */
5
- import { ChangeDetectionStrategy, Component, HostListener, Input } from '@angular/core';
6
- import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
7
- // import { PbEmailBuilderService } from '../pb-email-builder.service';
8
- // import { parseColor } from '../utils';
9
- export class ColorComponent {
10
- constructor(emailObject) {
11
- this.emailObject = emailObject;
12
- this.disabled = false;
13
- this.key = 'backgroundColor';
14
- this.transparent = false;
15
- this.showColorPicker = false;
16
- }
17
- get currentColorModel() {
18
- return this.options[this.key];
19
- }
20
- set currentColorModel(hex) {
21
- this.options[this.key] = hex;
22
- }
23
- get currentColor() {
24
- return this.transparent ? this.oldValue : this.currentColorModel;
25
- }
26
- set currentColor(hex) {
27
- this.currentColorModel = hex;
28
- }
29
- onHostMouseLeave() {
30
- this.showColorPicker = false;
31
- }
32
- changeColor(event) {
33
- this.currentColor = event.color.hex;
34
- this.emailObject.markForCheck();
35
- }
36
- makeTransparentColor() {
37
- this.showColorPicker = false;
38
- if (this.transparent) {
39
- this.oldValue = this.currentColorModel;
40
- this.currentColor = 'transparent';
41
- }
42
- else {
43
- this.currentColor = this.oldValue;
44
- }
45
- this.emailObject.markForCheck();
46
- }
47
- ngOnInit() {
48
- if (this.currentColor === 'transparent') {
49
- this.transparent = true;
50
- this.oldValue = '#ffffff';
51
- }
52
- // this.changeContrastColor();
53
- }
54
- }
55
- ColorComponent.decorators = [
56
- { type: Component, args: [{
57
- selector: 'pb-color',
58
- template: `
59
- <div class="group" *ngIf="showTransparent">
60
- <mat-slide-toggle
61
- [disabled]="disabled"
62
- [(ngModel)]="transparent"
63
- (change)="makeTransparentColor()"
64
- i18n="Color settings|Make color transparent"
65
- >
66
- Transparent
67
- </mat-slide-toggle>
68
- </div>
69
- <div class="group two">
70
- <mat-form-field appearance="outline">
71
- <mat-label i18n="Color settings|Change color">Color</mat-label>
72
- <input matInput [disabled]="transparent || disabled" (focus)="showColorPicker = false" [(ngModel)]="currentColor" type="text" />
73
- </mat-form-field>
74
- <div class="choose-color" [class.transparent]="transparent || disabled">
75
- <div class="current-color" (mouseover)="showColorPicker = !transparent" [style.backgroundColor]="currentColor"></div>
76
- <color-chrome
77
- [disableAlpha]="true"
78
- *ngIf="showColorPicker"
79
- (onChangeComplete)="changeColor($event)"
80
- [color]="currentColor"
81
- ></color-chrome>
82
- </div>
83
- </div>
84
- `,
85
- changeDetection: ChangeDetectionStrategy.OnPush,
86
- styles: [`
87
- :host {
88
- display: block;
89
- position: relative;
90
- }
91
-
92
- mat-form-field {
93
- width: 100%;
94
- }
95
-
96
- .choose-color {
97
- display: block;
98
- height: 100%;
99
- width: 100%;
100
- }
101
-
102
- .current-color {
103
- width: 100%;
104
- height: 48px;
105
- border-radius: 5px;
106
- margin: 0.25em 0;
107
- cursor: pointer;
108
- display: flex;
109
- align-items: center;
110
- justify-content: center;
111
- border: 1px solid rgba(0, 0, 0, 0.12);
112
- transition: background-color 500ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
113
- }
114
-
115
- .choose-color.transparent .current-color {
116
- opacity: 0.5;
117
- pointer-events: none;
118
- }
119
-
120
- color-chrome {
121
- position: absolute;
122
- top: calc(100% - 1em);
123
- right: 0;
124
- z-index: 9;
125
- }
126
- `]
127
- },] }
128
- ];
129
- ColorComponent.ctorParameters = () => [
130
- { type: PbEmailObjectStoreService }
131
- ];
132
- ColorComponent.propDecorators = {
133
- options: [{ type: Input }],
134
- showTransparent: [{ type: Input }],
135
- disabled: [{ type: Input }],
136
- key: [{ type: Input }],
137
- onHostMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]
138
- };
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUV0SCx1RUFBdUU7QUFDdkUseUNBQXlDO0FBNEV6QyxNQUFNLE9BQU8sY0FBYztJQVd6QixZQUFvQixXQUFzQztRQUF0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBMkI7UUFSakQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixRQUFHLEdBQWdDLGlCQUFpQixDQUFDO1FBRTlELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBSXFDLENBQUM7SUFFOUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxHQUFXO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRTJCLGdCQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxhQUFhLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDM0I7UUFDRCw4QkFBOEI7SUFDaEMsQ0FBQzs7O1lBaklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkE0Q3BCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBckU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdDQzthQThCSjs7O1lBOUVRLHlCQUF5Qjs7O3NCQWdGL0IsS0FBSzs4QkFDTCxLQUFLO3VCQUNMLEtBQUs7a0JBQ0wsS0FBSzsrQkF5QkwsWUFBWSxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xvckV2ZW50IH0gZnJvbSAnbmd4LWNvbG9yJztcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRCbG9ja3NPcHRpb25zIH0gZnJvbSAnLi4vY2xhc3Nlcy9FbGVtZW50cyc7XG4vLyBpbXBvcnQgeyBQYkVtYWlsQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi9wYi1lbWFpbC1idWlsZGVyLnNlcnZpY2UnO1xuLy8gaW1wb3J0IHsgcGFyc2VDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGItY29sb3InLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG5cbiAgICAgIG1hdC1mb3JtLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jaG9vc2UtY29sb3Ige1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmN1cnJlbnQtY29sb3Ige1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIG1hcmdpbjogMC4yNWVtIDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgNTAwbXMgY3ViaWMtYmV6aWVyKDAuNDQ1LCAwLjA1LCAwLjU1LCAwLjk1KTtcbiAgICAgIH1cblxuICAgICAgLmNob29zZS1jb2xvci50cmFuc3BhcmVudCAuY3VycmVudC1jb2xvciB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIGNvbG9yLWNocm9tZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxZW0pO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgei1pbmRleDogOTtcbiAgICAgIH1cbiAgICBgXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwXCIgKm5nSWY9XCJzaG93VHJhbnNwYXJlbnRcIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAoY2hhbmdlKT1cIm1ha2VUcmFuc3BhcmVudENvbG9yKClcIlxuICAgICAgICBpMThuPVwiQ29sb3Igc2V0dGluZ3N8TWFrZSBjb2xvciB0cmFuc3BhcmVudFwiXG4gICAgICA+XG4gICAgICAgIFRyYW5zcGFyZW50XG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyb3VwIHR3b1wiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cIkNvbG9yIHNldHRpbmdzfENoYW5nZSBjb2xvclwiPkNvbG9yPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZGlzYWJsZWRdPVwidHJhbnNwYXJlbnQgfHwgZGlzYWJsZWRcIiAoZm9jdXMpPVwic2hvd0NvbG9yUGlja2VyID0gZmFsc2VcIiBbKG5nTW9kZWwpXT1cImN1cnJlbnRDb2xvclwiIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hvb3NlLWNvbG9yXCIgW2NsYXNzLnRyYW5zcGFyZW50XT1cInRyYW5zcGFyZW50IHx8IGRpc2FibGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50LWNvbG9yXCIgKG1vdXNlb3Zlcik9XCJzaG93Q29sb3JQaWNrZXIgPSAhdHJhbnNwYXJlbnRcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImN1cnJlbnRDb2xvclwiPjwvZGl2PlxuICAgICAgICA8Y29sb3ItY2hyb21lXG4gICAgICAgICAgW2Rpc2FibGVBbHBoYV09XCJ0cnVlXCJcbiAgICAgICAgICAqbmdJZj1cInNob3dDb2xvclBpY2tlclwiXG4gICAgICAgICAgKG9uQ2hhbmdlQ29tcGxldGUpPVwiY2hhbmdlQ29sb3IoJGV2ZW50KVwiXG4gICAgICAgICAgW2NvbG9yXT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgID48L2NvbG9yLWNocm9tZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb2xvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IFRCbG9ja3NPcHRpb25zICYgeyBjb2xvcj86IHN0cmluZzsgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nIH07XG4gIEBJbnB1dCgpIHNob3dUcmFuc3BhcmVudDogYm9vbGVhbjtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkga2V5OiAnYmFja2dyb3VuZENvbG9yJyB8ICdjb2xvcicgPSAnYmFja2dyb3VuZENvbG9yJztcblxuICB0cmFuc3BhcmVudCA9IGZhbHNlO1xuICBzaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcblxuICBwcml2YXRlIG9sZFZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbWFpbE9iamVjdDogUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSkge31cblxuICBnZXQgY3VycmVudENvbG9yTW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLmtleV07XG4gIH1cblxuICBzZXQgY3VycmVudENvbG9yTW9kZWwoaGV4OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wdGlvbnNbdGhpcy5rZXldID0gaGV4O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDb2xvcigpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc3BhcmVudCA/IHRoaXMub2xkVmFsdWUgOiB0aGlzLmN1cnJlbnRDb2xvck1vZGVsO1xuICB9XG5cbiAgc2V0IGN1cnJlbnRDb2xvcihoZXg6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudENvbG9yTW9kZWwgPSBoZXg7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Ib3N0TW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLnNob3dDb2xvclBpY2tlciA9IGZhbHNlO1xuICB9XG5cbiAgY2hhbmdlQ29sb3IoZXZlbnQ6IENvbG9yRXZlbnQpIHtcbiAgICB0aGlzLmN1cnJlbnRDb2xvciA9IGV2ZW50LmNvbG9yLmhleDtcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbWFrZVRyYW5zcGFyZW50Q29sb3IoKSB7XG4gICAgdGhpcy5zaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy50cmFuc3BhcmVudCkge1xuICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMuY3VycmVudENvbG9yTW9kZWw7XG4gICAgICB0aGlzLmN1cnJlbnRDb2xvciA9ICd0cmFuc3BhcmVudCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudENvbG9yID0gdGhpcy5vbGRWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRDb2xvciA9PT0gJ3RyYW5zcGFyZW50Jykge1xuICAgICAgdGhpcy50cmFuc3BhcmVudCA9IHRydWU7XG4gICAgICB0aGlzLm9sZFZhbHVlID0gJyNmZmZmZmYnO1xuICAgIH1cbiAgICAvLyB0aGlzLmNoYW5nZUNvbnRyYXN0Q29sb3IoKTtcbiAgfVxufVxuIl19
1
+ /*
2
+ * Copyright (c) 2024 Pobuca.
3
+ * All rights reserved.
4
+ */
5
+ import { ChangeDetectionStrategy, Component, HostListener, Input } from '@angular/core';
6
+ import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
7
+ // import { PbEmailBuilderService } from '../pb-email-builder.service';
8
+ // import { parseColor } from '../utils';
9
+ export class ColorComponent {
10
+ constructor(emailObject) {
11
+ this.emailObject = emailObject;
12
+ this.disabled = false;
13
+ this.key = 'backgroundColor';
14
+ this.transparent = false;
15
+ this.showColorPicker = false;
16
+ }
17
+ get currentColorModel() {
18
+ return this.options[this.key];
19
+ }
20
+ set currentColorModel(hex) {
21
+ this.options[this.key] = hex;
22
+ }
23
+ get currentColor() {
24
+ return this.transparent ? this.oldValue : this.currentColorModel;
25
+ }
26
+ set currentColor(hex) {
27
+ this.currentColorModel = hex;
28
+ }
29
+ onHostMouseLeave() {
30
+ this.showColorPicker = false;
31
+ }
32
+ changeColor(event) {
33
+ this.currentColor = event.color.hex;
34
+ this.emailObject.markForCheck();
35
+ }
36
+ makeTransparentColor() {
37
+ this.showColorPicker = false;
38
+ if (this.transparent) {
39
+ this.oldValue = this.currentColorModel;
40
+ this.currentColor = 'transparent';
41
+ }
42
+ else {
43
+ this.currentColor = this.oldValue;
44
+ }
45
+ this.emailObject.markForCheck();
46
+ }
47
+ ngOnInit() {
48
+ if (this.currentColor === 'transparent') {
49
+ this.transparent = true;
50
+ this.oldValue = '#ffffff';
51
+ }
52
+ // this.changeContrastColor();
53
+ }
54
+ }
55
+ ColorComponent.decorators = [
56
+ { type: Component, args: [{
57
+ selector: 'pb-color',
58
+ template: `
59
+ <div class="group" *ngIf="showTransparent">
60
+ <mat-slide-toggle
61
+ [disabled]="disabled"
62
+ [(ngModel)]="transparent"
63
+ (change)="makeTransparentColor()"
64
+ i18n="Color settings|Make color transparent"
65
+ >
66
+ Transparent
67
+ </mat-slide-toggle>
68
+ </div>
69
+ <div class="group two">
70
+ <mat-form-field appearance="outline">
71
+ <mat-label i18n="Color settings|Change color">Color</mat-label>
72
+ <input matInput [disabled]="transparent || disabled" (focus)="showColorPicker = false" [(ngModel)]="currentColor" type="text" />
73
+ </mat-form-field>
74
+ <div class="choose-color" [class.transparent]="transparent || disabled">
75
+ <div class="current-color" (mouseover)="showColorPicker = !transparent" [style.backgroundColor]="currentColor"></div>
76
+ <color-chrome
77
+ [disableAlpha]="true"
78
+ *ngIf="showColorPicker"
79
+ (onChangeComplete)="changeColor($event)"
80
+ [color]="currentColor"
81
+ ></color-chrome>
82
+ </div>
83
+ </div>
84
+ `,
85
+ changeDetection: ChangeDetectionStrategy.OnPush,
86
+ styles: [`
87
+ :host {
88
+ display: block;
89
+ position: relative;
90
+ }
91
+
92
+ mat-form-field {
93
+ width: 100%;
94
+ }
95
+
96
+ .choose-color {
97
+ display: block;
98
+ height: 100%;
99
+ width: 100%;
100
+ }
101
+
102
+ .current-color {
103
+ width: 100%;
104
+ height: 48px;
105
+ border-radius: 5px;
106
+ margin: 0.25em 0;
107
+ cursor: pointer;
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: center;
111
+ border: 1px solid rgba(0, 0, 0, 0.12);
112
+ transition: background-color 500ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
113
+ }
114
+
115
+ .choose-color.transparent .current-color {
116
+ opacity: 0.5;
117
+ pointer-events: none;
118
+ }
119
+
120
+ color-chrome {
121
+ position: absolute;
122
+ top: calc(100% - 1em);
123
+ right: 0;
124
+ z-index: 9;
125
+ }
126
+ `]
127
+ },] }
128
+ ];
129
+ ColorComponent.ctorParameters = () => [
130
+ { type: PbEmailObjectStoreService }
131
+ ];
132
+ ColorComponent.propDecorators = {
133
+ options: [{ type: Input }],
134
+ showTransparent: [{ type: Input }],
135
+ disabled: [{ type: Input }],
136
+ key: [{ type: Input }],
137
+ onHostMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]
138
+ };
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYi1lbWFpbC1idWlsZGVyL3NyYy9saWIvZ3JvdXBzL2NvbG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUV0SCx1RUFBdUU7QUFDdkUseUNBQXlDO0FBNEV6QyxNQUFNLE9BQU8sY0FBYztJQVd6QixZQUFvQixXQUFzQztRQUF0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBMkI7UUFSakQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixRQUFHLEdBQWdDLGlCQUFpQixDQUFDO1FBRTlELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO0lBSXFDLENBQUM7SUFFOUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsQ0FBQyxHQUFXO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRTJCLGdCQUFnQjtRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxhQUFhLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDM0I7UUFDRCw4QkFBOEI7SUFDaEMsQ0FBQzs7O1lBaklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkE0Q3BCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBckU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdDQzthQThCSjs7O1lBOUVRLHlCQUF5Qjs7O3NCQWdGL0IsS0FBSzs4QkFDTCxLQUFLO3VCQUNMLEtBQUs7a0JBQ0wsS0FBSzsrQkF5QkwsWUFBWSxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxyXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb2xvckV2ZW50IH0gZnJvbSAnbmd4LWNvbG9yJztcclxuaW1wb3J0IHsgUGJFbWFpbE9iamVjdFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVybmFscy9wYi1lbWFpbC1vYmplY3Qtc3RvcmUvcGItZW1haWwtb2JqZWN0LXN0b3JlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUQmxvY2tzT3B0aW9ucyB9IGZyb20gJy4uL2NsYXNzZXMvRWxlbWVudHMnO1xyXG4vLyBpbXBvcnQgeyBQYkVtYWlsQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi9wYi1lbWFpbC1idWlsZGVyLnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBwYXJzZUNvbG9yIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYi1jb2xvcicsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgXHJcbiAgICAgIDpob3N0IHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hdC1mb3JtLWZpZWxkIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmNob29zZS1jb2xvciB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY3VycmVudC1jb2xvciB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgICAgICBtYXJnaW46IDAuMjVlbSAwO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDUwMG1zIGN1YmljLWJlemllcigwLjQ0NSwgMC4wNSwgMC41NSwgMC45NSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jaG9vc2UtY29sb3IudHJhbnNwYXJlbnQgLmN1cnJlbnQtY29sb3Ige1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29sb3ItY2hyb21lIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAxZW0pO1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDk7XHJcbiAgICAgIH1cclxuICAgIGBcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiAqbmdJZj1cInNob3dUcmFuc3BhcmVudFwiPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJtYWtlVHJhbnNwYXJlbnRDb2xvcigpXCJcclxuICAgICAgICBpMThuPVwiQ29sb3Igc2V0dGluZ3N8TWFrZSBjb2xvciB0cmFuc3BhcmVudFwiXHJcbiAgICAgID5cclxuICAgICAgICBUcmFuc3BhcmVudFxyXG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJncm91cCB0d29cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBpMThuPVwiQ29sb3Igc2V0dGluZ3N8Q2hhbmdlIGNvbG9yXCI+Q29sb3I8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Rpc2FibGVkXT1cInRyYW5zcGFyZW50IHx8IGRpc2FibGVkXCIgKGZvY3VzKT1cInNob3dDb2xvclBpY2tlciA9IGZhbHNlXCIgWyhuZ01vZGVsKV09XCJjdXJyZW50Q29sb3JcIiB0eXBlPVwidGV4dFwiIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjaG9vc2UtY29sb3JcIiBbY2xhc3MudHJhbnNwYXJlbnRdPVwidHJhbnNwYXJlbnQgfHwgZGlzYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VycmVudC1jb2xvclwiIChtb3VzZW92ZXIpPVwic2hvd0NvbG9yUGlja2VyID0gIXRyYW5zcGFyZW50XCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjdXJyZW50Q29sb3JcIj48L2Rpdj5cclxuICAgICAgICA8Y29sb3ItY2hyb21lXHJcbiAgICAgICAgICBbZGlzYWJsZUFscGhhXT1cInRydWVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93Q29sb3JQaWNrZXJcIlxyXG4gICAgICAgICAgKG9uQ2hhbmdlQ29tcGxldGUpPVwiY2hhbmdlQ29sb3IoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbY29sb3JdPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICA+PC9jb2xvci1jaHJvbWU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFRCbG9ja3NPcHRpb25zICYgeyBjb2xvcj86IHN0cmluZzsgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nIH07XHJcbiAgQElucHV0KCkgc2hvd1RyYW5zcGFyZW50OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkga2V5OiAnYmFja2dyb3VuZENvbG9yJyB8ICdjb2xvcicgPSAnYmFja2dyb3VuZENvbG9yJztcclxuXHJcbiAgdHJhbnNwYXJlbnQgPSBmYWxzZTtcclxuICBzaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBvbGRWYWx1ZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxyXG5cclxuICBnZXQgY3VycmVudENvbG9yTW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMua2V5XTtcclxuICB9XHJcblxyXG4gIHNldCBjdXJyZW50Q29sb3JNb2RlbChoZXg6IHN0cmluZykge1xyXG4gICAgdGhpcy5vcHRpb25zW3RoaXMua2V5XSA9IGhleDtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50Q29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc3BhcmVudCA/IHRoaXMub2xkVmFsdWUgOiB0aGlzLmN1cnJlbnRDb2xvck1vZGVsO1xyXG4gIH1cclxuXHJcbiAgc2V0IGN1cnJlbnRDb2xvcihoZXg6IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50Q29sb3JNb2RlbCA9IGhleDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKSBvbkhvc3RNb3VzZUxlYXZlKCkge1xyXG4gICAgdGhpcy5zaG93Q29sb3JQaWNrZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUNvbG9yKGV2ZW50OiBDb2xvckV2ZW50KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRDb2xvciA9IGV2ZW50LmNvbG9yLmhleDtcclxuICAgIHRoaXMuZW1haWxPYmplY3QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBtYWtlVHJhbnNwYXJlbnRDb2xvcigpIHtcclxuICAgIHRoaXMuc2hvd0NvbG9yUGlja2VyID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy50cmFuc3BhcmVudCkge1xyXG4gICAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy5jdXJyZW50Q29sb3JNb2RlbDtcclxuICAgICAgdGhpcy5jdXJyZW50Q29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50Q29sb3IgPSB0aGlzLm9sZFZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWFpbE9iamVjdC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudENvbG9yID09PSAndHJhbnNwYXJlbnQnKSB7XHJcbiAgICAgIHRoaXMudHJhbnNwYXJlbnQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9sZFZhbHVlID0gJyNmZmZmZmYnO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5jaGFuZ2VDb250cmFzdENvbG9yKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,63 +1,63 @@
1
- /*
2
- * Copyright (c) 2024 Pobuca.
3
- * All rights reserved.
4
- */
5
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
6
- import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
7
- export class DirectionComponent {
8
- constructor(emailObject) {
9
- this.emailObject = emailObject;
10
- this.dirLabels = new Map([
11
- ['ltr', $localize `:@@direction_ltr:Left to right`],
12
- ['rtl', $localize `:@@direction_rtl:Right to left`]
13
- ]);
14
- }
15
- markForCheck() {
16
- this.emailObject.markForCheck();
17
- }
18
- getDirections() {
19
- return ['ltr', 'rtl'];
20
- }
21
- getDirectionLabel(dir) {
22
- return this.dirLabels.get(dir);
23
- }
24
- }
25
- DirectionComponent.decorators = [
26
- { type: Component, args: [{
27
- selector: 'pb-direction',
28
- template: `
29
- <mat-form-field appearance="outline">
30
- <mat-label i18n="settings|Direction">Direction</mat-label>
31
- <mat-select
32
- i18n-placeholder="settings|Direction"
33
- placeholder="Direction"
34
- [(value)]="model.direction"
35
- (selectionChange)="markForCheck()"
36
- disableRipple
37
- >
38
- <mat-option *ngFor="let dir of getDirections()" [value]="dir">
39
- {{ getDirectionLabel(dir) }}
40
- </mat-option>
41
- </mat-select>
42
- </mat-form-field>
43
- `,
44
- changeDetection: ChangeDetectionStrategy.OnPush,
45
- styles: [`
46
- :host {
47
- display: block;
48
- width: 100%;
49
- }
50
-
51
- mat-form-field {
52
- width: 100%;
53
- }
54
- `]
55
- },] }
56
- ];
57
- DirectionComponent.ctorParameters = () => [
58
- { type: PbEmailObjectStoreService }
59
- ];
60
- DirectionComponent.propDecorators = {
61
- model: [{ type: Input }]
62
- };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2dyb3Vwcy9kaXJlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFrQ3RILE1BQU0sT0FBTyxrQkFBa0I7SUFVN0IsWUFBb0IsV0FBc0M7UUFBdEMsZ0JBQVcsR0FBWCxXQUFXLENBQTJCO1FBTGxELGNBQVMsR0FBd0IsSUFBSSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFBLGdDQUFnQyxDQUFDO1lBQ2xELENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQSxnQ0FBZ0MsQ0FBQztTQUNuRCxDQUFDLENBQUM7SUFFMEQsQ0FBQztJQUU5RCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQWU7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2dCQWFELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO3lCQVg3Qzs7Ozs7Ozs7O0tBU0M7YUFHSjs7O1lBakNRLHlCQUF5Qjs7O29CQW1DL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjQgUG9idWNhLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJuYWxzL3BiLWVtYWlsLW9iamVjdC1zdG9yZS9wYi1lbWFpbC1vYmplY3Qtc3RvcmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BiLWRpcmVjdGlvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICA8bWF0LWxhYmVsIGkxOG49XCJzZXR0aW5nc3xEaXJlY3Rpb25cIj5EaXJlY3Rpb248L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGkxOG4tcGxhY2Vob2xkZXI9XCJzZXR0aW5nc3xEaXJlY3Rpb25cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRpcmVjdGlvblwiXG4gICAgICAgIFsodmFsdWUpXT1cIm1vZGVsLmRpcmVjdGlvblwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwibWFya0ZvckNoZWNrKClcIlxuICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkaXIgb2YgZ2V0RGlyZWN0aW9ucygpXCIgW3ZhbHVlXT1cImRpclwiPlxuICAgICAgICAgIHt7IGdldERpcmVjdGlvbkxhYmVsKGRpcikgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICBtYXQtZm9ybS1maWVsZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIGBcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbW9kZWw6IHtcbiAgICBkaXJlY3Rpb246IFREaXJlY3Rpb247XG4gIH07XG5cbiAgcHJpdmF0ZSBkaXJMYWJlbHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKFtcbiAgICBbJ2x0cicsICRsb2NhbGl6ZWA6QEBkaXJlY3Rpb25fbHRyOkxlZnQgdG8gcmlnaHRgXSxcbiAgICBbJ3J0bCcsICRsb2NhbGl6ZWA6QEBkaXJlY3Rpb25fcnRsOlJpZ2h0IHRvIGxlZnRgXVxuICBdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxuXG4gIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0RGlyZWN0aW9ucygpOiBURGlyZWN0aW9uW10ge1xuICAgIHJldHVybiBbJ2x0cicsICdydGwnXTtcbiAgfVxuXG4gIGdldERpcmVjdGlvbkxhYmVsKGRpcjogVERpcmVjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlyTGFiZWxzLmdldChkaXIpO1xuICB9XG59XG4iXX0=
1
+ /*
2
+ * Copyright (c) 2024 Pobuca.
3
+ * All rights reserved.
4
+ */
5
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
6
+ import { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';
7
+ export class DirectionComponent {
8
+ constructor(emailObject) {
9
+ this.emailObject = emailObject;
10
+ this.dirLabels = new Map([
11
+ ['ltr', $localize `:@@direction_ltr:Left to right`],
12
+ ['rtl', $localize `:@@direction_rtl:Right to left`]
13
+ ]);
14
+ }
15
+ markForCheck() {
16
+ this.emailObject.markForCheck();
17
+ }
18
+ getDirections() {
19
+ return ['ltr', 'rtl'];
20
+ }
21
+ getDirectionLabel(dir) {
22
+ return this.dirLabels.get(dir);
23
+ }
24
+ }
25
+ DirectionComponent.decorators = [
26
+ { type: Component, args: [{
27
+ selector: 'pb-direction',
28
+ template: `
29
+ <mat-form-field appearance="outline">
30
+ <mat-label i18n="settings|Direction">Direction</mat-label>
31
+ <mat-select
32
+ i18n-placeholder="settings|Direction"
33
+ placeholder="Direction"
34
+ [(value)]="model.direction"
35
+ (selectionChange)="markForCheck()"
36
+ disableRipple
37
+ >
38
+ <mat-option *ngFor="let dir of getDirections()" [value]="dir">
39
+ {{ getDirectionLabel(dir) }}
40
+ </mat-option>
41
+ </mat-select>
42
+ </mat-form-field>
43
+ `,
44
+ changeDetection: ChangeDetectionStrategy.OnPush,
45
+ styles: [`
46
+ :host {
47
+ display: block;
48
+ width: 100%;
49
+ }
50
+
51
+ mat-form-field {
52
+ width: 100%;
53
+ }
54
+ `]
55
+ },] }
56
+ ];
57
+ DirectionComponent.ctorParameters = () => [
58
+ { type: PbEmailObjectStoreService }
59
+ ];
60
+ DirectionComponent.propDecorators = {
61
+ model: [{ type: Input }]
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL2dyb3Vwcy9kaXJlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFrQ3RILE1BQU0sT0FBTyxrQkFBa0I7SUFVN0IsWUFBb0IsV0FBc0M7UUFBdEMsZ0JBQVcsR0FBWCxXQUFXLENBQTJCO1FBTGxELGNBQVMsR0FBd0IsSUFBSSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFBLGdDQUFnQyxDQUFDO1lBQ2xELENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQSxnQ0FBZ0MsQ0FBQztTQUNuRCxDQUFDLENBQUM7SUFFMEQsQ0FBQztJQUU5RCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQWU7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDOzs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2dCQWFELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO3lCQVg3Qzs7Ozs7Ozs7O0tBU0M7YUFHSjs7O1lBakNRLHlCQUF5Qjs7O29CQW1DL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXHJcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVERpcmVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFBiRW1haWxPYmplY3RTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcm5hbHMvcGItZW1haWwtb2JqZWN0LXN0b3JlL3BiLWVtYWlsLW9iamVjdC1zdG9yZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGItZGlyZWN0aW9uJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cInNldHRpbmdzfERpcmVjdGlvblwiPkRpcmVjdGlvbjwvbWF0LWxhYmVsPlxyXG4gICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgIGkxOG4tcGxhY2Vob2xkZXI9XCJzZXR0aW5nc3xEaXJlY3Rpb25cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRGlyZWN0aW9uXCJcclxuICAgICAgICBbKHZhbHVlKV09XCJtb2RlbC5kaXJlY3Rpb25cIlxyXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwibWFya0ZvckNoZWNrKClcIlxyXG4gICAgICAgIGRpc2FibGVSaXBwbGVcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkaXIgb2YgZ2V0RGlyZWN0aW9ucygpXCIgW3ZhbHVlXT1cImRpclwiPlxyXG4gICAgICAgICAge3sgZ2V0RGlyZWN0aW9uTGFiZWwoZGlyKSB9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICBgLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYFxyXG4gICAgICA6aG9zdCB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hdC1mb3JtLWZpZWxkIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgYFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbW9kZWw6IHtcclxuICAgIGRpcmVjdGlvbjogVERpcmVjdGlvbjtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGRpckxhYmVsczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoW1xyXG4gICAgWydsdHInLCAkbG9jYWxpemVgOkBAZGlyZWN0aW9uX2x0cjpMZWZ0IHRvIHJpZ2h0YF0sXHJcbiAgICBbJ3J0bCcsICRsb2NhbGl6ZWA6QEBkaXJlY3Rpb25fcnRsOlJpZ2h0IHRvIGxlZnRgXVxyXG4gIF0pO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVtYWlsT2JqZWN0OiBQYkVtYWlsT2JqZWN0U3RvcmVTZXJ2aWNlKSB7fVxyXG5cclxuICBtYXJrRm9yQ2hlY2soKSB7XHJcbiAgICB0aGlzLmVtYWlsT2JqZWN0Lm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9ucygpOiBURGlyZWN0aW9uW10ge1xyXG4gICAgcmV0dXJuIFsnbHRyJywgJ3J0bCddO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9uTGFiZWwoZGlyOiBURGlyZWN0aW9uKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRpckxhYmVscy5nZXQoZGlyKTtcclxuICB9XHJcbn1cclxuIl19