@useinsider/guido 1.0.3-beta.8ba8dbc → 1.0.3-beta.8df77fb

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 (208) hide show
  1. package/README.md +143 -3
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +79 -73
  4. package/dist/components/organisms/LoadingWrapper.vue.js +1 -1
  5. package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
  6. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -15
  7. package/dist/components/organisms/header/RightSlot.vue.js +11 -11
  8. package/dist/components/organisms/header/RightSlot.vue2.js +21 -20
  9. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +21 -0
  10. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +99 -0
  11. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +20 -18
  12. package/dist/composables/useActionsApi.js +1 -1
  13. package/dist/composables/useBlocksConfig.js +48 -0
  14. package/dist/composables/useGuidoActions.js +19 -9
  15. package/dist/composables/useHtmlCompiler.js +15 -13
  16. package/dist/composables/useHtmlValidator.js +36 -35
  17. package/dist/composables/useStripo.js +55 -60
  18. package/dist/config/compiler/itemsCompilerRules.js +14 -0
  19. package/dist/config/compiler/unsubscribeCompilerRules.js +33 -28
  20. package/dist/enums/defaults.js +16 -9
  21. package/dist/enums/extensions/recommendationBlock.js +2 -2
  22. package/dist/enums/onboarding.js +7 -3
  23. package/dist/enums/unsubscribe.js +27 -25
  24. package/dist/extensions/Blocks/Checkbox/block.js +5 -2
  25. package/dist/extensions/Blocks/Checkbox/control.js +15 -14
  26. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  27. package/dist/extensions/Blocks/Checkbox/template.js +14 -9
  28. package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
  29. package/dist/extensions/Blocks/Items/block.js +67 -0
  30. package/dist/extensions/Blocks/Items/controls/button/link.js +68 -0
  31. package/dist/extensions/Blocks/Items/controls/cardComposition.js +193 -0
  32. package/dist/extensions/Blocks/Items/controls/image/link.js +68 -0
  33. package/dist/extensions/Blocks/Items/controls/index.js +217 -0
  34. package/dist/extensions/Blocks/Items/controls/name/trimming.js +70 -0
  35. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +107 -0
  36. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +123 -0
  37. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +76 -0
  38. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +61 -0
  39. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +92 -0
  40. package/dist/extensions/Blocks/Items/controls/settingsControl.js +316 -0
  41. package/dist/extensions/Blocks/Items/enums/controlEnums.js +5 -0
  42. package/dist/extensions/Blocks/Items/enums/productEnums.js +274 -0
  43. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +77 -0
  44. package/dist/extensions/Blocks/Items/extension.js +20 -0
  45. package/dist/extensions/Blocks/Items/iconsRegistry.js +32 -0
  46. package/dist/extensions/Blocks/Items/items.css.js +23 -0
  47. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +62 -0
  48. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +72 -0
  49. package/dist/extensions/Blocks/Items/settingsPanel.js +132 -0
  50. package/dist/extensions/Blocks/Items/store/items-block.js +75 -0
  51. package/dist/extensions/Blocks/Items/template.js +195 -0
  52. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +17 -0
  53. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +28 -0
  54. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +76 -0
  55. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +46 -0
  56. package/dist/extensions/Blocks/RadioButton/block.js +5 -2
  57. package/dist/extensions/Blocks/RadioButton/control.js +18 -17
  58. package/dist/extensions/Blocks/RadioButton/template.js +18 -9
  59. package/dist/extensions/Blocks/Recommendation/extension.js +4 -4
  60. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +43 -43
  61. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
  62. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +4 -4
  63. package/dist/extensions/Blocks/Unsubscribe/block.js +45 -41
  64. package/dist/extensions/Blocks/common-control.js +174 -110
  65. package/dist/extensions/Blocks/controlFactories.js +223 -0
  66. package/dist/extensions/DynamicContent/dynamic-content-modal.js +25 -19
  67. package/dist/extensions/DynamicContent/dynamic-content.js +128 -33
  68. package/dist/guido.css +1 -1
  69. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +213 -168
  70. package/dist/node_modules/lodash-es/_DataView.js +6 -0
  71. package/dist/node_modules/lodash-es/_Promise.js +6 -0
  72. package/dist/node_modules/lodash-es/_Set.js +6 -0
  73. package/dist/node_modules/lodash-es/_SetCache.js +13 -0
  74. package/dist/node_modules/lodash-es/_WeakMap.js +6 -0
  75. package/dist/node_modules/lodash-es/_arrayFilter.js +10 -0
  76. package/dist/node_modules/lodash-es/_arrayLikeKeys.js +13 -12
  77. package/dist/node_modules/lodash-es/_arrayMap.js +8 -0
  78. package/dist/node_modules/lodash-es/_arrayPush.js +8 -0
  79. package/dist/node_modules/lodash-es/_arraySome.js +9 -0
  80. package/dist/node_modules/lodash-es/_baseEach.js +6 -0
  81. package/dist/node_modules/lodash-es/_baseFlatten.js +13 -0
  82. package/dist/node_modules/lodash-es/_baseForOwn.js +8 -0
  83. package/dist/node_modules/lodash-es/_baseGet.js +11 -0
  84. package/dist/node_modules/lodash-es/_baseGetAllKeys.js +9 -0
  85. package/dist/node_modules/lodash-es/_baseHasIn.js +6 -0
  86. package/dist/node_modules/lodash-es/_baseIsEqual.js +8 -0
  87. package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +32 -0
  88. package/dist/node_modules/lodash-es/_baseIsMatch.js +29 -0
  89. package/dist/node_modules/lodash-es/_baseIteratee.js +11 -0
  90. package/dist/node_modules/lodash-es/_baseKeys.js +14 -0
  91. package/dist/node_modules/lodash-es/_baseMap.js +11 -0
  92. package/dist/node_modules/lodash-es/_baseMatches.js +12 -0
  93. package/dist/node_modules/lodash-es/_baseMatchesProperty.js +17 -0
  94. package/dist/node_modules/lodash-es/_baseProperty.js +8 -0
  95. package/dist/node_modules/lodash-es/_basePropertyDeep.js +9 -0
  96. package/dist/node_modules/lodash-es/_baseRange.js +9 -0
  97. package/dist/node_modules/lodash-es/_baseToString.js +18 -0
  98. package/dist/node_modules/lodash-es/_baseTrim.js +8 -0
  99. package/dist/node_modules/lodash-es/_cacheHas.js +6 -0
  100. package/dist/node_modules/lodash-es/_castPath.js +10 -0
  101. package/dist/node_modules/lodash-es/_createBaseEach.js +15 -0
  102. package/dist/node_modules/lodash-es/_createRange.js +11 -0
  103. package/dist/node_modules/lodash-es/_equalArrays.js +40 -0
  104. package/dist/node_modules/lodash-es/_equalByTag.js +45 -0
  105. package/dist/node_modules/lodash-es/_equalObjects.js +36 -0
  106. package/dist/node_modules/lodash-es/_getAllKeys.js +9 -0
  107. package/dist/node_modules/lodash-es/_getMatchData.js +12 -0
  108. package/dist/node_modules/lodash-es/_getSymbols.js +10 -0
  109. package/dist/node_modules/lodash-es/_getTag.js +28 -0
  110. package/dist/node_modules/lodash-es/_hasPath.js +19 -0
  111. package/dist/node_modules/lodash-es/_isFlattenable.js +10 -0
  112. package/dist/node_modules/lodash-es/_isKey.js +12 -0
  113. package/dist/node_modules/lodash-es/_isStrictComparable.js +7 -0
  114. package/dist/node_modules/lodash-es/_mapToArray.js +9 -0
  115. package/dist/node_modules/lodash-es/_matchesStrictComparable.js +8 -0
  116. package/dist/node_modules/lodash-es/_memoizeCapped.js +11 -0
  117. package/dist/node_modules/lodash-es/_nativeKeys.js +5 -0
  118. package/dist/node_modules/lodash-es/_setCacheAdd.js +7 -0
  119. package/dist/node_modules/lodash-es/_setCacheHas.js +6 -0
  120. package/dist/node_modules/lodash-es/_setToArray.js +9 -0
  121. package/dist/node_modules/lodash-es/_stringToPath.js +10 -0
  122. package/dist/node_modules/lodash-es/_toKey.js +10 -0
  123. package/dist/node_modules/lodash-es/_trimmedEndIndex.js +9 -0
  124. package/dist/node_modules/lodash-es/flatMap.js +8 -0
  125. package/dist/node_modules/lodash-es/get.js +8 -0
  126. package/dist/node_modules/lodash-es/hasIn.js +8 -0
  127. package/dist/node_modules/lodash-es/isSymbol.js +9 -0
  128. package/dist/node_modules/lodash-es/keys.js +9 -0
  129. package/dist/node_modules/lodash-es/keysIn.js +3 -3
  130. package/dist/node_modules/lodash-es/map.js +11 -0
  131. package/dist/node_modules/lodash-es/property.js +10 -0
  132. package/dist/node_modules/lodash-es/range.js +5 -0
  133. package/dist/node_modules/lodash-es/stubArray.js +6 -0
  134. package/dist/node_modules/lodash-es/toFinite.js +14 -0
  135. package/dist/node_modules/lodash-es/toNumber.js +22 -0
  136. package/dist/node_modules/lodash-es/toString.js +7 -0
  137. package/dist/package.json.js +1 -1
  138. package/dist/services/recommendationApi.js +13 -19
  139. package/dist/src/@types/generic.d.ts +36 -6
  140. package/dist/src/components/Guido.vue.d.ts +3 -2
  141. package/dist/src/components/organisms/onboarding/ItemsOnboarding.vue.d.ts +2 -0
  142. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  143. package/dist/src/composables/useBlocksConfig.d.ts +11 -0
  144. package/dist/src/composables/useGuidoActions.d.ts +9 -0
  145. package/dist/src/config/compiler/itemsCompilerRules.d.ts +2 -0
  146. package/dist/src/enums/onboarding.d.ts +4 -0
  147. package/dist/src/extensions/Blocks/Checkbox/block.d.ts +1 -0
  148. package/dist/src/extensions/Blocks/Checkbox/template.d.ts +1 -1
  149. package/dist/src/extensions/Blocks/Items/block.d.ts +27 -0
  150. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +14 -0
  151. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +33 -0
  152. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +14 -0
  153. package/dist/src/extensions/Blocks/Items/controls/index.d.ts +501 -0
  154. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +14 -0
  155. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +19 -0
  156. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +21 -0
  157. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +14 -0
  158. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +13 -0
  159. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +15 -0
  160. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +48 -0
  161. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +62 -0
  162. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +163 -0
  163. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +50 -0
  164. package/dist/src/extensions/Blocks/Items/extension.d.ts +2 -0
  165. package/dist/src/extensions/Blocks/Items/iconsRegistry.d.ts +4 -0
  166. package/dist/src/extensions/Blocks/Items/settingsPanel.d.ts +4 -0
  167. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +43 -0
  168. package/dist/src/extensions/Blocks/Items/template.d.ts +24 -0
  169. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +23 -0
  170. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +32 -0
  171. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +50 -0
  172. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +8 -0
  173. package/dist/src/extensions/Blocks/RadioButton/block.d.ts +1 -0
  174. package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
  175. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
  176. package/dist/src/extensions/Blocks/Unsubscribe/block.d.ts +3 -4
  177. package/dist/src/extensions/Blocks/common-control.d.ts +44 -7
  178. package/dist/src/extensions/Blocks/controlFactories.d.ts +312 -0
  179. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +9 -2
  180. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +52 -2
  181. package/dist/src/stores/config.d.ts +9 -2
  182. package/dist/src/stores/dynamic-content.d.ts +3 -3
  183. package/dist/src/stores/editor.d.ts +1 -1
  184. package/dist/src/stores/onboarding.d.ts +335 -1
  185. package/dist/src/stores/preview.d.ts +1 -1
  186. package/dist/src/stores/recommendation.d.ts +1 -1
  187. package/dist/src/stores/save-as-template.d.ts +1 -1
  188. package/dist/src/stores/toaster.d.ts +1 -1
  189. package/dist/src/stores/unsubscribe.d.ts +1 -1
  190. package/dist/src/stores/version-history.d.ts +1 -1
  191. package/dist/src/utils/environmentUtil.d.ts +5 -0
  192. package/dist/src/utils/genericUtil.d.ts +1 -0
  193. package/dist/src/utils/pairProductVariables.d.ts +7 -0
  194. package/dist/static/styles/customEditorStyle.css.js +1 -1
  195. package/dist/stores/config.js +5 -5
  196. package/dist/stores/dynamic-content.js +2 -2
  197. package/dist/stores/editor.js +1 -1
  198. package/dist/stores/onboarding.js +44 -36
  199. package/dist/stores/preview.js +1 -1
  200. package/dist/stores/recommendation.js +3 -3
  201. package/dist/stores/save-as-template.js +2 -2
  202. package/dist/stores/toaster.js +1 -1
  203. package/dist/stores/unsubscribe.js +1 -1
  204. package/dist/stores/version-history.js +4 -4
  205. package/dist/utils/environmentUtil.js +4 -0
  206. package/dist/utils/genericUtil.js +18 -8
  207. package/dist/utils/pairProductVariables.js +136 -0
  208. package/package.json +7 -7
package/README.md CHANGED
@@ -82,10 +82,12 @@ export default {
82
82
  translationsPath: 'window.trans.en',
83
83
  htmlCompilerRules: [],
84
84
  ignoreDefaultHtmlCompilerRules: false,
85
+ backButtonLabel?: "Back to Design",
85
86
  features: {
86
87
  dynamicContent: true,
87
88
  saveAsTemplate: true,
88
- versionHistory: true
89
+ versionHistory: true,
90
+ testMessage: true
89
91
  }
90
92
  },
91
93
  dynamicContentModalVisible: false
@@ -165,6 +167,7 @@ export default {
165
167
  | `on-change` | void | It Fires once for managing leave modal etc. |
166
168
  | `ready` | void | Fired when the editor is ready and template is loaded |
167
169
  | `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
170
+ | `test-email:click` | - | Fired when user clicks the test email button in the header |
168
171
 
169
172
  ### Guido Exposed Methods
170
173
  ```typescript
@@ -194,6 +197,12 @@ interface GuidoConfig {
194
197
  dynamicContent: boolean;
195
198
  saveAsTemplate: boolean;
196
199
  versionHistory: boolean;
200
+ testMessage: boolean;
201
+ displayConditions: boolean;
202
+ };
203
+ blocks?: {
204
+ excludeDefaults?: GuidoBlockType[];
205
+ includeCustoms?: GuidoCustomBlockType[];
197
206
  };
198
207
  }
199
208
  ```
@@ -208,6 +217,10 @@ interface GuidoConfig {
208
217
  | `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
209
218
  | `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
210
219
  | `features.versionHistory` | `boolean` | `true` | Enable version history feature |
220
+ | `features.displayConditions` | `boolean` | `true` | Enable display conditions |
221
+ | `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
222
+ | `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
223
+ | `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
211
224
 
212
225
  ```typescript
213
226
  interface DynamicContent {
@@ -224,6 +237,128 @@ interface DynamicContent {
224
237
  | `text` | `string` | '' | Visible value of the dynamic content |
225
238
  | `fallback?` | `string` | '' | Fallback value of the dynamic content. Optional |
226
239
 
240
+ ## 🧱 Blocks Configuration
241
+
242
+ Guido allows you to customize which blocks are available in the editor. You can exclude default Stripo blocks and selectively include custom blocks to create tailored editing experiences for different product types.
243
+
244
+ ### Block Types
245
+
246
+ #### Default Blocks (GuidoBlockType)
247
+
248
+ These are the standard Stripo email editor blocks that can be excluded:
249
+
250
+ ```typescript
251
+ type GuidoBlockType =
252
+ | 'amp-accordion' // AMP accordion component
253
+ | 'amp-carousel' // AMP image carousel
254
+ | 'amp-form-controls' // AMP form elements
255
+ | 'banner-block' // Banner/hero section
256
+ | 'button-block' // Call-to-action buttons
257
+ | 'html-block' // Custom HTML
258
+ | 'image-block' // Image elements
259
+ | 'menu-block' // Navigation menu
260
+ | 'social-block' // Social media links
261
+ | 'spacer-block' // Vertical spacing
262
+ | 'text-block' // Text content
263
+ | 'timer-block' // Countdown timer
264
+ | 'video-block' // Video embeds
265
+ ```
266
+
267
+ #### Custom Blocks (GuidoCustomBlockType)
268
+
269
+ These are custom blocks that can be selectively included:
270
+
271
+ ```typescript
272
+ type GuidoCustomBlockType =
273
+ | 'dynamic-content' // Dynamic content merge tags
274
+ | 'checkbox-block' // Checkbox form input
275
+ | 'radio-button-block' // Radio button form input
276
+ | 'recommendation-block' // Product recommendations
277
+ | 'unsubscribe-block' // Unsubscribe link
278
+ | 'coupon-block' // Coupon/promo code
279
+ | 'items-block' // Cart items display
280
+ ```
281
+
282
+ ### Configuration Examples
283
+
284
+ #### Example 1: Exclude Specific Default Blocks
285
+
286
+ Disable button, image, and video blocks while keeping all custom blocks:
287
+
288
+ ```typescript
289
+ const guidoConfig = {
290
+ translationsPath: 'window.trans.en',
291
+ features: {
292
+ dynamicContent: true,
293
+ saveAsTemplate: true,
294
+ versionHistory: true,
295
+ testMessage: true
296
+ },
297
+ blocks: {
298
+ excludeDefaults: ['button-block', 'image-block', 'video-block']
299
+ }
300
+ };
301
+ ```
302
+
303
+ **Result:**
304
+ - Button, Image, Video blocks disabled
305
+ - All other default blocks enabled
306
+ - All custom blocks are disabled.
307
+
308
+ #### Example 2: Include Only Specific Custom Blocks
309
+
310
+ Enable only coupon and recommendation blocks:
311
+
312
+ ```typescript
313
+ const guidoConfig = {
314
+ translationsPath: 'window.trans.en',
315
+ features: {
316
+ dynamicContent: true,
317
+ saveAsTemplate: true,
318
+ versionHistory: true,
319
+ testMessage: true
320
+ },
321
+ blocks: {
322
+ includeCustoms: ['coupon-block', 'recommendation-block']
323
+ }
324
+ };
325
+ ```
326
+
327
+ **Result:**
328
+ - All default blocks enabled
329
+ - Only Coupon and Recommendation extensions enabled.
330
+ - Other custom blocks are disabled
331
+
332
+ ### Default Behavior
333
+
334
+ When `blocks` is not provided or is `undefined`:
335
+
336
+ ```typescript
337
+ const guidoConfig = {
338
+ translationsPath: 'window.trans.en',
339
+ features: {
340
+ dynamicContent: true,
341
+ saveAsTemplate: true,
342
+ versionHistory: true,
343
+ testMessage: true
344
+ },
345
+ // No blocks config
346
+ };
347
+ ```
348
+
349
+ **Result:**
350
+ - All 13 default Stripo blocks enabled
351
+ - All custom blocks are disabled.
352
+
353
+ ### Block Configuration Interface
354
+
355
+ ```typescript
356
+ interface BlocksConfig {
357
+ excludeDefaults?: GuidoBlockType[];
358
+ includeCustoms?: GuidoCustomBlockType[];
359
+ }
360
+ ```
361
+
227
362
  ### TypeScript Types
228
363
 
229
364
  The library exports the following TypeScript types:
@@ -318,7 +453,8 @@ const guidoConfig = {
318
453
  features: {
319
454
  dynamicContent: true,
320
455
  saveAsTemplate: true,
321
- versionHistory: false // Disable version history
456
+ versionHistory: false, // Disable version history
457
+ testMessage: true
322
458
  },
323
459
  htmlCompilerRules: [
324
460
  {
@@ -351,7 +487,8 @@ const guidoConfig = {
351
487
  features: {
352
488
  dynamicContent: true,
353
489
  saveAsTemplate: true,
354
- versionHistory: true
490
+ versionHistory: true,
491
+ testMessage: true
355
492
  },
356
493
  ignoreDefaultHtmlCompilerRules: true, // Skip all default rules
357
494
  htmlCompilerRules: [
@@ -463,6 +600,9 @@ Create a `.env` file with the following variables: (You can get env variables fr
463
600
  VITE_STRIPO_PLUGIN_ID=your_plugin_id
464
601
  VITE_STRIPO_SECRET_KEY=your_secret_key
465
602
  VITE_STRIPO_ROLE=your_role
603
+
604
+ # Playwright Test Configuration (Optional - for local debugging only)
605
+ HEADED=false # Set to 'true' to run tests with visible browser
466
606
  ```
467
607
 
468
608
  ### Project Structure
@@ -12,7 +12,7 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "3c910a93"
15
+ "98181b5a"
16
16
  );
17
17
  const v = s.exports;
18
18
  export {
@@ -1,23 +1,23 @@
1
- import { defineComponent as R, defineAsyncComponent as I, ref as x, computed as U, watch as M, onMounted as z, onUnmounted as B } from "vue";
2
- import { provideGuidoActions as K } from "../composables/useGuidoActions.js";
3
- import { usePartner as O } from "../composables/usePartner.js";
4
- import { useStripo as j } from "../composables/useStripo.js";
5
- import { migrate as W } from "../config/migrator/index.js";
6
- import { DefaultUsername as q, DefaultMessageType as J, DefaultGuidoConfig as Q } from "../enums/defaults.js";
7
- import V from "./organisms/base/Toaster.vue.js";
8
- import X from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
9
- import Y from "./organisms/header/HeaderWrapper.vue.js";
10
- import Z from "./organisms/LoadingWrapper.vue.js";
11
- import $ from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
- import ee from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
- import { useStripoApi as oe } from "../services/stripoApi.js";
14
- import { useConfigStore as te } from "../stores/config.js";
15
- import { useDynamicContentStore as ne } from "../stores/dynamic-content.js";
16
- import { useEditorStore as re } from "../stores/editor.js";
17
- import { usePreviewStore as ae } from "../stores/preview.js";
18
- import { useUnsubscribeStore as ie } from "../stores/unsubscribe.js";
19
- import se from "../node_modules/lodash-es/merge.js";
20
- const Ge = /* @__PURE__ */ R({
1
+ import { defineComponent as O, defineAsyncComponent as I, ref as z, computed as U, watch as B, onMounted as K, onUnmounted as j } from "vue";
2
+ import { provideGuidoActions as q } from "../composables/useGuidoActions.js";
3
+ import { usePartner as J } from "../composables/usePartner.js";
4
+ import { useStripo as Q } from "../composables/useStripo.js";
5
+ import { migrate as L } from "../config/migrator/index.js";
6
+ import { DefaultUsername as V, DefaultMessageType as X, DefaultGuidoConfig as Y } from "../enums/defaults.js";
7
+ import Z from "./organisms/base/Toaster.vue.js";
8
+ import $ from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
9
+ import ee from "./organisms/header/HeaderWrapper.vue.js";
10
+ import oe from "./organisms/LoadingWrapper.vue.js";
11
+ import te from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
+ import ne from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
+ import { useStripoApi as re } from "../services/stripoApi.js";
14
+ import { useConfigStore as ie } from "../stores/config.js";
15
+ import { useDynamicContentStore as se } from "../stores/dynamic-content.js";
16
+ import { useEditorStore as ae } from "../stores/editor.js";
17
+ import { usePreviewStore as ce } from "../stores/preview.js";
18
+ import { useUnsubscribeStore as me } from "../stores/unsubscribe.js";
19
+ import de from "../node_modules/lodash-es/merge.js";
20
+ const Ue = /* @__PURE__ */ O({
21
21
  __name: "Guido",
22
22
  props: {
23
23
  templateId: null,
@@ -31,98 +31,104 @@ const Ge = /* @__PURE__ */ R({
31
31
  guidoConfig: null,
32
32
  templateConfig: null
33
33
  },
34
- emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
35
- setup(_, { expose: L, emit: t }) {
36
- const u = _, k = I(
34
+ emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
35
+ setup(W, { expose: _, emit: o }) {
36
+ const u = W, A = I(
37
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
- ), A = I(
38
+ ), N = I(
39
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
- ), l = x(), a = ne(), p = ie(), g = te(), i = re(), N = ae(), n = U(() => i.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
40
+ ), p = z(), i = se(), g = me(), f = ie(), s = ae(), F = ce(), n = U(() => s.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
41
41
  var e;
42
- return (e = l.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = p.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
- templateId: s,
45
- userId: b,
46
- guidoConfig: C,
47
- templateConfig: o,
44
+ templateId: a,
45
+ userId: C,
46
+ guidoConfig: h,
47
+ templateConfig: t,
48
48
  html: r = "",
49
- css: h = "",
50
- partnerName: c = f(),
51
- productType: d = y(),
52
- messageType: S = J,
53
- username: w = q
54
- } = u, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
- i.templateId = s, window.GuidoConfig = se(Q, C), window.GuidoConfig.partner = {
49
+ css: S = "",
50
+ partnerName: c = y(),
51
+ productType: m = v(),
52
+ messageType: w = X,
53
+ username: D = V
54
+ } = u, d = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
55
+ s.templateId = a, window.GuidoConfig = de(Y, h), window.GuidoConfig.partner = {
56
56
  partnerName: c,
57
- productType: d,
58
- messageType: S
59
- }, g.templateConfig = o;
60
- const { initPlugin: D } = j({
61
- emailId: s,
62
- userId: b,
63
- username: w,
57
+ productType: m,
58
+ messageType: w
59
+ }, f.templateConfig = t;
60
+ const { initPlugin: E } = Q({
61
+ emailId: a,
62
+ userId: C,
63
+ username: D,
64
64
  partnerName: c,
65
- productType: d,
66
- preselectedDynamicContentList: m,
65
+ productType: m,
66
+ preselectedDynamicContentList: d,
67
67
  onReady: () => {
68
- console.debug("guido:ready"), t("ready");
68
+ console.debug("guido:ready"), o("ready");
69
69
  }
70
- }), { getDefaultTemplate: T } = oe(), H = U(() => {
70
+ }), { getDefaultTemplate: T } = re(), R = U(() => {
71
71
  var e;
72
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
73
73
  });
74
- K({
74
+ q({
75
75
  onBack: () => {
76
- console.debug("guido:back"), t("back");
76
+ console.debug("guido:back"), o("back");
77
77
  },
78
78
  onSaveStart: () => {
79
- console.debug("guido:save:start"), t("save:start");
79
+ console.debug("guido:save:start"), o("save:start");
80
80
  },
81
81
  onSaveComplete: (e) => {
82
- console.debug("guido:save:complete", e), t("save:complete", e);
82
+ console.debug("guido:save:complete", e), o("save:complete", e);
83
+ },
84
+ onTestEmailClick: () => {
85
+ console.debug("guido:test-email:click"), o("test-email:click");
83
86
  }
84
87
  });
85
- const E = (e) => {
86
- console.debug("dynamic-content:close", e), a.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
87
- }, P = () => {
88
+ const P = (e) => {
89
+ console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
90
+ }, k = () => {
88
91
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
89
92
  };
90
- return M(() => n.value, () => {
91
- t("on-change", n.value);
92
- }), z(async () => {
93
+ B(() => n.value, () => {
94
+ o("on-change", n.value);
95
+ });
96
+ const l = (e) => {
97
+ const G = e, { attribute: x, position: M } = G.detail;
98
+ console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
99
+ };
100
+ return K(async () => {
93
101
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
94
102
  try {
95
- p.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
103
+ g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
96
104
  let e = {
97
- html: r && await W(r),
98
- css: h,
105
+ html: r && await L(r),
106
+ css: S,
99
107
  forceRecreate: !0
100
108
  // TODO: It should be false for old templates. We will communicate with Stripo
101
109
  };
102
- e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = m;
110
+ e.html || (e = await T(), e.html = await L(e.html)), await E(e), i.selectedDynamicContentList = d;
103
111
  } catch (e) {
104
112
  console.error("Failed to initialize Stripo editor:", e);
105
113
  }
106
- document.addEventListener("dynamic-content:open", (e) => {
107
- const G = e;
108
- console.debug("dynamic-content:open", G.detail), t("dynamic-content:open", G.detail);
109
- });
110
- }), B(() => {
114
+ document.addEventListener("dynamic-content:open", l);
115
+ }), j(() => {
116
+ document.removeEventListener("dynamic-content:open", l);
111
117
  try {
112
118
  window.UIEditor.removeEditor();
113
119
  } catch {
114
120
  console.debug("Failed to remove Stripo editor: No editor found");
115
121
  }
116
- }), L({
122
+ }), _({
117
123
  dynamicContent: {
118
- insert: E,
119
- close: P
124
+ insert: P,
125
+ close: k
120
126
  },
121
127
  hasChanges: n,
122
- saveSilent: v
123
- }), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: l, dynamicContentStore: a, unsubscribeStore: p, props: u, configStore: g, editorStore: i, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: s, userId: b, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: c, productType: d, messageType: S, username: w, preselectedDynamicContentList: m, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
128
+ saveSilent: b
129
+ }), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: u, configStore: f, editorStore: s, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: a, userId: C, guidoConfig: h, templateConfig: t, html: r, css: S, partnerName: c, productType: m, messageType: w, username: D, preselectedDynamicContentList: d, emit: o, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: k, handleDynamicContentOpen: l, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
124
130
  }
125
131
  });
126
132
  export {
127
- Ge as default
133
+ Ue as default
128
134
  };
@@ -10,7 +10,7 @@ var s = function() {
10
10
  n,
11
11
  !1,
12
12
  null,
13
- "dced5582"
13
+ "07c4b2d8"
14
14
  );
15
15
  const l = _.exports;
16
16
  export {
@@ -10,7 +10,7 @@ var n = function() {
10
10
  a,
11
11
  !1,
12
12
  null,
13
- "2c168944"
13
+ "0502bceb"
14
14
  );
15
15
  const p = i.exports;
16
16
  export {
@@ -1,28 +1,29 @@
1
- import { defineComponent as s, computed as c } from "vue";
2
- import { useBack as m } from "../../../composables/useGuidoActions.js";
3
- import { usePreviewMode as a } from "../../../composables/usePreviewMode.js";
1
+ import { defineComponent as c, computed as a } from "vue";
2
+ import { useConfig as m } from "../../../composables/useConfig.js";
3
+ import { useBack as u } from "../../../composables/useGuidoActions.js";
4
+ import { usePreviewMode as f } from "../../../composables/usePreviewMode.js";
4
5
  import { useTranslations as p } from "../../../composables/useTranslations.js";
5
- import { useVersionHistoryApi as u } from "../../../composables/useVersionHistoryApi.js";
6
- import { useEditorStore as d } from "../../../stores/editor.js";
7
- import { InButtonV2 as f } from "@useinsider/design-system-vue";
8
- import l from "./version-history/RestoreButton.vue.js";
9
- const O = /* @__PURE__ */ s({
6
+ import { useVersionHistoryApi as d } from "../../../composables/useVersionHistoryApi.js";
7
+ import { useEditorStore as l } from "../../../stores/editor.js";
8
+ import { InButtonV2 as k } from "@useinsider/design-system-vue";
9
+ import B from "./version-history/RestoreButton.vue.js";
10
+ const P = /* @__PURE__ */ c({
10
11
  __name: "LeftSlot",
11
- setup(k) {
12
- const o = d(), r = m(), { closeVersionHistory: t } = u(), { closePreviewMode: i } = a(), e = p(), n = c(() => o.isVersionHistoryOpen || o.isPreviewModeOpen ? e("email-editor.back-to-editor") : e("email-editor.back-to-design"));
13
- return { __sfc: !0, editorStore: o, handleBack: r, closeVersionHistory: t, closePreviewMode: i, trans: e, backButtonLabel: n, handleBackClick: () => {
12
+ setup(b) {
13
+ const o = l(), r = u(), { closeVersionHistory: i } = d(), { closePreviewMode: n } = f(), e = p(), { config: t } = m(), s = a(() => o.isVersionHistoryOpen || o.isPreviewModeOpen ? e("email-editor.back-to-editor") : t.backButtonLabel ? t.backButtonLabel : e("email-editor.back-to-design"));
14
+ return { __sfc: !0, editorStore: o, handleBack: r, closeVersionHistory: i, closePreviewMode: n, trans: e, config: t, backButtonLabel: s, handleBackClick: () => {
14
15
  if (o.isVersionHistoryOpen) {
15
- t();
16
+ i();
16
17
  return;
17
18
  }
18
19
  if (o.isPreviewModeOpen) {
19
- i();
20
+ n();
20
21
  return;
21
22
  }
22
23
  r();
23
- }, InButtonV2: f, RestoreButton: l };
24
+ }, InButtonV2: k, RestoreButton: B };
24
25
  }
25
26
  });
26
27
  export {
27
- O as default
28
+ P as default
28
29
  };
@@ -1,20 +1,20 @@
1
- import n from "./RightSlot.vue2.js";
2
- import a from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var l = function() {
4
- var s, i;
5
- var o = this, e = o._self._c, t = o._self._setupProxy;
6
- return e("div", { staticClass: "d-f" }, [(s = t.config.features) != null && s.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : o._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : o._e(), e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") } }), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(p) {
1
+ import a from "./RightSlot.vue2.js";
2
+ import l from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var r = function() {
4
+ var o, i, n;
5
+ var s = this, e = s._self._c, t = s._self._setupProxy;
6
+ return e("div", { staticClass: "d-f" }, [(o = t.config.features) != null && o.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : s._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : s._e(), (n = t.config.features) != null && n.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.testEmailClick } }) : s._e(), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(c) {
7
7
  return t.handleSave(!1);
8
8
  } } })], 1);
9
- }, r = [], d = /* @__PURE__ */ a(
10
- n,
11
- l,
9
+ }, u = [], d = /* @__PURE__ */ l(
10
+ a,
12
11
  r,
12
+ u,
13
13
  !1,
14
14
  null,
15
15
  null
16
16
  );
17
- const g = d.exports;
17
+ const f = d.exports;
18
18
  export {
19
- g as default
19
+ f as default
20
20
  };
@@ -1,35 +1,36 @@
1
- import { defineComponent as g, ref as l, computed as H } from "vue";
2
- import { useConfig as _ } from "../../../composables/useConfig.js";
3
- import { useExport as h } from "../../../composables/useExport.js";
4
- import { useSave as V } from "../../../composables/useSave.js";
5
- import { useTranslations as x } from "../../../composables/useTranslations.js";
1
+ import { defineComponent as H, ref as m, computed as _ } from "vue";
2
+ import { useConfig as h } from "../../../composables/useConfig.js";
3
+ import { useExport as V } from "../../../composables/useExport.js";
4
+ import { useTestEmailClick as x } from "../../../composables/useGuidoActions.js";
5
+ import { useSave as E } from "../../../composables/useSave.js";
6
+ import { useTranslations as T } from "../../../composables/useTranslations.js";
6
7
  import { useVersionHistoryApi as w } from "../../../composables/useVersionHistoryApi.js";
7
- import { useEditorStore as T } from "../../../stores/editor.js";
8
- import { getTooltipOptions as E } from "../../../utils/tooltipUtils.js";
9
- import { InButtonV2 as O } from "@useinsider/design-system-vue";
10
- const z = /* @__PURE__ */ g({
8
+ import { useEditorStore as C } from "../../../stores/editor.js";
9
+ import { getTooltipOptions as O } from "../../../utils/tooltipUtils.js";
10
+ import { InButtonV2 as A } from "@useinsider/design-system-vue";
11
+ const J = /* @__PURE__ */ H({
11
12
  __name: "RightSlot",
12
- setup(A, { expose: m }) {
13
- const { config: u } = _(), { exportHtml: r } = h(), { save: n } = V(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = T(), t = x(), e = l(!1), s = l(!1), c = () => {
13
+ setup(k, { expose: c }) {
14
+ const { config: u } = h(), { exportHtml: r } = V(), { save: n } = E(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = C(), t = T(), e = m(!1), s = m(!1), f = x(), v = () => {
14
15
  if (o.isVersionHistoryOpen) {
15
16
  a();
16
17
  return;
17
18
  }
18
19
  i();
19
- }, f = async () => {
20
+ }, d = async () => {
20
21
  e.value = !0, await r(), e.value = !1;
21
- }, v = () => {
22
+ }, y = () => {
22
23
  o.isSaveAsTemplateDrawerOpen = !0;
23
- }, d = H(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), p = async (y) => {
24
+ }, S = _(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), l = async (p) => {
24
25
  s.value = !0, o.loadingStatus = !0;
25
- const S = await n(y);
26
- return s.value = !1, o.loadingStatus = !1, S;
26
+ const g = await n(p);
27
+ return s.value = !1, p && (o.loadingStatus = !1), g;
27
28
  };
28
- return m({
29
- handleSave: p
30
- }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, handleVersionHistory: c, handleExport: f, handleSaveAs: v, versionHistoryTooltipText: d, handleSave: p, getTooltipOptions: E, InButtonV2: O };
29
+ return c({
30
+ handleSave: l
31
+ }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, testEmailClick: f, handleVersionHistory: v, handleExport: d, handleSaveAs: y, versionHistoryTooltipText: S, handleSave: l, getTooltipOptions: O, InButtonV2: A };
31
32
  }
32
33
  });
33
34
  export {
34
- z as default
35
+ J as default
35
36
  };
@@ -0,0 +1,21 @@
1
+ import g from "./ItemsOnboarding.vue2.js";
2
+ /* empty css */
3
+ import m from "../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var l = function() {
5
+ var e, n, r, i, s, a;
6
+ var o = this, d = o._self._c, t = o._self._setupProxy;
7
+ return t.isVisible ? d(t.InOnboard, { key: "guido__items-onboard", staticClass: "w-21-s p-a z-11", class: (e = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : e.classes, attrs: { id: "guido__items-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "bottom-position": (n = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : n.bottom, "left-position": (r = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : r.left, "pages-config": t.onboardingStore.onboardings.itemsOnboarding.config, "pointer-position": (i = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : i.position, "right-position": (s = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : s.right, "top-position": (a = t.onboardingStore.getItemsCurrentCard) == null ? void 0 : a.top }, on: { backButtonClick: t.handleBack, close: function(b) {
8
+ return t.onboardingStore.close("itemsOnboarding");
9
+ }, nextButtonClick: t.handleNext } }) : o._e();
10
+ }, c = [], p = /* @__PURE__ */ m(
11
+ g,
12
+ l,
13
+ c,
14
+ !1,
15
+ null,
16
+ "dd1a237a"
17
+ );
18
+ const I = p.exports;
19
+ export {
20
+ I as default
21
+ };