@useinsider/guido 3.0.0-beta.799399f → 3.0.0-beta.7d3a300

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 (77) hide show
  1. package/dist/components/organisms/header/EditorActions.vue.js +10 -8
  2. package/dist/components/organisms/header/EditorActions.vue2.js +41 -31
  3. package/dist/components/organisms/header/MigrationConfirmModal.vue.js +17 -0
  4. package/dist/components/organisms/header/MigrationConfirmModal.vue2.js +39 -0
  5. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  6. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +1 -1
  7. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +1 -1
  8. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +2 -2
  9. package/dist/config/compiler/unsubscribeCompilerRules.js +14 -14
  10. package/dist/config/compiler/utils/recommendationCompilerUtils.js +29 -18
  11. package/dist/config/i18n/en/labels.json.js +8 -3
  12. package/dist/config/i18n/en/tooltips.json.js +2 -1
  13. package/dist/config/migrator/itemsBlockMigrator.js +135 -131
  14. package/dist/config/migrator/recommendationMigrator.js +58 -54
  15. package/dist/enums/block.js +4 -0
  16. package/dist/extensions/Blocks/Items/block.js +30 -21
  17. package/dist/extensions/Blocks/Items/iconsRegistry.js +7 -6
  18. package/dist/extensions/Blocks/Items/items.css.js +48 -0
  19. package/dist/extensions/Blocks/Recommendation/block.js +26 -14
  20. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +1 -1
  21. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  22. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +15 -12
  23. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +693 -144
  24. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +78 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +27 -24
  26. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +96 -88
  27. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +83 -81
  28. package/dist/extensions/Blocks/Recommendation/extension.js +18 -16
  29. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +5 -4
  30. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +174 -2
  31. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +124 -106
  32. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +8 -7
  33. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +63 -34
  34. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +30 -33
  35. package/dist/extensions/Blocks/Recommendation/templates/index.js +8 -8
  36. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +28 -13
  37. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +25 -44
  38. package/dist/extensions/Blocks/Recommendation/templates/utils.js +62 -38
  39. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +6 -6
  40. package/dist/extensions/Blocks/Unsubscribe/settingsPanel.js +16 -17
  41. package/dist/extensions/Blocks/common-control.js +12 -4
  42. package/dist/guido.css +1 -1
  43. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +324 -218
  44. package/dist/package.json.js +1 -1
  45. package/dist/src/@types/extensions/block.d.ts +2 -0
  46. package/dist/src/App.vue.d.ts +3 -0
  47. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  48. package/dist/src/components/organisms/header/MigrationConfirmModal.vue.d.ts +6 -0
  49. package/dist/src/components/wrappers/WpModal.vue.d.ts +2 -2
  50. package/dist/src/enums/block.d.ts +4 -0
  51. package/dist/src/extensions/Blocks/Items/block.d.ts +3 -1
  52. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +4 -1
  53. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +2 -1
  54. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +8 -1
  55. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  56. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +10 -0
  57. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +134 -44
  58. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +105 -0
  59. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +1 -0
  60. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +2 -0
  61. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -0
  62. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +1 -1
  63. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +1 -1
  64. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +10 -4
  65. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +37 -2
  66. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +3 -3
  67. package/dist/src/extensions/Blocks/common-control.d.ts +5 -0
  68. package/dist/src/main.d.ts +1 -3
  69. package/dist/src/stores/template.d.ts +29 -0
  70. package/dist/src/utils/migrationBannerHtml.d.ts +2 -0
  71. package/dist/static/assets/info.svg.js +5 -0
  72. package/dist/static/styles/components/button.css.js +13 -7
  73. package/dist/static/styles/components/narrow-panel.css.js +52 -0
  74. package/dist/static/styles/variables.css.js +3 -0
  75. package/dist/stores/template.js +15 -0
  76. package/dist/utils/migrationBannerHtml.js +21 -0
  77. package/package.json +5 -4
@@ -1,21 +1,23 @@
1
1
  import l from "./EditorActions.vue2.js";
2
2
  /* empty css */
3
- import r from "../../../_virtual/_plugin-vue2_normalizer.js";
4
- var d = function() {
3
+ import d from "../../../_virtual/_plugin-vue2_normalizer.js";
4
+ var u = function() {
5
5
  var s, i, n, a;
6
- var e = this, o = e._self._c, t = e._self._setupProxy;
7
- return o("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? o(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 } }) : e._e(), o(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 = (s = t.config) == null ? void 0 : s.features) != null && i.saveAsTemplate ? o(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 } }) : e._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.testMessage ? o(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", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.testEmailClick } }) : e._e(), t.editorStore.isPreviewModeOpen ? e._e() : o(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(_) {
6
+ var o = this, e = o._self._c, t = o._self._setupProxy;
7
+ return e("div", { staticClass: "d-f editor-actions" }, [t.isVersionHistoryButtonVisible ? 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 } }) : o._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 = (s = t.config) == null ? void 0 : s.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 } }) : o._e(), (a = (n = t.config) == null ? void 0 : n.features) != null && a.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", { staticPosition: "bottom right" }), "tooltip-text": t.trans("newsletter.test-email") }, on: { click: t.testEmailClick } }) : o._e(), t.editorStore.isPreviewModeOpen ? o._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(r) {
8
8
  return t.handleSave(!1);
9
+ } } }), e(t.MigrationConfirmModal, { ref: "migrationModalRef", on: { confirm: function(r) {
10
+ return t.executeSave(!1);
9
11
  } } })], 1);
10
- }, u = [], p = /* @__PURE__ */ r(
12
+ }, p = [], c = /* @__PURE__ */ d(
11
13
  l,
12
- d,
13
14
  u,
15
+ p,
14
16
  !1,
15
17
  null,
16
- "17dd4d8b"
18
+ "acff76a8"
17
19
  );
18
- const v = p.exports;
20
+ const v = c.exports;
19
21
  export {
20
22
  v as default
21
23
  };
@@ -1,41 +1,51 @@
1
- import { defineComponent as g, ref as u, computed as f } from "vue";
2
- import { useConfig as E } from "../../../composables/useConfig.js";
3
- import { useExport as h } from "../../../composables/useExport.js";
4
- import { useTestEmailClick as w } from "../../../composables/useGuidoActions.js";
5
- import { useSave as x } from "../../../composables/useSave.js";
6
- import { useTranslations as T } from "../../../composables/useTranslations.js";
7
- import { useVersionHistoryApi as O } from "../../../composables/useVersionHistoryApi.js";
8
- import { useEditorStore as A } from "../../../stores/editor.js";
9
- import { getTooltipOptions as C } from "../../../utils/tooltipUtils.js";
10
- import { InButtonV2 as k } from "@useinsider/design-system-vue";
11
- const J = /* @__PURE__ */ g({
1
+ import { defineComponent as E, ref as n, computed as g } from "vue";
2
+ import { useConfig as w } from "../../../composables/useConfig.js";
3
+ import { useExport as C } from "../../../composables/useExport.js";
4
+ import { useTestEmailClick as M } from "../../../composables/useGuidoActions.js";
5
+ import { useSave as O } from "../../../composables/useSave.js";
6
+ import { useTranslations as A } from "../../../composables/useTranslations.js";
7
+ import { useVersionHistoryApi as k } from "../../../composables/useVersionHistoryApi.js";
8
+ import { useEditorStore as B } from "../../../stores/editor.js";
9
+ import { useTemplateStore as R } from "../../../stores/template.js";
10
+ import { getTooltipOptions as b } from "../../../utils/tooltipUtils.js";
11
+ import { InButtonV2 as D } from "@useinsider/design-system-vue";
12
+ import { storeToRefs as I } from "pinia";
13
+ import P from "./MigrationConfirmModal.vue.js";
14
+ const Z = /* @__PURE__ */ E({
12
15
  __name: "EditorActions",
13
- setup(B, { expose: v }) {
14
- const { config: n } = E(), { exportHtml: a } = h(), { save: l } = x(), { openVersionHistory: p, closeVersionHistory: c } = O(), o = A(), s = T(), r = u(!1), i = u(!1), d = w(), y = () => {
15
- if (o.isVersionHistoryOpen) {
16
- c();
16
+ setup(j, { expose: H }) {
17
+ const { config: a } = w(), { exportHtml: m } = C(), { save: p } = O(), { openVersionHistory: l, closeVersionHistory: u } = k(), e = B(), c = R(), { hasMigrations: f } = I(c), r = A(), s = n(!1), i = n(!1), v = n(), S = M(), V = () => {
18
+ if (e.isVersionHistoryOpen) {
19
+ u();
17
20
  return;
18
21
  }
19
- p();
20
- }, H = async () => {
21
- r.value = !0, await a(), r.value = !1;
22
- }, V = () => {
23
- o.isSaveAsTemplateDrawerOpen = !0;
24
- }, S = f(() => o.isVersionHistoryOpen ? s("newsletter.close-version-history") : s("newsletter.version-history")), _ = f(
22
+ l();
23
+ }, T = async () => {
24
+ s.value = !0, await m(), s.value = !1;
25
+ }, _ = () => {
26
+ e.isSaveAsTemplateDrawerOpen = !0;
27
+ }, h = g(() => e.isVersionHistoryOpen ? r("newsletter.close-version-history") : r("newsletter.version-history")), x = g(
25
28
  () => {
26
- var t, e;
27
- return ((e = (t = n.value) == null ? void 0 : t.features) == null ? void 0 : e.versionHistory) && !o.isPreviewModeOpen;
29
+ var o, t;
30
+ return ((t = (o = a.value) == null ? void 0 : o.features) == null ? void 0 : t.versionHistory) && !e.isPreviewModeOpen;
28
31
  }
29
- ), m = async (t) => {
30
- i.value = !0, o.loadingStatus = !0;
31
- const e = await l(t);
32
- return i.value = !1, (t || !e) && (o.loadingStatus = !1), e;
32
+ ), d = async (o) => {
33
+ i.value = !0, e.loadingStatus = !0;
34
+ const t = await p(o);
35
+ return i.value = !1, (o || !t) && (e.loadingStatus = !1), t;
36
+ }, y = (o) => {
37
+ var t;
38
+ if (!o && f.value) {
39
+ (t = v.value) == null || t.open();
40
+ return;
41
+ }
42
+ return d(o);
33
43
  };
34
- return v({
35
- handleSave: m
36
- }), { __sfc: !0, config: n, exportHtml: a, save: l, openVersionHistory: p, closeVersionHistory: c, editorStore: o, trans: s, isExporting: r, isSaving: i, testEmailClick: d, handleVersionHistory: y, handleExport: H, handleSaveAs: V, versionHistoryTooltipText: S, isVersionHistoryButtonVisible: _, handleSave: m, getTooltipOptions: C, InButtonV2: k };
44
+ return H({
45
+ handleSave: y
46
+ }), { __sfc: !0, config: a, exportHtml: m, save: p, openVersionHistory: l, closeVersionHistory: u, editorStore: e, templateStore: c, hasMigrations: f, trans: r, isExporting: s, isSaving: i, migrationModalRef: v, testEmailClick: S, handleVersionHistory: V, handleExport: T, handleSaveAs: _, versionHistoryTooltipText: h, isVersionHistoryButtonVisible: x, executeSave: d, handleSave: y, getTooltipOptions: b, InButtonV2: D, MigrationConfirmModal: P };
37
47
  }
38
48
  });
39
49
  export {
40
- J as default
50
+ Z as default
41
51
  };
@@ -0,0 +1,17 @@
1
+ import n from "./MigrationConfirmModal.vue2.js";
2
+ import t from "../../../_virtual/_plugin-vue2_normalizer.js";
3
+ var i = function() {
4
+ var e = this, r = e._self._c, o = e._self._setupProxy;
5
+ return o.isVisible ? r(o.WpModal, { attrs: { id: "migration-confirm-modal", size: "X-small", "close-on-outside-click": !1, "footer-button-options": o.footerButtonOptions, title: o.trans("email-editor.migration-confirm-save") }, on: { close: o.close, "primary-action": o.handleConfirm } }, [r("p", { domProps: { innerHTML: e._s(o.confirmMessage) } })]) : e._e();
6
+ }, s = [], a = /* @__PURE__ */ t(
7
+ n,
8
+ i,
9
+ s,
10
+ !1,
11
+ null,
12
+ null
13
+ );
14
+ const c = a.exports;
15
+ export {
16
+ c as default
17
+ };
@@ -0,0 +1,39 @@
1
+ import { defineComponent as g, ref as m, computed as s } from "vue";
2
+ import _ from "../../wrappers/WpModal.vue.js";
3
+ import { useTranslations as b } from "../../../composables/useTranslations.js";
4
+ import { useTemplateStore as M } from "../../../stores/template.js";
5
+ const k = /* @__PURE__ */ g({
6
+ __name: "MigrationConfirmModal",
7
+ emits: ["confirm"],
8
+ setup(y, { expose: c, emit: n }) {
9
+ const t = m(!1), o = M(), e = b(), l = m({
10
+ cancelOrBackButton: {
11
+ type: "secondary",
12
+ labelText: e("campaign-builder.cancel"),
13
+ styling: "ghost"
14
+ },
15
+ primaryButton: {
16
+ type: "primary",
17
+ labelText: e("email-editor.migration-confirm-save")
18
+ }
19
+ }), i = s(() => {
20
+ if (o.hasRecommendationMigrations && o.hasItemsMigrations) {
21
+ const d = e("email-recommendation.recommendation"), u = e("email-editor.items");
22
+ return `${d} ${e("campaign-builder.or")} ${u}`;
23
+ }
24
+ return o.hasItemsMigrations ? e("email-editor.items") : e("email-recommendation.recommendation");
25
+ }), f = s(() => e("email-editor.migration-confirm-message", {
26
+ blockNames: i.value
27
+ })), r = () => {
28
+ t.value = !0;
29
+ }, a = () => {
30
+ t.value = !1;
31
+ }, p = () => {
32
+ a(), n("confirm");
33
+ };
34
+ return c({ open: r }), { __sfc: !0, emit: n, isVisible: t, templateStore: o, trans: e, footerButtonOptions: l, blockNames: i, confirmMessage: f, open: r, close: a, handleConfirm: p, WpModal: _ };
35
+ }
36
+ });
37
+ export {
38
+ k as default
39
+ };
@@ -13,7 +13,7 @@ var l = function() {
13
13
  p,
14
14
  !1,
15
15
  null,
16
- "d3c52b44"
16
+ "29b9af29"
17
17
  );
18
18
  const S = _.exports;
19
19
  export {
@@ -32,7 +32,7 @@ const S = /* @__PURE__ */ l({
32
32
  },
33
33
  {
34
34
  classes: "guido-onboarding-stripes",
35
- right: "450px",
35
+ right: "426px",
36
36
  bottom: "38px",
37
37
  position: "Right Bottom",
38
38
  title: e("email-editor.onboarding-stripes-title"),
@@ -13,7 +13,7 @@ var g = function() {
13
13
  b,
14
14
  !1,
15
15
  null,
16
- "a408dcea"
16
+ "d073b1dc"
17
17
  );
18
18
  const f = p.exports;
19
19
  export {
@@ -20,7 +20,7 @@ const y = /* @__PURE__ */ u({
20
20
  }), c = a(() => [
21
21
  {
22
22
  classes: "guido-text-block-onboarding-settings",
23
- right: "450px",
23
+ right: "426px",
24
24
  top: e.value.settings.top,
25
25
  position: e.value.settings.position,
26
26
  title: i("email-editor.onboarding-text-block-title"),
@@ -36,7 +36,7 @@ const y = /* @__PURE__ */ u({
36
36
  },
37
37
  {
38
38
  classes: "guido-text-block-onboarding-dynamic",
39
- right: "450px",
39
+ right: "426px",
40
40
  top: e.value.dynamic.top,
41
41
  position: e.value.dynamic.position,
42
42
  title: i("email-editor.onboarding-dynamic-content-title"),
@@ -1,5 +1,5 @@
1
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";
2
+ import { LINK_REGEXES as l, LINK_TYPES as S, INSIDER_ID as R, URLS as _ } from "../../enums/unsubscribe.js";
3
3
  import { parsePageList as U } from "../../extensions/Blocks/Unsubscribe/utils/utils.js";
4
4
  import { useConfigStore as B } from "../../stores/config.js";
5
5
  import { useDynamicContentStore as y } from "../../stores/dynamic-content.js";
@@ -16,25 +16,25 @@ const D = [
16
16
  let e = t;
17
17
  const r = `/${i()}/email/${a}?user={{iid}}`;
18
18
  return new DOMParser().parseFromString(e, "text/html").querySelectorAll(".unsubscribe-block-v2[data-unsubscribe-page-list]").forEach((p) => {
19
- var b;
19
+ var g;
20
20
  const m = p.getAttribute("data-unsubscribe-page-list");
21
21
  if (!m)
22
22
  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;
26
- let s = E;
27
- _ && (n.selectedDynamicContentList.push({
28
- text: f,
29
- value: f,
23
+ const I = U(m), d = ((g = u.templates) == null ? void 0 : g.filter(
24
+ (o) => I.includes(o.id)
25
+ )) ?? [], E = d.some((o) => o.type === S.UNSUBSCRIBE_LINK_TYPE), b = d.some((o) => o.type === S.PREFERENCES_LINK_TYPE), f = p.outerHTML;
26
+ let s = f;
27
+ (E || b) && n.selectedDynamicContentList.push({
28
+ text: R,
29
+ value: R,
30
30
  fallback: ""
31
- }), s = s.replace(
31
+ }), E && (s = s.replace(
32
32
  l.GLOBAL_UNSUBSCRIBE_LINK_REGEX,
33
- S.UNSUBSCRIBE_URL + r
34
- )), I && (s = s.replace(
33
+ _.UNSUBSCRIBE_URL + r
34
+ )), b && (s = s.replace(
35
35
  l.PREFERENCES_UNSUBSCRIBE_LINK_REGEX,
36
- S.PREFERENCES_URL + r
37
- )), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), e = e.replace(E, s);
36
+ _.PREFERENCES_URL + r
37
+ )), s = s.replace(l.UNSUBSCRIBE_LINK_REGEX, ""), e = e.replace(f, s);
38
38
  }), e;
39
39
  },
40
40
  priority: 60
@@ -1,4 +1,4 @@
1
- import { useRecommendation as _ } from "../../../composables/useRecommendation.js";
1
+ import { useRecommendation as $ } from "../../../composables/useRecommendation.js";
2
2
  function b(e, u, r, o) {
3
3
  const n = `{{${e}_${u}_${r}}}`, t = `{{${e}_${u}_currency}}`;
4
4
  return o === "before" ? `${t} ${n}` : `${n} ${t}`;
@@ -64,58 +64,69 @@ function p(e, u, r, o, n) {
64
64
  }
65
65
  break;
66
66
  }
67
+ default: {
68
+ const t = e.getAttribute("product-attr") ? e : e.querySelector("[product-attr]");
69
+ if (t) {
70
+ const c = t.getAttribute("product-attr"), s = t.querySelector("p");
71
+ if (s) {
72
+ const i = s.querySelector("strong") || s;
73
+ i.textContent = `{{${r}_${o}_${c}}}`;
74
+ }
75
+ }
76
+ break;
77
+ }
67
78
  }
68
79
  }
69
- function $(e, u, r) {
80
+ function S(e, u, r) {
70
81
  e.querySelectorAll(".recommendation-product-row").forEach((n, t) => {
71
82
  n.querySelectorAll("[data-attribute-type]").forEach((s) => {
72
- const i = s.getAttribute("data-attribute-type") || "", a = s.querySelectorAll(".attribute-cell");
73
- a.length > 0 ? a.forEach((l) => {
74
- p(l, i, u, t, r);
83
+ const i = s.getAttribute("data-attribute-type") || "", l = s.querySelectorAll(".attribute-cell");
84
+ l.length > 0 ? l.forEach((a) => {
85
+ p(a, i, u, t, r);
75
86
  }) : p(s, i, u, t, r);
76
87
  });
77
88
  });
78
89
  }
79
- function S(e, u, r) {
90
+ function _(e, u, r) {
80
91
  const o = e.querySelectorAll(".recommendation-product-row");
81
92
  if (!o.length)
82
93
  return;
83
94
  const [n] = o, t = n.querySelector("[data-attribute-type]"), c = t ? t.querySelectorAll(".attribute-cell").length : 1;
84
95
  o.forEach((s, i) => {
85
- s.querySelectorAll("[data-attribute-type]").forEach((l) => {
86
- const f = l.getAttribute("data-attribute-type") || "";
87
- l.querySelectorAll(".attribute-cell").forEach((y, m) => {
88
- const A = i * c + m;
89
- p(y, f, u, A, r);
96
+ s.querySelectorAll("[data-attribute-type]").forEach((a) => {
97
+ const f = a.getAttribute("data-attribute-type") || "";
98
+ a.querySelectorAll(".attribute-cell").forEach((y, A) => {
99
+ const m = i * c + A;
100
+ p(y, f, u, m, r);
90
101
  });
91
102
  });
92
103
  });
93
104
  }
94
105
  function q(e, u, r) {
95
106
  e.querySelectorAll(".ins-recommendation-product-container").forEach((n) => {
96
- S(n, u, r);
107
+ _(n, u, r);
97
108
  });
98
109
  }
99
110
  function d(e, u) {
100
111
  const r = e.getAttribute("data-layout") || "grid", o = e.getAttribute("currency-alignment") || "after";
101
- r === "list" ? $(e, u, o) : q(e, u, o);
112
+ r === "list" ? S(e, u, o) : q(e, u, o);
102
113
  }
103
- function h(e, u) {
114
+ function g(e, u) {
104
115
  const r = e.match(/<!DOCTYPE[^>]*>/i);
105
116
  return (r ? `${r[0]}
106
117
  ` : "") + u.documentElement.outerHTML;
107
118
  }
108
- function w(e) {
119
+ function E(e) {
109
120
  const u = e.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), r = new DOMParser().parseFromString(u, "text/html"), o = r.querySelectorAll(".recommendation-block-v2");
110
121
  if (!o.length)
111
122
  return e;
112
- const { buildCampaignUrl: n } = _();
123
+ const { buildCampaignUrl: n } = $();
113
124
  return o.forEach((c) => {
114
125
  const s = c.getAttribute("recommendation-id");
115
126
  s && (n(s), d(c, s));
116
- }), h(u, r).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
127
+ }), g(u, r).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
117
128
  }
118
129
  export {
119
130
  b as formatPriceVariable,
120
- w as prepareRecommendationBlocks
131
+ E as prepareRecommendationBlocks
121
132
  };
@@ -1,7 +1,12 @@
1
- const l = {
1
+ const e = "Items", o = {
2
2
  "Global Styles & Layout": "Global Styles and Layout",
3
- "Structures & Modules": "Structures and Modules"
3
+ "Structures & Modules": "Structures and Modules",
4
+ "Recommendation Block": "Recommendation",
5
+ Items: e,
6
+ "This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.",
7
+ "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.": "This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly."
4
8
  };
5
9
  export {
6
- l as default
10
+ e as Items,
11
+ o as default
7
12
  };
@@ -75,7 +75,8 @@ const e = {
75
75
  "The image with the invalid link cannot be saved to the image gallery": "Enter a valid image link to continue.",
76
76
  "The data source link is unavailable. Please, make sure there is an access to the data source.": "Enter an accessible Data Source Link to contiue.",
77
77
  "The file should not exceed the maximum resolution of {maxImageResolution}px.": "Upload files up to 1024x512 pixels to continue.",
78
- "The option is disabled because was overridden in the Code editor": "The option is disabled because it was overridden in the Code Editor."
78
+ "The option is disabled because was overridden in the Code editor": "The option is disabled because it was overridden in the Code Editor.",
79
+ "Dropdown with a list of available data services, preliminarily created in the Data section → Services tab of the Account.": "Service for Data Collection lets you enter a form submission URL for the recipients to submit."
79
80
  };
80
81
  export {
81
82
  e as default