@useinsider/guido 2.0.0-beta.edc1f0a → 2.0.0-beta.eee5ecc

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 (238) hide show
  1. package/dist/@types/config/schemas.js +53 -39
  2. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +2 -2
  3. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +2 -2
  4. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +5 -5
  5. package/dist/components/organisms/header/LeftSlot.vue.js +12 -12
  6. package/dist/components/organisms/header/LeftSlot.vue2.js +6 -6
  7. package/dist/components/organisms/header/RightSlot.vue2.js +10 -10
  8. package/dist/composables/useActionsApi.js +33 -30
  9. package/dist/composables/useConfig.js +29 -27
  10. package/dist/composables/useSave.js +13 -11
  11. package/dist/config/migrator/index.js +9 -8
  12. package/dist/config/migrator/itemsBlockMigrator.js +334 -0
  13. package/dist/config/migrator/recommendationMigrator.js +2 -2
  14. package/dist/extensions/Blocks/Items/block.js +36 -40
  15. package/dist/extensions/Blocks/Items/controls/button/link.js +22 -29
  16. package/dist/extensions/Blocks/Items/controls/cardComposition.js +70 -59
  17. package/dist/extensions/Blocks/Items/controls/image/link.js +23 -30
  18. package/dist/extensions/Blocks/Items/controls/name/trimming.js +25 -25
  19. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +19 -17
  20. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +31 -29
  21. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +36 -36
  22. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +21 -19
  23. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +29 -27
  24. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +93 -0
  25. package/dist/extensions/Blocks/Items/controls/settingsControl.js +146 -131
  26. package/dist/extensions/Blocks/Items/enums/controlEnums.js +2 -2
  27. package/dist/extensions/Blocks/Items/enums/productEnums.js +43 -45
  28. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +4 -5
  29. package/dist/extensions/Blocks/Items/extension.js +11 -9
  30. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +58 -49
  31. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +48 -59
  32. package/dist/extensions/Blocks/Items/settingsPanel.js +27 -26
  33. package/dist/extensions/Blocks/Items/store/items-block.js +11 -7
  34. package/dist/extensions/Blocks/Items/template.js +389 -141
  35. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +176 -0
  36. package/dist/extensions/Blocks/Recommendation/block.js +1 -1
  37. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  38. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  39. package/dist/extensions/Blocks/Recommendation/control.js +306 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  73. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  74. package/dist/extensions/Blocks/Recommendation/extension.js +43 -40
  75. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  76. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +72 -128
  77. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +26 -29
  78. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  79. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  80. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  81. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  82. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  83. package/dist/extensions/Blocks/common-control.js +30 -32
  84. package/dist/extensions/Blocks/controlFactories.js +106 -130
  85. package/dist/guido.css +1 -1
  86. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +125 -116
  87. package/dist/src/@types/config/index.d.ts +2 -2
  88. package/dist/src/@types/config/schemas.d.ts +26 -0
  89. package/dist/src/@types/config/types.d.ts +7 -1
  90. package/dist/src/composables/useActionsApi.d.ts +1 -0
  91. package/dist/src/composables/useConfig.d.ts +6 -0
  92. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +6 -0
  93. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -2
  94. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +9 -0
  95. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -2
  96. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
  97. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +18 -0
  98. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -4
  99. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  100. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +24 -26
  101. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +1 -2
  102. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +2 -0
  103. package/dist/src/extensions/Blocks/Items/template.d.ts +22 -1
  104. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +76 -0
  105. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  106. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +11 -19
  107. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +35 -0
  108. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  142. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  143. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -17
  144. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  145. package/dist/src/extensions/Blocks/Recommendation/templates/{vertical/migration.d.ts → migrationTemplate.d.ts} +4 -11
  146. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  147. package/dist/src/extensions/Blocks/common-control.d.ts +10 -11
  148. package/dist/src/stores/config.d.ts +147 -1
  149. package/dist/static/styles/components/button.css.js +1 -1
  150. package/dist/static/styles/components/wide-panel.css.js +4 -0
  151. package/dist/static/styles/customEditorStyle.css.js +2 -38
  152. package/dist/stores/config.js +7 -0
  153. package/dist/utils/pairProductVariables.js +61 -58
  154. package/dist/utils/templatePreparation.js +17 -17
  155. package/package.json +1 -1
  156. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  157. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  158. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  159. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  160. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  161. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  162. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -12
  163. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -11
  164. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  165. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  166. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  167. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  168. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -104
  169. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -86
  170. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -134
  171. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -54
  172. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -147
  173. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -64
  174. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -111
  175. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -60
  176. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -114
  177. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  178. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -76
  179. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  180. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  181. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +0 -73
  182. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +0 -73
  183. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  184. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +0 -73
  185. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +0 -73
  186. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  187. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -211
  188. package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +0 -157
  189. package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +0 -72
  190. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  191. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -173
  192. package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +0 -186
  193. package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +0 -251
  194. package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +0 -62
  195. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -36
  196. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  197. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  198. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  199. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  200. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  201. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  202. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -12
  203. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -27
  204. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -19
  205. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  206. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  207. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +0 -95
  208. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  209. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -24
  210. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -34
  211. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -17
  212. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -16
  213. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  214. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -62
  215. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -15
  216. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -39
  217. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -15
  218. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -81
  219. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  220. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -16
  221. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  222. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  223. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  224. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  225. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  226. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  227. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  228. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  229. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -73
  230. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +0 -8
  231. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +0 -25
  232. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +0 -18
  233. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -39
  234. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -45
  235. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +0 -7
  236. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +0 -33
  237. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
  238. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +0 -77
@@ -0,0 +1,176 @@
1
+ import { ModificationDescription as b } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { DefaultConfigValues as i, SETTINGS_ENUMS as n, ItemInCartOptions as g } from "../enums/settingsEnums.js";
3
+ function d() {
4
+ return String(Date.now() + Math.floor(Math.random() * 1e3));
5
+ }
6
+ const E = (o) => o.replace(/\$/g, "$$$$");
7
+ function S() {
8
+ return {
9
+ initialized: !0,
10
+ blockInstanceId: d(),
11
+ source: n.ITEMS_TYPE.CART_ITEMS,
12
+ type: n.ITEMS_TYPE.CART_ITEMS,
13
+ itemsSelectValue: i.cartItemsSelectControlValue,
14
+ orientation: n.ORIENTATION.VERTICAL,
15
+ nameTrimming: i.productNameTrimmingControlValue === "1",
16
+ priceHideDiscount: i.productPriceHideDiscountControlValue === "1",
17
+ priceFormatted: i.productPriceFormattedControlValue === "1",
18
+ priceSinglePrice: !1,
19
+ priceCurrencySymbol: i.productPriceCurrencySymbolControlValue,
20
+ priceCurrencyLocation: i.productPriceCurrencyLocationControlValue,
21
+ priceOrientation: "horizontal",
22
+ quantityControlEnabled: i.productQuantityControlEnabled === "1",
23
+ buttonLink: i.productButtonLinkControlValue,
24
+ imageLink: i.productImageLinkControlValue,
25
+ buttonLabel: "Buy",
26
+ buttonFullWidth: !0,
27
+ // Default to full width (es-fw class)
28
+ imageVisible: i.productImageVisible === "1",
29
+ nameVisible: i.productNameVisible === "1",
30
+ quantityVisible: i.productQuantityVisible === "1",
31
+ priceVisible: i.productPriceVisible === "1",
32
+ originalPriceVisible: i.productOriginalPriceVisible === "1",
33
+ buttonVisible: i.productButtonVisible === "1"
34
+ };
35
+ }
36
+ function s(o) {
37
+ if (!o)
38
+ return null;
39
+ const t = o.closest(".items-block-v2");
40
+ return t || o.closest(".esd-cart-items-block");
41
+ }
42
+ function m(o) {
43
+ return o ? {
44
+ CartItems: n.ITEMS_TYPE.CART_ITEMS,
45
+ BrowsedItems: n.ITEMS_TYPE.BROWSED_ITEMS,
46
+ PurchasedItems: n.ITEMS_TYPE.PURCHASED_ITEMS,
47
+ // Also handle already correct formats
48
+ CART_ITEMS: n.ITEMS_TYPE.CART_ITEMS,
49
+ BROWSED_ITEMS: n.ITEMS_TYPE.BROWSED_ITEMS,
50
+ PURCHASED_ITEMS: n.ITEMS_TYPE.PURCHASED_ITEMS
51
+ }[o] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
52
+ }
53
+ function I(o, t) {
54
+ if (!o)
55
+ return i.cartItemsSelectControlValue;
56
+ if (o.includes("{{"))
57
+ return o;
58
+ if (/^\d+$/.test(o)) {
59
+ const e = parseInt(o) - 1, r = g[t];
60
+ if (r && r[e])
61
+ return r[e].value;
62
+ }
63
+ return i.cartItemsSelectControlValue;
64
+ }
65
+ function C(o) {
66
+ const t = o.querySelector("esd-config-block");
67
+ if (!t)
68
+ return null;
69
+ const e = (c, a) => c == null ? a : c === "1" || c === "true", r = (c, a) => c || a, l = t.getAttribute("data-type"), u = m(l), _ = t.getAttribute("data-cart_items_select_control_value"), p = I(_, u);
70
+ return {
71
+ initialized: e(t.getAttribute("data-initialized"), !1),
72
+ blockInstanceId: r(
73
+ t.getAttribute("data-block-instance-id"),
74
+ d()
75
+ ),
76
+ source: u,
77
+ type: u,
78
+ itemsSelectValue: p,
79
+ orientation: t.getAttribute("data-card_orientation_control_value") || n.ORIENTATION.VERTICAL,
80
+ nameTrimming: e(
81
+ t.getAttribute("data-product_name_control_trim"),
82
+ !0
83
+ ),
84
+ priceHideDiscount: e(
85
+ t.getAttribute("data-product_price_control_nodup"),
86
+ !0
87
+ ),
88
+ priceFormatted: e(
89
+ t.getAttribute("data-product_price_control_formated"),
90
+ !0
91
+ ),
92
+ priceSinglePrice: e(
93
+ t.getAttribute("data-product_price_control_single_price"),
94
+ !1
95
+ ),
96
+ priceCurrencySymbol: r(
97
+ t.getAttribute("data-product_price_currency_symbol"),
98
+ i.productPriceCurrencySymbolControlValue
99
+ ),
100
+ priceCurrencyLocation: r(
101
+ t.getAttribute("data-product_price_currency_location"),
102
+ i.productPriceCurrencyLocationControlValue
103
+ ),
104
+ priceOrientation: t.getAttribute("data-product_original_price_control_orientation") || "horizontal",
105
+ quantityControlEnabled: e(
106
+ t.getAttribute("data-product_quantity_control_enabled"),
107
+ !0
108
+ ),
109
+ buttonLink: r(
110
+ t.getAttribute("data-product_button_link"),
111
+ i.productButtonLinkControlValue
112
+ ),
113
+ imageLink: r(
114
+ t.getAttribute("data-product_image_link"),
115
+ i.productImageLinkControlValue
116
+ ),
117
+ buttonLabel: r(
118
+ t.getAttribute("data-product_button_control_label"),
119
+ "Buy"
120
+ ),
121
+ buttonFullWidth: e(
122
+ t.getAttribute("data-product_button_control_atw"),
123
+ !0
124
+ // Default to full width
125
+ ),
126
+ imageVisible: e(
127
+ t.getAttribute("data-product_image_control_enabled"),
128
+ !0
129
+ ),
130
+ nameVisible: e(
131
+ t.getAttribute("data-product_name_control_enabled"),
132
+ !0
133
+ ),
134
+ quantityVisible: e(
135
+ t.getAttribute("data-product_quantity_control_enabled"),
136
+ !0
137
+ ),
138
+ priceVisible: e(
139
+ t.getAttribute("data-product_price_control_enabled"),
140
+ !0
141
+ ),
142
+ originalPriceVisible: e(
143
+ t.getAttribute("data-product_original_price_control_enabled"),
144
+ !0
145
+ ),
146
+ buttonVisible: e(
147
+ t.getAttribute("data-product_button_control_enabled"),
148
+ !0
149
+ )
150
+ };
151
+ }
152
+ function y(o) {
153
+ const t = s(o);
154
+ if (!t)
155
+ return null;
156
+ const e = t.getNodeConfig();
157
+ if (e && e.initialized)
158
+ return e;
159
+ const r = C(t);
160
+ return r || null;
161
+ }
162
+ function A(o, t, e) {
163
+ const r = s(o);
164
+ if (!r)
165
+ return;
166
+ const u = { ...r.getNodeConfig() || {}, ...e };
167
+ t.getDocumentModifier().modifyHtml(r).setNodeConfig(u).apply(new b("Update Items block configuration"));
168
+ }
169
+ export {
170
+ E as escapeReplacement,
171
+ d as generateBlockInstanceId,
172
+ S as getDefaultItemsBlockConfig,
173
+ y as getItemsBlockConfig,
174
+ s as getItemsBlockContainer,
175
+ A as setItemsBlockConfig
176
+ };
@@ -1,5 +1,5 @@
1
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/vertical/template.js";
2
+ import { getDefaultTemplate as o } from "./templates/blockTemplate.js";
3
3
  const n = "recommendation-block";
4
4
  class m extends e {
5
5
  constructor() {
@@ -0,0 +1,103 @@
1
+ var m = Object.defineProperty;
2
+ var y = (n, o, i) => o in n ? m(n, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[o] = i;
3
+ var a = (n, o, i) => y(n, typeof o != "symbol" ? o + "" : o, i);
4
+ import { ModificationDescription as u } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as b } from "../common-control.js";
6
+ const h = "ui-elements-recommendation-card-composition", s = [
7
+ { key: "productImage", label: "Product Image", visible: !0 },
8
+ { key: "productName", label: "Product Name", visible: !0 },
9
+ { key: "productPrice", label: "Product Price", visible: !0 },
10
+ { key: "productOriginalPrice", label: "Product Original Price", visible: !0 },
11
+ { key: "productButton", label: "Product Button", visible: !0 }
12
+ ];
13
+ class g extends b {
14
+ constructor() {
15
+ super(...arguments);
16
+ a(this, "currentComposition", []);
17
+ a(this, "currentVisibility", {});
18
+ }
19
+ getId() {
20
+ return h;
21
+ }
22
+ getTemplate() {
23
+ const i = s.map((e) => ({
24
+ key: e.key,
25
+ label: e.label,
26
+ content: `
27
+ <div style="display: flex; align-items: center; justify-content: space-between;
28
+ padding: 8px; gap: 8px;">
29
+ <span style="flex: 1;">${e.label}</span>
30
+ ${this._GuToggle(`visibility_${e.key}`)}
31
+ </div>
32
+ `
33
+ }));
34
+ return `
35
+ <div class="container">
36
+ ${this._GuLabel({ text: "Card Element Order & Visibility" })}
37
+ ${this._GuOrderable("cardComposition", i)}
38
+ </div>
39
+ `;
40
+ }
41
+ onRender() {
42
+ this._initializeComposition(), this.api.onValueChanged("cardComposition", (i) => {
43
+ this.currentComposition = i, this._applyCompositionToBlock(i);
44
+ }), s.forEach((i) => {
45
+ this.api.onValueChanged(`visibility_${i.key}`, (e) => {
46
+ this.currentVisibility[i.key] = e, this._applyVisibilityToBlock();
47
+ });
48
+ });
49
+ }
50
+ onTemplateNodeUpdated(i) {
51
+ super.onTemplateNodeUpdated(i), this._initializeComposition();
52
+ }
53
+ /**
54
+ * Initialize the composition order and visibility from the block or use defaults
55
+ */
56
+ _initializeComposition() {
57
+ var p;
58
+ const i = (p = this.currentNode) == null ? void 0 : p.querySelector(".ins-recommendation-v3-block-v2");
59
+ let e = null, l = null;
60
+ if (i && "getAttribute" in i && (e = i.getAttribute("data-card-composition"), l = i.getAttribute("data-card-visibility")), e) {
61
+ const t = e.split(",").filter(Boolean), r = s.map((c) => c.key);
62
+ t.every((c) => r.includes(c)) && t.length > 0 ? this.currentComposition = t : this.currentComposition = r;
63
+ } else
64
+ this.currentComposition = s.map((t) => t.key);
65
+ if (l)
66
+ try {
67
+ const t = JSON.parse(l);
68
+ this.currentVisibility = t;
69
+ } catch {
70
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
71
+ }
72
+ else
73
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
74
+ const d = {
75
+ cardComposition: this.currentComposition
76
+ };
77
+ s.forEach((t) => {
78
+ d[`visibility_${t.key}`] = this.currentVisibility[t.key] ?? !0;
79
+ }), this.api.updateValues(d);
80
+ }
81
+ /**
82
+ * Apply the reordered composition to the block's HTML structure
83
+ */
84
+ _applyCompositionToBlock(i) {
85
+ if (!this.currentNode)
86
+ return;
87
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
88
+ e && this.api.getDocumentModifier().modifyHtml(e).setAttribute("data-card-composition", i.join(",")).apply(new u("Stored card composition order"));
89
+ }
90
+ /**
91
+ * Apply visibility changes to the block's HTML structure
92
+ */
93
+ _applyVisibilityToBlock() {
94
+ if (!this.currentNode)
95
+ return;
96
+ const i = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
97
+ i && this.api.getDocumentModifier().modifyHtml(i).setAttribute("data-card-visibility", JSON.stringify(this.currentVisibility)).apply(new u("Stored card visibility settings"));
98
+ }
99
+ }
100
+ export {
101
+ h as COMPOSITION_CONTROL_BLOCK_ID,
102
+ g as RecommendationCardCompositionControl
103
+ };
@@ -0,0 +1,5 @@
1
+ var o = /* @__PURE__ */ ((c) => (c.BUTTON = "recommendation-block-button", c.NAME = "recommendation-block-name", c.PRICE = "recommendation-block-price", c.OLD_PRICE = "recommendation-block-old-price", c.IMAGE = "recommendation-block-image", c))(o || {}), r = /* @__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.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.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(r || {});
2
+ export {
3
+ o as RecommendationBlockId,
4
+ r as RecommendationControlId
5
+ };
@@ -0,0 +1,306 @@
1
+ var _ = Object.defineProperty;
2
+ var R = (s, n, e) => n in s ? _(s, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[n] = e;
3
+ var r = (s, n, e) => R(s, typeof n != "symbol" ? n + "" : n, e);
4
+ import { currencyDecimalCounts as l, currencyOperators as c, currencyLocationMaps as h } from "../../../enums/extensions/recommendationBlock.js";
5
+ import { UEAttr as m, ModificationDescription as S } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
+ import { CommonControl as g } from "../common-control.js";
7
+ import { useRecommendationExtensionStore as O } from "./store/recommendation.js";
8
+ import { prepareProductRows as p } from "./templates/blockTemplate.js";
9
+ import { DEFAULT_CARD_COMPOSITION as C, getDefaultProducts as E } from "./templates/templateUtils.js";
10
+ import { useDebounceFn as U } from "../../../node_modules/@vueuse/shared/index.js";
11
+ const L = "ui-elements-recommendation-block", t = {
12
+ ALGORITHM: "strategy",
13
+ PRODUCT_IDS: "productIds",
14
+ LOCALE: "language",
15
+ CURRENCY: "value",
16
+ CURRENCY_LOCATION: "alignment",
17
+ CURRENCY_SYMBOL: "symbol",
18
+ CURRENCY_THOUSAND_SEPARATOR: "thousandSeparator",
19
+ CURRENCY_DECIMAL_SEPARATOR: "decimalSeparator",
20
+ CURRENCY_DECIMAL_COUNT: "decimalCount",
21
+ FILTERS: "filterStatus",
22
+ PRODUCT_COUNT: "size",
23
+ PRODUCT_IN_ROW: "cardsInRow",
24
+ SHUFFLE_PRODUCTS: "shuffleProducts",
25
+ RESPONSIVE: "unresponsive"
26
+ };
27
+ class b extends g {
28
+ constructor() {
29
+ super(...arguments);
30
+ r(this, "store", O());
31
+ r(this, "storeUnsubscription", () => {
32
+ });
33
+ r(this, "addFilterListener", () => {
34
+ });
35
+ r(this, "addFilterButton", null);
36
+ r(this, "_debouncedRegenerateProductRows", U(() => {
37
+ this._regenerateProductRows();
38
+ }, 500));
39
+ }
40
+ getId() {
41
+ return L;
42
+ }
43
+ getTemplate() {
44
+ return `
45
+ <div class="recommendation-controls-container">
46
+ ${this._getAlgorithms()}
47
+ ${this._getLanguages()}
48
+ ${this._getCurrency()}
49
+ ${this._getFilterStatus()}
50
+ ${this._getProductLayout()}
51
+ ${this._getShuffleProducts()}
52
+ ${this._getResponsive()}
53
+ </div>
54
+ `;
55
+ }
56
+ async onRender() {
57
+ await Promise.all([
58
+ this.store.fetchRecommendationFilters(),
59
+ this.store.fetchRecommendationCreateData(),
60
+ this.store.fetchRecommendationProducts()
61
+ // TODO: We need to change the location. It's just for testing
62
+ ]), this._listenStateUpdates(), this._initializeSelectItems(), this._setFormValues(), this._listenToFormUpdates();
63
+ }
64
+ onDestroy() {
65
+ var e;
66
+ (e = this.addFilterButton) == null || e.removeEventListener("click", this.addFilterListener), this.storeUnsubscription();
67
+ }
68
+ _setFormValues() {
69
+ const e = this.store.recommendationConfigs;
70
+ this._setProductIdsVisibility(), this.api.updateValues({
71
+ [t.ALGORITHM]: e.strategy,
72
+ [t.PRODUCT_IDS]: e.productIds.join(","),
73
+ [t.CURRENCY]: e.currencySettings.value,
74
+ [t.LOCALE]: e.language,
75
+ [t.CURRENCY_LOCATION]: e.currencySettings.alignment,
76
+ [t.CURRENCY_SYMBOL]: e.currencySettings.symbol,
77
+ [t.CURRENCY_THOUSAND_SEPARATOR]: e.currencySettings.thousandSeparator,
78
+ [t.CURRENCY_DECIMAL_SEPARATOR]: e.currencySettings.decimalSeparator,
79
+ [t.CURRENCY_DECIMAL_COUNT]: e.currencySettings.decimalCount,
80
+ [t.PRODUCT_COUNT]: e.size,
81
+ [t.PRODUCT_IN_ROW]: e.cardsInRow,
82
+ [t.SHUFFLE_PRODUCTS]: e.shuffleProducts,
83
+ [t.RESPONSIVE]: !e.unresponsive
84
+ });
85
+ }
86
+ _initializeSelectItems() {
87
+ const { store: e } = this, o = e.getActivePredictiveAlgorithms, i = e.getLanguages, a = {
88
+ [t.ALGORITHM]: o,
89
+ [t.LOCALE]: i,
90
+ [t.CURRENCY]: e.currencyList,
91
+ [t.CURRENCY_LOCATION]: h,
92
+ [t.CURRENCY_SYMBOL]: e.getCurrencySymbolList,
93
+ [t.CURRENCY_THOUSAND_SEPARATOR]: c,
94
+ [t.CURRENCY_DECIMAL_SEPARATOR]: c,
95
+ [t.CURRENCY_DECIMAL_COUNT]: l,
96
+ [t.PRODUCT_COUNT]: Number(e.recommendationConfigs.size),
97
+ [t.PRODUCT_IN_ROW]: e.recommendationConfigs.cardsInRow,
98
+ [t.SHUFFLE_PRODUCTS]: e.recommendationConfigs.shuffleProducts,
99
+ [t.RESPONSIVE]: !e.recommendationConfigs.unresponsive
100
+ };
101
+ Object.entries(a).forEach(([u, d]) => {
102
+ this.api.setUIEAttribute(u, m.SELECTPICKER.items, d);
103
+ });
104
+ }
105
+ _getAlgorithms() {
106
+ return `
107
+ ${this._GuTwoColumns([
108
+ this._GuLabel({ text: "Recommendation Algorithm" }),
109
+ this._GuSelect({
110
+ name: t.ALGORITHM,
111
+ placeholder: "Select Recommendation Algorithm",
112
+ options: this.store.getActivePredictiveAlgorithms
113
+ }),
114
+ this._GuLabel({ text: "Product Ids", name: `${t.PRODUCT_IDS}_label` }),
115
+ this._GuTextInput({
116
+ name: t.PRODUCT_IDS,
117
+ placeholder: "Enter Product Ids",
118
+ className: "es-180w"
119
+ })
120
+ ])}
121
+ `;
122
+ }
123
+ _getLanguages() {
124
+ return `
125
+ ${this._GuTwoColumns([
126
+ this._GuLabel({ text: "Recommendation Locale" }),
127
+ this._GuSelect({
128
+ name: t.LOCALE,
129
+ placeholder: "Select Recommendation Locale",
130
+ options: this.store.getLanguages
131
+ })
132
+ ])}
133
+ `;
134
+ }
135
+ _getCurrency() {
136
+ return `
137
+ ${this._GuTwoColumns([
138
+ this._GuLabel({ text: "Currency" }),
139
+ this._GuSelect({
140
+ name: t.CURRENCY,
141
+ placeholder: "Select Currency",
142
+ options: this.store.currencyList
143
+ }),
144
+ this._GuLabel({ text: "Currency Location" }),
145
+ this._GuSelect({
146
+ name: t.CURRENCY_LOCATION,
147
+ placeholder: "Select Currency Location",
148
+ options: h
149
+ }),
150
+ this._GuLabel({ text: "Currency Symbol" }),
151
+ this._GuSelect({
152
+ name: t.CURRENCY_SYMBOL,
153
+ placeholder: "Select Currency Symbol",
154
+ options: this.store.getCurrencySymbolList
155
+ }),
156
+ this._GuLabel({ text: "Thousand Separator" }),
157
+ this._GuSelect({
158
+ name: t.CURRENCY_THOUSAND_SEPARATOR,
159
+ placeholder: "Select Thousand Separator",
160
+ options: c
161
+ }),
162
+ this._GuLabel({ text: "Decimal Separator" }),
163
+ this._GuSelect({
164
+ name: t.CURRENCY_DECIMAL_SEPARATOR,
165
+ placeholder: "Select Decimal Separator",
166
+ options: c
167
+ }),
168
+ this._GuLabel({ text: "Decimal Count" }),
169
+ this._GuSelect({
170
+ name: t.CURRENCY_DECIMAL_COUNT,
171
+ placeholder: "Select Decimal Count",
172
+ options: l
173
+ })
174
+ ])}
175
+ `;
176
+ }
177
+ _getProductLayout() {
178
+ return `
179
+ ${this._GuTwoColumns([
180
+ this._GuLabel({ text: "Number of Products" }),
181
+ this._GuCounter({ name: t.PRODUCT_COUNT, maxValue: 9 }),
182
+ this._GuLabel({ text: "Products in One Row" }),
183
+ this._GuCounter({ name: t.PRODUCT_IN_ROW, maxValue: 4 })
184
+ ])}
185
+ `;
186
+ }
187
+ _getFilterStatus() {
188
+ return `
189
+ ${this._GuTwoColumns([
190
+ this._GuLabel({ text: "Filters" }),
191
+ this._GuButton({
192
+ name: t.FILTERS,
193
+ label: "Add Filter",
194
+ id: "guido__btn-add-filter"
195
+ })
196
+ ])}
197
+ `;
198
+ }
199
+ _getShuffleProducts() {
200
+ return `
201
+ ${this._GuTwoColumns([
202
+ this._GuLabel({ text: "Shuffle Recommended Products" }),
203
+ this._GuToggle(t.SHUFFLE_PRODUCTS)
204
+ ])}
205
+ `;
206
+ }
207
+ _getResponsive() {
208
+ return `
209
+ ${this._GuTwoColumns([
210
+ this._GuLabel({ text: "Responsive Block" }),
211
+ this._GuToggle(t.RESPONSIVE)
212
+ ])}
213
+ `;
214
+ }
215
+ _onFilterChange(e) {
216
+ this.currentNode && this.store.$patch({
217
+ filterStatus: e,
218
+ filterSelectionDrawerStatus: e
219
+ });
220
+ }
221
+ _onFilterSelectClick() {
222
+ this.store.$patch({
223
+ filterSelectionDrawerStatus: !0
224
+ });
225
+ }
226
+ _onDataChange(e, o) {
227
+ this.currentNode && (this.store.$patch({
228
+ recommendationConfigs: {
229
+ [e]: o
230
+ }
231
+ }), this._debouncedRegenerateProductRows());
232
+ }
233
+ /**
234
+ * Get the current card composition from block data attribute or use default
235
+ */
236
+ _getCardComposition() {
237
+ if (!this.currentNode)
238
+ return C;
239
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
240
+ if (!e || !("getAttribute" in e))
241
+ return C;
242
+ const o = e.getAttribute("data-card-composition");
243
+ return o ? o.split(",").filter(Boolean) : C;
244
+ }
245
+ _regenerateProductRows() {
246
+ if (!this.currentNode || !("querySelector" in this.currentNode))
247
+ return;
248
+ const e = this.currentNode.querySelector(".ins-recommendation-product-container");
249
+ if (!e) {
250
+ console.error("Could not find container table for product rows");
251
+ return;
252
+ }
253
+ const o = this.store.recommendationProducts.length > 0 ? this.store.recommendationProducts : E(), { cardsInRow: i } = this.store.recommendationConfigs, a = this._getCardComposition(), u = p(o, i, a);
254
+ this.api.getDocumentModifier().modifyHtml(e).setInnerHtml(u).apply(new S("Updated product"));
255
+ }
256
+ _onCurrencyConfigChange(e, o) {
257
+ this.currentNode && this.store.$patch({
258
+ recommendationConfigs: {
259
+ currencySettings: {
260
+ [e]: o
261
+ }
262
+ }
263
+ });
264
+ }
265
+ _onCurrencyChange(e) {
266
+ const [, o] = e.split(".");
267
+ this.store.$patch({
268
+ recommendationConfigs: {
269
+ currencySettings: {
270
+ name: o,
271
+ value: o
272
+ }
273
+ }
274
+ });
275
+ }
276
+ _setProductIdsVisibility() {
277
+ const { recommendationConfigs: e } = this.store, o = e.strategy === "manualMerchandising";
278
+ this.api.setVisibility(t.PRODUCT_IDS, o), this.api.setVisibility(`${t.PRODUCT_IDS}_label`, o);
279
+ }
280
+ _listenToFormUpdates() {
281
+ var o;
282
+ this.api.onValueChanged(t.ALGORITHM, (i) => {
283
+ this._onDataChange(t.ALGORITHM, i), this._setProductIdsVisibility();
284
+ }), this.api.onValueChanged(t.PRODUCT_IDS, (i) => this._onDataChange(t.PRODUCT_IDS, i.split(",") || [])), this.api.onValueChanged(t.LOCALE, (i) => this._onDataChange(t.LOCALE, i)), this.api.onValueChanged(t.CURRENCY, (i) => this._onCurrencyChange(i)), [
285
+ t.CURRENCY_LOCATION,
286
+ t.CURRENCY_SYMBOL,
287
+ t.CURRENCY_THOUSAND_SEPARATOR,
288
+ t.CURRENCY_DECIMAL_SEPARATOR,
289
+ t.CURRENCY_DECIMAL_COUNT
290
+ ].forEach((i) => {
291
+ this.api.onValueChanged(i, (a) => this._onCurrencyConfigChange(i, a));
292
+ }), this.api.onValueChanged(t.PRODUCT_COUNT, (i) => this._onDataChange(t.PRODUCT_COUNT, String(i))), this.api.onValueChanged(t.PRODUCT_IN_ROW, (i) => this._onDataChange(t.PRODUCT_IN_ROW, i)), this.api.onValueChanged(t.SHUFFLE_PRODUCTS, (i) => this._onDataChange(t.SHUFFLE_PRODUCTS, i)), this.api.onValueChanged(t.RESPONSIVE, (i) => this._onDataChange(t.RESPONSIVE, i)), this.addFilterListener = this._onFilterSelectClick.bind(this), this.addFilterButton = this.getContainer().querySelector("#guido__btn-add-filter"), (o = this.addFilterButton) == null || o.addEventListener("click", this.addFilterListener);
293
+ }
294
+ _listenStateUpdates() {
295
+ this.storeUnsubscription = this.store.$subscribe((e) => {
296
+ if ("payload" in e) {
297
+ const o = e.payload.recommendationConfigs;
298
+ o && (this.api.updateValues(o), this.store.fetchRecommendationProducts());
299
+ }
300
+ });
301
+ }
302
+ }
303
+ export {
304
+ L as CONTROL_BLOCK_ID,
305
+ b as RecommendationBlockControl
306
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonAlignBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class c extends t {
4
+ getId() {
5
+ return e.BUTTON_ALIGN;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ c as ButtonAlignControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonBorderBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class s extends t {
4
+ getId() {
5
+ return e.BUTTON_BORDER;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ s as ButtonBorderControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonBorderRadiusBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class i extends t {
4
+ getId() {
5
+ return e.BUTTON_BORDER_RADIUS;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ i as ButtonBorderRadiusControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonColorBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class c extends t {
4
+ getId() {
5
+ return e.BUTTON_COLOR;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ c as ButtonColorControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonFitToContainerBuiltInControl as o } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class s extends o {
4
+ getId() {
5
+ return e.BUTTON_FIT_TO_CONTENT;
6
+ }
7
+ getTargetNodes(t) {
8
+ return t.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ s as ButtonFitToContentControl
13
+ };