@useinsider/guido 3.12.0-beta.cfe6433 → 3.12.0-beta.d77b0d2

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 (92) hide show
  1. package/dist/@types/config/schemas.js +9 -4
  2. package/dist/components/Guido.vue.js +6 -6
  3. package/dist/components/Guido.vue2.js +50 -49
  4. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +1 -1
  5. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +8 -8
  6. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +5 -5
  7. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue2.js +10 -10
  8. package/dist/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue.js +38 -0
  9. package/dist/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue2.js +271 -0
  10. package/dist/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue.js +18 -0
  11. package/dist/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue2.js +42 -0
  12. package/dist/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue.js +20 -0
  13. package/dist/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue2.js +18 -0
  14. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue.js +20 -0
  15. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue2.js +60 -0
  16. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue.js +19 -0
  17. package/dist/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue2.js +19 -0
  18. package/dist/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue.js +22 -0
  19. package/dist/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue2.js +29 -0
  20. package/dist/composables/useHtmlValidator.js +68 -60
  21. package/dist/composables/useHttp.js +61 -52
  22. package/dist/composables/usePreviewInteractionGuard.js +36 -11
  23. package/dist/composables/useRecommendation.js +56 -40
  24. package/dist/composables/useRecommendationPreview.js +61 -60
  25. package/dist/composables/useSave.js +22 -22
  26. package/dist/composables/useStrategyFilters.js +16 -0
  27. package/dist/config/migrator/recommendationMigrator.js +7 -4
  28. package/dist/enums/date.js +4 -3
  29. package/dist/enums/extensions/filteringV2.js +1024 -0
  30. package/dist/enums/extensions/recommendationBlock.js +45 -24
  31. package/dist/enums/extensions/strategyDetail.js +149 -0
  32. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  33. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +12 -11
  34. package/dist/extensions/Blocks/Recommendation/controls/blockBackground/index.js +10 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +141 -123
  36. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +297 -0
  37. package/dist/extensions/Blocks/Recommendation/extension.js +23 -21
  38. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +16 -2
  39. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +137 -0
  40. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +41 -40
  41. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +549 -165
  42. package/dist/extensions/Blocks/Recommendation/utils/strategyHumanizer.js +97 -0
  43. package/dist/extensions/Blocks/Recommendation/utils/strategyNavigation.js +8 -0
  44. package/dist/extensions/Blocks/Recommendation/utils/strategySummary.js +95 -0
  45. package/dist/extensions/Blocks/Recommendation/utils/strategyUrl.js +43 -0
  46. package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +24 -10
  47. package/dist/extensions/Blocks/Unsubscribe/utils/constants.js +3 -2
  48. package/dist/extensions/Blocks/common-control.js +37 -35
  49. package/dist/extensions/Blocks/controlFactories.js +125 -75
  50. package/dist/guido.css +1 -1
  51. package/dist/services/recommendationApi.js +127 -33
  52. package/dist/services/stripoApi.js +18 -18
  53. package/dist/src/@types/config/schemas.d.ts +10 -0
  54. package/dist/src/components/organisms/extensions/recommendation/StrategyDetailDrawer.vue.d.ts +2 -0
  55. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/CampaignTable.vue.d.ts +43 -0
  56. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/FilterHumanizer.vue.d.ts +29 -0
  57. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/HumanizerCondition.vue.d.ts +40 -0
  58. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/HumanizerGroup.vue.d.ts +38 -0
  59. package/dist/src/components/organisms/extensions/recommendation/strategy-detail/InfoDisplayValue.vue.d.ts +51 -0
  60. package/dist/src/composables/useConfig.d.ts +2 -0
  61. package/dist/src/composables/useHtmlValidator.d.ts +2 -0
  62. package/dist/src/composables/usePreviewInteractionGuard.d.ts +1 -1
  63. package/dist/src/composables/useRecommendation.d.ts +2 -0
  64. package/dist/src/composables/useStrategyFilters.d.ts +24 -0
  65. package/dist/src/enums/extensions/filteringV2.d.ts +72 -0
  66. package/dist/src/enums/extensions/recommendationBlock.d.ts +33 -0
  67. package/dist/src/enums/extensions/strategyDetail.d.ts +90 -0
  68. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +1 -0
  69. package/dist/src/extensions/Blocks/Recommendation/controls/blockBackground/index.d.ts +14 -0
  70. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +1 -0
  71. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +10 -4
  72. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +118 -0
  73. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +958 -1
  74. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +7 -0
  75. package/dist/src/extensions/Blocks/Recommendation/utils/strategyHumanizer.d.ts +50 -0
  76. package/dist/src/extensions/Blocks/Recommendation/utils/strategyNavigation.d.ts +10 -0
  77. package/dist/src/extensions/Blocks/Recommendation/utils/strategySummary.d.ts +34 -0
  78. package/dist/src/extensions/Blocks/Recommendation/utils/strategyUrl.d.ts +51 -0
  79. package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +8 -1
  80. package/dist/src/extensions/Blocks/Unsubscribe/utils/constants.d.ts +1 -0
  81. package/dist/src/extensions/Blocks/common-control.d.ts +5 -2
  82. package/dist/src/extensions/Blocks/controlFactories.d.ts +36 -0
  83. package/dist/src/mock/api/recommendation-strategies.d.ts +2 -0
  84. package/dist/src/services/recommendationApi.d.ts +9 -1
  85. package/dist/src/stores/config.d.ts +18 -0
  86. package/dist/src/utils/genericUtil.d.ts +9 -0
  87. package/dist/src/utils/urlSchemes.d.ts +6 -0
  88. package/dist/utils/dateUtil.js +23 -10
  89. package/dist/utils/genericUtil.js +10 -1
  90. package/dist/utils/templatePreparation.js +70 -57
  91. package/dist/utils/urlSchemes.js +4 -0
  92. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { ModuleFolderDefaults as y } from "../../enums/defaults.js";
2
- import { object as a, number as n, optional as e, string as t, picklist as l, pipe as p, minLength as b, custom as f, boolean as o, array as c, record as k, fallback as C, literal as i, looseObject as g, variant as R, union as h, unknown as s, lazy as T } from "../../node_modules/valibot/dist/index.js";
2
+ import { object as a, number as n, optional as e, string as t, picklist as l, pipe as p, minLength as b, custom as f, boolean as o, array as c, record as k, fallback as R, literal as i, looseObject as g, variant as C, union as h, unknown as s, lazy as T } from "../../node_modules/valibot/dist/index.js";
3
3
  const d = {
4
4
  /** Promotional/marketing emails */
5
5
  PROMOTIONAL: 1,
@@ -78,7 +78,7 @@ const d = {
78
78
  select_items: e(c(S))
79
79
  })), P = k(
80
80
  t(),
81
- C(c(S), [])
81
+ R(c(S), [])
82
82
  ), D = g({
83
83
  /** Block ID (matches the dictionary key and the legacy HTML element id) */
84
84
  id: e(n()),
@@ -201,7 +201,12 @@ const d = {
201
201
  /** Enable Liquid template syntax */
202
202
  liquidSyntax: e(o(), !1),
203
203
  /** Enable autosave (3-min interval + tab-hide). User toggles on/off from the header. */
204
- autosave: e(o(), !1)
204
+ autosave: e(o(), !1),
205
+ /**
206
+ * Select a Reusable Recommendation Strategy (RRS) instead of a per-block algorithm.
207
+ * Replaces the algorithm dropdown with a strategy dropdown fed from Smart Recommender.
208
+ */
209
+ reusableRecommendationStrategy: e(o(), !0)
205
210
  }), U = l([
206
211
  "amp-accordion",
207
212
  "amp-carousel",
@@ -273,7 +278,7 @@ const d = {
273
278
  (u) => typeof u == "function",
274
279
  "processor must be a function"
275
280
  )
276
- }), G = R("type", [
281
+ }), G = C("type", [
277
282
  H,
278
283
  _,
279
284
  j,
@@ -1,18 +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", { ref: "wrapperRef", staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), r(e.AutoSaveController), 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(p) {
6
+ return r("div", { ref: "wrapperRef", staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), r(e.AutoSaveController), 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.StrategyDetailDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper, { on: { "onboarding-finished": function(p) {
7
7
  return e.emit("onboarding:finished");
8
8
  } } }), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
9
- }, n = [], s = /* @__PURE__ */ a(
10
- i,
9
+ }, n = [], s = /* @__PURE__ */ i(
10
+ a,
11
11
  t,
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "50dac6de"
15
+ "f96d1003"
16
16
  );
17
17
  const l = s.exports;
18
18
  export {
@@ -1,29 +1,30 @@
1
1
  import { defineComponent as X, defineAsyncComponent as I, ref as W, computed as x, watch as Y, onMounted as Z, onUnmounted as ee } from "vue";
2
- import { useCortexBlueprintBridge as oe } from "../composables/useCortexBlueprintBridge.js";
3
- import { provideGuidoActions as te } from "../composables/useGuidoActions.js";
2
+ import { useCortexBlueprintBridge as te } from "../composables/useCortexBlueprintBridge.js";
3
+ import { provideGuidoActions as oe } from "../composables/useGuidoActions.js";
4
4
  import { useGuidoStateBridge as ne } from "../composables/useGuidoStateBridge.js";
5
5
  import { usePartner as re } from "../composables/usePartner.js";
6
6
  import { useStripo as se } from "../composables/useStripo.js";
7
7
  import { useTimerClone as ae } from "../composables/useTimerClone.js";
8
8
  import { migrate as G } from "../config/migrator/index.js";
9
9
  import { ModuleFolderDefaults as H } from "../enums/defaults.js";
10
- import { RIBBON_SELECTOR as ce } from "../enums/onboarding.js";
11
- import { useRecommendationExtensionStore as ie } from "../extensions/Blocks/Recommendation/store/recommendation.js";
10
+ import { RIBBON_SELECTOR as ie } from "../enums/onboarding.js";
11
+ import { useRecommendationExtensionStore as ce } from "../extensions/Blocks/Recommendation/store/recommendation.js";
12
12
  import me from "./organisms/AutoSaveController.vue.js";
13
13
  import de from "./organisms/base/Toaster.vue.js";
14
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 ve from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
19
- import { useStripoApi as Se } from "../services/stripoApi.js";
20
- import { useConfigStore as ye } from "../stores/config.js";
15
+ import ue from "./organisms/extensions/recommendation/StrategyDetailDrawer.vue.js";
16
+ import pe from "./organisms/header/HeaderWrapper.vue.js";
17
+ import fe from "./organisms/LoadingWrapper.vue.js";
18
+ import ve from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
19
+ import Se from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
20
+ import { useStripoApi as ye } from "../services/stripoApi.js";
21
+ import { useConfigStore as ge } from "../stores/config.js";
21
22
  import { useDynamicContentStore as he } from "../stores/dynamic-content.js";
22
23
  import { useEditorStore as $ } from "../stores/editor.js";
23
- import { usePreviewStore as ge } from "../stores/preview.js";
24
- import { useTemplateStore as be } from "../stores/template.js";
25
- import { useUnsubscribeStore as Ee } from "../stores/unsubscribe.js";
26
- const Ve = /* @__PURE__ */ X({
24
+ import { usePreviewStore as be } from "../stores/preview.js";
25
+ import { useTemplateStore as we } from "../stores/template.js";
26
+ import { useUnsubscribeStore as De } from "../stores/unsubscribe.js";
27
+ const Je = /* @__PURE__ */ X({
27
28
  __name: "Guido",
28
29
  props: {
29
30
  config: null
@@ -34,11 +35,11 @@ const Ve = /* @__PURE__ */ X({
34
35
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
35
36
  ), V = I(
36
37
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
37
- ), E = W(), p = W(), f = he(), w = Ee(), i = ye();
38
- i.init(b.config);
39
- const m = $(), j = ge(), d = x(() => m.hasChanges), { isTestPartner: J } = re(), D = () => {
38
+ ), w = W(), p = W(), f = he(), D = De(), c = ge();
39
+ c.init(b.config);
40
+ const m = $(), j = be(), d = x(() => m.hasChanges), { isTestPartner: J } = re(), E = () => {
40
41
  var e;
41
- return (e = E.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = w.value) == null ? void 0 : e.handleSave(!0);
42
43
  }, C = (e) => {
43
44
  m.loadingStatus = e;
44
45
  }, {
@@ -46,10 +47,10 @@ const Ve = /* @__PURE__ */ X({
46
47
  userId: T,
47
48
  partnerName: L,
48
49
  username: k,
49
- template: o,
50
+ template: t,
50
51
  editor: s
51
- } = i, l = (o == null ? void 0 : o.html) || "", F = (o == null ? void 0 : o.css) || "", S = (o == null ? void 0 : o.preselectedDynamicContent) || [], U = (s == null ? void 0 : s.savedModulesFolderName) || H.SAVED_MODULES, _ = (s == null ? void 0 : s.defaultModulesFolderName) || H.DEFAULT_MODULES;
52
- oe(), ne();
52
+ } = c, l = (t == null ? void 0 : t.html) || "", F = (t == null ? void 0 : t.css) || "", S = (t == null ? void 0 : t.preselectedDynamicContent) || [], U = (s == null ? void 0 : s.savedModulesFolderName) || H.SAVED_MODULES, _ = (s == null ? void 0 : s.defaultModulesFolderName) || H.DEFAULT_MODULES;
53
+ te(), ne();
53
54
  const y = {
54
55
  emailId: v,
55
56
  userId: T,
@@ -62,11 +63,11 @@ const Ve = /* @__PURE__ */ X({
62
63
  onReady: () => {
63
64
  console.debug("guido:ready"), n("ready");
64
65
  }
65
- }, { initPlugin: O } = se(y, M), { getDefaultTemplate: P } = Se(), { cloneTimersOnSave: R, hasTimerBlocks: A } = ae(), Q = x(() => {
66
+ }, { initPlugin: O } = se(y, M), { getDefaultTemplate: P } = ye(), { cloneTimersOnSave: R, hasTimerBlocks: A } = ae(), Q = x(() => {
66
67
  var e;
67
- return !((e = i.ui) != null && e.showHeader);
68
+ return !((e = c.ui) != null && e.showHeader);
68
69
  });
69
- te({
70
+ oe({
70
71
  onBack: () => {
71
72
  console.debug("guido:back"), n("back");
72
73
  },
@@ -74,8 +75,8 @@ const Ve = /* @__PURE__ */ X({
74
75
  console.debug("guido:save:start"), n("save:start");
75
76
  },
76
77
  onSaveComplete: (e) => {
77
- const t = { ...e, metadata: y };
78
- console.debug("guido:save:complete", t), n("save:complete", t);
78
+ const o = { ...e, metadata: y };
79
+ console.debug("guido:save:complete", o), n("save:complete", o);
79
80
  },
80
81
  onTestEmailClick: () => {
81
82
  console.debug("guido:test-email:click"), n("test-email:click");
@@ -89,52 +90,52 @@ const Ve = /* @__PURE__ */ X({
89
90
  Y(() => d.value, () => {
90
91
  n("on-change", d.value);
91
92
  });
92
- const h = (e) => {
93
- const t = e, { attribute: u, position: c } = t.detail;
94
- console.debug("dynamic-content:open", t.detail), n("dynamic-content:open", u, c);
93
+ const g = (e) => {
94
+ const o = e, { attribute: u, position: i } = o.detail;
95
+ console.debug("dynamic-content:open", o.detail), n("dynamic-content:open", u, i);
95
96
  };
96
97
  let a = null;
97
- const g = () => {
98
- var t;
99
- const e = document.querySelector(ce);
100
- (t = p.value) == null || t.style.setProperty("--ribbon-offset", `${(e == null ? void 0 : e.offsetHeight) ?? 0}px`);
98
+ const h = () => {
99
+ var o;
100
+ const e = document.querySelector(ie);
101
+ (o = p.value) == null || o.style.setProperty("--ribbon-offset", `${(e == null ? void 0 : e.offsetHeight) ?? 0}px`);
101
102
  };
102
103
  return Z(async () => {
103
- var t, u;
104
- console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), ie().$reset(), $().$reset(), m.templateId = v, be().$reset(), g();
105
- const e = (t = p.value) == null ? void 0 : t.parentElement;
106
- e && (a = new ResizeObserver(g), a.observe(e));
104
+ var o, u;
105
+ console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow"), ce().$reset(), $().$reset(), m.templateId = v, we().$reset(), h();
106
+ const e = (o = p.value) == null ? void 0 : o.parentElement;
107
+ e && (a = new ResizeObserver(h), a.observe(e));
107
108
  try {
108
- w.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
109
- const c = ((u = o == null ? void 0 : o.migration) == null ? void 0 : u.recommendationConfigs) ?? {};
109
+ D.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
110
+ const i = ((u = t == null ? void 0 : t.migration) == null ? void 0 : u.recommendationConfigs) ?? {};
110
111
  let r = {
111
- html: l && await G(l, c),
112
+ html: l && await G(l, i),
112
113
  css: F
113
114
  };
114
- r.html || (r = await P(), r.html = await G(r.html, c)), A(r.html) && (r.html = await R(r.html)), await O(r), f.selectedDynamicContentList = S;
115
- } catch (c) {
116
- console.error("Failed to initialize Stripo editor:", c);
115
+ r.html || (r = await P(), r.html = await G(r.html, i)), A(r.html) && (r.html = await R(r.html)), await O(r), f.selectedDynamicContentList = S;
116
+ } catch (i) {
117
+ console.error("Failed to initialize Stripo editor:", i);
117
118
  }
118
- document.addEventListener("dynamic-content:open", h);
119
+ document.addEventListener("dynamic-content:open", g);
119
120
  }), ee(() => {
120
- a == null || a.disconnect(), document.removeEventListener("dynamic-content:open", h);
121
+ a == null || a.disconnect(), document.removeEventListener("dynamic-content:open", g);
121
122
  try {
122
123
  window.UIEditor.removeEditor();
123
124
  } catch {
124
125
  console.debug("Failed to remove Stripo editor: No editor found");
125
126
  }
126
- i.reset();
127
+ c.reset();
127
128
  }), q({
128
129
  dynamicContent: {
129
130
  insert: B,
130
131
  close: N
131
132
  },
132
133
  hasChanges: d,
133
- saveSilent: D,
134
+ saveSilent: E,
134
135
  setLoading: C
135
- }), { __sfc: !0, PreviewContainer: K, OnboardingWrapper: V, headerWrapperRef: E, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: w, props: b, configStore: i, editorStore: m, previewStore: j, hasChanges: d, isTestPartner: J, saveSilent: D, setLoading: C, templateId: v, userId: T, partnerName: L, username: k, templateConfig: o, editorConfig: s, html: l, css: F, preselectedDynamicContentList: S, savedModulesFolderName: U, defaultModulesFolderName: _, emit: n, metadata: y, options: M, initPlugin: O, getDefaultTemplate: P, cloneTimersOnSave: R, hasTimerBlocks: A, noHeader: Q, insertDynamicContent: B, closeDynamicContent: N, handleDynamicContentOpen: h, ribbonObserver: a, updateRibbonOffset: g, AutoSaveController: me, Toaster: de, FilterSelectionDrawer: le, HeaderWrapper: ue, LoadingWrapper: pe, SaveAsTemplateDrawer: fe, UnsubscribeWrapper: ve };
136
+ }), { __sfc: !0, PreviewContainer: K, OnboardingWrapper: V, headerWrapperRef: w, wrapperRef: p, dynamicContentStore: f, unsubscribeStore: D, props: b, configStore: c, editorStore: m, previewStore: j, hasChanges: d, isTestPartner: J, saveSilent: E, setLoading: C, templateId: v, userId: T, partnerName: L, username: k, templateConfig: t, editorConfig: s, html: l, css: F, preselectedDynamicContentList: S, savedModulesFolderName: U, defaultModulesFolderName: _, emit: n, metadata: y, options: M, initPlugin: O, getDefaultTemplate: P, cloneTimersOnSave: R, hasTimerBlocks: A, noHeader: Q, insertDynamicContent: B, closeDynamicContent: N, handleDynamicContentOpen: g, ribbonObserver: a, updateRibbonOffset: h, AutoSaveController: me, Toaster: de, FilterSelectionDrawer: le, StrategyDetailDrawer: ue, HeaderWrapper: pe, LoadingWrapper: fe, SaveAsTemplateDrawer: ve, UnsubscribeWrapper: Se };
136
137
  }
137
138
  });
138
139
  export {
139
- Ve as default
140
+ Je as default
140
141
  };
@@ -15,7 +15,7 @@ var a = function() {
15
15
  i,
16
16
  !1,
17
17
  null,
18
- "06afaecb"
18
+ "cf946232"
19
19
  );
20
20
  const f = n.exports;
21
21
  export {
@@ -1,24 +1,24 @@
1
- import { defineComponent as u, ref as a, onMounted as p, onBeforeUnmount as l, nextTick as v } from "vue";
2
- import { usePreviewInteractionGuard as d } from "../../../../composables/usePreviewInteractionGuard.js";
1
+ import { defineComponent as u, ref as a, onMounted as p, onBeforeUnmount as l, nextTick as d } from "vue";
2
+ import { usePreviewInteractionGuard as v } from "../../../../composables/usePreviewInteractionGuard.js";
3
3
  import { useTranslations as _ } from "../../../../composables/useTranslations.js";
4
4
  import { usePreviewStore as w } from "../../../../stores/preview.js";
5
5
  import I from "./DesktopBrowserHeader.vue.js";
6
6
  const C = /* @__PURE__ */ u({
7
7
  __name: "DesktopPreview",
8
- setup(k) {
9
- const i = _(), { blockPreviewInteractions: t } = d(), o = a(), n = a(!1), c = w();
8
+ setup(P) {
9
+ const i = _(), { guardPreviewInteractions: t } = v(), o = a(), r = a(!1), c = w();
10
10
  let e = null;
11
11
  const f = (m) => {
12
12
  t(m.target);
13
- }, r = () => {
13
+ }, n = () => {
14
14
  o.value && (e = new ResizeObserver(() => {
15
- }), e.observe(o.value), v(() => {
16
- n.value = !0;
15
+ }), e.observe(o.value), d(() => {
16
+ r.value = !0;
17
17
  }));
18
18
  }, s = () => {
19
19
  e == null || e.disconnect();
20
20
  };
21
- return p(r), l(s), { __sfc: !0, trans: i, blockPreviewInteractions: t, containerRef: o, isContainerReady: n, previewStore: c, resizeObserver: e, onIframeLoad: f, initIframe: r, cleanIframe: s, DesktopBrowserHeader: I };
21
+ return p(n), l(s), { __sfc: !0, trans: i, guardPreviewInteractions: t, containerRef: o, isContainerReady: r, previewStore: c, resizeObserver: e, onIframeLoad: f, initIframe: n, cleanIframe: s, DesktopBrowserHeader: I };
22
22
  }
23
23
  });
24
24
  export {
@@ -1,20 +1,20 @@
1
1
  import e from "./ContentView.vue2.js";
2
2
  /* empty css */
3
3
  import n from "../../../../_virtual/_plugin-vue2_normalizer.js";
4
- var c = function() {
4
+ var o = function() {
5
5
  var t = this, s = t._self._c, a = t._self._setupProxy;
6
6
  return s("div", { staticClass: "w-1 h-1 b-c-4 d-f f-d-c" }, [s("div", { staticClass: "d-f j-c-s-b a-i-c p-2 h-6-s" }, [s("div", { staticClass: "d-f a-i-c cur-p", on: { click: function(l) {
7
7
  return t.$emit("back-to-inbox");
8
8
  } } }, [s(a.InIcons, { staticClass: "f-s-3 i-c-7", attrs: { name: "line-chevron-left" } }), s("span", { staticClass: "ml-2 f-s-1 f-w-400 l-h-1 t-c-7" }, [t._v(t._s(a.trans("newsletter.inbox")))])], 1), s("div", { staticClass: "d-f a-i-c" }, [s(a.InIcons, { staticClass: "i-c-52", attrs: { name: "line-chevron-down" } }), s(a.InIcons, { staticClass: "ml-1 i-c-52", attrs: { name: "line-chevron-up" } })], 1)]), s("div", { staticClass: "iframe-wrapper f-g-1 o-h" }, [s("iframe", { ref: "iframeRef", staticClass: "iframe-scaled d-b b-c-4 bor-s-n", attrs: { sandbox: "allow-same-origin allow-popups allow-forms allow-scripts allow-popups-to-escape-sandbox", srcdoc: a.previewStore.previewHtml }, on: { load: a.onLoad } })])]);
9
- }, o = [], i = /* @__PURE__ */ n(
9
+ }, i = [], r = /* @__PURE__ */ n(
10
10
  e,
11
- c,
12
11
  o,
12
+ i,
13
13
  !1,
14
14
  null,
15
- "cbafc185"
15
+ "f255b2bb"
16
16
  );
17
- const d = i.exports;
17
+ const d = r.exports;
18
18
  export {
19
19
  d as default
20
20
  };
@@ -1,24 +1,24 @@
1
- import { defineComponent as m, ref as a } from "vue";
1
+ import { defineComponent as c, ref as a } from "vue";
2
2
  import { usePreviewInteractionGuard as f } from "../../../../composables/usePreviewInteractionGuard.js";
3
3
  import { useResponsivePreview as p } from "../../../../composables/useResponsivePreview.js";
4
4
  import { useTranslations as u } from "../../../../composables/useTranslations.js";
5
5
  import { usePreviewStore as v } from "../../../../stores/preview.js";
6
- import { InIcons as P } from "@useinsider/design-system-vue";
7
- const g = /* @__PURE__ */ m({
6
+ import { InIcons as d } from "@useinsider/design-system-vue";
7
+ const b = /* @__PURE__ */ c({
8
8
  __name: "ContentView",
9
9
  emits: ["back-to-inbox"],
10
- setup(_) {
11
- const c = u(), t = v(), r = a(), { setupResponsivePreview: n } = p(), { blockPreviewInteractions: s } = f(), i = (e) => {
10
+ setup(P) {
11
+ const m = u(), r = v(), t = a(), { setupResponsivePreview: n } = p(), { guardPreviewInteractions: s } = f(), i = (e) => {
12
12
  ["transform", "transform-origin", "height"].forEach((o) => {
13
13
  e.documentElement.style.removeProperty(o);
14
14
  });
15
15
  };
16
- return { __sfc: !0, trans: c, previewStore: t, iframeRef: r, setupResponsivePreview: n, blockPreviewInteractions: s, clearAMPTransforms: i, onLoad: () => {
17
- const e = r.value, o = e == null ? void 0 : e.contentDocument;
18
- o && (n(e), s(e), t.isAMPResponsive && i(o));
19
- }, InIcons: P };
16
+ return { __sfc: !0, trans: m, previewStore: r, iframeRef: t, setupResponsivePreview: n, guardPreviewInteractions: s, clearAMPTransforms: i, onLoad: () => {
17
+ const e = t.value, o = e == null ? void 0 : e.contentDocument;
18
+ o && (n(e), s(e), r.isAMPResponsive && i(o));
19
+ }, InIcons: d };
20
20
  }
21
21
  });
22
22
  export {
23
- g as default
23
+ b as default
24
24
  };
@@ -0,0 +1,38 @@
1
+ import o from "./StrategyDetailDrawer.vue2.js";
2
+ /* empty css */
3
+ import l from "../../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var c = function() {
5
+ var i;
6
+ var a = this, s = a._self._c, t = a._self._setupProxy;
7
+ return s(t.InDrawer, { attrs: { id: "recommendation-strategy-detail-drawer", "close-button-status": "", "footer-status": "", "full-width-content-status": "", "overlay-status": "", size: "medium", state: "default", "description-status": !1, "footer-button-group-options": t.footerButtonGroupOptions, status: t.isOpen, "title-text": ((i = t.strategy) == null ? void 0 : i.name) || "" }, on: { cancelOrBackButtonEvent: t.close, onCloseEvent: t.close, primaryButtonEvent: t.onPrimaryAction }, scopedSlots: a._u([{ key: "headerBottomSlot", fn: function() {
8
+ return [t.strategy ? s(t.InTabs, { staticClass: "p-r z-4 px-5", attrs: { "active-tab": t.activeTab, "add-new-tab-active": !1, draggable: !1, "dropdown-tabs": !1, "tabs-list": t.tabs, "use-router": !1 }, on: { click: function(e) {
9
+ t.activeTab = e;
10
+ } } }) : a._e()];
11
+ }, proxy: !0 }, { key: "contentSlot", fn: function() {
12
+ return [t.strategy ? s("div", [t.isSharedAcrossCampaigns ? s("div", { staticClass: "px-5 pt-5" }, [s(t.InInfoBox, { attrs: { id: "strategy-shared-notice", theme: "light", variant: "information", "description-status": !1, "title-status": !1 } }, [s("ul", { staticClass: "strategy-shared-notice" }, a._l(t.sharedNotice, function(e, r) {
13
+ return s("li", { key: r, domProps: { innerHTML: a._s(e) } });
14
+ }), 0)])], 1) : a._e(), t.activeTab === t.DetailTabs.GENERAL ? s("div", [s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.suitable-page-and-channel-types")) + " ")]), a._l(t.visibleRows(t.pageAndChannelDetails), function(e, r) {
15
+ return s(t.InfoDisplayValue, { key: e.title, attrs: { index: r, title: e.title, "translate-value": e.translateValue, value: e.value } });
16
+ })], 2), s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.recommendation-widget-preferences")) + " ")]), a._l(t.visibleRows(t.widgetPreferences), function(e, r) {
17
+ return s(t.InfoDisplayValue, { key: e.title, attrs: { index: r, title: e.title, "translate-value": e.translateValue, value: e.value } });
18
+ })], 2), s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.advanced-personalization-criteria")) + " ")]), a._l(t.visibleRows(t.advancedPersonalization), function(e, r) {
19
+ return s(t.InfoDisplayValue, { key: e.title, attrs: { index: r, title: e.title, "translate-value": e.translateValue, value: e.value } });
20
+ })], 2), s("div", { staticClass: "px-5 py-5" }, [s("div", { staticClass: "f-s-13 f-w-600 mb-3" }, [a._v(" " + a._s(t.trans("discovery-strategy.filters")) + " ")]), s(t.FilterHumanizer, { attrs: { filters: t.strategy.filters } })], 1)]) : a._e(), t.activeTab === t.DetailTabs.OTHER ? s("div", [s("div", { staticClass: "px-5 py-5 bor-b-s-s bor-b-c-6 bor-b-w-1 other-details" }, a._l(t.visibleRows(t.otherDetails), function(e, r) {
21
+ return s(t.InfoDisplayValue, { key: e.title, attrs: { icon: e.icon, "icon-tooltip": e.iconTooltip, "icon-tooltip-after-clicked": e.iconTooltipAfterClicked, index: r, title: e.title, "translate-value": e.translateValue, value: e.value }, on: { iconClick: function(f) {
22
+ var n;
23
+ (n = e.iconClick) == null || n.call(e, e.value);
24
+ } } });
25
+ }), 1), s("div", { staticClass: "px-5 py-5" }, [s(t.CampaignTable, { attrs: { campaigns: t.store.strategyCampaigns, loading: t.store.strategyCampaignsLoading } })], 1)]) : a._e()]) : a._e()];
26
+ }, proxy: !0 }]) });
27
+ }, u = [], v = /* @__PURE__ */ l(
28
+ o,
29
+ c,
30
+ u,
31
+ !1,
32
+ null,
33
+ "8e655adb"
34
+ );
35
+ const _ = v.exports;
36
+ export {
37
+ _ as default
38
+ };