@useinsider/guido 2.1.0 → 2.2.0-beta.39b37ff

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 (283) hide show
  1. package/README.md +36 -0
  2. package/dist/@types/config/schemas.js +71 -66
  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 +142 -120
  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/block.js +19 -28
  32. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  33. package/dist/extensions/Blocks/Items/controls/cardComposition.js +137 -89
  34. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  35. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  36. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  37. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  38. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  39. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  40. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  41. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  42. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  43. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  44. package/dist/extensions/Blocks/Items/extension.js +8 -9
  45. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  46. package/dist/extensions/Blocks/Items/template.js +181 -175
  47. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  48. package/dist/extensions/Blocks/Recommendation/block.js +133 -9
  49. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  50. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  51. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +66 -0
  52. package/dist/extensions/Blocks/Recommendation/constants/layout.js +22 -0
  53. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +21 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +92 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +209 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +250 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +160 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +307 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  73. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  74. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  75. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  76. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  77. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  78. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  79. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  80. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  81. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  82. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  83. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  84. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +254 -207
  85. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +228 -0
  86. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  87. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +66 -0
  88. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  89. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +169 -0
  90. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  91. package/dist/extensions/Blocks/Recommendation/templates/utils.js +134 -0
  92. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  93. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  94. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
  95. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  96. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  97. package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
  98. package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
  99. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
  100. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
  101. package/dist/extensions/Blocks/common-control.js +91 -92
  102. package/dist/extensions/Blocks/controlFactories.js +125 -93
  103. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  104. package/dist/guido.css +1 -1
  105. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +317 -198
  106. package/dist/package.json.js +1 -1
  107. package/dist/services/recommendationApi.js +11 -8
  108. package/dist/services/stripoApi.js +20 -17
  109. package/dist/services/templateLibraryApi.js +16 -13
  110. package/dist/src/@types/config/schemas.d.ts +10 -2
  111. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  112. package/dist/src/composables/useConfig.d.ts +4 -0
  113. package/dist/src/composables/useRecommendation.d.ts +1 -0
  114. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  115. package/dist/src/config/i18n/en/index.d.ts +1 -0
  116. package/dist/src/config/i18n/index.d.ts +16 -0
  117. package/dist/src/enums/defaults.d.ts +4 -0
  118. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  119. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  120. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  121. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  122. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  123. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  124. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  125. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  126. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  127. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  128. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  129. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  130. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  131. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  132. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  133. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  134. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  135. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  136. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +41 -0
  137. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +35 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  142. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  143. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  144. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  145. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  146. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +79 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +60 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +221 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  154. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  155. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  156. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  157. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  158. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  159. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  160. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  161. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  162. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  163. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  164. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  165. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  166. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  167. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  168. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  169. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  170. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  171. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  172. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  173. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +138 -468
  174. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  175. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  176. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  177. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +41 -0
  178. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  179. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  180. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  181. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +66 -0
  182. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  183. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +166 -0
  184. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  185. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  186. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  187. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  188. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
  189. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  190. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  191. package/dist/src/stores/config.d.ts +36 -0
  192. package/dist/static/styles/components/notification.css.js +19 -0
  193. package/dist/static/styles/components/tools.css.js +6 -2
  194. package/dist/static/styles/components/version-history.css.js +10 -2
  195. package/dist/static/styles/components/wide-panel.css.js +18 -6
  196. package/dist/static/styles/customEditorStyle.css.js +39 -2
  197. package/dist/static/styles/variables.css.js +2 -0
  198. package/dist/static/templates/empty/index.html.js +74 -0
  199. package/dist/static/templates/empty/style.css.js +779 -0
  200. package/dist/stores/unsubscribe.js +37 -34
  201. package/dist/utils/pairProductVariables.js +57 -56
  202. package/dist/utils/templatePreparation.js +15 -14
  203. package/package.json +2 -2
  204. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  205. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  206. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  207. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  208. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  209. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  210. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  211. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  212. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  213. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  214. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  215. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  216. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  217. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  218. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  219. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  220. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  221. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  222. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  223. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  224. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  225. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  226. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  227. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  228. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  229. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  230. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  231. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  232. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  233. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  234. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  235. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  236. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  237. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  238. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  239. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  240. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  241. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  242. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  243. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  244. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  245. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  246. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  247. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  248. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  249. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  250. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  251. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  252. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  253. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  254. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  255. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  256. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  257. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  258. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  259. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  260. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  261. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  262. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  263. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  264. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  265. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  266. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  267. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  268. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  269. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  270. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  271. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  272. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  273. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  274. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  275. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  276. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  277. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  278. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  279. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  280. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  281. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  282. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  283. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
@@ -1,46 +1,46 @@
1
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() {
2
+ import { DefaultConfigValues as o, SETTINGS_ENUMS as n, ItemInCartOptions as g } from "../enums/settingsEnums.js";
3
+ function _() {
4
4
  return String(Date.now() + Math.floor(Math.random() * 1e3));
5
5
  }
6
- const E = (o) => o.replace(/\$/g, "$$$$");
6
+ const E = (r) => r.replace(/\$/g, "$$$$");
7
7
  function S() {
8
8
  return {
9
9
  initialized: !0,
10
- blockInstanceId: d(),
10
+ blockInstanceId: _(),
11
11
  source: n.ITEMS_TYPE.CART_ITEMS,
12
12
  type: n.ITEMS_TYPE.CART_ITEMS,
13
- itemsSelectValue: i.cartItemsSelectControlValue,
13
+ itemsSelectValue: o.cartItemsSelectControlValue,
14
14
  orientation: n.ORIENTATION.VERTICAL,
15
- nameTrimming: i.productNameTrimmingControlValue === "1",
16
- priceHideDiscount: i.productPriceHideDiscountControlValue === "1",
17
- priceFormatted: i.productPriceFormattedControlValue === "1",
15
+ nameTrimming: o.productNameTrimmingControlValue === "1",
16
+ priceHideDiscount: o.productPriceHideDiscountControlValue === "1",
17
+ priceFormatted: o.productPriceFormattedControlValue === "1",
18
18
  priceSinglePrice: !1,
19
- priceCurrencySymbol: i.productPriceCurrencySymbolControlValue,
20
- priceCurrencyLocation: i.productPriceCurrencyLocationControlValue,
19
+ priceCurrencySymbol: o.productPriceCurrencySymbolControlValue,
20
+ priceCurrencyLocation: o.productPriceCurrencyLocationControlValue,
21
21
  priceOrientation: "horizontal",
22
- quantityControlEnabled: i.productQuantityControlEnabled === "1",
23
- buttonLink: i.productButtonLinkControlValue,
24
- imageLink: i.productImageLinkControlValue,
22
+ quantityControlEnabled: o.productQuantityControlEnabled === "1",
23
+ buttonLink: o.productButtonLinkControlValue,
24
+ imageLink: o.productImageLinkControlValue,
25
25
  buttonLabel: "Buy",
26
26
  buttonFullWidth: !0,
27
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"
28
+ imageVisible: o.productImageVisible === "1",
29
+ nameVisible: o.productNameVisible === "1",
30
+ quantityVisible: o.productQuantityVisible === "1",
31
+ priceVisible: o.productPriceVisible === "1",
32
+ originalPriceVisible: o.productOriginalPriceVisible === "1",
33
+ buttonVisible: o.productButtonVisible === "1"
34
34
  };
35
35
  }
36
- function s(o) {
37
- if (!o)
36
+ function p(r) {
37
+ if (!r)
38
38
  return null;
39
- const t = o.closest(".items-block-v2");
40
- return t || o.closest(".esd-cart-items-block");
39
+ const t = r.closest(".items-block-v2");
40
+ return t || r.closest(".esd-cart-items-block");
41
41
  }
42
- function m(o) {
43
- return o ? {
42
+ function m(r) {
43
+ return r ? {
44
44
  CartItems: n.ITEMS_TYPE.CART_ITEMS,
45
45
  BrowsedItems: n.ITEMS_TYPE.BROWSED_ITEMS,
46
46
  PurchasedItems: n.ITEMS_TYPE.PURCHASED_ITEMS,
@@ -48,34 +48,34 @@ function m(o) {
48
48
  CART_ITEMS: n.ITEMS_TYPE.CART_ITEMS,
49
49
  BROWSED_ITEMS: n.ITEMS_TYPE.BROWSED_ITEMS,
50
50
  PURCHASED_ITEMS: n.ITEMS_TYPE.PURCHASED_ITEMS
51
- }[o] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
51
+ }[r] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
52
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;
53
+ function I(r, t) {
54
+ if (!r)
55
+ return o.cartItemsSelectControlValue;
56
+ if (r.includes("{{"))
57
+ return r;
58
+ if (/^\d+$/.test(r)) {
59
+ const e = parseInt(r) - 1, i = g[t];
60
+ if (i && i[e])
61
+ return i[e].value;
62
62
  }
63
- return i.cartItemsSelectControlValue;
63
+ return o.cartItemsSelectControlValue;
64
64
  }
65
- function C(o) {
66
- const t = o.querySelector("esd-config-block");
65
+ function C(r) {
66
+ const t = r.querySelector("esd-config-block");
67
67
  if (!t)
68
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);
69
+ const e = (c, s) => c == null ? s : c === "1" || c === "true", i = (c, s) => c || s, u = t.getAttribute("data-type"), a = m(u), d = t.getAttribute("data-cart_items_select_control_value"), l = I(d, a);
70
70
  return {
71
71
  initialized: e(t.getAttribute("data-initialized"), !1),
72
- blockInstanceId: r(
72
+ blockInstanceId: i(
73
73
  t.getAttribute("data-block-instance-id"),
74
- d()
74
+ _()
75
75
  ),
76
- source: u,
77
- type: u,
78
- itemsSelectValue: p,
76
+ source: a,
77
+ type: a,
78
+ itemsSelectValue: l,
79
79
  orientation: t.getAttribute("data-card_orientation_control_value") || n.ORIENTATION.VERTICAL,
80
80
  nameTrimming: e(
81
81
  t.getAttribute("data-product_name_control_trim"),
@@ -93,28 +93,28 @@ function C(o) {
93
93
  t.getAttribute("data-product_price_control_single_price"),
94
94
  !1
95
95
  ),
96
- priceCurrencySymbol: r(
97
- t.getAttribute("data-product_price_currency_symbol"),
98
- i.productPriceCurrencySymbolControlValue
96
+ priceCurrencySymbol: i(
97
+ t.getAttribute("data-product_price_control_currency_symbol"),
98
+ o.productPriceCurrencySymbolControlValue
99
99
  ),
100
- priceCurrencyLocation: r(
100
+ priceCurrencyLocation: i(
101
101
  t.getAttribute("data-product_price_currency_location"),
102
- i.productPriceCurrencyLocationControlValue
102
+ o.productPriceCurrencyLocationControlValue
103
103
  ),
104
104
  priceOrientation: t.getAttribute("data-product_original_price_control_orientation") || "horizontal",
105
105
  quantityControlEnabled: e(
106
106
  t.getAttribute("data-product_quantity_control_enabled"),
107
107
  !0
108
108
  ),
109
- buttonLink: r(
109
+ buttonLink: i(
110
110
  t.getAttribute("data-product_button_link"),
111
- i.productButtonLinkControlValue
111
+ o.productButtonLinkControlValue
112
112
  ),
113
- imageLink: r(
113
+ imageLink: i(
114
114
  t.getAttribute("data-product_image_link"),
115
- i.productImageLinkControlValue
115
+ o.productImageLinkControlValue
116
116
  ),
117
- buttonLabel: r(
117
+ buttonLabel: i(
118
118
  t.getAttribute("data-product_button_control_label"),
119
119
  "Buy"
120
120
  ),
@@ -149,28 +149,28 @@ function C(o) {
149
149
  )
150
150
  };
151
151
  }
152
- function y(o) {
153
- const t = s(o);
152
+ function y(r) {
153
+ const t = p(r);
154
154
  if (!t)
155
155
  return null;
156
156
  const e = t.getNodeConfig();
157
157
  if (e && e.initialized)
158
158
  return e;
159
- const r = C(t);
160
- return r || null;
159
+ const i = C(t);
160
+ return i || null;
161
161
  }
162
- function A(o, t, e) {
163
- const r = s(o);
164
- if (!r)
162
+ function A(r, t, e, i) {
163
+ const u = p(r);
164
+ if (!u)
165
165
  return;
166
- const u = { ...r.getNodeConfig() || {}, ...e };
167
- t.getDocumentModifier().modifyHtml(r).setNodeConfig(u).apply(new b("Update Items block configuration"));
166
+ const d = { ...u.getNodeConfig() || {}, ...e }, l = i ?? t.getDocumentModifier();
167
+ l.modifyHtml(u).setNodeConfig(d), i || l.apply(new b("Update Items block configuration"));
168
168
  }
169
169
  export {
170
170
  E as escapeReplacement,
171
- d as generateBlockInstanceId,
171
+ _ as generateBlockInstanceId,
172
172
  S as getDefaultItemsBlockConfig,
173
173
  y as getItemsBlockConfig,
174
- s as getItemsBlockContainer,
174
+ p as getItemsBlockContainer,
175
175
  A as setItemsBlockConfig
176
176
  };
@@ -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,66 @@
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
+ };
@@ -0,0 +1,22 @@
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
+ };
@@ -0,0 +1,21 @@
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
+ };
@@ -0,0 +1,64 @@
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
+ };
@@ -0,0 +1,80 @@
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
+ };