@useinsider/guido 2.1.0-beta.7d0f92a → 2.1.0-beta.860ef21

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 (132) hide show
  1. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +14 -15
  2. package/dist/composables/useHtmlValidator.js +84 -106
  3. package/dist/composables/useRecommendation.js +21 -54
  4. package/dist/config/compiler/recommendationCompilerRules.js +39 -45
  5. package/dist/config/migrator/recommendationMigrator.js +2 -2
  6. package/dist/enums/extensions/recommendationBlock.js +1 -1
  7. package/dist/enums/recommendation.js +15 -16
  8. package/dist/extensions/Blocks/Recommendation/block.js +9 -130
  9. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +187 -0
  10. package/dist/extensions/Blocks/Recommendation/constants.js +13 -0
  11. package/dist/extensions/Blocks/Recommendation/control.js +336 -0
  12. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  13. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  14. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  15. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textAfter.js → omnibusDiscountTextAfterControl.js} +14 -16
  16. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textBefore.js → omnibusDiscountTextBeforeControl.js} +14 -16
  17. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textAfter.js → omnibusPriceTextAfterControl.js} +14 -16
  18. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textBefore.js → omnibusPriceTextBeforeControl.js} +12 -14
  19. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  20. package/dist/extensions/Blocks/Recommendation/extension.js +17 -40
  21. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +3 -19
  22. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  23. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +10 -21
  24. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +193 -230
  25. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +181 -0
  26. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +189 -0
  27. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +209 -0
  28. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  29. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +15 -26
  30. package/dist/extensions/Blocks/controlFactories.js +93 -125
  31. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +169 -223
  32. package/dist/services/recommendationApi.js +9 -10
  33. package/dist/services/templateLibraryApi.js +13 -16
  34. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  35. package/dist/src/composables/useRecommendation.d.ts +0 -1
  36. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -67
  37. package/dist/src/extensions/Blocks/Recommendation/{controls/cardComposition/index.d.ts → cardCompositionControl.d.ts} +3 -23
  38. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +24 -0
  39. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +38 -0
  40. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +589 -21
  41. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  42. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  43. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +468 -131
  44. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  45. package/dist/src/extensions/Blocks/Recommendation/templates/{grid/migration.d.ts → migrationTemplate.d.ts} +4 -11
  46. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +52 -0
  47. package/dist/static/styles/components/notification.css.js +1 -0
  48. package/dist/static/styles/components/wide-panel.css.js +15 -0
  49. package/dist/static/styles/customEditorStyle.css.js +2 -25
  50. package/dist/utils/pairProductVariables.js +56 -57
  51. package/dist/utils/templatePreparation.js +14 -15
  52. package/package.json +2 -2
  53. package/dist/config/compiler/utils/recommendationCompilerUtils.js +0 -116
  54. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  55. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  56. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +0 -65
  57. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -20
  58. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -19
  59. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  60. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  61. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  62. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  63. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -92
  64. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -102
  65. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -209
  66. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -52
  67. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -217
  68. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -70
  69. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -110
  70. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -67
  71. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -286
  72. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  73. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -108
  74. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  75. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  76. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  77. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  78. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -222
  79. package/dist/extensions/Blocks/Recommendation/services/configService.js +0 -240
  80. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +0 -233
  81. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  82. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +0 -69
  83. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  84. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +0 -174
  85. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +0 -73
  86. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -122
  87. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +0 -6
  88. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +0 -29
  89. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  90. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +0 -17
  91. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  92. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -49
  93. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -13
  94. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -35
  95. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -31
  96. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  97. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  98. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  99. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -37
  100. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -29
  101. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -52
  102. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  103. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -68
  104. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -24
  105. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -42
  106. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -23
  107. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -214
  108. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  109. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -34
  110. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  111. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  112. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  113. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  114. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  115. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  116. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  117. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  118. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -83
  119. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +0 -151
  120. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +0 -6
  121. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +0 -20
  122. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +0 -33
  123. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -39
  124. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +0 -8
  125. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +0 -25
  126. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +0 -18
  127. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -57
  128. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +0 -7
  129. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -160
  130. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +0 -33
  131. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +0 -113
  132. 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
  };