@useinsider/guido 2.1.0-beta.425dfd0 → 2.1.0-beta.42f5dfa

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