@useinsider/guido 2.1.0 → 2.2.0-beta.071f000

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 (294) 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/FilterItem.vue.js +11 -13
  10. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +54 -23
  11. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +7 -5
  12. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +37 -23
  13. package/dist/components/organisms/extensions/recommendation/Filters.vue.js +11 -11
  14. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +48 -36
  15. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +11 -9
  16. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  17. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
  18. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
  19. package/dist/composables/useActionsApi.js +15 -13
  20. package/dist/composables/useBlocksConfig.js +26 -16
  21. package/dist/composables/useHtmlValidator.js +114 -104
  22. package/dist/composables/useRecommendation.js +54 -21
  23. package/dist/composables/useStripo.js +25 -23
  24. package/dist/composables/useVersionHistoryApi.js +1 -1
  25. package/dist/config/compiler/recommendationCompilerRules.js +45 -39
  26. package/dist/config/compiler/utils/recommendationCompilerUtils.js +121 -0
  27. package/dist/config/i18n/en/index.js +11 -0
  28. package/dist/config/i18n/en/labels.json.js +7 -0
  29. package/dist/config/i18n/en/toasters.json.js +56 -0
  30. package/dist/config/i18n/en/tooltips.json.js +82 -0
  31. package/dist/config/i18n/index.js +7 -0
  32. package/dist/config/migrator/itemsBlockMigrator.js +142 -120
  33. package/dist/config/migrator/recommendationMigrator.js +3 -3
  34. package/dist/enums/defaults.js +8 -4
  35. package/dist/enums/extensions/recommendationBlock.js +1 -1
  36. package/dist/enums/recommendation.js +16 -15
  37. package/dist/extensions/Blocks/Items/block.js +19 -28
  38. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  39. package/dist/extensions/Blocks/Items/controls/cardComposition.js +137 -89
  40. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  41. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  42. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  43. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  44. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  45. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  46. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  47. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  48. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  49. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  50. package/dist/extensions/Blocks/Items/extension.js +8 -9
  51. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  52. package/dist/extensions/Blocks/Items/template.js +181 -175
  53. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  54. package/dist/extensions/Blocks/Recommendation/block.js +133 -9
  55. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  56. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  57. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +69 -0
  58. package/dist/extensions/Blocks/Recommendation/constants/layout.js +24 -0
  59. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +23 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +104 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +207 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +340 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +168 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +381 -0
  73. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  74. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  75. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  76. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  77. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  78. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  79. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  80. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  81. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  82. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  83. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  84. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +346 -0
  85. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  86. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  87. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  88. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  89. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  90. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +353 -219
  91. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +228 -0
  92. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  93. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +66 -0
  94. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  95. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +169 -0
  96. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  97. package/dist/extensions/Blocks/Recommendation/templates/utils.js +134 -0
  98. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  99. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +12 -12
  100. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
  101. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  102. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  103. package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +29 -0
  104. package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
  105. package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
  106. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
  107. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
  108. package/dist/extensions/Blocks/common-control.js +91 -92
  109. package/dist/extensions/Blocks/controlFactories.js +125 -93
  110. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  111. package/dist/guido.css +1 -1
  112. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +317 -198
  113. package/dist/package.json.js +1 -1
  114. package/dist/services/recommendationApi.js +11 -8
  115. package/dist/services/stripoApi.js +20 -17
  116. package/dist/services/templateLibraryApi.js +16 -13
  117. package/dist/src/@types/config/schemas.d.ts +10 -2
  118. package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +1 -0
  119. package/dist/src/components/organisms/extensions/recommendation/Filters.vue.d.ts +17 -1
  120. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  121. package/dist/src/composables/useConfig.d.ts +4 -0
  122. package/dist/src/composables/useRecommendation.d.ts +1 -0
  123. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  124. package/dist/src/config/i18n/en/index.d.ts +1 -0
  125. package/dist/src/config/i18n/index.d.ts +16 -0
  126. package/dist/src/enums/defaults.d.ts +4 -0
  127. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  128. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  129. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  130. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  131. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  132. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  133. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  134. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  135. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  136. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  137. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  138. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  139. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  140. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  141. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  142. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  143. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +55 -0
  144. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  145. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +45 -0
  146. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +42 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  154. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  155. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  156. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  157. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +107 -0
  158. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  159. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +60 -0
  160. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  161. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +234 -0
  162. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  163. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  164. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  165. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  166. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  167. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  168. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  169. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  170. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  171. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  172. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  173. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  174. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  175. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  176. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  177. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +116 -0
  178. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  179. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  180. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  181. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  182. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +155 -468
  183. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  184. package/dist/src/extensions/Blocks/Recommendation/templates/grid/migration.d.ts +23 -0
  185. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  186. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +43 -0
  187. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  188. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  189. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  190. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +66 -0
  191. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  192. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +174 -0
  193. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  194. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  195. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  196. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  197. package/dist/src/extensions/Blocks/Recommendation/validation/filterSchema.d.ts +15 -0
  198. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
  199. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  200. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  201. package/dist/src/stores/config.d.ts +36 -0
  202. package/dist/static/styles/components/notification.css.js +19 -0
  203. package/dist/static/styles/components/tools.css.js +6 -2
  204. package/dist/static/styles/components/version-history.css.js +10 -2
  205. package/dist/static/styles/components/wide-panel.css.js +18 -6
  206. package/dist/static/styles/customEditorStyle.css.js +66 -2
  207. package/dist/static/styles/variables.css.js +2 -0
  208. package/dist/static/templates/empty/index.html.js +74 -0
  209. package/dist/static/templates/empty/style.css.js +779 -0
  210. package/dist/stores/unsubscribe.js +37 -34
  211. package/dist/utils/pairProductVariables.js +57 -56
  212. package/dist/utils/templatePreparation.js +15 -14
  213. package/package.json +3 -3
  214. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  215. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  216. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  217. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  218. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  219. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  220. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  221. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  222. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  223. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  224. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  225. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  226. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  227. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  228. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  229. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  230. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  231. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  232. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  233. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  234. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  235. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  236. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  237. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  238. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  239. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  240. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  241. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  242. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  243. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  244. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  245. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  246. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  247. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  248. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  249. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  250. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  251. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  252. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  253. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  254. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  255. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  256. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  257. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  258. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  259. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  260. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  261. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  262. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  263. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  264. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  265. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  266. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  267. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  268. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  269. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  270. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  271. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  272. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  273. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  274. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  275. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  276. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  277. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  278. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  279. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  280. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  281. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  282. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  283. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  284. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  285. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  286. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  287. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  288. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  289. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  290. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  291. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  292. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  293. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +0 -16
  294. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
@@ -1,13 +1,17 @@
1
- import { RecommendationFeedSourceMaps as n, PriceAttributes as u } from "../../../../enums/extensions/recommendationBlock.js";
2
- import { useRecommendationApi as l } from "../../../../services/recommendationApi.js";
3
- import { useConfigStore as c } from "../../../../stores/config.js";
4
- import { defineStore as p } from "pinia";
5
- import { generateCompleteFilterQuery as m } from "../utils/filterUtil.js";
6
- const a = l(), d = () => ({
7
- recommendationCampaignUrls: {},
8
- recommendationProducts: [],
9
- recommendationConfigs: {
10
- cardsInRow: 3,
1
+ import { RecommendationFeedSourceMaps as g, getOperatorOptions as R, PriceAttributes as k } from "../../../../enums/extensions/recommendationBlock.js";
2
+ import { useRecommendationApi as y } from "../../../../services/recommendationApi.js";
3
+ import { useConfigStore as C } from "../../../../stores/config.js";
4
+ import { defineStore as G } from "pinia";
5
+ import { DEFAULT_CARDS_IN_ROW as F } from "../constants/layout.js";
6
+ import { EXCLUDED_ALGORITHM_IDS as w } from "../constants/defaultConfig.js";
7
+ import { getDefaultProducts as S } from "../templates/utils.js";
8
+ import { generateCompleteFilterQuery as I } from "../utils/filterUtil.js";
9
+ import { isFilterValid as D } from "../validation/filterSchema.js";
10
+ const h = y();
11
+ let u = null, m = null, d = null;
12
+ function b() {
13
+ return {
14
+ cardsInRow: F,
11
15
  currencySettings: {
12
16
  name: "USD",
13
17
  value: "USD",
@@ -17,251 +21,381 @@ const a = l(), d = () => ({
17
21
  decimalSeparator: ",",
18
22
  thousandSeparator: "."
19
23
  },
20
- filters: [
21
- {
22
- type: "standardFilter",
23
- attribute: "product_attributes.rating_star",
24
- operatorReplace: "=",
25
- operator: "=",
26
- innerGroupOperator: "*",
27
- outerGroupOperator: "*",
28
- value: "5",
29
- filterGroup: 1,
30
- filterNumber: 1,
31
- isValid: !0
32
- },
33
- {
34
- type: "standardFilter",
35
- attribute: "gender",
36
- operatorReplace: "=",
37
- operator: "=",
38
- innerGroupOperator: "|",
39
- outerGroupOperator: "*",
40
- value: "male",
41
- filterGroup: 1,
42
- filterNumber: 2,
43
- isValid: !0
44
- },
45
- {
46
- type: "standardFilter",
47
- attribute: "size",
48
- operatorReplace: "=",
49
- operator: "=",
50
- innerGroupOperator: "*",
51
- outerGroupOperator: "*",
52
- value: "L",
53
- filterGroup: 1,
54
- filterNumber: 3,
55
- isValid: !0
56
- },
57
- {
58
- type: "standardFilter",
59
- attribute: "price.USD",
60
- operatorReplace: ">",
61
- operator: ">",
62
- innerGroupOperator: "*",
63
- outerGroupOperator: "*",
64
- value: "20",
65
- filterGroup: 2,
66
- filterNumber: 1,
67
- isValid: !0
68
- },
69
- {
70
- type: "standardFilter",
71
- attribute: "url",
72
- operatorReplace: "~",
73
- operator: "~",
74
- innerGroupOperator: "|",
75
- outerGroupOperator: "*",
76
- value: "user",
77
- filterGroup: 2,
78
- filterNumber: 2,
79
- isValid: !0
80
- },
81
- {
82
- type: "standardFilter",
83
- attribute: "category",
84
- operatorReplace: "!~",
85
- operator: "!~",
86
- innerGroupOperator: "*",
87
- outerGroupOperator: "|",
88
- value: "t-shirt",
89
- filterGroup: 3,
90
- filterNumber: 1,
91
- isValid: !0
92
- },
93
- {
94
- type: "standardFilter",
95
- attribute: "omnibus_price.USD",
96
- operatorReplace: ">",
97
- operator: ">",
98
- innerGroupOperator: "*",
99
- outerGroupOperator: "|",
100
- value: "31",
101
- filterGroup: 3,
102
- filterNumber: 2,
103
- isValid: !0
104
- },
105
- {
106
- type: "standardFilter",
107
- attribute: "omnibus_discount.USD",
108
- operatorReplace: "<",
109
- operator: "%3C",
110
- innerGroupOperator: "|",
111
- outerGroupOperator: "|",
112
- value: "20",
113
- filterGroup: 3,
114
- filterNumber: 3,
115
- isValid: !0
116
- }
117
- ],
118
- productIds: ["22", "12"],
24
+ filters: [],
25
+ productIds: [],
119
26
  id: 1,
120
- language: "tr_TR",
121
- orientation: "vertical",
27
+ language: "en_US",
28
+ orientation: "grid",
122
29
  recommendedProducts: [],
123
30
  sendProductRequestFlag: !1,
124
31
  shuffleProducts: !1,
125
32
  strategy: "mostPopular",
126
33
  textTrimming: !0,
127
34
  unresponsive: !1,
128
- size: "9"
129
- },
35
+ size: "6"
36
+ };
37
+ }
38
+ function P() {
39
+ return {
40
+ recommendationConfigs: b(),
41
+ recommendationProducts: [],
42
+ filterStatus: !1,
43
+ filterSelectionDrawerStatus: !1,
44
+ filterGroup: 1,
45
+ isInitialized: !1,
46
+ filterSnapshot: null
47
+ };
48
+ }
49
+ const v = () => ({
50
+ recommendationCampaignUrls: {},
130
51
  activePredictiveAlgorithms: [],
131
52
  languages: {},
132
53
  currencyList: [],
133
- filterStatus: !1,
134
- filterSelectionDrawerStatus: !1,
135
54
  filterList: {},
136
- filterGroup: 1
137
- }), y = p("guidoRecommendationExtension", {
138
- state: () => d(),
55
+ blockStates: {},
56
+ currentRecommendationId: null,
57
+ configVersion: 0
58
+ }), E = G("guidoRecommendationExtension", {
59
+ state: () => v(),
139
60
  getters: {
140
- hasFilters: (e) => !!e.recommendationConfigs.filters.length,
141
- getFilterGroupCount: (e) => {
142
- const { filters: t } = e.recommendationConfigs;
143
- return t.length && t[t.length - 1].filterGroup || 0;
61
+ // ====================================================================
62
+ // Proxy Getters — Backward Compatible Access to Current Block State
63
+ // ====================================================================
64
+ /**
65
+ * Proxy getter: delegates to blockStates[currentRecommendationId].recommendationConfigs
66
+ * This allows all existing code that reads `store.recommendationConfigs` to work unchanged.
67
+ */
68
+ recommendationConfigs(t) {
69
+ return t.currentRecommendationId !== null && t.blockStates[t.currentRecommendationId] ? t.blockStates[t.currentRecommendationId].recommendationConfigs : b();
70
+ },
71
+ /**
72
+ * Proxy getter: delegates to blockStates[currentRecommendationId].recommendationProducts
73
+ */
74
+ recommendationProducts(t) {
75
+ return t.currentRecommendationId !== null && t.blockStates[t.currentRecommendationId] ? t.blockStates[t.currentRecommendationId].recommendationProducts : [];
76
+ },
77
+ /**
78
+ * Proxy getter: delegates to blockStates[currentRecommendationId].filterSelectionDrawerStatus
79
+ */
80
+ filterSelectionDrawerStatus(t) {
81
+ return t.currentRecommendationId !== null && t.blockStates[t.currentRecommendationId] ? t.blockStates[t.currentRecommendationId].filterSelectionDrawerStatus : !1;
82
+ },
83
+ /**
84
+ * Proxy getter: delegates to blockStates[currentRecommendationId].filterStatus
85
+ */
86
+ filterStatus(t) {
87
+ return t.currentRecommendationId !== null && t.blockStates[t.currentRecommendationId] ? t.blockStates[t.currentRecommendationId].filterStatus : !1;
88
+ },
89
+ /**
90
+ * Proxy getter: delegates to blockStates[currentRecommendationId].filterGroup
91
+ */
92
+ filterGroup(t) {
93
+ return t.currentRecommendationId !== null && t.blockStates[t.currentRecommendationId] ? t.blockStates[t.currentRecommendationId].filterGroup : 1;
144
94
  },
145
- getActivePredictiveAlgorithms: (e) => {
146
- const t = [];
147
- return e.activePredictiveAlgorithms.forEach((r) => {
148
- t.push(...n.filter((i) => i.id === r));
149
- }), t.map((r) => ({
150
- text: r.name,
151
- value: r.key
95
+ // ====================================================================
96
+ // Existing Getters (now reading through proxy)
97
+ // ====================================================================
98
+ hasFilters() {
99
+ return !!this.recommendationConfigs.filters.length;
100
+ },
101
+ hasValidFilters() {
102
+ const { filters: t } = this.recommendationConfigs;
103
+ return t.length ? t.every((r) => r.isValid) : !1;
104
+ },
105
+ getFilterGroupCount() {
106
+ const { filters: t } = this.recommendationConfigs;
107
+ return t.length ? new Set(t.map((r) => r.filterGroup)).size : 0;
108
+ },
109
+ getUniqueFilterGroups() {
110
+ const { filters: t } = this.recommendationConfigs;
111
+ return [...new Set(t.map((r) => r.filterGroup))].sort((r, e) => r - e);
112
+ },
113
+ getActivePredictiveAlgorithms: (t) => {
114
+ const r = [];
115
+ return t.activePredictiveAlgorithms.filter((e) => !w.includes(e)).forEach((e) => {
116
+ r.push(...g.filter((n) => n.id === e));
117
+ }), r.map((e) => ({
118
+ text: e.name,
119
+ value: e.key
152
120
  }));
153
121
  },
154
- getLanguages: (e) => Object.entries(e.languages).map(([t, r]) => ({
155
- text: r,
156
- value: t
122
+ getLanguages: (t) => Object.entries(t.languages).map(([r, e]) => ({
123
+ text: e,
124
+ value: r
157
125
  })),
158
- getCurrencySymbolList: (e) => e.currencyList.map((t) => ({
159
- text: t.text,
160
- value: t.text
126
+ getCurrencySymbolList: (t) => t.currencyList.map((r) => ({
127
+ text: r.text,
128
+ value: r.text
161
129
  })),
162
- getFilterList: (e) => Object.values(e.filterList).map((t) => {
163
- const r = t.type === "defaultAttribute", i = u.includes(t.attributeName);
164
- let o = r ? t.attributeName : `product_attributes.${t.attributeName}`;
165
- return o = i ? `${o}.${e.recommendationConfigs.currencySettings.value}` : o, {
166
- text: t.displayName,
167
- value: o,
168
- type: t.attributeType
169
- };
170
- }),
171
- getSelectedFilterGroup: (e) => (t) => [...e.recommendationConfigs.filters].filter((r) => r.filterGroup === t)
130
+ getFilterList() {
131
+ return Object.values(this.filterList).map((t) => {
132
+ const r = t.type === "defaultAttribute", e = k.includes(t.attributeName);
133
+ let n = r ? t.attributeName : `product_attributes.${t.attributeName}`;
134
+ return n = e ? `${n}.${this.recommendationConfigs.currencySettings.value}` : n, {
135
+ text: t.displayName,
136
+ value: n,
137
+ type: t.attributeType
138
+ };
139
+ });
140
+ },
141
+ getSelectedFilterGroup() {
142
+ return (t) => [...this.recommendationConfigs.filters].filter((r) => r.filterGroup === t);
143
+ }
172
144
  },
173
145
  actions: {
174
- async fetchRecommendationCreateData() {
175
- if (this.activePredictiveAlgorithms.length)
176
- return;
177
- const {
178
- activePredictiveAlgorithms: e,
179
- languages: t,
180
- currencies: r
181
- } = await a.fetchRecommendationCreateData();
182
- this.activePredictiveAlgorithms = e, this.languages = t;
183
- const [i] = r;
184
- this.recommendationConfigs.currencySettings.name = i.text, this.recommendationConfigs.currencySettings.value = i.value, this.currencyList = r, this.filterStatus = !!this.recommendationConfigs.filters.length;
146
+ // ====================================================================
147
+ // Block Lifecycle Actions
148
+ // ====================================================================
149
+ /**
150
+ * Sets the currently active block ID.
151
+ * Creates a new entry in blockStates if one doesn't exist.
152
+ */
153
+ setCurrentBlock(t) {
154
+ this.blockStates[t] || (this.blockStates = {
155
+ ...this.blockStates,
156
+ [t]: P()
157
+ }), this.currentRecommendationId = t;
185
158
  },
186
- async fetchRecommendationFilters() {
187
- const e = await a.fetchRecommendationFilters();
188
- this.filterList = e;
159
+ /**
160
+ * Removes a block's state from the store.
161
+ * Resets currentRecommendationId if it was the deleted block.
162
+ */
163
+ removeBlockState(t) {
164
+ const r = { ...this.blockStates };
165
+ if (delete r[t], this.blockStates = r, this.currentRecommendationId === t) {
166
+ const e = Object.keys(this.blockStates).map(Number);
167
+ this.currentRecommendationId = e.length > 0 ? e[0] : null;
168
+ }
169
+ },
170
+ /**
171
+ * Marks a block as initialized (initial API data has been fetched).
172
+ * Automatically cleaned up when removeBlockState deletes the block entry.
173
+ */
174
+ markBlockInitialized(t) {
175
+ this.blockStates[t] && (this.blockStates[t].isInitialized = !0);
189
176
  },
190
- addFilterGroup(e) {
191
- this.recommendationConfigs.filters.push({
177
+ /**
178
+ * Patches the current block's recommendationConfigs.
179
+ * Replaces `store.$patch({ recommendationConfigs: { ... } })` pattern.
180
+ */
181
+ patchCurrentBlockConfig(t, r = {}) {
182
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
183
+ return;
184
+ const e = this.blockStates[this.currentRecommendationId];
185
+ e.recommendationConfigs = {
186
+ ...e.recommendationConfigs,
187
+ ...t,
188
+ currencySettings: {
189
+ ...e.recommendationConfigs.currencySettings,
190
+ ...t.currencySettings || {}
191
+ }
192
+ };
193
+ const { triggerRefetch: n = !0 } = r;
194
+ n && this.configVersion++;
195
+ },
196
+ /**
197
+ * Creates a filter with the first available attribute and operator pre-selected.
198
+ */
199
+ createDefaultFilter(t, r) {
200
+ const [e] = this.getFilterList, [n] = R(e == null ? void 0 : e.type);
201
+ return {
192
202
  type: "standardFilter",
193
- attribute: "",
194
- operatorReplace: "",
195
- operator: "",
196
- innerGroupOperator: "",
197
- outerGroupOperator: "",
198
- value: "",
199
- filterNumber: 1,
200
- isValid: !0,
201
- filterGroup: e
202
- });
203
+ attribute: (e == null ? void 0 : e.value) ?? "",
204
+ operator: (n == null ? void 0 : n.value) ?? "",
205
+ innerGroupOperator: "*",
206
+ outerGroupOperator: "*",
207
+ filterNumber: r,
208
+ filterGroup: t,
209
+ isValid: !1,
210
+ value: ""
211
+ };
212
+ },
213
+ /**
214
+ * Opens the filter selection drawer for the current block.
215
+ * Saves a snapshot of current filters for cancel/revert.
216
+ * If no filters exist, initializes with a default filter
217
+ * so the user has a starting point for input.
218
+ */
219
+ openFilterDrawer() {
220
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
221
+ return;
222
+ const t = this.blockStates[this.currentRecommendationId];
223
+ t.filterSnapshot = JSON.parse(
224
+ JSON.stringify(t.recommendationConfigs.filters)
225
+ ), t.recommendationConfigs.filters.length || (t.recommendationConfigs.filters = [this.createDefaultFilter(1, 1)]), t.filterSelectionDrawerStatus = !0;
226
+ },
227
+ /**
228
+ * Closes the filter selection drawer for the current block.
229
+ * Called after successful apply — discards the snapshot.
230
+ */
231
+ closeFilterDrawer() {
232
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
233
+ return;
234
+ const t = this.blockStates[this.currentRecommendationId];
235
+ t.filterSnapshot = null, t.filterSelectionDrawerStatus = !1;
203
236
  },
204
- updateFilter(e) {
205
- const t = this.recommendationConfigs.filters.findIndex((r) => r.filterNumber === e.filterNumber && r.filterGroup === e.filterGroup);
206
- if (t !== -1) {
207
- const r = [...this.recommendationConfigs.filters];
208
- r[t] = e, e.value.length && e.operator && e.attribute && e.innerGroupOperator && e.outerGroupOperator ? r[t].isValid = !0 : r[t].isValid = !1, this.$patch({
209
- recommendationConfigs: {
210
- filters: r
237
+ /**
238
+ * Cancels the filter selection drawer and reverts filters
239
+ * to the snapshot taken when the drawer was opened.
240
+ */
241
+ cancelFilterDrawer() {
242
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
243
+ return;
244
+ const t = this.blockStates[this.currentRecommendationId];
245
+ t.filterSnapshot !== null && (t.recommendationConfigs.filters = t.filterSnapshot, t.filterSnapshot = null), t.filterSelectionDrawerStatus = !1;
246
+ },
247
+ // ====================================================================
248
+ // Shared Data Fetching (fetched once, used by all blocks)
249
+ // ====================================================================
250
+ async fetchRecommendationCreateData() {
251
+ if (!this.activePredictiveAlgorithms.length) {
252
+ if (u) {
253
+ await u;
254
+ return;
255
+ }
256
+ u = (async () => {
257
+ const {
258
+ activePredictiveAlgorithms: t,
259
+ languages: r,
260
+ currencies: e
261
+ } = await h.fetchRecommendationCreateData();
262
+ if (this.activePredictiveAlgorithms = t, this.languages = r, this.currentRecommendationId !== null && this.blockStates[this.currentRecommendationId]) {
263
+ const n = this.blockStates[this.currentRecommendationId];
264
+ n.filterStatus = !!n.recommendationConfigs.filters.length;
211
265
  }
212
- });
266
+ this.currencyList = e;
267
+ })();
268
+ try {
269
+ await u;
270
+ } finally {
271
+ u = null;
272
+ }
213
273
  }
214
274
  },
215
- deleteFilter(e) {
216
- const t = [...this.recommendationConfigs.filters].findIndex((r) => r.filterNumber === e.filterNumber && r.filterGroup === e.filterGroup);
217
- if (t !== -1) {
218
- const r = [...this.recommendationConfigs.filters];
219
- r.splice(t, 1), this.$patch({
220
- recommendationConfigs: {
221
- filters: r
222
- }
223
- });
275
+ async fetchRecommendationFilters() {
276
+ if (!Object.keys(this.filterList).length) {
277
+ if (m) {
278
+ await m;
279
+ return;
280
+ }
281
+ m = (async () => {
282
+ const t = await h.fetchRecommendationFilters();
283
+ this.filterList = t;
284
+ })();
285
+ try {
286
+ await m;
287
+ } finally {
288
+ m = null;
289
+ }
290
+ }
291
+ },
292
+ // ====================================================================
293
+ // Per-Block Filter Actions
294
+ // ====================================================================
295
+ addFilterGroup(t) {
296
+ this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId] || this.blockStates[this.currentRecommendationId].recommendationConfigs.filters.push(
297
+ this.createDefaultFilter(t, 1)
298
+ );
299
+ },
300
+ deleteFilterGroup(t) {
301
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
302
+ return;
303
+ const r = this.blockStates[this.currentRecommendationId], e = r.recommendationConfigs.filters.filter((i) => i.filterGroup !== t), n = [...new Set(e.map((i) => i.filterGroup))].sort((i, o) => i - o), c = new Map(n.map((i, o) => [i, o + 1]));
304
+ r.recommendationConfigs.filters = e.map((i) => ({
305
+ ...i,
306
+ filterGroup: c.get(i.filterGroup) ?? i.filterGroup
307
+ }));
308
+ },
309
+ updateFilter(t) {
310
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
311
+ return;
312
+ const r = this.blockStates[this.currentRecommendationId], e = r.recommendationConfigs.filters.findIndex((n) => n.filterNumber === t.filterNumber && n.filterGroup === t.filterGroup);
313
+ if (e !== -1) {
314
+ const n = [...r.recommendationConfigs.filters];
315
+ n[e] = {
316
+ ...t,
317
+ isValid: D(t)
318
+ }, r.recommendationConfigs.filters = n;
224
319
  }
225
320
  },
226
- addFilter(e) {
227
- const t = [...this.recommendationConfigs.filters], r = t.findLastIndex((i) => i.filterGroup === e.filterGroup);
228
- r !== -1 ? t.splice(r + 1, 0, {
229
- ...e,
230
- filterNumber: r + 2
231
- }) : t.push({
232
- ...e,
233
- filterNumber: 1
234
- }), this.$patch({
235
- recommendationConfigs: {
236
- filters: t
321
+ deleteFilter(t) {
322
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
323
+ return;
324
+ const r = this.blockStates[this.currentRecommendationId], e = [...r.recommendationConfigs.filters].findIndex((n) => n.filterNumber === t.filterNumber && n.filterGroup === t.filterGroup);
325
+ if (e !== -1) {
326
+ let n = [...r.recommendationConfigs.filters];
327
+ if (n.splice(e, 1), n.some((i) => i.filterGroup === t.filterGroup)) {
328
+ let i = 1;
329
+ n = n.map((o) => o.filterGroup === t.filterGroup ? { ...o, filterNumber: i++ } : o);
330
+ } else {
331
+ const i = [...new Set(n.map((s) => s.filterGroup))].sort((s, l) => s - l), o = new Map(i.map((s, l) => [s, l + 1]));
332
+ n = n.map((s) => ({
333
+ ...s,
334
+ filterGroup: o.get(s.filterGroup) ?? s.filterGroup
335
+ }));
237
336
  }
238
- });
337
+ r.recommendationConfigs.filters = n;
338
+ }
339
+ },
340
+ addFilter(t) {
341
+ if (this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])
342
+ return;
343
+ const r = this.blockStates[this.currentRecommendationId], e = [...r.recommendationConfigs.filters], c = e.filter(
344
+ (o) => o.filterGroup === t.filterGroup
345
+ ).length + 1, i = e.findLastIndex((o) => o.filterGroup === t.filterGroup);
346
+ i !== -1 ? e.splice(i + 1, 0, {
347
+ ...t,
348
+ filterNumber: c
349
+ }) : e.push({
350
+ ...t,
351
+ filterNumber: c
352
+ }), r.recommendationConfigs.filters = e;
239
353
  },
240
354
  generateFilterQuery() {
241
- return m(this.recommendationConfigs.filters);
355
+ return I(this.recommendationConfigs.filters);
242
356
  },
357
+ // ====================================================================
358
+ // Per-Block Product Fetching
359
+ // ====================================================================
243
360
  async fetchRecommendationProducts() {
244
- var o;
245
- const e = this.generateFilterQuery(), t = ((o = n.find((s) => s.key === this.recommendationConfigs.strategy)) == null ? void 0 : o.path) || "", r = c(), i = await a.fetchRecommendationProducts(
246
- t,
247
- {
248
- // TODO: Here will be optimized and filled carefully
249
- locale: this.recommendationConfigs.language,
250
- currency: this.recommendationConfigs.currencySettings.value,
251
- partnerName: r.partnerName,
252
- productId: this.recommendationConfigs.strategy === "manualMerchandising" ? this.recommendationConfigs.productIds.join(",") : "{itemId}",
253
- size: this.recommendationConfigs.size,
254
- details: !0,
255
- campaignId: "{campaignId}",
256
- filter: e
361
+ if (!(this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId])) {
362
+ if (d) {
363
+ await d;
364
+ return;
257
365
  }
258
- );
259
- this.$patch({
260
- recommendationProducts: i
261
- });
366
+ d = this._doFetchProducts();
367
+ try {
368
+ await d;
369
+ } finally {
370
+ d = null;
371
+ }
372
+ }
373
+ },
374
+ async _doFetchProducts() {
375
+ var p;
376
+ const t = this.currentRecommendationId, r = this.blockStates[t], { recommendationConfigs: e } = r, n = e.filters.filter((a) => a.isValid), c = I(n), i = ((p = g.find((a) => a.key === e.strategy)) == null ? void 0 : p.path) || "", o = C(), s = {
377
+ locale: e.language,
378
+ currency: e.currencySettings.value,
379
+ partnerName: o.partnerName,
380
+ size: e.size,
381
+ details: !0,
382
+ campaignId: o.variationId
383
+ };
384
+ e.strategy === "manualMerchandising" ? s.productId = e.productIds.join(",") : e.strategy === "similarViewed" && (s.productId = "{itemId}"), e.strategy === "userBased" && (s.userId = "{user_id}"), c && (s.filter = c), e.shuffleProducts && (s.shuffle = !0);
385
+ const l = parseInt(e.size) || 6;
386
+ let f;
387
+ try {
388
+ f = await h.fetchRecommendationProducts(i, s);
389
+ } catch {
390
+ f = [];
391
+ }
392
+ if (this.blockStates[t]) {
393
+ const a = f.length > 0 ? f : S(l);
394
+ this.blockStates[t].recommendationProducts = a.length < l ? [...a, ...S(l - a.length)] : a;
395
+ }
262
396
  }
263
397
  }
264
398
  });
265
399
  export {
266
- y as useRecommendationExtensionStore
400
+ E as useRecommendationExtensionStore
267
401
  };