@useinsider/guido 1.0.3-beta.15520d1 → 1.0.3-beta.173d19c

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 (150) hide show
  1. package/README.md +0 -2
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +61 -64
  4. package/dist/composables/useStripo.js +38 -44
  5. package/dist/enums/defaults.js +1 -2
  6. package/dist/enums/environment.js +5 -0
  7. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +68 -158
  8. package/dist/extensions/Blocks/Recommendation/constants.js +1 -10
  9. package/dist/extensions/Blocks/Recommendation/control.js +59 -74
  10. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  11. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  12. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  13. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  14. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  15. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  16. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  17. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  18. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  19. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  20. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  21. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  22. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  23. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  24. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  26. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  27. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  28. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  29. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  30. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  31. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  32. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  33. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/extension.js +40 -16
  45. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +71 -124
  46. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
  47. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +65 -89
  48. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +19 -56
  49. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +45 -74
  50. package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -25
  51. package/dist/extensions/DynamicContent/dynamic-content.js +33 -128
  52. package/dist/guido.css +1 -1
  53. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +70 -75
  54. package/dist/src/@types/generic.d.ts +6 -27
  55. package/dist/src/components/Guido.vue.d.ts +2 -2
  56. package/dist/src/enums/environment.d.ts +5 -0
  57. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +3 -54
  58. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +1 -41
  59. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +2 -5
  60. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  61. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  62. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  63. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  64. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  65. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  66. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  67. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  68. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  69. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  70. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  71. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  72. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  73. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  74. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  75. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  76. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  77. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  78. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  79. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  80. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  81. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  82. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  83. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  84. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  85. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  86. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  87. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  88. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  89. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  90. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  91. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  92. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  93. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  94. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
  95. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
  96. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +1 -1
  97. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +7 -15
  98. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
  99. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -52
  100. package/dist/src/stores/config.d.ts +2 -3
  101. package/dist/src/stores/dynamic-content.d.ts +3 -3
  102. package/dist/src/stores/editor.d.ts +1 -1
  103. package/dist/src/stores/onboarding.d.ts +1 -1
  104. package/dist/src/stores/preview.d.ts +1 -1
  105. package/dist/src/stores/recommendation.d.ts +1 -1
  106. package/dist/src/stores/save-as-template.d.ts +1 -1
  107. package/dist/src/stores/toaster.d.ts +1 -1
  108. package/dist/src/stores/unsubscribe.d.ts +1 -1
  109. package/dist/src/stores/version-history.d.ts +1 -1
  110. package/dist/src/utils/environmentUtil.d.ts +5 -2
  111. package/dist/src/utils/genericUtil.d.ts +0 -1
  112. package/dist/static/styles/components/wide-panel.css.js +4 -0
  113. package/dist/static/styles/customEditorStyle.css.js +0 -14
  114. package/dist/stores/config.js +5 -5
  115. package/dist/stores/dynamic-content.js +2 -2
  116. package/dist/stores/editor.js +1 -1
  117. package/dist/stores/onboarding.js +27 -27
  118. package/dist/stores/preview.js +1 -1
  119. package/dist/stores/recommendation.js +3 -3
  120. package/dist/stores/save-as-template.js +2 -2
  121. package/dist/stores/toaster.js +1 -1
  122. package/dist/stores/unsubscribe.js +1 -1
  123. package/dist/stores/version-history.js +4 -4
  124. package/dist/utils/environmentUtil.js +4 -2
  125. package/dist/utils/genericUtil.js +9 -20
  126. package/package.json +1 -1
  127. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
  128. package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -272
  129. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
  130. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.js +0 -71
  131. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.js +0 -71
  132. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.js +0 -71
  133. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.js +0 -71
  134. package/dist/extensions/Blocks/Recommendation/controls/priceHideControl.js +0 -60
  135. package/dist/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.js +0 -160
  136. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
  137. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -25
  138. package/dist/extensions/Blocks/controlFactories.js +0 -234
  139. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +0 -25
  140. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -71
  141. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
  142. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +0 -15
  143. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +0 -15
  144. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +0 -15
  145. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +0 -15
  146. package/dist/src/extensions/Blocks/Recommendation/controls/priceHideControl.d.ts +0 -16
  147. package/dist/src/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.d.ts +0 -50
  148. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +0 -60
  149. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
  150. package/dist/src/extensions/Blocks/controlFactories.d.ts +0 -95
package/README.md CHANGED
@@ -198,7 +198,6 @@ interface GuidoConfig {
198
198
  saveAsTemplate: boolean;
199
199
  versionHistory: boolean;
200
200
  testMessage: boolean;
201
- displayConditions: boolean;
202
201
  };
203
202
  blocks?: {
204
203
  excludeDefaults?: GuidoBlockType[];
@@ -217,7 +216,6 @@ interface GuidoConfig {
217
216
  | `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
218
217
  | `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
219
218
  | `features.versionHistory` | `boolean` | `true` | Enable version history feature |
220
- | `features.displayConditions` | `boolean` | `true` | Enable display conditions |
221
219
  | `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
222
220
  | `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
223
221
  | `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
@@ -12,7 +12,7 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "23c413c9"
15
+ "e299731b"
16
16
  );
17
17
  const v = s.exports;
18
18
  export {
@@ -1,23 +1,23 @@
1
- import { defineComponent as O, defineAsyncComponent as I, ref as z, computed as U, watch as B, onMounted as K, onUnmounted as j } from "vue";
2
- import { provideGuidoActions as q } from "../composables/useGuidoActions.js";
3
- import { usePartner as J } from "../composables/usePartner.js";
4
- import { useStripo as Q } from "../composables/useStripo.js";
5
- import { migrate as L } from "../config/migrator/index.js";
6
- import { DefaultUsername as V, DefaultMessageType as X, DefaultGuidoConfig as Y } from "../enums/defaults.js";
7
- import Z from "./organisms/base/Toaster.vue.js";
8
- import $ from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
9
- import ee from "./organisms/header/HeaderWrapper.vue.js";
10
- import oe from "./organisms/LoadingWrapper.vue.js";
11
- import te from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
12
- import ne from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
13
- import { useStripoApi as re } from "../services/stripoApi.js";
14
- import { useConfigStore as ie } from "../stores/config.js";
15
- import { useDynamicContentStore as se } from "../stores/dynamic-content.js";
16
- import { useEditorStore as ae } from "../stores/editor.js";
17
- import { usePreviewStore as ce } from "../stores/preview.js";
18
- import { useUnsubscribeStore as me } from "../stores/unsubscribe.js";
19
- import de from "../node_modules/lodash-es/merge.js";
20
- const Ue = /* @__PURE__ */ O({
1
+ import { defineComponent as R, defineAsyncComponent as G, ref as x, computed as I, 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 U } 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 ie } from "../stores/preview.js";
18
+ import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
19
+ import ae from "../node_modules/lodash-es/merge.js";
20
+ const ke = /* @__PURE__ */ R({
21
21
  __name: "Guido",
22
22
  props: {
23
23
  templateId: null,
@@ -33,45 +33,45 @@ const Ue = /* @__PURE__ */ O({
33
33
  },
34
34
  emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
35
35
  setup(W, { expose: _, emit: o }) {
36
- const u = W, A = I(
36
+ const l = W, L = G(
37
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
- ), N = I(
38
+ ), A = G(
39
39
  () => import("./organisms/onboarding/OnboardingWrapper.vue.js")
40
- ), p = z(), i = se(), g = me(), f = ie(), s = ae(), F = ce(), n = U(() => s.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
40
+ ), u = x(), i = ne(), p = se(), g = te(), s = re(), N = ie(), n = I(() => s.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
41
41
  var e;
42
- return (e = p.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = u.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
44
  templateId: a,
45
- userId: C,
46
- guidoConfig: h,
45
+ userId: b,
46
+ guidoConfig: C,
47
47
  templateConfig: t,
48
48
  html: r = "",
49
- css: S = "",
50
- partnerName: c = y(),
51
- productType: m = v(),
52
- messageType: w = X,
53
- username: D = V
54
- } = u, d = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
55
- s.templateId = a, window.GuidoConfig = de(Y, h), window.GuidoConfig.partner = {
49
+ css: h = "",
50
+ partnerName: c = f(),
51
+ productType: d = y(),
52
+ messageType: S = J,
53
+ username: w = q
54
+ } = l, m = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
55
+ s.templateId = a, window.GuidoConfig = ae(Q, C), window.GuidoConfig.partner = {
56
56
  partnerName: c,
57
- productType: m,
58
- messageType: w
59
- }, f.templateConfig = t;
60
- const { initPlugin: E } = Q({
57
+ productType: d,
58
+ messageType: S
59
+ }, g.templateConfig = t;
60
+ const { initPlugin: D } = j({
61
61
  emailId: a,
62
- userId: C,
63
- username: D,
62
+ userId: b,
63
+ username: w,
64
64
  partnerName: c,
65
- productType: m,
66
- preselectedDynamicContentList: d,
65
+ productType: d,
66
+ preselectedDynamicContentList: m,
67
67
  onReady: () => {
68
68
  console.debug("guido:ready"), o("ready");
69
69
  }
70
- }), { getDefaultTemplate: T } = re(), R = U(() => {
70
+ }), { getDefaultTemplate: T } = oe(), H = I(() => {
71
71
  var e;
72
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
73
73
  });
74
- q({
74
+ K({
75
75
  onBack: () => {
76
76
  console.debug("guido:back"), o("back");
77
77
  },
@@ -85,35 +85,32 @@ const Ue = /* @__PURE__ */ O({
85
85
  console.debug("guido:test-email:click"), o("test-email:click");
86
86
  }
87
87
  });
88
- const P = (e) => {
88
+ const E = (e) => {
89
89
  console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
90
- }, k = () => {
90
+ }, P = () => {
91
91
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
92
92
  };
93
- B(() => n.value, () => {
93
+ return M(() => n.value, () => {
94
94
  o("on-change", n.value);
95
- });
96
- const l = (e) => {
97
- const G = e, { attribute: x, position: M } = G.detail;
98
- console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
99
- };
100
- return K(async () => {
95
+ }), z(async () => {
101
96
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
102
97
  try {
103
- g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
98
+ p.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
104
99
  let e = {
105
- html: r && await L(r),
106
- css: S,
100
+ html: r && await U(r),
101
+ css: h,
107
102
  forceRecreate: !0
108
103
  // TODO: It should be false for old templates. We will communicate with Stripo
109
104
  };
110
- e.html || (e = await T(), e.html = await L(e.html)), await E(e), i.selectedDynamicContentList = d;
105
+ e.html || (e = await T(), e.html = await U(e.html)), await D(e), i.selectedDynamicContentList = m;
111
106
  } catch (e) {
112
107
  console.error("Failed to initialize Stripo editor:", e);
113
108
  }
114
- document.addEventListener("dynamic-content:open", l);
115
- }), j(() => {
116
- document.removeEventListener("dynamic-content:open", l);
109
+ document.addEventListener("dynamic-content:open", (e) => {
110
+ const k = e;
111
+ console.debug("dynamic-content:open", k.detail), o("dynamic-content:open", k.detail);
112
+ });
113
+ }), B(() => {
117
114
  try {
118
115
  window.UIEditor.removeEditor();
119
116
  } catch {
@@ -121,14 +118,14 @@ const Ue = /* @__PURE__ */ O({
121
118
  }
122
119
  }), _({
123
120
  dynamicContent: {
124
- insert: P,
125
- close: k
121
+ insert: E,
122
+ close: P
126
123
  },
127
124
  hasChanges: n,
128
- saveSilent: b
129
- }), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: u, configStore: f, editorStore: s, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: a, userId: C, guidoConfig: h, templateConfig: t, html: r, css: S, partnerName: c, productType: m, messageType: w, username: D, preselectedDynamicContentList: d, emit: o, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: k, handleDynamicContentOpen: l, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
125
+ saveSilent: v
126
+ }), { __sfc: !0, PreviewContainer: L, OnboardingWrapper: A, headerWrapperRef: u, dynamicContentStore: i, unsubscribeStore: p, props: l, configStore: g, editorStore: s, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: a, userId: b, guidoConfig: C, templateConfig: t, html: r, css: h, partnerName: c, productType: d, messageType: S, username: w, preselectedDynamicContentList: m, emit: o, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
130
127
  }
131
128
  });
132
129
  export {
133
- Ue as default
130
+ ke as default
134
131
  };
@@ -1,25 +1,23 @@
1
- import { useActionsApi as w } from "./useActionsApi.js";
2
- import { useBlocksConfig as b } from "./useBlocksConfig.js";
3
- import { useConfig as k } from "./useConfig.js";
4
- import { useCustomInterfaceAppearance as B } from "./useCustomInterfaceAppearance.js";
5
- import { useStripoEventHandler as V } from "./useStripoEventHandler.js";
6
- import { useToaster as _ } from "./useToaster.js";
7
- import { displayConditions as T } from "../enums/displayConditions.js";
8
- import { useStripoApi as A } from "../services/stripoApi.js";
9
- import F from "../static/styles/customEditorStyle.css.js";
10
- import { useEditorStore as M } from "../stores/editor.js";
11
- import { dynamicContentToMergeTags as U } from "../utils/genericUtil.js";
12
- import v from "../package.json.js";
13
- const J = (c) => {
14
- const { config: l } = k(), { handleError: u } = _(), { getToken: f, getCustomFonts: S } = A(), { handleEvent: y } = V(), { getStripoBlocksConfig: C } = b(), E = async (i, r = []) => {
15
- var m, g;
16
- const t = M(), { html: n, css: p, forceRecreate: a } = i, { baseBlocks: e, extensions: d } = await C();
1
+ import { useActionsApi as y } from "./useActionsApi.js";
2
+ import { useBlocksConfig as E } from "./useBlocksConfig.js";
3
+ import { useCustomInterfaceAppearance as w } from "./useCustomInterfaceAppearance.js";
4
+ import { useStripoEventHandler as h } from "./useStripoEventHandler.js";
5
+ import { useToaster as b } from "./useToaster.js";
6
+ import { displayConditions as k } from "../enums/displayConditions.js";
7
+ import { useStripoApi as B } from "../services/stripoApi.js";
8
+ import V from "../static/styles/customEditorStyle.css.js";
9
+ import { useEditorStore as _ } from "../stores/editor.js";
10
+ import { dynamicContentToMergeTags as F } from "../utils/genericUtil.js";
11
+ import A from "../package.json.js";
12
+ const L = (d) => {
13
+ const { handleError: u } = b(), { getToken: p, getCustomFonts: m } = B(), { handleEvent: g } = h(), { getStripoBlocksConfig: f } = E(), S = async (r, i = []) => {
14
+ const t = _(), { html: n, css: l, forceRecreate: a } = r, { baseBlocks: e, extensions: c } = await f();
17
15
  window.UIEditor.initEditor(
18
16
  document.querySelector("#guido-editor"),
19
17
  {
20
- metadata: c,
18
+ metadata: d,
21
19
  html: n,
22
- css: p,
20
+ css: l,
23
21
  forceRecreate: a,
24
22
  locale: "en",
25
23
  undoButtonSelector: "#guido__undo-button",
@@ -30,31 +28,27 @@ const J = (c) => {
30
28
  customAppearanceMergetags: !0,
31
29
  customAppearanceMergetagsBorderColor: "#f1f3fe",
32
30
  customAppearanceMergetagsBackgroundColor: "#f1f3fe",
33
- customViewStyles: F,
34
- conditionsEnabled: ((m = l.features) == null ? void 0 : m.displayConditions) ?? !0,
35
- customConditionsEnabled: ((g = l.features) == null ? void 0 : g.displayConditions) ?? !0,
36
- conditionCategories: T,
31
+ customViewStyles: V,
32
+ conditionsEnabled: !0,
33
+ customConditionsEnabled: !0,
34
+ conditionCategories: k,
37
35
  enableXSSSecurity: !0,
38
- messageSettingsEnabled: !0,
39
- displayGmailAnnotations: !0,
40
- displayHiddenPreheader: !1,
41
- displayTitle: !1,
42
- displayUTM: !1,
36
+ messageSettingsEnabled: !1,
43
37
  selectBlockAfterDropFromSettingsPanel: !0,
44
38
  ...e ? { baseBlocks: e } : {},
45
39
  editorFonts: {
46
40
  showDefaultStandardFonts: !0,
47
41
  showDefaultNotStandardFonts: !0,
48
- customFonts: r
42
+ customFonts: i
49
43
  },
50
44
  mergeTags: [
51
45
  {
52
- entries: U(c.preselectedDynamicContentList)
46
+ entries: F(d.preselectedDynamicContentList)
53
47
  }
54
48
  ],
55
49
  async onTokenRefreshRequest(o) {
56
50
  try {
57
- const s = await f();
51
+ const s = await p();
58
52
  o(s);
59
53
  } catch (s) {
60
54
  u(s, "Failed to refresh token");
@@ -62,8 +56,8 @@ const J = (c) => {
62
56
  },
63
57
  onTemplateLoaded() {
64
58
  try {
65
- const { importCss: o } = B(), { activateCustomViewStyles: s } = w();
66
- o(), s(), c.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
59
+ const { importCss: o } = w(), { activateCustomViewStyles: s } = y();
60
+ o(), s(), d.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
67
61
  t.hasChanges = !1;
68
62
  }, 1e3);
69
63
  } catch (o) {
@@ -82,35 +76,35 @@ const J = (c) => {
82
76
  onDataChanged() {
83
77
  t.hasChanges = !0;
84
78
  },
85
- onEvent: y,
79
+ onEvent: g,
86
80
  ignoreClickOutsideSelectors: [
87
81
  "#guido-dynamic-content-modal",
88
82
  ".in-on-board-wrapper",
89
83
  ".in-drawer__container"
90
84
  ],
91
- extensions: d
85
+ extensions: c
92
86
  }
93
87
  );
94
- }, h = (i) => new Promise((r, t) => {
95
- var d;
88
+ }, C = (r) => new Promise((i, t) => {
89
+ var c;
96
90
  if (document.getElementById("UiEditorScript")) {
97
- i(), r();
91
+ r(), i();
98
92
  return;
99
93
  }
100
- const n = v.guido, a = `https://email-static.useinsider.com/guido/${(d = n == null ? void 0 : n.stripo) == null ? void 0 : d.version}/UIEditor.js`, e = document.createElement("script");
94
+ const n = A.guido, a = `https://email-static.useinsider.com/guido/${(c = n == null ? void 0 : n.stripo) == null ? void 0 : c.version}/UIEditor.js`, e = document.createElement("script");
101
95
  e.id = "UiEditorScript", e.type = "module", e.src = a, e.onload = () => {
102
- i(), r();
96
+ r(), i();
103
97
  }, e.onerror = () => {
104
98
  t(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
105
99
  }, document.body.appendChild(e);
106
100
  });
107
- return { initPlugin: async (i) => {
108
- await h(async () => {
109
- const r = await S();
110
- await E(i, r);
101
+ return { initPlugin: async (r) => {
102
+ await C(async () => {
103
+ const i = await m();
104
+ await S(r, i);
111
105
  });
112
106
  } };
113
107
  };
114
108
  export {
115
- J as useStripo
109
+ L as useStripo
116
110
  };
@@ -16,8 +16,7 @@ const e = {
16
16
  dynamicContent: !0,
17
17
  saveAsTemplate: !0,
18
18
  versionHistory: !0,
19
- testMessage: !0,
20
- displayConditions: !0
19
+ testMessage: !0
21
20
  },
22
21
  useHeader: !0
23
22
  }, t = {
@@ -0,0 +1,5 @@
1
+ const e = "insidethekube", s = "useinsider";
2
+ export {
3
+ e as KUBE_ENV_PREFIX,
4
+ s as PROD_ENV_PREFIX
5
+ };
@@ -1,193 +1,103 @@
1
- import { ModificationDescription as n } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ var m = Object.defineProperty;
2
+ var y = (n, o, i) => o in n ? m(n, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[o] = i;
3
+ var a = (n, o, i) => y(n, typeof o != "symbol" ? o + "" : o, i);
4
+ import { ModificationDescription as u } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
5
  import { CommonControl as b } from "../common-control.js";
3
- import { ATTR_PRODUCT_IMAGE as m, ATTR_PRODUCT_NAME as y, ATTR_PRODUCT_PRICE as T, ATTR_PRODUCT_OLD_PRICE as h, ATTR_PRODUCT_OMNIBUS_PRICE as C, ATTR_PRODUCT_OMNIBUS_DISCOUNT as f, ATTR_PRODUCT_BUTTON as g } from "./constants.js";
4
- const R = "ui-elements-recommendation-card-composition", l = ".recommendation-attribute-row", A = "tr.recommendation-product-row", c = "data-card-composition", a = "data-attribute-type", d = "data-visibility", s = [
5
- { key: m, label: "Product Image", visible: !0 },
6
- { key: y, label: "Product Name", visible: !0 },
7
- { key: T, label: "Product Price", visible: !0 },
8
- { key: h, label: "Product Original Price", visible: !0 },
9
- { key: C, label: "Omnibus Price", visible: !1 },
10
- { key: f, label: "Omnibus Discount", visible: !1 },
11
- { key: g, label: "Product Button", visible: !0 }
6
+ const h = "ui-elements-recommendation-card-composition", s = [
7
+ { key: "productImage", label: "Product Image", visible: !0 },
8
+ { key: "productName", label: "Product Name", visible: !0 },
9
+ { key: "productPrice", label: "Product Price", visible: !0 },
10
+ { key: "productOriginalPrice", label: "Product Original Price", visible: !0 },
11
+ { key: "productButton", label: "Product Button", visible: !0 }
12
12
  ];
13
- class N extends b {
13
+ class g extends b {
14
+ constructor() {
15
+ super(...arguments);
16
+ a(this, "currentComposition", []);
17
+ a(this, "currentVisibility", {});
18
+ }
14
19
  getId() {
15
- return R;
20
+ return h;
16
21
  }
17
22
  getTemplate() {
18
- const t = s.map((i) => ({
19
- key: i.key,
20
- label: i.label,
21
- content: this._createItemContent(i.label, i.key)
23
+ const i = s.map((e) => ({
24
+ key: e.key,
25
+ label: e.label,
26
+ content: `
27
+ <div style="display: flex; align-items: center; justify-content: space-between;
28
+ padding: 8px; gap: 8px;">
29
+ <span style="flex: 1;">${e.label}</span>
30
+ ${this._GuToggle(`visibility_${e.key}`)}
31
+ </div>
32
+ `
22
33
  }));
23
34
  return `
24
35
  <div class="container">
25
36
  ${this._GuLabel({ text: "Card Element Order & Visibility" })}
26
- ${this._GuOrderable("cardComposition", t)}
37
+ ${this._GuOrderable("cardComposition", i)}
27
38
  </div>
28
39
  `;
29
40
  }
30
41
  onRender() {
31
- this._initializeComposition(), this._registerValueChangeListeners();
32
- }
33
- onTemplateNodeUpdated(t) {
34
- super.onTemplateNodeUpdated(t), this._initializeComposition();
35
- }
36
- /**
37
- * Creates the HTML content for an orderable item with label and toggle
38
- */
39
- _createItemContent(t, i) {
40
- return `
41
- <div style="display: flex; align-items: center; justify-content: space-between;
42
- padding: 8px; gap: 8px;">
43
- <span style="flex: 1;">${t}</span>
44
- ${this._GuToggle(`visibility_${i}`)}
45
- </div>
46
- `;
47
- }
48
- /**
49
- * Registers event listeners for composition and visibility changes
50
- */
51
- _registerValueChangeListeners() {
52
- this.api.onValueChanged("cardComposition", (t) => {
53
- this._applyCompositionToBlock(t);
54
- }), s.forEach((t) => {
55
- this.api.onValueChanged(`visibility_${t.key}`, (i) => {
56
- this._applyVisibilityToBlock(t.key, i);
42
+ this._initializeComposition(), this.api.onValueChanged("cardComposition", (i) => {
43
+ this.currentComposition = i, this._applyCompositionToBlock(i);
44
+ }), s.forEach((i) => {
45
+ this.api.onValueChanged(`visibility_${i.key}`, (e) => {
46
+ this.currentVisibility[i.key] = e, this._applyVisibilityToBlock();
57
47
  });
58
48
  });
59
49
  }
50
+ onTemplateNodeUpdated(i) {
51
+ super.onTemplateNodeUpdated(i), this._initializeComposition();
52
+ }
60
53
  /**
61
- * Initializes composition order and visibility state from the current node
54
+ * Initialize the composition order and visibility from the block or use defaults
62
55
  */
63
56
  _initializeComposition() {
64
- const t = this._readCompositionFromNode(), i = this._readVisibilityFromRows(), e = {
65
- cardComposition: t,
66
- ...this._buildVisibilityValues(i)
57
+ var p;
58
+ const i = (p = this.currentNode) == null ? void 0 : p.querySelector(".ins-recommendation-v3-block-v2");
59
+ let e = null, l = null;
60
+ if (i && "getAttribute" in i && (e = i.getAttribute("data-card-composition"), l = i.getAttribute("data-card-visibility")), e) {
61
+ const t = e.split(",").filter(Boolean), r = s.map((c) => c.key);
62
+ t.every((c) => r.includes(c)) && t.length > 0 ? this.currentComposition = t : this.currentComposition = r;
63
+ } else
64
+ this.currentComposition = s.map((t) => t.key);
65
+ if (l)
66
+ try {
67
+ const t = JSON.parse(l);
68
+ this.currentVisibility = t;
69
+ } catch {
70
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
71
+ }
72
+ else
73
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
74
+ const d = {
75
+ cardComposition: this.currentComposition
67
76
  };
68
- this.api.updateValues(e);
69
- }
70
- /**
71
- * Reads composition order from node's data-card-composition attribute
72
- * Falls back to default order if attribute is not present
73
- */
74
- _readCompositionFromNode() {
75
- if (!this.currentNode || !("getAttribute" in this.currentNode))
76
- return this._getDefaultComposition();
77
- const t = this.currentNode.getAttribute(c);
78
- return t ? t.split(",").filter(Boolean) : this._getDefaultComposition();
79
- }
80
- /**
81
- * Gets default composition order
82
- */
83
- _getDefaultComposition() {
84
- return s.map((t) => t.key);
85
- }
86
- /**
87
- * Builds visibility values object from the visibility map
88
- */
89
- _buildVisibilityValues(t) {
90
- return s.reduce((i, e) => (i[`visibility_${e.key}`] = t[e.key] ?? !0, i), {});
91
- }
92
- /**
93
- * Read visibility state from individual row elements' data-visibility attributes
94
- * This ensures toggles reflect the actual DOM state
95
- */
96
- _readVisibilityFromRows() {
97
- if (!this.currentNode)
98
- return this._getDefaultVisibilities();
99
- const t = Array.from(this.currentNode.querySelectorAll(l));
100
- console.debug("_readVisibilityFromRows - found attribute rows:", t.length);
101
- const i = this._extractVisibilityFromRows(t);
102
- return this._mergeWithDefaults(i);
103
- }
104
- /**
105
- * Returns default visibility values for all items
106
- */
107
- _getDefaultVisibilities() {
108
- return s.reduce((t, i) => (t[i.key] = i.visible, t), {});
109
- }
110
- /**
111
- * Extracts visibility values from DOM nodes
112
- */
113
- _extractVisibilityFromRows(t) {
114
- const i = {};
115
- return t.forEach((e) => {
116
- if (!("getAttribute" in e))
117
- return;
118
- const o = e.getAttribute(a), r = e.getAttribute(d);
119
- o && r !== null && (i[o] = this._parseVisibilityValue(r), console.debug(
120
- `_readVisibilityFromRows - ${o}: ${i[o]} (raw: ${r})`
121
- ));
122
- }), i;
123
- }
124
- /**
125
- * Parses visibility value from string to boolean
126
- * Accepts "1", "true" as true, everything else as false
127
- */
128
- _parseVisibilityValue(t) {
129
- return t === "1" || t === "true";
130
- }
131
- /**
132
- * Merges extracted visibilities with default values for missing keys
133
- */
134
- _mergeWithDefaults(t) {
135
- return s.forEach((i) => {
136
- i.key in t || (t[i.key] = i.visible, console.debug(`_readVisibilityFromRows - ${i.key}: using default ${i.visible}`));
137
- }), t;
77
+ s.forEach((t) => {
78
+ d[`visibility_${t.key}`] = this.currentVisibility[t.key] ?? !0;
79
+ }), this.api.updateValues(d);
138
80
  }
139
81
  /**
140
82
  * Apply the reordered composition to the block's HTML structure
141
- * Updates the data-card-composition attribute and reorders product attributes
142
- */
143
- _applyCompositionToBlock(t) {
144
- if (console.debug("_applyCompositionToBlock - composition:", t), !this.currentNode) {
145
- console.debug("_applyCompositionToBlock - no current node");
146
- return;
147
- }
148
- this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(c, t.join(",")).apply(new n("Update card composition")), this._reorderProductAttributes(t);
149
- }
150
- /**
151
- * Reorders attribute rows within each product row based on composition order
152
83
  */
153
- _reorderProductAttributes(t) {
84
+ _applyCompositionToBlock(i) {
154
85
  if (!this.currentNode)
155
86
  return;
156
- const i = this.currentNode.querySelectorAll(A);
157
- if (!(i != null && i.length))
158
- return;
159
- const e = this.api.getDocumentModifier();
160
- i.forEach((o) => {
161
- const r = this._buildCompositionHtml(o, t);
162
- e.modifyHtml(o).setInnerHtml(r);
163
- }), e.apply(new n("Reorder product attributes"));
164
- }
165
- /**
166
- * Builds HTML string with attributes ordered according to composition
167
- */
168
- _buildCompositionHtml(t, i) {
169
- return i.reduce((e, o) => {
170
- const r = t.querySelector(`${l}[${a}="${o}"]`);
171
- return r && "getOuterHTML" in r ? e + r.getOuterHTML() : e;
172
- }, "");
87
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
88
+ e && this.api.getDocumentModifier().modifyHtml(e).setAttribute("data-card-composition", i.join(",")).apply(new u("Stored card composition order"));
173
89
  }
174
90
  /**
175
91
  * Apply visibility changes to the block's HTML structure
176
- * Updates display style and data-visibility attribute for all matching rows
177
92
  */
178
- _applyVisibilityToBlock(t, i) {
179
- if (console.debug("_applyVisibilityToBlock", t, i), !this.currentNode)
180
- return;
181
- const e = this.currentNode.querySelectorAll(`${l}[${a}="${t}"]`);
182
- if (!(e != null && e.length))
93
+ _applyVisibilityToBlock() {
94
+ if (!this.currentNode)
183
95
  return;
184
- const o = i ? "table-row" : "none", r = i ? "1" : "0", p = `Set ${t} visibility to ${i ? "visible" : "hidden"}`, u = this.api.getDocumentModifier();
185
- e.forEach((_) => {
186
- u.modifyHtml(_).setStyle("display", o).setAttribute(d, r);
187
- }), u.apply(new n(p));
96
+ const i = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
97
+ i && this.api.getDocumentModifier().modifyHtml(i).setAttribute("data-card-visibility", JSON.stringify(this.currentVisibility)).apply(new u("Stored card visibility settings"));
188
98
  }
189
99
  }
190
100
  export {
191
- R as COMPOSITION_CONTROL_BLOCK_ID,
192
- N as RecommendationCardCompositionControl
101
+ h as COMPOSITION_CONTROL_BLOCK_ID,
102
+ g as RecommendationCardCompositionControl
193
103
  };