@useinsider/guido 1.0.3-beta.25d8896 → 1.0.3-beta.283d792

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 (128) hide show
  1. package/README.md +3 -137
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +59 -62
  4. package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
  5. package/dist/components/organisms/header/LeftSlot.vue2.js +15 -16
  6. package/dist/components/organisms/header/RightSlot.vue.js +11 -11
  7. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +20 -21
  8. package/dist/composables/useStripo.js +50 -39
  9. package/dist/config/migrator/index.js +6 -7
  10. package/dist/enums/date.js +14 -4
  11. package/dist/enums/defaults.js +9 -15
  12. package/dist/enums/onboarding.js +1 -2
  13. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  14. package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
  15. package/dist/extensions/Blocks/Recommendation/block.js +3 -6
  16. package/dist/extensions/Blocks/Recommendation/control.js +40 -69
  17. package/dist/extensions/Blocks/Recommendation/extension.js +7 -42
  18. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +22 -107
  19. package/dist/extensions/Blocks/Recommendation/template.js +200 -0
  20. package/dist/extensions/Blocks/common-control.js +43 -125
  21. package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -46
  22. package/dist/extensions/DynamicContent/dynamic-content.js +31 -140
  23. package/dist/guido.css +1 -1
  24. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +100 -307
  25. package/dist/services/stripoApi.js +1 -1
  26. package/dist/src/@types/generic.d.ts +6 -46
  27. package/dist/src/components/Guido.vue.d.ts +2 -2
  28. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  29. package/dist/src/enums/date.d.ts +13 -4
  30. package/dist/src/enums/onboarding.d.ts +0 -1
  31. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -1
  32. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -6
  33. package/dist/src/extensions/Blocks/Recommendation/template.d.ts +6 -0
  34. package/dist/src/extensions/Blocks/common-control.d.ts +0 -21
  35. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
  36. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -58
  37. package/dist/src/stores/config.d.ts +1 -7
  38. package/dist/src/stores/dynamic-content.d.ts +2 -2
  39. package/dist/src/utils/dateUtil.d.ts +1 -21
  40. package/dist/src/utils/genericUtil.d.ts +0 -8
  41. package/dist/static/styles/components/narrow-panel.css.js +0 -10
  42. package/dist/static/styles/customEditorStyle.css.js +0 -5
  43. package/dist/stores/dynamic-content.js +1 -1
  44. package/dist/utils/dateUtil.js +7 -33
  45. package/dist/utils/genericUtil.js +8 -32
  46. package/package.json +2 -2
  47. package/dist/composables/useBlocksConfig.js +0 -49
  48. package/dist/config/migrator/recommendationMigrator.js +0 -293
  49. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  50. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  51. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  52. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  53. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  54. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  55. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  56. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  57. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  58. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  59. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  60. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  61. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  62. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  63. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  64. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  65. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  66. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  67. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  68. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  69. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  70. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  71. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  72. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  73. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  74. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  75. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  76. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  77. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  78. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  79. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  80. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  81. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  82. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  83. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  84. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  85. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  86. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  87. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  88. package/dist/src/composables/useBlocksConfig.d.ts +0 -11
  89. package/dist/src/config/migrator/recommendationMigrator.d.ts +0 -1
  90. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  91. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +0 -51
  92. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  93. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  94. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  95. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  96. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  97. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  98. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  99. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  100. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  101. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  102. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  103. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  104. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  105. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  106. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  107. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  108. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  109. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  110. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  111. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  112. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  113. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  114. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  115. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  116. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  117. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  118. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  119. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  120. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  121. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  122. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  123. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  124. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  125. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  126. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  127. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +0 -16
  128. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
package/README.md CHANGED
@@ -82,12 +82,10 @@ export default {
82
82
  translationsPath: 'window.trans.en',
83
83
  htmlCompilerRules: [],
84
84
  ignoreDefaultHtmlCompilerRules: false,
85
- backButtonLabel?: "Back to Design",
86
85
  features: {
87
86
  dynamicContent: true,
88
87
  saveAsTemplate: true,
89
- versionHistory: true,
90
- testMessage: true
88
+ versionHistory: true
91
89
  }
92
90
  },
93
91
  dynamicContentModalVisible: false
@@ -196,11 +194,6 @@ interface GuidoConfig {
196
194
  dynamicContent: boolean;
197
195
  saveAsTemplate: boolean;
198
196
  versionHistory: boolean;
199
- testMessage: boolean;
200
- };
201
- blocks?: {
202
- excludeDefaults?: GuidoBlockType[];
203
- includeCustoms?: GuidoCustomBlockType[];
204
197
  };
205
198
  }
206
199
  ```
@@ -215,9 +208,6 @@ interface GuidoConfig {
215
208
  | `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
216
209
  | `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
217
210
  | `features.versionHistory` | `boolean` | `true` | Enable version history feature |
218
- | `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
219
- | `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
220
- | `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
221
211
 
222
212
  ```typescript
223
213
  interface DynamicContent {
@@ -234,128 +224,6 @@ interface DynamicContent {
234
224
  | `text` | `string` | '' | Visible value of the dynamic content |
235
225
  | `fallback?` | `string` | '' | Fallback value of the dynamic content. Optional |
236
226
 
237
- ## 🧱 Blocks Configuration
238
-
239
- 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.
240
-
241
- ### Block Types
242
-
243
- #### Default Blocks (GuidoBlockType)
244
-
245
- These are the standard Stripo email editor blocks that can be excluded:
246
-
247
- ```typescript
248
- type GuidoBlockType =
249
- | 'amp-accordion' // AMP accordion component
250
- | 'amp-carousel' // AMP image carousel
251
- | 'amp-form-controls' // AMP form elements
252
- | 'banner-block' // Banner/hero section
253
- | 'button-block' // Call-to-action buttons
254
- | 'html-block' // Custom HTML
255
- | 'image-block' // Image elements
256
- | 'menu-block' // Navigation menu
257
- | 'social-block' // Social media links
258
- | 'spacer-block' // Vertical spacing
259
- | 'text-block' // Text content
260
- | 'timer-block' // Countdown timer
261
- | 'video-block' // Video embeds
262
- ```
263
-
264
- #### Custom Blocks (GuidoCustomBlockType)
265
-
266
- These are custom blocks that can be selectively included:
267
-
268
- ```typescript
269
- type GuidoCustomBlockType =
270
- | 'dynamic-content' // Dynamic content merge tags
271
- | 'checkbox-block' // Checkbox form input
272
- | 'radio-button-block' // Radio button form input
273
- | 'recommendation-block' // Product recommendations
274
- | 'unsubscribe-block' // Unsubscribe link
275
- | 'coupon-block' // Coupon/promo code
276
- | 'items-block' // Cart items display
277
- ```
278
-
279
- ### Configuration Examples
280
-
281
- #### Example 1: Exclude Specific Default Blocks
282
-
283
- Disable button, image, and video blocks while keeping all custom blocks:
284
-
285
- ```typescript
286
- const guidoConfig = {
287
- translationsPath: 'window.trans.en',
288
- features: {
289
- dynamicContent: true,
290
- saveAsTemplate: true,
291
- versionHistory: true,
292
- testMessage: true
293
- },
294
- blocks: {
295
- excludeDefaults: ['button-block', 'image-block', 'video-block']
296
- }
297
- };
298
- ```
299
-
300
- **Result:**
301
- - Button, Image, Video blocks disabled
302
- - All other default blocks enabled
303
- - All custom blocks are disabled.
304
-
305
- #### Example 2: Include Only Specific Custom Blocks
306
-
307
- Enable only coupon and recommendation blocks:
308
-
309
- ```typescript
310
- const guidoConfig = {
311
- translationsPath: 'window.trans.en',
312
- features: {
313
- dynamicContent: true,
314
- saveAsTemplate: true,
315
- versionHistory: true,
316
- testMessage: true
317
- },
318
- blocks: {
319
- includeCustoms: ['coupon-block', 'recommendation-block']
320
- }
321
- };
322
- ```
323
-
324
- **Result:**
325
- - All default blocks enabled
326
- - Only Coupon and Recommendation extensions enabled.
327
- - Other custom blocks are disabled
328
-
329
- ### Default Behavior
330
-
331
- When `blocks` is not provided or is `undefined`:
332
-
333
- ```typescript
334
- const guidoConfig = {
335
- translationsPath: 'window.trans.en',
336
- features: {
337
- dynamicContent: true,
338
- saveAsTemplate: true,
339
- versionHistory: true,
340
- testMessage: true
341
- },
342
- // No blocks config
343
- };
344
- ```
345
-
346
- **Result:**
347
- - All 13 default Stripo blocks enabled
348
- - All custom blocks are disabled.
349
-
350
- ### Block Configuration Interface
351
-
352
- ```typescript
353
- interface BlocksConfig {
354
- excludeDefaults?: GuidoBlockType[];
355
- includeCustoms?: GuidoCustomBlockType[];
356
- }
357
- ```
358
-
359
227
  ### TypeScript Types
360
228
 
361
229
  The library exports the following TypeScript types:
@@ -450,8 +318,7 @@ const guidoConfig = {
450
318
  features: {
451
319
  dynamicContent: true,
452
320
  saveAsTemplate: true,
453
- versionHistory: false, // Disable version history
454
- testMessage: true
321
+ versionHistory: false // Disable version history
455
322
  },
456
323
  htmlCompilerRules: [
457
324
  {
@@ -484,8 +351,7 @@ const guidoConfig = {
484
351
  features: {
485
352
  dynamicContent: true,
486
353
  saveAsTemplate: true,
487
- versionHistory: true,
488
- testMessage: true
354
+ versionHistory: true
489
355
  },
490
356
  ignoreDefaultHtmlCompilerRules: true, // Skip all default rules
491
357
  htmlCompilerRules: [
@@ -12,7 +12,7 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "41915b53"
15
+ "3c910a93"
16
16
  );
17
17
  const v = s.exports;
18
18
  export {
@@ -1,23 +1,23 @@
1
- import { defineComponent as O, defineAsyncComponent as U, ref as z, computed as L, 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";
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
5
  import { migrate as W } 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 ae } from "../stores/dynamic-content.js";
16
- import { useEditorStore as se } from "../stores/editor.js";
17
- import { usePreviewStore as ce } from "../stores/preview.js";
18
- import { useUnsubscribeStore as de } from "../stores/unsubscribe.js";
19
- import me from "../node_modules/lodash-es/merge.js";
20
- const Le = /* @__PURE__ */ O({
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({
21
21
  __name: "Guido",
22
22
  props: {
23
23
  templateId: null,
@@ -32,46 +32,46 @@ const Le = /* @__PURE__ */ O({
32
32
  templateConfig: null
33
33
  },
34
34
  emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
35
- setup(_, { expose: k, emit: t }) {
36
- const l = _, A = U(
35
+ setup(_, { expose: L, emit: t }) {
36
+ const u = _, k = I(
37
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
- ), N = U(
38
+ ), A = I(
39
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
- ), p = z(), i = ae(), g = de(), f = ie(), a = se(), F = ce(), n = L(() => a.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
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 = () => {
41
41
  var e;
42
- return (e = p.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = l.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
44
  templateId: s,
45
- userId: C,
46
- guidoConfig: h,
45
+ userId: b,
46
+ guidoConfig: C,
47
47
  templateConfig: o,
48
48
  html: r = "",
49
- css: S = "",
50
- partnerName: c = y(),
51
- productType: d = v(),
52
- messageType: w = X,
53
- username: D = V
54
- } = l, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
- a.templateId = s, window.GuidoConfig = me(Y, h), window.GuidoConfig.partner = {
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 = {
56
56
  partnerName: c,
57
57
  productType: d,
58
- messageType: w
59
- }, f.templateConfig = o;
60
- const { initPlugin: E } = Q({
58
+ messageType: S
59
+ }, g.templateConfig = o;
60
+ const { initPlugin: D } = j({
61
61
  emailId: s,
62
- userId: C,
63
- username: D,
62
+ userId: b,
63
+ username: w,
64
64
  partnerName: c,
65
65
  productType: d,
66
66
  preselectedDynamicContentList: m,
67
67
  onReady: () => {
68
68
  console.debug("guido:ready"), t("ready");
69
69
  }
70
- }), { getDefaultTemplate: T } = re(), R = L(() => {
70
+ }), { getDefaultTemplate: T } = oe(), H = U(() => {
71
71
  var e;
72
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
73
73
  });
74
- q({
74
+ K({
75
75
  onBack: () => {
76
76
  console.debug("guido:back"), t("back");
77
77
  },
@@ -82,50 +82,47 @@ const Le = /* @__PURE__ */ O({
82
82
  console.debug("guido:save:complete", e), t("save:complete", e);
83
83
  }
84
84
  });
85
- const P = (e) => {
86
- console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
87
- }, G = () => {
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
88
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
89
89
  };
90
- B(() => n.value, () => {
90
+ return M(() => n.value, () => {
91
91
  t("on-change", n.value);
92
- });
93
- const u = (e) => {
94
- const I = e, { attribute: x, position: M } = I.detail;
95
- console.debug("dynamic-content:open", I.detail), t("dynamic-content:open", x, M);
96
- };
97
- return K(async () => {
92
+ }), z(async () => {
98
93
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
99
94
  try {
100
- g.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
95
+ p.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
101
96
  let e = {
102
97
  html: r && await W(r),
103
- css: S,
98
+ css: h,
104
99
  forceRecreate: !0
105
100
  // TODO: It should be false for old templates. We will communicate with Stripo
106
101
  };
107
- e.html || (e = await T(), e.html = await W(e.html)), await E(e), i.selectedDynamicContentList = m;
102
+ e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = m;
108
103
  } catch (e) {
109
104
  console.error("Failed to initialize Stripo editor:", e);
110
105
  }
111
- document.addEventListener("dynamic-content:open", u);
112
- }), j(() => {
113
- document.removeEventListener("dynamic-content:open", u);
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
111
  try {
115
112
  window.UIEditor.removeEditor();
116
113
  } catch {
117
114
  console.debug("Failed to remove Stripo editor: No editor found");
118
115
  }
119
- }), k({
116
+ }), L({
120
117
  dynamicContent: {
121
- insert: P,
122
- close: G
118
+ insert: E,
119
+ close: P
123
120
  },
124
121
  hasChanges: n,
125
- saveSilent: b
126
- }), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: l, configStore: f, editorStore: a, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: s, userId: C, guidoConfig: h, templateConfig: o, html: r, css: S, partnerName: c, productType: d, messageType: w, username: D, preselectedDynamicContentList: m, emit: t, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: G, handleDynamicContentOpen: u, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
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 };
127
124
  }
128
125
  });
129
126
  export {
130
- Le as default
127
+ Ge as default
131
128
  };
@@ -10,7 +10,7 @@ var n = function() {
10
10
  a,
11
11
  !1,
12
12
  null,
13
- "0502bceb"
13
+ "2c168944"
14
14
  );
15
15
  const p = i.exports;
16
16
  export {
@@ -1,29 +1,28 @@
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";
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";
5
4
  import { useTranslations as p } from "../../../composables/useTranslations.js";
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({
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({
11
10
  __name: "LeftSlot",
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: () => {
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: () => {
15
14
  if (o.isVersionHistoryOpen) {
16
- i();
15
+ t();
17
16
  return;
18
17
  }
19
18
  if (o.isPreviewModeOpen) {
20
- n();
19
+ i();
21
20
  return;
22
21
  }
23
22
  r();
24
- }, InButtonV2: k, RestoreButton: B };
23
+ }, InButtonV2: f, RestoreButton: l };
25
24
  }
26
25
  });
27
26
  export {
28
- P as default
27
+ O as default
29
28
  };
@@ -1,20 +1,20 @@
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") } }) : 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(_) {
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) {
7
7
  return t.handleSave(!1);
8
8
  } } })], 1);
9
- }, u = [], d = /* @__PURE__ */ l(
10
- a,
9
+ }, r = [], d = /* @__PURE__ */ a(
10
+ n,
11
+ l,
11
12
  r,
12
- u,
13
13
  !1,
14
14
  null,
15
15
  null
16
16
  );
17
- const f = d.exports;
17
+ const g = d.exports;
18
18
  export {
19
- f as default
19
+ g as default
20
20
  };
@@ -1,43 +1,42 @@
1
- import { defineComponent as g, ref as b, computed as o } from "vue";
2
- import v from "../../wrappers/WpModal.vue.js";
1
+ import { defineComponent as f, ref as g, computed as o } from "vue";
2
+ import b from "../../wrappers/WpModal.vue.js";
3
3
  import { useConfig as D } from "../../../composables/useConfig.js";
4
- import { useTranslations as h } from "../../../composables/useTranslations.js";
5
- import { ACADEMY_LINK as l } from "../../../enums/onboarding.js";
6
- import y from "../../../static/assets/onboarding-img.svg.js";
7
- import { useOnboardingStore as _ } from "../../../stores/onboarding.js";
8
- import { isAfterDate as C, formatShortDate as L } from "../../../utils/dateUtil.js";
9
- const I = /* @__PURE__ */ g({
4
+ import { useTranslations as v } from "../../../composables/useTranslations.js";
5
+ import { DATE_FORMAT_DD_MM_YYYY as _ } from "../../../enums/date.js";
6
+ import h from "../../../static/assets/onboarding-img.svg.js";
7
+ import { useOnboardingStore as y } from "../../../stores/onboarding.js";
8
+ import { isAfterDate as w, formatPatchDate as C } from "../../../utils/dateUtil.js";
9
+ const V = /* @__PURE__ */ f({
10
10
  __name: "NewVersionPopup",
11
11
  emits: ["onboarding-finished"],
12
- setup(w, { emit: a }) {
13
- const e = h(), t = _(), s = b(!0), { config: p } = D(), i = o(() => p.migrationDate), n = o(() => C(i.value || 0)), d = o(() => L(
14
- i.value
15
- )), m = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-title") : e("email-editor.onboarding-title")), c = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-description", {
16
- sunsetDate: d.value,
17
- academyLink: l
18
- }) : e("email-editor.onboarding-description", {
19
- academyLink: l
20
- })), u = o(() => n.value ? e("products.cancel") : e("products.remind-me-later")), f = o(() => ({
12
+ setup(M, { emit: a }) {
13
+ const e = v(), t = y(), s = g(!0), { config: p } = D(), i = o(() => p.migrationDate), n = o(() => w(i.value || 0)), u = o(() => C(
14
+ i.value * 1e3,
15
+ _,
16
+ "en-GB"
17
+ )), l = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-title") : e("email-editor.onboarding-title")), m = o(() => n.value ? e("email-editor.onboarding-popup-sunsetted-description", {
18
+ sunsetDate: u.value
19
+ }) : e("email-editor.onboarding-description")), d = o(() => n.value ? e("products.cancel") : e("products.remind-me-later")), c = o(() => ({
21
20
  primaryButton: {
22
21
  type: "primary",
23
22
  labelText: e("left-menu.discover-now")
24
23
  },
25
24
  secondaryButton: {
26
25
  type: "subtle-primary",
27
- labelText: u.value
26
+ labelText: d.value
28
27
  }
29
28
  })), r = () => {
30
29
  s.value = !1, a("onboarding-finished");
31
30
  };
32
- return { __sfc: !0, emit: a, trans: e, onboardingStore: t, isVisible: s, config: p, migrationDate: i, isAfterMigrationDate: n, formattedSunsetDate: d, popupTitle: m, popupDescription: c, secondaryButtonLabel: u, footerButtonOptions: f, closePopup: r, handleDiscoverNow: () => {
31
+ return { __sfc: !0, emit: a, trans: e, onboardingStore: t, isVisible: s, config: p, migrationDate: i, isAfterMigrationDate: n, formattedSunsetDate: u, popupTitle: l, popupDescription: m, secondaryButtonLabel: d, footerButtonOptions: c, closePopup: r, handleDiscoverNow: () => {
33
32
  t.onDiscoverNowClicked(), r();
34
33
  }, handleRemindLater: () => {
35
34
  t.onRemindMeLater(), r();
36
35
  }, handleClose: () => {
37
36
  t.onNewVersionPopupClose(), r();
38
- }, WpModal: v, onboardingImageSvg: y };
37
+ }, WpModal: b, onboardingImageSvg: h };
39
38
  }
40
39
  });
41
40
  export {
42
- I as default
41
+ V as default
43
42
  };