@useinsider/guido 2.1.0-beta.9ba2e9d → 2.1.0-beta.aa05b06

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 (143) 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/FilterSelectionDrawer.vue2.js +14 -15
  6. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  7. package/dist/composables/useBlocksConfig.js +29 -20
  8. package/dist/composables/useHtmlValidator.js +84 -106
  9. package/dist/composables/useRecommendation.js +21 -54
  10. package/dist/config/compiler/recommendationCompilerRules.js +39 -45
  11. package/dist/config/migrator/recommendationMigrator.js +2 -2
  12. package/dist/enums/defaults.js +8 -4
  13. package/dist/enums/recommendation.js +15 -16
  14. package/dist/extensions/Blocks/Recommendation/block.js +9 -130
  15. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +187 -0
  16. package/dist/extensions/Blocks/Recommendation/constants.js +13 -0
  17. package/dist/extensions/Blocks/Recommendation/control.js +336 -0
  18. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  19. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  20. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  21. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textAfter.js → omnibusDiscountTextAfterControl.js} +14 -16
  22. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textBefore.js → omnibusDiscountTextBeforeControl.js} +14 -16
  23. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textAfter.js → omnibusPriceTextAfterControl.js} +14 -16
  24. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textBefore.js → omnibusPriceTextBeforeControl.js} +12 -14
  25. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  26. package/dist/extensions/Blocks/Recommendation/extension.js +17 -40
  27. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +3 -19
  28. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  29. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +10 -21
  30. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +193 -230
  31. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +181 -0
  32. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +189 -0
  33. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +209 -0
  34. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  35. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +15 -26
  36. package/dist/extensions/Blocks/controlFactories.js +93 -125
  37. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  38. package/dist/guido.css +1 -1
  39. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +238 -224
  40. package/dist/services/recommendationApi.js +9 -10
  41. package/dist/services/templateLibraryApi.js +13 -16
  42. package/dist/src/@types/config/schemas.d.ts +8 -0
  43. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  44. package/dist/src/composables/useConfig.d.ts +4 -0
  45. package/dist/src/composables/useRecommendation.d.ts +0 -1
  46. package/dist/src/enums/defaults.d.ts +4 -0
  47. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -67
  48. package/dist/src/extensions/Blocks/Recommendation/{controls/cardComposition/index.d.ts → cardCompositionControl.d.ts} +3 -23
  49. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +24 -0
  50. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +38 -0
  51. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +589 -21
  52. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  53. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  54. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +468 -131
  55. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  56. package/dist/src/extensions/Blocks/Recommendation/templates/{grid/migration.d.ts → migrationTemplate.d.ts} +4 -11
  57. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +52 -0
  58. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  59. package/dist/src/stores/config.d.ts +36 -0
  60. package/dist/static/styles/customEditorStyle.css.js +2 -25
  61. package/dist/utils/pairProductVariables.js +56 -57
  62. package/dist/utils/templatePreparation.js +14 -15
  63. package/package.json +1 -1
  64. package/dist/config/compiler/utils/recommendationCompilerUtils.js +0 -147
  65. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  66. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  67. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +0 -65
  68. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -20
  69. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -19
  70. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  71. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  72. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  73. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  74. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -92
  75. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -102
  76. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -209
  77. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -52
  78. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -217
  79. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -70
  80. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -110
  81. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -67
  82. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -286
  83. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  84. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -108
  85. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  86. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  87. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  88. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  89. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -222
  90. package/dist/extensions/Blocks/Recommendation/services/configService.js +0 -240
  91. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +0 -233
  92. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  93. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +0 -69
  94. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  95. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +0 -174
  96. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +0 -73
  97. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -122
  98. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +0 -6
  99. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +0 -29
  100. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  101. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +0 -17
  102. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  103. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -49
  104. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -13
  105. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -35
  106. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -31
  107. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  108. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  109. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  110. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -37
  111. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -29
  112. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -52
  113. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  114. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -68
  115. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -24
  116. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -42
  117. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -23
  118. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -214
  119. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  120. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -34
  121. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  122. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  123. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  124. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  125. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  126. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  127. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  128. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  129. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -83
  130. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +0 -151
  131. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +0 -6
  132. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +0 -20
  133. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +0 -33
  134. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -39
  135. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +0 -8
  136. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +0 -25
  137. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +0 -18
  138. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -57
  139. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +0 -7
  140. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -160
  141. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +0 -33
  142. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +0 -113
  143. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +0 -77
@@ -1,27 +1,17 @@
1
1
  import { SettingsPanelRegistry as S, SettingsPanelTab as I, SettingsTab as T, ContainerControls as E, TextControls as C } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
2
  import { BLOCK_ID as R } from "./block.js";
3
- import { RecommendationBlockId as N } from "./constants/blockIds.js";
4
- import { RecommendationControlId as _ } from "./constants/controlIds.js";
5
- import { CONTROL_BLOCK_ID as L } from "./controls/main/index.js";
6
- import "./store/recommendation.js";
7
- import "./controls/name/index.js";
8
- import "./controls/price/index.js";
9
- import "./controls/oldPrice/index.js";
10
- import "./controls/omnibusPrice/index.js";
11
- import "./controls/omnibusDiscount/index.js";
12
- import "./controls/button/index.js";
13
- import "./controls/image/index.js";
14
- import { SPACING_CONTROL_ID as U } from "./controls/spacing/index.js";
15
- import { CARD_BACKGROUND_COLOR_CONTROL_ID as B } from "./controls/cardBackground/index.js";
16
- import { LAYOUT_CONTROL_ID as D } from "./controls/layout/index.js";
17
- import { COMPOSITION_CONTROL_BLOCK_ID as A } from "./controls/cardComposition/index.js";
18
- class s extends S {
3
+ import { COMPOSITION_CONTROL_BLOCK_ID as L } from "./cardCompositionControl.js";
4
+ import { RecommendationBlockId as N, RecommendationControlId as _ } from "./constants.js";
5
+ import { CONTROL_BLOCK_ID as U } from "./control.js";
6
+ import { CARD_BACKGROUND_COLOR_CONTROL_ID as B } from "./controls/cardBackgroundColorControl.js";
7
+ import { SPACING_CONTROL_ID as D } from "./controls/spacingControl.js";
8
+ class m extends S {
19
9
  registerBlockControls(O) {
20
10
  O[R] = [
21
11
  new I(
22
12
  T.SETTINGS,
23
13
  [
24
- L,
14
+ U,
25
15
  E.EXTERNAL_INDENTS
26
16
  ]
27
17
  ),
@@ -30,14 +20,13 @@ class s extends S {
30
20
  [
31
21
  C.TEXT_BLOCK_BACKGROUND_COLOR,
32
22
  B,
33
- D,
34
- U
23
+ D
35
24
  ]
36
25
  ),
37
26
  new I(
38
27
  "Card Composition",
39
28
  [
40
- A
29
+ L
41
30
  ]
42
31
  ).withLabel("Card Composition")
43
32
  ], O[N.NAME] = [
@@ -169,5 +158,5 @@ class s extends S {
169
158
  }
170
159
  }
171
160
  export {
172
- s as SettingsPanel
161
+ m as SettingsPanel
173
162
  };
@@ -1,13 +1,13 @@
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,
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,
11
11
  currencySettings: {
12
12
  name: "USD",
13
13
  value: "USD",
@@ -17,217 +17,178 @@ function f() {
17
17
  decimalSeparator: ",",
18
18
  thousandSeparator: "."
19
19
  },
20
- filters: [],
21
- productIds: [],
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
119
  id: 1,
23
120
  language: "tr_TR",
24
- orientation: "grid",
121
+ orientation: "vertical",
25
122
  recommendedProducts: [],
26
123
  sendProductRequestFlag: !1,
27
124
  shuffleProducts: !1,
28
125
  strategy: "mostPopular",
29
126
  textTrimming: !0,
30
127
  unresponsive: !1,
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: {},
128
+ size: "9"
129
+ },
45
130
  activePredictiveAlgorithms: [],
46
131
  languages: {},
47
132
  currencyList: [],
133
+ filterStatus: !1,
134
+ filterSelectionDrawerStatus: !1,
48
135
  filterList: {},
49
- blockStates: {},
50
- currentRecommendationId: null,
51
- configVersion: 0
52
- }), D = b("guidoRecommendationExtension", {
53
- state: () => k(),
136
+ filterGroup: 1
137
+ }), y = p("guidoRecommendationExtension", {
138
+ state: () => d(),
54
139
  getters: {
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;
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;
98
144
  },
99
145
  getActivePredictiveAlgorithms: (e) => {
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
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
106
152
  }));
107
153
  },
108
- getLanguages: (e) => Object.entries(e.languages).map(([r, t]) => ({
109
- text: t,
110
- value: r
154
+ getLanguages: (e) => Object.entries(e.languages).map(([t, r]) => ({
155
+ text: r,
156
+ value: t
111
157
  })),
112
- getCurrencySymbolList: (e) => e.currencyList.map((r) => ({
113
- text: r.text,
114
- value: r.text
158
+ getCurrencySymbolList: (e) => e.currencyList.map((t) => ({
159
+ text: t.text,
160
+ value: t.text
115
161
  })),
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
- }
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
172
  },
131
173
  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
- // ====================================================================
206
174
  async fetchRecommendationCreateData() {
207
175
  if (this.activePredictiveAlgorithms.length)
208
176
  return;
209
177
  const {
210
178
  activePredictiveAlgorithms: e,
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;
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;
221
185
  },
222
186
  async fetchRecommendationFilters() {
223
- const e = await l.fetchRecommendationFilters();
187
+ const e = await a.fetchRecommendationFilters();
224
188
  this.filterList = e;
225
189
  },
226
- // ====================================================================
227
- // Per-Block Filter Actions
228
- // ====================================================================
229
190
  addFilterGroup(e) {
230
- this.currentRecommendationId === null || !this.blockStates[this.currentRecommendationId] || this.blockStates[this.currentRecommendationId].recommendationConfigs.filters.push({
191
+ this.recommendationConfigs.filters.push({
231
192
  type: "standardFilter",
232
193
  attribute: "",
233
194
  operatorReplace: "",
@@ -241,64 +202,66 @@ const k = () => ({
241
202
  });
242
203
  },
243
204
  updateFilter(e) {
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);
205
+ const t = this.recommendationConfigs.filters.findIndex((r) => r.filterNumber === e.filterNumber && r.filterGroup === e.filterGroup);
247
206
  if (t !== -1) {
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;
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
+ });
250
213
  }
251
214
  },
252
215
  deleteFilter(e) {
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);
216
+ const t = [...this.recommendationConfigs.filters].findIndex((r) => r.filterNumber === e.filterNumber && r.filterGroup === e.filterGroup);
256
217
  if (t !== -1) {
257
- const n = [...r.recommendationConfigs.filters];
258
- n.splice(t, 1), r.recommendationConfigs.filters = n;
218
+ const r = [...this.recommendationConfigs.filters];
219
+ r.splice(t, 1), this.$patch({
220
+ recommendationConfigs: {
221
+ filters: r
222
+ }
223
+ });
259
224
  }
260
225
  },
261
226
  addFilter(e) {
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, {
227
+ const t = [...this.recommendationConfigs.filters], r = t.findLastIndex((i) => i.filterGroup === e.filterGroup);
228
+ r !== -1 ? t.splice(r + 1, 0, {
268
229
  ...e,
269
- filterNumber: o
230
+ filterNumber: r + 2
270
231
  }) : t.push({
271
232
  ...e,
272
- filterNumber: o
273
- }), r.recommendationConfigs.filters = t;
233
+ filterNumber: 1
234
+ }), this.$patch({
235
+ recommendationConfigs: {
236
+ filters: t
237
+ }
238
+ });
274
239
  },
275
240
  generateFilterQuery() {
276
- return d(this.recommendationConfigs.filters);
241
+ return m(this.recommendationConfigs.filters);
277
242
  },
278
- // ====================================================================
279
- // Per-Block Product Fetching
280
- // ====================================================================
281
243
  async fetchRecommendationProducts() {
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
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
+ }
297
258
  );
298
- this.blockStates[e] && (this.blockStates[e].recommendationProducts = h);
259
+ this.$patch({
260
+ recommendationProducts: i
261
+ });
299
262
  }
300
263
  }
301
264
  });
302
265
  export {
303
- D as useRecommendationExtensionStore
266
+ y as useRecommendationExtensionStore
304
267
  };