@useinsider/guido 2.1.0-beta.ff1bc98 → 2.1.0-beta.ff9b498

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 (159) hide show
  1. package/README.md +39 -1
  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/extensions/recommendation/FilterSelectionDrawer.vue2.js +14 -15
  6. package/dist/composables/useBlocksConfig.js +26 -16
  7. package/dist/composables/useHtmlValidator.js +104 -114
  8. package/dist/composables/useRecommendation.js +21 -54
  9. package/dist/composables/useSave.js +16 -12
  10. package/dist/composables/useStripo.js +58 -54
  11. package/dist/composables/useStripoEventHandler.js +27 -12
  12. package/dist/composables/useSyncModuleExtractor.js +33 -0
  13. package/dist/config/compiler/recommendationCompilerRules.js +39 -45
  14. package/dist/config/migrator/itemsBlockMigrator.js +101 -97
  15. package/dist/config/migrator/recommendationMigrator.js +2 -2
  16. package/dist/enums/defaults.js +8 -4
  17. package/dist/enums/extensions/recommendationBlock.js +1 -1
  18. package/dist/enums/recommendation.js +15 -16
  19. package/dist/enums/unsubscribe.js +25 -21
  20. package/dist/extensions/Blocks/Recommendation/block.js +9 -133
  21. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +187 -0
  22. package/dist/extensions/Blocks/Recommendation/constants.js +13 -0
  23. package/dist/extensions/Blocks/Recommendation/control.js +336 -0
  24. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  26. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  27. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textAfter.js → omnibusDiscountTextAfterControl.js} +14 -16
  28. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textBefore.js → omnibusDiscountTextBeforeControl.js} +14 -16
  29. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textAfter.js → omnibusPriceTextAfterControl.js} +14 -16
  30. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textBefore.js → omnibusPriceTextBeforeControl.js} +12 -14
  31. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  32. package/dist/extensions/Blocks/Recommendation/extension.js +17 -40
  33. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +3 -19
  34. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  35. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +10 -21
  36. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +207 -254
  37. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +181 -0
  38. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +189 -0
  39. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +209 -0
  40. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  41. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +15 -26
  42. package/dist/extensions/Blocks/controlFactories.js +93 -125
  43. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  44. package/dist/guido.css +1 -1
  45. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +237 -225
  46. package/dist/services/recommendationApi.js +8 -11
  47. package/dist/services/stripoApi.js +50 -14
  48. package/dist/services/templateLibraryApi.js +13 -16
  49. package/dist/src/@types/config/schemas.d.ts +8 -0
  50. package/dist/src/@types/events.d.ts +34 -2
  51. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  52. package/dist/src/composables/useConfig.d.ts +4 -0
  53. package/dist/src/composables/useRecommendation.d.ts +0 -1
  54. package/dist/src/composables/useSyncModuleExtractor.d.ts +4 -0
  55. package/dist/src/enums/defaults.d.ts +4 -0
  56. package/dist/src/enums/unsubscribe.d.ts +3 -0
  57. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -67
  58. package/dist/src/extensions/Blocks/Recommendation/{controls/cardComposition/index.d.ts → cardCompositionControl.d.ts} +3 -23
  59. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +24 -0
  60. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +38 -0
  61. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +589 -21
  62. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  63. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  64. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +468 -138
  65. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  66. package/dist/src/extensions/Blocks/Recommendation/templates/{grid/migration.d.ts → migrationTemplate.d.ts} +4 -11
  67. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +52 -0
  68. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  69. package/dist/src/mock/api/settings.d.ts +2 -0
  70. package/dist/src/services/stripoApi.d.ts +5 -0
  71. package/dist/src/stores/config.d.ts +36 -0
  72. package/dist/src/stores/editor.d.ts +23 -0
  73. package/dist/static/styles/customEditorStyle.css.js +11 -35
  74. package/dist/stores/editor.js +2 -1
  75. package/dist/utils/pairProductVariables.js +56 -57
  76. package/dist/utils/templatePreparation.js +14 -15
  77. package/package.json +1 -1
  78. package/dist/config/compiler/utils/recommendationCompilerUtils.js +0 -116
  79. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  80. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  81. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +0 -66
  82. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -22
  83. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -21
  84. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  85. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  86. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  87. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  88. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -92
  89. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -102
  90. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -209
  91. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -52
  92. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -250
  93. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -70
  94. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -160
  95. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -67
  96. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -307
  97. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +0 -21
  98. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  99. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -108
  100. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  101. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  102. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  103. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  104. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -222
  105. package/dist/extensions/Blocks/Recommendation/services/configService.js +0 -240
  106. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +0 -233
  107. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  108. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +0 -66
  109. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  110. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +0 -174
  111. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +0 -73
  112. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -134
  113. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +0 -6
  114. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +0 -29
  115. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  116. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +0 -17
  117. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  118. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -49
  119. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -13
  120. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -41
  121. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -35
  122. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  123. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  124. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  125. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -37
  126. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -29
  127. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -52
  128. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  129. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -79
  130. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -24
  131. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -60
  132. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -23
  133. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -221
  134. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +0 -29
  135. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  136. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -34
  137. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  138. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  139. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  140. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  141. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  142. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  143. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  144. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  145. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -83
  146. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +0 -151
  147. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +0 -6
  148. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +0 -20
  149. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +0 -33
  150. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -41
  151. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +0 -8
  152. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +0 -25
  153. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +0 -18
  154. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -66
  155. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +0 -7
  156. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -166
  157. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +0 -33
  158. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +0 -113
  159. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +0 -77
@@ -1,77 +1,77 @@
1
- import { productPairs as P } from "../extensions/Blocks/Items/enums/productEnums.js";
2
- function L(F) {
3
- const R = F.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), $ = new DOMParser().parseFromString(R, "text/html"), y = P.PAIRS_FOR_EXTENSION;
4
- Object.entries(y).forEach(([n, l]) => {
5
- $.querySelectorAll(".ins-product-td").forEach((c) => {
6
- const E = c.getAttribute("data-number") || "1", T = c.getAttribute("data-type") || "CART_ITEMS";
7
- c.querySelectorAll(`[product-attr="${n}"]`).forEach((e) => {
8
- var H;
9
- const b = e.getAttribute("data-type") || T, u = e.getAttribute("data-number") || E, p = l[b];
1
+ import { productPairs as w } from "../extensions/Blocks/Items/enums/productEnums.js";
2
+ function P(k) {
3
+ const m = k.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), $ = new DOMParser().parseFromString(m, "text/html"), R = w.PAIRS_FOR_EXTENSION;
4
+ Object.entries(R).forEach(([n, l]) => {
5
+ $.querySelectorAll(".ins-product-td").forEach((o) => {
6
+ const E = o.getAttribute("data-number") || "1", b = o.getAttribute("data-type") || "CART_ITEMS";
7
+ o.querySelectorAll(`[product-attr="${n}"]`).forEach((e) => {
8
+ var y;
9
+ const T = e.getAttribute("data-type") || b, u = e.getAttribute("data-number") || E, p = l[T];
10
10
  if (p)
11
11
  switch (n) {
12
12
  case "imageSrc": {
13
- let t = null, o = null;
14
- if (e.tagName === "IMG" ? (t = e, o = t.closest("a")) : (t = e.querySelector("img"), o = e.querySelector("a") || e.closest("a")), !t)
13
+ let t = null, c = null;
14
+ if (e.tagName === "IMG" ? (t = e, c = t.closest("a")) : (t = e.querySelector("img"), c = e.querySelector("a") || e.closest("a")), !t)
15
15
  break;
16
16
  const i = p.DEFAULT, a = p.ATTR;
17
17
  if (i && t.src) {
18
18
  const r = t.src;
19
- i.some((f) => {
20
- const s = f.split("/").pop() || "", _ = r.split("/").pop() || "";
21
- return r.includes(f) || r.includes(s) || _ === s;
19
+ i.some((d) => {
20
+ const s = d.split("/").pop() || "", _ = r.split("/").pop() || "";
21
+ return r.includes(d) || r.includes(s) || _ === s;
22
22
  }) && (t.src = `{{${a}_${u}}}`);
23
23
  }
24
- if (o) {
25
- const r = (H = y.itemLink) == null ? void 0 : H[b];
24
+ if (c) {
25
+ const r = (y = R.itemLink) == null ? void 0 : y[T];
26
26
  if (r) {
27
- const d = r.HREF, f = r.DEFAULT_HREF || "#!", s = o.href;
28
- (s === "#" || s === "" || s.endsWith("#!") || s.endsWith(f) || s === `${window.location.href}${f}` || !s || s === window.location.href) && (o.href = `{{${d}_${u}}}`);
27
+ const f = r.HREF, d = r.DEFAULT_HREF || "#!", s = c.href;
28
+ (s === "#" || s === "" || s.endsWith("#!") || s.endsWith(d) || s === `${window.location.href}${d}` || !s || s === window.location.href) && (c.href = `{{${f}_${u}}}`);
29
29
  }
30
30
  }
31
31
  break;
32
32
  }
33
33
  case "name": {
34
- const t = p, o = t.ATTR, i = t.DEFAULT_HREF || "#!", a = t.HREF;
35
- e.textContent && (e.textContent = `{{${o}_${u}}}`);
34
+ const t = p, c = t.ATTR, i = t.DEFAULT_HREF || "#!", a = t.HREF;
35
+ e.textContent && (e.textContent = `{{${c}_${u}}}`);
36
36
  const r = e.closest("a") || (e.tagName === "A" ? e : null);
37
37
  if (r && a) {
38
- const d = r.href, f = `${window.location.href}${i}`;
39
- (d === f || d.endsWith(i)) && (r.href = `{{${a}_${u}}}`);
38
+ const f = r.href, d = `${window.location.href}${i}`;
39
+ (f === d || f.endsWith(i)) && (r.href = `{{${a}_${u}}}`);
40
40
  }
41
41
  break;
42
42
  }
43
43
  case "price":
44
44
  case "originalPrice": {
45
- const t = p, o = e.getAttribute("data-formated"), i = e.getAttribute("data-single_price"), a = o === "true", r = i === "true", d = e.getAttribute("data-curency") || "before";
46
- let f;
47
- r ? f = a ? t.SINGLE_PRICE_FORMATTED : t.SINGLE_PRICE : f = a ? t.PRICE_FORMATTED : t.PRICE;
45
+ const t = p, c = e.getAttribute("data-formated"), i = e.getAttribute("data-single_price"), a = c === "true", r = i === "true", f = e.getAttribute("data-curency") || "before";
46
+ let d;
47
+ r ? d = a ? t.SINGLE_PRICE_FORMATTED : t.SINGLE_PRICE : d = a ? t.PRICE_FORMATTED : t.PRICE;
48
48
  const s = t.CURRENCY;
49
- let _ = `{{${f}_${u}}}`;
49
+ let _ = `{{${d}_${u}}}`;
50
50
  if (s) {
51
- const k = `{{${s}_${u}}}`;
52
- _ = d === "after" ? `${_} ${k}` : `${k} ${_}`;
51
+ const H = `{{${s}_${u}}}`;
52
+ _ = f === "after" ? `${_} ${H}` : `${H} ${_}`;
53
53
  }
54
54
  e.textContent = _;
55
55
  break;
56
56
  }
57
57
  case "quantity": {
58
- const t = p, o = t.ATTR, i = t.DEFAULT;
59
- e.textContent && e.textContent.trim() === i && (e.textContent = `{{${o}_${u}}}`);
58
+ const t = p, c = t.ATTR, i = t.DEFAULT;
59
+ e.textContent && e.textContent.trim() === i && (e.textContent = `{{${c}_${u}}}`);
60
60
  break;
61
61
  }
62
62
  case "button": {
63
- const t = p, o = t.HREF, i = t.DEFAULT_HREF || "#!", a = e.tagName === "A" ? e : e.querySelector("a");
63
+ const t = p, c = t.HREF, i = t.DEFAULT_HREF || "#!", a = e.tagName === "A" ? e : e.querySelector("a");
64
64
  if (a) {
65
- const r = a.href || "", d = `${window.location.href}${i}`;
66
- (r === "" || r === "#" || r === d || r.endsWith(i) || r.endsWith("#!") || r === window.location.href) && (a.href = `{{${o}_${u}}}`);
65
+ const r = a.href || "", f = `${window.location.href}${i}`;
66
+ (r === "" || r === "#" || r === f || r.endsWith(i) || r.endsWith("#!") || r === window.location.href) && (a.href = `{{${c}_${u}}}`);
67
67
  }
68
68
  break;
69
69
  }
70
70
  case "itemLink": {
71
- const t = p, o = t.HREF, i = t.DEFAULT_HREF || "#!", a = e;
71
+ const t = p, c = t.HREF, i = t.DEFAULT_HREF || "#!", a = e;
72
72
  if (a.href) {
73
- const r = a.href, d = `${window.location.href}${i}`;
74
- (r === d || r.endsWith(i)) && (a.href = `{{${o}_${u}}}`);
73
+ const r = a.href, f = `${window.location.href}${i}`;
74
+ (r === f || r.endsWith(i)) && (a.href = `{{${c}_${u}}}`);
75
75
  }
76
76
  break;
77
77
  }
@@ -86,45 +86,44 @@ function L(F) {
86
86
  });
87
87
  });
88
88
  });
89
- const S = R.match(/<!DOCTYPE[^>]*>/i), I = S ? `${S[0]}
90
- ` : "", w = $.querySelectorAll(".ins-product-td"), m = [];
91
- w.forEach((n) => {
92
- const l = n.getAttribute("data-type") || "CART_ITEMS", A = n.getAttribute("data-number") || "1", c = n.getAttribute("data-nodup"), E = n.outerHTML;
93
- m.push({
89
+ const F = $.querySelectorAll(".ins-product-td"), S = [];
90
+ F.forEach((n) => {
91
+ const l = n.getAttribute("data-type") || "CART_ITEMS", A = n.getAttribute("data-number") || "1", o = n.getAttribute("data-nodup"), E = n.outerHTML;
92
+ S.push({
94
93
  element: n,
95
94
  outerHtml: E,
96
95
  type: l,
97
96
  number: A,
98
- nodup: c || void 0
97
+ nodup: o || void 0
99
98
  });
100
99
  });
101
- let h = I + $.documentElement.outerHTML;
102
- m.reverse().forEach(({ outerHtml: n, type: l, number: A }) => {
103
- let c = "";
100
+ let h = $.body.innerHTML;
101
+ S.reverse().forEach(({ outerHtml: n, type: l, number: A }) => {
102
+ let o = "";
104
103
  switch (l) {
105
104
  case "CART_ITEMS":
106
- c = "ins_apr_total_product_kind";
105
+ o = "ins_apr_total_product_kind";
107
106
  break;
108
107
  case "BROWSED_ITEMS":
109
- c = "browsed_item_total_product_kind";
108
+ o = "browsed_item_total_product_kind";
110
109
  break;
111
110
  case "PURCHASED_ITEMS":
112
- c = "purchased_item_total_product_kind";
111
+ o = "purchased_item_total_product_kind";
113
112
  break;
114
113
  }
115
- if (c) {
116
- const T = parseInt(A) - 1, b = `${`{% if ${c} > ${T} %}`}${n}{% endif %}`;
117
- h = h.replace(n, b);
114
+ if (o) {
115
+ const b = parseInt(A) - 1, T = `${`{% if ${o} > ${b} %}`}${n}{% endif %}`;
116
+ h = h.replace(n, T);
118
117
  }
119
118
  });
120
- const M = $.querySelectorAll('[product-attr="originalPrice"][data-type="CART_ITEMS"]'), g = [];
121
- return M.forEach((n) => {
119
+ const I = $.querySelectorAll('[product-attr="originalPrice"][data-type="CART_ITEMS"]'), g = [];
120
+ return I.forEach((n) => {
122
121
  const l = n.getAttribute("data-number"), A = n.getAttribute("data-type");
123
122
  if (!l || A !== "CART_ITEMS")
124
123
  return;
125
- const c = n.closest(".product-original-price-class");
126
- if (c) {
127
- const E = c.outerHTML;
124
+ const o = n.closest(".product-original-price-class");
125
+ if (o) {
126
+ const E = o.outerHTML;
128
127
  g.some((C) => C.tdOuterHtml === E) || g.push({ tdOuterHtml: E, number: l });
129
128
  }
130
129
  }), g.reverse().forEach(({ tdOuterHtml: n, number: l }) => {
@@ -136,5 +135,5 @@ function L(F) {
136
135
  }), h.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
137
136
  }
138
137
  export {
139
- L as pairProductVariables
138
+ P as pairProductVariables
140
139
  };
@@ -1,32 +1,31 @@
1
- import { useActionsApi as f } from "../composables/useActionsApi.js";
2
- import { useHtmlCompiler as C } from "../composables/useHtmlCompiler.js";
3
- import { useRecommendationExtensionStore as T } from "../extensions/Blocks/Recommendation/store/recommendation.js";
4
- import { useDynamicContentStore as x } from "../stores/dynamic-content.js";
5
- import { useUnsubscribeStore as y } from "../stores/unsubscribe.js";
6
- const E = () => {
7
- const o = x(), t = y(), { getCompiledEmail: i, getTemplateData: n, editorSave: s } = f(), { compileHtml: m } = C();
1
+ import { useActionsApi as b } from "../composables/useActionsApi.js";
2
+ import { useHtmlCompiler as f } from "../composables/useHtmlCompiler.js";
3
+ import { useDynamicContentStore as C } from "../stores/dynamic-content.js";
4
+ import { useUnsubscribeStore as T } from "../stores/unsubscribe.js";
5
+ const P = () => {
6
+ const i = C(), t = T(), { getCompiledEmail: o, getTemplateData: s, editorSave: n } = b(), { compileHtml: a } = f();
8
7
  return {
9
8
  prepareTemplateDetails: async () => {
10
- const { html: a, ampHtml: r = "", ampErrors: c = [] } = await i({
9
+ const { html: r, ampHtml: m = "", ampErrors: c = [] } = await o({
11
10
  minimize: !0,
12
11
  resetDataSavedFlag: !1
13
- }), { html: l, css: p, syncModulesIds: u = [] } = await n(), { compiledHtml: d, stats: e, appliedRules: S } = m(a), g = o.getSelectedDynamicContentList, b = T();
14
- return s(), console.debug("HTML Compilation Stats:", {
12
+ }), { html: l, css: p, syncModulesIds: u = [] } = await s(), { compiledHtml: d, stats: e, appliedRules: g } = a(r), S = i.getSelectedDynamicContentList;
13
+ return n(), console.debug("HTML Compilation Stats:", {
15
14
  originalSize: e.originalSize,
16
15
  compiledSize: e.compiledSize,
17
16
  reduction: `${e.reductionPercentage.toFixed(2)}%`,
18
- appliedRules: S,
17
+ appliedRules: g,
19
18
  executionTime: `${e.executionTime.toFixed(2)}ms`
20
19
  }), {
21
- dynamicContentList: g,
20
+ dynamicContentList: S,
22
21
  compiledHtml: d,
23
22
  rawHtml: l,
24
23
  css: p,
25
- ampHtml: r,
24
+ ampHtml: m,
26
25
  ampErrors: c,
27
26
  modules: u,
28
27
  recommendation: {
29
- campaignUrls: b.recommendationCampaignUrls,
28
+ campaignUrls: {},
30
29
  configs: {}
31
30
  },
32
31
  unsubscribe: {
@@ -38,5 +37,5 @@ const E = () => {
38
37
  };
39
38
  };
40
39
  export {
41
- E as useTemplatePreparation
40
+ P as useTemplatePreparation
42
41
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "2.1.0-beta.ff1bc98",
3
+ "version": "2.1.0-beta.ff9b498",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -1,116 +0,0 @@
1
- import { useRecommendation as _ } from "../../../composables/useRecommendation.js";
2
- function b(e, u, r, o) {
3
- const s = `{{${e}_${u}_${r}}}`, t = `{{${e}_${u}_currency}}`;
4
- return o === "before" ? `${t} ${s}` : `${s} ${t}`;
5
- }
6
- function p(e, u, r, o, s) {
7
- switch (u) {
8
- case "productImage": {
9
- const t = e.querySelector("img");
10
- t && (t.setAttribute("src", `{{${r}_${o}_image_url}}`), t.setAttribute("alt", `{{${r}_${o}_name}}`));
11
- const c = e.querySelector("a");
12
- c && c.setAttribute("href", `{{${r}_${o}_url}}`);
13
- break;
14
- }
15
- case "productName": {
16
- const t = e.querySelector("p");
17
- if (t) {
18
- const c = t.querySelector("strong") || t;
19
- c.textContent = `{{${r}_${o}_name}}`;
20
- }
21
- break;
22
- }
23
- case "productPrice": {
24
- const t = e.querySelector("p");
25
- if (t) {
26
- const c = t.querySelector("strong") || t;
27
- c.textContent = b(r, o, "price", s);
28
- }
29
- break;
30
- }
31
- case "productOldPrice": {
32
- const t = e.querySelector("p");
33
- if (t) {
34
- const c = t.querySelector("strong") || t;
35
- c.textContent = b(
36
- r,
37
- o,
38
- "original_price",
39
- s
40
- ), t.setAttribute("product-attr", "discount");
41
- }
42
- break;
43
- }
44
- case "productButton": {
45
- const t = e.querySelector("a");
46
- t && t.setAttribute("href", `{{${r}_${o}_url}}`);
47
- break;
48
- }
49
- case "productOmnibusPrice": {
50
- const t = e.querySelector(".omnibus-price-value");
51
- if (t) {
52
- t.textContent = `{{${r}_${o}_omnibus_price}}`;
53
- const c = t.closest("p");
54
- c && (c.setAttribute("product-attr", "omnibus_price"), c.setAttribute("composition", "true"));
55
- }
56
- break;
57
- }
58
- case "productOmnibusDiscount": {
59
- const t = e.querySelector(".omnibus-discount-value");
60
- if (t) {
61
- t.textContent = `{{${r}_${o}_omnibus_discount}}`;
62
- const c = t.closest("p");
63
- c && (c.setAttribute("product-attr", "omnibus_discount"), c.setAttribute("composition", "true"));
64
- }
65
- break;
66
- }
67
- }
68
- }
69
- function $(e, u, r) {
70
- e.querySelectorAll(".recommendation-product-row").forEach((s, t) => {
71
- s.querySelectorAll("[data-attribute-type]").forEach((n) => {
72
- const i = n.getAttribute("data-attribute-type") || "", a = n.querySelectorAll(".attribute-cell");
73
- a.length > 0 ? a.forEach((l) => {
74
- p(l, i, u, t, r);
75
- }) : p(n, i, u, t, r);
76
- });
77
- });
78
- }
79
- function S(e, u, r) {
80
- const o = e.querySelectorAll(".recommendation-product-row");
81
- if (!o.length)
82
- return;
83
- const [s] = o, t = s.querySelector("[data-attribute-type]"), c = t ? t.querySelectorAll(".attribute-cell").length : 1;
84
- o.forEach((n, i) => {
85
- n.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);
90
- });
91
- });
92
- });
93
- }
94
- function q(e, u) {
95
- const r = e.getAttribute("data-layout") || "grid", o = e.getAttribute("currency-alignment") || "after";
96
- r === "list" ? $(e, u, o) : S(e, u, o);
97
- }
98
- function h(e, u) {
99
- const r = e.match(/<!DOCTYPE[^>]*>/i);
100
- return (r ? `${r[0]}
101
- ` : "") + u.documentElement.outerHTML;
102
- }
103
- function w(e) {
104
- const u = e.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), r = new DOMParser().parseFromString(u, "text/html"), o = r.querySelectorAll(".ins-recommendation-v3-block-v2");
105
- if (!o.length)
106
- return e;
107
- const { buildCampaignUrl: s } = _();
108
- return o.forEach((c) => {
109
- const n = c.getAttribute("recommendation-id");
110
- n && (s(n), q(c, n));
111
- }), h(u, r).replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
112
- }
113
- export {
114
- b as formatPriceVariable,
115
- w as prepareRecommendationBlocks
116
- };
@@ -1,4 +0,0 @@
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
- };
@@ -1,4 +0,0 @@
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
- };
@@ -1,66 +0,0 @@
1
- import { DEFAULT_ROW_SPACING as U, DEFAULT_COLUMN_SPACING as I, DEFAULT_MOBILE_CARDS_IN_ROW as n, DEFAULT_CARDS_IN_ROW as s } from "./layout.js";
2
- import { ATTR_PRODUCT_IMAGE as t, ATTR_PRODUCT_NAME as e, ATTR_PRODUCT_OLD_PRICE as o, ATTR_PRODUCT_PRICE as _, ATTR_PRODUCT_OMNIBUS_PRICE as T, ATTR_PRODUCT_OMNIBUS_DISCOUNT as r, ATTR_PRODUCT_BUTTON as R } from "./selectors.js";
3
- const O = {
4
- code: "USD",
5
- symbol: "USD",
6
- alignment: "after",
7
- decimalCount: 2,
8
- decimalSeparator: ".",
9
- thousandSeparator: ","
10
- }, i = {
11
- textBefore: "",
12
- textAfter: ""
13
- }, C = {
14
- textBefore: "",
15
- textAfter: ""
16
- }, D = [
17
- t,
18
- e,
19
- o,
20
- _,
21
- T,
22
- r,
23
- R
24
- ], A = {
25
- [t]: !0,
26
- [e]: !0,
27
- [_]: !0,
28
- [o]: !0,
29
- [T]: !1,
30
- [r]: !1,
31
- [R]: !0
32
- }, E = {
33
- // Settings
34
- strategy: "mostPopular",
35
- productIds: [],
36
- size: "6",
37
- shuffleProducts: !1,
38
- language: "en_US",
39
- currency: O,
40
- filters: [],
41
- // Layout
42
- layout: "grid",
43
- cardsInRow: s,
44
- mobileCardsInRow: n,
45
- columnSpacing: I,
46
- rowSpacing: U,
47
- // Composition
48
- composition: D,
49
- visibility: A,
50
- // Element settings
51
- omnibusPrice: i,
52
- omnibusDiscount: C,
53
- textTrimming: !1,
54
- // Meta
55
- configVersion: 1,
56
- recommendationId: 0
57
- }, N = 1;
58
- export {
59
- N as CURRENT_CONFIG_VERSION,
60
- D as DEFAULT_COMPOSITION,
61
- O as DEFAULT_CURRENCY,
62
- E as DEFAULT_NODE_CONFIG,
63
- C as DEFAULT_OMNIBUS_DISCOUNT,
64
- i as DEFAULT_OMNIBUS_PRICE,
65
- A as DEFAULT_VISIBILITY
66
- };
@@ -1,22 +0,0 @@
1
- const _ = {
2
- GRID: "grid",
3
- LIST: "list"
4
- }, o = [
5
- { icon: "grid-orientation", value: _.GRID },
6
- { icon: "list-orientation", value: _.LIST }
7
- ], t = 3, n = 3, A = 9, O = 4, R = 1, T = 2, c = 10, s = 20, I = 0, S = 50, P = 5;
8
- export {
9
- n as DEFAULT_CARDS_IN_ROW,
10
- c as DEFAULT_COLUMN_SPACING,
11
- R as DEFAULT_MOBILE_CARDS_IN_ROW,
12
- t as DEFAULT_PRODUCTS_PER_ROW,
13
- s as DEFAULT_ROW_SPACING,
14
- o as LAYOUT_OPTIONS,
15
- _ as LAYOUT_VALUES,
16
- T as MAX_MOBILE_PRODUCTS_PER_ROW,
17
- O as MAX_PRODUCTS_PER_ROW,
18
- A as MAX_PRODUCT_COUNT,
19
- S as MAX_SPACING,
20
- I as MIN_SPACING,
21
- P as SPACING_STEP
22
- };
@@ -1,21 +0,0 @@
1
- const c = ".ins-recommendation-product-container", n = ".ins-recommendation-desktop-container", o = ".ins-recommendation-mobile-container", T = {
2
- CURRENCY: "currency",
3
- SYMBOL: "currency-symbol",
4
- ALIGNMENT: "currency-alignment",
5
- THOUSAND_SEPARATOR: "currency-thousand-separator",
6
- DECIMAL_SEPARATOR: "currency-decimal-separator",
7
- DECIMAL_COUNT: "currency-decimal-count"
8
- }, t = "productImage", r = "productName", R = "productPrice", e = "productOldPrice", O = "productOmnibusPrice", _ = "productOmnibusDiscount", C = "productButton";
9
- export {
10
- C as ATTR_PRODUCT_BUTTON,
11
- t as ATTR_PRODUCT_IMAGE,
12
- r as ATTR_PRODUCT_NAME,
13
- e as ATTR_PRODUCT_OLD_PRICE,
14
- _ as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
15
- O as ATTR_PRODUCT_OMNIBUS_PRICE,
16
- R as ATTR_PRODUCT_PRICE,
17
- c as CONTAINER_SELECTOR,
18
- T as CURRENCY_ATTR,
19
- n as DESKTOP_CONTAINER_SELECTOR,
20
- o as MOBILE_CONTAINER_SELECTOR
21
- };
@@ -1,64 +0,0 @@
1
- import { createButtonFitToContainerControl as T, createButtonTextStyleAndFontColorControl as r, createButtonTextSizeControl as e, createButtonTextControl as B, createButtonPaddingsControl as l, createButtonMarginsControl as C, createButtonFontFamilyControl as O, createButtonColorControl as N, createButtonBorderRadiusControl as i, createButtonBorderControl as a, createButtonAlignControl as c } from "../../../controlFactories.js";
2
- import { RecommendationBlockId as o } from "../../constants/blockIds.js";
3
- import { RecommendationControlId as t } from "../../constants/controlIds.js";
4
- import { CONTAINER_SELECTOR as n } from "../../constants/selectors.js";
5
- const U = c(
6
- t.BUTTON_ALIGN,
7
- o.BUTTON,
8
- n
9
- ), d = a(
10
- t.BUTTON_BORDER,
11
- o.BUTTON,
12
- n
13
- ), s = i(
14
- t.BUTTON_BORDER_RADIUS,
15
- o.BUTTON,
16
- n
17
- ), _ = N(
18
- t.BUTTON_COLOR,
19
- o.BUTTON,
20
- n
21
- ), m = O(
22
- t.BUTTON_FONT_FAMILY,
23
- o.BUTTON,
24
- n
25
- ), u = C(
26
- t.BUTTON_MARGINS,
27
- o.BUTTON,
28
- n
29
- ), R = l(
30
- t.BUTTON_PADDINGS,
31
- o.BUTTON,
32
- n
33
- ), F = B(
34
- t.BUTTON_TEXT,
35
- o.BUTTON,
36
- n
37
- ), A = e(
38
- t.BUTTON_TEXT_SIZE,
39
- o.BUTTON,
40
- n
41
- ), S = r(
42
- t.BUTTON_TEXT_STYLE_AND_FONT_COLOR,
43
- o.BUTTON,
44
- n
45
- ), E = T(
46
- t.BUTTON_FIT_TO_CONTENT,
47
- o.BUTTON,
48
- n
49
- ), p = {
50
- align: U,
51
- border: d,
52
- borderRadius: s,
53
- color: _,
54
- fontFamily: m,
55
- margins: u,
56
- paddings: R,
57
- text: F,
58
- textSize: A,
59
- textStyleAndFontColor: S,
60
- fitToContent: E
61
- };
62
- export {
63
- p as ButtonControls
64
- };
@@ -1,80 +0,0 @@
1
- import { ModificationDescription as d } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as s } from "../../../common-control.js";
3
- import { getCurrentLayout as l } from "../main/utils.js";
4
- const u = "recommendation-card-background-color-control", e = {
5
- CARD_BACKGROUND_COLOR: "cardBackgroundColor"
6
- }, a = {
7
- GRID: ".product-card-segment",
8
- LIST: ".product-card-wrapper"
9
- };
10
- class _ extends s {
11
- getId() {
12
- return u;
13
- }
14
- getTemplate() {
15
- return `
16
- <div class="card-bg-control-container">
17
- ${this._GuTwoColumns([
18
- this._GuLabel({ text: "Card Background Color" }),
19
- this._GuColorPicker(e.CARD_BACKGROUND_COLOR)
20
- ])}
21
- </div>
22
- `;
23
- }
24
- onRender() {
25
- this._setFormValues(), this._listenToFormUpdates();
26
- }
27
- onTemplateNodeUpdated(r) {
28
- super.onTemplateNodeUpdated(r), this._setFormValues();
29
- }
30
- _setFormValues() {
31
- const r = this._getCurrentCardBackgroundColor();
32
- this.api.updateValues({
33
- [e.CARD_BACKGROUND_COLOR]: r
34
- });
35
- }
36
- /**
37
- * Gets the appropriate selector based on layout
38
- * Grid: .product-card-segment (inner table per product cell)
39
- * List: .product-card-wrapper (table per product row)
40
- */
41
- _getCardSelector() {
42
- return l(this.currentNode) === "grid" ? a.GRID : a.LIST;
43
- }
44
- /**
45
- * Reads the current background color from the first product card element
46
- * @returns The background color value or 'transparent' if not found
47
- */
48
- _getCurrentCardBackgroundColor() {
49
- if (!this.currentNode || !("querySelectorAll" in this.currentNode))
50
- return "transparent";
51
- const r = this._getCardSelector(), t = this.currentNode.querySelector(r);
52
- return !t || !("getStyle" in t) ? "transparent" : t.getStyle("background-color") || "transparent";
53
- }
54
- /**
55
- * Handles card background color changes
56
- * Applies the color to all product card elements based on layout
57
- */
58
- _onCardBackgroundColorChange(r) {
59
- if (!this.currentNode || !("querySelectorAll" in this.currentNode))
60
- return;
61
- const t = this._getCardSelector(), o = Array.from(
62
- this.currentNode.querySelectorAll(t)
63
- );
64
- if (o.length === 0)
65
- return;
66
- const n = this.api.getDocumentModifier();
67
- o.forEach((c) => {
68
- n.modifyHtml(c).setStyle("background-color", r);
69
- }), n.apply(new d("Update card background color"));
70
- }
71
- _listenToFormUpdates() {
72
- this.api.onValueChanged(e.CARD_BACKGROUND_COLOR, (r) => {
73
- this._onCardBackgroundColorChange(r);
74
- });
75
- }
76
- }
77
- export {
78
- u as CARD_BACKGROUND_COLOR_CONTROL_ID,
79
- _ as CardBackgroundColorControl
80
- };