@useinsider/guido 2.1.0-beta.a720424 → 2.1.0-beta.a873eb7

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