@useinsider/guido 2.1.0-beta.e2d48fe → 2.1.0-beta.e4c3fa1

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 (183) hide show
  1. package/README.md +36 -0
  2. package/dist/@types/config/schemas.js +70 -65
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +69 -58
  5. package/dist/components/organisms/base/Toaster.vue.js +4 -4
  6. package/dist/components/organisms/base/Toaster.vue2.js +12 -9
  7. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
  8. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
  9. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +15 -14
  10. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  11. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
  12. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
  13. package/dist/composables/useActionsApi.js +15 -13
  14. package/dist/composables/useBlocksConfig.js +26 -16
  15. package/dist/composables/useHtmlValidator.js +114 -104
  16. package/dist/composables/useRecommendation.js +54 -21
  17. package/dist/composables/useStripo.js +25 -23
  18. package/dist/composables/useVersionHistoryApi.js +1 -1
  19. package/dist/config/compiler/recommendationCompilerRules.js +45 -39
  20. package/dist/config/compiler/utils/recommendationCompilerUtils.js +121 -0
  21. package/dist/config/i18n/en/index.js +11 -0
  22. package/dist/config/i18n/en/labels.json.js +7 -0
  23. package/dist/config/i18n/en/toasters.json.js +56 -0
  24. package/dist/config/i18n/en/tooltips.json.js +82 -0
  25. package/dist/config/i18n/index.js +7 -0
  26. package/dist/config/migrator/itemsBlockMigrator.js +127 -122
  27. package/dist/config/migrator/recommendationMigrator.js +2 -2
  28. package/dist/enums/defaults.js +8 -4
  29. package/dist/enums/extensions/recommendationBlock.js +1 -1
  30. package/dist/enums/recommendation.js +16 -15
  31. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +29 -29
  32. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +29 -29
  33. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +31 -29
  34. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +0 -1
  35. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +29 -27
  36. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  37. package/dist/extensions/Blocks/Recommendation/block.js +133 -9
  38. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  39. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  40. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +69 -0
  41. package/dist/extensions/Blocks/Recommendation/constants/layout.js +24 -0
  42. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +22 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +102 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +207 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +321 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +168 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +361 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextAfterControl.js → omnibusDiscount/textAfter.js} +16 -14
  62. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextBeforeControl.js → omnibusDiscount/textBefore.js} +16 -14
  63. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextAfterControl.js → omnibusPrice/textAfter.js} +16 -14
  65. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextBeforeControl.js → omnibusPrice/textBefore.js} +14 -12
  66. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +345 -0
  68. package/dist/extensions/Blocks/Recommendation/extension.js +40 -17
  69. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  70. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  71. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  72. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +21 -10
  73. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +297 -209
  74. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +228 -0
  75. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  76. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +66 -0
  77. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  78. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +169 -0
  79. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  80. package/dist/extensions/Blocks/Recommendation/templates/utils.js +134 -0
  81. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  82. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  83. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +26 -15
  84. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  85. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  86. package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
  87. package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
  88. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
  89. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
  90. package/dist/extensions/Blocks/controlFactories.js +125 -93
  91. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  92. package/dist/guido.css +1 -1
  93. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +317 -193
  94. package/dist/services/recommendationApi.js +11 -8
  95. package/dist/services/stripoApi.js +20 -17
  96. package/dist/services/templateLibraryApi.js +16 -13
  97. package/dist/src/@types/config/schemas.d.ts +8 -0
  98. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  99. package/dist/src/composables/useConfig.d.ts +4 -0
  100. package/dist/src/composables/useRecommendation.d.ts +1 -0
  101. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  102. package/dist/src/config/i18n/en/index.d.ts +1 -0
  103. package/dist/src/config/i18n/index.d.ts +16 -0
  104. package/dist/src/enums/defaults.d.ts +4 -0
  105. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  106. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  107. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +0 -24
  108. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +55 -0
  109. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  110. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +45 -0
  111. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +40 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  114. package/dist/src/extensions/Blocks/Recommendation/{cardCompositionControl.d.ts → controls/cardComposition/index.d.ts} +23 -3
  115. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +21 -589
  117. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +102 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +60 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +231 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +115 -0
  138. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  139. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  140. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  141. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +139 -468
  142. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  143. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  144. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  145. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +41 -0
  146. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  147. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  148. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  149. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +66 -0
  150. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  151. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +174 -0
  152. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  153. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  154. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  155. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
  156. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  157. package/dist/src/stores/config.d.ts +36 -0
  158. package/dist/static/styles/components/notification.css.js +19 -0
  159. package/dist/static/styles/components/tools.css.js +6 -2
  160. package/dist/static/styles/components/version-history.css.js +10 -2
  161. package/dist/static/styles/components/wide-panel.css.js +18 -2
  162. package/dist/static/styles/customEditorStyle.css.js +35 -11
  163. package/dist/static/styles/variables.css.js +2 -0
  164. package/dist/static/templates/empty/index.html.js +74 -0
  165. package/dist/static/templates/empty/style.css.js +779 -0
  166. package/dist/stores/unsubscribe.js +37 -34
  167. package/dist/utils/pairProductVariables.js +57 -56
  168. package/dist/utils/templatePreparation.js +15 -14
  169. package/package.json +1 -1
  170. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -187
  171. package/dist/extensions/Blocks/Recommendation/constants.js +0 -13
  172. package/dist/extensions/Blocks/Recommendation/control.js +0 -336
  173. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
  174. package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -245
  175. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
  176. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
  177. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -181
  178. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -189
  179. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -209
  180. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -38
  181. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
  182. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  183. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -52
@@ -1,14 +1,14 @@
1
- var b = Object.defineProperty;
2
- var R = (s, c, e) => c in s ? b(s, c, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[c] = e;
3
- var h = (s, c, e) => R(s, typeof c != "symbol" ? c + "" : c, e);
4
- import { ModificationDescription as N } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as B } from "../../../common-control.js";
1
+ var R = Object.defineProperty;
2
+ var N = (s, c, e) => c in s ? R(s, c, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[c] = e;
3
+ var h = (s, c, e) => N(s, typeof c != "symbol" ? c + "" : c, e);
4
+ import { ModificationDescription as B } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as E } from "../../../common-control.js";
6
6
  import { ItemsBlockControlId as y } from "../../enums/controlEnums.js";
7
- import { getItemsBlockConfig as m, setItemsBlockConfig as E, escapeReplacement as x } from "../../utils/nodeConfigUtils.js";
8
- const I = y.PRICE_CURRENCY_SYMBOL, p = {
7
+ import { getItemsBlockConfig as p, setItemsBlockConfig as x, escapeReplacement as f } from "../../utils/nodeConfigUtils.js";
8
+ const I = y.PRICE_CURRENCY_SYMBOL, u = {
9
9
  CURRENCY_SYMBOL: "currencySymbol"
10
10
  };
11
- class O extends B {
11
+ class P extends E {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  h(this, "originalPriceContents", /* @__PURE__ */ new Map());
@@ -24,8 +24,8 @@ class O extends B {
24
24
  `;
25
25
  }
26
26
  onRender() {
27
- const e = m(this.currentNode);
28
- this.api.updateValues({ [p.CURRENCY_SYMBOL]: (e == null ? void 0 : e.priceCurrencySymbol) ?? "" }), this._storeOriginalContents(), this.api.onValueChanged(p.CURRENCY_SYMBOL, (t) => {
27
+ const e = p(this.currentNode);
28
+ this.api.updateValues({ [u.CURRENCY_SYMBOL]: (e == null ? void 0 : e.priceCurrencySymbol) ?? "" }), this._storeOriginalContents(), this.api.onValueChanged(u.CURRENCY_SYMBOL, (t) => {
29
29
  this._onCurrencySymbolChange(t);
30
30
  });
31
31
  }
@@ -34,42 +34,42 @@ class O extends B {
34
34
  }
35
35
  onTemplateNodeUpdated(e) {
36
36
  super.onTemplateNodeUpdated(e), this.handleBlockInstanceChange(() => {
37
- const t = m(this.currentNode);
38
- this.api.updateValues({ [p.CURRENCY_SYMBOL]: (t == null ? void 0 : t.priceCurrencySymbol) ?? "" }), this._storeOriginalContents();
37
+ const t = p(this.currentNode);
38
+ this.api.updateValues({ [u.CURRENCY_SYMBOL]: (t == null ? void 0 : t.priceCurrencySymbol) ?? "" }), this._storeOriginalContents();
39
39
  });
40
40
  }
41
41
  _onCurrencySymbolChange(e) {
42
- var i;
42
+ var a;
43
43
  console.debug("Currency symbol changed to: ", e);
44
- const t = m(this.currentNode), o = ((i = t == null ? void 0 : t.priceCurrencySymbol) == null ? void 0 : i.trim()) || "";
45
- if (E(this.currentNode, this.api, { priceCurrencySymbol: e }), !this.currentNode)
44
+ const t = p(this.currentNode), o = ((a = t == null ? void 0 : t.priceCurrencySymbol) == null ? void 0 : a.trim()) || "";
45
+ if (x(this.currentNode, this.api, { priceCurrencySymbol: e }), !this.currentNode)
46
46
  return;
47
47
  const r = this._getPriceBlocks();
48
48
  if (!r || r.length === 0)
49
49
  return;
50
- const n = (e == null ? void 0 : e.trim()) || "", l = (t == null ? void 0 : t.priceCurrencyLocation) ?? "0";
51
- r.forEach((u) => {
52
- const a = this._getParagraph(u);
53
- if (!a)
50
+ const n = (e == null ? void 0 : e.trim()) || "", l = (t == null ? void 0 : t.priceCurrencyLocation) ?? "0", i = this.api.getDocumentModifier();
51
+ r.forEach((d) => {
52
+ const m = this._getParagraph(d);
53
+ if (!m)
54
54
  return;
55
- const d = a.getInnerHTML().trim() || "", C = a.getInnerText().trim() || "", g = this._removeCurrencySymbol(C, o), _ = this._buildPriceContent(g, n, l), S = d.replace(C, x(_));
56
- this.api.getDocumentModifier().modifyHtml(a).setInnerHtml(S).apply(new N(
57
- `Updated currency symbol to ${n || "removed"}`
58
- ));
59
- });
55
+ const g = m.getInnerHTML().trim() || "", C = m.getInnerText().trim() || "", _ = this._removeCurrencySymbol(C, o), S = this._buildPriceContent(_, n, l), b = g.replace(C, f(S));
56
+ i.modifyHtml(m).setInnerHtml(b);
57
+ }), i.apply(new B(
58
+ `Updated currency symbol to ${n || "removed"}`
59
+ ));
60
60
  }
61
61
  _storeOriginalContents() {
62
62
  if (!this.currentNode)
63
63
  return;
64
- const e = m(this.currentNode);
64
+ const e = p(this.currentNode);
65
65
  this.currentNode.querySelectorAll(
66
66
  ".items-block-price"
67
67
  ).forEach((o) => {
68
68
  var n;
69
69
  const r = o.querySelector("p");
70
70
  if (r && !this.originalPriceContents.has(r)) {
71
- const l = r.getInnerText() || "", i = ((n = e == null ? void 0 : e.priceCurrencySymbol) == null ? void 0 : n.trim()) || "", u = this._removeCurrencySymbol(l, i);
72
- this.originalPriceContents.set(r, u);
71
+ const l = r.getInnerText() || "", i = ((n = e == null ? void 0 : e.priceCurrencySymbol) == null ? void 0 : n.trim()) || "", a = this._removeCurrencySymbol(l, i);
72
+ this.originalPriceContents.set(r, a);
73
73
  }
74
74
  });
75
75
  }
@@ -106,7 +106,7 @@ class O extends B {
106
106
  ${this._GuTwoColumns([
107
107
  this._GuLabel({ text: "Currency Symbol" }),
108
108
  this._GuTextInput({
109
- name: p.CURRENCY_SYMBOL,
109
+ name: u.CURRENCY_SYMBOL,
110
110
  placeholder: "Enter Currency Symbol",
111
111
  className: "es-180w"
112
112
  })
@@ -116,5 +116,5 @@ class O extends B {
116
116
  }
117
117
  export {
118
118
  I as CONTROL_BLOCK_ID,
119
- O as PriceCurrencySymbolControl
119
+ P as PriceCurrencySymbolControl
120
120
  };
@@ -1,63 +1,65 @@
1
- import { ModificationDescription as A, UIElementType as P, UEAttr as C } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as L } from "../../../common-control.js";
3
- import { ItemsBlockControlId as p, ItemsBlockId as _ } from "../../enums/controlEnums.js";
1
+ import { ModificationDescription as L, UIElementType as P, UEAttr as D } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as h } from "../../../common-control.js";
3
+ import { ItemsBlockControlId as R, ItemsBlockId as _ } from "../../enums/controlEnums.js";
4
4
  import { productPairs as I } from "../../enums/productEnums.js";
5
- import { getItemsBlockConfig as d, setItemsBlockConfig as D, escapeReplacement as h } from "../../utils/nodeConfigUtils.js";
6
- const g = p.PRICE_FORMATTED_PRICE, s = {
5
+ import { getItemsBlockConfig as d, setItemsBlockConfig as u, escapeReplacement as O } from "../../utils/nodeConfigUtils.js";
6
+ const g = R.PRICE_FORMATTED_PRICE, s = {
7
7
  FORMATTED_PRICE: "formattedPrice"
8
8
  };
9
- class $ extends L {
9
+ class k extends h {
10
10
  getId() {
11
11
  return g;
12
12
  }
13
13
  getTemplate() {
14
14
  return `
15
- <div class="container ${p.PRICE_FORMATTED_PRICE}">
15
+ <div class="container ${R.PRICE_FORMATTED_PRICE}">
16
16
  ${this._getFormattedPrice()}
17
17
  </div>
18
18
  `;
19
19
  }
20
20
  onRender() {
21
- const e = d(this.currentNode);
22
- this.api.updateValues({ [s.FORMATTED_PRICE]: (e == null ? void 0 : e.priceFormatted) ?? !0 }), this.api.onValueChanged(s.FORMATTED_PRICE, (t) => {
23
- this._onFormattedPriceChange(t);
21
+ const t = d(this.currentNode);
22
+ this.api.updateValues({ [s.FORMATTED_PRICE]: (t == null ? void 0 : t.priceFormatted) ?? !0 }), this.api.onValueChanged(s.FORMATTED_PRICE, (e) => {
23
+ this._onFormattedPriceChange(e);
24
24
  });
25
25
  }
26
- onTemplateNodeUpdated(e) {
27
- super.onTemplateNodeUpdated(e), this.handleBlockInstanceChange(() => {
28
- const t = d(this.currentNode);
29
- this.api.updateValues({ [s.FORMATTED_PRICE]: (t == null ? void 0 : t.priceFormatted) ?? !0 });
26
+ onTemplateNodeUpdated(t) {
27
+ super.onTemplateNodeUpdated(t), this.handleBlockInstanceChange(() => {
28
+ const e = d(this.currentNode);
29
+ this.api.updateValues({ [s.FORMATTED_PRICE]: (e == null ? void 0 : e.priceFormatted) ?? !0 });
30
30
  });
31
31
  }
32
- _onFormattedPriceChange(e) {
33
- if (console.debug("Formatted price changed to: ", e), D(this.currentNode, this.api, { priceFormatted: e }), !this.currentNode)
32
+ _onFormattedPriceChange(t) {
33
+ if (console.debug("Formatted price changed to: ", t), u(this.currentNode, this.api, { priceFormatted: t }), !this.currentNode)
34
34
  return;
35
- const t = d(this.currentNode), n = (t == null ? void 0 : t.type) ?? "CART_ITEMS", i = (t == null ? void 0 : t.priceSinglePrice) ?? !1, r = I.PAIRS_FOR_EXTENSION.price[n], o = I.PAIRS_FOR_EXTENSION.originalPrice[n], [E, R] = e ? [
35
+ const e = d(this.currentNode), n = (e == null ? void 0 : e.type) ?? "CART_ITEMS", i = (e == null ? void 0 : e.priceSinglePrice) ?? !1, r = I.PAIRS_FOR_EXTENSION.price[n], c = I.PAIRS_FOR_EXTENSION.originalPrice[n], [p, m] = t ? [
36
36
  i ? r.DEFAULT_SINGLE_PRICE : r.DEFAULT_PRICE,
37
37
  i ? r.DEFAULT_SINGLE_PRICE_FORMATTED : r.DEFAULT_PRICE_FORMATTED
38
38
  ] : [
39
39
  i ? r.DEFAULT_SINGLE_PRICE_FORMATTED : r.DEFAULT_PRICE_FORMATTED,
40
40
  i ? r.DEFAULT_SINGLE_PRICE : r.DEFAULT_PRICE
41
- ], l = i ? o.DEFAULT_SINGLE_PRICE : o.DEFAULT_PRICE, T = i ? o.DEFAULT_SINGLE_PRICE_FORMATTED : o.DEFAULT_PRICE_FORMATTED, [m, F] = e ? [l, T] : [T, l], c = this.currentNode.closest(".items-block");
42
- ((c == null ? void 0 : c.querySelectorAll(
41
+ ], l = i ? c.DEFAULT_SINGLE_PRICE : c.DEFAULT_PRICE, T = i ? c.DEFAULT_SINGLE_PRICE_FORMATTED : c.DEFAULT_PRICE_FORMATTED, [F, A] = t ? [l, T] : [T, l], o = this.currentNode.closest(".items-block"), C = (o == null ? void 0 : o.querySelectorAll(
43
42
  `[esd-extension-block-id="${_.PRICE}"]`
44
- )) || []).forEach((a) => {
45
- this._updatePriceBlock(a, E, R, e, "price");
46
- }), ((c == null ? void 0 : c.querySelectorAll(
43
+ )) || [], E = this.api.getDocumentModifier();
44
+ C.forEach((a) => {
45
+ this._updatePriceBlock(E, a, p, m);
46
+ }), ((o == null ? void 0 : o.querySelectorAll(
47
47
  `[esd-extension-block-id="${_.ORIGINAL_PRICE}"]`
48
48
  )) || []).forEach((a) => {
49
- this._updatePriceBlock(a, m, F, e, "original price");
50
- });
49
+ this._updatePriceBlock(E, a, F, A);
50
+ }), E.apply(new L(
51
+ `Updated price to ${t ? "formatted" : "unformatted"}`
52
+ ));
51
53
  }
52
- _updatePriceBlock(e, t, n, i, r) {
53
- const o = e.getInnerHTML().trim().replace(t, h(n)), E = `Updated ${r} to ${i ? "formatted" : "unformatted"}`;
54
- this.api.getDocumentModifier().modifyHtml(e).setInnerHtml(o).apply(new A(E));
54
+ _updatePriceBlock(t, e, n, i) {
55
+ const r = e.getInnerHTML().trim().replace(n, O(i));
56
+ t.modifyHtml(e).setInnerHtml(r);
55
57
  }
56
58
  _getFormattedPrice() {
57
59
  return `
58
60
  <div class="display-flex align-items-center justify-content-between">
59
61
  <${P.LABEL}
60
- ${C.LABEL.text}="${this.api.translate("Formatted Price (e.g. $9.90)")}"
62
+ ${D.LABEL.text}="${this.api.translate("Formatted Price (e.g. $9.90)")}"
61
63
  >
62
64
  </${P.LABEL}>
63
65
  ${this._GuToggle(s.FORMATTED_PRICE)}
@@ -67,5 +69,5 @@ class $ extends L {
67
69
  }
68
70
  export {
69
71
  g as CONTROL_BLOCK_ID,
70
- $ as PriceFormattedPriceControl
72
+ k as PriceFormattedPriceControl
71
73
  };
@@ -33,7 +33,6 @@ class C extends r {
33
33
  }
34
34
  _getHideDiscount() {
35
35
  return `
36
-
37
36
  <div class="display-flex align-items-center justify-content-between">
38
37
  <${o.LABEL}
39
38
  ${d.LABEL.text}="${this.api.translate("Hide if same as discounted ")}"
@@ -1,18 +1,18 @@
1
- import { ModificationDescription as P, UIElementType as _, UEAttr as S } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as m } from "../../../common-control.js";
3
- import { ItemsBlockControlId as T, ItemsBlockId as g } from "../../enums/controlEnums.js";
4
- import { productPairs as R } from "../../enums/productEnums.js";
5
- import { getItemsBlockConfig as I, setItemsBlockConfig as u, escapeReplacement as A } from "../../utils/nodeConfigUtils.js";
6
- const h = T.PRICE_SINGLE_PRICE, l = {
1
+ import { ModificationDescription as m, UIElementType as _, UEAttr as A } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as h } from "../../../common-control.js";
3
+ import { ItemsBlockControlId as L, ItemsBlockId as R } from "../../enums/controlEnums.js";
4
+ import { productPairs as T } from "../../enums/productEnums.js";
5
+ import { getItemsBlockConfig as I, setItemsBlockConfig as u, escapeReplacement as N } from "../../utils/nodeConfigUtils.js";
6
+ const D = L.PRICE_SINGLE_PRICE, l = {
7
7
  SINGLE_PRICE: "singlePrice"
8
8
  };
9
- class M extends m {
9
+ class y extends h {
10
10
  getId() {
11
- return h;
11
+ return D;
12
12
  }
13
13
  getTemplate() {
14
14
  return `
15
- <div class="container ${T.PRICE_SINGLE_PRICE}">
15
+ <div class="container ${L.PRICE_SINGLE_PRICE}">
16
16
  ${this._getSinglePrice()}
17
17
  </div>
18
18
  `;
@@ -32,34 +32,36 @@ class M extends m {
32
32
  _onSinglePriceChange(e) {
33
33
  if (console.debug("Single price changed to: ", e), u(this.currentNode, this.api, { priceSinglePrice: e }), !this.currentNode)
34
34
  return;
35
- const t = I(this.currentNode), n = (t == null ? void 0 : t.type) ?? "CART_ITEMS", r = (t == null ? void 0 : t.priceFormatted) ?? !1, i = R.PAIRS_FOR_EXTENSION.price[n], c = R.PAIRS_FOR_EXTENSION.originalPrice[n], [E, d] = e ? [
35
+ const t = I(this.currentNode), o = (t == null ? void 0 : t.type) ?? "CART_ITEMS", r = (t == null ? void 0 : t.priceFormatted) ?? !1, i = T.PAIRS_FOR_EXTENSION.price[o], c = T.PAIRS_FOR_EXTENSION.originalPrice[o], [P, p] = e ? [
36
36
  r ? i.DEFAULT_PRICE_FORMATTED : i.DEFAULT_PRICE,
37
37
  r ? i.DEFAULT_SINGLE_PRICE_FORMATTED : i.DEFAULT_SINGLE_PRICE
38
38
  ] : [
39
39
  r ? i.DEFAULT_SINGLE_PRICE_FORMATTED : i.DEFAULT_SINGLE_PRICE,
40
40
  r ? i.DEFAULT_PRICE_FORMATTED : i.DEFAULT_PRICE
41
- ], a = r ? c.DEFAULT_PRICE_FORMATTED : c.DEFAULT_PRICE, s = r ? c.DEFAULT_SINGLE_PRICE_FORMATTED : c.DEFAULT_SINGLE_PRICE, [L, C] = e ? [a, s] : [s, a], o = this.currentNode.closest(".items-block");
42
- ((o == null ? void 0 : o.querySelectorAll(
43
- `[esd-extension-block-id="${g.PRICE}"]`
44
- )) || []).forEach((p) => {
45
- this._updatePriceBlock(p, E, d, e, "price");
46
- }), ((o == null ? void 0 : o.querySelectorAll(
47
- `[esd-extension-block-id="${g.ORIGINAL_PRICE}"]`
48
- )) || []).forEach((p) => {
49
- this._updatePriceBlock(p, L, C, e, "original price");
50
- });
41
+ ], s = r ? c.DEFAULT_PRICE_FORMATTED : c.DEFAULT_PRICE, d = r ? c.DEFAULT_SINGLE_PRICE_FORMATTED : c.DEFAULT_SINGLE_PRICE, [g, C] = e ? [s, d] : [d, s], n = this.currentNode.closest(".items-block"), S = (n == null ? void 0 : n.querySelectorAll(
42
+ `[esd-extension-block-id="${R.PRICE}"]`
43
+ )) || [], E = this.api.getDocumentModifier();
44
+ S.forEach((a) => {
45
+ this._updatePriceBlock(E, a, P, p, e);
46
+ }), ((n == null ? void 0 : n.querySelectorAll(
47
+ `[esd-extension-block-id="${R.ORIGINAL_PRICE}"]`
48
+ )) || []).forEach((a) => {
49
+ this._updatePriceBlock(E, a, g, C, e);
50
+ }), E.apply(new m(
51
+ `Updated price to ${e ? "single" : "total"} price`
52
+ ));
51
53
  }
52
- _updatePriceBlock(e, t, n, r, i) {
53
- const c = e.getInnerHTML().trim().replace(t, A(n)), E = `Updated ${i} to ${r ? "single" : "total"} price`;
54
- this.api.getDocumentModifier().modifyHtml(e).setInnerHtml(c).apply(new P(E)), e.querySelectorAll('[product-attr="price"], [product-attr="originalPrice"]').forEach((s) => {
55
- this.api.getDocumentModifier().modifyHtml(s).setAttribute("data-single_price", r ? "true" : "false").apply(new P("Update single price attribute"));
54
+ _updatePriceBlock(e, t, o, r, i) {
55
+ const c = t.getInnerHTML().trim().replace(o, N(r));
56
+ e.modifyHtml(t).setInnerHtml(c), t.querySelectorAll('[product-attr="price"], [product-attr="originalPrice"]').forEach((s) => {
57
+ e.modifyHtml(s).setAttribute("data-single_price", i ? "true" : "false");
56
58
  });
57
59
  }
58
60
  _getSinglePrice() {
59
61
  return `
60
62
  <div class="display-flex align-items-center justify-content-between">
61
63
  <${_.LABEL}
62
- ${S.LABEL.text}="${this.api.translate("Show Single Product Price")}"
64
+ ${A.LABEL.text}="${this.api.translate("Show Single Product Price")}"
63
65
  >
64
66
  </${_.LABEL}>
65
67
  ${this._GuToggle(l.SINGLE_PRICE)}
@@ -68,6 +70,6 @@ class M extends m {
68
70
  }
69
71
  }
70
72
  export {
71
- h as CONTROL_BLOCK_ID,
72
- M as PriceSinglePriceControl
73
+ D as CONTROL_BLOCK_ID,
74
+ y as PriceSinglePriceControl
73
75
  };
@@ -22,6 +22,8 @@ class U extends O {
22
22
  new T(
23
23
  _.SETTINGS,
24
24
  [
25
+ I.ORIGINAL_PRICE_STYLE,
26
+ I.ORIGINAL_PRICE_ALIGN,
25
27
  I.PRICE_ORIENTATION,
26
28
  I.ORIGINAL_PRICE_PADDINGS
27
29
  ]
@@ -29,17 +31,17 @@ class U extends O {
29
31
  new T(
30
32
  _.STYLES,
31
33
  [
32
- I.ORIGINAL_PRICE_STYLE,
33
- I.ORIGINAL_PRICE_ALIGN,
34
- I.ORIGINAL_PRICE_COLOR,
35
34
  I.ORIGINAL_PRICE_FONT_FAMILY,
36
- I.ORIGINAL_PRICE_SIZE
35
+ I.ORIGINAL_PRICE_SIZE,
36
+ I.ORIGINAL_PRICE_COLOR
37
37
  ]
38
38
  )
39
39
  ], N[E.PRICE] = [
40
40
  new T(
41
41
  _.SETTINGS,
42
42
  [
43
+ I.PRICE_STYLE,
44
+ I.PRICE_ALIGN,
43
45
  I.PRICE_HIDE_DISCOUNT,
44
46
  I.PRICE_FORMATTED_PRICE,
45
47
  I.PRICE_SINGLE_PRICE,
@@ -51,11 +53,9 @@ class U extends O {
51
53
  new T(
52
54
  _.STYLES,
53
55
  [
54
- I.PRICE_STYLE,
55
- I.PRICE_ALIGN,
56
- I.PRICE_COLOR,
57
56
  I.PRICE_FONT_FAMILY,
58
- I.PRICE_SIZE
57
+ I.PRICE_SIZE,
58
+ I.PRICE_COLOR
59
59
  ]
60
60
  )
61
61
  ], N[E.NAME] = [
@@ -77,17 +77,12 @@ class U extends O {
77
77
  ]
78
78
  )
79
79
  ], N[E.QUANTITY] = [
80
- new T(
81
- _.SETTINGS,
82
- [
83
- I.QUANTITY_FONT_FAMILY,
84
- I.QUANTITY_STYLE
85
- ]
86
- ),
87
80
  new T(
88
81
  _.STYLES,
89
82
  [
83
+ I.QUANTITY_STYLE,
90
84
  I.QUANTITY_ALIGN,
85
+ I.QUANTITY_FONT_FAMILY,
91
86
  I.QUANTITY_SIZE,
92
87
  I.QUANTITY_COLOR,
93
88
  I.QUANTITY_PADDINGS
@@ -1,18 +1,29 @@
1
- import { Block as e, BlockCompositionType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { getDefaultTemplate as o } from "./templates/blockTemplate.js";
3
- const n = "recommendation-block";
4
- class m extends e {
1
+ var p = Object.defineProperty;
2
+ var f = (r, o, t) => o in r ? p(r, o, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[o] = t;
3
+ var g = (r, o, t) => f(r, typeof o != "symbol" ? o + "" : o, t);
4
+ import { Block as h, BlockCompositionType as I, ModificationDescription as _ } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { ensureMobileCssRulesExist as d } from "./controls/mobileLayout/cssRules.js";
6
+ import { RecommendationConfigService as s } from "./services/configService.js";
7
+ import { useRecommendationExtensionStore as u } from "./store/recommendation.js";
8
+ import { getDefaultTemplate as k } from "./templates/grid/template.js";
9
+ const B = "recommendation-block", c = "ins-recommendation-v3-block-v2", a = "recommendation-id";
10
+ class y extends h {
5
11
  constructor() {
6
12
  super();
13
+ /**
14
+ * Stores the ID generated in getTemplate() so onCreated() can reuse it.
15
+ * This avoids generating a new (different) ID in onCreated().
16
+ */
17
+ g(this, "_pendingBlockId", null);
7
18
  }
8
19
  getId() {
9
- return n;
20
+ return B;
10
21
  }
11
22
  getIcon() {
12
23
  return "recommendation-icon";
13
24
  }
14
25
  getBlockCompositionType() {
15
- return t.CONTAINER;
26
+ return I.CONTAINER;
16
27
  }
17
28
  getName() {
18
29
  return this.api.translate("Recommendation Block");
@@ -20,11 +31,124 @@ class m extends e {
20
31
  getDescription() {
21
32
  return this.api.translate("Recommendation Block Title Description");
22
33
  }
34
+ /**
35
+ * Returns the template HTML for a new recommendation block.
36
+ * Generates a unique recommendation ID and embeds the instance class
37
+ * (ins-recommendation-v3-block-{id}) directly in the template HTML.
38
+ * This is necessary because Stripo's Angular rendering manages the class
39
+ * attribute and overwrites dynamically added classes via setAttribute.
40
+ */
23
41
  getTemplate() {
24
- return o();
42
+ const t = this._generateNextId();
43
+ return this._pendingBlockId = t, k(t);
44
+ }
45
+ /**
46
+ * Called when a new block is dropped into the template
47
+ *
48
+ * Uses the ID from getTemplate() (which already embedded the instance class)
49
+ * and assigns the recommendation-id attribute + initializes configuration.
50
+ * @param node - The newly created block node
51
+ */
52
+ onCreated(t) {
53
+ const e = this._pendingBlockId ?? this._generateNextId();
54
+ this._pendingBlockId = null, this._assignRecommendationId(t, e);
55
+ const n = s.initializeConfig(this.api, t, { recommendationId: e }), i = u();
56
+ i.setCurrentBlock(e), d(this.api), i.patchCurrentBlockConfig({ language: n.language }, { triggerRefetch: !1 });
57
+ }
58
+ /**
59
+ * Called when the document changes or template is loaded
60
+ *
61
+ * Handles migration from legacy templates that don't have node config
62
+ * and assigns recommendation-id to legacy blocks that lack one.
63
+ * @param node - The block node that may need migration
64
+ */
65
+ onDocumentChanged(t) {
66
+ if (!(!t || !("getNodeConfig" in t))) {
67
+ if (!this._getRecommendationId(t)) {
68
+ const e = this._generateNextId();
69
+ this._assignRecommendationId(t, e), s.hasConfig(t) && s.updateConfig(
70
+ this.api,
71
+ t,
72
+ { recommendationId: e },
73
+ "Assign recommendation ID to legacy block"
74
+ );
75
+ }
76
+ s.needsMigration(t) && this._migrateFromLegacy(t), d(this.api);
77
+ }
78
+ }
79
+ /**
80
+ * Called when a block is deleted from the template
81
+ *
82
+ * Cleans up the per-block state from the Pinia store.
83
+ * @param node - The block node being deleted
84
+ */
85
+ onDelete(t) {
86
+ const e = this._getRecommendationId(t);
87
+ e && u().removeBlockState(e);
88
+ }
89
+ /**
90
+ * Generates the next unique recommendation ID by scanning all existing blocks
91
+ * in the document and finding the maximum existing ID + 1.
92
+ */
93
+ _generateNextId() {
94
+ let t = 0;
95
+ try {
96
+ const e = this.api.getDocumentRoot();
97
+ e && "querySelectorAll" in e && e.querySelectorAll(`.${c}`).forEach((i) => {
98
+ if ("getAttribute" in i) {
99
+ const m = i.getAttribute(a), l = m ? parseInt(m) : 0;
100
+ l > t && (t = l);
101
+ }
102
+ });
103
+ } catch {
104
+ }
105
+ return t + 1;
106
+ }
107
+ /**
108
+ * Assigns a recommendation-id attribute to the block element.
109
+ * The instance class (ins-recommendation-v3-block-{id}) is embedded in the template
110
+ * HTML by getTemplate(), since Stripo's Angular rendering overwrites dynamically
111
+ * added classes via setAttribute.
112
+ */
113
+ _assignRecommendationId(t, e) {
114
+ const n = this._getBlockElement(t);
115
+ if (!n)
116
+ return;
117
+ const i = this.api.getDocumentModifier();
118
+ i.modifyHtml(n).setAttribute(a, e.toString()), i.apply(new _(`Assign recommendation ID ${e}`));
119
+ }
120
+ /**
121
+ * Gets the recommendation-id from a block node
122
+ */
123
+ _getRecommendationId(t) {
124
+ const e = this._getBlockElement(t);
125
+ if (!e || !("getAttribute" in e))
126
+ return null;
127
+ const n = e.getAttribute(a);
128
+ if (!n)
129
+ return null;
130
+ const i = parseInt(n);
131
+ return Number.isNaN(i) ? null : i;
132
+ }
133
+ /**
134
+ * Gets the block element (the element with BLOCK_CLASS)
135
+ */
136
+ _getBlockElement(t) {
137
+ if ("getAttribute" in t) {
138
+ const e = t.getAttribute("class");
139
+ if (e && e.includes(c))
140
+ return t;
141
+ }
142
+ return "querySelector" in t ? t.querySelector(`.${c}`) : null;
143
+ }
144
+ /**
145
+ * Migrate configuration from legacy format
146
+ */
147
+ _migrateFromLegacy(t) {
148
+ s.migrateFromDataAttributes(this.api, t);
25
149
  }
26
150
  }
27
151
  export {
28
- n as BLOCK_ID,
29
- m as RecommendationBlock
152
+ B as BLOCK_ID,
153
+ y as RecommendationBlock
30
154
  };
@@ -0,0 +1,4 @@
1
+ var b = /* @__PURE__ */ ((r) => (r.BUTTON = "recommendation-block-button", r.NAME = "recommendation-block-name", r.PRICE = "recommendation-block-price", r.OLD_PRICE = "recommendation-block-old-price", r.OMNIBUS_PRICE = "recommendation-block-omnibus-price", r.OMNIBUS_DISCOUNT = "recommendation-block-omnibus-discount", r.IMAGE = "recommendation-block-image", r))(b || {});
2
+ export {
3
+ b as RecommendationBlockId
4
+ };
@@ -0,0 +1,4 @@
1
+ var o = /* @__PURE__ */ ((c) => (c.BUTTON_ALIGN = "recommendation-block-button-align-control", c.BUTTON_BORDER = "recommendation-block-button-border-control", c.BUTTON_BORDER_RADIUS = "recommendation-block-button-border-radius-control", c.BUTTON_COLOR = "recommendation-block-button-color-control", c.BUTTON_FIT_TO_CONTENT = "recommendation-block-button-fit-to-content-control", c.BUTTON_FONT_FAMILY = "recommendation-block-button-font-family-control", c.BUTTON_MARGINS = "recommendation-block-button-margins-control", c.BUTTON_PADDINGS = "recommendation-block-button-paddings-control", c.BUTTON_TEXT = "recommendation-block-button-text-control", c.BUTTON_TEXT_SIZE = "recommendation-block-button-text-size-control", c.BUTTON_TEXT_STYLE_AND_FONT_COLOR = "recommendation-block-button-text-style-and-font-color-control", c.NAME_ALIGN = "recommendation-block-name-align-control", c.NAME_BACKGROUND = "recommendation-block-name-background-control", c.NAME_COLOR = "recommendation-block-name-color-control", c.NAME_FONT_FAMILY = "recommendation-block-name-font-family-control", c.NAME_PADDINGS = "recommendation-block-name-paddings-control", c.NAME_SIZE = "recommendation-block-name-size-control", c.NAME_STYLE = "recommendation-block-name-style-control", c.NAME_TEXT_TRIM = "recommendation-block-name-text-trim-control", c.PRICE_ALIGN = "recommendation-block-price-align-control", c.PRICE_BACKGROUND = "recommendation-block-price-background-control", c.PRICE_COLOR = "recommendation-block-price-color-control", c.PRICE_FONT_FAMILY = "recommendation-block-price-font-family-control", c.PRICE_PADDINGS = "recommendation-block-price-paddings-control", c.PRICE_SIZE = "recommendation-block-price-size-control", c.PRICE_STYLE = "recommendation-block-price-style-control", c.OLD_PRICE_ALIGN = "recommendation-block-old-price-align-control", c.OLD_PRICE_BACKGROUND = "recommendation-block-old-price-background-control", c.OLD_PRICE_COLOR = "recommendation-block-old-price-color-control", c.OLD_PRICE_FONT_FAMILY = "recommendation-block-old-price-font-family-control", c.OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control", c.OLD_PRICE_SIZE = "recommendation-block-old-price-size-control", c.OLD_PRICE_STYLE = "recommendation-block-old-price-style-control", c.OMNIBUS_PRICE_ALIGN = "recommendation-block-omnibus-price-align-control", c.OMNIBUS_PRICE_BACKGROUND = "recommendation-block-omnibus-price-background-control", c.OMNIBUS_PRICE_COLOR = "recommendation-block-omnibus-price-color-control", c.OMNIBUS_PRICE_FONT_FAMILY = "recommendation-block-omnibus-price-font-family-control", c.OMNIBUS_PRICE_PADDINGS = "recommendation-block-omnibus-price-paddings-control", c.OMNIBUS_PRICE_SIZE = "recommendation-block-omnibus-price-size-control", c.OMNIBUS_PRICE_STYLE = "recommendation-block-omnibus-price-style-control", c.OMNIBUS_PRICE_TEXT_BEFORE = "recommendation-block-omnibus-price-text-before-control", c.OMNIBUS_PRICE_TEXT_AFTER = "recommendation-block-omnibus-price-text-after-control", c.OMNIBUS_DISCOUNT_ALIGN = "recommendation-block-omnibus-discount-align-control", c.OMNIBUS_DISCOUNT_BACKGROUND = "recommendation-block-omnibus-discount-background-control", c.OMNIBUS_DISCOUNT_COLOR = "recommendation-block-omnibus-discount-color-control", c.OMNIBUS_DISCOUNT_FONT_FAMILY = "recommendation-block-omnibus-discount-font-family-control", c.OMNIBUS_DISCOUNT_PADDINGS = "recommendation-block-omnibus-discount-paddings-control", c.OMNIBUS_DISCOUNT_SIZE = "recommendation-block-omnibus-discount-size-control", c.OMNIBUS_DISCOUNT_STYLE = "recommendation-block-omnibus-discount-style-control", c.OMNIBUS_DISCOUNT_TEXT_BEFORE = "recommendation-block-omnibus-discount-text-before-control", c.OMNIBUS_DISCOUNT_TEXT_AFTER = "recommendation-block-omnibus-discount-text-after-control", c.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(o || {});
2
+ export {
3
+ o as RecommendationControlId
4
+ };
@@ -0,0 +1,69 @@
1
+ import { DEFAULT_MOBILE_ROW_SPACING as U, DEFAULT_MOBILE_COLUMN_SPACING as R, DEFAULT_ROW_SPACING as n, DEFAULT_COLUMN_SPACING as O, DEFAULT_MOBILE_CARDS_IN_ROW as C, DEFAULT_CARDS_IN_ROW as D } from "./layout.js";
2
+ import { ATTR_PRODUCT_IMAGE as _, ATTR_PRODUCT_NAME as o, ATTR_PRODUCT_OLD_PRICE as t, ATTR_PRODUCT_PRICE as e, ATTR_PRODUCT_OMNIBUS_PRICE as T, ATTR_PRODUCT_OMNIBUS_DISCOUNT as I, ATTR_PRODUCT_BUTTON as r } from "./selectors.js";
3
+ const i = {
4
+ code: "USD",
5
+ symbol: "USD",
6
+ alignment: "after",
7
+ decimalCount: 2,
8
+ decimalSeparator: ".",
9
+ thousandSeparator: ","
10
+ }, A = {
11
+ textBefore: "",
12
+ textAfter: ""
13
+ }, s = {
14
+ textBefore: "",
15
+ textAfter: ""
16
+ }, E = [
17
+ _,
18
+ o,
19
+ t,
20
+ e,
21
+ T,
22
+ I,
23
+ r
24
+ ], c = {
25
+ [_]: !0,
26
+ [o]: !0,
27
+ [e]: !0,
28
+ [t]: !0,
29
+ [T]: !1,
30
+ [I]: !1,
31
+ [r]: !0
32
+ }, N = {
33
+ // Settings
34
+ strategy: "mostPopular",
35
+ productIds: [],
36
+ size: "6",
37
+ shuffleProducts: !1,
38
+ language: "en_US",
39
+ currency: i,
40
+ filters: [],
41
+ // Layout
42
+ layout: "grid",
43
+ cardsInRow: D,
44
+ mobileCardsInRow: C,
45
+ columnSpacing: O,
46
+ rowSpacing: n,
47
+ mobileColumnSpacing: R,
48
+ mobileRowSpacing: U,
49
+ // Composition
50
+ composition: E,
51
+ visibility: c,
52
+ // Element settings
53
+ omnibusPrice: A,
54
+ omnibusDiscount: s,
55
+ textTrimming: !1,
56
+ // Meta
57
+ configVersion: 1,
58
+ recommendationId: 0
59
+ }, m = [11, 12], L = 1;
60
+ export {
61
+ L as CURRENT_CONFIG_VERSION,
62
+ E as DEFAULT_COMPOSITION,
63
+ i as DEFAULT_CURRENCY,
64
+ N as DEFAULT_NODE_CONFIG,
65
+ s as DEFAULT_OMNIBUS_DISCOUNT,
66
+ A as DEFAULT_OMNIBUS_PRICE,
67
+ c as DEFAULT_VISIBILITY,
68
+ m as EXCLUDED_ALGORITHM_IDS
69
+ };
@@ -0,0 +1,24 @@
1
+ const _ = {
2
+ GRID: "grid",
3
+ LIST: "list"
4
+ }, A = [
5
+ { icon: "grid-orientation", value: _.GRID },
6
+ { icon: "list-orientation", value: _.LIST }
7
+ ], o = 3, t = 3, O = 9, n = 4, I = 1, L = 2, R = 10, T = 10, c = 10, s = 10, S = 0, U = 50, C = 5;
8
+ export {
9
+ t as DEFAULT_CARDS_IN_ROW,
10
+ R as DEFAULT_COLUMN_SPACING,
11
+ I as DEFAULT_MOBILE_CARDS_IN_ROW,
12
+ c as DEFAULT_MOBILE_COLUMN_SPACING,
13
+ s as DEFAULT_MOBILE_ROW_SPACING,
14
+ o as DEFAULT_PRODUCTS_PER_ROW,
15
+ T as DEFAULT_ROW_SPACING,
16
+ A as LAYOUT_OPTIONS,
17
+ _ as LAYOUT_VALUES,
18
+ L as MAX_MOBILE_PRODUCTS_PER_ROW,
19
+ n as MAX_PRODUCTS_PER_ROW,
20
+ O as MAX_PRODUCT_COUNT,
21
+ U as MAX_SPACING,
22
+ S as MIN_SPACING,
23
+ C as SPACING_STEP
24
+ };