@useinsider/guido 3.18.3-beta.ec88281 → 3.19.0-beta.f02eaa1

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 (63) hide show
  1. package/README.md +41 -3
  2. package/dist/@types/config/schemas.js +59 -51
  3. package/dist/components/Guido.vue.js +4 -4
  4. package/dist/components/Guido.vue2.js +55 -53
  5. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +7 -7
  6. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +53 -49
  7. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js +18 -0
  8. package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue2.js +25 -0
  9. package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +24 -22
  10. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +28 -24
  11. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.js +21 -0
  12. package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue2.js +46 -0
  13. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +21 -0
  14. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +46 -0
  15. package/dist/composables/useCustomInterfaceAppearance.js +46 -42
  16. package/dist/composables/useGuidoStateBridge.js +29 -24
  17. package/dist/composables/useLegacyStrategyConversion.js +61 -0
  18. package/dist/composables/useStripo.js +7 -7
  19. package/dist/enums/extensions/recommendationBlock.js +40 -31
  20. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +4 -4
  21. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +77 -76
  22. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +72 -28
  23. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +45 -44
  24. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +6 -3
  25. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +110 -46
  26. package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.js +42 -0
  27. package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +7 -7
  28. package/dist/guido.css +1 -1
  29. package/dist/library.js +15 -13
  30. package/dist/package.json.js +1 -1
  31. package/dist/public/editorState.js +4 -0
  32. package/dist/services/recommendationApi.js +46 -37
  33. package/dist/src/@types/config/schemas.d.ts +16 -0
  34. package/dist/src/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.d.ts +2 -0
  35. package/dist/src/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.d.ts +2 -0
  36. package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +2 -0
  37. package/dist/src/composables/useConfig.d.ts +4 -0
  38. package/dist/src/composables/useGuidoStateBridge.d.ts +11 -7
  39. package/dist/src/composables/useLegacyStrategyConversion.d.ts +3 -0
  40. package/dist/src/enums/extensions/recommendationBlock.d.ts +5 -1
  41. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +2 -0
  42. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +4 -0
  43. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +70 -1
  44. package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.d.ts +32 -0
  45. package/dist/src/library.d.ts +2 -0
  46. package/dist/src/public/editorState.d.ts +14 -0
  47. package/dist/src/public/trackingIds.d.ts +6 -2
  48. package/dist/src/services/recommendationApi.d.ts +2 -1
  49. package/dist/src/stores/config.d.ts +322 -0
  50. package/dist/src/stores/editor.d.ts +25 -0
  51. package/dist/src/stores/guido-email-editor.d.ts +27 -27
  52. package/dist/src/stores/onboarding.d.ts +808 -10
  53. package/dist/src/utils/liquidDynamicContent.d.ts +20 -0
  54. package/dist/static/assets/icons/filled-arrow-rising.svg.js +5 -0
  55. package/dist/static/assets/icons/line-info.svg.js +5 -0
  56. package/dist/static/styles/components/recommendation-strategy.css.js +70 -5
  57. package/dist/stores/config.js +74 -60
  58. package/dist/stores/editor.js +4 -0
  59. package/dist/stores/guido-email-editor.js +0 -4
  60. package/dist/stores/onboarding.js +46 -36
  61. package/dist/utils/genericUtil.js +64 -61
  62. package/dist/utils/liquidDynamicContent.js +15 -0
  63. package/package.json +10 -6
@@ -1,48 +1,52 @@
1
- import { defineComponent as v, defineAsyncComponent as y, ref as u, computed as l, watch as O } from "vue";
1
+ import { defineComponent as E, defineAsyncComponent as S, ref as T, computed as o, watch as x } from "vue";
2
2
  import "@useinsider/design-system-organisms/style";
3
- import { useToaster as x } from "../../../../composables/useToaster.js";
4
- import { useTranslations as A } from "../../../../composables/useTranslations.js";
5
- import { DOTTED_DATE_LOCALE as E } from "../../../../enums/date.js";
6
- import { URLS as h } from "../../../../enums/extensions/recommendationBlock.js";
7
- import { ToasterTypeOptions as m } from "../../../../enums/toaster.js";
8
- import { useRecommendationExtensionStore as C } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
9
- import B from "./StrategyInfoBoxContent.vue.js";
10
- import { formatShortDate as I } from "../../../../utils/dateUtil.js";
11
- import { asText as f } from "../../../../utils/genericUtil.js";
12
- import { escapeHtml as N } from "../../../../utils/htmlEscape.js";
13
- import { InSkeleton as b } from "@useinsider/design-system-vue";
14
- const W = /* @__PURE__ */ v({
3
+ import { useToaster as h } from "../../../../composables/useToaster.js";
4
+ import { useTranslations as C } from "../../../../composables/useTranslations.js";
5
+ import { DOTTED_DATE_LOCALE as B } from "../../../../enums/date.js";
6
+ import { URLS as L } from "../../../../enums/extensions/recommendationBlock.js";
7
+ import { ToasterTypeOptions as d } from "../../../../enums/toaster.js";
8
+ import { useRecommendationExtensionStore as I } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
9
+ import N from "./StrategyInfoBoxContent.vue.js";
10
+ import { formatShortDate as k } from "../../../../utils/dateUtil.js";
11
+ import { asText as _ } from "../../../../utils/genericUtil.js";
12
+ import { escapeHtml as b } from "../../../../utils/htmlEscape.js";
13
+ import { InSkeleton as P } from "@useinsider/design-system-vue";
14
+ const Z = /* @__PURE__ */ E({
15
15
  __name: "AssignStrategyDrawer",
16
- setup(k) {
16
+ setup(U) {
17
17
  const c = () => import("@useinsider/design-system-organisms"), g = (t, r) => ({
18
- render: (a) => a(b, { props: { sizing: { width: t, height: r } } })
19
- }), S = y({
18
+ render: (s) => s(P, { props: { sizing: { width: t, height: r } } })
19
+ }), v = S({
20
20
  loader: async () => (await c()).OrgStrategyDetailModal,
21
21
  loadingComponent: g(480, 240),
22
22
  delay: 0
23
- }), T = y({
23
+ }), D = S({
24
24
  loader: async () => (await c()).OrgStrategyDropdown,
25
25
  loadingComponent: g(240, 42),
26
26
  delay: 0
27
- }), o = A(), e = C(), { showToaster: s } = x(), n = u(null), i = u(!1), _ = l(() => e.assignStrategyDrawerStatus ? o("email-editor.assign-strategy-description", { url: h.RECOMMENDATION_STRATEGIES_PANEL_PATH }) : "");
28
- O(() => e.assignStrategyDrawerStatus, (t) => {
27
+ }), a = C(), e = I(), { showToaster: n } = h(), i = T(null), m = "legacy", l = T(!1), w = o(() => e.assignStrategyDrawerStatus ? a("email-editor.assign-strategy-description", { url: L.RECOMMENDATION_STRATEGIES_PANEL_PATH }) : "");
28
+ x(() => e.assignStrategyDrawerStatus, (t) => {
29
29
  if (!t)
30
30
  return;
31
31
  const { strategyId: r } = e.recommendationConfigs;
32
- n.value = r || null, i.value = !1, e.fetchStrategies().catch(() => {
33
- s({
34
- type: m.Error,
35
- message: o("discovery-strategy.error-description")
32
+ i.value = r || (e.isLegacyStrategyBlock ? m : null), l.value = !1, e.fetchStrategies().catch(() => {
33
+ n({
34
+ type: d.Error,
35
+ message: a("discovery-strategy.error-description")
36
36
  });
37
37
  });
38
38
  });
39
- const p = (t) => {
40
- const r = f(t.updated_at || t.created_at);
39
+ const y = (t) => {
40
+ const r = _(t.updated_at || t.created_at);
41
41
  if (!r)
42
42
  return "";
43
- const a = I(r, E);
44
- return o("recommendation-strategy.last-updated-on", { value: a });
45
- }, D = l(() => e.strategies.map((t) => ({
43
+ const s = k(r, B);
44
+ return a("recommendation-strategy.last-updated-on", { value: s });
45
+ }, u = o(() => ({
46
+ text: a("ds-steps.legacy-strategy"),
47
+ value: m,
48
+ hidden: !0
49
+ })), p = o(() => e.strategies.map((t) => ({
46
50
  text: t.name,
47
51
  value: t.strategy_id,
48
52
  infoBoxProps: {
@@ -50,57 +54,57 @@ const W = /* @__PURE__ */ v({
50
54
  theme: "light",
51
55
  variant: "information",
52
56
  className: "assign-strategy-info-box",
53
- titleText: N(f(t.name)),
57
+ titleText: b(_(t.name)),
54
58
  descriptionStatus: !0,
55
- descriptionText: p(t),
56
- slot: B,
59
+ descriptionText: y(t),
60
+ slot: N,
57
61
  slotProps: { strategy: t }
58
62
  }
59
- }))), d = l(() => {
60
- const t = e.strategies.find((r) => String(r.strategy_id) === String(n.value ?? ""));
63
+ }))), O = o(() => e.isLegacyStrategyBlock ? [u.value, ...p.value] : p.value), f = o(() => {
64
+ const t = e.strategies.find((r) => String(r.strategy_id) === String(i.value ?? ""));
61
65
  return t ? { ...t, fallback_config: null } : null;
62
- }), w = l(() => ({
66
+ }), A = o(() => ({
63
67
  primaryButton: {
64
68
  styling: "solid",
65
69
  type: "primary",
66
- labelText: o("products.assign-btn")
70
+ labelText: a("products.assign-btn")
67
71
  },
68
72
  cancelOrBackButton: {
69
73
  styling: "ghost",
70
74
  type: "secondary",
71
- labelText: o("products.cancel")
75
+ labelText: a("products.cancel")
72
76
  }
73
77
  }));
74
- return { __sfc: !0, loadOrganisms: c, skeleton: g, OrgStrategyDetailModal: S, OrgStrategyDropdown: T, trans: o, store: e, showToaster: s, selectedStrategyId: n, showSelectionError: i, drawerDescription: _, lastUpdatedText: p, strategyOptions: D, selectedStrategy: d, footerButtonGroupOptions: w, closeDrawer: () => {
78
+ return { __sfc: !0, loadOrganisms: c, skeleton: g, OrgStrategyDetailModal: v, OrgStrategyDropdown: D, trans: a, store: e, showToaster: n, selectedStrategyId: i, LEGACY_OPTION_VALUE: m, showSelectionError: l, drawerDescription: w, lastUpdatedText: y, legacyStrategyOption: u, remoteStrategyOptions: p, strategyOptions: O, selectedStrategy: f, footerButtonGroupOptions: A, closeDrawer: () => {
75
79
  e.closeAssignStrategyDrawer();
76
80
  }, assignStrategy: async () => {
77
- const t = d.value;
81
+ const t = f.value;
78
82
  if (!t) {
79
- i.value = !0;
83
+ l.value = !0;
80
84
  return;
81
85
  }
82
86
  let r = "";
83
87
  try {
84
88
  r = await e.resolveStrategyUrlTemplate(t, e.recommendationConfigs.currencySettings.value);
85
- } catch (a) {
86
- console.error("[AssignStrategyDrawer] resolveStrategyUrlTemplate failed", a);
89
+ } catch (s) {
90
+ console.error("[AssignStrategyDrawer] resolveStrategyUrlTemplate failed", s);
87
91
  }
88
92
  if (!r) {
89
- s({
90
- type: m.Error,
91
- message: o("email-editor.strategy-assign-failed", { strategyName: t.name })
93
+ n({
94
+ type: d.Error,
95
+ message: a("email-editor.strategy-assign-failed", { strategyName: t.name })
92
96
  });
93
97
  return;
94
98
  }
95
- e.assignStrategy(t), s({
96
- type: m.Success,
97
- message: o("email-editor.strategy-assigned-success", { strategyName: t.name })
99
+ e.assignStrategy(t), n({
100
+ type: d.Success,
101
+ message: a("email-editor.strategy-assigned-success", { strategyName: t.name })
98
102
  }), e.closeAssignStrategyDrawer();
99
103
  }, onSelect: (t) => {
100
- n.value = t.value, i.value = !1;
104
+ i.value = t.value, l.value = !1;
101
105
  } };
102
106
  }
103
107
  });
104
108
  export {
105
- W as default
109
+ Z as default
106
110
  };
@@ -0,0 +1,18 @@
1
+ import s from "./LegacyStrategyUpdatedModal.vue2.js";
2
+ /* empty css */
3
+ import o from "../../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var r = function() {
5
+ var t = this, a = t._self._c, e = t._self._setupProxy;
6
+ return e.store.legacyStrategyUpdatedModalStatus ? a("div", { staticClass: "legacy-strategy-updated-modal" }, [a(e.WpModal, { attrs: { id: "guido__legacy-strategy-updated-modal", size: "small", "close-on-outside-click": !1, "footer-button-options": e.footerButtonOptions, title: e.trans("ds-steps.recommendation-strategy-migration-modal-title") }, on: { close: e.close, "primary-action": e.close } }, [a("p", [t._v(t._s(e.messageParts[0])), a("b", [t._v(t._s(e.strategyName))]), t._v(t._s(e.messageParts[1]))])])], 1) : t._e();
7
+ }, l = [], n = /* @__PURE__ */ o(
8
+ s,
9
+ r,
10
+ l,
11
+ !1,
12
+ null,
13
+ "da2225a1"
14
+ );
15
+ const m = n.exports;
16
+ export {
17
+ m as default
18
+ };
@@ -0,0 +1,25 @@
1
+ import { defineComponent as i, computed as s } from "vue";
2
+ import p from "../../../wrappers/WpModal.vue.js";
3
+ import { useTranslations as d } from "../../../../composables/useTranslations.js";
4
+ import { useRecommendationExtensionStore as g } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
+ const M = /* @__PURE__ */ i({
6
+ __name: "LegacyStrategyUpdatedModal",
7
+ setup(l) {
8
+ const e = d(), t = g(), n = s(() => ({
9
+ primaryButton: {
10
+ type: "primary",
11
+ labelText: e("action-builder.ok")
12
+ }
13
+ })), m = s(() => {
14
+ var r;
15
+ const { strategyId: a } = t.recommendationConfigs;
16
+ return ((r = t.assignedStrategy) == null ? void 0 : r.name) || `#${a}`;
17
+ }), o = "__STRATEGY_NAME__", c = s(() => e("email-editor.legacy-strategy-updated-message", { strategyName: o }).split(o));
18
+ return { __sfc: !0, trans: e, store: t, footerButtonOptions: n, strategyName: m, NAME_TOKEN: o, messageParts: c, close: () => {
19
+ t.closeLegacyStrategyUpdatedModal();
20
+ }, WpModal: p };
21
+ }
22
+ });
23
+ export {
24
+ M as default
25
+ };
@@ -1,15 +1,17 @@
1
- import { defineComponent as u, computed as n } from "vue";
2
- import y from "../../../wrappers/WpModal.vue.js";
3
- import { useToaster as f } from "../../../../composables/useToaster.js";
1
+ import { defineComponent as y, computed as n } from "vue";
2
+ import f from "../../../wrappers/WpModal.vue.js";
3
+ import { useToaster as u } from "../../../../composables/useToaster.js";
4
4
  import { useTranslations as _ } from "../../../../composables/useTranslations.js";
5
- import { ToasterTypeOptions as v } from "../../../../enums/toaster.js";
6
- import { useRecommendationExtensionStore as T } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
7
- import { commitBlockChangeOutsidePanel as h } from "../../../../extensions/Blocks/Recommendation/utils/nodeConfigWriter.js";
8
- import { escapeHtml as R } from "../../../../utils/htmlEscape.js";
9
- const P = /* @__PURE__ */ u({
5
+ import { ToasterTypeOptions as R } from "../../../../enums/toaster.js";
6
+ import "../../../../extensions/Blocks/Recommendation/constants/selectors.js";
7
+ import { CURRENT_CONFIG_VERSION as T } from "../../../../extensions/Blocks/Recommendation/constants/defaultConfig.js";
8
+ import { useRecommendationExtensionStore as v } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
9
+ import { commitBlockChangeOutsidePanel as N } from "../../../../extensions/Blocks/Recommendation/utils/nodeConfigWriter.js";
10
+ import { escapeHtml as S } from "../../../../utils/htmlEscape.js";
11
+ const w = /* @__PURE__ */ y({
10
12
  __name: "RemoveStrategyModal",
11
- setup(S) {
12
- const t = _(), e = T(), { showToaster: a } = f(), i = n(() => ({
13
+ setup(h) {
14
+ const t = _(), e = v(), { showToaster: a } = u(), i = n(() => ({
13
15
  cancelOrBackButton: {
14
16
  type: "secondary",
15
17
  labelText: t("products.cancel"),
@@ -20,38 +22,38 @@ const P = /* @__PURE__ */ u({
20
22
  labelText: t("discovery-strategy.remove")
21
23
  }
22
24
  })), m = n(() => {
23
- var o;
24
- const { strategyId: r } = e.recommendationConfigs;
25
- return ((o = e.assignedStrategy) == null ? void 0 : o.name) || `#${r}`;
25
+ var r;
26
+ const { strategyId: o } = e.recommendationConfigs;
27
+ return o ? ((r = e.assignedStrategy) == null ? void 0 : r.name) || `#${o}` : t("ds-steps.legacy-strategy");
26
28
  }), s = "__STRATEGY_NAME__", d = n(() => t("email-editor.remove-strategy-confirm-message", { strategyName: s }).split(s)), c = () => {
27
29
  e.closeRemoveStrategyModal();
28
30
  };
29
31
  return { __sfc: !0, trans: t, store: e, showToaster: a, footerButtonOptions: i, strategyName: m, NAME_TOKEN: s, messageParts: d, close: c, handleConfirm: async () => {
30
- const r = m.value, o = e.currentRecommendationId;
32
+ const o = m.value, r = e.currentRecommendationId;
31
33
  e.removeStrategy(), c();
32
34
  const { strategyId: l, size: g } = e.recommendationConfigs;
33
35
  if (a({
34
- type: v.Success,
36
+ type: R.Success,
35
37
  // The toast renders through a sanitizing v-html, so the name is escaped first.
36
38
  message: t("email-editor.strategy-removed-success", {
37
- strategyName: `<b>${R(r)}</b>`
39
+ strategyName: `<b>${S(o)}</b>`
38
40
  })
39
- }), o !== null) {
41
+ }), r !== null) {
40
42
  try {
41
43
  await e.fetchRecommendationProducts();
42
44
  } catch (p) {
43
45
  console.error("[RemoveStrategyModal] product refetch failed", p);
44
46
  }
45
- h(
46
- o,
47
- { strategyId: l, size: g },
47
+ N(
48
+ r,
49
+ { strategyId: l, size: g, configVersion: T },
48
50
  e.recommendationProducts,
49
51
  "Removed recommendation strategy"
50
52
  );
51
53
  }
52
- }, WpModal: y };
54
+ }, WpModal: f };
53
55
  }
54
56
  });
55
57
  export {
56
- P as default
58
+ w as default
57
59
  };
@@ -1,26 +1,30 @@
1
- import { defineComponent as b, computed as e, onMounted as O, watch as t } from "vue";
2
- import u from "./AMPOnboarding.vue.js";
3
- import v from "./GenericOnboarding.vue.js";
4
- import l from "./ItemsOnboarding.vue.js";
5
- import y from "./NewVersionPopup.vue.js";
6
- import S from "./TextBlockOnboarding.vue.js";
7
- import h from "./VersionHistoryOnboarding.vue.js";
8
- import { usePartner as w } from "../../../composables/usePartner.js";
9
- import { useEditorStore as P } from "../../../stores/editor.js";
10
- import { useOnboardingStore as _ } from "../../../stores/onboarding.js";
11
- import { usePreviewStore as A } from "../../../stores/preview.js";
12
- const G = /* @__PURE__ */ b({
1
+ import { defineComponent as f, computed as e, onMounted as O, watch as t } from "vue";
2
+ import y from "./AMPOnboarding.vue.js";
3
+ import u from "./GenericOnboarding.vue.js";
4
+ import v from "./ItemsOnboarding.vue.js";
5
+ import S from "./NewVersionPopup.vue.js";
6
+ import l from "./RecommendationLegacyStrategyOnboarding.vue.js";
7
+ import h from "./RecommendationStrategyOnboarding.vue.js";
8
+ import w from "./TextBlockOnboarding.vue.js";
9
+ import P from "./VersionHistoryOnboarding.vue.js";
10
+ import { usePartner as _ } from "../../../composables/usePartner.js";
11
+ import { useEditorStore as A } from "../../../stores/editor.js";
12
+ import { useOnboardingStore as H } from "../../../stores/onboarding.js";
13
+ import { usePreviewStore as M } from "../../../stores/preview.js";
14
+ const U = /* @__PURE__ */ f({
13
15
  __name: "OnboardingWrapper",
14
16
  emits: ["onboarding-finished"],
15
- setup(H, { emit: f }) {
16
- const o = _(), r = P(), s = A(), { isTestPartner: a } = w(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
17
- { type: "newVersionPopup", component: y },
18
- { type: "genericOnboarding", component: v },
19
- { type: "textBlockOnboarding", component: S },
20
- { type: "versionHistoryOnboarding", component: h },
21
- { type: "ampOnboarding", component: u },
22
- { type: "itemsOnboarding", component: l }
23
- ], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), g = e(() => m.filter((n) => c(n.type)));
17
+ setup(x, { emit: g }) {
18
+ const o = H(), r = A(), a = M(), { isTestPartner: s } = _(), m = e(() => r.isStripoInitialized), p = e(() => s()), d = [
19
+ { type: "newVersionPopup", component: S },
20
+ { type: "genericOnboarding", component: u },
21
+ { type: "textBlockOnboarding", component: w },
22
+ { type: "versionHistoryOnboarding", component: P },
23
+ { type: "ampOnboarding", component: y },
24
+ { type: "itemsOnboarding", component: v },
25
+ { type: "recommendationStrategyOnboarding", component: h },
26
+ { type: "recommendationLegacyStrategyOnboarding", component: l }
27
+ ], c = (n) => p.value || !m.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), b = e(() => d.filter((n) => c(n.type)));
24
28
  return O(async () => {
25
29
  await o.fetchUserModalState();
26
30
  }), t(
@@ -29,7 +33,7 @@ const G = /* @__PURE__ */ b({
29
33
  n && !i && o.shouldShowOnboarding("versionHistoryOnboarding") && o.start("versionHistoryOnboarding"), !n && i && o.isActive("versionHistoryOnboarding") && o.close("versionHistoryOnboarding");
30
34
  }
31
35
  ), t(
32
- () => s.emailFormat,
36
+ () => a.emailFormat,
33
37
  (n, i) => {
34
38
  i !== "AMP" && n === "AMP" && o.shouldShowOnboarding("ampOnboarding") && o.start("ampOnboarding");
35
39
  }
@@ -38,9 +42,9 @@ const G = /* @__PURE__ */ b({
38
42
  (n) => {
39
43
  !n && o.isActive("ampOnboarding") && o.close("ampOnboarding");
40
44
  }
41
- ), { __sfc: !0, emit: f, onboardingStore: o, editorStore: r, previewStore: s, isTestPartner: a, isStripoReady: p, isTestPartnerActive: d, onboardingConfigs: m, shouldShow: c, visibleOnboardings: g };
45
+ ), { __sfc: !0, emit: g, onboardingStore: o, editorStore: r, previewStore: a, isTestPartner: s, isStripoReady: m, isTestPartnerActive: p, onboardingConfigs: d, shouldShow: c, visibleOnboardings: b };
42
46
  }
43
47
  });
44
48
  export {
45
- G as default
49
+ U as default
46
50
  };
@@ -0,0 +1,21 @@
1
+ import s from "./RecommendationLegacyStrategyOnboarding.vue2.js";
2
+ /* empty css */
3
+ import c from "../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var d = function() {
5
+ var t, n, r, a, i;
6
+ var o = this, g = o._self._c, e = o._self._setupProxy;
7
+ return e.isVisible ? g(e.InOnboard, { key: "guido__recommendation-legacy-strategy-onboard", staticClass: "w-21-s p-a z-11", class: (t = e.onboardingStore.getRecommendationLegacyStrategyCurrentCard) == null ? void 0 : t.classes, attrs: { id: "guido__recommendation-legacy-strategy-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "left-position": (n = e.onboardingStore.getRecommendationLegacyStrategyCurrentCard) == null ? void 0 : n.left, "pages-config": e.onboardingStore.onboardings.recommendationLegacyStrategyOnboarding.config, "pointer-position": (r = e.onboardingStore.getRecommendationLegacyStrategyCurrentCard) == null ? void 0 : r.position, "right-position": (a = e.onboardingStore.getRecommendationLegacyStrategyCurrentCard) == null ? void 0 : a.right, "top-position": (i = e.onboardingStore.getRecommendationLegacyStrategyCurrentCard) == null ? void 0 : i.top }, on: { close: function(p) {
8
+ return e.onboardingStore.close(e.ONBOARDING_TYPE);
9
+ }, nextButtonClick: e.handleNext } }) : o._e();
10
+ }, m = [], l = /* @__PURE__ */ c(
11
+ s,
12
+ d,
13
+ m,
14
+ !1,
15
+ null,
16
+ "19d8cb42"
17
+ );
18
+ const f = l.exports;
19
+ export {
20
+ f as default
21
+ };
@@ -0,0 +1,46 @@
1
+ import { defineComponent as d, computed as g, watch as l } from "vue";
2
+ import { useRibbonOffset as b } from "../../../composables/useRibbonOffset.js";
3
+ import { useTranslations as p } from "../../../composables/useTranslations.js";
4
+ import { ACADEMY_LINKS as u } from "../../../enums/academy.js";
5
+ import { useOnboardingStore as y } from "../../../stores/onboarding.js";
6
+ import { InOnboard as f } from "@useinsider/design-system-vue";
7
+ const A = /* @__PURE__ */ d({
8
+ __name: "RecommendationLegacyStrategyOnboarding",
9
+ setup(O) {
10
+ const n = "recommendationLegacyStrategyOnboarding", o = p(), t = y(), { getTopPosition: i } = b(), r = `<a href="${u.EMAIL_RECOMMENDATION_BLOCK}" target="_blank" rel="noopener noreferrer">${o("action-builder.visit-academy")}</a>`, a = () => [
11
+ {
12
+ classes: "guido-recommendation-legacy-strategy-onboarding",
13
+ right: "40px",
14
+ top: i(485),
15
+ position: "Top Right",
16
+ title: o("email-editor.onboarding-recommendation-strategy-legacy-title"),
17
+ description: o("email-editor.onboarding-recommendation-strategy-legacy-description", {
18
+ academyLink: r
19
+ }),
20
+ imageSource: "",
21
+ backButtonClick: () => {
22
+ },
23
+ nextButtonType: "text",
24
+ nextButtonText: o("action-builder.ok"),
25
+ nextButtonClick: () => {
26
+ t.close(n);
27
+ }
28
+ }
29
+ ], s = g(
30
+ () => t.onboardings.recommendationLegacyStrategyOnboarding.config.length > 0 && t.onboardings.recommendationLegacyStrategyOnboarding.isActive
31
+ ), m = () => {
32
+ var e, c;
33
+ (c = (e = t.getRecommendationLegacyStrategyCurrentCard) == null ? void 0 : e.nextButtonClick) == null || c.call(e);
34
+ };
35
+ return l(
36
+ () => t.isActive(n),
37
+ (e) => {
38
+ e && t.setConfig(n, a());
39
+ },
40
+ { immediate: !0 }
41
+ ), { __sfc: !0, ONBOARDING_TYPE: n, trans: o, onboardingStore: t, getTopPosition: i, academyLink: r, buildOnboardingCards: a, isVisible: s, handleNext: m, InOnboard: f };
42
+ }
43
+ });
44
+ export {
45
+ A as default
46
+ };
@@ -0,0 +1,21 @@
1
+ import d from "./RecommendationStrategyOnboarding.vue2.js";
2
+ /* empty css */
3
+ import g from "../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var m = function() {
5
+ var e, n, r, a, i;
6
+ var t = this, s = t._self._c, o = t._self._setupProxy;
7
+ return o.isVisible ? s(o.InOnboard, { key: "guido__recommendation-strategy-onboard", staticClass: "w-21-s p-a z-11", class: (e = o.onboardingStore.getRecommendationStrategyCurrentCard) == null ? void 0 : e.classes, attrs: { id: "guido__recommendation-strategy-onboard", "is-multiple-page": "", visible: "", "image-source": "", title: "", "left-position": (n = o.onboardingStore.getRecommendationStrategyCurrentCard) == null ? void 0 : n.left, "pages-config": o.onboardingStore.onboardings.recommendationStrategyOnboarding.config, "pointer-position": (r = o.onboardingStore.getRecommendationStrategyCurrentCard) == null ? void 0 : r.position, "right-position": (a = o.onboardingStore.getRecommendationStrategyCurrentCard) == null ? void 0 : a.right, "top-position": (i = o.onboardingStore.getRecommendationStrategyCurrentCard) == null ? void 0 : i.top }, on: { close: function(p) {
8
+ return o.onboardingStore.close(o.ONBOARDING_TYPE);
9
+ }, nextButtonClick: o.handleNext } }) : t._e();
10
+ }, c = [], _ = /* @__PURE__ */ g(
11
+ d,
12
+ m,
13
+ c,
14
+ !1,
15
+ null,
16
+ "1f4a4044"
17
+ );
18
+ const S = _.exports;
19
+ export {
20
+ S as default
21
+ };
@@ -0,0 +1,46 @@
1
+ import { defineComponent as c, computed as g, watch as b } from "vue";
2
+ import { useRibbonOffset as p } from "../../../composables/useRibbonOffset.js";
3
+ import { useTranslations as u } from "../../../composables/useTranslations.js";
4
+ import { ACADEMY_LINKS as l } from "../../../enums/academy.js";
5
+ import { useOnboardingStore as f } from "../../../stores/onboarding.js";
6
+ import { InOnboard as O } from "@useinsider/design-system-vue";
7
+ const B = /* @__PURE__ */ c({
8
+ __name: "RecommendationStrategyOnboarding",
9
+ setup(_) {
10
+ const e = "recommendationStrategyOnboarding", n = u(), t = f(), { getTopPosition: i } = p(), r = `<a href="${l.EMAIL_RECOMMENDATION_BLOCK}" target="_blank" rel="noopener noreferrer">${n("action-builder.visit-academy")}</a>`, a = () => [
11
+ {
12
+ classes: "guido-recommendation-strategy-onboarding",
13
+ // Sits in the gap left of the settings panel and points at the strategy section, which
14
+ // starts 208px down: the panel header and its tab row are fixed chrome above it.
15
+ right: "426px",
16
+ top: i(208),
17
+ position: "Right Top",
18
+ title: n("email-editor.onboarding-recommendation-strategy-title"),
19
+ description: n("email-editor.onboarding-recommendation-strategy-description", {
20
+ academyLink: r
21
+ }),
22
+ imageSource: "",
23
+ backButtonClick: () => {
24
+ },
25
+ nextButtonType: "text",
26
+ nextButtonText: n("action-builder.ok"),
27
+ nextButtonClick: () => {
28
+ t.close(e);
29
+ }
30
+ }
31
+ ], m = g(() => t.onboardings.recommendationStrategyOnboarding.config.length > 0 && t.onboardings.recommendationStrategyOnboarding.isActive), d = () => {
32
+ var o, s;
33
+ (s = (o = t.getRecommendationStrategyCurrentCard) == null ? void 0 : o.nextButtonClick) == null || s.call(o);
34
+ };
35
+ return b(
36
+ () => t.isActive(e),
37
+ (o) => {
38
+ o && t.setConfig(e, a());
39
+ },
40
+ { immediate: !0 }
41
+ ), { __sfc: !0, ONBOARDING_TYPE: e, trans: n, onboardingStore: t, getTopPosition: i, academyLink: r, buildOnboardingCards: a, isVisible: m, handleNext: d, InOnboard: O };
42
+ }
43
+ });
44
+ export {
45
+ B as default
46
+ };
@@ -1,67 +1,71 @@
1
- import S from "../static/assets/icons/line-change.svg.js";
2
- import i from "../static/assets/icons/line-delete.svg.js";
3
- import n from "../static/assets/icons/line-plus.svg.js";
4
- import p from "../static/styles/base.css.js";
5
- import s from "../static/styles/components/alert-message.css.js";
6
- import C from "../static/styles/components/amp-block.css.js";
7
- import a from "../static/styles/components/base-input.css.js";
8
- import f from "../static/styles/components/button-group.css.js";
9
- import c from "../static/styles/components/button.css.js";
10
- import u from "../static/styles/components/combobox.css.js";
11
- import l from "../static/styles/components/counter.css.js";
12
- import d from "../static/styles/components/dropdown-menu.css.js";
1
+ import i from "../static/assets/icons/filled-arrow-rising.svg.js";
2
+ import n from "../static/assets/icons/line-change.svg.js";
3
+ import S from "../static/assets/icons/line-delete.svg.js";
4
+ import p from "../static/assets/icons/line-info.svg.js";
5
+ import s from "../static/assets/icons/line-plus.svg.js";
6
+ import f from "../static/styles/base.css.js";
7
+ import C from "../static/styles/components/alert-message.css.js";
8
+ import a from "../static/styles/components/amp-block.css.js";
9
+ import c from "../static/styles/components/base-input.css.js";
10
+ import l from "../static/styles/components/button-group.css.js";
11
+ import u from "../static/styles/components/button.css.js";
12
+ import d from "../static/styles/components/combobox.css.js";
13
+ import I from "../static/styles/components/counter.css.js";
14
+ import g from "../static/styles/components/dropdown-menu.css.js";
13
15
  import h from "../static/styles/components/loader.css.js";
14
- import g from "../static/styles/components/narrow-panel.css.js";
15
- import I from "../static/styles/components/popup.css.js";
16
- import w from "../static/styles/components/recommendation-strategy.css.js";
17
- import y from "../static/styles/components/switcher.css.js";
18
- import b from "../static/styles/components/tabs.css.js";
19
- import B from "../static/styles/components/tools.css.js";
20
- import $ from "../static/styles/components/version-history.css.js";
21
- import P from "../static/styles/components/wide-panel.css.js";
16
+ import w from "../static/styles/components/narrow-panel.css.js";
17
+ import $ from "../static/styles/components/popup.css.js";
18
+ import y from "../static/styles/components/recommendation-strategy.css.js";
19
+ import b from "../static/styles/components/switcher.css.js";
20
+ import B from "../static/styles/components/tabs.css.js";
21
+ import A from "../static/styles/components/tools.css.js";
22
+ import P from "../static/styles/components/version-history.css.js";
23
+ import R from "../static/styles/components/wide-panel.css.js";
22
24
  import x from "../static/styles/variables.css.js";
23
- function r(t, o) {
24
- return `--guido-icon-${t}: url("data:image/svg+xml,${encodeURIComponent(o.trim())}");`;
25
+ function o(t, r) {
26
+ return `--guido-icon-${t}: url("data:image/svg+xml,${encodeURIComponent(r.trim())}");`;
25
27
  }
26
- const A = `:host {
27
- ${r("line-change", S)}
28
- ${r("line-delete", i)}
29
- ${r("line-plus", n)}
30
- }`, R = [
28
+ const V = `:host {
29
+ ${o("line-change", n)}
30
+ ${o("line-delete", S)}
31
+ ${o("filled-arrow-rising", i)}
32
+ ${o("line-info", p)}
33
+ ${o("line-plus", s)}
34
+ }`, D = [
31
35
  x,
32
36
  // Must be on top
33
- A,
34
- p,
37
+ V,
38
+ f,
35
39
  // Must be on top
36
- s,
37
40
  C,
38
41
  a,
39
- f,
40
42
  c,
41
- u,
42
43
  l,
44
+ u,
43
45
  d,
44
- h,
45
- g,
46
46
  I,
47
- y,
47
+ g,
48
+ h,
49
+ w,
50
+ $,
48
51
  b,
49
52
  B,
50
- $,
53
+ A,
51
54
  P,
52
- w
55
+ R,
56
+ y
53
57
  // Last: overrides button.css / wide-panel.css defaults
54
58
  ].join(`
55
59
 
56
- `), Y = () => ({ importCss: () => {
57
- const o = new CSSStyleSheet();
58
- o.replaceSync(R);
60
+ `), ro = () => ({ importCss: () => {
61
+ const r = new CSSStyleSheet();
62
+ r.replaceSync(D);
59
63
  const e = document.querySelector("ui-editor");
60
64
  if (!e)
61
65
  return;
62
66
  const m = e.shadowRoot;
63
- m && (m.adoptedStyleSheets = [o]);
67
+ m && (m.adoptedStyleSheets = [r]);
64
68
  } });
65
69
  export {
66
- Y as useCustomInterfaceAppearance
70
+ ro as useCustomInterfaceAppearance
67
71
  };