@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,159 +1,159 @@
1
- /*
2
- * Copyright (c) 2024 Pobuca.
3
- * All rights reserved.
4
- */
5
- import { InjectionToken } from '@angular/core';
6
- import { Structure } from '../classes/Structure';
7
- import { ButtonBlock, DividerBlock, ImageBlock, SocialBlock, SpacerBlock, TextBlock } from '../classes/Elements';
8
- /**
9
- * Some top documentation
10
- */
11
- /**
12
- * The default social networks list provided by builder. This list is injected by {@link PB_SOCIAL_NETWORKS}.
13
- */
14
- export const PB_DEFAULT_SOCIAL_NETWORKS = [
15
- 'github',
16
- 'instagram',
17
- 'web',
18
- 'snapchat',
19
- 'youtube',
20
- 'vimeo',
21
- 'medium',
22
- 'soundcloud',
23
- 'dribbble',
24
- 'facebook',
25
- 'twitter',
26
- 'pinterest',
27
- 'linkedin',
28
- 'tumblr',
29
- 'xing',
30
- 'tiktok'
31
- ];
32
- /**
33
- * The token that injects [default social networks list]{@link PB_DEFAULT_SOCIAL_NETWORKS}.
34
- * Use it to add or remove social networks within list.
35
- *
36
- * @example
37
- * {provide: PB_SOCIAL_NETWORKS, useValue: PB_DEFAULT_SOCIAL_NETWORKS.filter(network => !['github', 'instagram'].includes(network)}
38
- */
39
- export const PB_SOCIAL_NETWORKS = new InjectionToken('PB Social Networks', {
40
- providedIn: 'any',
41
- factory: () => PB_DEFAULT_SOCIAL_NETWORKS
42
- });
43
- /**
44
- * The default [Google Fonts]{@link https://fonts.google.com} list provided by builder.
45
- * This list is injected by {@link PB_GOOGLE_FONTS} token.
46
- */
47
- export const PB_DEFAULT_GOOGLE_FONTS = [
48
- 'Open+Sans:300,400,500,700',
49
- 'Droid+Sans:300,400,500,700',
50
- 'Lato:300,400,500,700',
51
- 'Roboto:300,400,700,900',
52
- 'Ubuntu:300,400,500,700',
53
- 'Fira+Sans:300,400,500,700',
54
- 'Mansalva:400'
55
- ];
56
- /**
57
- * The token that injects [default google fonts]{@link PB_DEFAULT_GOOGLE_FONTS} list.
58
- */
59
- export const PB_GOOGLE_FONTS = new InjectionToken('PB Google Fonts', {
60
- providedIn: 'any',
61
- factory: () => PB_DEFAULT_GOOGLE_FONTS
62
- });
63
- /**
64
- * The default Fallback Fonts list provided by builder. This list is injected by {@link PB_FALLBACK_FONTS} token.
65
- *
66
- * A fallback font is a font that takes effect in case a [Google Font]{@link PB_DEFAULT_GOOGLE_FONTS} can't be loaded by some email
67
- * providers.
68
- */
69
- export const PB_DEFAULT_FALLBACK_FONTS = [
70
- 'Palatino Linotype, Book Antiqua, Palatino, serif',
71
- 'Times New Roman, Times, serif',
72
- 'Arial, Helvetica, sans-serif',
73
- 'Arial Black, Gadget, sans-serif',
74
- 'Comic Sans MS, cursive, sans-serif',
75
- 'Impact, Charcoal, sans-serif',
76
- 'Lucida Sans Unicode, Lucida Grande, sans-serif',
77
- 'Tahoma, Geneva, sans-serif',
78
- 'Trebuchet MS, Helvetica, sans-serif',
79
- 'Verdana, Geneva, sans-serif',
80
- 'Courier New, Courier, monospace',
81
- 'Lucida Console, Monaco, monospace'
82
- ];
83
- /**
84
- * The token that injects {@link PB_DEFAULT_FALLBACK_FONTS} list.
85
- */
86
- export const PB_FALLBACK_FONTS = new InjectionToken('PB Fallback Fonts', {
87
- providedIn: 'any',
88
- factory: () => PB_DEFAULT_FALLBACK_FONTS
89
- });
90
- /**
91
- * The default [Structures]{@link IStructure} list. This list is injected by {@link PB_STRUCTURES} token.
92
- */
93
- export const PB_DEFAULT_STRUCTURES = [
94
- new Structure('cols_1'),
95
- new Structure('cols_2'),
96
- new Structure('cols_3'),
97
- new Structure('cols_4'),
98
- new Structure('cols_12'),
99
- new Structure('cols_21')
100
- ];
101
- /**
102
- * The token that injects {@link PB_DEFAULT_STRUCTURES} list.
103
- */
104
- export const PB_STRUCTURES = new InjectionToken('PB Structures', {
105
- providedIn: 'any',
106
- factory: () => PB_DEFAULT_STRUCTURES
107
- });
108
- /**
109
- * The default [Blocks]{@link TBlocks} list. This list is injected by {@link PB_BLOCKS} token.
110
- */
111
- export const PB_DEFAULT_BLOCKS = [
112
- new TextBlock(),
113
- new ImageBlock(),
114
- new ButtonBlock(),
115
- new DividerBlock(),
116
- new SpacerBlock(),
117
- new SocialBlock()
118
- ];
119
- /**
120
- * The token that injects {@link PB_BLOCKS} list.
121
- */
122
- export const PB_BLOCKS = new InjectionToken('PB Blocks', {
123
- providedIn: 'any',
124
- factory: () => PB_DEFAULT_BLOCKS
125
- });
126
- /**
127
- * Default builder configuration, injected by {@link PB_CONFIG} token. See {@link IForRootConf} for more info.
128
- */
129
- export const PB_DEFAULT_CONFIG = Object.freeze({
130
- xApiKey: 't7HdQfZjGp6R96fOV4P8v18ggf6LLTQZ1puUI2tz',
131
- // apiPath: 'https://ngb-api.wlocalhost.org/v1',
132
- useSaveButton: true,
133
- usePreviewButton: true,
134
- useDownloadButton: true,
135
- templateListIfEmpty: true,
136
- uploadImageName: 'image'
137
- });
138
- /**
139
- * The token that injects [default builder configurations]{@link PB_DEFAULT_CONFIG}.
140
- */
141
- export const PB_CONFIG = new InjectionToken('PB Builder Configuration', {
142
- providedIn: 'root',
143
- factory: () => PB_DEFAULT_CONFIG
144
- });
145
- /**
146
- * The default Storage used by builder. It can be either `localStorage` or `sessionStorage`.
147
- */
148
- export const PB_STORAGE_FACTORY = new InjectionToken('PB Storage factory token', {
149
- providedIn: 'any',
150
- factory: () => sessionStorage
151
- });
152
- /**
153
- * The default storage to cache the templates list. It can be either `localStorage` or `sessionStorage`.
154
- */
155
- export const PB_TEMPLATES_TEMPORARY_STORAGE = new InjectionToken('PB Token that stores temporary templates cache', {
156
- providedIn: 'any',
157
- factory: () => sessionStorage
158
- });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL3Rva2Vucy90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQVcsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUg7O0dBRUc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFhO0lBQ2xELFFBQVE7SUFDUixXQUFXO0lBQ1gsS0FBSztJQUNMLFVBQVU7SUFDVixTQUFTO0lBQ1QsT0FBTztJQUNQLFFBQVE7SUFDUixZQUFZO0lBQ1osVUFBVTtJQUNWLFVBQVU7SUFDVixTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixRQUFRO0lBQ1IsTUFBTTtJQUNOLFFBQVE7Q0FDVCxDQUFDO0FBQ0Y7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQVcsb0JBQW9CLEVBQUU7SUFDbkYsVUFBVSxFQUFFLEtBQUs7SUFDakIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLDBCQUEwQjtDQUMxQyxDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBYTtJQUMvQywyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLHNCQUFzQjtJQUN0Qix3QkFBd0I7SUFDeEIsd0JBQXdCO0lBQ3hCLDJCQUEyQjtJQUMzQixjQUFjO0NBQ2YsQ0FBQztBQUNGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElB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QWM7Q0FDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyNCBQb2J1Y2EuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElGb3JSb290Q29uZiwgSVN0cnVjdHVyZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdHJ1Y3R1cmUgfSBmcm9tICcuLi9jbGFzc2VzL1N0cnVjdHVyZSc7XG5pbXBvcnQgeyBCdXR0b25CbG9jaywgRGl2aWRlckJsb2NrLCBJbWFnZUJsb2NrLCBTb2NpYWxCbG9jaywgU3BhY2VyQmxvY2ssIFRCbG9ja3MsIFRleHRCbG9jayB9IGZyb20gJy4uL2NsYXNzZXMvRWxlbWVudHMnO1xuXG4vKipcbiAqIFNvbWUgdG9wIGRvY3VtZW50YXRpb25cbiAqL1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHNvY2lhbCBuZXR3b3JrcyBsaXN0IHByb3ZpZGVkIGJ5IGJ1aWxkZXIuIFRoaXMgbGlzdCBpcyBpbmplY3RlZCBieSB7QGxpbmsgUEJfU09DSUFMX05FVFdPUktTfS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBCX0RFRkFVTFRfU09DSUFMX05FVFdPUktTOiBzdHJpbmdbXSA9IFtcbiAgJ2dpdGh1YicsXG4gICdpbnN0YWdyYW0nLFxuICAnd2ViJyxcbiAgJ3NuYXBjaGF0JyxcbiAgJ3lvdXR1YmUnLFxuICAndmltZW8nLFxuICAnbWVkaXVtJyxcbiAgJ3NvdW5kY2xvdWQnLFxuICAnZHJpYmJibGUnLFxuICAnZmFjZWJvb2snLFxuICAndHdpdHRlcicsXG4gICdwaW50ZXJlc3QnLFxuICAnbGlua2VkaW4nLFxuICAndHVtYmxyJyxcbiAgJ3hpbmcnLFxuICAndGlrdG9rJ1xuXTtcbi8qKlxuICogVGhlIHRva2VuIHRoYXQgaW5qZWN0cyBbZGVmYXVsdCBzb2NpYWwgbmV0d29ya3MgbGlzdF17QGxpbmsgUEJfREVGQVVMVF9TT0NJQUxfTkVUV09SS1N9LlxuICogVXNlIGl0IHRvIGFkZCBvciByZW1vdmUgc29jaWFsIG5ldHdvcmtzIHdpdGhpbiBsaXN0LlxuICpcbiAqIEBleGFtcGxlXG4gKiB7cHJvdmlkZTogUEJfU09DSUFMX05FVFdPUktTLCB1c2VWYWx1ZTogUEJfREVGQVVMVF9TT0NJQUxfTkVUV09SS1MuZmlsdGVyKG5ldHdvcmsgPT4gIVsnZ2l0aHViJywgJ2luc3RhZ3JhbSddLmluY2x1ZGVzKG5ldHdvcmspfVxuICovXG5leHBvcnQgY29uc3QgUEJfU09DSUFMX05FVFdPUktTID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZ1tdPignUEIgU29jaWFsIE5ldHdvcmtzJywge1xuICBwcm92aWRlZEluOiAnYW55JyxcbiAgZmFjdG9yeTogKCkgPT4gUEJfREVGQVVMVF9TT0NJQUxfTkVUV09SS1Ncbn0pO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IFtHb29nbGUgRm9udHNde0BsaW5rIGh0dHBzOi8vZm9udHMuZ29vZ2xlLmNvbX0gbGlzdCBwcm92aWRlZCBieSBidWlsZGVyLlxuICogVGhpcyBsaXN0IGlzIGluamVjdGVkIGJ5IHtAbGluayBQQl9HT09HTEVfRk9OVFN9IHRva2VuLlxuICovXG5leHBvcnQgY29uc3QgUEJfREVGQVVMVF9HT09HTEVfRk9OVFM6IHN0cmluZ1tdID0gW1xuICAnT3BlbitTYW5zOjMwMCw0MDAsNTAwLDcwMCcsXG4gICdEcm9pZCtTYW5zOjMwMCw0MDAsNTAwLDcwMCcsXG4gICdMYXRvOjMwMCw0MDAsNTAwLDcwMCcsXG4gICdSb2JvdG86MzAwLDQwMCw3MDAsOTAwJyxcbiAgJ1VidW50dTozMDAsNDAwLDUwMCw3MDAnLFxuICAnRmlyYStTYW5zOjMwMCw0MDAsNTAwLDcwMCcsXG4gICdNYW5zYWx2YTo0MDAnXG5dO1xuLyoqXG4gKiBUaGUgdG9rZW4gdGhhdCBpbmplY3RzIFtkZWZhdWx0IGdvb2dsZSBmb250c117QGxpbmsgUEJfREVGQVVMVF9HT09HTEVfRk9OVFN9IGxpc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBQQl9HT09HTEVfRk9OVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nW10+KCdQQiBHb29nbGUgRm9udHMnLCB7XG4gIHByb3ZpZGVkSW46ICdhbnknLFxuICBmYWN0b3J5OiAoKSA9PiBQQl9ERUZBVUxUX0dPT0dMRV9GT05UU1xufSk7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgRmFsbGJhY2sgRm9udHMgbGlzdCBwcm92aWRlZCBieSBidWlsZGVyLiBUaGlzIGxpc3QgaXMgaW5qZWN0ZWQgYnkge0BsaW5rIFBCX0ZBTExCQUNLX0ZPTlRTfSB0b2tlbi5cbiAqXG4gKiBBIGZhbGxiYWNrIGZvbnQgaXMgYSBmb250IHRoYXQgdGFrZXMgZWZmZWN0IGluIGNhc2UgYSBbR29vZ2xlIEZvbnRde0BsaW5rIFBCX0RFRkFVTFRfR09PR0xFX0ZPTlRTfSBjYW4ndCBiZSBsb2FkZWQgYnkgc29tZSBlbWFpbFxuICogcHJvdmlkZXJzLlxuICovXG5leHBvcnQgY29uc3QgUEJfREVGQVVMVF9GQUxMQkFDS19GT05UUzogc3RyaW5nW10gPSBbXG4gICdQYWxhdGlubyBMaW5vdHlwZSwgQm9vayBBbnRpcXVhLCBQYWxhdGlubywgc2VyaWYnLFxuICAnVGltZXMgTmV3IFJvbWFuLCBUaW1lcywgc2VyaWYnLFxuICAnQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZicsXG4gICdBcmlhbCBCbGFjaywgR2FkZ2V0LCBzYW5zLXNlcmlmJyxcbiAgJ0NvbWljIFNhbnMgTVMsIGN1cnNpdmUsIHNhbnMtc2VyaWYnLFxuICAnSW1wYWN0LCBDaGFyY29hbCwgc2Fucy1zZXJpZicsXG4gICdMdWNpZGEgU2FucyBVbmljb2RlLCBMdWNpZGEgR3JhbmRlLCBzYW5zLXNlcmlmJyxcbiAgJ1RhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmJyxcbiAgJ1RyZWJ1Y2hldCBNUywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxcbiAgJ1ZlcmRhbmEsIEdlbmV2YSwgc2Fucy1zZXJpZicsXG4gICdDb3VyaWVyIE5ldywgQ291cmllciwgbW9ub3NwYWNlJyxcbiAgJ0x1Y2lkYSBDb25zb2xlLCBNb25hY28sIG1vbm9zcGFjZSdcbl07XG4vKipcbiAqIFRoZSB0b2tlbiB0aGF0IGluamVjdHMge0BsaW5rIFBCX0RFRkFVTFRfRkFMTEJBQ0tfRk9OVFN9IGxpc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBQQl9GQUxMQkFDS19GT05UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmdbXT4oJ1BCIEZhbGxiYWNrIEZvbnRzJywge1xuICBwcm92aWRlZEluOiAnYW55JyxcbiAgZmFjdG9yeTogKCkgPT4gUEJfREVGQVVMVF9GQUxMQkFDS19GT05UU1xufSk7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgW1N0cnVjdHVyZXNde0BsaW5rIElTdHJ1Y3R1cmV9IGxpc3QuIFRoaXMgbGlzdCBpcyBpbmplY3RlZCBieSB7QGxpbmsgUEJfU1RSVUNUVVJFU30gdG9rZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBQQl9ERUZBVUxUX1NUUlVDVFVSRVM6IElTdHJ1Y3R1cmVbXSA9IFtcbiAgbmV3IFN0cnVjdHVyZSgnY29sc18xJyksXG4gIG5ldyBTdHJ1Y3R1cmUoJ2NvbHNfMicpLFxuICBuZXcgU3RydWN0dXJlKCdjb2xzXzMnKSxcbiAgbmV3IFN0cnVjdHVyZSgnY29sc180JyksXG4gIG5ldyBTdHJ1Y3R1cmUoJ2NvbHNfMTInKSxcbiAgbmV3IFN0cnVjdHVyZSgnY29sc18yMScpXG5dO1xuLyoqXG4gKiBUaGUgdG9rZW4gdGhhdCBpbmplY3RzIHtAbGluayBQQl9ERUZBVUxUX1NUUlVDVFVSRVN9IGxpc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBQQl9TVFJVQ1RVUkVTID0gbmV3IEluamVjdGlvblRva2VuPHR5cGVvZiBQQl9ERUZBVUxUX1NUUlVDVFVSRVM+KCdQQiBTdHJ1Y3R1cmVzJywge1xuICBwcm92aWRlZEluOiAnYW55JyxcbiAgZmFjdG9yeTogKCkgPT4gUEJfREVGQVVMVF9TVFJVQ1RVUkVTXG59KTtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBbQmxvY2tzXXtAbGluayBUQmxvY2tzfSBsaXN0LiBUaGlzIGxpc3QgaXMgaW5qZWN0ZWQgYnkge0BsaW5rIFBCX0JMT0NLU30gdG9rZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBQQl9ERUZBVUxUX0JMT0NLUzogVEJsb2Nrc1tdID0gW1xuICBuZXcgVGV4dEJsb2NrKCksXG4gIG5ldyBJbWFnZUJsb2NrKCksXG4gIG5ldyBCdXR0b25CbG9jaygpLFxuICBuZXcgRGl2aWRlckJsb2NrKCksXG4gIG5ldyBTcGFjZXJCbG9jaygpLFxuICBuZXcgU29jaWFsQmxvY2soKVxuXTtcbi8qKlxuICogVGhlIHRva2VuIHRoYXQgaW5qZWN0cyB7QGxpbmsgUEJfQkxPQ0tTfSBsaXN0LlxuICovXG5leHBvcnQgY29uc3QgUEJfQkxPQ0tTID0gbmV3IEluamVjdGlvblRva2VuPHR5cGVvZiBQQl9ERUZBVUxUX0JMT0NLUz4oJ1BCIEJsb2NrcycsIHtcbiAgcHJvdmlkZWRJbjogJ2FueScsXG4gIGZhY3Rvcnk6ICgpID0+IFBCX0RFRkFVTFRfQkxPQ0tTXG59KTtcblxuLyoqXG4gKiBEZWZhdWx0IGJ1aWxkZXIgY29uZmlndXJhdGlvbiwgaW5qZWN0ZWQgYnkge0BsaW5rIFBCX0NPTkZJR30gdG9rZW4uIFNlZSB7QGxpbmsgSUZvclJvb3RDb25mfSBmb3IgbW9yZSBpbmZvLlxuICovXG5leHBvcnQgY29uc3QgUEJfREVGQVVMVF9DT05GSUc6IElGb3JSb290Q29uZiA9IE9iamVjdC5mcmVlemUoe1xuICB4QXBpS2V5OiAndDdIZFFmWmpHcDZSOTZmT1Y0UDh2MThnZ2Y2TExUUVoxcHVVSTJ0eicsXG4gIC8vIGFwaVBhdGg6ICdodHRwczovL25nYi1hcGkud2xvY2FsaG9zdC5vcmcvdjEnLFxuICB1c2VTYXZlQnV0dG9uOiB0cnVlLFxuICB1c2VQcmV2aWV3QnV0dG9uOiB0cnVlLFxuICB1c2VEb3dubG9hZEJ1dHRvbjogdHJ1ZSxcbiAgdGVtcGxhdGVMaXN0SWZFbXB0eTogdHJ1ZSxcbiAgdXBsb2FkSW1hZ2VOYW1lOiAnaW1hZ2UnXG59KTtcbi8qKlxuICogVGhlIHRva2VuIHRoYXQgaW5qZWN0cyBbZGVmYXVsdCBidWlsZGVyIGNvbmZpZ3VyYXRpb25zXXtAbGluayBQQl9ERUZBVUxUX0NPTkZJR30uXG4gKi9cbmV4cG9ydCBjb25zdCBQQl9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFydGlhbDxJRm9yUm9vdENvbmY+PignUEIgQnVpbGRlciBDb25maWd1cmF0aW9uJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IFBCX0RFRkFVTFRfQ09ORklHXG59KTtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBTdG9yYWdlIHVzZWQgYnkgYnVpbGRlci4gSXQgY2FuIGJlIGVpdGhlciBgbG9jYWxTdG9yYWdlYCBvciBgc2Vzc2lvblN0b3JhZ2VgLlxuICovXG5leHBvcnQgY29uc3QgUEJfU1RPUkFHRV9GQUNUT1JZID0gbmV3IEluamVjdGlvblRva2VuPFN0b3JhZ2U+KCdQQiBTdG9yYWdlIGZhY3RvcnkgdG9rZW4nLCB7XG4gIHByb3ZpZGVkSW46ICdhbnknLFxuICBmYWN0b3J5OiAoKSA9PiBzZXNzaW9uU3RvcmFnZVxufSk7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgc3RvcmFnZSB0byBjYWNoZSB0aGUgdGVtcGxhdGVzIGxpc3QuIEl0IGNhbiBiZSBlaXRoZXIgYGxvY2FsU3RvcmFnZWAgb3IgYHNlc3Npb25TdG9yYWdlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IFBCX1RFTVBMQVRFU19URU1QT1JBUllfU1RPUkFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yYWdlPignUEIgVG9rZW4gdGhhdCBzdG9yZXMgdGVtcG9yYXJ5IHRlbXBsYXRlcyBjYWNoZScsIHtcbiAgcHJvdmlkZWRJbjogJ2FueScsXG4gIGZhY3Rvcnk6ICgpID0+IHNlc3Npb25TdG9yYWdlXG59KTtcbiJdfQ==
1
+ /*
2
+ * Copyright (c) 2024 Pobuca.
3
+ * All rights reserved.
4
+ */
5
+ import { InjectionToken } from '@angular/core';
6
+ import { Structure } from '../classes/Structure';
7
+ import { ButtonBlock, DividerBlock, ImageBlock, SocialBlock, SpacerBlock, TextBlock } from '../classes/Elements';
8
+ /**
9
+ * Some top documentation
10
+ */
11
+ /**
12
+ * The default social networks list provided by builder. This list is injected by {@link PB_SOCIAL_NETWORKS}.
13
+ */
14
+ export const PB_DEFAULT_SOCIAL_NETWORKS = [
15
+ 'github',
16
+ 'instagram',
17
+ 'web',
18
+ 'snapchat',
19
+ 'youtube',
20
+ 'vimeo',
21
+ 'medium',
22
+ 'soundcloud',
23
+ 'dribbble',
24
+ 'facebook',
25
+ 'twitter',
26
+ 'pinterest',
27
+ 'linkedin',
28
+ 'tumblr',
29
+ 'xing',
30
+ 'tiktok'
31
+ ];
32
+ /**
33
+ * The token that injects [default social networks list]{@link PB_DEFAULT_SOCIAL_NETWORKS}.
34
+ * Use it to add or remove social networks within list.
35
+ *
36
+ * @example
37
+ * {provide: PB_SOCIAL_NETWORKS, useValue: PB_DEFAULT_SOCIAL_NETWORKS.filter(network => !['github', 'instagram'].includes(network)}
38
+ */
39
+ export const PB_SOCIAL_NETWORKS = new InjectionToken('PB Social Networks', {
40
+ providedIn: 'any',
41
+ factory: () => PB_DEFAULT_SOCIAL_NETWORKS
42
+ });
43
+ /**
44
+ * The default [Google Fonts]{@link https://fonts.google.com} list provided by builder.
45
+ * This list is injected by {@link PB_GOOGLE_FONTS} token.
46
+ */
47
+ export const PB_DEFAULT_GOOGLE_FONTS = [
48
+ 'Open+Sans:300,400,500,700',
49
+ 'Droid+Sans:300,400,500,700',
50
+ 'Lato:300,400,500,700',
51
+ 'Roboto:300,400,700,900',
52
+ 'Ubuntu:300,400,500,700',
53
+ 'Fira+Sans:300,400,500,700',
54
+ 'Mansalva:400'
55
+ ];
56
+ /**
57
+ * The token that injects [default google fonts]{@link PB_DEFAULT_GOOGLE_FONTS} list.
58
+ */
59
+ export const PB_GOOGLE_FONTS = new InjectionToken('PB Google Fonts', {
60
+ providedIn: 'any',
61
+ factory: () => PB_DEFAULT_GOOGLE_FONTS
62
+ });
63
+ /**
64
+ * The default Fallback Fonts list provided by builder. This list is injected by {@link PB_FALLBACK_FONTS} token.
65
+ *
66
+ * A fallback font is a font that takes effect in case a [Google Font]{@link PB_DEFAULT_GOOGLE_FONTS} can't be loaded by some email
67
+ * providers.
68
+ */
69
+ export const PB_DEFAULT_FALLBACK_FONTS = [
70
+ 'Palatino Linotype, Book Antiqua, Palatino, serif',
71
+ 'Times New Roman, Times, serif',
72
+ 'Arial, Helvetica, sans-serif',
73
+ 'Arial Black, Gadget, sans-serif',
74
+ 'Comic Sans MS, cursive, sans-serif',
75
+ 'Impact, Charcoal, sans-serif',
76
+ 'Lucida Sans Unicode, Lucida Grande, sans-serif',
77
+ 'Tahoma, Geneva, sans-serif',
78
+ 'Trebuchet MS, Helvetica, sans-serif',
79
+ 'Verdana, Geneva, sans-serif',
80
+ 'Courier New, Courier, monospace',
81
+ 'Lucida Console, Monaco, monospace'
82
+ ];
83
+ /**
84
+ * The token that injects {@link PB_DEFAULT_FALLBACK_FONTS} list.
85
+ */
86
+ export const PB_FALLBACK_FONTS = new InjectionToken('PB Fallback Fonts', {
87
+ providedIn: 'any',
88
+ factory: () => PB_DEFAULT_FALLBACK_FONTS
89
+ });
90
+ /**
91
+ * The default [Structures]{@link IStructure} list. This list is injected by {@link PB_STRUCTURES} token.
92
+ */
93
+ export const PB_DEFAULT_STRUCTURES = [
94
+ new Structure('cols_1'),
95
+ new Structure('cols_2'),
96
+ new Structure('cols_3'),
97
+ new Structure('cols_4'),
98
+ new Structure('cols_12'),
99
+ new Structure('cols_21')
100
+ ];
101
+ /**
102
+ * The token that injects {@link PB_DEFAULT_STRUCTURES} list.
103
+ */
104
+ export const PB_STRUCTURES = new InjectionToken('PB Structures', {
105
+ providedIn: 'any',
106
+ factory: () => PB_DEFAULT_STRUCTURES
107
+ });
108
+ /**
109
+ * The default [Blocks]{@link TBlocks} list. This list is injected by {@link PB_BLOCKS} token.
110
+ */
111
+ export const PB_DEFAULT_BLOCKS = [
112
+ new TextBlock(),
113
+ new ImageBlock(),
114
+ new ButtonBlock(),
115
+ new DividerBlock(),
116
+ new SpacerBlock(),
117
+ new SocialBlock()
118
+ ];
119
+ /**
120
+ * The token that injects {@link PB_BLOCKS} list.
121
+ */
122
+ export const PB_BLOCKS = new InjectionToken('PB Blocks', {
123
+ providedIn: 'any',
124
+ factory: () => PB_DEFAULT_BLOCKS
125
+ });
126
+ /**
127
+ * Default builder configuration, injected by {@link PB_CONFIG} token. See {@link IForRootConf} for more info.
128
+ */
129
+ export const PB_DEFAULT_CONFIG = Object.freeze({
130
+ xApiKey: 't7HdQfZjGp6R96fOV4P8v18ggf6LLTQZ1puUI2tz',
131
+ // apiPath: 'https://ngb-api.wlocalhost.org/v1',
132
+ useSaveButton: true,
133
+ usePreviewButton: true,
134
+ useDownloadButton: true,
135
+ templateListIfEmpty: true,
136
+ uploadImageName: 'image'
137
+ });
138
+ /**
139
+ * The token that injects [default builder configurations]{@link PB_DEFAULT_CONFIG}.
140
+ */
141
+ export const PB_CONFIG = new InjectionToken('PB Builder Configuration', {
142
+ providedIn: 'root',
143
+ factory: () => PB_DEFAULT_CONFIG
144
+ });
145
+ /**
146
+ * The default Storage used by builder. It can be either `localStorage` or `sessionStorage`.
147
+ */
148
+ export const PB_STORAGE_FACTORY = new InjectionToken('PB Storage factory token', {
149
+ providedIn: 'any',
150
+ factory: () => sessionStorage
151
+ });
152
+ /**
153
+ * The default storage to cache the templates list. It can be either `localStorage` or `sessionStorage`.
154
+ */
155
+ export const PB_TEMPLATES_TEMPORARY_STORAGE = new InjectionToken('PB Token that stores temporary templates cache', {
156
+ providedIn: 'any',
157
+ factory: () => sessionStorage
158
+ });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGItZW1haWwtYnVpbGRlci9zcmMvbGliL3Rva2Vucy90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQVcsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUg7O0dBRUc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFhO0lBQ2xELFFBQVE7SUFDUixXQUFXO0lBQ1gsS0FBSztJQUNMLFVBQVU7SUFDVixTQUFTO0lBQ1QsT0FBTztJQUNQLFFBQVE7SUFDUixZQUFZO0lBQ1osVUFBVTtJQUNWLFVBQVU7SUFDVixTQUFTO0lBQ1QsV0FBVztJQUNYLFVBQVU7SUFDVixRQUFRO0lBQ1IsTUFBTTtJQUNOLFFBQVE7Q0FDVCxDQUFDO0FBQ0Y7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQVcsb0JBQW9CLEVBQUU7SUFDbkYsVUFBVSxFQUFFLEtBQUs7SUFDakIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLDBCQUEwQjtDQUMxQyxDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBYTtJQUMvQywyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLHNCQUFzQjtJQUN0Qix3QkFBd0I7SUFDeEIsd0JBQXdCO0lBQ3hCLDJCQUEyQjtJQUMzQixjQUFjO0NBQ2YsQ0FBQztBQUNGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElB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QWM7Q0FDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDI0IFBvYnVjYS5cclxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSUZvclJvb3RDb25mLCBJU3RydWN0dXJlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU3RydWN0dXJlIH0gZnJvbSAnLi4vY2xhc3Nlcy9TdHJ1Y3R1cmUnO1xyXG5pbXBvcnQgeyBCdXR0b25CbG9jaywgRGl2aWRlckJsb2NrLCBJbWFnZUJsb2NrLCBTb2NpYWxCbG9jaywgU3BhY2VyQmxvY2ssIFRCbG9ja3MsIFRleHRCbG9jayB9IGZyb20gJy4uL2NsYXNzZXMvRWxlbWVudHMnO1xyXG5cclxuLyoqXHJcbiAqIFNvbWUgdG9wIGRvY3VtZW50YXRpb25cclxuICovXHJcblxyXG4vKipcclxuICogVGhlIGRlZmF1bHQgc29jaWFsIG5ldHdvcmtzIGxpc3QgcHJvdmlkZWQgYnkgYnVpbGRlci4gVGhpcyBsaXN0IGlzIGluamVjdGVkIGJ5IHtAbGluayBQQl9TT0NJQUxfTkVUV09SS1N9LlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFBCX0RFRkFVTFRfU09DSUFMX05FVFdPUktTOiBzdHJpbmdbXSA9IFtcclxuICAnZ2l0aHViJyxcclxuICAnaW5zdGFncmFtJyxcclxuICAnd2ViJyxcclxuICAnc25hcGNoYXQnLFxyXG4gICd5b3V0dWJlJyxcclxuICAndmltZW8nLFxyXG4gICdtZWRpdW0nLFxyXG4gICdzb3VuZGNsb3VkJyxcclxuICAnZHJpYmJibGUnLFxyXG4gICdmYWNlYm9vaycsXHJcbiAgJ3R3aXR0ZXInLFxyXG4gICdwaW50ZXJlc3QnLFxyXG4gICdsaW5rZWRpbicsXHJcbiAgJ3R1bWJscicsXHJcbiAgJ3hpbmcnLFxyXG4gICd0aWt0b2snXHJcbl07XHJcbi8qKlxyXG4gKiBUaGUgdG9rZW4gdGhhdCBpbmplY3RzIFtkZWZhdWx0IHNvY2lhbCBuZXR3b3JrcyBsaXN0XXtAbGluayBQQl9ERUZBVUxUX1NPQ0lBTF9ORVRXT1JLU30uXHJcbiAqIFVzZSBpdCB0byBhZGQgb3IgcmVtb3ZlIHNvY2lhbCBuZXR3b3JrcyB3aXRoaW4gbGlzdC5cclxuICpcclxuICogQGV4YW1wbGVcclxuICoge3Byb3ZpZGU6IFBCX1NPQ0lBTF9ORVRXT1JLUywgdXNlVmFsdWU6IFBCX0RFRkFVTFRfU09DSUFMX05FVFdPUktTLmZpbHRlcihuZXR3b3JrID0+ICFbJ2dpdGh1YicsICdpbnN0YWdyYW0nXS5pbmNsdWRlcyhuZXR3b3JrKX1cclxuICovXHJcbmV4cG9ydCBjb25zdCBQQl9TT0NJQUxfTkVUV09SS1MgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nW10+KCdQQiBTb2NpYWwgTmV0d29ya3MnLCB7XHJcbiAgcHJvdmlkZWRJbjogJ2FueScsXHJcbiAgZmFjdG9yeTogKCkgPT4gUEJfREVGQVVMVF9TT0NJQUxfTkVUV09SS1NcclxufSk7XHJcblxyXG4vKipcclxuICogVGhlIGRlZmF1bHQgW0dvb2dsZSBGb250c117QGxpbmsgaHR0cHM6Ly9mb250cy5nb29nbGUuY29tfSBsaXN0IHByb3ZpZGVkIGJ5IGJ1aWxkZXIuXHJcbiAqIFRoaXMgbGlzdCBpcyBpbmplY3RlZCBieSB7QGxpbmsgUEJfR09PR0xFX0ZPTlRTfSB0b2tlbi5cclxuICovXHJcbmV4cG9ydCBjb25zdCBQQl9ERUZBVUxUX0dPT0dMRV9GT05UUzogc3RyaW5nW10gPSBbXHJcbiAgJ09wZW4rU2FuczozMDAsNDAwLDUwMCw3MDAnLFxyXG4gICdEcm9pZCtTYW5zOjMwMCw0MDAsNTAwLDcwMCcsXHJcbiAgJ0xhdG86MzAwLDQwMCw1MDAsNzAwJyxcclxuICAnUm9ib3RvOjMwMCw0MDAsNzAwLDkwMCcsXHJcbiAgJ1VidW50dTozMDAsNDAwLDUwMCw3MDAnLFxyXG4gICdGaXJhK1NhbnM6MzAwLDQwMCw1MDAsNzAwJyxcclxuICAnTWFuc2FsdmE6NDAwJ1xyXG5dO1xyXG4vKipcclxuICogVGhlIHRva2VuIHRoYXQgaW5qZWN0cyBbZGVmYXVsdCBnb29nbGUgZm9udHNde0BsaW5rIFBCX0RFRkFVTFRfR09PR0xFX0ZPTlRTfSBsaXN0LlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFBCX0dPT0dMRV9GT05UUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmdbXT4oJ1BCIEdvb2dsZSBGb250cycsIHtcclxuICBwcm92aWRlZEluOiAnYW55JyxcclxuICBmYWN0b3J5OiAoKSA9PiBQQl9ERUZBVUxUX0dPT0dMRV9GT05UU1xyXG59KTtcclxuXHJcbi8qKlxyXG4gKiBUaGUgZGVmYXVsdCBGYWxsYmFjayBGb250cyBsaXN0IHByb3ZpZGVkIGJ5IGJ1aWxkZXIuIFRoaXMgbGlzdCBpcyBpbmplY3RlZCBieSB7QGxpbmsgUEJfRkFMTEJBQ0tfRk9OVFN9IHRva2VuLlxyXG4gKlxyXG4gKiBBIGZhbGxiYWNrIGZvbnQgaXMgYSBmb250IHRoYXQgdGFrZXMgZWZmZWN0IGluIGNhc2UgYSBbR29vZ2xlIEZvbnRde0BsaW5rIFBCX0RFRkFVTFRfR09PR0xFX0ZPTlRTfSBjYW4ndCBiZSBsb2FkZWQgYnkgc29tZSBlbWFpbFxyXG4gKiBwcm92aWRlcnMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUEJfREVGQVVMVF9GQUxMQkFDS19GT05UUzogc3RyaW5nW10gPSBbXHJcbiAgJ1BhbGF0aW5vIExpbm90eXBlLCBCb29rIEFudGlxdWEsIFBhbGF0aW5vLCBzZXJpZicsXHJcbiAgJ1RpbWVzIE5ldyBSb21hbiwgVGltZXMsIHNlcmlmJyxcclxuICAnQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZicsXHJcbiAgJ0FyaWFsIEJsYWNrLCBHYWRnZXQsIHNhbnMtc2VyaWYnLFxyXG4gICdDb21pYyBTYW5zIE1TLCBjdXJzaXZlLCBzYW5zLXNlcmlmJyxcclxuICAnSW1wYWN0LCBDaGFyY29hbCwgc2Fucy1zZXJpZicsXHJcbiAgJ0x1Y2lkYSBTYW5zIFVuaWNvZGUsIEx1Y2lkYSBHcmFuZGUsIHNhbnMtc2VyaWYnLFxyXG4gICdUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZicsXHJcbiAgJ1RyZWJ1Y2hldCBNUywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxcclxuICAnVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmJyxcclxuICAnQ291cmllciBOZXcsIENvdXJpZXIsIG1vbm9zcGFjZScsXHJcbiAgJ0x1Y2lkYSBDb25zb2xlLCBNb25hY28sIG1vbm9zcGFjZSdcclxuXTtcclxuLyoqXHJcbiAqIFRoZSB0b2tlbiB0aGF0IGluamVjdHMge0BsaW5rIFBCX0RFRkFVTFRfRkFMTEJBQ0tfRk9OVFN9IGxpc3QuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUEJfRkFMTEJBQ0tfRk9OVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nW10+KCdQQiBGYWxsYmFjayBGb250cycsIHtcclxuICBwcm92aWRlZEluOiAnYW55JyxcclxuICBmYWN0b3J5OiAoKSA9PiBQQl9ERUZBVUxUX0ZBTExCQUNLX0ZPTlRTXHJcbn0pO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBkZWZhdWx0IFtTdHJ1Y3R1cmVzXXtAbGluayBJU3RydWN0dXJlfSBsaXN0LiBUaGlzIGxpc3QgaXMgaW5qZWN0ZWQgYnkge0BsaW5rIFBCX1NUUlVDVFVSRVN9IHRva2VuLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFBCX0RFRkFVTFRfU1RSVUNUVVJFUzogSVN0cnVjdHVyZVtdID0gW1xyXG4gIG5ldyBTdHJ1Y3R1cmUoJ2NvbHNfMScpLFxyXG4gIG5ldyBTdHJ1Y3R1cmUoJ2NvbHNfMicpLFxyXG4gIG5ldyBTdHJ1Y3R1cmUoJ2NvbHNfMycpLFxyXG4gIG5ldyBTdHJ1Y3R1cmUoJ2NvbHNfNCcpLFxyXG4gIG5ldyBTdHJ1Y3R1cmUoJ2NvbHNfMTInKSxcclxuICBuZXcgU3RydWN0dXJlKCdjb2xzXzIxJylcclxuXTtcclxuLyoqXHJcbiAqIFRoZSB0b2tlbiB0aGF0IGluamVjdHMge0BsaW5rIFBCX0RFRkFVTFRfU1RSVUNUVVJFU30gbGlzdC5cclxuICovXHJcbmV4cG9ydCBjb25zdCBQQl9TVFJVQ1RVUkVTID0gbmV3IEluamVjdGlvblRva2VuPHR5cGVvZiBQQl9ERUZBVUxUX1NUUlVDVFVSRVM+KCdQQiBTdHJ1Y3R1cmVzJywge1xyXG4gIHByb3ZpZGVkSW46ICdhbnknLFxyXG4gIGZhY3Rvcnk6ICgpID0+IFBCX0RFRkFVTFRfU1RSVUNUVVJFU1xyXG59KTtcclxuXHJcbi8qKlxyXG4gKiBUaGUgZGVmYXVsdCBbQmxvY2tzXXtAbGluayBUQmxvY2tzfSBsaXN0LiBUaGlzIGxpc3QgaXMgaW5qZWN0ZWQgYnkge0BsaW5rIFBCX0JMT0NLU30gdG9rZW4uXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUEJfREVGQVVMVF9CTE9DS1M6IFRCbG9ja3NbXSA9IFtcclxuICBuZXcgVGV4dEJsb2NrKCksXHJcbiAgbmV3IEltYWdlQmxvY2soKSxcclxuICBuZXcgQnV0dG9uQmxvY2soKSxcclxuICBuZXcgRGl2aWRlckJsb2NrKCksXHJcbiAgbmV3IFNwYWNlckJsb2NrKCksXHJcbiAgbmV3IFNvY2lhbEJsb2NrKClcclxuXTtcclxuLyoqXHJcbiAqIFRoZSB0b2tlbiB0aGF0IGluamVjdHMge0BsaW5rIFBCX0JMT0NLU30gbGlzdC5cclxuICovXHJcbmV4cG9ydCBjb25zdCBQQl9CTE9DS1MgPSBuZXcgSW5qZWN0aW9uVG9rZW48dHlwZW9mIFBCX0RFRkFVTFRfQkxPQ0tTPignUEIgQmxvY2tzJywge1xyXG4gIHByb3ZpZGVkSW46ICdhbnknLFxyXG4gIGZhY3Rvcnk6ICgpID0+IFBCX0RFRkFVTFRfQkxPQ0tTXHJcbn0pO1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgYnVpbGRlciBjb25maWd1cmF0aW9uLCBpbmplY3RlZCBieSB7QGxpbmsgUEJfQ09ORklHfSB0b2tlbi4gU2VlIHtAbGluayBJRm9yUm9vdENvbmZ9IGZvciBtb3JlIGluZm8uXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUEJfREVGQVVMVF9DT05GSUc6IElGb3JSb290Q29uZiA9IE9iamVjdC5mcmVlemUoe1xyXG4gIHhBcGlLZXk6ICd0N0hkUWZaakdwNlI5NmZPVjRQOHYxOGdnZjZMTFRRWjFwdVVJMnR6JyxcclxuICAvLyBhcGlQYXRoOiAnaHR0cHM6Ly9uZ2ItYXBpLndsb2NhbGhvc3Qub3JnL3YxJyxcclxuICB1c2VTYXZlQnV0dG9uOiB0cnVlLFxyXG4gIHVzZVByZXZpZXdCdXR0b246IHRydWUsXHJcbiAgdXNlRG93bmxvYWRCdXR0b246IHRydWUsXHJcbiAgdGVtcGxhdGVMaXN0SWZFbXB0eTogdHJ1ZSxcclxuICB1cGxvYWRJbWFnZU5hbWU6ICdpbWFnZSdcclxufSk7XHJcbi8qKlxyXG4gKiBUaGUgdG9rZW4gdGhhdCBpbmplY3RzIFtkZWZhdWx0IGJ1aWxkZXIgY29uZmlndXJhdGlvbnNde0BsaW5rIFBCX0RFRkFVTFRfQ09ORklHfS5cclxuICovXHJcbmV4cG9ydCBjb25zdCBQQl9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFydGlhbDxJRm9yUm9vdENvbmY+PignUEIgQnVpbGRlciBDb25maWd1cmF0aW9uJywge1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxuICBmYWN0b3J5OiAoKSA9PiBQQl9ERUZBVUxUX0NPTkZJR1xyXG59KTtcclxuXHJcbi8qKlxyXG4gKiBUaGUgZGVmYXVsdCBTdG9yYWdlIHVzZWQgYnkgYnVpbGRlci4gSXQgY2FuIGJlIGVpdGhlciBgbG9jYWxTdG9yYWdlYCBvciBgc2Vzc2lvblN0b3JhZ2VgLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFBCX1NUT1JBR0VfRkFDVE9SWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yYWdlPignUEIgU3RvcmFnZSBmYWN0b3J5IHRva2VuJywge1xyXG4gIHByb3ZpZGVkSW46ICdhbnknLFxyXG4gIGZhY3Rvcnk6ICgpID0+IHNlc3Npb25TdG9yYWdlXHJcbn0pO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBkZWZhdWx0IHN0b3JhZ2UgdG8gY2FjaGUgdGhlIHRlbXBsYXRlcyBsaXN0LiBJdCBjYW4gYmUgZWl0aGVyIGBsb2NhbFN0b3JhZ2VgIG9yIGBzZXNzaW9uU3RvcmFnZWAuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgUEJfVEVNUExBVEVTX1RFTVBPUkFSWV9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPFN0b3JhZ2U+KCdQQiBUb2tlbiB0aGF0IHN0b3JlcyB0ZW1wb3JhcnkgdGVtcGxhdGVzIGNhY2hlJywge1xyXG4gIHByb3ZpZGVkSW46ICdhbnknLFxyXG4gIGZhY3Rvcnk6ICgpID0+IHNlc3Npb25TdG9yYWdlXHJcbn0pO1xyXG4iXX0=