@useinsider/guido 1.0.3-beta.185718d → 1.0.3-beta.18f9e49

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 (131) hide show
  1. package/README.md +20 -7
  2. package/dist/components/Guido.vue.js +14 -10
  3. package/dist/components/Guido.vue2.js +20 -20
  4. package/dist/components/organisms/header/HeaderWrapper.vue.js +10 -8
  5. package/dist/components/organisms/header/HeaderWrapper.vue2.js +14 -13
  6. package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
  7. package/dist/components/organisms/header/LeftSlot.vue2.js +15 -15
  8. package/dist/components/organisms/header/RightSlot.vue.js +12 -10
  9. package/dist/components/organisms/header/RightSlot.vue2.js +17 -17
  10. package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
  11. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +30 -17
  12. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -10
  13. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +19 -18
  14. package/dist/composables/useBlocksConfig.js +20 -29
  15. package/dist/composables/usePartner.js +10 -11
  16. package/dist/composables/useStripo.js +8 -8
  17. package/dist/config/migrator/index.js +7 -6
  18. package/dist/config/migrator/recommendationMigrator.js +293 -0
  19. package/dist/enums/date.js +6 -0
  20. package/dist/enums/defaults.js +6 -4
  21. package/dist/enums/onboarding.js +2 -1
  22. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  23. package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
  24. package/dist/extensions/Blocks/Recommendation/block.js +6 -3
  25. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  26. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  27. package/dist/extensions/Blocks/Recommendation/control.js +69 -40
  28. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  29. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  30. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  31. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  32. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  33. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/extension.js +42 -7
  63. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +107 -22
  64. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  65. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  66. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  67. package/dist/extensions/Blocks/common-control.js +125 -43
  68. package/dist/guido.css +1 -1
  69. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +307 -100
  70. package/dist/services/stripoApi.js +1 -1
  71. package/dist/src/@types/generic.d.ts +8 -0
  72. package/dist/src/components/Guido.vue.d.ts +2 -0
  73. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +3 -1
  74. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +3 -1
  75. package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +3 -1
  76. package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +3 -1
  77. package/dist/src/composables/useBlocksConfig.d.ts +2 -2
  78. package/dist/src/composables/usePartner.d.ts +0 -1
  79. package/dist/src/config/migrator/recommendationMigrator.d.ts +1 -0
  80. package/dist/src/enums/date.d.ts +4 -0
  81. package/dist/src/enums/onboarding.d.ts +1 -0
  82. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  83. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  84. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +51 -0
  85. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +6 -0
  86. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  87. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  88. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  89. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  90. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  91. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  92. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  93. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  94. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  95. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  96. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  97. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  98. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  99. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  100. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  101. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  102. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  103. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  104. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  105. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  106. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  107. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  108. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  121. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +16 -0
  122. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  123. package/dist/src/extensions/Blocks/common-control.d.ts +21 -0
  124. package/dist/src/stores/config.d.ts +3 -0
  125. package/dist/src/utils/dateUtil.d.ts +21 -0
  126. package/dist/static/styles/components/narrow-panel.css.js +10 -0
  127. package/dist/static/styles/customEditorStyle.css.js +5 -0
  128. package/dist/utils/dateUtil.js +24 -3
  129. package/package.json +2 -2
  130. package/dist/extensions/Blocks/Recommendation/template.js +0 -200
  131. package/dist/src/extensions/Blocks/Recommendation/template.d.ts +0 -6
package/README.md CHANGED
@@ -52,6 +52,7 @@ npm install @useinsider/guido
52
52
  ref="guidoEditor"
53
53
  :template-id="templateId"
54
54
  :user-id="userId"
55
+ :migration-date="migrationDate"
55
56
  :guido-config="guidoConfig"
56
57
  :html="initialHtml"
57
58
  :css="initialCss"
@@ -74,16 +75,19 @@ export default {
74
75
  return {
75
76
  templateId: 'template-123',
76
77
  userId: 'user-456',
78
+ migrationDate: 1699488000,
77
79
  initialHtml: '<p>Initial HTML content</p>',
78
80
  initialCss: 'p { color: #333; }',
79
81
  guidoConfig: {
80
82
  translationsPath: 'window.trans.en',
81
83
  htmlCompilerRules: [],
82
84
  ignoreDefaultHtmlCompilerRules: false,
85
+ backButtonLabel?: "Back to Design",
83
86
  features: {
84
87
  dynamicContent: true,
85
88
  saveAsTemplate: true,
86
- versionHistory: true
89
+ versionHistory: true,
90
+ testMessage: true
87
91
  }
88
92
  },
89
93
  dynamicContentModalVisible: false
@@ -145,6 +149,7 @@ export default {
145
149
  | `templateId` | `string` | ✅ | - | Unique identifier for the email template |
146
150
  | `userId` | `string` | ✅ | - | Unique identifier for the user |
147
151
  | `guidoConfig` | `GuidoConfig` | ✅ | - | Configuration object for the editor |
152
+ | `migrationDate` | `number` | ✅ | - | Stripo migration date in Unix timestamp (seconds). Retrieved from backend `/partner-settings` endpoint as `migrationDate`. Used for onboarding process |
148
153
  | `partnerName` | `string` | ⚪ | From URL host | Partner identifier |
149
154
  | `productType` | `string` | ⚪ | From URL path | Product type identifier |
150
155
  | `username` | `string` | ⚪ | `'Guido User'` | Display name for the user |
@@ -161,6 +166,8 @@ export default {
161
166
  | `save:complete` | `Omit<Template, 'forceRecreate'>` | Fired when template is successfully saved |
162
167
  | `on-change` | void | It Fires once for managing leave modal etc. |
163
168
  | `ready` | void | Fired when the editor is ready and template is loaded |
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 |
164
171
 
165
172
  ### Guido Exposed Methods
166
173
  ```typescript
@@ -190,6 +197,7 @@ interface GuidoConfig {
190
197
  dynamicContent: boolean;
191
198
  saveAsTemplate: boolean;
192
199
  versionHistory: boolean;
200
+ testMessage: boolean;
193
201
  };
194
202
  blocks?: {
195
203
  excludeDefaults?: GuidoBlockType[];
@@ -281,7 +289,8 @@ const guidoConfig = {
281
289
  features: {
282
290
  dynamicContent: true,
283
291
  saveAsTemplate: true,
284
- versionHistory: true
292
+ versionHistory: true,
293
+ testMessage: true
285
294
  },
286
295
  blocks: {
287
296
  excludeDefaults: ['button-block', 'image-block', 'video-block']
@@ -304,7 +313,8 @@ const guidoConfig = {
304
313
  features: {
305
314
  dynamicContent: true,
306
315
  saveAsTemplate: true,
307
- versionHistory: true
316
+ versionHistory: true,
317
+ testMessage: true
308
318
  },
309
319
  blocks: {
310
320
  includeCustoms: ['coupon-block', 'recommendation-block']
@@ -327,8 +337,9 @@ const guidoConfig = {
327
337
  features: {
328
338
  dynamicContent: true,
329
339
  saveAsTemplate: true,
330
- versionHistory: true
331
- }
340
+ versionHistory: true,
341
+ testMessage: true
342
+ },
332
343
  // No blocks config
333
344
  };
334
345
  ```
@@ -440,7 +451,8 @@ const guidoConfig = {
440
451
  features: {
441
452
  dynamicContent: true,
442
453
  saveAsTemplate: true,
443
- versionHistory: false // Disable version history
454
+ versionHistory: false, // Disable version history
455
+ testMessage: true
444
456
  },
445
457
  htmlCompilerRules: [
446
458
  {
@@ -473,7 +485,8 @@ const guidoConfig = {
473
485
  features: {
474
486
  dynamicContent: true,
475
487
  saveAsTemplate: true,
476
- versionHistory: true
488
+ versionHistory: true,
489
+ testMessage: true
477
490
  },
478
491
  ignoreDefaultHtmlCompilerRules: true, // Skip all default rules
479
492
  htmlCompilerRules: [
@@ -1,18 +1,22 @@
1
- import a from "./Guido.vue2.js";
1
+ import t from "./Guido.vue2.js";
2
2
  /* empty css */
3
- import i from "../_virtual/_plugin-vue2_normalizer.js";
4
- var t = function() {
5
- var o = this, r = o._self._c, e = o._self._setupProxy;
6
- return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
7
- }, s = [], d = /* @__PURE__ */ i(
8
- a,
3
+ import a from "../_virtual/_plugin-vue2_normalizer.js";
4
+ var n = function() {
5
+ var i = this, r = i._self._c, e = i._self._setupProxy;
6
+ return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef", on: { "test-email:click": function(o) {
7
+ return e.emit("test-email:click");
8
+ } } }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : i._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? i._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(o) {
9
+ return e.emit("onboarding:finished");
10
+ } } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
11
+ }, s = [], d = /* @__PURE__ */ a(
9
12
  t,
13
+ n,
10
14
  s,
11
15
  !1,
12
16
  null,
13
- "e8d51dec"
17
+ "486a715d"
14
18
  );
15
- const l = d.exports;
19
+ const u = d.exports;
16
20
  export {
17
- l as default
21
+ u as default
18
22
  };
@@ -14,9 +14,9 @@ import { useStripoApi as oe } from "../services/stripoApi.js";
14
14
  import { useConfigStore as te } from "../stores/config.js";
15
15
  import { useDynamicContentStore as ne } from "../stores/dynamic-content.js";
16
16
  import { useEditorStore as re } from "../stores/editor.js";
17
- import { usePreviewStore as ae } from "../stores/preview.js";
18
- import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
19
- import ie from "../node_modules/lodash-es/merge.js";
17
+ import { usePreviewStore as ie } from "../stores/preview.js";
18
+ import { useUnsubscribeStore as ae } from "../stores/unsubscribe.js";
19
+ import se from "../node_modules/lodash-es/merge.js";
20
20
  const Ge = /* @__PURE__ */ R({
21
21
  __name: "Guido",
22
22
  props: {
@@ -31,39 +31,39 @@ 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"],
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(_, { expose: k, emit: t }) {
36
+ const l = _, L = I(
37
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
38
  ), A = I(
39
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
- ), l = x(), a = ne(), p = se(), g = te(), s = re(), N = ae(), n = U(() => s.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
40
+ ), u = x(), i = ne(), p = ae(), g = te(), a = re(), N = ie(), n = U(() => a.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
41
41
  var e;
42
- return (e = l.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = u.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
- templateId: i,
44
+ templateId: s,
45
45
  userId: b,
46
46
  guidoConfig: C,
47
47
  templateConfig: o,
48
48
  html: r = "",
49
49
  css: h = "",
50
50
  partnerName: c = f(),
51
- productType: m = y(),
51
+ productType: d = y(),
52
52
  messageType: S = J,
53
53
  username: w = q
54
- } = u, d = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
- s.templateId = i, window.GuidoConfig = ie(Q, C), window.GuidoConfig.partner = {
54
+ } = l, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
+ a.templateId = s, window.GuidoConfig = se(Q, C), window.GuidoConfig.partner = {
56
56
  partnerName: c,
57
- productType: m,
57
+ productType: d,
58
58
  messageType: S
59
59
  }, g.templateConfig = o;
60
60
  const { initPlugin: D } = j({
61
- emailId: i,
61
+ emailId: s,
62
62
  userId: b,
63
63
  username: w,
64
64
  partnerName: c,
65
- productType: m,
66
- preselectedDynamicContentList: d,
65
+ productType: d,
66
+ preselectedDynamicContentList: m,
67
67
  onReady: () => {
68
68
  console.debug("guido:ready"), t("ready");
69
69
  }
@@ -83,7 +83,7 @@ const Ge = /* @__PURE__ */ R({
83
83
  }
84
84
  });
85
85
  const E = (e) => {
86
- console.debug("dynamic-content:close", e), a.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
86
+ console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
87
87
  }, P = () => {
88
88
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
89
89
  };
@@ -99,7 +99,7 @@ const Ge = /* @__PURE__ */ R({
99
99
  forceRecreate: !0
100
100
  // TODO: It should be false for old templates. We will communicate with Stripo
101
101
  };
102
- e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = d;
102
+ e.html || (e = await T(), e.html = await W(e.html)), await D(e), i.selectedDynamicContentList = m;
103
103
  } catch (e) {
104
104
  console.error("Failed to initialize Stripo editor:", e);
105
105
  }
@@ -113,14 +113,14 @@ const Ge = /* @__PURE__ */ R({
113
113
  } catch {
114
114
  console.debug("Failed to remove Stripo editor: No editor found");
115
115
  }
116
- }), L({
116
+ }), k({
117
117
  dynamicContent: {
118
118
  insert: E,
119
119
  close: P
120
120
  },
121
121
  hasChanges: n,
122
122
  saveSilent: v
123
- }), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: l, dynamicContentStore: a, unsubscribeStore: p, props: u, configStore: g, editorStore: s, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: i, userId: b, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: c, productType: m, messageType: S, username: w, preselectedDynamicContentList: d, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
123
+ }), { __sfc: !0, PreviewContainer: L, OnboardingWrapper: A, headerWrapperRef: u, dynamicContentStore: i, unsubscribeStore: p, props: l, configStore: g, editorStore: a, 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 };
124
124
  }
125
125
  });
126
126
  export {
@@ -1,17 +1,19 @@
1
1
  import o from "./HeaderWrapper.vue2.js";
2
- import s from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var n = function() {
2
+ import n from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var s = function() {
4
4
  var t = this, r = t._self._c, e = t._self._setupProxy;
5
- return r(e.InContainer, { attrs: { border: "bor-w-0 bor-b-w-1 bor-s-s bor-c-6", "border-radius": "bor-r-0" } }, [r("div", { staticClass: "w-1 d-f a-i-c j-c-s-b p-3" }, [r(e.LeftSlot), r(e.MiddleSlot), r(e.RightSlot, { ref: "rightSlotRef" })], 1)]);
6
- }, a = [], _ = /* @__PURE__ */ s(
5
+ return r(e.InContainer, { attrs: { border: "bor-w-0 bor-b-w-1 bor-s-s bor-c-6", "border-radius": "bor-r-0" } }, [r("div", { staticClass: "w-1 d-f a-i-c j-c-s-b p-3" }, [r(e.LeftSlot), r(e.MiddleSlot), r(e.RightSlot, { ref: "rightSlotRef", on: { "test-email:click": function(c) {
6
+ return e.emit("test-email:click");
7
+ } } })], 1)]);
8
+ }, i = [], a = /* @__PURE__ */ n(
7
9
  o,
8
- n,
9
- a,
10
+ s,
11
+ i,
10
12
  !1,
11
13
  null,
12
14
  null
13
15
  );
14
- const c = _.exports;
16
+ const d = a.exports;
15
17
  export {
16
- c as default
18
+ d as default
17
19
  };
@@ -1,20 +1,21 @@
1
- import { defineComponent as n, ref as m } from "vue";
1
+ import { defineComponent as i, ref as n } from "vue";
2
2
  import { InContainer as a } from "@useinsider/design-system-vue";
3
- import f from "./LeftSlot.vue.js";
4
- import p from "./MiddleSlot.vue.js";
5
- import i from "./RightSlot.vue.js";
6
- const c = /* @__PURE__ */ n({
3
+ import l from "./LeftSlot.vue.js";
4
+ import f from "./MiddleSlot.vue.js";
5
+ import p from "./RightSlot.vue.js";
6
+ const h = /* @__PURE__ */ i({
7
7
  __name: "HeaderWrapper",
8
- setup(l, { expose: r }) {
9
- const e = m(null);
10
- return r({
11
- handleSave: (t) => {
12
- var o;
13
- return (o = e.value) == null ? void 0 : o.handleSave(t);
8
+ emits: ["test-email:click"],
9
+ setup(s, { expose: o, emit: r }) {
10
+ const e = n(null);
11
+ return o({
12
+ handleSave: (m) => {
13
+ var t;
14
+ return (t = e.value) == null ? void 0 : t.handleSave(m);
14
15
  }
15
- }), { __sfc: !0, rightSlotRef: e, InContainer: a, LeftSlot: f, MiddleSlot: p, RightSlot: i };
16
+ }), { __sfc: !0, rightSlotRef: e, emit: r, InContainer: a, LeftSlot: l, MiddleSlot: f, RightSlot: p };
16
17
  }
17
18
  });
18
19
  export {
19
- c as default
20
+ h as default
20
21
  };
@@ -10,7 +10,7 @@ var n = function() {
10
10
  a,
11
11
  !1,
12
12
  null,
13
- "244e7935"
13
+ "0502bceb"
14
14
  );
15
15
  const p = i.exports;
16
16
  export {
@@ -1,29 +1,29 @@
1
1
  import { defineComponent as c, computed as a } from "vue";
2
- import { useBack as m } from "../../../composables/useGuidoActions.js";
3
- import { usePartner as u } from "../../../composables/usePartner.js";
4
- import { usePreviewMode as p } from "../../../composables/usePreviewMode.js";
5
- import { useTranslations as f } from "../../../composables/useTranslations.js";
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";
5
+ import { useTranslations as p } from "../../../composables/useTranslations.js";
6
6
  import { useVersionHistoryApi as d } from "../../../composables/useVersionHistoryApi.js";
7
7
  import { useEditorStore as l } from "../../../stores/editor.js";
8
8
  import { InButtonV2 as k } from "@useinsider/design-system-vue";
9
- import b from "./version-history/RestoreButton.vue.js";
10
- const h = /* @__PURE__ */ c({
9
+ import B from "./version-history/RestoreButton.vue.js";
10
+ const P = /* @__PURE__ */ c({
11
11
  __name: "LeftSlot",
12
- setup(_) {
13
- const e = l(), r = m(), { closeVersionHistory: t } = d(), { closePreviewMode: i } = p(), { isUnsubscribePages: s } = u(), o = f(), n = a(() => e.isVersionHistoryOpen || e.isPreviewModeOpen ? o("email-editor.back-to-editor") : s() ? o("email-editor.back-to-unsubscribe-pages") : o("email-editor.back-to-design"));
14
- return { __sfc: !0, editorStore: e, handleBack: r, closeVersionHistory: t, closePreviewMode: i, isUnsubscribePages: s, trans: o, backButtonLabel: n, handleBackClick: () => {
15
- if (e.isVersionHistoryOpen) {
16
- t();
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: () => {
15
+ if (o.isVersionHistoryOpen) {
16
+ i();
17
17
  return;
18
18
  }
19
- if (e.isPreviewModeOpen) {
20
- i();
19
+ if (o.isPreviewModeOpen) {
20
+ n();
21
21
  return;
22
22
  }
23
23
  r();
24
- }, InButtonV2: k, RestoreButton: b };
24
+ }, InButtonV2: k, RestoreButton: B };
25
25
  }
26
26
  });
27
27
  export {
28
- h as default
28
+ P as default
29
29
  };
@@ -1,20 +1,22 @@
1
- import n from "./RightSlot.vue2.js";
2
- import a from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var l = function() {
4
- var o, i;
1
+ import l from "./RightSlot.vue2.js";
2
+ import r from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var u = function() {
4
+ var o, i, n;
5
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(), t.isUnsubscribePages() ? s._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) {
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: function(a) {
7
+ return t.emit("test-email:click");
8
+ } } }) : 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(a) {
7
9
  return t.handleSave(!1);
8
10
  } } })], 1);
9
- }, r = [], u = /* @__PURE__ */ a(
10
- n,
11
+ }, d = [], p = /* @__PURE__ */ r(
11
12
  l,
12
- r,
13
+ u,
14
+ d,
13
15
  !1,
14
16
  null,
15
17
  null
16
18
  );
17
- const g = u.exports;
19
+ const f = p.exports;
18
20
  export {
19
- g as default
21
+ f as default
20
22
  };
@@ -1,18 +1,18 @@
1
- import { defineComponent as H, ref as l, computed as _ } from "vue";
1
+ import { defineComponent as H, ref as p, computed as _ } from "vue";
2
2
  import { useConfig as h } from "../../../composables/useConfig.js";
3
3
  import { useExport as V } from "../../../composables/useExport.js";
4
- import { usePartner as x } from "../../../composables/usePartner.js";
5
- import { useSave as w } from "../../../composables/useSave.js";
6
- import { useTranslations as T } from "../../../composables/useTranslations.js";
7
- import { useVersionHistoryApi as E } from "../../../composables/useVersionHistoryApi.js";
8
- import { useEditorStore as O } from "../../../stores/editor.js";
9
- import { getTooltipOptions as A } from "../../../utils/tooltipUtils.js";
10
- import { InButtonV2 as b } from "@useinsider/design-system-vue";
4
+ import { useSave as x } from "../../../composables/useSave.js";
5
+ import { useTranslations as w } from "../../../composables/useTranslations.js";
6
+ import { useVersionHistoryApi as T } from "../../../composables/useVersionHistoryApi.js";
7
+ import { useEditorStore as E } from "../../../stores/editor.js";
8
+ import { getTooltipOptions as O } from "../../../utils/tooltipUtils.js";
9
+ import { InButtonV2 as A } from "@useinsider/design-system-vue";
11
10
  const F = /* @__PURE__ */ H({
12
11
  __name: "RightSlot",
13
- setup(C, { expose: m }) {
14
- const { config: u } = h(), { exportHtml: r } = V(), { save: n } = w(), { openVersionHistory: i, closeVersionHistory: a } = E(), { isUnsubscribePages: c } = x(), o = O(), t = T(), e = l(!1), s = l(!1), f = () => {
15
- if (o.isVersionHistoryOpen) {
12
+ emits: ["test-email:click"],
13
+ setup(C, { expose: m, emit: c }) {
14
+ const { config: u } = h(), { exportHtml: r } = V(), { save: n } = x(), { openVersionHistory: i, closeVersionHistory: a } = T(), t = E(), o = w(), e = p(!1), s = p(!1), f = () => {
15
+ if (t.isVersionHistoryOpen) {
16
16
  a();
17
17
  return;
18
18
  }
@@ -20,15 +20,15 @@ const F = /* @__PURE__ */ H({
20
20
  }, v = async () => {
21
21
  e.value = !0, await r(), e.value = !1;
22
22
  }, d = () => {
23
- o.isSaveAsTemplateDrawerOpen = !0;
24
- }, y = _(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), p = async (S) => {
25
- s.value = !0, o.loadingStatus = !0;
23
+ t.isSaveAsTemplateDrawerOpen = !0;
24
+ }, y = _(() => t.isVersionHistoryOpen ? o("newsletter.close-version-history") : o("newsletter.version-history")), l = async (S) => {
25
+ s.value = !0, t.loadingStatus = !0;
26
26
  const g = await n(S);
27
- return s.value = !1, o.loadingStatus = !1, g;
27
+ return s.value = !1, t.loadingStatus = !1, g;
28
28
  };
29
29
  return m({
30
- handleSave: p
31
- }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, isUnsubscribePages: c, editorStore: o, trans: t, isExporting: e, isSaving: s, handleVersionHistory: f, handleExport: v, handleSaveAs: d, versionHistoryTooltipText: y, handleSave: p, getTooltipOptions: A, InButtonV2: b };
30
+ handleSave: l
31
+ }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: t, trans: o, isExporting: e, isSaving: s, emit: c, handleVersionHistory: f, handleExport: v, handleSaveAs: d, versionHistoryTooltipText: y, handleSave: l, getTooltipOptions: O, InButtonV2: A };
32
32
  }
33
33
  });
34
34
  export {
@@ -1,17 +1,17 @@
1
- import s from "./NewVersionPopup.vue2.js";
1
+ import t from "./NewVersionPopup.vue2.js";
2
2
  import n from "../../../_virtual/_plugin-vue2_normalizer.js";
3
- var r = function() {
4
- var e = this, t = e._self._c, o = e._self._setupProxy;
5
- return o.isVisible ? t(o.WpModal, { attrs: { id: "guido__new-version-popup", "close-on-outside-click": !1, "footer-button-options": o.footerButtonOptions, title: o.trans("email-editor.onboarding-title") }, on: { close: o.handleClose, "primary-action": o.handleDiscoverNow, "secondary-action": o.handleRemindLater } }, [t("div", { staticClass: "d-f f-d-c" }, [t("img", { staticClass: "w-1 h-1 d-b p-e-n mb-5", attrs: { src: o.onboardingImageSvg } }), t("p", { staticClass: "f-s-2 f-w-400", domProps: { innerHTML: e._s(o.trans("email-editor.onboarding-description")) } })])]) : e._e();
6
- }, i = [], a = /* @__PURE__ */ n(
7
- s,
8
- r,
3
+ var i = function() {
4
+ var e = this, s = e._self._c, o = e._self._setupProxy;
5
+ return o.isVisible ? s(o.WpModal, { attrs: { id: "guido__new-version-popup", size: "medium", "close-on-outside-click": !1, "footer-button-options": o.footerButtonOptions, title: o.popupTitle }, on: { close: o.handleClose, "primary-action": o.handleDiscoverNow, "secondary-action": o.handleRemindLater } }, [s("div", { staticClass: "d-f f-d-c" }, [s("img", { staticClass: "w-1 h-1 d-b p-e-n mb-5", attrs: { src: o.onboardingImageSvg } }), s("p", { staticClass: "f-s-2 f-w-400", domProps: { innerHTML: e._s(o.popupDescription) } })])]) : e._e();
6
+ }, r = [], a = /* @__PURE__ */ n(
7
+ t,
9
8
  i,
9
+ r,
10
10
  !1,
11
11
  null,
12
12
  null
13
13
  );
14
- const p = a.exports;
14
+ const _ = a.exports;
15
15
  export {
16
- p as default
16
+ _ as default
17
17
  };
@@ -1,30 +1,43 @@
1
- import { defineComponent as s, ref as r } from "vue";
2
- import a from "../../wrappers/WpModal.vue.js";
3
- import { useTranslations as i } from "../../../composables/useTranslations.js";
4
- import l from "../../../static/assets/onboarding-img.svg.js";
5
- import { useOnboardingStore as m } from "../../../stores/onboarding.js";
6
- const w = /* @__PURE__ */ s({
1
+ import { defineComponent as g, ref as b, computed as o } from "vue";
2
+ import v from "../../wrappers/WpModal.vue.js";
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({
7
10
  __name: "NewVersionPopup",
8
- setup(p) {
9
- const n = i(), e = m(), o = r(!0), t = r({
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(() => ({
10
21
  primaryButton: {
11
22
  type: "primary",
12
- labelText: n("left-menu.discover-now")
23
+ labelText: e("left-menu.discover-now")
13
24
  },
14
25
  secondaryButton: {
15
26
  type: "subtle-primary",
16
- labelText: n("products.remind-me-later")
27
+ labelText: u.value
17
28
  }
18
- });
19
- return { __sfc: !0, trans: n, onboardingStore: e, isVisible: o, footerButtonOptions: t, handleDiscoverNow: () => {
20
- e.onDiscoverNowClicked(), o.value = !1;
29
+ })), r = () => {
30
+ s.value = !1, a("onboarding-finished");
31
+ };
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: () => {
33
+ t.onDiscoverNowClicked(), r();
21
34
  }, handleRemindLater: () => {
22
- e.onRemindMeLater(), o.value = !1;
35
+ t.onRemindMeLater(), r();
23
36
  }, handleClose: () => {
24
- e.onNewVersionPopupClose(), o.value = !1;
25
- }, WpModal: a, onboardingImageSvg: l };
37
+ t.onNewVersionPopupClose(), r();
38
+ }, WpModal: v, onboardingImageSvg: y };
26
39
  }
27
40
  });
28
41
  export {
29
- w as default
42
+ I as default
30
43
  };
@@ -1,19 +1,21 @@
1
- import o from "./OnboardingWrapper.vue2.js";
2
- import _ from "../../../_virtual/_plugin-vue2_normalizer.js";
1
+ import t from "./OnboardingWrapper.vue2.js";
2
+ import i from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var s = function() {
4
- var n = this, e = n._self._c, t = n._self._setupProxy;
5
- return e("div", n._l(t.visibleOnboardings, function(r) {
6
- return e(r.component, { key: r.type, tag: "component" });
4
+ var n = this, e = n._self._c, r = n._self._setupProxy;
5
+ return e("div", n._l(r.visibleOnboardings, function(o) {
6
+ return e(o.component, { key: o.type, tag: "component", on: { "onboarding-finished": function(p) {
7
+ return r.emit("onboarding-finished");
8
+ } } });
7
9
  }), 1);
8
- }, a = [], p = /* @__PURE__ */ _(
9
- o,
10
+ }, _ = [], a = /* @__PURE__ */ i(
11
+ t,
10
12
  s,
11
- a,
13
+ _,
12
14
  !1,
13
15
  null,
14
16
  null
15
17
  );
16
- const m = p.exports;
18
+ const d = a.exports;
17
19
  export {
18
- m as default
20
+ d as default
19
21
  };