@useinsider/guido 1.0.3-beta.63e6005 → 1.0.3-beta.671eb65

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 (123) hide show
  1. package/dist/@types/generic.d.ts +6 -1
  2. package/dist/components/Guido.vue.js +7 -7
  3. package/dist/components/Guido.vue2.js +69 -67
  4. package/dist/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +19 -0
  5. package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +28 -0
  6. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +38 -0
  7. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.d.ts +2 -0
  8. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +17 -0
  9. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +37 -0
  10. package/dist/components/organisms/extensions/recommendation/Filters.vue.d.ts +2 -0
  11. package/dist/components/organisms/extensions/recommendation/Filters.vue.js +20 -0
  12. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +44 -0
  13. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue.d.ts +16 -0
  14. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue.js +17 -0
  15. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +27 -0
  16. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  17. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +12 -13
  18. package/dist/composables/useStripo.js +25 -21
  19. package/dist/config/compiler/unsubscribeCompilerRules.js +39 -26
  20. package/dist/config/migrator/couponBlockMigrator.d.ts +1 -0
  21. package/dist/config/migrator/couponBlockMigrator.js +67 -0
  22. package/dist/config/migrator/index.js +7 -6
  23. package/dist/config/migrator/unsubscribeMigrator.js +61 -49
  24. package/dist/enums/extensions/recommendationBlock.d.ts +16 -0
  25. package/dist/enums/extensions/recommendationBlock.js +80 -0
  26. package/dist/enums/unsubscribe.d.ts +4 -0
  27. package/dist/enums/unsubscribe.js +15 -11
  28. package/dist/extensions/Blocks/Checkbox/block.d.ts +1 -0
  29. package/dist/extensions/Blocks/Checkbox/block.js +15 -24
  30. package/dist/extensions/Blocks/Checkbox/control.js +55 -67
  31. package/dist/extensions/Blocks/Checkbox/extension.js +5 -16
  32. package/dist/extensions/Blocks/Checkbox/iconsRegistry.d.ts +4 -0
  33. package/dist/extensions/Blocks/Checkbox/iconsRegistry.js +18 -0
  34. package/dist/extensions/Blocks/Checkbox/settingsPanel.js +12 -25
  35. package/dist/extensions/Blocks/Checkbox/template.js +5 -16
  36. package/dist/extensions/Blocks/CouponBlock/block.d.ts +12 -0
  37. package/dist/extensions/Blocks/CouponBlock/block.js +33 -0
  38. package/dist/extensions/Blocks/CouponBlock/extension.d.ts +2 -0
  39. package/dist/extensions/Blocks/CouponBlock/extension.js +8 -0
  40. package/dist/extensions/Blocks/CouponBlock/iconsRegistry.d.ts +4 -0
  41. package/dist/extensions/Blocks/CouponBlock/iconsRegistry.js +33 -0
  42. package/dist/extensions/Blocks/CouponBlock/settingsPanel.d.ts +4 -0
  43. package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +24 -0
  44. package/dist/extensions/Blocks/CouponBlock/template.d.ts +3 -0
  45. package/dist/extensions/Blocks/CouponBlock/template.js +18 -0
  46. package/dist/extensions/Blocks/RadioButton/block.d.ts +1 -0
  47. package/dist/extensions/Blocks/RadioButton/block.js +13 -22
  48. package/dist/extensions/Blocks/RadioButton/control.js +40 -52
  49. package/dist/extensions/Blocks/RadioButton/extension.js +4 -15
  50. package/dist/extensions/Blocks/RadioButton/iconsRegistry.d.ts +4 -0
  51. package/dist/extensions/Blocks/RadioButton/iconsRegistry.js +14 -0
  52. package/dist/extensions/Blocks/RadioButton/settingsPanel.js +13 -26
  53. package/dist/extensions/Blocks/RadioButton/template.js +13 -24
  54. package/dist/extensions/Blocks/Recommendation/block.d.ts +10 -0
  55. package/dist/extensions/Blocks/Recommendation/block.js +27 -0
  56. package/dist/extensions/Blocks/Recommendation/control.d.ts +29 -0
  57. package/dist/extensions/Blocks/Recommendation/control.js +277 -0
  58. package/dist/extensions/Blocks/Recommendation/extension.d.ts +2 -0
  59. package/dist/extensions/Blocks/Recommendation/extension.js +10 -0
  60. package/dist/extensions/Blocks/Recommendation/iconsRegistry.d.ts +4 -0
  61. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +51 -0
  62. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +19 -0
  63. package/dist/extensions/Blocks/Recommendation/settingsPanel.d.ts +4 -0
  64. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +32 -0
  65. package/dist/extensions/Blocks/Recommendation/store/recommendation.d.ts +555 -0
  66. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +266 -0
  67. package/dist/extensions/Blocks/Recommendation/template.d.ts +6 -0
  68. package/dist/extensions/Blocks/Recommendation/template.js +200 -0
  69. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.d.ts +7 -0
  70. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +28 -0
  71. package/dist/extensions/Blocks/Unsubscribe/block.d.ts +1 -0
  72. package/dist/extensions/Blocks/Unsubscribe/block.js +28 -41
  73. package/dist/extensions/Blocks/Unsubscribe/control.js +43 -56
  74. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +12 -24
  75. package/dist/extensions/Blocks/Unsubscribe/extension.js +10 -21
  76. package/dist/extensions/Blocks/Unsubscribe/iconsRegistry.d.ts +4 -0
  77. package/dist/extensions/Blocks/Unsubscribe/iconsRegistry.js +21 -0
  78. package/dist/extensions/Blocks/Unsubscribe/settingsPanel.js +27 -24
  79. package/dist/extensions/Blocks/Unsubscribe/tagRegistry.js +6 -18
  80. package/dist/extensions/Blocks/Unsubscribe/template.js +9 -20
  81. package/dist/extensions/Blocks/_Boilerplate/block.d.ts +1 -0
  82. package/dist/extensions/Blocks/_Boilerplate/iconsRegistry.d.ts +4 -0
  83. package/dist/extensions/Blocks/common-control.d.ts +66 -0
  84. package/dist/extensions/Blocks/common-control.js +102 -0
  85. package/dist/extensions/DynamicContent/dynamic-content.js +31 -45
  86. package/dist/extensions/DynamicContent/extension.js +6 -18
  87. package/dist/guido.css +1 -1
  88. package/dist/mock/api/recommendation.d.ts +2 -0
  89. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +659 -0
  90. package/dist/services/recommendationApi.d.ts +6 -0
  91. package/dist/services/recommendationApi.js +43 -0
  92. package/dist/stores/config.d.ts +96 -0
  93. package/dist/stores/config.js +17 -0
  94. package/dist/stores/editor.d.ts +21 -0
  95. package/dist/stores/editor.js +2 -1
  96. package/dist/stores/unsubscribe.d.ts +72 -2
  97. package/dist/stores/unsubscribe.js +43 -42
  98. package/dist/utils/genericUtil.d.ts +1 -0
  99. package/dist/utils/genericUtil.js +8 -7
  100. package/dist/utils/templatePreparation.js +17 -16
  101. package/package.json +3 -3
  102. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/Extension.js +0 -75
  103. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ExtensionBuilder.js +0 -77
  104. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/blocks/Block.js +0 -123
  105. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/AiAssistantValueType.js +0 -7
  106. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockCompositionType.js +0 -7
  107. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockName.js +0 -12
  108. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BlockType.js +0 -7
  109. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/BuiltInControlTypes.js +0 -119
  110. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/ContextActionType.js +0 -7
  111. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/EditorStatePropertyType.js +0 -7
  112. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PanelPosition.js +0 -7
  113. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/Popover.js +0 -12
  114. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/PreviewDeviceMode.js +0 -7
  115. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/SettingsTab.js +0 -7
  116. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementType.js +0 -7
  117. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/constants/UIElementsAttributes.js +0 -25
  118. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/Control.js +0 -24
  119. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelRegistry.js +0 -11
  120. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/controls/SettingsPanelTab.js +0 -33
  121. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/modifications/ModificationDescription.js +0 -22
  122. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElement.js +0 -40
  123. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/ui-elements/UIElementTagRegistry.js +0 -5
@@ -23,8 +23,9 @@ export type GuidoConfig = {
23
23
  features?: Features;
24
24
  };
25
25
  export type TemplateConfig = {
26
- preselectedDynamicContentList: DynamicContent[];
26
+ preselectedDynamicContentList?: DynamicContent[];
27
27
  selectedUnsubscribePages?: number[];
28
+ variationId?: string;
28
29
  };
29
30
  export type DynamicContent = {
30
31
  value: string;
@@ -54,4 +55,8 @@ export type MergeTag = {
54
55
  label: string;
55
56
  value: string;
56
57
  };
58
+ export type TextValueObject = {
59
+ text: string;
60
+ value: string;
61
+ };
57
62
  export {};
@@ -1,18 +1,18 @@
1
1
  import a from "./Guido.vue2.js";
2
2
  /* empty css */
3
3
  import i from "../_virtual/_plugin-vue2_normalizer.js";
4
- var s = function() {
4
+ var t = function() {
5
5
  var o = this, r = o._self._c, e = o._self._setupProxy;
6
- return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
7
- }, t = [], d = /* @__PURE__ */ i(
6
+ return r("div", { staticClass: "guido-editor__wrapper", class: { "guido-editor__no-header": e.noHeader } }, [r(e.HeaderWrapper, { ref: "headerWrapperRef" }), e.editorStore.isPreviewModeOpen ? r(e.PreviewContainer) : o._e(), r("div", { directives: [{ name: "show", rawName: "v-show", value: !e.previewStore.isLoaded, expression: "!previewStore.isLoaded" }], staticClass: "guido-editor__container", class: { "guido-editor__no-header": e.noHeader }, attrs: { id: "guido-editor" } }), r(e.Toaster), r(e.FilterSelectionDrawer), r(e.SaveAsTemplateDrawer), e.isTestPartner() ? o._e() : r(e.OnboardingWrapper), r(e.UnsubscribeWrapper), r(e.LoadingWrapper)], 1);
7
+ }, s = [], d = /* @__PURE__ */ i(
8
8
  a,
9
- s,
10
9
  t,
10
+ s,
11
11
  !1,
12
12
  null,
13
- "85d64228"
13
+ "e8d51dec"
14
14
  );
15
- const v = d.exports;
15
+ const l = d.exports;
16
16
  export {
17
- v as default
17
+ l as default
18
18
  };
@@ -1,21 +1,23 @@
1
- import { defineComponent as R, defineAsyncComponent as G, ref as x, computed as U, watch as F, onMounted as M, onUnmounted as z } from "vue";
2
- import { provideGuidoActions as B } from "../composables/useGuidoActions.js";
3
- import { usePartner as K } from "../composables/usePartner.js";
4
- import { useStripo as O } from "../composables/useStripo.js";
5
- import { migrate as I } from "../config/migrator/index.js";
6
- import { DefaultUsername as j, DefaultMessageType as q, DefaultGuidoConfig as J } from "../enums/defaults.js";
7
- import Q from "./organisms/base/Toaster.vue.js";
8
- import V from "./organisms/header/HeaderWrapper.vue.js";
9
- import X from "./organisms/LoadingWrapper.vue.js";
10
- import Y from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
11
- import Z from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
12
- import { useStripoApi as $ } from "../services/stripoApi.js";
13
- import { useDynamicContentStore as ee } from "../stores/dynamic-content.js";
14
- import { useEditorStore as oe } from "../stores/editor.js";
15
- import { usePreviewStore as te } from "../stores/preview.js";
16
- import { useUnsubscribeStore as ne } from "../stores/unsubscribe.js";
17
- import re from "../node_modules/lodash-es/merge.js";
18
- const Se = /* @__PURE__ */ R({
1
+ import { defineComponent as R, defineAsyncComponent as I, ref as x, computed as U, watch as M, onMounted as z, onUnmounted as B } from "vue";
2
+ import { provideGuidoActions as K } from "../composables/useGuidoActions.js";
3
+ import { usePartner as O } from "../composables/usePartner.js";
4
+ import { useStripo as j } from "../composables/useStripo.js";
5
+ import { migrate as W } from "../config/migrator/index.js";
6
+ import { DefaultUsername as q, DefaultMessageType as J, DefaultGuidoConfig as Q } from "../enums/defaults.js";
7
+ import V from "./organisms/base/Toaster.vue.js";
8
+ import X from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
9
+ import Y from "./organisms/header/HeaderWrapper.vue.js";
10
+ import Z from "./organisms/LoadingWrapper.vue.js";
11
+ import $ from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
+ import ee from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
+ import { useStripoApi as oe } from "../services/stripoApi.js";
14
+ import { useConfigStore as te } from "../stores/config.js";
15
+ import { useDynamicContentStore as ne } from "../stores/dynamic-content.js";
16
+ import { useEditorStore as re } from "../stores/editor.js";
17
+ import { usePreviewStore as ae } from "../stores/preview.js";
18
+ import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
19
+ import ie from "../node_modules/lodash-es/merge.js";
20
+ const Ge = /* @__PURE__ */ R({
19
21
  __name: "Guido",
20
22
  props: {
21
23
  templateId: null,
@@ -30,97 +32,97 @@ const Se = /* @__PURE__ */ R({
30
32
  templateConfig: null
31
33
  },
32
34
  emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready"],
33
- setup(W, { expose: _, emit: o }) {
34
- const d = W, L = G(
35
+ setup(_, { expose: L, emit: t }) {
36
+ const u = _, k = I(
35
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
36
- ), k = G(
38
+ ), A = I(
37
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
38
- ), m = x(), s = ee(), u = ne(), l = oe(), A = te(), n = U(() => l.hasChanges), { getPartnerName: p, getProductType: g, isTestPartner: N } = K(), f = () => {
40
+ ), l = x(), a = ne(), p = se(), g = te(), s = re(), N = ae(), n = U(() => s.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
39
41
  var e;
40
- return (e = m.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = l.value) == null ? void 0 : e.handleSave(!0);
41
43
  }, {
42
- templateId: y,
43
- userId: v,
44
- guidoConfig: b,
45
- templateConfig: t,
44
+ templateId: i,
45
+ userId: b,
46
+ guidoConfig: C,
47
+ templateConfig: o,
46
48
  html: r = "",
47
49
  css: h = "",
48
- partnerName: a = p(),
49
- productType: i = g(),
50
- messageType: C = q,
51
- username: w = j
52
- } = d, c = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
53
- window.GuidoConfig = re(J, b), window.GuidoConfig.partner = {
54
- partnerName: a,
55
- productType: i,
56
- messageType: C
57
- };
58
- const { initPlugin: S } = O({
59
- emailId: y,
60
- userId: v,
50
+ partnerName: c = f(),
51
+ productType: m = y(),
52
+ messageType: S = J,
53
+ username: w = q
54
+ } = u, d = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
+ s.templateId = i, window.GuidoConfig = ie(Q, C), window.GuidoConfig.partner = {
56
+ partnerName: c,
57
+ productType: m,
58
+ messageType: S
59
+ }, g.templateConfig = o;
60
+ const { initPlugin: D } = j({
61
+ emailId: i,
62
+ userId: b,
61
63
  username: w,
62
- partnerName: a,
63
- productType: i,
64
- preselectedDynamicContentList: c,
64
+ partnerName: c,
65
+ productType: m,
66
+ preselectedDynamicContentList: d,
65
67
  onReady: () => {
66
- console.debug("guido:ready"), o("ready");
68
+ console.debug("guido:ready"), t("ready");
67
69
  }
68
- }), { getDefaultTemplate: D } = $(), H = U(() => {
70
+ }), { getDefaultTemplate: T } = oe(), H = U(() => {
69
71
  var e;
70
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
71
73
  });
72
- B({
74
+ K({
73
75
  onBack: () => {
74
- console.debug("guido:back"), o("back");
76
+ console.debug("guido:back"), t("back");
75
77
  },
76
78
  onSaveStart: () => {
77
- console.debug("guido:save:start"), o("save:start");
79
+ console.debug("guido:save:start"), t("save:start");
78
80
  },
79
81
  onSaveComplete: (e) => {
80
- console.debug("guido:save:complete", e), o("save:complete", e);
82
+ console.debug("guido:save:complete", e), t("save:complete", e);
81
83
  }
82
84
  });
83
- const T = (e) => {
84
- console.debug("dynamic-content:close", e), s.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
85
- }, E = () => {
85
+ const E = (e) => {
86
+ console.debug("dynamic-content:close", e), a.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
87
+ }, P = () => {
86
88
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
87
89
  };
88
- return F(() => n.value, () => {
89
- o("on-change", n.value);
90
- }), M(async () => {
90
+ return M(() => n.value, () => {
91
+ t("on-change", n.value);
92
+ }), z(async () => {
91
93
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
92
94
  try {
93
- u.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
95
+ p.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
94
96
  let e = {
95
- html: r && await I(r),
97
+ html: r && await W(r),
96
98
  css: h,
97
99
  forceRecreate: !0
98
100
  // TODO: It should be false for old templates. We will communicate with Stripo
99
101
  };
100
- e.html || (e = await D(), e.html = await I(e.html)), await S(e), s.selectedDynamicContentList = c;
102
+ e.html || (e = await T(), e.html = await W(e.html)), await D(e), a.selectedDynamicContentList = d;
101
103
  } catch (e) {
102
104
  console.error("Failed to initialize Stripo editor:", e);
103
105
  }
104
106
  document.addEventListener("dynamic-content:open", (e) => {
105
- const P = e;
106
- console.debug("dynamic-content:open", P.detail), o("dynamic-content:open", P.detail);
107
+ const G = e;
108
+ console.debug("dynamic-content:open", G.detail), t("dynamic-content:open", G.detail);
107
109
  });
108
- }), z(() => {
110
+ }), B(() => {
109
111
  try {
110
112
  window.UIEditor.removeEditor();
111
113
  } catch {
112
114
  console.debug("Failed to remove Stripo editor: No editor found");
113
115
  }
114
- }), _({
116
+ }), L({
115
117
  dynamicContent: {
116
- insert: T,
117
- close: E
118
+ insert: E,
119
+ close: P
118
120
  },
119
121
  hasChanges: n,
120
- saveSilent: f
121
- }), { __sfc: !0, PreviewContainer: L, OnboardingWrapper: k, headerWrapperRef: m, dynamicContentStore: s, unsubscribeStore: u, props: d, editorStore: l, previewStore: A, hasChanges: n, getPartnerName: p, getProductType: g, isTestPartner: N, saveSilent: f, templateId: y, userId: v, guidoConfig: b, templateConfig: t, html: r, css: h, partnerName: a, productType: i, messageType: C, username: w, preselectedDynamicContentList: c, emit: o, initPlugin: S, getDefaultTemplate: D, noHeader: H, insertDynamicContent: T, closeDynamicContent: E, Toaster: Q, HeaderWrapper: V, LoadingWrapper: X, SaveAsTemplateDrawer: Y, UnsubscribeWrapper: Z };
122
+ saveSilent: v
123
+ }), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: l, dynamicContentStore: a, unsubscribeStore: p, props: u, configStore: g, editorStore: s, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: i, userId: b, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: c, productType: m, messageType: S, username: w, preselectedDynamicContentList: d, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
122
124
  }
123
125
  });
124
126
  export {
125
- Se as default
127
+ Ge as default
126
128
  };
@@ -0,0 +1,19 @@
1
+ import type { Filter } from '@@/Types/recommendation';
2
+ type __VLS_Props = {
3
+ filter: Filter;
4
+ index: number;
5
+ hasLogicAdapter?: boolean;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__VLS_Props>, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
8
+ "delete-filter": (filter: Filter) => void;
9
+ }, string, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<__VLS_Props>>>, {}>;
10
+ export default _default;
11
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
12
+ type __VLS_TypePropsToOption<T> = {
13
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
14
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
15
+ } : {
16
+ type: import('vue').PropType<T[K]>;
17
+ required: true;
18
+ };
19
+ };
@@ -0,0 +1,28 @@
1
+ import r from "./FilterItem.vue2.js";
2
+ /* empty css */
3
+ import i from "../../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var l = function() {
5
+ var a = this, e = a._self._c, t = a._self._setupProxy;
6
+ return e("div", { staticClass: "d-f f-d-c w-1 gap-16" }, [e("div", { staticClass: "d-f a-i-c j-c-s-b pt-4", class: { "bor-t-s-s bor-t-w-1 bor-t-c-50": a.index === 0 } }, [e("p", [a._v(" " + a._s(t.trans("newsletter.filter")) + " " + a._s(a.index + 1) + " ")]), e(t.InButtonV2, { attrs: { id: "guido__delete-filter-group-button", "left-icon": "line-delete", styling: "text", type: "danger", "label-text-status": !1 }, on: { click: function(s) {
7
+ return t.emit("delete-filter", t.props.filter);
8
+ } } })], 1), e("div", { staticClass: "w-1 d-f a-i-s j-c-s-b gap-16" }, [e(t.InSelect, { staticClass: "w-2", attrs: { "disabled-status": "", "search-status": "", "button-status": !1, "label-text": t.trans("action-builder.filter-type"), options: t.filterTypeOptions, value: [t.filterTypeOptions[0]] } }), e(t.InSelect, { staticClass: "w-2", attrs: { id: "filter-item-input--attribute-type", "search-status": "", "static-position": "bottom right", "button-status": !1, "label-text": t.trans("condition.attribute"), options: t.store.getFilterList, value: [t.selectedAttributeType] }, on: { select: function(s) {
9
+ return t.updateFilter({ text: "attribute", value: s.value });
10
+ } } })], 1), e("div", { staticClass: "w-1 d-f a-i-s j-c-s-b gap-16" }, [e(t.InSelect, { staticClass: "w-2", attrs: { "button-status": !1, "label-text": t.trans("condition.operator"), options: t.getOperatorOptions(t.selectedAttributeType.type), value: [t.selectedOperatorType] }, on: { select: function(s) {
11
+ return t.updateFilter({ text: "operator", value: s.value });
12
+ } } }), e(t.InBasicTextInput, { staticClass: "w-2", attrs: { id: "filter-item-input--value", name: "imageUrl", type: "text", "character-counter-status": !1, "label-text": t.trans("condition.value"), "max-character-length": 25, "placeholder-text": t.trans("condition.enter-value-placeholder"), "tooltip-status": !1, value: decodeURIComponent(t.props.filter.value) }, on: { input: function(s) {
13
+ t.updateFilter({ text: "value", value: encodeURIComponent(s) });
14
+ } } })], 1), t.props.hasLogicAdapter ? e("div", { staticClass: "w-1 d-f a-i-c j-c-c p-r bor-b-s-s bor-b-w-1 bor-b-c-50 mt-4" }, [e(t.LogicAdapter, { staticClass: "p-a", attrs: { logic: t.props.filter.innerGroupOperator }, on: { change: function(s) {
15
+ return t.updateFilter({ text: "innerGroupOperator", value: s });
16
+ } } })], 1) : a._e()]);
17
+ }, n = [], o = /* @__PURE__ */ i(
18
+ r,
19
+ l,
20
+ n,
21
+ !1,
22
+ null,
23
+ "6562e38c"
24
+ );
25
+ const f = o.exports;
26
+ export {
27
+ f as default
28
+ };
@@ -0,0 +1,38 @@
1
+ import { defineComponent as f, computed as i } from "vue";
2
+ import { useTranslations as v } from "../../../../composables/useTranslations.js";
3
+ import { getOperatorOptions as a } from "../../../../enums/extensions/recommendationBlock.js";
4
+ import { useRecommendationExtensionStore as x } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
+ import { InButtonV2 as y, InSelect as F, InBasicTextInput as T } from "@useinsider/design-system-vue";
6
+ import _ from "./LogicAdapter.vue.js";
7
+ import { useDebounceFn as b } from "../../../../node_modules/@vueuse/shared/index.js";
8
+ const h = /* @__PURE__ */ f({
9
+ __name: "FilterItem",
10
+ props: {
11
+ filter: null,
12
+ index: null,
13
+ hasLogicAdapter: { type: Boolean }
14
+ },
15
+ emits: ["delete-filter"],
16
+ setup(p, { emit: u }) {
17
+ const e = p, n = v(), r = x(), m = [
18
+ {
19
+ text: n("email-editor.standard-filter"),
20
+ value: "standardFilter"
21
+ }
22
+ ], s = i(() => e.filter.attribute || ""), l = i(() => r.getFilterList.find((t) => t.value === s.value) || { text: "", value: "", type: "" }), c = i(() => {
23
+ var t;
24
+ return a((t = l.value) == null ? void 0 : t.type).find((o) => o.value === e.filter.operator);
25
+ }), d = b((t) => {
26
+ console.debug("updateFilter: ", t);
27
+ const o = {
28
+ ...e.filter,
29
+ [t.text]: t.value
30
+ };
31
+ r.updateFilter(o);
32
+ }, 500);
33
+ return { __sfc: !0, trans: n, store: r, props: e, filterTypeOptions: m, attributeType: s, selectedAttributeType: l, selectedOperatorType: c, emit: u, updateFilter: d, getOperatorOptions: a, InBasicTextInput: T, InSelect: F, InButtonV2: y, LogicAdapter: _ };
34
+ }
35
+ });
36
+ export {
37
+ h as default
38
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
2
+ export default _default;
@@ -0,0 +1,17 @@
1
+ import o from "./FilterSelectionDrawer.vue2.js";
2
+ import n from "../../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var l = function() {
4
+ var e = this, r = e._self._c, t = e._self._setupProxy;
5
+ return r(t.WpDrawer, { attrs: { id: "recommendation-filter-drawer", "title-text": "Filter Selection", "footer-button-group-options": t.footerButtonGroupOptions, status: t.store.filterSelectionDrawerStatus }, on: { cancelOrBackButtonEvent: t.closeModal, onCloseEvent: t.closeModal, primaryButtonEvent: t.applyFilter } }, [r(t.Filters)], 1);
6
+ }, s = [], a = /* @__PURE__ */ n(
7
+ o,
8
+ l,
9
+ s,
10
+ !1,
11
+ null,
12
+ null
13
+ );
14
+ const p = a.exports;
15
+ export {
16
+ p as default
17
+ };
@@ -0,0 +1,37 @@
1
+ import { defineComponent as n, ref as a, computed as l } from "vue";
2
+ import i from "../../../wrappers/WpDrawer.vue.js";
3
+ import { useTranslations as p } from "../../../../composables/useTranslations.js";
4
+ import { useRecommendationExtensionStore as c } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
5
+ import u from "./Filters.vue.js";
6
+ const b = /* @__PURE__ */ n({
7
+ __name: "FilterSelectionDrawer",
8
+ setup(m) {
9
+ const t = p(), o = c(), e = a(!1), s = l(() => ({
10
+ primaryButton: {
11
+ styling: "solid",
12
+ type: "primary",
13
+ labelText: t(
14
+ e.value ? "unsubscription-preference.selecting-type" : "products.select-and-continue"
15
+ ),
16
+ loadingStatus: e.value,
17
+ disabledStatus: !1
18
+ },
19
+ cancelOrBackButton: {
20
+ styling: "ghost",
21
+ type: "secondary",
22
+ labelText: t("products.cancel"),
23
+ disabledStatus: e.value
24
+ }
25
+ })), r = () => {
26
+ o.filterSelectionDrawerStatus = !1;
27
+ };
28
+ return { __sfc: !0, trans: t, store: o, isApplying: e, footerButtonGroupOptions: s, closeModal: r, applyFilter: () => {
29
+ e.value = !0, setTimeout(() => {
30
+ console.debug("Filter applied!"), r(), o.generateFilterQuery();
31
+ }, 2e3);
32
+ }, WpDrawer: i, Filters: u };
33
+ }
34
+ });
35
+ export {
36
+ b as default
37
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
2
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import s from "./Filters.vue2.js";
2
+ /* empty css */
3
+ import a from "../../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var o = function() {
5
+ var i = this, e = i._self._c, t = i._self._setupProxy;
6
+ return e("div", { staticClass: "d-f f-d-c gap-16" }, [e("div", { staticClass: "d-f a-i-c j-c-s-b gap-16" }, [e(t.InSegments, { staticClass: "f-g-1 w-1", attrs: { id: "guido__filter-group-segments", "segment-list": t.filterGroupList, selected: t.selectedFilterGroup, "with-icon": !1 }, on: { click: t.changeFilterGroup } }), e(t.InButtonV2, { staticClass: "w-20-s f-g-1", attrs: { id: "guido__add-filter-group-button", "left-icon": "line-plus-netural", type: "secondary", "disabled-status": t.isMaxFilterGroupCount, "label-text": t.trans("smart-recommender.add-filter-group"), "tooltip-text": t.isMaxFilterGroupCount ? t.trans("email-editor.add-filter-tooltip") : "" }, on: { click: t.handleAddFilterGroup } })], 1), e("div", { staticClass: "d-f a-i-c j-c-s-b gap-16" }, [e("div", { staticClass: "d-f a-i-c" }, [t.selectedFilterGroup > 1 ? e(t.LogicAdapter, { staticClass: "mr-2" }) : i._e(), e("p", [i._v(" " + i._s(t.trans("email-editor.filter-group")) + " " + i._s(t.selectedFilterGroup) + " ")])], 1), t.hasRemoveFilterButton ? e(t.InButtonV2, { attrs: { id: "guido__delete-filter-group-button", "left-icon": "line-delete", styling: "text", type: "danger", "label-text-status": !1 }, on: { click: t.handleDeleteFilterGroup } }) : i._e()], 1), e("div", { staticClass: "d-f a-i-c j-c-s-b f-d-c" }, i._l(t.selectedFilterGroupFilters, function(l, r) {
7
+ return e(t.FilterItem, { key: r, attrs: { filter: l, "has-logic-adapter": t.hasLogicAdapter && r !== t.selectedFilterGroupFilters.length - 1, index: r }, on: { "delete-filter": t.handleDeleteFilter } });
8
+ }), 1), e("div", { staticClass: "d-f a-i-c j-c-c mt-3" }, [e(t.InButtonV2, { staticClass: "w-11-s", attrs: { id: "filter-group--add-filter-button", "left-icon": "line-plus-netural", type: "subtle-primary", "label-text": t.trans("smart-recommender.add-filter-condition") }, on: { click: t.handleAddFilter } })], 1)]);
9
+ }, d = [], n = /* @__PURE__ */ a(
10
+ s,
11
+ o,
12
+ d,
13
+ !1,
14
+ null,
15
+ "1ccb6d4a"
16
+ );
17
+ const _ = n.exports;
18
+ export {
19
+ _ as default
20
+ };
@@ -0,0 +1,44 @@
1
+ import { defineComponent as m, computed as o, ref as h } from "vue";
2
+ import { useTranslations as G } from "../../../../composables/useTranslations.js";
3
+ import { useRecommendationExtensionStore as g } from "../../../../extensions/Blocks/Recommendation/store/recommendation.js";
4
+ import { InButtonV2 as v, InSegments as f } from "@useinsider/design-system-vue";
5
+ import _ from "./FilterItem.vue.js";
6
+ import A from "./LogicAdapter.vue.js";
7
+ const E = /* @__PURE__ */ m({
8
+ __name: "Filters",
9
+ setup(R) {
10
+ const i = G(), l = g(), u = o(() => l.getFilterGroupCount), t = o(() => Array.from({ length: u.value }, (e, a) => ({
11
+ text: (a + 1).toString(),
12
+ value: a + 1
13
+ }))), r = h(1), s = (e) => {
14
+ r.value = e;
15
+ }, d = () => {
16
+ const e = t.value.length + 1;
17
+ console.debug("handleAddFilterGroup", e), t.value.push({
18
+ text: e.toString(),
19
+ value: e
20
+ }), l.addFilterGroup(e);
21
+ }, p = o(() => t.value.length >= 3), n = o(() => l.getSelectedFilterGroup(r.value)), c = o(() => n.value.length > 1), F = o(() => t.value.length > 1);
22
+ return { __sfc: !0, MAX_FILTER_GROUP_COUNT: 3, trans: i, store: l, filterGroupCount: u, filterGroupList: t, selectedFilterGroup: r, changeFilterGroup: s, handleAddFilterGroup: d, isMaxFilterGroupCount: p, selectedFilterGroupFilters: n, hasLogicAdapter: c, hasRemoveFilterButton: F, handleAddFilter: () => {
23
+ l.addFilter({
24
+ type: "standardFilter",
25
+ attribute: "",
26
+ operatorReplace: "",
27
+ operator: "",
28
+ innerGroupOperator: "*",
29
+ outerGroupOperator: "*",
30
+ filterNumber: n.value.length + 1,
31
+ filterGroup: r.value,
32
+ isValid: !1,
33
+ value: ""
34
+ }), console.debug("handleAddFilter");
35
+ }, handleDeleteFilter: (e) => {
36
+ console.debug("handleDeleteFilter: ", e), l.deleteFilter(e);
37
+ }, handleDeleteFilterGroup: () => {
38
+ t.value.length !== 1 && (console.debug("handleDeleteFilterGroup"), t.value.splice(r.value - 1, 1), r.value > 1 && r.value--);
39
+ }, InSegments: f, InButtonV2: v, FilterItem: _, LogicAdapter: A };
40
+ }
41
+ });
42
+ export {
43
+ E as default
44
+ };
@@ -0,0 +1,16 @@
1
+ type __VLS_Props = {
2
+ logic?: string;
3
+ };
4
+ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__VLS_Props>, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
5
+ change: (value: string) => void;
6
+ }, string, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<__VLS_Props>>>, {}>;
7
+ export default _default;
8
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
9
+ type __VLS_TypePropsToOption<T> = {
10
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
11
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
12
+ } : {
13
+ type: import('vue').PropType<T[K]>;
14
+ required: true;
15
+ };
16
+ };
@@ -0,0 +1,17 @@
1
+ import s from "./LogicAdapter.vue2.js";
2
+ import n from "../../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var o = function() {
4
+ var t = this, r = t._self._c, e = t._self._setupProxy;
5
+ return r(e.InSegments, { staticClass: "guido__logic-adapter f-g-1", attrs: { "segment-list": e.logicAdapterList, selected: e.selectedLogicAdapter, "with-icon": !1 }, on: { click: e.changeLogicAdapter } });
6
+ }, a = [], c = /* @__PURE__ */ n(
7
+ s,
8
+ o,
9
+ a,
10
+ !1,
11
+ null,
12
+ null
13
+ );
14
+ const p = c.exports;
15
+ export {
16
+ p as default
17
+ };
@@ -0,0 +1,27 @@
1
+ import { defineComponent as s, ref as n } from "vue";
2
+ import { InSegments as p } from "@useinsider/design-system-vue";
3
+ const l = /* @__PURE__ */ s({
4
+ __name: "LogicAdapter",
5
+ props: {
6
+ logic: null
7
+ },
8
+ emits: ["change"],
9
+ setup(r, { emit: e }) {
10
+ const t = r, a = n([
11
+ {
12
+ text: "and",
13
+ value: "*"
14
+ },
15
+ {
16
+ text: "or",
17
+ value: "|"
18
+ }
19
+ ]), o = n(t.logic || "*");
20
+ return { __sfc: !0, logicAdapterList: a, emit: e, props: t, selectedLogicAdapter: o, changeLogicAdapter: (c) => {
21
+ o.value = c, e("change", c);
22
+ }, InSegments: p };
23
+ }
24
+ });
25
+ export {
26
+ l as default
27
+ };
@@ -10,7 +10,7 @@ var i = function() {
10
10
  r,
11
11
  !1,
12
12
  null,
13
- "dda47b76"
13
+ "dd57102d"
14
14
  );
15
15
  const d = c.exports;
16
16
  export {
@@ -9,7 +9,7 @@ import { InSegments as I } from "@useinsider/design-system-vue";
9
9
  const z = /* @__PURE__ */ h({
10
10
  __name: "UnsubscribeTypeSelection",
11
11
  setup(G) {
12
- const e = N(), { showToaster: f } = B(), t = D(), n = b(!1), i = b(!0), r = b(l.GLOBAL_UNSUBSCRIBE), S = e(
12
+ const e = N(), { showToaster: f } = B(), t = D(), n = b(!1), i = b(!0), o = b(l.GLOBAL_UNSUBSCRIBE), S = e(
13
13
  "unsubscription-preference.select-unsubscribe-page-description",
14
14
  { action: `<a href="${w}" target="_blank">${e("ds-rules.visit-academy")}</a>` }
15
15
  ), T = m(() => [
@@ -19,6 +19,7 @@ const z = /* @__PURE__ */ h({
19
19
  text: e("unsubscription-preference.type-global-unsubscribe"),
20
20
  value: l.GLOBAL_UNSUBSCRIBE,
21
21
  disable: t.isGlobalUnsubscribeDisabled,
22
+ position: "bottom",
22
23
  tooltipText: t.isGlobalUnsubscribeDisabled ? e("unsubscription-preference.global-unsub-added") : ""
23
24
  },
24
25
  {
@@ -54,20 +55,20 @@ const z = /* @__PURE__ */ h({
54
55
  s();
55
56
  }, 500);
56
57
  }, E = (s) => {
57
- r.value = s;
58
+ o.value = s;
58
59
  }, g = () => {
59
- const s = t.hasTemplatesByCollectionType, o = [];
60
+ const s = t.hasTemplatesByCollectionType, r = [];
60
61
  if (Object.entries(s).forEach(([c, p]) => {
61
- p || o.push(Number(c));
62
- }), o.length === 0)
62
+ p || r.push(Number(c));
63
+ }), r.length === 0)
63
64
  return !0;
64
- const a = o.map((c) => R[c]);
65
+ const a = r.map((c) => R[c]);
65
66
  let u = "";
66
- if (o.length === 1)
67
+ if (r.length === 1)
67
68
  u = e("unsubscription-preference.create-page-to-continue", {
68
69
  page: a[0]
69
70
  });
70
- else if (o.length === 2)
71
+ else if (r.length === 2)
71
72
  u = e("unsubscription-preference.create-pages-to-continue", {
72
73
  page1: a[0],
73
74
  page2: a[1]
@@ -90,17 +91,15 @@ const z = /* @__PURE__ */ h({
90
91
  }
91
92
  }), !1;
92
93
  }, C = async () => {
93
- if (n.value = !0, await t.fetchTemplates(), t.setCollection(r.value), !g()) {
94
+ if (n.value = !0, await t.fetchTemplates(), t.setCollection(o.value), !g()) {
94
95
  n.value = !1, d();
95
96
  return;
96
97
  }
97
98
  n.value = !1, t.typeSelectionDrawerStatus = !1, t.pageSelectionDrawerStatus = !0;
98
99
  };
99
100
  return _(() => t.typeSelectionDrawerStatus, (s) => {
100
- s && (i.value = !0, r.value = l.GLOBAL_UNSUBSCRIBE, t.isGlobalUnsubscribeDisabled && (r.value = t.isSubscriptionPreferencesCenterDisabled ? 0 : l.SUBSCRIPTION_PREFERENCE_CENTER), setTimeout(() => {
101
- i.value = !1;
102
- }, 1e3));
103
- }), { __sfc: !0, trans: e, showToaster: f, unsubscribeStore: t, isSelecting: n, skeletonStatus: i, selectedCollection: r, descriptionText: S, segmentList: T, footerButtonGroupOptions: y, closeModal: d, changeCollection: E, validateTemplates: g, selectCollection: C, WpDrawer: v, InSegments: I };
101
+ s && (i.value = !0, o.value = l.GLOBAL_UNSUBSCRIBE, t.isGlobalUnsubscribeDisabled && (o.value = t.isSubscriptionPreferencesCenterDisabled ? 0 : l.SUBSCRIPTION_PREFERENCE_CENTER), i.value = !1);
102
+ }), { __sfc: !0, trans: e, showToaster: f, unsubscribeStore: t, isSelecting: n, skeletonStatus: i, selectedCollection: o, descriptionText: S, segmentList: T, footerButtonGroupOptions: y, closeModal: d, changeCollection: E, validateTemplates: g, selectCollection: C, WpDrawer: v, InSegments: I };
104
103
  }
105
104
  });
106
105
  export {