@useinsider/guido 1.0.3-beta.b09e0e0 → 1.0.3-beta.b0f0870

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 (112) hide show
  1. package/README.md +0 -33
  2. package/dist/components/Guido.vue.js +3 -3
  3. package/dist/components/Guido.vue2.js +73 -78
  4. package/dist/components/organisms/header/RightSlot.vue.js +1 -1
  5. package/dist/components/organisms/header/RightSlot.vue2.js +22 -23
  6. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -20
  7. package/dist/composables/useBlocksConfig.js +2 -1
  8. package/dist/composables/useGuidoActions.js +9 -19
  9. package/dist/composables/useStripo.js +9 -9
  10. package/dist/config/compiler/unsubscribeCompilerRules.js +28 -33
  11. package/dist/enums/extensions/recommendationBlock.js +2 -2
  12. package/dist/enums/onboarding.js +3 -7
  13. package/dist/enums/unsubscribe.js +9 -10
  14. package/dist/extensions/Blocks/Checkbox/block.js +2 -5
  15. package/dist/extensions/Blocks/RadioButton/block.js +2 -5
  16. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +43 -43
  17. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
  18. package/dist/extensions/Blocks/common-control.js +110 -174
  19. package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -25
  20. package/dist/extensions/DynamicContent/dynamic-content.js +33 -128
  21. package/dist/guido.css +1 -1
  22. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +168 -213
  23. package/dist/package.json.js +1 -1
  24. package/dist/services/recommendationApi.js +19 -13
  25. package/dist/src/@types/generic.d.ts +6 -26
  26. package/dist/src/components/Guido.vue.d.ts +2 -3
  27. package/dist/src/composables/useGuidoActions.d.ts +0 -9
  28. package/dist/src/enums/onboarding.d.ts +0 -4
  29. package/dist/src/extensions/Blocks/Checkbox/block.d.ts +0 -1
  30. package/dist/src/extensions/Blocks/RadioButton/block.d.ts +0 -1
  31. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -1
  32. package/dist/src/extensions/Blocks/common-control.d.ts +7 -44
  33. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
  34. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -52
  35. package/dist/src/stores/config.d.ts +2 -2
  36. package/dist/src/stores/dynamic-content.d.ts +3 -3
  37. package/dist/src/stores/editor.d.ts +1 -1
  38. package/dist/src/stores/onboarding.d.ts +1 -335
  39. package/dist/src/stores/preview.d.ts +1 -1
  40. package/dist/src/stores/recommendation.d.ts +1 -1
  41. package/dist/src/stores/save-as-template.d.ts +1 -1
  42. package/dist/src/stores/toaster.d.ts +1 -1
  43. package/dist/src/stores/unsubscribe.d.ts +1 -1
  44. package/dist/src/stores/version-history.d.ts +1 -1
  45. package/dist/src/utils/genericUtil.d.ts +0 -1
  46. package/dist/static/styles/customEditorStyle.css.js +1 -1
  47. package/dist/stores/config.js +5 -5
  48. package/dist/stores/dynamic-content.js +2 -2
  49. package/dist/stores/editor.js +1 -1
  50. package/dist/stores/onboarding.js +36 -44
  51. package/dist/stores/preview.js +1 -1
  52. package/dist/stores/recommendation.js +3 -3
  53. package/dist/stores/save-as-template.js +2 -2
  54. package/dist/stores/toaster.js +1 -1
  55. package/dist/stores/unsubscribe.js +1 -1
  56. package/dist/stores/version-history.js +4 -4
  57. package/dist/utils/genericUtil.js +8 -18
  58. package/package.json +4 -11
  59. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +0 -21
  60. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +0 -99
  61. package/dist/extensions/Blocks/Items/block.js +0 -67
  62. package/dist/extensions/Blocks/Items/controls/button/link.js +0 -68
  63. package/dist/extensions/Blocks/Items/controls/cardComposition.js +0 -193
  64. package/dist/extensions/Blocks/Items/controls/image/link.js +0 -68
  65. package/dist/extensions/Blocks/Items/controls/index.js +0 -217
  66. package/dist/extensions/Blocks/Items/controls/name/trimming.js +0 -70
  67. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +0 -107
  68. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +0 -123
  69. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +0 -76
  70. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +0 -61
  71. package/dist/extensions/Blocks/Items/controls/settingsControl.js +0 -280
  72. package/dist/extensions/Blocks/Items/enums/controlEnums.js +0 -5
  73. package/dist/extensions/Blocks/Items/enums/productEnums.js +0 -201
  74. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -76
  75. package/dist/extensions/Blocks/Items/extension.js +0 -19
  76. package/dist/extensions/Blocks/Items/iconsRegistry.js +0 -32
  77. package/dist/extensions/Blocks/Items/items.css.js +0 -23
  78. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +0 -61
  79. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +0 -61
  80. package/dist/extensions/Blocks/Items/settingsPanel.js +0 -132
  81. package/dist/extensions/Blocks/Items/store/items-block.js +0 -71
  82. package/dist/extensions/Blocks/Items/template.js +0 -110
  83. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  84. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  85. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -67
  86. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -44
  87. package/dist/extensions/Blocks/controlFactories.js +0 -223
  88. package/dist/src/components/organisms/onboarding/ItemsOnboarding.vue.d.ts +0 -2
  89. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -13
  90. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -14
  91. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -33
  92. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -14
  93. package/dist/src/extensions/Blocks/Items/controls/index.d.ts +0 -501
  94. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -14
  95. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -19
  96. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -21
  97. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -14
  98. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -13
  99. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -42
  100. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +0 -61
  101. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +0 -160
  102. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +0 -49
  103. package/dist/src/extensions/Blocks/Items/extension.d.ts +0 -2
  104. package/dist/src/extensions/Blocks/Items/iconsRegistry.d.ts +0 -4
  105. package/dist/src/extensions/Blocks/Items/settingsPanel.d.ts +0 -4
  106. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -41
  107. package/dist/src/extensions/Blocks/Items/template.d.ts +0 -16
  108. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  109. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  110. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -44
  111. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  112. package/dist/src/extensions/Blocks/controlFactories.d.ts +0 -312
package/README.md CHANGED
@@ -167,7 +167,6 @@ export default {
167
167
  | `on-change` | void | It Fires once for managing leave modal etc. |
168
168
  | `ready` | void | Fired when the editor is ready and template is loaded |
169
169
  | `onboarding-finished` | void | Fired when the onboarding popup is dismissed or completed, allowing parent applications to track onboarding state |
170
- | `test-email:click` | - | Fired when user clicks the test email button in the header |
171
170
 
172
171
  ### Guido Exposed Methods
173
172
  ```typescript
@@ -787,35 +786,3 @@ ISC License
787
786
  - Playwright integrationBoilerplate/control.ts
788
787
  - Commitlint & Precommit Hooks integration
789
788
  - Get Pre-built display conditions from API
790
-
791
- Recommendation Block:
792
- - [ ] Validations for Filters
793
- - [ ] DOM Rerender after Filters change
794
- - [ ] Change currencySymbol as Input Type
795
- - [ ] Apply filter query to request
796
- - [ ] Drawer loading bug
797
- - [ ] Drawer send request when apply filters
798
- - [ ] Clear all feature for Drawer
799
- - [ ] Stripo's controls should be effect specific DOM item -- Try extending CommonControl class
800
- - [ ] Show toaster message if uses multiple recommendation blocks in same template
801
- - [ ] Change filter button text as Change Filters
802
- - [ ] Migration template for Recommendation Block
803
- - [ ] Recommendation Algorithm default value should be mostPopular
804
- - [ ] Default fields for empty template like currency, title etc.
805
- - [ ] Recommendation Block Icon Registry should be updated
806
- - [ ] AMP Block Icon should be updated
807
- - [ ] Padding feature for between Product Rows
808
-
809
- Items Block Phase 2:
810
- [ ] Writing configs to esd-config-data DOM.
811
- [ ] Build on save feature should be working
812
- [ ] Data Migration feature should be working
813
-
814
- Tech Debts:
815
- [ ] Merge Custom Blocks into a single File
816
- [ ] Move Custom Blocks names to an enum file
817
- [ ] Template Replacement should be optimized for version history
818
- [ ] Code Optimization for Items Block inner blocks reordering
819
- [ ] Image Size & Margins controls has an error on console
820
- [ ] Feed Text Trimming feature to toggle settings
821
- [ ] Formatted Price feature to toggle settings
@@ -12,9 +12,9 @@ var t = function() {
12
12
  n,
13
13
  !1,
14
14
  null,
15
- "23c413c9"
15
+ "eefcd8b6"
16
16
  );
17
- const v = s.exports;
17
+ const u = s.exports;
18
18
  export {
19
- v as default
19
+ u as default
20
20
  };
@@ -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 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 se } from "../stores/preview.js";
18
+ import { useUnsubscribeStore as ae } from "../stores/unsubscribe.js";
19
+ import ie from "../node_modules/lodash-es/merge.js";
20
+ const Ge = /* @__PURE__ */ R({
21
21
  __name: "Guido",
22
22
  props: {
23
23
  templateId: null,
@@ -31,104 +31,99 @@ const Ue = /* @__PURE__ */ O({
31
31
  guidoConfig: null,
32
32
  templateConfig: null
33
33
  },
34
- emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
35
- setup(W, { expose: _, emit: o }) {
36
- const u = W, A = I(
34
+ emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished"],
35
+ setup(_, { expose: L, emit: t }) {
36
+ const u = _, k = I(
37
37
  () => import("./organisms/email-preview/PreviewContainer.vue.js")
38
- ), N = I(
38
+ ), A = I(
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
+ ), l = x(), s = ne(), p = ae(), g = te(), a = re(), N = se(), n = U(() => a.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), b = () => {
41
41
  var e;
42
- return (e = p.value) == null ? void 0 : e.handleSave(!0);
42
+ return (e = l.value) == null ? void 0 : e.handleSave(!0);
43
43
  }, {
44
- templateId: a,
45
- userId: C,
46
- guidoConfig: h,
47
- templateConfig: t,
44
+ templateId: i,
45
+ userId: v,
46
+ guidoConfig: C,
47
+ templateConfig: o,
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
+ } = u, m = (o == null ? void 0 : o.preselectedDynamicContentList) || [];
55
+ a.templateId = i, window.GuidoConfig = ie(Q, C), window.GuidoConfig.partner = {
56
56
  partnerName: c,
57
- productType: m,
58
- messageType: w
59
- }, f.templateConfig = t;
60
- const { initPlugin: E } = Q({
61
- emailId: a,
62
- userId: C,
63
- username: D,
57
+ productType: d,
58
+ messageType: S
59
+ }, g.templateConfig = o;
60
+ const { initPlugin: D } = j({
61
+ emailId: i,
62
+ userId: v,
63
+ username: w,
64
64
  partnerName: c,
65
- productType: m,
66
- preselectedDynamicContentList: d,
65
+ productType: d,
66
+ preselectedDynamicContentList: m,
67
67
  onReady: () => {
68
- console.debug("guido:ready"), o("ready");
68
+ console.debug("guido:ready"), t("ready");
69
69
  }
70
- }), { getDefaultTemplate: T } = re(), R = U(() => {
70
+ }), { getDefaultTemplate: T } = oe(), H = U(() => {
71
71
  var e;
72
72
  return !((e = window.GuidoConfig) != null && e.useHeader);
73
73
  });
74
- q({
74
+ K({
75
75
  onBack: () => {
76
- console.debug("guido:back"), o("back");
76
+ console.debug("guido:back"), t("back");
77
77
  },
78
78
  onSaveStart: () => {
79
- console.debug("guido:save:start"), o("save:start");
79
+ console.debug("guido:save:start"), t("save:start");
80
80
  },
81
81
  onSaveComplete: (e) => {
82
- console.debug("guido:save:complete", e), o("save:complete", e);
83
- },
84
- onTestEmailClick: () => {
85
- console.debug("guido:test-email:click"), o("test-email:click");
82
+ console.debug("guido:save:complete", e), t("save:complete", e);
86
83
  }
87
84
  });
88
- const P = (e) => {
89
- console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
90
- }, k = () => {
85
+ const E = (e) => {
86
+ console.debug("dynamic-content:close", e), s.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
87
+ }, P = () => {
91
88
  console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
92
89
  };
93
- B(() => n.value, () => {
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 () => {
90
+ return M(() => n.value, () => {
91
+ t("on-change", n.value);
92
+ }), z(async () => {
101
93
  console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
102
94
  try {
103
- g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
95
+ p.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
104
96
  let e = {
105
- html: r && await L(r),
106
- css: S,
97
+ html: r && await W(r),
98
+ css: h,
107
99
  forceRecreate: !0
108
100
  // TODO: It should be false for old templates. We will communicate with Stripo
109
101
  };
110
- e.html || (e = await T(), e.html = await L(e.html)), await E(e), i.selectedDynamicContentList = d;
102
+ e.html || (e = await T(), e.html = await W(e.html)), await D(e), s.selectedDynamicContentList = m;
111
103
  } catch (e) {
112
104
  console.error("Failed to initialize Stripo editor:", e);
113
105
  }
114
- document.addEventListener("dynamic-content:open", l);
115
- }), j(() => {
116
- document.removeEventListener("dynamic-content:open", l);
106
+ document.addEventListener("dynamic-content:open", (e) => {
107
+ const G = e;
108
+ console.debug("dynamic-content:open", G.detail), t("dynamic-content:open", G.detail);
109
+ });
110
+ }), B(() => {
111
+ console.debug("Guido says goodbye 👋");
117
112
  try {
118
113
  window.UIEditor.removeEditor();
119
114
  } catch {
120
115
  console.debug("Failed to remove Stripo editor: No editor found");
121
116
  }
122
- }), _({
117
+ }), L({
123
118
  dynamicContent: {
124
- insert: P,
125
- close: k
119
+ insert: E,
120
+ close: P
126
121
  },
127
122
  hasChanges: n,
128
123
  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 };
124
+ }), { __sfc: !0, PreviewContainer: k, OnboardingWrapper: A, headerWrapperRef: l, dynamicContentStore: s, unsubscribeStore: p, props: u, configStore: g, editorStore: a, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: b, templateId: i, userId: v, guidoConfig: C, templateConfig: o, html: r, css: h, partnerName: c, productType: d, messageType: S, username: w, preselectedDynamicContentList: m, emit: t, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
130
125
  }
131
126
  });
132
127
  export {
133
- Ue as default
128
+ Ge as default
134
129
  };
@@ -3,7 +3,7 @@ import l from "../../../_virtual/_plugin-vue2_normalizer.js";
3
3
  var r = function() {
4
4
  var o, i, n;
5
5
  var s = this, e = s._self._c, t = s._self._setupProxy;
6
- return e("div", { staticClass: "d-f" }, [(o = t.config.features) != null && o.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : s._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : s._e(), (n = t.config.features) != null && n.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.testEmailClick } }) : s._e(), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(c) {
6
+ return e("div", { staticClass: "d-f" }, [(o = t.config.features) != null && o.versionHistory ? e(t.InButtonV2, { attrs: { id: "guido__history-button", "left-icon": "line-architect-version-history", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isVersionHistoryButtonDisabled, "label-text-status": !1, "selected-status": t.editorStore.isVersionHistoryOpen, "tooltip-options": t.getTooltipOptions("guido__history-button"), "tooltip-text": t.versionHistoryTooltipText }, on: { click: t.handleVersionHistory } }) : s._e(), e(t.InButtonV2, { attrs: { id: "guido__export-button", "left-icon": "line-export", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isExportButtonDisabled, "label-text-status": !1, "loading-status": t.isExporting, "tooltip-options": t.getTooltipOptions("guido__export-button"), "tooltip-text": t.trans("newsletter.export") }, on: { click: t.handleExport } }), (i = t.config.features) != null && i.saveAsTemplate ? e(t.InButtonV2, { attrs: { id: "guido__save-as-button", "left-icon": "line-newsletter-save-as-template", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isSaveAsButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__save-as-button"), "tooltip-text": t.trans("newsletter.save-templates") }, on: { click: t.handleSaveAs } }) : s._e(), (n = t.config.features) != null && n.testMessage ? e(t.InButtonV2, { attrs: { id: "guido__test-button", "left-icon": "line-architect-test-journey", styling: "ghost", type: "secondary", "disabled-status": t.editorStore.isTestButtonDisabled, "label-text-status": !1, "tooltip-options": t.getTooltipOptions("guido__test-button"), "tooltip-text": t.trans("newsletter.test-email") } }) : s._e(), e(t.InButtonV2, { staticClass: "ml-3", attrs: { id: "guido__save-button", "label-text": "Save", "disabled-status": !t.isSaving && t.editorStore.isSaveButtonDisabled, "loading-status": t.isSaving }, on: { click: function(_) {
7
7
  return t.handleSave(!1);
8
8
  } } })], 1);
9
9
  }, u = [], d = /* @__PURE__ */ l(
@@ -1,36 +1,35 @@
1
- import { defineComponent as H, ref as p, computed as _ } from "vue";
2
- import { useConfig as h } from "../../../composables/useConfig.js";
3
- import { useExport as V } from "../../../composables/useExport.js";
4
- import { useTestEmailClick as x } from "../../../composables/useGuidoActions.js";
5
- import { useSave as E } from "../../../composables/useSave.js";
6
- import { useTranslations as T } from "../../../composables/useTranslations.js";
1
+ import { defineComponent as g, ref as l, computed as H } from "vue";
2
+ import { useConfig as _ } from "../../../composables/useConfig.js";
3
+ import { useExport as h } from "../../../composables/useExport.js";
4
+ import { useSave as V } from "../../../composables/useSave.js";
5
+ import { useTranslations as x } from "../../../composables/useTranslations.js";
7
6
  import { useVersionHistoryApi as w } from "../../../composables/useVersionHistoryApi.js";
8
- import { useEditorStore as C } from "../../../stores/editor.js";
9
- import { getTooltipOptions as O } from "../../../utils/tooltipUtils.js";
10
- import { InButtonV2 as A } from "@useinsider/design-system-vue";
11
- const J = /* @__PURE__ */ H({
7
+ import { useEditorStore as T } from "../../../stores/editor.js";
8
+ import { getTooltipOptions as E } from "../../../utils/tooltipUtils.js";
9
+ import { InButtonV2 as O } from "@useinsider/design-system-vue";
10
+ const z = /* @__PURE__ */ g({
12
11
  __name: "RightSlot",
13
- setup(k, { expose: m }) {
14
- const { config: c } = h(), { exportHtml: r } = V(), { save: n } = E(), { openVersionHistory: i, closeVersionHistory: a } = w(), t = C(), o = T(), e = p(!1), s = p(!1), u = x(), f = () => {
15
- if (t.isVersionHistoryOpen) {
12
+ setup(A, { expose: m }) {
13
+ const { config: u } = _(), { exportHtml: r } = h(), { save: n } = V(), { openVersionHistory: i, closeVersionHistory: a } = w(), o = T(), t = x(), e = l(!1), s = l(!1), c = () => {
14
+ if (o.isVersionHistoryOpen) {
16
15
  a();
17
16
  return;
18
17
  }
19
18
  i();
20
- }, v = async () => {
19
+ }, f = async () => {
21
20
  e.value = !0, await r(), e.value = !1;
22
- }, d = () => {
23
- t.isSaveAsTemplateDrawerOpen = !0;
24
- }, y = _(() => t.isVersionHistoryOpen ? o("newsletter.close-version-history") : o("newsletter.version-history")), l = async (S) => {
25
- s.value = !0, t.loadingStatus = !0;
26
- const g = await n(S);
27
- return s.value = !1, t.loadingStatus = !1, g;
21
+ }, v = () => {
22
+ o.isSaveAsTemplateDrawerOpen = !0;
23
+ }, d = H(() => o.isVersionHistoryOpen ? t("newsletter.close-version-history") : t("newsletter.version-history")), p = async (y) => {
24
+ s.value = !0, o.loadingStatus = !0;
25
+ const S = await n(y);
26
+ return s.value = !1, o.loadingStatus = !1, S;
28
27
  };
29
28
  return m({
30
- handleSave: l
31
- }), { __sfc: !0, config: c, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: t, trans: o, isExporting: e, isSaving: s, testEmailClick: u, handleVersionHistory: f, handleExport: v, handleSaveAs: d, versionHistoryTooltipText: y, handleSave: l, getTooltipOptions: O, InButtonV2: A };
29
+ handleSave: p
30
+ }), { __sfc: !0, config: u, exportHtml: r, save: n, openVersionHistory: i, closeVersionHistory: a, editorStore: o, trans: t, isExporting: e, isSaving: s, handleVersionHistory: c, handleExport: f, handleSaveAs: v, versionHistoryTooltipText: d, handleSave: p, getTooltipOptions: E, InButtonV2: O };
32
31
  }
33
32
  });
34
33
  export {
35
- J as default
34
+ z as default
36
35
  };
@@ -1,25 +1,23 @@
1
1
  import { defineComponent as b, computed as e, onMounted as O, watch as t } from "vue";
2
- import u from "./AMPOnboarding.vue.js";
3
- import v from "./GenericOnboarding.vue.js";
4
- import l from "./ItemsOnboarding.vue.js";
5
- import y from "./NewVersionPopup.vue.js";
6
- import S from "./TextBlockOnboarding.vue.js";
7
- import h from "./VersionHistoryOnboarding.vue.js";
8
- import { usePartner as w } from "../../../composables/usePartner.js";
9
- import { useEditorStore as P } from "../../../stores/editor.js";
10
- import { useOnboardingStore as _ } from "../../../stores/onboarding.js";
11
- import { usePreviewStore as A } from "../../../stores/preview.js";
12
- const G = /* @__PURE__ */ b({
2
+ import { usePartner as u } from "../../../composables/usePartner.js";
3
+ import { useEditorStore as v } from "../../../stores/editor.js";
4
+ import { useOnboardingStore as l } from "../../../stores/onboarding.js";
5
+ import { usePreviewStore as y } from "../../../stores/preview.js";
6
+ import S from "./AMPOnboarding.vue.js";
7
+ import h from "./GenericOnboarding.vue.js";
8
+ import w from "./NewVersionPopup.vue.js";
9
+ import P from "./TextBlockOnboarding.vue.js";
10
+ import _ from "./VersionHistoryOnboarding.vue.js";
11
+ const F = /* @__PURE__ */ b({
13
12
  __name: "OnboardingWrapper",
14
13
  emits: ["onboarding-finished"],
15
- setup(H, { emit: f }) {
16
- const o = _(), r = P(), s = A(), { isTestPartner: a } = w(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
17
- { type: "newVersionPopup", component: y },
18
- { type: "genericOnboarding", component: v },
19
- { type: "textBlockOnboarding", component: S },
20
- { type: "versionHistoryOnboarding", component: h },
21
- { type: "ampOnboarding", component: u },
22
- { type: "itemsOnboarding", component: l }
14
+ setup(A, { emit: f }) {
15
+ const o = l(), r = v(), s = y(), { isTestPartner: a } = u(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
16
+ { type: "newVersionPopup", component: w },
17
+ { type: "genericOnboarding", component: h },
18
+ { type: "textBlockOnboarding", component: P },
19
+ { type: "versionHistoryOnboarding", component: _ },
20
+ { type: "ampOnboarding", component: S }
23
21
  ], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), g = e(() => m.filter((n) => c(n.type)));
24
22
  return O(async () => {
25
23
  await o.fetchUserModalState();
@@ -42,5 +40,5 @@ const G = /* @__PURE__ */ b({
42
40
  }
43
41
  });
44
42
  export {
45
- G as default
43
+ F as default
46
44
  };
@@ -19,7 +19,8 @@ const l = {
19
19
  "recommendation-block": () => import("../extensions/Blocks/Recommendation/extension.js"),
20
20
  "unsubscribe-block": () => import("../extensions/Blocks/Unsubscribe/extension.js"),
21
21
  "coupon-block": () => import("../extensions/Blocks/CouponBlock/extension.js"),
22
- "items-block": () => import("../extensions/Blocks/Items/extension.js")
22
+ "items-block": null
23
+ // TODO: Add ItemsBlock extension when available
23
24
  }, a = (n) => {
24
25
  if (!n || !n.length)
25
26
  return {};
@@ -1,6 +1,6 @@
1
1
  import { provideValue as o, useInjectedValue as t } from "./useProvideInject.js";
2
- const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symbol.for("guido.save.complete"), a = Symbol.for("guido.test.email.click"), i = (e) => {
3
- o(r, e.onBack), o(n, e.onSaveStart), o(c, e.onSaveComplete), o(a, e.onTestEmailClick);
2
+ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), a = Symbol.for("guido.save.complete"), s = (e) => {
3
+ o(r, e.onBack), o(n, e.onSaveStart), o(a, e.onSaveComplete);
4
4
  }, u = () => {
5
5
  try {
6
6
  return t(r);
@@ -9,7 +9,7 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
9
9
  "useBack: No back handler provided. Make sure Guido component is in the component tree."
10
10
  );
11
11
  }
12
- }, l = () => {
12
+ }, d = () => {
13
13
  try {
14
14
  return t(n);
15
15
  } catch {
@@ -17,31 +17,21 @@ const r = Symbol.for("guido.back"), n = Symbol.for("guido.save.start"), c = Symb
17
17
  "useSaveStart: No save start handler provided. Make sure Guido component is in the component tree."
18
18
  );
19
19
  }
20
- }, d = () => {
21
- try {
22
- return t(c);
23
- } catch {
24
- throw new Error(
25
- "useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
26
- );
27
- }
28
- }, m = () => {
20
+ }, i = () => {
29
21
  try {
30
22
  return t(a);
31
23
  } catch {
32
24
  throw new Error(
33
- "useTestEmailClick: No test email click handler provided. Make sure Guido component is in the component tree."
25
+ "useSaveComplete: No save complete handler provided. Make sure Guido component is in the component tree."
34
26
  );
35
27
  }
36
28
  };
37
29
  export {
38
30
  r as BACK_KEY,
39
- c as SAVE_COMPLETE_KEY,
31
+ a as SAVE_COMPLETE_KEY,
40
32
  n as SAVE_START_KEY,
41
- a as TEST_EMAIL_CLICK_KEY,
42
- i as provideGuidoActions,
33
+ s as provideGuidoActions,
43
34
  u as useBack,
44
- d as useSaveComplete,
45
- l as useSaveStart,
46
- m as useTestEmailClick
35
+ i as useSaveComplete,
36
+ d as useSaveStart
47
37
  };
@@ -1,17 +1,17 @@
1
1
  import { useActionsApi as h } from "./useActionsApi.js";
2
2
  import { useBlocksConfig as b } from "./useBlocksConfig.js";
3
3
  import { useConfig as k } from "./useConfig.js";
4
- import { useCustomInterfaceAppearance as V } from "./useCustomInterfaceAppearance.js";
5
- import { useStripoEventHandler as _ } from "./useStripoEventHandler.js";
6
- import { useToaster as B } from "./useToaster.js";
7
- import { displayConditions as A } from "../enums/displayConditions.js";
8
- import { useStripoApi as F } from "../services/stripoApi.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 F } from "../enums/displayConditions.js";
8
+ import { useStripoApi as A } from "../services/stripoApi.js";
9
9
  import T from "../static/styles/customEditorStyle.css.js";
10
10
  import { useEditorStore as v } from "../stores/editor.js";
11
11
  import { dynamicContentToMergeTags as I } from "../utils/genericUtil.js";
12
12
  import M from "../package.json.js";
13
13
  const N = (d) => {
14
- const { config: u } = k(), { handleError: l } = B(), { getToken: f, getCustomFonts: S } = F(), { handleEvent: C } = _(), { getStripoBlocksConfig: y } = b(), E = async (i, r = []) => {
14
+ const { config: u } = k(), { handleError: l } = _(), { getToken: f, getCustomFonts: S } = A(), { handleEvent: C } = V(), { getStripoBlocksConfig: y } = b(), E = async (i, r = []) => {
15
15
  var m, g;
16
16
  const t = v(), { html: n, css: p, forceRecreate: a } = i, { baseBlocks: e, extensions: c } = await y();
17
17
  window.UIEditor.initEditor(
@@ -33,10 +33,10 @@ const N = (d) => {
33
33
  customViewStyles: T,
34
34
  conditionsEnabled: ((m = u.features) == null ? void 0 : m.displayConditions) ?? !0,
35
35
  customConditionsEnabled: ((g = u.features) == null ? void 0 : g.displayConditions) ?? !0,
36
- conditionCategories: A,
36
+ conditionCategories: F,
37
37
  enableXSSSecurity: !0,
38
38
  messageSettingsEnabled: !1,
39
- selectElementAfterDrop: !0,
39
+ selectBlockAfterDropFromSettingsPanel: !0,
40
40
  ...e ? { baseBlocks: e } : {},
41
41
  editorFonts: {
42
42
  showDefaultStandardFonts: !0,
@@ -58,7 +58,7 @@ const N = (d) => {
58
58
  },
59
59
  onTemplateLoaded() {
60
60
  try {
61
- const { importCss: o } = V(), { activateCustomViewStyles: s } = h();
61
+ const { importCss: o } = B(), { activateCustomViewStyles: s } = h();
62
62
  o(), s(), d.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
63
63
  t.hasChanges = !1;
64
64
  }, 1e3);
@@ -1,41 +1,36 @@
1
- import { usePartner as N } from "../../composables/usePartner.js";
2
- import { LINK_REGEXES as l, LINK_TYPES as g, INSIDER_ID as f, URLS as S } from "../../enums/unsubscribe.js";
3
- import { parsePageList as U } from "../../extensions/Blocks/Unsubscribe/utils/utils.js";
4
- import { useConfigStore as B } from "../../stores/config.js";
5
- import { useDynamicContentStore as y } from "../../stores/dynamic-content.js";
6
- import { useUnsubscribeStore as L } from "../../stores/unsubscribe.js";
7
- const D = [
1
+ import { usePartner as U } from "../../composables/usePartner.js";
2
+ import { LINK_REGEXES as l, LINK_TYPES as b, URLS as f } from "../../enums/unsubscribe.js";
3
+ import { parsePageList as B } from "../../extensions/Blocks/Unsubscribe/utils/utils.js";
4
+ import { useConfigStore as N } from "../../stores/config.js";
5
+ import { useUnsubscribeStore as I } from "../../stores/unsubscribe.js";
6
+ const T = [
8
7
  {
9
8
  id: "add-unsubscribe-link-values",
10
9
  description: "Adding unsubscribe link values",
11
10
  type: "custom",
12
11
  processor: (t) => {
13
- const { getPartnerName: i } = N(), c = B(), n = y(), u = L(), a = c.getVariationId;
14
- if (!a)
12
+ const { getPartnerName: i } = U(), a = N(), n = I(), u = a.getVariationId;
13
+ if (!u)
15
14
  return t;
16
- let e = t;
17
- const r = `/${i()}/email/${a}?user={{iid}}`;
18
- return new DOMParser().parseFromString(e, "text/html").querySelectorAll(".unsubscribe-block-v2[data-unsubscribe-page-list]").forEach((p) => {
19
- var b;
20
- const m = p.getAttribute("data-unsubscribe-page-list");
21
- if (!m)
15
+ let o = t;
16
+ const e = `/${i()}/email/${u}?user={{iid}}`;
17
+ return new DOMParser().parseFromString(o, "text/html").querySelectorAll(".unsubscribe-block-v2[data-unsubscribe-page-list]").forEach((p) => {
18
+ var g;
19
+ const d = p.getAttribute("data-unsubscribe-page-list");
20
+ if (!d)
22
21
  return;
23
- const R = U(m), d = ((b = u.templates) == null ? void 0 : b.filter(
24
- (o) => R.includes(o.id)
25
- )) ?? [], _ = d.some((o) => o.type === g.UNSUBSCRIBE_LINK_TYPE), I = d.some((o) => o.type === g.PREFERENCES_LINK_TYPE), E = p.outerHTML;
22
+ const S = B(d), m = ((g = n.templates) == null ? void 0 : g.filter(
23
+ (c) => S.includes(c.id)
24
+ )) ?? [], R = m.some((c) => c.type === b.UNSUBSCRIBE_LINK_TYPE), _ = m.some((c) => c.type === b.PREFERENCES_LINK_TYPE), E = p.outerHTML;
26
25
  let s = E;
27
- _ && (n.selectedDynamicContentList.push({
28
- text: f,
29
- value: f,
30
- fallback: ""
31
- }), s = s.replace(
26
+ R && (s = s.replace(
32
27
  l.GLOBAL_UNSUBSCRIBE_LINK_REGEX,
33
- S.UNSUBSCRIBE_URL + r
34
- )), I && (s = s.replace(
28
+ f.UNSUBSCRIBE_URL + e
29
+ )), _ && (s = s.replace(
35
30
  l.PREFERENCES_UNSUBSCRIBE_LINK_REGEX,
36
- S.PREFERENCES_URL + r
37
- )), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), e = e.replace(E, s);
38
- }), e;
31
+ f.PREFERENCES_URL + e
32
+ )), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), o = o.replace(E, s);
33
+ }), o;
39
34
  },
40
35
  priority: 60
41
36
  },
@@ -61,16 +56,16 @@ const D = [
61
56
  type: "custom",
62
57
  processor: (t) => {
63
58
  let i = t;
64
- const c = i.match(/<a[^>]+>(.*?)<\/a>/gm);
65
- return c && c.forEach((n) => {
59
+ const a = i.match(/<a[^>]+>(.*?)<\/a>/gm);
60
+ return a && a.forEach((n) => {
66
61
  if (n.includes("insEmail=1"))
67
62
  return;
68
63
  if (n.match(/<a\s+(?:[^>]*?\s+)?href=(["'`”])(.*?)\1\s+(?:[^>]*?\s+)?universal=(["'`”])true\3/gm)) {
69
- const a = n.replace(/href=(["'`”])(.*?)\1/gm, (e) => {
64
+ const o = n.replace(/href=(["'`”])(.*?)\1/gm, (e) => {
70
65
  const r = e.slice(6, e.length - 1).trim();
71
66
  return e.includes("?") || e.includes("#") ? r.slice(-1) === "&" ? e.replace(r, `${r}insEmail=1`) : e.replace(r, `${r}&insEmail=1`) : e.replace(r, `${r}?insEmail=1`);
72
67
  });
73
- i = i.replace(n, a);
68
+ i = i.replace(n, o);
74
69
  }
75
70
  }), i;
76
71
  },
@@ -78,5 +73,5 @@ const D = [
78
73
  }
79
74
  ];
80
75
  export {
81
- D as unsubscribeCompilerRules
76
+ T as unsubscribeCompilerRules
82
77
  };
@@ -12,8 +12,8 @@ const s = {
12
12
  { id: 61, key: "mostPopular", name: "Most Popular Items", path: "most-popular" },
13
13
  { id: 62, key: "mostPurchased", name: "Top Sellers", path: "top-sellers" }
14
14
  ], u = ["discount", "omnibus_price", "omnibus_discount", "price", "original_price"], l = [
15
- { text: "before the amount", value: "0" },
16
- { text: "after the amount", value: "1" }
15
+ { text: "after the amount", value: "1" },
16
+ { text: "before the amount", value: "0" }
17
17
  ], c = [
18
18
  { text: "dot(.)", value: "." },
19
19
  { text: "comma(,)", value: "," }