@useinsider/guido 3.18.2-beta.ec25841 → 3.18.2-beta.eedafd2

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 (81) hide show
  1. package/README.md +1 -0
  2. package/dist/@types/config/schemas.js +28 -26
  3. package/dist/components/Guido.vue.js +6 -6
  4. package/dist/components/Guido.vue2.js +72 -70
  5. package/dist/components/organisms/AutoSaveController.vue2.js +9 -8
  6. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +11 -13
  7. package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +52 -70
  8. package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +37 -23
  9. package/dist/components/organisms/header/EditorActions.vue.js +2 -2
  10. package/dist/components/organisms/header/EditorActions.vue2.js +86 -56
  11. package/dist/components/organisms/header/LeftSlot.vue.js +5 -5
  12. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -12
  13. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -20
  14. package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +34 -34
  15. package/dist/components/organisms/validation/ValidationErrorDrawer.vue.js +20 -0
  16. package/dist/components/organisms/validation/ValidationErrorDrawer.vue2.js +48 -0
  17. package/dist/components/wrappers/WpDrawer.vue.js +9 -7
  18. package/dist/components/wrappers/WpDrawer.vue2.js +1 -1
  19. package/dist/composables/useCustomInterfaceAppearance.js +46 -56
  20. package/dist/composables/useHtmlCompiler.js +37 -26
  21. package/dist/composables/useHtmlValidator.js +81 -84
  22. package/dist/composables/useHttp.js +24 -22
  23. package/dist/composables/useRecommendation.js +35 -40
  24. package/dist/composables/useSave.js +90 -45
  25. package/dist/composables/useSaveValidation.js +279 -0
  26. package/dist/composables/useSaveValidationRollout.js +9 -0
  27. package/dist/composables/useStripo.js +30 -30
  28. package/dist/composables/validators/useCouponBlockValidator.js +24 -21
  29. package/dist/composables/validators/useUnsubscribeBlockValidator.js +34 -27
  30. package/dist/enums/extensions/recommendationBlock.js +31 -38
  31. package/dist/enums/save-validation.js +4 -0
  32. package/dist/extensions/Blocks/Recommendation/block.js +39 -43
  33. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +20 -21
  34. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +33 -38
  35. package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +52 -84
  36. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +78 -168
  37. package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +12 -21
  38. package/dist/guido.css +1 -1
  39. package/dist/services/templateLibraryApi.js +17 -14
  40. package/dist/src/@types/config/schemas.d.ts +4 -0
  41. package/dist/src/@types/save-validation.d.ts +19 -0
  42. package/dist/src/components/Guido.vue.d.ts +17 -1
  43. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +17 -1
  44. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +17 -1
  45. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +17 -1
  46. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +4 -3
  47. package/dist/src/composables/useConfig.d.ts +2 -0
  48. package/dist/src/composables/useHtmlValidator.d.ts +21 -0
  49. package/dist/src/composables/useSave.d.ts +6 -1
  50. package/dist/src/composables/useSaveValidation.d.ts +6 -0
  51. package/dist/src/composables/useSaveValidationRollout.d.ts +3 -0
  52. package/dist/src/composables/validators/useCouponBlockValidator.d.ts +3 -0
  53. package/dist/src/composables/validators/useUnsubscribeBlockValidator.d.ts +10 -0
  54. package/dist/src/enums/extensions/recommendationBlock.d.ts +0 -2
  55. package/dist/src/enums/save-validation.d.ts +27 -0
  56. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -1
  57. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  58. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -2
  59. package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +0 -9
  60. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +3 -73
  61. package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +0 -4
  62. package/dist/src/stores/config.d.ts +30 -0
  63. package/dist/src/stores/onboarding.d.ts +0 -377
  64. package/dist/src/stores/save-validation.d.ts +22 -0
  65. package/dist/src/utils/genericUtil.d.ts +6 -0
  66. package/dist/src/utils/liquidDynamicContent.d.ts +20 -0
  67. package/dist/src/utils/templatePreparation.d.ts +30 -0
  68. package/dist/static/styles/components/recommendation-strategy.css.js +4 -34
  69. package/dist/stores/config.js +39 -22
  70. package/dist/stores/onboarding.js +36 -41
  71. package/dist/stores/save-validation.js +30 -0
  72. package/dist/utils/genericUtil.js +63 -54
  73. package/dist/utils/liquidDynamicContent.js +15 -0
  74. package/dist/utils/templatePreparation.js +63 -59
  75. package/package.json +1 -1
  76. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +0 -21
  77. package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +0 -47
  78. package/dist/extensions/Blocks/Recommendation/utils/strategyDetach.js +0 -19
  79. package/dist/src/extensions/Blocks/Recommendation/utils/strategyDetach.d.ts +0 -12
  80. package/dist/static/styles/components/skeleton.css.js +0 -23
  81. /package/dist/src/components/organisms/{onboarding/RecommendationStrategyOnboarding.vue.d.ts → validation/ValidationErrorDrawer.vue.d.ts} +0 -0
@@ -1,8 +1,8 @@
1
- import { ToasterTypeOptions as i } from "../../enums/toaster.js";
1
+ import { ToasterTypeOptions as c } from "../../enums/toaster.js";
2
2
  import { PAGE_TYPES as u } from "../../enums/unsubscribe.js";
3
- import { UNSUBSCRIBE_BLOCK_SELECTOR as l, DATA_ATTRIBUTES as a } from "../../extensions/Blocks/Unsubscribe/utils/constants.js";
4
- import { useToaster as E } from "../useToaster.js";
5
- import { useTranslations as m } from "../useTranslations.js";
3
+ import { UNSUBSCRIBE_BLOCK_SELECTOR as i, DATA_ATTRIBUTES as a } from "../../extensions/Blocks/Unsubscribe/utils/constants.js";
4
+ import { useToaster as p } from "../useToaster.js";
5
+ import { useTranslations as l } from "../useTranslations.js";
6
6
  const T = [
7
7
  {
8
8
  pageType: u.GLOBAL_UNSUBSCRIBE,
@@ -12,30 +12,37 @@ const T = [
12
12
  pageType: u.SUBSCRIPTION_PREFERENCE_CENTER,
13
13
  messageKey: "unsubscription-preference.duplicate-pref-center"
14
14
  }
15
- ], g = "unsubscription-preference.duplicate-both", b = "unsubscription-preference.select-page-to-continue", P = () => {
16
- const { showToaster: c } = E(), p = m();
17
- return { validateUnsubscribeBlockUniqueness: (n) => {
18
- const o = new DOMParser().parseFromString(n, "text/html"), r = /* @__PURE__ */ new Map();
19
- o.querySelectorAll(l).forEach((e) => {
20
- const s = Number(e.getAttribute(a.PAGE_TYPE));
21
- r.set(s, (r.get(s) ?? 0) + 1);
22
- });
23
- const t = T.filter((e) => (r.get(e.pageType) ?? 0) > 1).map((e) => e.messageKey);
24
- return t.length ? (c({
25
- type: i.Error,
26
- message: p(t.length > 1 ? g : t[0])
15
+ ], g = "unsubscription-preference.duplicate-both", E = "unsubscription-preference.select-page-to-continue";
16
+ function m(r) {
17
+ const s = new DOMParser().parseFromString(r, "text/html"), t = /* @__PURE__ */ new Map();
18
+ return s.querySelectorAll(i).forEach((n) => {
19
+ const e = Number(n.getAttribute(a.PAGE_TYPE));
20
+ t.set(e, (t.get(e) ?? 0) + 1);
21
+ }), T.filter((n) => (t.get(n.pageType) ?? 0) > 1);
22
+ }
23
+ function b(r) {
24
+ const s = new DOMParser().parseFromString(r, "text/html");
25
+ return Array.from(s.querySelectorAll(i)).filter((t) => {
26
+ const n = t.getAttribute(a.PAGE_TYPE), e = t.getAttribute(a.PAGE_LIST);
27
+ return !n || !e;
28
+ }).length;
29
+ }
30
+ const y = () => {
31
+ const { showToaster: r } = p(), s = l();
32
+ return { validateUnsubscribeBlockUniqueness: (e) => {
33
+ const o = m(e);
34
+ return o.length ? (r({
35
+ type: c.Error,
36
+ message: s(o.length > 1 ? g : o[0].messageKey)
27
37
  }), !1) : !0;
28
- }, validateUnsubscribeBlockHasTemplate: (n) => {
29
- const o = new DOMParser().parseFromString(n, "text/html");
30
- return Array.from(o.querySelectorAll(l)).some((t) => {
31
- const e = t.getAttribute(a.PAGE_TYPE), s = t.getAttribute(a.PAGE_LIST);
32
- return !e || !s;
33
- }) ? (c({
34
- type: i.Warning,
35
- message: p(b)
36
- }), !1) : !0;
37
- } };
38
+ }, validateUnsubscribeBlockHasTemplate: (e) => b(e) === 0 ? !0 : (r({
39
+ type: c.Warning,
40
+ message: s(E)
41
+ }), !1) };
38
42
  };
39
43
  export {
40
- P as useUnsubscribeBlockValidator
44
+ E as EMPTY_BLOCK_KEY,
45
+ b as countUnsubBlocksWithoutPage,
46
+ m as findDuplicateUnsubPageTypes,
47
+ y as useUnsubscribeBlockValidator
41
48
  };
@@ -1,20 +1,14 @@
1
- import { useTranslations as n } from "../../composables/useTranslations.js";
2
- const o = {
1
+ import { useTranslations as r } from "../../composables/useTranslations.js";
2
+ const l = {
3
3
  RECOMMENDATION_API_URL: "https://recommendationv2.api.useinsider.com",
4
4
  // Relative path → same-origin as the embedding inone dashboard.
5
5
  PRODUCT_ATTRIBUTES_PATH: "/product-attributes/get-attributes",
6
6
  RECOMMENDATION_STRATEGIES_PATH: "/api/recommendation-strategies",
7
- RECOMMENDATION_STRATEGIES_PANEL_PATH: "/discovery/recommendation-strategies",
8
- // Smart Recommender hides the Email channel unless the URL asks for it, so a strategy created
9
- // without this flag can never be Email-suitable and would never reach the editor's list.
10
- RECOMMENDATION_STRATEGY_CREATE_PATH: "/discovery/recommendation-strategies/create?isEmail=true"
11
- }, d = (e) => {
12
- const { RECOMMENDATION_STRATEGIES_PANEL_PATH: r } = o;
13
- return `${r}/${e}/edit?isEmail=true`;
14
- }, m = {
7
+ RECOMMENDATION_STRATEGIES_PANEL_PATH: "/discovery/recommendation-strategies"
8
+ }, c = {
15
9
  CLIENT_ID: "clientId"
16
- }, p = () => {
17
- const e = n();
10
+ }, d = () => {
11
+ const e = r();
18
12
  return [
19
13
  {
20
14
  id: 11,
@@ -77,14 +71,14 @@ const o = {
77
71
  path: "top-sellers"
78
72
  }
79
73
  ];
80
- }, v = ["discount", "omnibus_price", "omnibus_discount", "price", "original_price"], h = [
74
+ }, m = ["discount", "omnibus_price", "omnibus_discount", "price", "original_price"], p = [
81
75
  { text: "before the amount", value: "0" },
82
76
  { text: "after the amount", value: "1" }
83
- ], x = [
77
+ ], v = [
84
78
  { text: "dot(.)", value: "." },
85
79
  { text: "comma(,)", value: "," },
86
80
  { text: "space( )", value: " " }
87
- ], E = [
81
+ ], h = [
88
82
  { text: "0", value: "0" },
89
83
  { text: "1", value: "1" },
90
84
  { text: "2", value: "2" },
@@ -96,55 +90,54 @@ const o = {
96
90
  { text: "contains", value: "~" },
97
91
  { text: "does not contain", value: "!~" },
98
92
  { text: "any of", value: a }
99
- ], s = [
93
+ ], n = [
100
94
  { text: "is exactly", value: "=" },
101
95
  { text: "is not exactly", value: "!==" },
102
96
  { text: "contains", value: "~" },
103
97
  { text: "does not contain", value: "!~" },
104
98
  { text: "any of", value: a }
105
- ], i = [
99
+ ], o = [
106
100
  { text: "is equal to", value: "=" },
107
101
  { text: "is greater than", value: ">" },
108
102
  { text: "is less than", value: "<" }
109
- ], u = [
103
+ ], s = [
110
104
  { text: "is equal to", value: "=" },
111
105
  { text: "after", value: ">" },
112
106
  { text: "before", value: "<" }
113
- ], c = [
107
+ ], i = [
114
108
  { text: "true", value: "==" },
115
109
  { text: "false", value: "!=" }
116
- ], b = (e) => {
110
+ ], x = (e) => {
117
111
  if (!e)
118
112
  return t;
119
113
  switch (e) {
120
114
  case "Boolean":
121
- return c;
115
+ return i;
122
116
  case "Date":
123
- return u;
117
+ return s;
124
118
  case "Number":
125
- return i;
119
+ return o;
126
120
  case "String":
127
121
  return t;
128
122
  case "Strings":
129
- return s;
123
+ return n;
130
124
  default:
131
125
  return t;
132
126
  }
133
127
  };
134
128
  export {
135
129
  a as OP_ANY_OF,
136
- v as PriceAttributes,
137
- m as QUERY_PARAMS,
138
- o as URLS,
139
- E as currencyDecimalCounts,
140
- h as currencyLocationMaps,
141
- x as currencyOperators,
142
- b as getOperatorOptions,
143
- p as getRecommendationFeedSourceMaps,
144
- s as operatorOptionsForArrayOfStrings,
145
- c as operatorOptionsForBooleans,
146
- u as operatorOptionsForDates,
147
- i as operatorOptionsForNumbers,
148
- t as operatorOptionsForStrings,
149
- d as strategyEditPath
130
+ m as PriceAttributes,
131
+ c as QUERY_PARAMS,
132
+ l as URLS,
133
+ h as currencyDecimalCounts,
134
+ p as currencyLocationMaps,
135
+ v as currencyOperators,
136
+ x as getOperatorOptions,
137
+ d as getRecommendationFeedSourceMaps,
138
+ n as operatorOptionsForArrayOfStrings,
139
+ i as operatorOptionsForBooleans,
140
+ s as operatorOptionsForDates,
141
+ o as operatorOptionsForNumbers,
142
+ t as operatorOptionsForStrings
150
143
  };
@@ -0,0 +1,4 @@
1
+ var n = /* @__PURE__ */ ((s) => (s.CouponTagModified = "coupon-tag-modified", s.DuplicateUnsubBlock = "duplicate-unsub-block", s.UnsubBlockMissingTemplate = "unsub-block-missing-template", s.LiquidSyntax = "liquid-syntax", s.InvalidLinks = "invalid-links", s.LinkCheckInProgress = "link-check-in-progress", s.CustomFieldScript = "custom-field-script", s.EmptyHtml = "empty-html", s.MismatchedBraces = "mismatched-braces", s.InvalidDynamicTag = "invalid-dynamic-tag", s.InvalidCustomField = "invalid-custom-field", s.ConditionsSyntax = "conditions-syntax", s.WrongEqualityOperator = "wrong-equality-operator", s.MissingIfEndif = "missing-if-endif", s.ConditionTagSpacing = "condition-tag-spacing", s.BracesInsideIfTag = "braces-inside-if-tag", s.RecommendationRequiredFields = "recommendation-required-fields", s.RecommendationFilters = "recommendation-filters", s.InvalidImageType = "invalid-image-type", s.CheckboxUnsubGroup = "checkbox-unsub-group", s.RadioButtonUnsubGroup = "radio-button-unsub-group", s))(n || {});
2
+ export {
3
+ n as SaveValidationRule
4
+ };
@@ -1,37 +1,37 @@
1
- var D = Object.defineProperty;
2
- var y = (l, c, t) => c in l ? D(l, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[c] = t;
3
- var f = (l, c, t) => y(l, typeof c != "symbol" ? c + "" : c, t);
4
- import { useConfig as C } from "../../../composables/useConfig.js";
5
- import { BlockId as b } from "../../../enums/block.js";
6
- import { getMigrationBannerHtml as A } from "../../../utils/migrationBannerHtml.js";
7
- import { Block as E, BlockCompositionType as S, ModificationDescription as g } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
8
- import { CURRENT_CONFIG_VERSION as N, PRE_RRS_CONFIG_VERSION as O } from "./constants/defaultConfig.js";
1
+ var R = Object.defineProperty;
2
+ var B = (a, c, t) => c in a ? R(a, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[c] = t;
3
+ var p = (a, c, t) => B(a, typeof c != "symbol" ? c + "" : c, t);
4
+ import { useConfig as D } from "../../../composables/useConfig.js";
5
+ import { BlockId as y } from "../../../enums/block.js";
6
+ import { getMigrationBannerHtml as C } from "../../../utils/migrationBannerHtml.js";
7
+ import { Block as b, BlockCompositionType as A, ModificationDescription as g } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
8
+ import { CURRENT_CONFIG_VERSION as E, PRE_RRS_CONFIG_VERSION as S } from "./constants/defaultConfig.js";
9
9
  import { RECOMMENDATION_ID_ATTR as m } from "./constants/selectors.js";
10
- import { regenerateMobileProductRows as M } from "./controls/main/utils.js";
11
- import { ensureMobileCssRulesExist as _, setMobileLayoutOptOut as I, hasMobileLayoutOptOut as w } from "./controls/mobileLayout/cssRules.js";
10
+ import { regenerateMobileProductRows as N } from "./controls/main/utils.js";
11
+ import { ensureMobileCssRulesExist as h, setMobileLayoutOptOut as f, hasMobileLayoutOptOut as O } from "./controls/mobileLayout/cssRules.js";
12
12
  import { RecommendationConfigService as s } from "./services/configService.js";
13
13
  import { useRecommendationExtensionStore as d } from "./store/recommendation.js";
14
- import { getDefaultTemplate as x } from "./templates/grid/template.js";
15
- import { useRecommendationBlockWarning as H } from "./useRecommendationBlockWarning.js";
16
- const k = b.Recommendation, u = "recommendation-block-v2", R = "hide-price";
17
- let B = !1;
18
- class j extends E {
14
+ import { getDefaultTemplate as M } from "./templates/grid/template.js";
15
+ import { useRecommendationBlockWarning as w } from "./useRecommendationBlockWarning.js";
16
+ const _ = y.Recommendation, u = "recommendation-block-v2", I = "hide-price";
17
+ let k = !1;
18
+ class W extends b {
19
19
  constructor() {
20
20
  super();
21
21
  /**
22
22
  * Stores the ID generated in getTemplate() so onCreated() can reuse it.
23
23
  * This avoids generating a new (different) ID in onCreated().
24
24
  */
25
- f(this, "_pendingBlockId", null);
25
+ p(this, "_pendingBlockId", null);
26
26
  }
27
27
  getId() {
28
- return k;
28
+ return _;
29
29
  }
30
30
  getIcon() {
31
31
  return "recommendation-icon";
32
32
  }
33
33
  getBlockCompositionType() {
34
- return S.CONTAINER;
34
+ return A.CONTAINER;
35
35
  }
36
36
  getName() {
37
37
  return this.api.translate("Recommendation Block");
@@ -42,8 +42,8 @@ class j extends E {
42
42
  );
43
43
  }
44
44
  getSettingsPanelTitleHtml() {
45
- return A(
46
- k,
45
+ return C(
46
+ _,
47
47
  this.api.translate("Recommendation Block"),
48
48
  this.api.translate("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.")
49
49
  );
@@ -66,7 +66,7 @@ class j extends E {
66
66
  */
67
67
  getTemplate() {
68
68
  const t = this._generateNextId();
69
- return this._pendingBlockId = t, x(t);
69
+ return this._pendingBlockId = t, M(t);
70
70
  }
71
71
  /**
72
72
  * Called when a new block is dropped into the template
@@ -89,27 +89,23 @@ class j extends E {
89
89
  }
90
90
  const i = this._pendingBlockId ?? this._generateNextId();
91
91
  this._pendingBlockId = null, this._assignRecommendationId(t, i);
92
- const n = C().isFeatureEnabled("reusableRecommendationStrategy"), o = n && !s.hasConfig(t), { config: r, wasFreshDrop: a } = s.initializeConfig(
92
+ const { config: n, wasFreshDrop: o } = s.initializeConfig(
93
93
  this.api,
94
94
  t,
95
95
  {
96
96
  recommendationId: i,
97
- configVersion: n ? N : O,
98
- // An RRS block picks a strategy, not an algorithm, and its algorithm control is
99
- // hidden. Keeping the `mostPopular` default would bake a most-popular feed URL
100
- // at save for a block the user never configured.
101
- ...o ? { strategy: "" } : {}
97
+ configVersion: D().isFeatureEnabled("reusableRecommendationStrategy") ? E : S
102
98
  }
103
- ), p = d();
104
- if (p.setCurrentBlock(i), this._stampHidePrice(t, r.priceHideIfSameAsDiscounted), a) {
105
- _(this.api);
106
- const h = this._getBlockElement(t);
107
- h && (I(this.api, h, !0), M({
99
+ ), r = d();
100
+ if (r.setCurrentBlock(i), this._stampHidePrice(t, n.priceHideIfSameAsDiscounted), o) {
101
+ h(this.api);
102
+ const l = this._getBlockElement(t);
103
+ l && (f(this.api, l, !0), N({
108
104
  currentNode: t,
109
105
  documentModifier: this.api.getDocumentModifier()
110
106
  }));
111
107
  }
112
- p.patchCurrentBlockConfig({ language: r.language }, { triggerRefetch: !1 }), this._warnIfMultipleBlocks();
108
+ r.patchCurrentBlockConfig({ language: n.language }, { triggerRefetch: !1 }), this._warnIfMultipleBlocks();
113
109
  }
114
110
  /**
115
111
  * Called when the document changes or template is loaded
@@ -131,11 +127,11 @@ class j extends E {
131
127
  }
132
128
  this._healLingeringDuplicate(t), s.needsMigration(t) && this._migrateFromLegacy(t), this._healHidePriceAttr(t);
133
129
  try {
134
- B || (_(this.api), B = !0);
130
+ k || (h(this.api), k = !0);
135
131
  const e = s.getConfig(t), i = this._getBlockElement(t);
136
132
  if (i) {
137
133
  const n = !e.mobileLayoutEnabled;
138
- w(i) !== n && I(this.api, i, n);
134
+ O(i) !== n && f(this.api, i, n);
139
135
  }
140
136
  } catch {
141
137
  }
@@ -165,7 +161,7 @@ class j extends E {
165
161
  */
166
162
  _warnIfMultipleBlocks() {
167
163
  try {
168
- H().warnIfMultipleBlocks(this.api.getDocumentRootHtmlNode());
164
+ w().warnIfMultipleBlocks(this.api.getDocumentRootHtmlNode());
169
165
  } catch {
170
166
  }
171
167
  }
@@ -215,9 +211,9 @@ class j extends E {
215
211
  if (!o)
216
212
  return;
217
213
  let r = -1;
218
- for (let a = 0; a < n.length; a++)
219
- if (n[a] === o) {
220
- r = a;
214
+ for (let l = 0; l < n.length; l++)
215
+ if (n[l] === o) {
216
+ r = l;
221
217
  break;
222
218
  }
223
219
  if (r <= 0)
@@ -297,7 +293,7 @@ class j extends E {
297
293
  */
298
294
  _stampHidePrice(t, e) {
299
295
  const i = this._getBlockElement(t);
300
- i && this.api.getDocumentModifier().modifyHtml(i).setAttribute(R, String(e)).apply(new g("Stamp hide-price"));
296
+ i && this.api.getDocumentModifier().modifyHtml(i).setAttribute(I, String(e)).apply(new g("Stamp hide-price"));
301
297
  }
302
298
  /**
303
299
  * Stamps `hide-price` from config only when the block lacks the attribute —
@@ -305,7 +301,7 @@ class j extends E {
305
301
  */
306
302
  _healHidePriceAttr(t) {
307
303
  const e = this._getBlockElement(t);
308
- if (!e || !("getAttribute" in e) || e.getAttribute(R) !== null)
304
+ if (!e || !("getAttribute" in e) || e.getAttribute(I) !== null)
309
305
  return;
310
306
  const { priceHideIfSameAsDiscounted: i } = s.getConfig(t);
311
307
  this._stampHidePrice(t, i);
@@ -342,6 +338,6 @@ class j extends E {
342
338
  }
343
339
  }
344
340
  export {
345
- k as BLOCK_ID,
346
- j as RecommendationBlock
341
+ _ as BLOCK_ID,
342
+ W as RecommendationBlock
347
343
  };
@@ -1,13 +1,13 @@
1
- import { DEFAULT_COLUMN_SPACING as i, DEFAULT_ROW_SPACING as s, DEFAULT_MOBILE_ROW_SPACING as n, DEFAULT_MOBILE_COLUMN_SPACING as O, DEFAULT_MOBILE_CARDS_IN_ROW as e, DEFAULT_CARDS_IN_ROW as C } from "./layout.js";
2
- import { ATTR_PRODUCT_IMAGE as o, ATTR_PRODUCT_NAME as t, ATTR_PRODUCT_OLD_PRICE as _, ATTR_PRODUCT_PRICE as T, ATTR_PRODUCT_OMNIBUS_PRICE as I, ATTR_PRODUCT_OMNIBUS_DISCOUNT as R, ATTR_PRODUCT_BUTTON as r, ATTR_RECOMMENDATION_TITLE as E } from "./selectors.js";
3
- const U = 1, u = 2, m = 2, A = {
1
+ import { DEFAULT_COLUMN_SPACING as R, DEFAULT_ROW_SPACING as s, DEFAULT_MOBILE_ROW_SPACING as n, DEFAULT_MOBILE_COLUMN_SPACING as O, DEFAULT_MOBILE_CARDS_IN_ROW as e, DEFAULT_CARDS_IN_ROW as C } from "./layout.js";
2
+ import { ATTR_PRODUCT_IMAGE as o, ATTR_PRODUCT_NAME as t, ATTR_PRODUCT_OLD_PRICE as _, ATTR_PRODUCT_PRICE as T, ATTR_PRODUCT_OMNIBUS_PRICE as r, ATTR_PRODUCT_OMNIBUS_DISCOUNT as I, ATTR_PRODUCT_BUTTON as i, ATTR_RECOMMENDATION_TITLE as U } from "./selectors.js";
3
+ const A = 1, u = 2, D = {
4
4
  code: "USD",
5
5
  symbol: "USD",
6
6
  alignment: "after",
7
7
  decimalCount: 2,
8
8
  decimalSeparator: ".",
9
9
  thousandSeparator: ","
10
- }, D = {
10
+ }, E = {
11
11
  textBefore: "",
12
12
  textAfter: ""
13
13
  }, a = {
@@ -18,26 +18,26 @@ const U = 1, u = 2, m = 2, A = {
18
18
  t,
19
19
  _,
20
20
  T,
21
+ r,
21
22
  I,
22
- R,
23
- r
23
+ i
24
24
  ], N = {
25
- [E]: !0,
25
+ [U]: !0,
26
26
  [o]: !0,
27
27
  [t]: !0,
28
28
  [T]: !0,
29
29
  [_]: !0,
30
+ [r]: !1,
30
31
  [I]: !1,
31
- [R]: !1,
32
- [r]: !0
33
- }, L = {
32
+ [i]: !0
33
+ }, m = {
34
34
  // Settings
35
35
  strategy: "mostPopular",
36
36
  productIds: [],
37
37
  size: "6",
38
38
  shuffleProducts: !1,
39
39
  language: "en_US",
40
- currency: A,
40
+ currency: D,
41
41
  filters: [],
42
42
  strategyId: "",
43
43
  // Layout
@@ -46,7 +46,7 @@ const U = 1, u = 2, m = 2, A = {
46
46
  mobileCardsInRow: e,
47
47
  mobileLayoutEnabled: !1,
48
48
  previousMobileCardsInRow: e,
49
- columnSpacing: i,
49
+ columnSpacing: R,
50
50
  rowSpacing: s,
51
51
  mobileColumnSpacing: O,
52
52
  mobileRowSpacing: n,
@@ -55,7 +55,7 @@ const U = 1, u = 2, m = 2, A = {
55
55
  visibility: N,
56
56
  previousTitleHtml: "",
57
57
  // Element settings
58
- omnibusPrice: D,
58
+ omnibusPrice: E,
59
59
  omnibusDiscount: a,
60
60
  textTrimming: !1,
61
61
  // Price placement (block-level, affects all cards)
@@ -66,18 +66,17 @@ const U = 1, u = 2, m = 2, A = {
66
66
  // of "false" (the actual hiding happens server-side at send).
67
67
  priceHideIfSameAsDiscounted: !1,
68
68
  // Meta
69
- configVersion: U,
69
+ configVersion: A,
70
70
  recommendationId: 0
71
- }, P = [11, 12];
71
+ }, L = [11, 12];
72
72
  export {
73
73
  u as CURRENT_CONFIG_VERSION,
74
74
  c as DEFAULT_COMPOSITION,
75
- A as DEFAULT_CURRENCY,
76
- L as DEFAULT_NODE_CONFIG,
75
+ D as DEFAULT_CURRENCY,
76
+ m as DEFAULT_NODE_CONFIG,
77
77
  a as DEFAULT_OMNIBUS_DISCOUNT,
78
- D as DEFAULT_OMNIBUS_PRICE,
78
+ E as DEFAULT_OMNIBUS_PRICE,
79
79
  N as DEFAULT_VISIBILITY,
80
- P as EXCLUDED_ALGORITHM_IDS,
81
- U as PRE_RRS_CONFIG_VERSION,
82
- m as RRS_CONFIG_VERSION
80
+ L as EXCLUDED_ALGORITHM_IDS,
81
+ A as PRE_RRS_CONFIG_VERSION
83
82
  };