@useinsider/guido 3.17.0 → 3.18.0-beta.0ece468
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.
- package/README.md +6 -5
- package/dist/@types/config/schemas.js +7 -6
- package/dist/components/Guido.vue.js +10 -10
- package/dist/components/Guido.vue2.js +84 -78
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +23 -0
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +122 -0
- package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue.js +17 -0
- package/dist/components/organisms/extensions/recommendation/RemoveStrategyModal.vue2.js +57 -0
- package/dist/components/organisms/extensions/recommendation/StrategyInfoBoxContent.vue.js +19 -0
- package/dist/components/organisms/extensions/recommendation/StrategyInfoBoxContent.vue2.js +63 -0
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +20 -18
- package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +21 -0
- package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +46 -0
- package/dist/composables/useCustomInterfaceAppearance.js +52 -38
- package/dist/composables/useModuleRepair.js +33 -0
- package/dist/composables/useRecommendation.js +41 -34
- package/dist/composables/useSave.js +30 -29
- package/dist/composables/useStripo.js +15 -15
- package/dist/composables/useSyncModuleExtractor.js +15 -13
- package/dist/composables/validators/useSyncModuleBlockValidator.js +24 -0
- package/dist/config/i18n/en/labels.json.js +1 -1
- package/dist/config/migrator/index.js +9 -8
- package/dist/config/migrator/recommendation/compositionMapper.js +20 -20
- package/dist/config/migrator/recommendation/extractors.js +29 -24
- package/dist/config/migrator/recommendation/htmlBuilder.js +116 -130
- package/dist/config/migrator/recommendation/settingsMapper.js +17 -17
- package/dist/config/migrator/recommendationMigrator.js +31 -25
- package/dist/config/migrator/recommendationTitleMigrator.js +119 -0
- package/dist/enums/academy.js +2 -1
- package/dist/enums/date.js +5 -3
- package/dist/enums/extensions/recommendationBlock.js +40 -31
- package/dist/extensions/Blocks/Items/block.js +118 -49
- package/dist/extensions/Blocks/Items/constants/currency.js +25 -0
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +25 -24
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +12 -11
- package/dist/extensions/Blocks/Items/template.js +153 -152
- package/dist/extensions/Blocks/Items/utils/constants.js +4 -0
- package/dist/extensions/Blocks/Recommendation/block.js +35 -29
- package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +1 -1
- package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +29 -27
- package/dist/extensions/Blocks/Recommendation/constants/selectors.js +35 -28
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +309 -236
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +241 -180
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +128 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +1 -0
- package/dist/extensions/Blocks/Recommendation/controls/title/index.js +44 -0
- package/dist/extensions/Blocks/Recommendation/extension.js +31 -29
- package/dist/extensions/Blocks/Recommendation/services/configService.js +54 -36
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +23 -4
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +236 -79
- package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +3 -3
- package/dist/extensions/Blocks/Recommendation/templates/titleRows.js +33 -0
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +85 -107
- package/dist/extensions/Blocks/Recommendation/utils/nodeConfigWriter.js +22 -0
- package/dist/extensions/Blocks/Recommendation/utils/recommendationBlockCount.js +10 -6
- package/dist/extensions/Blocks/common-control.js +22 -19
- package/dist/guido.css +1 -1
- package/dist/services/recommendationApi.js +69 -30
- package/dist/src/@types/config/schemas.d.ts +2 -0
- package/dist/src/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.d.ts +3 -0
- package/dist/src/components/organisms/extensions/recommendation/RemoveStrategyModal.vue.d.ts +2 -0
- package/dist/src/components/organisms/extensions/recommendation/StrategyInfoBoxContent.vue.d.ts +15 -0
- package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +2 -0
- package/dist/src/composables/useConfig.d.ts +2 -0
- package/dist/src/composables/useModuleRepair.d.ts +18 -0
- package/dist/src/composables/useRecommendation.d.ts +1 -0
- package/dist/src/composables/useSyncModuleExtractor.d.ts +2 -0
- package/dist/src/composables/validators/useSyncModuleBlockValidator.d.ts +3 -0
- package/dist/src/config/migrator/recommendation/extractors.d.ts +8 -0
- package/dist/src/config/migrator/recommendationTitleMigrator.d.ts +5 -0
- package/dist/src/enums/academy.d.ts +1 -0
- package/dist/src/enums/date.d.ts +1 -0
- package/dist/src/enums/extensions/recommendationBlock.d.ts +4 -0
- package/dist/src/extensions/Blocks/Items/block.d.ts +35 -0
- package/dist/src/extensions/Blocks/Items/constants/currency.d.ts +43 -0
- package/dist/src/extensions/Blocks/Items/utils/constants.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +2 -1
- package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +7 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +3 -6
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +2 -2
- package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +12 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +11 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +1 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +44 -8
- package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +17 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +1 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/title/index.d.ts +86 -0
- package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +12 -1
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +225 -10
- package/dist/src/extensions/Blocks/Recommendation/templates/titleRows.d.ts +13 -0
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +7 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/nodeConfigWriter.d.ts +31 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/recommendationBlockCount.d.ts +6 -2
- package/dist/src/extensions/Blocks/common-control.d.ts +4 -1
- package/dist/src/mock/api/recommendation-strategies.d.ts +2 -0
- package/dist/src/services/recommendationApi.d.ts +4 -1
- package/dist/src/stores/config.d.ts +18 -0
- package/dist/src/stores/onboarding.d.ts +377 -0
- package/dist/src/stores/save-as-template.d.ts +4 -3
- package/dist/src/utils/genericUtil.d.ts +5 -0
- package/dist/src/utils/itemsCurrencyRepair.d.ts +17 -0
- package/dist/static/assets/icons/line-change.svg.js +5 -0
- package/dist/static/assets/icons/line-delete.svg.js +5 -0
- package/dist/static/assets/icons/line-plus.svg.js +5 -0
- package/dist/static/styles/components/recommendation-strategy.css.js +172 -0
- package/dist/static/styles/customEditorStyle.css.js +3 -1
- package/dist/stores/onboarding.js +41 -36
- package/dist/utils/dateUtil.js +23 -10
- package/dist/utils/genericUtil.js +28 -27
- package/dist/utils/itemsCurrencyRepair.js +39 -0
- package/dist/utils/pairProductVariables.js +58 -58
- package/dist/utils/templatePreparation.js +35 -34
- package/package.json +3 -2
- package/dist/composables/useModuleDynamicContentRepair.js +0 -37
- package/dist/src/composables/useModuleDynamicContentRepair.d.ts +0 -13
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Orientation, Languages, Currency, NumericSeparator, FiltersResponse, Filter, RecommendationProduct } from '@@/Types/recommendation';
|
|
1
|
+
import type { Orientation, Languages, Currency, NumericSeparator, FiltersResponse, Filter, RecommendationCampaignUrlValue, RecommendationProduct, RrsStrategy } from '@@/Types/recommendation';
|
|
2
2
|
export interface PerBlockConfigs {
|
|
3
3
|
cardsInRow: number;
|
|
4
4
|
currencySettings: {
|
|
@@ -21,6 +21,7 @@ export interface PerBlockConfigs {
|
|
|
21
21
|
sendProductRequestFlag: boolean;
|
|
22
22
|
shuffleProducts: boolean;
|
|
23
23
|
strategy: string;
|
|
24
|
+
strategyId: string;
|
|
24
25
|
textTrimming: boolean;
|
|
25
26
|
unresponsive: boolean;
|
|
26
27
|
size: string;
|
|
@@ -33,6 +34,8 @@ interface PerBlockState {
|
|
|
33
34
|
recommendationProducts: RecommendationProduct[];
|
|
34
35
|
filterStatus: boolean;
|
|
35
36
|
filterSelectionDrawerStatus: boolean;
|
|
37
|
+
assignStrategyDrawerStatus: boolean;
|
|
38
|
+
removeStrategyModalStatus: boolean;
|
|
36
39
|
filterGroup: number;
|
|
37
40
|
/** Whether initial API data (filters, algorithms, products) has been fetched for this block */
|
|
38
41
|
isInitialized: boolean;
|
|
@@ -47,6 +50,7 @@ interface PerBlockState {
|
|
|
47
50
|
*/
|
|
48
51
|
export interface PerBlockUrlConfig {
|
|
49
52
|
strategy: string;
|
|
53
|
+
strategyId: string;
|
|
50
54
|
language: string;
|
|
51
55
|
size: string;
|
|
52
56
|
productIds: string[];
|
|
@@ -59,11 +63,16 @@ export interface PerBlockUrlConfig {
|
|
|
59
63
|
currencyThousandSeparator: string;
|
|
60
64
|
}
|
|
61
65
|
interface StoreState {
|
|
62
|
-
recommendationCampaignUrls: Record<string,
|
|
66
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
63
67
|
activePredictiveAlgorithms: number[];
|
|
64
68
|
languages: Languages;
|
|
65
69
|
currencyList: Currency[];
|
|
66
70
|
filterList: FiltersResponse;
|
|
71
|
+
strategies: RrsStrategy[];
|
|
72
|
+
strategiesLoading: boolean;
|
|
73
|
+
strategyUrlTemplates: Record<string, string>;
|
|
74
|
+
lastCreatedStrategyId: string | null;
|
|
75
|
+
strategiesFetched: boolean;
|
|
67
76
|
blockStates: Record<number, PerBlockState>;
|
|
68
77
|
currentRecommendationId: number | null;
|
|
69
78
|
configVersion: number;
|
|
@@ -74,7 +83,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
74
83
|
* This allows all existing code that reads `store.recommendationConfigs` to work unchanged.
|
|
75
84
|
*/
|
|
76
85
|
recommendationConfigs(state: {
|
|
77
|
-
recommendationCampaignUrls: Record<string,
|
|
86
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
78
87
|
activePredictiveAlgorithms: number[];
|
|
79
88
|
languages: Languages;
|
|
80
89
|
currencyList: {
|
|
@@ -82,6 +91,18 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
82
91
|
value: string;
|
|
83
92
|
}[];
|
|
84
93
|
filterList: FiltersResponse;
|
|
94
|
+
strategies: {
|
|
95
|
+
[x: string]: unknown;
|
|
96
|
+
strategy_id: number;
|
|
97
|
+
name: string;
|
|
98
|
+
status: string;
|
|
99
|
+
suitable_channels: string;
|
|
100
|
+
size?: (number | string) | undefined;
|
|
101
|
+
}[];
|
|
102
|
+
strategiesLoading: boolean;
|
|
103
|
+
strategyUrlTemplates: Record<string, string>;
|
|
104
|
+
lastCreatedStrategyId: string | null;
|
|
105
|
+
strategiesFetched: boolean;
|
|
85
106
|
blockStates: Record<number, PerBlockState>;
|
|
86
107
|
currentRecommendationId: number | null;
|
|
87
108
|
configVersion: number;
|
|
@@ -90,7 +111,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
90
111
|
* Proxy getter: delegates to blockStates[currentRecommendationId].recommendationProducts
|
|
91
112
|
*/
|
|
92
113
|
recommendationProducts(state: {
|
|
93
|
-
recommendationCampaignUrls: Record<string,
|
|
114
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
94
115
|
activePredictiveAlgorithms: number[];
|
|
95
116
|
languages: Languages;
|
|
96
117
|
currencyList: {
|
|
@@ -98,6 +119,18 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
98
119
|
value: string;
|
|
99
120
|
}[];
|
|
100
121
|
filterList: FiltersResponse;
|
|
122
|
+
strategies: {
|
|
123
|
+
[x: string]: unknown;
|
|
124
|
+
strategy_id: number;
|
|
125
|
+
name: string;
|
|
126
|
+
status: string;
|
|
127
|
+
suitable_channels: string;
|
|
128
|
+
size?: (number | string) | undefined;
|
|
129
|
+
}[];
|
|
130
|
+
strategiesLoading: boolean;
|
|
131
|
+
strategyUrlTemplates: Record<string, string>;
|
|
132
|
+
lastCreatedStrategyId: string | null;
|
|
133
|
+
strategiesFetched: boolean;
|
|
101
134
|
blockStates: Record<number, PerBlockState>;
|
|
102
135
|
currentRecommendationId: number | null;
|
|
103
136
|
configVersion: number;
|
|
@@ -106,7 +139,57 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
106
139
|
* Proxy getter: delegates to blockStates[currentRecommendationId].filterSelectionDrawerStatus
|
|
107
140
|
*/
|
|
108
141
|
filterSelectionDrawerStatus(state: {
|
|
109
|
-
recommendationCampaignUrls: Record<string,
|
|
142
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
143
|
+
activePredictiveAlgorithms: number[];
|
|
144
|
+
languages: Languages;
|
|
145
|
+
currencyList: {
|
|
146
|
+
text: string;
|
|
147
|
+
value: string;
|
|
148
|
+
}[];
|
|
149
|
+
filterList: FiltersResponse;
|
|
150
|
+
strategies: {
|
|
151
|
+
[x: string]: unknown;
|
|
152
|
+
strategy_id: number;
|
|
153
|
+
name: string;
|
|
154
|
+
status: string;
|
|
155
|
+
suitable_channels: string;
|
|
156
|
+
size?: (number | string) | undefined;
|
|
157
|
+
}[];
|
|
158
|
+
strategiesLoading: boolean;
|
|
159
|
+
strategyUrlTemplates: Record<string, string>;
|
|
160
|
+
lastCreatedStrategyId: string | null;
|
|
161
|
+
strategiesFetched: boolean;
|
|
162
|
+
blockStates: Record<number, PerBlockState>;
|
|
163
|
+
currentRecommendationId: number | null;
|
|
164
|
+
configVersion: number;
|
|
165
|
+
} & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
|
|
166
|
+
assignStrategyDrawerStatus(state: {
|
|
167
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
168
|
+
activePredictiveAlgorithms: number[];
|
|
169
|
+
languages: Languages;
|
|
170
|
+
currencyList: {
|
|
171
|
+
text: string;
|
|
172
|
+
value: string;
|
|
173
|
+
}[];
|
|
174
|
+
filterList: FiltersResponse;
|
|
175
|
+
strategies: {
|
|
176
|
+
[x: string]: unknown;
|
|
177
|
+
strategy_id: number;
|
|
178
|
+
name: string;
|
|
179
|
+
status: string;
|
|
180
|
+
suitable_channels: string;
|
|
181
|
+
size?: (number | string) | undefined;
|
|
182
|
+
}[];
|
|
183
|
+
strategiesLoading: boolean;
|
|
184
|
+
strategyUrlTemplates: Record<string, string>;
|
|
185
|
+
lastCreatedStrategyId: string | null;
|
|
186
|
+
strategiesFetched: boolean;
|
|
187
|
+
blockStates: Record<number, PerBlockState>;
|
|
188
|
+
currentRecommendationId: number | null;
|
|
189
|
+
configVersion: number;
|
|
190
|
+
} & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
|
|
191
|
+
removeStrategyModalStatus(state: {
|
|
192
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
110
193
|
activePredictiveAlgorithms: number[];
|
|
111
194
|
languages: Languages;
|
|
112
195
|
currencyList: {
|
|
@@ -114,15 +197,52 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
114
197
|
value: string;
|
|
115
198
|
}[];
|
|
116
199
|
filterList: FiltersResponse;
|
|
200
|
+
strategies: {
|
|
201
|
+
[x: string]: unknown;
|
|
202
|
+
strategy_id: number;
|
|
203
|
+
name: string;
|
|
204
|
+
status: string;
|
|
205
|
+
suitable_channels: string;
|
|
206
|
+
size?: (number | string) | undefined;
|
|
207
|
+
}[];
|
|
208
|
+
strategiesLoading: boolean;
|
|
209
|
+
strategyUrlTemplates: Record<string, string>;
|
|
210
|
+
lastCreatedStrategyId: string | null;
|
|
211
|
+
strategiesFetched: boolean;
|
|
117
212
|
blockStates: Record<number, PerBlockState>;
|
|
118
213
|
currentRecommendationId: number | null;
|
|
119
214
|
configVersion: number;
|
|
120
215
|
} & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
|
|
216
|
+
assignedStrategy(state: {
|
|
217
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
218
|
+
activePredictiveAlgorithms: number[];
|
|
219
|
+
languages: Languages;
|
|
220
|
+
currencyList: {
|
|
221
|
+
text: string;
|
|
222
|
+
value: string;
|
|
223
|
+
}[];
|
|
224
|
+
filterList: FiltersResponse;
|
|
225
|
+
strategies: {
|
|
226
|
+
[x: string]: unknown;
|
|
227
|
+
strategy_id: number;
|
|
228
|
+
name: string;
|
|
229
|
+
status: string;
|
|
230
|
+
suitable_channels: string;
|
|
231
|
+
size?: (number | string) | undefined;
|
|
232
|
+
}[];
|
|
233
|
+
strategiesLoading: boolean;
|
|
234
|
+
strategyUrlTemplates: Record<string, string>;
|
|
235
|
+
lastCreatedStrategyId: string | null;
|
|
236
|
+
strategiesFetched: boolean;
|
|
237
|
+
blockStates: Record<number, PerBlockState>;
|
|
238
|
+
currentRecommendationId: number | null;
|
|
239
|
+
configVersion: number;
|
|
240
|
+
} & import("pinia").PiniaCustomStateProperties<StoreState>): RrsStrategy | null;
|
|
121
241
|
/**
|
|
122
242
|
* Proxy getter: delegates to blockStates[currentRecommendationId].filterStatus
|
|
123
243
|
*/
|
|
124
244
|
filterStatus(state: {
|
|
125
|
-
recommendationCampaignUrls: Record<string,
|
|
245
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
126
246
|
activePredictiveAlgorithms: number[];
|
|
127
247
|
languages: Languages;
|
|
128
248
|
currencyList: {
|
|
@@ -130,6 +250,18 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
130
250
|
value: string;
|
|
131
251
|
}[];
|
|
132
252
|
filterList: FiltersResponse;
|
|
253
|
+
strategies: {
|
|
254
|
+
[x: string]: unknown;
|
|
255
|
+
strategy_id: number;
|
|
256
|
+
name: string;
|
|
257
|
+
status: string;
|
|
258
|
+
suitable_channels: string;
|
|
259
|
+
size?: (number | string) | undefined;
|
|
260
|
+
}[];
|
|
261
|
+
strategiesLoading: boolean;
|
|
262
|
+
strategyUrlTemplates: Record<string, string>;
|
|
263
|
+
lastCreatedStrategyId: string | null;
|
|
264
|
+
strategiesFetched: boolean;
|
|
133
265
|
blockStates: Record<number, PerBlockState>;
|
|
134
266
|
currentRecommendationId: number | null;
|
|
135
267
|
configVersion: number;
|
|
@@ -138,7 +270,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
138
270
|
* Proxy getter: delegates to blockStates[currentRecommendationId].filterGroup
|
|
139
271
|
*/
|
|
140
272
|
filterGroup(state: {
|
|
141
|
-
recommendationCampaignUrls: Record<string,
|
|
273
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
142
274
|
activePredictiveAlgorithms: number[];
|
|
143
275
|
languages: Languages;
|
|
144
276
|
currencyList: {
|
|
@@ -146,6 +278,18 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
146
278
|
value: string;
|
|
147
279
|
}[];
|
|
148
280
|
filterList: FiltersResponse;
|
|
281
|
+
strategies: {
|
|
282
|
+
[x: string]: unknown;
|
|
283
|
+
strategy_id: number;
|
|
284
|
+
name: string;
|
|
285
|
+
status: string;
|
|
286
|
+
suitable_channels: string;
|
|
287
|
+
size?: (number | string) | undefined;
|
|
288
|
+
}[];
|
|
289
|
+
strategiesLoading: boolean;
|
|
290
|
+
strategyUrlTemplates: Record<string, string>;
|
|
291
|
+
lastCreatedStrategyId: string | null;
|
|
292
|
+
strategiesFetched: boolean;
|
|
149
293
|
blockStates: Record<number, PerBlockState>;
|
|
150
294
|
currentRecommendationId: number | null;
|
|
151
295
|
configVersion: number;
|
|
@@ -155,7 +299,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
155
299
|
getFilterGroupCount(): number;
|
|
156
300
|
getUniqueFilterGroups(): number[];
|
|
157
301
|
getActivePredictiveAlgorithms: (state: {
|
|
158
|
-
recommendationCampaignUrls: Record<string,
|
|
302
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
159
303
|
activePredictiveAlgorithms: number[];
|
|
160
304
|
languages: Languages;
|
|
161
305
|
currencyList: {
|
|
@@ -163,6 +307,18 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
163
307
|
value: string;
|
|
164
308
|
}[];
|
|
165
309
|
filterList: FiltersResponse;
|
|
310
|
+
strategies: {
|
|
311
|
+
[x: string]: unknown;
|
|
312
|
+
strategy_id: number;
|
|
313
|
+
name: string;
|
|
314
|
+
status: string;
|
|
315
|
+
suitable_channels: string;
|
|
316
|
+
size?: (number | string) | undefined;
|
|
317
|
+
}[];
|
|
318
|
+
strategiesLoading: boolean;
|
|
319
|
+
strategyUrlTemplates: Record<string, string>;
|
|
320
|
+
lastCreatedStrategyId: string | null;
|
|
321
|
+
strategiesFetched: boolean;
|
|
166
322
|
blockStates: Record<number, PerBlockState>;
|
|
167
323
|
currentRecommendationId: number | null;
|
|
168
324
|
configVersion: number;
|
|
@@ -171,7 +327,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
171
327
|
value: string;
|
|
172
328
|
}[];
|
|
173
329
|
getLanguages: (state: {
|
|
174
|
-
recommendationCampaignUrls: Record<string,
|
|
330
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
175
331
|
activePredictiveAlgorithms: number[];
|
|
176
332
|
languages: Languages;
|
|
177
333
|
currencyList: {
|
|
@@ -179,6 +335,18 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
179
335
|
value: string;
|
|
180
336
|
}[];
|
|
181
337
|
filterList: FiltersResponse;
|
|
338
|
+
strategies: {
|
|
339
|
+
[x: string]: unknown;
|
|
340
|
+
strategy_id: number;
|
|
341
|
+
name: string;
|
|
342
|
+
status: string;
|
|
343
|
+
suitable_channels: string;
|
|
344
|
+
size?: (number | string) | undefined;
|
|
345
|
+
}[];
|
|
346
|
+
strategiesLoading: boolean;
|
|
347
|
+
strategyUrlTemplates: Record<string, string>;
|
|
348
|
+
lastCreatedStrategyId: string | null;
|
|
349
|
+
strategiesFetched: boolean;
|
|
182
350
|
blockStates: Record<number, PerBlockState>;
|
|
183
351
|
currentRecommendationId: number | null;
|
|
184
352
|
configVersion: number;
|
|
@@ -187,7 +355,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
187
355
|
value: string;
|
|
188
356
|
}[];
|
|
189
357
|
getCurrencySymbolList: (state: {
|
|
190
|
-
recommendationCampaignUrls: Record<string,
|
|
358
|
+
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
191
359
|
activePredictiveAlgorithms: number[];
|
|
192
360
|
languages: Languages;
|
|
193
361
|
currencyList: {
|
|
@@ -195,6 +363,18 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
195
363
|
value: string;
|
|
196
364
|
}[];
|
|
197
365
|
filterList: FiltersResponse;
|
|
366
|
+
strategies: {
|
|
367
|
+
[x: string]: unknown;
|
|
368
|
+
strategy_id: number;
|
|
369
|
+
name: string;
|
|
370
|
+
status: string;
|
|
371
|
+
suitable_channels: string;
|
|
372
|
+
size?: (number | string) | undefined;
|
|
373
|
+
}[];
|
|
374
|
+
strategiesLoading: boolean;
|
|
375
|
+
strategyUrlTemplates: Record<string, string>;
|
|
376
|
+
lastCreatedStrategyId: string | null;
|
|
377
|
+
strategiesFetched: boolean;
|
|
198
378
|
blockStates: Record<number, PerBlockState>;
|
|
199
379
|
currentRecommendationId: number | null;
|
|
200
380
|
configVersion: number;
|
|
@@ -272,6 +452,39 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
272
452
|
* to the snapshot taken when the drawer was opened.
|
|
273
453
|
*/
|
|
274
454
|
cancelFilterDrawer(): void;
|
|
455
|
+
openAssignStrategyDrawer(): void;
|
|
456
|
+
closeAssignStrategyDrawer(): void;
|
|
457
|
+
openRemoveStrategyModal(): void;
|
|
458
|
+
closeRemoveStrategyModal(): void;
|
|
459
|
+
fetchStrategies(): Promise<void>;
|
|
460
|
+
invalidateStrategies(): void;
|
|
461
|
+
/**
|
|
462
|
+
* Opens a Smart Recommender strategy page in a new tab and refreshes the list every time
|
|
463
|
+
* the user comes back. `visibilitychange` covers the tab case; `focus` covers the page
|
|
464
|
+
* landing in a separate window, where this document never goes hidden.
|
|
465
|
+
*
|
|
466
|
+
* Deliberately NOT one-shot: the strategy tab stays open, so a user can create a second
|
|
467
|
+
* strategy in it and come back again — a listener that disarmed on the first return would
|
|
468
|
+
* leave that one missing from the list. Armed only once the user actually opens a strategy
|
|
469
|
+
* page, so anyone who never does pays nothing.
|
|
470
|
+
*/
|
|
471
|
+
_armStrategyPageReturn(url: string): void;
|
|
472
|
+
/** Lets the editor tear the return listeners down when it unmounts. */
|
|
473
|
+
disposeStrategyPageReturn(): void;
|
|
474
|
+
/**
|
|
475
|
+
* Opens Smart Recommender's strategy creation page. Every return refreshes the list, and any
|
|
476
|
+
* strategy that appeared since the page was opened is remembered so the drawer preselects it —
|
|
477
|
+
* including a second one created without ever closing that tab.
|
|
478
|
+
*/
|
|
479
|
+
openStrategyCreation(): void;
|
|
480
|
+
/**
|
|
481
|
+
* Opens the strategy's edit page. Every return refreshes the list so the block reflects the
|
|
482
|
+
* edited configuration; nothing is preselected because the strategy is already assigned.
|
|
483
|
+
*/
|
|
484
|
+
openStrategyEdit(strategyId: string | number): void;
|
|
485
|
+
resolveStrategyUrlTemplate(strategy: RrsStrategy, currency: string): Promise<string>;
|
|
486
|
+
assignStrategy(strategy: RrsStrategy): void;
|
|
487
|
+
removeStrategy(): void;
|
|
275
488
|
fetchRecommendationCreateData(): Promise<void>;
|
|
276
489
|
fetchRecommendationFilters(): Promise<void>;
|
|
277
490
|
addFilterGroup(filterGroup: number): void;
|
|
@@ -288,5 +501,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
288
501
|
hasInvalidBlock(): boolean;
|
|
289
502
|
fetchRecommendationProducts(): Promise<void>;
|
|
290
503
|
_doFetchProducts(): Promise<void>;
|
|
504
|
+
_doFetchStrategyProducts(blockId: number): Promise<void>;
|
|
505
|
+
_setBlockProducts(blockId: number, products: RecommendationProduct[], size: number): void;
|
|
291
506
|
}>;
|
|
292
507
|
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const DEFAULT_TITLE_TEXT = "You May Also Like!";
|
|
2
|
+
export declare const DEFAULT_TITLE_PARAGRAPH: string;
|
|
3
|
+
/**
|
|
4
|
+
* Builds the two block-level title rows: the title itself and the spacer below it.
|
|
5
|
+
* Both carry the same `recommendation-attribute-row` tagging a card attribute row has,
|
|
6
|
+
* so the Card Composition toggle hides the pair together and the compiler's
|
|
7
|
+
* `[data-visibility="0"]` sweep drops both — no leading gap when the title is off.
|
|
8
|
+
* @param paragraphHtml - Full `<p>` markup rendered inside the title cell
|
|
9
|
+
* @param visible - Whether the title starts visible
|
|
10
|
+
* @param spacerHeightPx - Height of the spacer row below the title
|
|
11
|
+
* @returns HTML string with the title row followed by its spacer row
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildTitleRows(paragraphHtml?: string, visible?: boolean, spacerHeightPx?: number): string;
|
|
@@ -82,6 +82,7 @@ export interface RecommendationNodeConfig {
|
|
|
82
82
|
* Uses existing Filter interface from recommendation types
|
|
83
83
|
*/
|
|
84
84
|
filters: Filter[];
|
|
85
|
+
strategyId: string;
|
|
85
86
|
/**
|
|
86
87
|
* Layout orientation
|
|
87
88
|
* - 'grid': Products in a grid, attributes aligned across products
|
|
@@ -138,6 +139,12 @@ export interface RecommendationNodeConfig {
|
|
|
138
139
|
* Keys are ATTR_PRODUCT_* constants
|
|
139
140
|
*/
|
|
140
141
|
visibility: Record<string, boolean>;
|
|
142
|
+
/**
|
|
143
|
+
* Snapshot of the block title's row markup before it's removed.
|
|
144
|
+
* Restored verbatim when the title is re-enabled.
|
|
145
|
+
* @default ''
|
|
146
|
+
*/
|
|
147
|
+
previousTitleHtml: string;
|
|
141
148
|
/**
|
|
142
149
|
* Omnibus price text configuration
|
|
143
150
|
* For EU Omnibus Directive compliance
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DocumentModifier } from '../services/configService';
|
|
2
|
+
import type { PartialNodeConfig } from '../types/nodeConfig';
|
|
3
|
+
import type { RecommendationProduct } from '@@/Types/recommendation';
|
|
4
|
+
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
5
|
+
interface ConfigWriterApi {
|
|
6
|
+
getDocumentModifier: () => DocumentModifier;
|
|
7
|
+
getDocumentRootHtmlNode: () => ImmutableHtmlNode;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Keeps a document handle alive for writes the settings panel can no longer make.
|
|
11
|
+
* Deliberately not cleared on deselect — that is the exact moment the handle is
|
|
12
|
+
* needed. It is replaced on the next render, and goes stale only if the editor
|
|
13
|
+
* itself is torn down.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerNodeConfigWriter(api: ConfigWriterApi): void;
|
|
16
|
+
/**
|
|
17
|
+
* Commits a config change and its product re-render straight to the document,
|
|
18
|
+
* bypassing the settings panel.
|
|
19
|
+
*
|
|
20
|
+
* Host-rendered UI (the remove-strategy modal) lives outside `ui-editor`, and
|
|
21
|
+
* Stripo deselects the block on the first click that lands there — destroying the
|
|
22
|
+
* control that normally does both, before the store change even happens.
|
|
23
|
+
*
|
|
24
|
+
* Mirrors the control's regenerate routine so config and cards land in ONE undo
|
|
25
|
+
* entry, and so partner-managed blocks keep their hand-authored cells.
|
|
26
|
+
* @param description - labels the undo entry only when there are no cards to
|
|
27
|
+
* re-render; the product helpers label their own batch.
|
|
28
|
+
* @returns whether the write reached a node
|
|
29
|
+
*/
|
|
30
|
+
export declare function commitBlockChangeOutsidePanel(blockId: number, updates: PartialNodeConfig, products: RecommendationProduct[], description: string): boolean;
|
|
31
|
+
export {};
|
|
@@ -13,16 +13,20 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const RECOMMENDATION_BLOCK_SELECTOR = ".recommendation-block-v2";
|
|
15
15
|
export declare const RECOMMENDATION_PRODUCT_ROW_SELECTOR = ".recommendation-product-row";
|
|
16
|
-
interface QueryableNode {
|
|
16
|
+
export interface QueryableNode {
|
|
17
17
|
querySelector(selector: string): unknown;
|
|
18
18
|
}
|
|
19
19
|
export interface QueryableRoot {
|
|
20
20
|
querySelectorAll(selector: string): Iterable<QueryableNode>;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Live-vs-ghost discriminator for a single `.recommendation-block-v2` node.
|
|
24
|
+
* Single home for the (provisional) heuristic described above.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isLiveRecommendationBlock(block: QueryableNode): boolean;
|
|
22
27
|
/**
|
|
23
28
|
* Counts the live recommendation blocks reachable from `root`. Works on the
|
|
24
29
|
* editor's `ImmutableHtmlNode` document root (the `onCreated` drop / duplicate
|
|
25
30
|
* paths) and on any DOM-like root exposing `querySelectorAll`.
|
|
26
31
|
*/
|
|
27
32
|
export declare function countLiveRecommendationBlocks(root: QueryableRoot): number;
|
|
28
|
-
export {};
|
|
@@ -56,6 +56,9 @@ interface ButtonProps {
|
|
|
56
56
|
name: string;
|
|
57
57
|
label: string;
|
|
58
58
|
id?: string;
|
|
59
|
+
className?: string;
|
|
60
|
+
icon?: string;
|
|
61
|
+
disabled?: boolean;
|
|
59
62
|
}
|
|
60
63
|
/**
|
|
61
64
|
* Common control for all blocks which includes common UI Elements.
|
|
@@ -116,7 +119,7 @@ export declare abstract class CommonControl extends Control {
|
|
|
116
119
|
icon?: string;
|
|
117
120
|
}): string;
|
|
118
121
|
_GuRadioButton({ name, buttons, id }: RadioButtonProps): string;
|
|
119
|
-
_GuButton({ name, label, id }: ButtonProps): string;
|
|
122
|
+
_GuButton({ name, label, id, className, icon, disabled }: ButtonProps): string;
|
|
120
123
|
_GuIcon({ src, className }: IconProps): string;
|
|
121
124
|
/**
|
|
122
125
|
*
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { InitialResponse, FiltersResponse, RecommendationProduct, RecommendationProductsParams } from '@@/Types/recommendation';
|
|
1
|
+
import type { InitialResponse, FiltersResponse, RecommendationProduct, RecommendationProductsParams, RrsEndpointGenerateResponse, RrsStrategy } from '@@/Types/recommendation';
|
|
2
2
|
export declare const useRecommendationApi: () => {
|
|
3
3
|
fetchRecommendationCreateData: () => Promise<InitialResponse>;
|
|
4
4
|
fetchRecommendationFilters: () => Promise<FiltersResponse>;
|
|
5
5
|
fetchRecommendationProducts: (strategy: string, params: RecommendationProductsParams) => Promise<RecommendationProduct[]>;
|
|
6
|
+
fetchRecommendationProductsByUrl: (url: string) => Promise<RecommendationProduct[]>;
|
|
7
|
+
fetchRecommendationStrategies: () => Promise<RrsStrategy[]>;
|
|
8
|
+
generateStrategyEndpoint: (strategy: RrsStrategy, currency: string) => Promise<RrsEndpointGenerateResponse | null>;
|
|
6
9
|
};
|
|
@@ -104,6 +104,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
104
104
|
autosave: boolean;
|
|
105
105
|
allowlistEnabled: boolean;
|
|
106
106
|
linkTrackingIds: boolean;
|
|
107
|
+
reusableRecommendationStrategy: boolean;
|
|
107
108
|
};
|
|
108
109
|
blocks: {
|
|
109
110
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -244,6 +245,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
244
245
|
autosave: boolean;
|
|
245
246
|
allowlistEnabled: boolean;
|
|
246
247
|
linkTrackingIds: boolean;
|
|
248
|
+
reusableRecommendationStrategy: boolean;
|
|
247
249
|
};
|
|
248
250
|
blocks: {
|
|
249
251
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -384,6 +386,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
384
386
|
autosave: boolean;
|
|
385
387
|
allowlistEnabled: boolean;
|
|
386
388
|
linkTrackingIds: boolean;
|
|
389
|
+
reusableRecommendationStrategy: boolean;
|
|
387
390
|
};
|
|
388
391
|
blocks: {
|
|
389
392
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -524,6 +527,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
524
527
|
autosave: boolean;
|
|
525
528
|
allowlistEnabled: boolean;
|
|
526
529
|
linkTrackingIds: boolean;
|
|
530
|
+
reusableRecommendationStrategy: boolean;
|
|
527
531
|
};
|
|
528
532
|
blocks: {
|
|
529
533
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -664,6 +668,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
664
668
|
autosave: boolean;
|
|
665
669
|
allowlistEnabled: boolean;
|
|
666
670
|
linkTrackingIds: boolean;
|
|
671
|
+
reusableRecommendationStrategy: boolean;
|
|
667
672
|
};
|
|
668
673
|
blocks: {
|
|
669
674
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -804,6 +809,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
804
809
|
autosave: boolean;
|
|
805
810
|
allowlistEnabled: boolean;
|
|
806
811
|
linkTrackingIds: boolean;
|
|
812
|
+
reusableRecommendationStrategy: boolean;
|
|
807
813
|
};
|
|
808
814
|
blocks: {
|
|
809
815
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -944,6 +950,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
944
950
|
autosave: boolean;
|
|
945
951
|
allowlistEnabled: boolean;
|
|
946
952
|
linkTrackingIds: boolean;
|
|
953
|
+
reusableRecommendationStrategy: boolean;
|
|
947
954
|
};
|
|
948
955
|
blocks: {
|
|
949
956
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1084,6 +1091,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1084
1091
|
autosave: boolean;
|
|
1085
1092
|
allowlistEnabled: boolean;
|
|
1086
1093
|
linkTrackingIds: boolean;
|
|
1094
|
+
reusableRecommendationStrategy: boolean;
|
|
1087
1095
|
};
|
|
1088
1096
|
blocks: {
|
|
1089
1097
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1224,6 +1232,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1224
1232
|
autosave: boolean;
|
|
1225
1233
|
allowlistEnabled: boolean;
|
|
1226
1234
|
linkTrackingIds: boolean;
|
|
1235
|
+
reusableRecommendationStrategy: boolean;
|
|
1227
1236
|
};
|
|
1228
1237
|
blocks: {
|
|
1229
1238
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1364,6 +1373,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1364
1373
|
autosave: boolean;
|
|
1365
1374
|
allowlistEnabled: boolean;
|
|
1366
1375
|
linkTrackingIds: boolean;
|
|
1376
|
+
reusableRecommendationStrategy: boolean;
|
|
1367
1377
|
};
|
|
1368
1378
|
blocks: {
|
|
1369
1379
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1504,6 +1514,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1504
1514
|
autosave: boolean;
|
|
1505
1515
|
allowlistEnabled: boolean;
|
|
1506
1516
|
linkTrackingIds: boolean;
|
|
1517
|
+
reusableRecommendationStrategy: boolean;
|
|
1507
1518
|
};
|
|
1508
1519
|
blocks: {
|
|
1509
1520
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1644,6 +1655,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1644
1655
|
autosave: boolean;
|
|
1645
1656
|
allowlistEnabled: boolean;
|
|
1646
1657
|
linkTrackingIds: boolean;
|
|
1658
|
+
reusableRecommendationStrategy: boolean;
|
|
1647
1659
|
};
|
|
1648
1660
|
blocks: {
|
|
1649
1661
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1784,6 +1796,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1784
1796
|
autosave: boolean;
|
|
1785
1797
|
allowlistEnabled: boolean;
|
|
1786
1798
|
linkTrackingIds: boolean;
|
|
1799
|
+
reusableRecommendationStrategy: boolean;
|
|
1787
1800
|
};
|
|
1788
1801
|
blocks: {
|
|
1789
1802
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1924,6 +1937,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1924
1937
|
autosave: boolean;
|
|
1925
1938
|
allowlistEnabled: boolean;
|
|
1926
1939
|
linkTrackingIds: boolean;
|
|
1940
|
+
reusableRecommendationStrategy: boolean;
|
|
1927
1941
|
};
|
|
1928
1942
|
blocks: {
|
|
1929
1943
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2064,6 +2078,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2064
2078
|
autosave: boolean;
|
|
2065
2079
|
allowlistEnabled: boolean;
|
|
2066
2080
|
linkTrackingIds: boolean;
|
|
2081
|
+
reusableRecommendationStrategy: boolean;
|
|
2067
2082
|
};
|
|
2068
2083
|
blocks: {
|
|
2069
2084
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2204,6 +2219,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2204
2219
|
autosave: boolean;
|
|
2205
2220
|
allowlistEnabled: boolean;
|
|
2206
2221
|
linkTrackingIds: boolean;
|
|
2222
|
+
reusableRecommendationStrategy: boolean;
|
|
2207
2223
|
};
|
|
2208
2224
|
blocks: {
|
|
2209
2225
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2344,6 +2360,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2344
2360
|
autosave: boolean;
|
|
2345
2361
|
allowlistEnabled: boolean;
|
|
2346
2362
|
linkTrackingIds: boolean;
|
|
2363
|
+
reusableRecommendationStrategy: boolean;
|
|
2347
2364
|
};
|
|
2348
2365
|
blocks: {
|
|
2349
2366
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2486,6 +2503,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2486
2503
|
autosave: boolean;
|
|
2487
2504
|
allowlistEnabled: boolean;
|
|
2488
2505
|
linkTrackingIds: boolean;
|
|
2506
|
+
reusableRecommendationStrategy: boolean;
|
|
2489
2507
|
};
|
|
2490
2508
|
blocks: {
|
|
2491
2509
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|