@useinsider/guido 1.0.3-beta.4f1bcc0 → 1.0.3-beta.4f5545f

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 (115) hide show
  1. package/README.md +0 -4
  2. package/dist/components/Guido.vue.js +9 -11
  3. package/dist/components/Guido.vue2.js +14 -14
  4. package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
  5. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +17 -30
  6. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +10 -12
  7. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -19
  8. package/dist/config/migrator/index.js +6 -7
  9. package/dist/enums/defaults.js +3 -4
  10. package/dist/enums/onboarding.js +1 -2
  11. package/dist/extensions/Blocks/Recommendation/block.js +3 -6
  12. package/dist/extensions/Blocks/Recommendation/control.js +40 -69
  13. package/dist/extensions/Blocks/Recommendation/extension.js +7 -42
  14. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +22 -107
  15. package/dist/extensions/Blocks/Recommendation/template.js +200 -0
  16. package/dist/extensions/Blocks/common-control.js +43 -125
  17. package/dist/guido.css +1 -1
  18. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +100 -307
  19. package/dist/package.json.js +1 -1
  20. package/dist/src/@types/generic.d.ts +0 -6
  21. package/dist/src/components/Guido.vue.d.ts +0 -1
  22. package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +1 -3
  23. package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +1 -3
  24. package/dist/src/enums/onboarding.d.ts +0 -1
  25. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -1
  26. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -6
  27. package/dist/src/extensions/Blocks/Recommendation/template.d.ts +6 -0
  28. package/dist/src/extensions/Blocks/common-control.d.ts +0 -21
  29. package/dist/src/stores/config.d.ts +0 -1
  30. package/dist/src/utils/dateUtil.d.ts +0 -21
  31. package/dist/static/styles/customEditorStyle.css.js +0 -5
  32. package/dist/utils/dateUtil.js +3 -24
  33. package/package.json +3 -3
  34. package/dist/config/migrator/recommendationMigrator.js +0 -293
  35. package/dist/enums/date.js +0 -6
  36. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  37. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  38. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  39. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  40. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  41. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  42. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  43. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  44. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  45. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  46. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  47. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  48. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  49. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  50. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  51. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  52. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  53. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  54. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  55. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  56. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  57. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  58. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  59. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  60. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  61. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  62. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  63. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  64. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  65. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  66. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  67. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  68. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  69. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  70. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  71. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  72. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  73. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  74. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  75. package/dist/src/config/migrator/recommendationMigrator.d.ts +0 -1
  76. package/dist/src/enums/date.d.ts +0 -4
  77. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  78. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +0 -51
  79. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  80. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  81. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  82. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  83. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  84. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  85. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  86. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  87. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  88. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  89. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  90. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  91. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  92. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  93. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  94. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  95. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  96. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  97. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  98. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  99. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  100. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  101. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  102. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  103. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  104. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  105. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  106. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  107. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  108. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  109. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  110. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  111. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  112. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  113. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  114. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +0 -16
  115. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
package/README.md CHANGED
@@ -52,7 +52,6 @@ npm install @useinsider/guido
52
52
  ref="guidoEditor"
53
53
  :template-id="templateId"
54
54
  :user-id="userId"
55
- :migration-date="migrationDate"
56
55
  :guido-config="guidoConfig"
57
56
  :html="initialHtml"
58
57
  :css="initialCss"
@@ -75,7 +74,6 @@ export default {
75
74
  return {
76
75
  templateId: 'template-123',
77
76
  userId: 'user-456',
78
- migrationDate: 1699488000,
79
77
  initialHtml: '<p>Initial HTML content</p>',
80
78
  initialCss: 'p { color: #333; }',
81
79
  guidoConfig: {
@@ -147,7 +145,6 @@ export default {
147
145
  | `templateId` | `string` | ✅ | - | Unique identifier for the email template |
148
146
  | `userId` | `string` | ✅ | - | Unique identifier for the user |
149
147
  | `guidoConfig` | `GuidoConfig` | ✅ | - | Configuration object for the editor |
150
- | `migrationDate` | `number` | ✅ | - | Stripo migration date in Unix timestamp (seconds). Retrieved from backend `/partner-settings` endpoint as `migrationDate`. Used for onboarding process |
151
148
  | `partnerName` | `string` | ⚪ | From URL host | Partner identifier |
152
149
  | `productType` | `string` | ⚪ | From URL path | Product type identifier |
153
150
  | `username` | `string` | ⚪ | `'Guido User'` | Display name for the user |
@@ -164,7 +161,6 @@ export default {
164
161
  | `save:complete` | `Omit<Template, 'forceRecreate'>` | Fired when template is successfully saved |
165
162
  | `on-change` | void | It Fires once for managing leave modal etc. |
166
163
  | `ready` | void | Fired when the editor is ready and template is loaded |
167
- | `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
168
164
 
169
165
  ### Guido Exposed Methods
170
166
  ```typescript
@@ -1,20 +1,18 @@
1
- import i from "./Guido.vue2.js";
1
+ import a from "./Guido.vue2.js";
2
2
  /* empty css */
3
- import a from "../_virtual/_plugin-vue2_normalizer.js";
3
+ import i from "../_virtual/_plugin-vue2_normalizer.js";
4
4
  var t = function() {
5
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, { on: { "onboarding-finished": function(_) {
7
- return e.emit("onboarding:finished");
8
- } } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
9
- }, n = [], s = /* @__PURE__ */ a(
10
- i,
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,
11
9
  t,
12
- n,
10
+ s,
13
11
  !1,
14
12
  null,
15
- "3c910a93"
13
+ "e8d51dec"
16
14
  );
17
- const v = s.exports;
15
+ const l = d.exports;
18
16
  export {
19
- v as default
17
+ l as default
20
18
  };
@@ -15,8 +15,8 @@ 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
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";
18
+ import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
19
+ import ie 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", "onboarding:finished"],
34
+ emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready"],
35
35
  setup(_, { expose: L, emit: t }) {
36
36
  const u = _, k = 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 = ie(), g = te(), i = re(), N = ae(), n = U(() => i.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
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 = () => {
41
41
  var e;
42
42
  return (e = l.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
- templateId: s,
44
+ templateId: i,
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: d = y(),
51
+ productType: m = y(),
52
52
  messageType: S = J,
53
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 = {
54
+ } = u, d = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
+ s.templateId = i, window.GuidoConfig = ie(Q, C), window.GuidoConfig.partner = {
56
56
  partnerName: c,
57
- productType: d,
57
+ productType: m,
58
58
  messageType: S
59
59
  }, g.templateConfig = o;
60
60
  const { initPlugin: D } = j({
61
- emailId: s,
61
+ emailId: i,
62
62
  userId: b,
63
63
  username: w,
64
64
  partnerName: c,
65
- productType: d,
66
- preselectedDynamicContentList: m,
65
+ productType: m,
66
+ preselectedDynamicContentList: d,
67
67
  onReady: () => {
68
68
  console.debug("guido:ready"), t("ready");
69
69
  }
@@ -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 = m;
102
+ e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = d;
103
103
  } catch (e) {
104
104
  console.error("Failed to initialize Stripo editor:", e);
105
105
  }
@@ -120,7 +120,7 @@ const Ge = /* @__PURE__ */ R({
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: 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 };
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 };
124
124
  }
125
125
  });
126
126
  export {
@@ -1,17 +1,17 @@
1
- import t from "./NewVersionPopup.vue2.js";
1
+ import s from "./NewVersionPopup.vue2.js";
2
2
  import n from "../../../_virtual/_plugin-vue2_normalizer.js";
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,
8
- i,
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,
9
8
  r,
9
+ i,
10
10
  !1,
11
11
  null,
12
12
  null
13
13
  );
14
- const _ = a.exports;
14
+ const p = a.exports;
15
15
  export {
16
- _ as default
16
+ p as default
17
17
  };
@@ -1,43 +1,30 @@
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({
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({
10
7
  __name: "NewVersionPopup",
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(() => ({
8
+ setup(p) {
9
+ const n = i(), e = m(), o = r(!0), t = r({
21
10
  primaryButton: {
22
11
  type: "primary",
23
- labelText: e("left-menu.discover-now")
12
+ labelText: n("left-menu.discover-now")
24
13
  },
25
14
  secondaryButton: {
26
15
  type: "subtle-primary",
27
- labelText: u.value
16
+ labelText: n("products.remind-me-later")
28
17
  }
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();
18
+ });
19
+ return { __sfc: !0, trans: n, onboardingStore: e, isVisible: o, footerButtonOptions: t, handleDiscoverNow: () => {
20
+ e.onDiscoverNowClicked(), o.value = !1;
34
21
  }, handleRemindLater: () => {
35
- t.onRemindMeLater(), r();
22
+ e.onRemindMeLater(), o.value = !1;
36
23
  }, handleClose: () => {
37
- t.onNewVersionPopupClose(), r();
38
- }, WpModal: v, onboardingImageSvg: y };
24
+ e.onNewVersionPopupClose(), o.value = !1;
25
+ }, WpModal: a, onboardingImageSvg: l };
39
26
  }
40
27
  });
41
28
  export {
42
- I as default
29
+ w as default
43
30
  };
@@ -1,21 +1,19 @@
1
- import t from "./OnboardingWrapper.vue2.js";
2
- import i from "../../../_virtual/_plugin-vue2_normalizer.js";
1
+ import o from "./OnboardingWrapper.vue2.js";
2
+ import _ from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var s = function() {
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
- } } });
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" });
9
7
  }), 1);
10
- }, _ = [], a = /* @__PURE__ */ i(
11
- t,
8
+ }, a = [], p = /* @__PURE__ */ _(
9
+ o,
12
10
  s,
13
- _,
11
+ a,
14
12
  !1,
15
13
  null,
16
14
  null
17
15
  );
18
- const d = a.exports;
16
+ const m = p.exports;
19
17
  export {
20
- d as default
18
+ m as default
21
19
  };
@@ -1,25 +1,24 @@
1
- import { defineComponent as b, computed as e, onMounted as O, watch as t } from "vue";
2
- import { usePartner as u } from "../../../composables/usePartner.js";
3
- import { useEditorStore as v } from "../../../stores/editor.js";
4
- import { useOnboardingStore as l } from "../../../stores/onboarding.js";
5
- import { usePreviewStore as y } from "../../../stores/preview.js";
6
- import S from "./AMPOnboarding.vue.js";
7
- import h from "./GenericOnboarding.vue.js";
1
+ import { defineComponent as g, computed as e, onMounted as b, watch as t } from "vue";
2
+ import { usePartner as O } from "../../../composables/usePartner.js";
3
+ import { useEditorStore as u } from "../../../stores/editor.js";
4
+ import { useOnboardingStore as v } from "../../../stores/onboarding.js";
5
+ import { usePreviewStore as l } from "../../../stores/preview.js";
6
+ import y from "./AMPOnboarding.vue.js";
7
+ import S from "./GenericOnboarding.vue.js";
8
8
  import w from "./NewVersionPopup.vue.js";
9
9
  import P from "./TextBlockOnboarding.vue.js";
10
- import _ from "./VersionHistoryOnboarding.vue.js";
11
- const F = /* @__PURE__ */ b({
10
+ import h from "./VersionHistoryOnboarding.vue.js";
11
+ const E = /* @__PURE__ */ g({
12
12
  __name: "OnboardingWrapper",
13
- emits: ["onboarding-finished"],
14
- setup(A, { emit: f }) {
15
- const o = l(), r = v(), s = y(), { isTestPartner: a } = u(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
13
+ setup(_) {
14
+ const o = v(), r = u(), s = l(), { isTestPartner: a } = O(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
16
15
  { type: "newVersionPopup", component: w },
17
- { type: "genericOnboarding", component: h },
16
+ { type: "genericOnboarding", component: S },
18
17
  { type: "textBlockOnboarding", component: P },
19
- { type: "versionHistoryOnboarding", component: _ },
20
- { type: "ampOnboarding", component: S }
21
- ], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), g = e(() => m.filter((n) => c(n.type)));
22
- return O(async () => {
18
+ { type: "versionHistoryOnboarding", component: h },
19
+ { type: "ampOnboarding", component: y }
20
+ ], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), f = e(() => m.filter((n) => c(n.type)));
21
+ return b(async () => {
23
22
  await o.fetchUserModalState();
24
23
  }), t(
25
24
  () => r.isVersionHistoryOpen,
@@ -36,9 +35,9 @@ const F = /* @__PURE__ */ b({
36
35
  (n) => {
37
36
  !n && o.isActive("ampOnboarding") && o.close("ampOnboarding");
38
37
  }
39
- ), { __sfc: !0, emit: f, onboardingStore: o, editorStore: r, previewStore: s, isTestPartner: a, isStripoReady: p, isTestPartnerActive: d, onboardingConfigs: m, shouldShow: c, visibleOnboardings: g };
38
+ ), { __sfc: !0, onboardingStore: o, editorStore: r, previewStore: s, isTestPartner: a, isStripoReady: p, isTestPartnerActive: d, onboardingConfigs: m, shouldShow: c, visibleOnboardings: f };
40
39
  }
41
40
  });
42
41
  export {
43
- F as default
42
+ E as default
44
43
  };
@@ -1,12 +1,11 @@
1
- import { migrateCheckbox as m } from "./checkboxMigrator.js";
2
- import { migrateCouponBlock as o } from "./couponBlockMigrator.js";
1
+ import { migrateCheckbox as o } from "./checkboxMigrator.js";
2
+ import { migrateCouponBlock as m } from "./couponBlockMigrator.js";
3
3
  import { migrateRadioButton as i } from "./radioButtonMigrator.js";
4
- import { migrateRecommendation as e } from "./recommendationMigrator.js";
5
- import { migrateUnsubscribe as a } from "./unsubscribeMigrator.js";
6
- const s = async (t) => {
4
+ import { migrateUnsubscribe as e } from "./unsubscribeMigrator.js";
5
+ const c = async (t) => {
7
6
  let r = t;
8
- return r = m(r), r = i(r), r = await a(r), r = o(r), r = e(r), r;
7
+ return r = o(r), r = i(r), r = await e(r), r = m(r), r;
9
8
  };
10
9
  export {
11
- s as migrate
10
+ c as migrate
12
11
  };
@@ -1,6 +1,5 @@
1
1
  const a = {
2
2
  translationsPath: "window.trans.en",
3
- migrationDate: 1759696858,
4
3
  emailHeader: {
5
4
  senderName: "",
6
5
  subject: ""
@@ -17,7 +16,7 @@ const a = {
17
16
  }, t = {
18
17
  promotional: 1,
19
18
  transactional: 2
20
- }, e = "email", o = "Guido User", n = t.promotional, i = 2, s = {
19
+ }, e = "email", o = "Guido User", n = t.promotional, s = 2, i = {
21
20
  email: 60,
22
21
  architect: 49
23
22
  }, u = [
@@ -57,8 +56,8 @@ export {
57
56
  n as DefaultMessageType,
58
57
  e as DefaultProductType,
59
58
  o as DefaultUsername,
60
- i as EditorType,
61
- s as ProductIds,
59
+ s as EditorType,
60
+ i as ProductIds,
62
61
  u as TEST_PARTNER_LIST,
63
62
  t as TemplateTypes
64
63
  };
@@ -2,8 +2,7 @@ const e = [
2
2
  ".service-element.stacked-panel-item.ng-tns-c1014751574-3.level-bottom-0.ng-star-inserted",
3
3
  ".service-element.stacked-panel-item.ng-tns-c1014751574-3.level-bottom-1.ng-star-inserted",
4
4
  ".service-element.stacked-panel-item.ng-tns-c1014751574-3.level-bottom-2.ng-star-inserted"
5
- ], t = "https://academy.useinsider.com/docs/email-drag-drop-editor";
5
+ ];
6
6
  export {
7
- t as ACADEMY_LINK,
8
7
  e as SERVICE_HOVER_SELECTORS
9
8
  };
@@ -1,10 +1,7 @@
1
1
  import { Block as e, BlockCompositionType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { getDefaultTemplate as o } from "./templates/blockTemplate.js";
2
+ import { getDefaultTemplate as o } from "./template.js";
3
3
  const n = "recommendation-block";
4
- class m extends e {
5
- constructor() {
6
- super();
7
- }
4
+ class c extends e {
8
5
  getId() {
9
6
  return n;
10
7
  }
@@ -26,5 +23,5 @@ class m extends e {
26
23
  }
27
24
  export {
28
25
  n as BLOCK_ID,
29
- m as RecommendationBlock
26
+ c as RecommendationBlock
30
27
  };
@@ -1,14 +1,11 @@
1
1
  var _ = Object.defineProperty;
2
- var R = (s, n, e) => n in s ? _(s, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[n] = e;
3
- var r = (s, n, e) => R(s, typeof n != "symbol" ? n + "" : n, e);
4
- import { currencyDecimalCounts as l, currencyOperators as c, currencyLocationMaps as h } from "../../../enums/extensions/recommendationBlock.js";
5
- import { UEAttr as m, ModificationDescription as S } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
- import { CommonControl as g } from "../common-control.js";
7
- import { useRecommendationExtensionStore as O } from "./store/recommendation.js";
8
- import { prepareProductRows as p } from "./templates/blockTemplate.js";
9
- import { DEFAULT_CARD_COMPOSITION as C, getDefaultProducts as E } from "./templates/templateUtils.js";
10
- import { useDebounceFn as U } from "../../../node_modules/@vueuse/shared/index.js";
11
- const L = "ui-elements-recommendation-block", t = {
2
+ var R = (o, n, e) => n in o ? _(o, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[n] = e;
3
+ var r = (o, n, e) => R(o, typeof n != "symbol" ? n + "" : n, e);
4
+ import { currencyDecimalCounts as c, currencyOperators as a, currencyLocationMaps as l } from "../../../enums/extensions/recommendationBlock.js";
5
+ import { UEAttr as d } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
+ import { CommonControl as m } from "../common-control.js";
7
+ import { useRecommendationExtensionStore as S } from "./store/recommendation.js";
8
+ const g = "ui-elements-recommendation-block", t = {
12
9
  ALGORITHM: "strategy",
13
10
  PRODUCT_IDS: "productIds",
14
11
  LOCALE: "language",
@@ -24,21 +21,18 @@ const L = "ui-elements-recommendation-block", t = {
24
21
  SHUFFLE_PRODUCTS: "shuffleProducts",
25
22
  RESPONSIVE: "unresponsive"
26
23
  };
27
- class b extends g {
24
+ class p extends m {
28
25
  constructor() {
29
26
  super(...arguments);
30
- r(this, "store", O());
27
+ r(this, "store", S());
31
28
  r(this, "storeUnsubscription", () => {
32
29
  });
33
30
  r(this, "addFilterListener", () => {
34
31
  });
35
32
  r(this, "addFilterButton", null);
36
- r(this, "_debouncedRegenerateProductRows", U(() => {
37
- this._regenerateProductRows();
38
- }, 500));
39
33
  }
40
34
  getId() {
41
- return L;
35
+ return g;
42
36
  }
43
37
  getTemplate() {
44
38
  return `
@@ -84,22 +78,22 @@ class b extends g {
84
78
  });
85
79
  }
86
80
  _initializeSelectItems() {
87
- const { store: e } = this, o = e.getActivePredictiveAlgorithms, i = e.getLanguages, a = {
88
- [t.ALGORITHM]: o,
81
+ const { store: e } = this, s = e.getActivePredictiveAlgorithms, i = e.getLanguages, C = {
82
+ [t.ALGORITHM]: s,
89
83
  [t.LOCALE]: i,
90
84
  [t.CURRENCY]: e.currencyList,
91
- [t.CURRENCY_LOCATION]: h,
85
+ [t.CURRENCY_LOCATION]: l,
92
86
  [t.CURRENCY_SYMBOL]: e.getCurrencySymbolList,
93
- [t.CURRENCY_THOUSAND_SEPARATOR]: c,
94
- [t.CURRENCY_DECIMAL_SEPARATOR]: c,
95
- [t.CURRENCY_DECIMAL_COUNT]: l,
87
+ [t.CURRENCY_THOUSAND_SEPARATOR]: a,
88
+ [t.CURRENCY_DECIMAL_SEPARATOR]: a,
89
+ [t.CURRENCY_DECIMAL_COUNT]: c,
96
90
  [t.PRODUCT_COUNT]: Number(e.recommendationConfigs.size),
97
91
  [t.PRODUCT_IN_ROW]: e.recommendationConfigs.cardsInRow,
98
92
  [t.SHUFFLE_PRODUCTS]: e.recommendationConfigs.shuffleProducts,
99
93
  [t.RESPONSIVE]: !e.recommendationConfigs.unresponsive
100
94
  };
101
- Object.entries(a).forEach(([u, d]) => {
102
- this.api.setUIEAttribute(u, m.SELECTPICKER.items, d);
95
+ Object.entries(C).forEach(([u, h]) => {
96
+ this.api.setUIEAttribute(u, d.SELECTPICKER.items, h);
103
97
  });
104
98
  }
105
99
  _getAlgorithms() {
@@ -145,7 +139,7 @@ class b extends g {
145
139
  this._GuSelect({
146
140
  name: t.CURRENCY_LOCATION,
147
141
  placeholder: "Select Currency Location",
148
- options: h
142
+ options: l
149
143
  }),
150
144
  this._GuLabel({ text: "Currency Symbol" }),
151
145
  this._GuSelect({
@@ -157,19 +151,19 @@ class b extends g {
157
151
  this._GuSelect({
158
152
  name: t.CURRENCY_THOUSAND_SEPARATOR,
159
153
  placeholder: "Select Thousand Separator",
160
- options: c
154
+ options: a
161
155
  }),
162
156
  this._GuLabel({ text: "Decimal Separator" }),
163
157
  this._GuSelect({
164
158
  name: t.CURRENCY_DECIMAL_SEPARATOR,
165
159
  placeholder: "Select Decimal Separator",
166
- options: c
160
+ options: a
167
161
  }),
168
162
  this._GuLabel({ text: "Decimal Count" }),
169
163
  this._GuSelect({
170
164
  name: t.CURRENCY_DECIMAL_COUNT,
171
165
  placeholder: "Select Decimal Count",
172
- options: l
166
+ options: c
173
167
  })
174
168
  ])}
175
169
  `;
@@ -223,62 +217,39 @@ class b extends g {
223
217
  filterSelectionDrawerStatus: !0
224
218
  });
225
219
  }
226
- _onDataChange(e, o) {
227
- this.currentNode && (this.store.$patch({
220
+ _onDataChange(e, s) {
221
+ this.currentNode && this.store.$patch({
228
222
  recommendationConfigs: {
229
- [e]: o
223
+ [e]: s
230
224
  }
231
- }), this._debouncedRegenerateProductRows());
232
- }
233
- /**
234
- * Get the current card composition from block data attribute or use default
235
- */
236
- _getCardComposition() {
237
- if (!this.currentNode)
238
- return C;
239
- const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
240
- if (!e || !("getAttribute" in e))
241
- return C;
242
- const o = e.getAttribute("data-card-composition");
243
- return o ? o.split(",").filter(Boolean) : C;
244
- }
245
- _regenerateProductRows() {
246
- if (!this.currentNode || !("querySelector" in this.currentNode))
247
- return;
248
- const e = this.currentNode.querySelector(".ins-recommendation-product-container");
249
- if (!e) {
250
- console.error("Could not find container table for product rows");
251
- return;
252
- }
253
- const o = this.store.recommendationProducts.length > 0 ? this.store.recommendationProducts : E(), { cardsInRow: i } = this.store.recommendationConfigs, a = this._getCardComposition(), u = p(o, i, a);
254
- this.api.getDocumentModifier().modifyHtml(e).setInnerHtml(u).apply(new S("Updated product"));
225
+ });
255
226
  }
256
- _onCurrencyConfigChange(e, o) {
227
+ _onCurrencyConfigChange(e, s) {
257
228
  this.currentNode && this.store.$patch({
258
229
  recommendationConfigs: {
259
230
  currencySettings: {
260
- [e]: o
231
+ [e]: s
261
232
  }
262
233
  }
263
234
  });
264
235
  }
265
236
  _onCurrencyChange(e) {
266
- const [, o] = e.split(".");
237
+ const [, s] = e.split(".");
267
238
  this.store.$patch({
268
239
  recommendationConfigs: {
269
240
  currencySettings: {
270
- name: o,
271
- value: o
241
+ name: s,
242
+ value: s
272
243
  }
273
244
  }
274
245
  });
275
246
  }
276
247
  _setProductIdsVisibility() {
277
- const { recommendationConfigs: e } = this.store, o = e.strategy === "manualMerchandising";
278
- this.api.setVisibility(t.PRODUCT_IDS, o), this.api.setVisibility(`${t.PRODUCT_IDS}_label`, o);
248
+ const { recommendationConfigs: e } = this.store, s = e.strategy === "manualMerchandising";
249
+ this.api.setVisibility(t.PRODUCT_IDS, s), this.api.setVisibility(`${t.PRODUCT_IDS}_label`, s);
279
250
  }
280
251
  _listenToFormUpdates() {
281
- var o;
252
+ var s;
282
253
  this.api.onValueChanged(t.ALGORITHM, (i) => {
283
254
  this._onDataChange(t.ALGORITHM, i), this._setProductIdsVisibility();
284
255
  }), this.api.onValueChanged(t.PRODUCT_IDS, (i) => this._onDataChange(t.PRODUCT_IDS, i.split(",") || [])), this.api.onValueChanged(t.LOCALE, (i) => this._onDataChange(t.LOCALE, i)), this.api.onValueChanged(t.CURRENCY, (i) => this._onCurrencyChange(i)), [
@@ -288,19 +259,19 @@ class b extends g {
288
259
  t.CURRENCY_DECIMAL_SEPARATOR,
289
260
  t.CURRENCY_DECIMAL_COUNT
290
261
  ].forEach((i) => {
291
- this.api.onValueChanged(i, (a) => this._onCurrencyConfigChange(i, a));
292
- }), this.api.onValueChanged(t.PRODUCT_COUNT, (i) => this._onDataChange(t.PRODUCT_COUNT, i.toString())), this.api.onValueChanged(t.PRODUCT_IN_ROW, (i) => this._onDataChange(t.PRODUCT_IN_ROW, i)), this.api.onValueChanged(t.SHUFFLE_PRODUCTS, (i) => this._onDataChange(t.SHUFFLE_PRODUCTS, i)), this.api.onValueChanged(t.RESPONSIVE, (i) => this._onDataChange(t.RESPONSIVE, i)), this.addFilterListener = this._onFilterSelectClick.bind(this), this.addFilterButton = this.getContainer().querySelector("#guido__btn-add-filter"), (o = this.addFilterButton) == null || o.addEventListener("click", this.addFilterListener);
262
+ this.api.onValueChanged(i, (C) => this._onCurrencyConfigChange(i, C));
263
+ }), this.api.onValueChanged(t.PRODUCT_COUNT, (i) => this._onDataChange(t.PRODUCT_COUNT, i.toString())), this.api.onValueChanged(t.PRODUCT_IN_ROW, (i) => this._onDataChange(t.PRODUCT_IN_ROW, i)), this.api.onValueChanged(t.SHUFFLE_PRODUCTS, (i) => this._onDataChange(t.SHUFFLE_PRODUCTS, i)), this.api.onValueChanged(t.RESPONSIVE, (i) => this._onDataChange(t.RESPONSIVE, i)), this.addFilterListener = this._onFilterSelectClick.bind(this), this.addFilterButton = this.getContainer().querySelector("#guido__btn-add-filter"), (s = this.addFilterButton) == null || s.addEventListener("click", this.addFilterListener);
293
264
  }
294
265
  _listenStateUpdates() {
295
266
  this.storeUnsubscription = this.store.$subscribe((e) => {
296
267
  if ("payload" in e) {
297
- const o = e.payload.recommendationConfigs;
298
- o && (this.api.updateValues(o), this.store.fetchRecommendationProducts());
268
+ const s = e.payload.recommendationConfigs;
269
+ s && (this.api.updateValues(s), this.store.fetchRecommendationProducts());
299
270
  }
300
271
  });
301
272
  }
302
273
  }
303
274
  export {
304
- L as CONTROL_BLOCK_ID,
305
- b as RecommendationBlockControl
275
+ g as CONTROL_BLOCK_ID,
276
+ p as RecommendationBlockControl
306
277
  };