@useinsider/guido 3.18.0-beta.599df29 → 3.18.0-beta.88ff219

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 (27) hide show
  1. package/dist/components/Guido.vue.js +3 -3
  2. package/dist/components/Guido.vue2.js +78 -82
  3. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +13 -11
  4. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +70 -54
  5. package/dist/components/organisms/header/EditorActions.vue.js +1 -1
  6. package/dist/components/organisms/header/EditorActions.vue2.js +41 -54
  7. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +20 -18
  8. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +21 -0
  9. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +46 -0
  10. package/dist/composables/useActionsApi.js +67 -82
  11. package/dist/composables/useAutoSave.js +26 -31
  12. package/dist/composables/useGuidoStateBridge.js +31 -37
  13. package/dist/composables/useSave.js +39 -42
  14. package/dist/enums/extensions/recommendationBlock.js +36 -31
  15. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +35 -31
  16. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +129 -68
  17. package/dist/guido.css +1 -1
  18. package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +2 -0
  19. package/dist/src/enums/extensions/recommendationBlock.d.ts +2 -0
  20. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +1 -0
  21. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +49 -0
  22. package/dist/src/stores/onboarding.d.ts +377 -0
  23. package/dist/static/styles/components/recommendation-strategy.css.js +21 -4
  24. package/dist/stores/onboarding.js +41 -36
  25. package/package.json +1 -1
  26. package/dist/composables/useEditorLock.js +0 -20
  27. package/dist/src/composables/useEditorLock.d.ts +0 -10
@@ -12,9 +12,9 @@ var t = function() {
12
12
  s,
13
13
  !1,
14
14
  null,
15
- "050dfa52"
15
+ "04935ba3"
16
16
  );
17
- const f = n.exports;
17
+ const v = n.exports;
18
18
  export {
19
- f as default
19
+ v as default
20
20
  };
@@ -1,55 +1,54 @@
1
- import { defineComponent as ne, defineAsyncComponent as l, ref as O, computed as u, watch as P, onMounted as re, onUnmounted as se } from "vue";
2
- import { useCortexBlueprintBridge as ae } from "../composables/useCortexBlueprintBridge.js";
3
- import { useEditorLock as ie } from "../composables/useEditorLock.js";
4
- import { provideGuidoActions as ce } from "../composables/useGuidoActions.js";
5
- import { useGuidoStateBridge as de } from "../composables/useGuidoStateBridge.js";
6
- import { usePartner as me } from "../composables/usePartner.js";
7
- import { useStripo as le } from "../composables/useStripo.js";
8
- import { useTimerClone as ue } from "../composables/useTimerClone.js";
9
- import { migrate as x } from "../config/migrator/index.js";
10
- import { ModuleFolderDefaults as W } from "../enums/defaults.js";
11
- import { RIBBON_SELECTOR as pe } from "../enums/onboarding.js";
12
- import { useRecommendationExtensionStore as G } from "../extensions/Blocks/Recommendation/store/recommendation.js";
13
- import fe from "./organisms/AutoSaveController.vue.js";
14
- import ye from "./organisms/base/Toaster.vue.js";
15
- import ge from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
16
- import ve from "./organisms/header/HeaderWrapper.vue.js";
17
- import Se from "./organisms/LoadingWrapper.vue.js";
18
- import be from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
19
- import he from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
20
- import { useStripoApi as Ee } from "../services/stripoApi.js";
21
- import { useConfigStore as we } from "../stores/config.js";
22
- import { useDynamicContentStore as Ce } from "../stores/dynamic-content.js";
23
- import { useEditorStore as H } from "../stores/editor.js";
24
- import { usePreviewStore as De } from "../stores/preview.js";
25
- import { useTemplateStore as ke } from "../stores/template.js";
26
- import { useUnsubscribeStore as Te } from "../stores/unsubscribe.js";
27
- import { readTrackFloor as $ } from "../utils/linkTrackingIds.js";
28
- const et = /* @__PURE__ */ ne({
1
+ import { defineComponent as Z, defineAsyncComponent as l, ref as P, computed as u, watch as U, onMounted as ee, onUnmounted as te } from "vue";
2
+ import { useCortexBlueprintBridge as oe } from "../composables/useCortexBlueprintBridge.js";
3
+ import { provideGuidoActions as ne } from "../composables/useGuidoActions.js";
4
+ import { useGuidoStateBridge as re } from "../composables/useGuidoStateBridge.js";
5
+ import { usePartner as se } from "../composables/usePartner.js";
6
+ import { useStripo as ae } from "../composables/useStripo.js";
7
+ import { useTimerClone as ie } from "../composables/useTimerClone.js";
8
+ import { migrate as _ } from "../config/migrator/index.js";
9
+ import { ModuleFolderDefaults as N } from "../enums/defaults.js";
10
+ import { RIBBON_SELECTOR as ce } from "../enums/onboarding.js";
11
+ import { useRecommendationExtensionStore as h } from "../extensions/Blocks/Recommendation/store/recommendation.js";
12
+ import de from "./organisms/AutoSaveController.vue.js";
13
+ import me from "./organisms/base/Toaster.vue.js";
14
+ import le from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
15
+ import ue from "./organisms/header/HeaderWrapper.vue.js";
16
+ import pe from "./organisms/LoadingWrapper.vue.js";
17
+ import fe from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
18
+ import ye from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
19
+ import { useStripoApi as ge } from "../services/stripoApi.js";
20
+ import { useConfigStore as ve } from "../stores/config.js";
21
+ import { useDynamicContentStore as Se } from "../stores/dynamic-content.js";
22
+ import { useEditorStore as O } from "../stores/editor.js";
23
+ import { usePreviewStore as he } from "../stores/preview.js";
24
+ import { useTemplateStore as be } from "../stores/template.js";
25
+ import { useUnsubscribeStore as Ee } from "../stores/unsubscribe.js";
26
+ import { readTrackFloor as W } from "../utils/linkTrackingIds.js";
27
+ const je = /* @__PURE__ */ Z({
29
28
  __name: "Guido",
30
29
  props: {
31
30
  config: null,
32
31
  ready: { type: Boolean, default: !0 }
33
32
  },
34
33
  emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
35
- setup(z, { expose: q, emit: r }) {
36
- const a = z, K = l(
34
+ setup(x, { expose: G, emit: r }) {
35
+ const a = x, H = l(
37
36
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
- ), V = l(
37
+ ), $ = l(
39
38
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
- ), j = l(
39
+ ), z = l(
41
40
  () => import("./organisms/extensions/recommendation/AssignStrategyDrawer.vue.js")
42
- ), J = l(
41
+ ), q = l(
43
42
  () => import("./organisms/extensions/recommendation/RemoveStrategyModal.vue.js")
44
- ), h = O(), p = O(), f = Ce(), E = Te(), o = we();
43
+ ), b = P(), p = P(), f = Se(), E = Ee(), o = ve();
45
44
  a.ready && o.init(a.config);
46
- const c = H(), Q = De(), m = u(() => c.hasChanges), { isTestPartner: X } = me(), w = () => {
45
+ const c = O(), K = he(), m = u(() => c.hasChanges), { isTestPartner: V } = se(), w = () => {
47
46
  var t;
48
- return (t = h.value) == null ? void 0 : t.handleSave(!0);
47
+ return (t = b.value) == null ? void 0 : t.handleSave(!0);
49
48
  }, C = (t) => {
50
49
  c.loadingStatus = t;
51
50
  };
52
- ae(), de();
51
+ oe(), re();
53
52
  const y = () => {
54
53
  var t, e;
55
54
  return {
@@ -57,18 +56,16 @@ const et = /* @__PURE__ */ ne({
57
56
  userId: o.userId,
58
57
  username: o.username,
59
58
  partnerName: o.partnerName,
60
- savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) || W.SAVED_MODULES,
61
- defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) || W.DEFAULT_MODULES
59
+ savedModulesFolderName: ((t = o.editor) == null ? void 0 : t.savedModulesFolderName) || N.SAVED_MODULES,
60
+ defaultModulesFolderName: ((e = o.editor) == null ? void 0 : e.defaultModulesFolderName) || N.DEFAULT_MODULES
62
61
  };
63
- }, { initPlugin: D, preloadRuntime: k } = le(), { runExclusive: T, beginMount: F, isCurrentMount: I } = ie();
64
- let g = 0;
65
- const { getDefaultTemplate: M } = Ee(), { cloneTimersOnSave: R, hasTimerBlocks: L } = ue(), Y = u(() => {
62
+ }, { initPlugin: D, preloadRuntime: k } = ae(), { getDefaultTemplate: T } = ge(), { cloneTimersOnSave: F, hasTimerBlocks: R } = ie(), j = u(() => {
66
63
  var t;
67
64
  return !((t = o.ui) != null && t.showHeader);
68
- }), Z = u(() => o.isFeatureEnabled("reusableRecommendationStrategy")), ee = u(
69
- () => !!G().recommendationConfigs.strategyId
65
+ }), J = u(() => o.isFeatureEnabled("reusableRecommendationStrategy")), Q = u(
66
+ () => !!h().recommendationConfigs.strategyId
70
67
  );
71
- ce({
68
+ ne({
72
69
  onBack: () => {
73
70
  console.debug("guido:back"), r("back");
74
71
  },
@@ -83,80 +80,79 @@ const et = /* @__PURE__ */ ne({
83
80
  console.debug("guido:test-email:click"), r("test-email:click");
84
81
  }
85
82
  });
86
- const B = (t) => {
83
+ const I = (t) => {
87
84
  console.debug("dynamic-content:close", t), f.setSelectedDynamicContent(t), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: t }));
88
- }, A = () => {
85
+ }, L = () => {
89
86
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
90
87
  };
91
- P(() => m.value, () => {
88
+ U(() => m.value, () => {
92
89
  r("on-change", m.value);
93
90
  });
94
- const v = (t) => {
91
+ const g = (t) => {
95
92
  const e = t, { attribute: s, position: d } = e.detail;
96
93
  console.debug("dynamic-content:open", e.detail), r("dynamic-content:open", s, d);
97
94
  };
98
95
  let i = null;
99
- const S = () => {
96
+ const v = () => {
100
97
  var e;
101
- const t = document.querySelector(pe);
98
+ const t = document.querySelector(ce);
102
99
  (e = p.value) == null || e.style.setProperty("--ribbon-offset", `${(t == null ? void 0 : t.offsetHeight) ?? 0}px`);
103
- }, b = async () => {
100
+ }, S = async () => {
104
101
  var t;
105
102
  try {
106
103
  o.initialized || o.init(a.config), c.templateId = o.templateId;
107
- const e = o.template, s = (e == null ? void 0 : e.html) || "", d = (e == null ? void 0 : e.css) || "", U = (e == null ? void 0 : e.preselectedDynamicContent) || [];
104
+ const e = o.template, s = (e == null ? void 0 : e.html) || "", d = (e == null ? void 0 : e.css) || "", M = (e == null ? void 0 : e.preselectedDynamicContent) || [];
108
105
  E.selectedUnsubscribePages = (e == null ? void 0 : e.selectedUnsubscribePages) || [];
109
- const _ = ((t = e == null ? void 0 : e.migration) == null ? void 0 : t.recommendationConfigs) ?? {}, N = o.isFeatureEnabled("linkTrackingIds");
106
+ const B = ((t = e == null ? void 0 : e.migration) == null ? void 0 : t.recommendationConfigs) ?? {}, A = o.isFeatureEnabled("linkTrackingIds");
110
107
  let n = {
111
- html: s && await x(s, _),
108
+ html: s && await _(s, B),
112
109
  css: d
113
110
  };
114
- n.html || (n = await M(), n.html = await x(n.html, _));
115
- const te = N ? $(n.html, (e == null ? void 0 : e.trackIdCounter) || 0) : 0;
116
- L(n.html) && (n.html = await R(n.html)), N && (c.trackIdSessionFloor = Math.max(te, $(n.html)));
117
- const oe = {
118
- preselectedDynamicContentList: U,
111
+ n.html || (n = await T(), n.html = await _(n.html, B));
112
+ const X = A ? W(n.html, (e == null ? void 0 : e.trackIdCounter) || 0) : 0;
113
+ R(n.html) && (n.html = await F(n.html)), A && (c.trackIdSessionFloor = Math.max(X, W(n.html)));
114
+ const Y = {
115
+ preselectedDynamicContentList: M,
119
116
  onReady: () => {
120
117
  console.debug("guido:ready"), r("ready");
121
118
  }
122
119
  };
123
- g = F(), await D(n, y(), oe), f.selectedDynamicContentList = U;
120
+ await D(n, y(), Y), f.selectedDynamicContentList = M;
124
121
  } catch (e) {
125
122
  console.error("Failed to initialize Stripo editor:", e);
126
123
  }
127
124
  };
128
- return re(async () => {
125
+ return ee(async () => {
129
126
  var e;
130
- console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), G().$reset(), H().$reset(), ke().$reset(), S();
127
+ console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), h().$reset(), O().$reset(), be().$reset(), v();
131
128
  const t = (e = p.value) == null ? void 0 : e.parentElement;
132
- if (t && (i = new ResizeObserver(S), i.observe(t)), k(), a.ready)
133
- await b();
129
+ if (t && (i = new ResizeObserver(v), i.observe(t)), k(), a.ready)
130
+ await S();
134
131
  else {
135
- const s = P(() => a.ready, (d) => {
136
- d && (s(), b());
132
+ const s = U(() => a.ready, (d) => {
133
+ d && (s(), S());
137
134
  });
138
135
  }
139
- document.addEventListener("dynamic-content:open", v);
140
- }), se(() => {
141
- i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", v), T(async () => {
142
- if (I(g))
143
- try {
144
- window.UIEditor.removeEditor();
145
- } catch {
146
- console.debug("Failed to remove Stripo editor: No editor found");
147
- }
148
- }), o.reset();
149
- }), q({
136
+ document.addEventListener("dynamic-content:open", g);
137
+ }), te(() => {
138
+ i == null || i.disconnect(), document.removeEventListener("dynamic-content:open", g), h().disposeStrategyPageReturn();
139
+ try {
140
+ window.UIEditor.removeEditor();
141
+ } catch {
142
+ console.debug("Failed to remove Stripo editor: No editor found");
143
+ }
144
+ o.reset();
145
+ }), G({
150
146
  dynamicContent: {
151
- insert: B,
152
- close: A
147
+ insert: I,
148
+ close: L
153
149
  },
154
150
  hasChanges: m,
155
151
  saveSilent: w,
156
152
  setLoading: C
157
- }), { __sfc: !0, PreviewContainer: K, OnboardingWrapper: V, AssignStrategyDrawer: j, RemoveStrategyModal: J, headerWrapperRef: h, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: E, props: a, configStore: o, editorStore: c, previewStore: Q, hasChanges: m, isTestPartner: X, saveSilent: w, setLoading: C, emit: r, buildMetadata: y, initPlugin: D, preloadRuntime: k, runExclusive: T, beginMount: F, isCurrentMount: I, mountGeneration: g, getDefaultTemplate: M, cloneTimersOnSave: R, hasTimerBlocks: L, noHeader: Y, isRrsEnabled: Z, hasAssignedStrategy: ee, insertDynamicContent: B, closeDynamicContent: A, handleDynamicContentOpen: v, ribbonObserver: i, updateRibbonOffset: S, startEditor: b, AutoSaveController: fe, Toaster: ye, FilterSelectionDrawer: ge, HeaderWrapper: ve, LoadingWrapper: Se, SaveAsTemplateDrawer: be, UnsubscribeWrapper: he };
153
+ }), { __sfc: !0, PreviewContainer: H, OnboardingWrapper: $, AssignStrategyDrawer: z, RemoveStrategyModal: q, headerWrapperRef: b, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: E, props: a, configStore: o, editorStore: c, previewStore: K, hasChanges: m, isTestPartner: V, saveSilent: w, setLoading: C, emit: r, buildMetadata: y, initPlugin: D, preloadRuntime: k, getDefaultTemplate: T, cloneTimersOnSave: F, hasTimerBlocks: R, noHeader: j, isRrsEnabled: J, hasAssignedStrategy: Q, insertDynamicContent: I, closeDynamicContent: L, handleDynamicContentOpen: g, ribbonObserver: i, updateRibbonOffset: v, startEditor: S, AutoSaveController: de, Toaster: me, FilterSelectionDrawer: le, HeaderWrapper: ue, LoadingWrapper: pe, SaveAsTemplateDrawer: fe, UnsubscribeWrapper: ye };
158
154
  }
159
155
  });
160
156
  export {
161
- et as default
157
+ je as default
162
158
  };
@@ -1,19 +1,21 @@
1
- import r from "./AssignStrategyDrawer.vue2.js";
1
+ import s from "./AssignStrategyDrawer.vue2.js";
2
2
  /* empty css */
3
3
  /* empty css */
4
- import a from "../../../../_virtual/_plugin-vue2_normalizer.js";
5
- var o = function() {
6
- var e = this, s = e._self._c, t = e._self._setupProxy;
7
- return t.store.assignStrategyDrawerStatus ? s(t.OrgStrategyDetailModal, { staticClass: "assign-strategy-drawer", attrs: { "description-status": "", show: "", "description-text": t.drawerDescription, "footer-button-group-options": t.footerButtonGroupOptions, strategy: t.selectedStrategy ?? {}, "title-text": t.trans("gpt-app-builder.assign-recommendation-strategy") }, on: { close: t.closeDrawer, primaryClick: t.assignStrategy }, scopedSlots: e._u([{ key: "contentTop", fn: function() {
8
- return [s("div", { staticClass: "assign-strategy-drawer-content px-5 py-5" }, [s(t.OrgStrategyDropdown, { staticClass: "assign-strategy-select", attrs: { id: "assign-strategy-select", "info-box-position": "bottom right", "create-button-visible": !1, loading: t.store.strategiesLoading, "placeholder-text": t.trans("smart-recommender.select-recommendation-strategy"), "selected-strategy-id": t.selectedStrategyId, state: t.showSelectionError ? "error" : "default", "state-message": t.showSelectionError ? t.trans("ds-steps.select-strategy-tooltip") : "", strategies: t.strategyOptions }, on: { select: t.onSelect } })], 1)];
9
- }, proxy: !0 }], null, !1, 2542767044) }) : e._e();
10
- }, n = [], i = /* @__PURE__ */ a(
11
- r,
12
- o,
4
+ import o from "../../../../_virtual/_plugin-vue2_normalizer.js";
5
+ var a = function() {
6
+ var e = this, r = e._self._c, t = e._self._setupProxy;
7
+ return t.store.assignStrategyDrawerStatus ? r(t.OrgStrategyDetailModal, { staticClass: "assign-strategy-drawer", attrs: { "description-status": "", show: "", "description-text": t.drawerDescription, "footer-button-group-options": t.footerButtonGroupOptions, strategy: t.selectedStrategy ?? {}, "title-text": t.trans("gpt-app-builder.assign-recommendation-strategy") }, on: { close: t.closeDrawer, primaryClick: t.assignStrategy }, scopedSlots: e._u([{ key: "contentTop", fn: function() {
8
+ return [r("div", { staticClass: "assign-strategy-drawer-content px-5 py-5" }, [r(t.OrgStrategyDropdown, { staticClass: "assign-strategy-select", attrs: { id: "assign-strategy-select", "create-button-visible": "", "info-box-position": "bottom right", loading: t.store.strategiesLoading, "placeholder-text": t.trans("smart-recommender.select-recommendation-strategy"), "selected-strategy-id": t.selectedStrategyId, state: t.showSelectionError ? "error" : "default", "state-message": t.showSelectionError ? t.trans("ds-steps.select-strategy-tooltip") : "", strategies: t.strategyOptions }, on: { create: function(l) {
9
+ return t.store.openStrategyCreation();
10
+ }, infoBoxButtonClick: t.onInfoBoxButtonClick, select: t.onSelect } })], 1)];
11
+ }, proxy: !0 }], null, !1, 1517791821) }) : e._e();
12
+ }, n = [], i = /* @__PURE__ */ o(
13
+ s,
14
+ a,
13
15
  n,
14
16
  !1,
15
17
  null,
16
- "2580a7d9"
18
+ "0b3e3cba"
17
19
  );
18
20
  const y = i.exports;
19
21
  export {
@@ -1,48 +1,50 @@
1
- import { defineComponent as v, defineAsyncComponent as y, ref as u, computed as l, watch as O } from "vue";
1
+ import { defineComponent as I, defineAsyncComponent as f, ref as S, computed as c, watch as T } 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 O } from "../../../../composables/useToaster.js";
4
+ import { useTranslations as h } from "../../../../composables/useTranslations.js";
5
+ import { DOTTED_DATE_LOCALE as A } from "../../../../enums/date.js";
6
+ import { URLS as B } from "../../../../enums/extensions/recommendationBlock.js";
7
+ import { ToasterTypeOptions as y } from "../../../../enums/toaster.js";
8
+ import { useRecommendationExtensionStore as b } 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 L } from "../../../../utils/htmlEscape.js";
13
+ import { InSkeleton as P } from "@useinsider/design-system-vue";
14
+ const Z = /* @__PURE__ */ I({
15
15
  __name: "AssignStrategyDrawer",
16
- setup(k) {
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({
20
- loader: async () => (await c()).OrgStrategyDetailModal,
21
- loadingComponent: g(480, 240),
16
+ setup(R) {
17
+ const g = () => import("@useinsider/design-system-organisms"), d = (t, r) => ({
18
+ render: (s) => s(P, { props: { sizing: { width: t, height: r } } })
19
+ }), D = f({
20
+ loader: async () => (await g()).OrgStrategyDetailModal,
21
+ loadingComponent: d(480, 240),
22
22
  delay: 0
23
- }), T = y({
24
- loader: async () => (await c()).OrgStrategyDropdown,
25
- loadingComponent: g(240, 42),
23
+ }), v = f({
24
+ loader: async () => (await g()).OrgStrategyDropdown,
25
+ loadingComponent: d(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
+ }), i = "guido-edit-strategy-", a = h(), e = b(), { showToaster: l } = O(), o = S(null), n = S(!1), w = c(() => e.assignStrategyDrawerStatus ? a("email-editor.assign-strategy-description", { url: B.RECOMMENDATION_STRATEGIES_PANEL_PATH }) : ""), m = () => {
28
+ e.lastCreatedStrategyId && (o.value = e.lastCreatedStrategyId, n.value = !1, e.lastCreatedStrategyId = null);
29
+ };
30
+ T(() => e.assignStrategyDrawerStatus, (t) => {
29
31
  if (!t)
30
32
  return;
31
33
  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")
34
+ o.value = r || null, n.value = !1, e.fetchStrategies().then(m).catch(() => {
35
+ l({
36
+ type: y.Error,
37
+ message: a("discovery-strategy.error-description")
36
38
  });
37
39
  });
38
- });
40
+ }), T(() => e.lastCreatedStrategyId, m);
39
41
  const p = (t) => {
40
- const r = f(t.updated_at || t.created_at);
42
+ const r = _(t.updated_at || t.created_at);
41
43
  if (!r)
42
44
  return "";
43
- const a = I(r, E);
44
- return o("recommendation-strategy.last-updated-on", { value: a });
45
- }, D = l(() => e.strategies.map((t) => ({
45
+ const s = k(r, A);
46
+ return a("recommendation-strategy.last-updated-on", { value: s });
47
+ }, x = c(() => e.strategies.map((t) => ({
46
48
  text: t.name,
47
49
  value: t.strategy_id,
48
50
  infoBoxProps: {
@@ -50,57 +52,71 @@ const W = /* @__PURE__ */ v({
50
52
  theme: "light",
51
53
  variant: "information",
52
54
  className: "assign-strategy-info-box",
53
- titleText: N(f(t.name)),
55
+ titleText: L(_(t.name)),
54
56
  descriptionStatus: !0,
55
57
  descriptionText: p(t),
56
- slot: B,
57
- slotProps: { strategy: t }
58
+ slot: N,
59
+ slotProps: { strategy: t },
60
+ // The info box drops the option's value/text, so the id is the only channel
61
+ // that can carry the strategy back to the click handler.
62
+ buttonOptions: [{
63
+ id: `${i}${t.strategy_id}`,
64
+ text: a("eureka.edit-strategy"),
65
+ type: "text",
66
+ // Resolved from Guido's own public/sprite.svg by InIcons; an unknown name would
67
+ // silently render blank space instead of failing.
68
+ icon: "line-open-website"
69
+ }]
58
70
  }
59
- }))), d = l(() => {
60
- const t = e.strategies.find((r) => String(r.strategy_id) === String(n.value ?? ""));
71
+ }))), C = (t) => {
72
+ var s;
73
+ const r = (s = t == null ? void 0 : t.id) != null && s.startsWith(i) ? t.id.slice(i.length) : "";
74
+ r && e.openStrategyEdit(r);
75
+ }, u = c(() => {
76
+ const t = e.strategies.find((r) => String(r.strategy_id) === String(o.value ?? ""));
61
77
  return t ? { ...t, fallback_config: null } : null;
62
- }), w = l(() => ({
78
+ }), E = c(() => ({
63
79
  primaryButton: {
64
80
  styling: "solid",
65
81
  type: "primary",
66
- labelText: o("products.assign-btn")
82
+ labelText: a("products.assign-btn")
67
83
  },
68
84
  cancelOrBackButton: {
69
85
  styling: "ghost",
70
86
  type: "secondary",
71
- labelText: o("products.cancel")
87
+ labelText: a("products.cancel")
72
88
  }
73
89
  }));
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: () => {
90
+ return { __sfc: !0, loadOrganisms: g, skeleton: d, OrgStrategyDetailModal: D, OrgStrategyDropdown: v, EDIT_BUTTON_ID_PREFIX: i, trans: a, store: e, showToaster: l, selectedStrategyId: o, showSelectionError: n, drawerDescription: w, consumeLastCreatedStrategy: m, lastUpdatedText: p, strategyOptions: x, onInfoBoxButtonClick: C, selectedStrategy: u, footerButtonGroupOptions: E, closeDrawer: () => {
75
91
  e.closeAssignStrategyDrawer();
76
92
  }, assignStrategy: async () => {
77
- const t = d.value;
93
+ const t = u.value;
78
94
  if (!t) {
79
- i.value = !0;
95
+ n.value = !0;
80
96
  return;
81
97
  }
82
98
  let r = "";
83
99
  try {
84
100
  r = await e.resolveStrategyUrlTemplate(t, e.recommendationConfigs.currencySettings.value);
85
- } catch (a) {
86
- console.error("[AssignStrategyDrawer] resolveStrategyUrlTemplate failed", a);
101
+ } catch (s) {
102
+ console.error("[AssignStrategyDrawer] resolveStrategyUrlTemplate failed", s);
87
103
  }
88
104
  if (!r) {
89
- s({
90
- type: m.Error,
91
- message: o("email-editor.strategy-assign-failed", { strategyName: t.name })
105
+ l({
106
+ type: y.Error,
107
+ message: a("email-editor.strategy-assign-failed", { strategyName: t.name })
92
108
  });
93
109
  return;
94
110
  }
95
- e.assignStrategy(t), s({
96
- type: m.Success,
97
- message: o("email-editor.strategy-assigned-success", { strategyName: t.name })
111
+ e.assignStrategy(t), l({
112
+ type: y.Success,
113
+ message: a("email-editor.strategy-assigned-success", { strategyName: t.name })
98
114
  }), e.closeAssignStrategyDrawer();
99
115
  }, onSelect: (t) => {
100
- n.value = t.value, i.value = !1;
116
+ o.value = t.value, n.value = !1;
101
117
  } };
102
118
  }
103
119
  });
104
120
  export {
105
- W as default
121
+ Z as default
106
122
  };
@@ -15,7 +15,7 @@ var u = function() {
15
15
  p,
16
16
  !1,
17
17
  null,
18
- "1ca6baf0"
18
+ "6e711fd7"
19
19
  );
20
20
  const v = c.exports;
21
21
  export {
@@ -1,79 +1,66 @@
1
- import { defineComponent as q, ref as l, computed as w } from "vue";
2
- import { useActionsApi as b } from "../../../composables/useActionsApi.js";
3
- import { useConfig as k } from "../../../composables/useConfig.js";
4
- import { useExport as B } from "../../../composables/useExport.js";
5
- import { useTestEmailClick as D } from "../../../composables/useGuidoActions.js";
6
- import { useHtmlCompiler as L } from "../../../composables/useHtmlCompiler.js";
7
- import { useSave as R } from "../../../composables/useSave.js";
8
- import { useToaster as z } from "../../../composables/useToaster.js";
9
- import { useTranslations as I } from "../../../composables/useTranslations.js";
10
- import { useVersionHistoryApi as P } from "../../../composables/useVersionHistoryApi.js";
11
- import { useLiquidValidator as j } from "../../../composables/validators/useLiquidValidator.js";
12
- import { useEditorStore as G } from "../../../stores/editor.js";
13
- import { useTemplateStore as J } from "../../../stores/template.js";
14
- import { getTooltipOptions as K } from "../../../utils/tooltipUtils.js";
15
- import { InButtonV2 as N } from "@useinsider/design-system-vue";
16
- import { storeToRefs as Q } from "pinia";
17
- import U from "./MigrationConfirmModal.vue.js";
18
- const ft = /* @__PURE__ */ q({
1
+ import { defineComponent as O, ref as n, computed as h } from "vue";
2
+ import { useActionsApi as q } from "../../../composables/useActionsApi.js";
3
+ import { useConfig as b } from "../../../composables/useConfig.js";
4
+ import { useExport as k } from "../../../composables/useExport.js";
5
+ import { useTestEmailClick as B } from "../../../composables/useGuidoActions.js";
6
+ import { useHtmlCompiler as D } from "../../../composables/useHtmlCompiler.js";
7
+ import { useSave as F } from "../../../composables/useSave.js";
8
+ import { useTranslations as L } from "../../../composables/useTranslations.js";
9
+ import { useVersionHistoryApi as R } from "../../../composables/useVersionHistoryApi.js";
10
+ import { useLiquidValidator as z } from "../../../composables/validators/useLiquidValidator.js";
11
+ import { useEditorStore as I } from "../../../stores/editor.js";
12
+ import { useTemplateStore as P } from "../../../stores/template.js";
13
+ import { getTooltipOptions as j } from "../../../utils/tooltipUtils.js";
14
+ import { InButtonV2 as G } from "@useinsider/design-system-vue";
15
+ import { storeToRefs as J } from "pinia";
16
+ import K from "./MigrationConfirmModal.vue.js";
17
+ const ut = /* @__PURE__ */ O({
19
18
  __name: "EditorActions",
20
- setup(W, { expose: x }) {
21
- const { config: m, isFeatureEnabled: c } = k(), { exportHtml: p } = B(), { save: u } = R(), { openVersionHistory: f, closeVersionHistory: d } = P(), { getCompiledEmail: v } = b(), { compileHtml: y } = L(), { validateLiquidSyntax: g } = j(), { handleError: r } = z(), e = G(), h = J(), { hasMigrations: H } = Q(h), s = I(), i = l(!1), a = l(!1), S = l(), V = D(), _ = () => {
19
+ setup(N, { expose: x }) {
20
+ const { config: a, isFeatureEnabled: l } = b(), { exportHtml: m } = k(), { save: u } = F(), { openVersionHistory: c, closeVersionHistory: p } = R(), { getCompiledEmail: f } = q(), { compileHtml: d } = D(), { validateLiquidSyntax: v } = z(), e = I(), y = P(), { hasMigrations: g } = J(y), s = L(), i = n(!1), r = n(!1), S = n(), H = B(), T = () => {
22
21
  if (e.isVersionHistoryOpen) {
23
- d();
22
+ p();
24
23
  return;
25
24
  }
26
- f();
27
- }, C = async () => {
28
- i.value = !0, await p(), i.value = !1;
29
- }, A = () => {
25
+ c();
26
+ }, w = async () => {
27
+ i.value = !0, await m(), i.value = !1;
28
+ }, _ = () => {
30
29
  e.isSaveAsTemplateDrawerOpen = !0;
31
- }, M = w(() => e.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), O = w(
30
+ }, C = h(() => e.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), A = h(
32
31
  () => {
33
32
  var t, o;
34
- return ((o = (t = m.value) == null ? void 0 : t.features) == null ? void 0 : o.versionHistory) && !e.isPreviewModeOpen;
33
+ return ((o = (t = a.value) == null ? void 0 : t.features) == null ? void 0 : o.versionHistory) && !e.isPreviewModeOpen;
35
34
  }
36
- ), E = async (t) => {
37
- a.value = !0, t || (e.loadingStatus = !0);
38
- let o;
39
- try {
40
- o = await u(t);
41
- } catch (n) {
42
- if (t)
43
- throw n;
44
- r(n, "Failed to save template");
45
- } finally {
46
- a.value = !1, !t && !o && (e.loadingStatus = !1);
47
- }
48
- return o;
49
- }, T = (t) => {
35
+ ), V = async (t) => {
36
+ r.value = !0, t || (e.loadingStatus = !0);
37
+ const o = await u(t);
38
+ return r.value = !1, !t && !o && (e.loadingStatus = !1), o;
39
+ }, E = (t) => {
50
40
  var o;
51
- if (!t && H.value) {
41
+ if (!t && g.value) {
52
42
  (o = S.value) == null || o.open();
53
43
  return;
54
44
  }
55
- return E(t);
56
- }, F = async () => {
57
- if (c("liquidSyntax")) {
45
+ return V(t);
46
+ }, M = async () => {
47
+ if (l("liquidSyntax")) {
58
48
  e.loadingStatus = !0;
59
49
  try {
60
- const { html: t } = await v({ minimize: !0, resetDataSavedFlag: !1 }), { compiledHtml: o } = y(t);
61
- if (!await g(o))
50
+ const { html: t } = await f({ minimize: !0, resetDataSavedFlag: !1 }), { compiledHtml: o } = d(t);
51
+ if (!await v(o))
62
52
  return;
63
- } catch (t) {
64
- r(t, "Failed to prepare test email");
65
- return;
66
53
  } finally {
67
54
  e.loadingStatus = !1;
68
55
  }
69
56
  }
70
- V();
57
+ H();
71
58
  };
72
59
  return x({
73
- handleSave: T
74
- }), { __sfc: !0, config: m, isFeatureEnabled: c, exportHtml: p, save: u, openVersionHistory: f, closeVersionHistory: d, getCompiledEmail: v, compileHtml: y, validateLiquidSyntax: g, handleError: r, editorStore: e, templateStore: h, hasMigrations: H, trans: s, isExporting: i, isSaving: a, migrationModalRef: S, testEmailClick: V, handleVersionHistory: _, handleExport: C, handleSaveAs: A, versionHistoryTooltipText: M, isVersionHistoryButtonVisible: O, executeSave: E, handleSave: T, handleTestEmail: F, getTooltipOptions: K, InButtonV2: N, MigrationConfirmModal: U };
60
+ handleSave: E
61
+ }), { __sfc: !0, config: a, isFeatureEnabled: l, exportHtml: m, save: u, openVersionHistory: c, closeVersionHistory: p, getCompiledEmail: f, compileHtml: d, validateLiquidSyntax: v, editorStore: e, templateStore: y, hasMigrations: g, trans: s, isExporting: i, isSaving: r, migrationModalRef: S, testEmailClick: H, handleVersionHistory: T, handleExport: w, handleSaveAs: _, versionHistoryTooltipText: C, isVersionHistoryButtonVisible: A, executeSave: V, handleSave: E, handleTestEmail: M, getTooltipOptions: j, InButtonV2: G, MigrationConfirmModal: K };
75
62
  }
76
63
  });
77
64
  export {
78
- ft as default
65
+ ut as default
79
66
  };