@useinsider/guido 3.17.0-beta.668ca65 → 3.17.0-beta.a18fbda
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 +5 -6
- package/dist/@types/config/schemas.js +6 -7
- package/dist/components/Guido.vue.js +8 -8
- package/dist/components/Guido.vue2.js +83 -83
- package/dist/components/organisms/header/EditorActions.vue.js +1 -1
- package/dist/components/organisms/header/EditorActions.vue2.js +54 -41
- package/dist/composables/useActionsApi.js +82 -67
- package/dist/composables/useAutoSave.js +31 -26
- package/dist/composables/useCustomInterfaceAppearance.js +38 -52
- package/dist/composables/useEditorLock.js +20 -0
- package/dist/composables/useGuidoStateBridge.js +37 -31
- package/dist/composables/useRecommendation.js +34 -41
- package/dist/composables/useSave.js +39 -36
- package/dist/config/migrator/recommendation/settingsMapper.js +17 -17
- package/dist/config/migrator/recommendationMigrator.js +4 -5
- package/dist/enums/academy.js +1 -2
- package/dist/enums/date.js +3 -5
- package/dist/enums/extensions/recommendationBlock.js +1 -3
- package/dist/extensions/Blocks/Recommendation/block.js +21 -26
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +34 -34
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +95 -96
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +166 -162
- package/dist/extensions/Blocks/Recommendation/services/configService.js +35 -35
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +79 -165
- package/dist/extensions/Blocks/common-control.js +19 -22
- package/dist/guido.css +1 -1
- package/dist/services/recommendationApi.js +30 -69
- package/dist/src/@types/config/schemas.d.ts +0 -2
- package/dist/src/composables/useConfig.d.ts +0 -2
- package/dist/src/composables/useEditorLock.d.ts +10 -0
- package/dist/src/composables/useRecommendation.d.ts +0 -1
- package/dist/src/enums/academy.d.ts +0 -1
- package/dist/src/enums/date.d.ts +0 -1
- package/dist/src/enums/extensions/recommendationBlock.d.ts +0 -2
- package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +6 -2
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +4 -10
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +10 -150
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -1
- package/dist/src/extensions/Blocks/common-control.d.ts +1 -4
- package/dist/src/services/recommendationApi.d.ts +1 -4
- package/dist/src/stores/config.d.ts +0 -18
- package/dist/src/stores/save-as-template.d.ts +3 -4
- package/dist/utils/dateUtil.js +10 -23
- package/dist/utils/templatePreparation.js +34 -35
- package/package.json +2 -3
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +0 -21
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +0 -105
- package/dist/components/organisms/extensions/recommendation/StrategyInfoBoxContent.vue.js +0 -19
- package/dist/components/organisms/extensions/recommendation/StrategyInfoBoxContent.vue2.js +0 -62
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +0 -124
- package/dist/src/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.d.ts +0 -3
- package/dist/src/components/organisms/extensions/recommendation/StrategyInfoBoxContent.vue.d.ts +0 -15
- package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +0 -16
- package/dist/src/mock/api/recommendation-strategies.d.ts +0 -2
- package/dist/static/assets/icons/line-change.svg.js +0 -5
- package/dist/static/assets/icons/line-delete.svg.js +0 -5
- package/dist/static/assets/icons/line-plus.svg.js +0 -5
- package/dist/static/styles/components/recommendation-strategy.css.js +0 -155
|
@@ -1,91 +1,52 @@
|
|
|
1
|
-
import { useHttp as
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
4
|
-
(
|
|
5
|
-
attributeName:
|
|
6
|
-
attributeJs:
|
|
7
|
-
attributeType:
|
|
8
|
-
type:
|
|
9
|
-
displayName:
|
|
10
|
-
isFilterable:
|
|
11
|
-
},
|
|
1
|
+
import { useHttp as d } from "../composables/useHttp.js";
|
|
2
|
+
import { QUERY_PARAMS as l, URLS as u } from "../enums/extensions/recommendationBlock.js";
|
|
3
|
+
const R = (o) => o.reduce(
|
|
4
|
+
(a, t, s) => (a[s] = {
|
|
5
|
+
attributeName: t.attributeName,
|
|
6
|
+
attributeJs: t.attributeJs,
|
|
7
|
+
attributeType: t.attributeType,
|
|
8
|
+
type: t.type,
|
|
9
|
+
displayName: t.displayName,
|
|
10
|
+
isFilterable: t.isFilterable
|
|
11
|
+
}, a),
|
|
12
12
|
{}
|
|
13
|
-
),
|
|
14
|
-
const { get:
|
|
13
|
+
), f = () => {
|
|
14
|
+
const { get: o } = d(), { get: a } = d({ headers: {} }), t = "6KcLM9TwheVB1mgK";
|
|
15
15
|
return {
|
|
16
16
|
fetchRecommendationCreateData: async () => {
|
|
17
17
|
try {
|
|
18
|
-
return (await
|
|
18
|
+
return (await o("/newsletter/recommendations/create-data")).data;
|
|
19
19
|
} catch (e) {
|
|
20
20
|
throw console.error("fetchUserModalState error:", e), e;
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
fetchRecommendationFilters: async () => {
|
|
24
24
|
try {
|
|
25
|
-
const { data: e } = await
|
|
26
|
-
|
|
27
|
-
),
|
|
28
|
-
return R(
|
|
25
|
+
const { data: e } = await o(
|
|
26
|
+
u.PRODUCT_ATTRIBUTES_PATH
|
|
27
|
+
), n = Array.isArray(e) ? e : (e == null ? void 0 : e.data) ?? [];
|
|
28
|
+
return R(n);
|
|
29
29
|
} catch (e) {
|
|
30
30
|
throw console.error("fetchRecommendationFilters error:", e), e;
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
|
-
fetchRecommendationProducts: async (e,
|
|
34
|
-
var
|
|
33
|
+
fetchRecommendationProducts: async (e, n) => {
|
|
34
|
+
var i;
|
|
35
35
|
try {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
console.debug("🏁 Recommendation API Query:",
|
|
40
|
-
const
|
|
41
|
-
`${
|
|
36
|
+
const r = new URLSearchParams(Object.entries(n));
|
|
37
|
+
r.set(l.CLIENT_ID, t);
|
|
38
|
+
const m = decodeURIComponent(r.toString());
|
|
39
|
+
console.debug("🏁 Recommendation API Query:", m);
|
|
40
|
+
const c = await a(
|
|
41
|
+
`${u.RECOMMENDATION_API_URL}/v2/${e}?${m}`
|
|
42
42
|
);
|
|
43
|
-
return ((
|
|
44
|
-
} catch (
|
|
45
|
-
throw console.error("fetchRecommendationProducts error:",
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
fetchRecommendationProductsByUrl: async (e) => {
|
|
49
|
-
var o;
|
|
50
|
-
try {
|
|
51
|
-
const t = new RegExp(`[?&]${u.CLIENT_ID}=`).test(e), n = e.includes("?") ? "&" : "?", d = t ? e : `${e}${n}${u.CLIENT_ID}=${i}`, a = await r(
|
|
52
|
-
d
|
|
53
|
-
);
|
|
54
|
-
return ((o = a == null ? void 0 : a.data) == null ? void 0 : o.data) ?? [];
|
|
55
|
-
} catch (t) {
|
|
56
|
-
return console.error("fetchRecommendationProductsByUrl error:", t), [];
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
fetchRecommendationStrategies: async () => {
|
|
60
|
-
try {
|
|
61
|
-
const { data: e } = await c(
|
|
62
|
-
`${m.RECOMMENDATION_STRATEGIES_PATH}?filters=${encodeURIComponent(y)}`
|
|
63
|
-
);
|
|
64
|
-
return Array.isArray(e) ? e : (e == null ? void 0 : e.data) ?? [];
|
|
65
|
-
} catch (e) {
|
|
66
|
-
return console.error("fetchRecommendationStrategies error:", e), [];
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
generateStrategyEndpoint: async (e, o) => {
|
|
70
|
-
try {
|
|
71
|
-
const { data: t } = await s(
|
|
72
|
-
`${m.RECOMMENDATION_STRATEGIES_PATH}/endpoint-generate`,
|
|
73
|
-
{
|
|
74
|
-
campaignId: 0,
|
|
75
|
-
pageTypes: [],
|
|
76
|
-
isPreviewer: !1,
|
|
77
|
-
strategy: e,
|
|
78
|
-
userId: "",
|
|
79
|
-
currency: o
|
|
80
|
-
}
|
|
81
|
-
);
|
|
82
|
-
return !t || typeof t != "object" || !("full_path" in t || "data" in t) ? (console.error("generateStrategyEndpoint unexpected response shape:", t), null) : "full_path" in t ? t : t.data;
|
|
83
|
-
} catch (t) {
|
|
84
|
-
return console.error("generateStrategyEndpoint error:", t), null;
|
|
43
|
+
return ((i = c == null ? void 0 : c.data) == null ? void 0 : i.data) ?? [];
|
|
44
|
+
} catch (r) {
|
|
45
|
+
throw console.error("fetchRecommendationProducts error:", r), r;
|
|
85
46
|
}
|
|
86
47
|
}
|
|
87
48
|
};
|
|
88
49
|
};
|
|
89
50
|
export {
|
|
90
|
-
|
|
51
|
+
f as useRecommendationApi
|
|
91
52
|
};
|
|
@@ -395,7 +395,6 @@ export declare const FeaturesSchema: v.ObjectSchema<{
|
|
|
395
395
|
readonly allowlistEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
396
396
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
397
397
|
readonly linkTrackingIds: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
398
|
-
readonly reusableRecommendationStrategy: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
399
398
|
}, undefined>;
|
|
400
399
|
/**
|
|
401
400
|
* Default block types available in Stripo
|
|
@@ -795,7 +794,6 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
|
|
|
795
794
|
readonly allowlistEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
796
795
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
797
796
|
readonly linkTrackingIds: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
798
|
-
readonly reusableRecommendationStrategy: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
799
797
|
}, undefined>, {}>;
|
|
800
798
|
/** Block configuration */
|
|
801
799
|
readonly blocks: v.OptionalSchema<v.ObjectSchema<{
|
|
@@ -99,7 +99,6 @@ export declare const useConfig: () => {
|
|
|
99
99
|
autosave: boolean;
|
|
100
100
|
allowlistEnabled: boolean;
|
|
101
101
|
linkTrackingIds: boolean;
|
|
102
|
-
reusableRecommendationStrategy: boolean;
|
|
103
102
|
};
|
|
104
103
|
blocks: {
|
|
105
104
|
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")[];
|
|
@@ -234,7 +233,6 @@ export declare const useConfig: () => {
|
|
|
234
233
|
autosave: boolean;
|
|
235
234
|
allowlistEnabled: boolean;
|
|
236
235
|
linkTrackingIds: boolean;
|
|
237
|
-
reusableRecommendationStrategy: boolean;
|
|
238
236
|
} | null>;
|
|
239
237
|
blocks: import("vue").ComputedRef<{
|
|
240
238
|
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")[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const isEditorBusy: () => boolean;
|
|
2
|
+
export declare const beginMount: () => number;
|
|
3
|
+
export declare const isCurrentMount: (generation: number) => boolean;
|
|
4
|
+
export declare const runExclusive: <T>(task: () => Promise<T>) => Promise<T>;
|
|
5
|
+
export declare const useEditorLock: () => {
|
|
6
|
+
runExclusive: <T>(task: () => Promise<T>) => Promise<T>;
|
|
7
|
+
isEditorBusy: () => boolean;
|
|
8
|
+
beginMount: () => number;
|
|
9
|
+
isCurrentMount: (generation: number) => boolean;
|
|
10
|
+
};
|
|
@@ -18,7 +18,6 @@ export declare const useRecommendation: () => {
|
|
|
18
18
|
getRecommendationCampaignData: (id: string) => CampaignData;
|
|
19
19
|
buildCampaignUrl: (campaignId: string, overrides?: {
|
|
20
20
|
strategy: string;
|
|
21
|
-
strategyId: string;
|
|
22
21
|
language: string;
|
|
23
22
|
currencyCode: string;
|
|
24
23
|
size: string;
|
|
@@ -8,6 +8,5 @@ export declare const ACADEMY_LINKS: {
|
|
|
8
8
|
readonly EMAIL_EDITOR: "https://academy.insiderone.com/docs/email-drag-and-drop-editor";
|
|
9
9
|
readonly GLOBAL_UNSUBSCRIBE: "https://academy.insiderone.com/docs/global-unsubscribe-preference-center";
|
|
10
10
|
readonly AMP_FOR_EMAILS: "https://academy.insiderone.com/docs/amp-for-emails";
|
|
11
|
-
readonly EMAIL_RECOMMENDATION_BLOCK: "https://academy.insiderone.com/docs/new-editor-email-recommendation-block";
|
|
12
11
|
};
|
|
13
12
|
export type AcademyLinkKey = keyof typeof ACADEMY_LINKS;
|
package/dist/src/enums/date.d.ts
CHANGED
|
@@ -3,8 +3,6 @@ import type { RecommendationFeedItem } from '@@/Types/recommendation';
|
|
|
3
3
|
export declare const URLS: {
|
|
4
4
|
RECOMMENDATION_API_URL: string;
|
|
5
5
|
PRODUCT_ATTRIBUTES_PATH: string;
|
|
6
|
-
RECOMMENDATION_STRATEGIES_PATH: string;
|
|
7
|
-
RECOMMENDATION_STRATEGIES_PANEL_PATH: string;
|
|
8
6
|
};
|
|
9
7
|
export declare const QUERY_PARAMS: {
|
|
10
8
|
CLIENT_ID: string;
|
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
* - Merging partial updates with existing config
|
|
9
9
|
*/
|
|
10
10
|
import type { RecommendationNodeConfig, CurrencyConfig, OmnibusTextConfig } from '../types/nodeConfig';
|
|
11
|
-
export declare const PRE_RRS_CONFIG_VERSION = 1;
|
|
12
|
-
export declare const CURRENT_CONFIG_VERSION = 2;
|
|
13
11
|
/**
|
|
14
12
|
* Default currency configuration
|
|
15
13
|
* Uses USD as the base currency with standard formatting
|
|
@@ -49,3 +47,9 @@ export declare const DEFAULT_NODE_CONFIG: RecommendationNodeConfig;
|
|
|
49
47
|
* View Together and Purchase Together algorithms are disabled because these require product id.
|
|
50
48
|
*/
|
|
51
49
|
export declare const EXCLUDED_ALGORITHM_IDS: number[];
|
|
50
|
+
/**
|
|
51
|
+
* Current configuration version
|
|
52
|
+
* Increment this when making breaking changes to the schema
|
|
53
|
+
* Used for migration detection
|
|
54
|
+
*/
|
|
55
|
+
export declare const CURRENT_CONFIG_VERSION = 1;
|
|
@@ -10,4 +10,4 @@ export { RecommendationBlockId } from './blockIds';
|
|
|
10
10
|
export { RecommendationControlId } from './controlIds';
|
|
11
11
|
export { BLOCK_ROOT_SELECTOR, CONTAINER_SELECTOR, DESKTOP_CONTAINER_SELECTOR, MOBILE_CONTAINER_SELECTOR, MOBILE_ROW_SELECTOR, CSS_CLASS_RECO_BUTTON, CSS_CLASS_SKIP_COMPILE, RECOMMENDATION_VARIABLE_BUILTIN_ATTRIBUTES, CURRENCY_ATTR, ATTR_PRODUCT_IMAGE, ATTR_PRODUCT_NAME, ATTR_PRODUCT_PRICE, ATTR_PRODUCT_OLD_PRICE, ATTR_PRODUCT_OMNIBUS_PRICE, ATTR_PRODUCT_OMNIBUS_DISCOUNT, ATTR_PRODUCT_BUTTON, ATTR_CUSTOM_PREFIX, ATTR_DATA_CARD_COMPOSITION, ATTR_DATA_CUSTOM_ATTRIBUTES, ATTR_PRODUCT_ATTR, SELECTOR_ATTRIBUTE_ROW, ATTR_DATA_ATTRIBUTE_TYPE, PRODUCT_ATTRIBUTE_PREFIX, BUILT_IN_DEFAULT_ATTRIBUTES, } from './selectors';
|
|
12
12
|
export { LAYOUT_VALUES, LAYOUT_OPTIONS, DEFAULT_PRODUCTS_PER_ROW, DEFAULT_CARDS_IN_ROW, DEFAULT_MOBILE_CARDS_IN_ROW, MAX_PRODUCT_COUNT, MIN_PRODUCT_COUNT, MAX_PRODUCTS_PER_ROW, MIN_PRODUCTS_PER_ROW, MAX_MOBILE_PRODUCTS_PER_ROW, MIN_MOBILE_PRODUCTS_PER_ROW, DEFAULT_COLUMN_SPACING, DEFAULT_ROW_SPACING, DEFAULT_MOBILE_COLUMN_SPACING, DEFAULT_MOBILE_ROW_SPACING, MIN_SPACING, MAX_SPACING, SPACING_STEP, } from './layout';
|
|
13
|
-
export { DEFAULT_NODE_CONFIG, DEFAULT_CURRENCY, DEFAULT_COMPOSITION, DEFAULT_VISIBILITY, CURRENT_CONFIG_VERSION,
|
|
13
|
+
export { DEFAULT_NODE_CONFIG, DEFAULT_CURRENCY, DEFAULT_COMPOSITION, DEFAULT_VISIBILITY, CURRENT_CONFIG_VERSION, EXCLUDED_ALGORITHM_IDS, } from './defaultConfig';
|
|
@@ -9,9 +9,8 @@ import { PricePlacementControl, PRICE_PLACEMENT_CONTROL_ID } from './pricePlacem
|
|
|
9
9
|
import { ProductCountControl, PRODUCT_COUNT_CONTROL_ID } from './productCount';
|
|
10
10
|
import { ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID } from './productLayout';
|
|
11
11
|
import { ShuffleControl, SHUFFLE_CONTROL_ID } from './shuffle';
|
|
12
|
-
import { StrategyControl, STRATEGY_CONTROL_ID } from './strategy';
|
|
13
12
|
export declare const CONTROL_BLOCK_ID = "ui-elements-recommendation-block";
|
|
14
|
-
export { AlgorithmControl, ALGORITHM_CONTROL_ID, LocaleControl, LOCALE_CONTROL_ID, CurrencyControl, CURRENCY_CONTROL_ID, ProductCountControl, PRODUCT_COUNT_CONTROL_ID, ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID, FiltersControl, FILTERS_CONTROL_ID, ShuffleControl, SHUFFLE_CONTROL_ID, LayoutOrientationControl, LAYOUT_ORIENTATION_CONTROL_ID, PricePlacementControl, PRICE_PLACEMENT_CONTROL_ID,
|
|
13
|
+
export { AlgorithmControl, ALGORITHM_CONTROL_ID, LocaleControl, LOCALE_CONTROL_ID, CurrencyControl, CURRENCY_CONTROL_ID, ProductCountControl, PRODUCT_COUNT_CONTROL_ID, ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID, FiltersControl, FILTERS_CONTROL_ID, ShuffleControl, SHUFFLE_CONTROL_ID, LayoutOrientationControl, LAYOUT_ORIENTATION_CONTROL_ID, PricePlacementControl, PRICE_PLACEMENT_CONTROL_ID, };
|
|
15
14
|
export * from './utils';
|
|
16
15
|
/**
|
|
17
16
|
* Main recommendation block control that composes all sub-controls
|
|
@@ -30,12 +29,8 @@ export declare class RecommendationBlockControl extends CommonControl {
|
|
|
30
29
|
private shuffleControl;
|
|
31
30
|
private pricePlacementControl;
|
|
32
31
|
private layoutOrientationControl;
|
|
33
|
-
private strategyControl;
|
|
34
|
-
private rrsEnabled;
|
|
35
32
|
getId(): string;
|
|
36
|
-
private get _subControls();
|
|
37
33
|
getTemplate(): string;
|
|
38
|
-
private _showControlsForBlock;
|
|
39
34
|
onRender(): Promise<void>;
|
|
40
35
|
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
41
36
|
onDestroy(): void;
|
|
@@ -47,6 +42,7 @@ export declare class RecommendationBlockControl extends CommonControl {
|
|
|
47
42
|
/**
|
|
48
43
|
* Syncs persisted node config into the Pinia store's block state.
|
|
49
44
|
*
|
|
45
|
+
* setCurrentBlock() creates a default entry (USD, en_US, mostPopular).
|
|
50
46
|
* For saved templates, the real config lives in the node (e.g., TRY, tr_TR).
|
|
51
47
|
* This method reads it and patches the store so fetchRecommendationProducts()
|
|
52
48
|
* uses the correct values.
|
|
@@ -111,10 +107,8 @@ export declare class RecommendationBlockControl extends CommonControl {
|
|
|
111
107
|
*/
|
|
112
108
|
private _listenStateUpdates;
|
|
113
109
|
/**
|
|
114
|
-
* Persists
|
|
115
|
-
*
|
|
116
|
-
* `size` rides along: assigning a strategy writes it to the store only, and a
|
|
117
|
-
* stale node config would rebuild the block against the old slot count.
|
|
110
|
+
* Persists the current filter state from Pinia store to the Stripo node config.
|
|
111
|
+
* This ensures filters survive template save/reload cycles.
|
|
118
112
|
*/
|
|
119
113
|
private _persistFiltersToNodeConfig;
|
|
120
114
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Orientation, Languages, Currency, NumericSeparator, FiltersResponse, Filter,
|
|
1
|
+
import type { Orientation, Languages, Currency, NumericSeparator, FiltersResponse, Filter, RecommendationProduct } from '@@/Types/recommendation';
|
|
2
2
|
export interface PerBlockConfigs {
|
|
3
3
|
cardsInRow: number;
|
|
4
4
|
currencySettings: {
|
|
@@ -21,7 +21,6 @@ export interface PerBlockConfigs {
|
|
|
21
21
|
sendProductRequestFlag: boolean;
|
|
22
22
|
shuffleProducts: boolean;
|
|
23
23
|
strategy: string;
|
|
24
|
-
strategyId: string;
|
|
25
24
|
textTrimming: boolean;
|
|
26
25
|
unresponsive: boolean;
|
|
27
26
|
size: string;
|
|
@@ -34,7 +33,6 @@ interface PerBlockState {
|
|
|
34
33
|
recommendationProducts: RecommendationProduct[];
|
|
35
34
|
filterStatus: boolean;
|
|
36
35
|
filterSelectionDrawerStatus: boolean;
|
|
37
|
-
assignStrategyDrawerStatus: boolean;
|
|
38
36
|
filterGroup: number;
|
|
39
37
|
/** Whether initial API data (filters, algorithms, products) has been fetched for this block */
|
|
40
38
|
isInitialized: boolean;
|
|
@@ -49,7 +47,6 @@ interface PerBlockState {
|
|
|
49
47
|
*/
|
|
50
48
|
export interface PerBlockUrlConfig {
|
|
51
49
|
strategy: string;
|
|
52
|
-
strategyId: string;
|
|
53
50
|
language: string;
|
|
54
51
|
size: string;
|
|
55
52
|
productIds: string[];
|
|
@@ -62,14 +59,11 @@ export interface PerBlockUrlConfig {
|
|
|
62
59
|
currencyThousandSeparator: string;
|
|
63
60
|
}
|
|
64
61
|
interface StoreState {
|
|
65
|
-
recommendationCampaignUrls: Record<string,
|
|
62
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
66
63
|
activePredictiveAlgorithms: number[];
|
|
67
64
|
languages: Languages;
|
|
68
65
|
currencyList: Currency[];
|
|
69
66
|
filterList: FiltersResponse;
|
|
70
|
-
strategies: RrsStrategy[];
|
|
71
|
-
strategiesLoading: boolean;
|
|
72
|
-
strategyUrlTemplates: Record<string, string>;
|
|
73
67
|
blockStates: Record<number, PerBlockState>;
|
|
74
68
|
currentRecommendationId: number | null;
|
|
75
69
|
configVersion: number;
|
|
@@ -80,7 +74,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
80
74
|
* This allows all existing code that reads `store.recommendationConfigs` to work unchanged.
|
|
81
75
|
*/
|
|
82
76
|
recommendationConfigs(state: {
|
|
83
|
-
recommendationCampaignUrls: Record<string,
|
|
77
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
84
78
|
activePredictiveAlgorithms: number[];
|
|
85
79
|
languages: Languages;
|
|
86
80
|
currencyList: {
|
|
@@ -88,16 +82,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
88
82
|
value: string;
|
|
89
83
|
}[];
|
|
90
84
|
filterList: FiltersResponse;
|
|
91
|
-
strategies: {
|
|
92
|
-
[x: string]: unknown;
|
|
93
|
-
strategy_id: number;
|
|
94
|
-
name: string;
|
|
95
|
-
status: string;
|
|
96
|
-
suitable_channels: string;
|
|
97
|
-
size?: (number | string) | undefined;
|
|
98
|
-
}[];
|
|
99
|
-
strategiesLoading: boolean;
|
|
100
|
-
strategyUrlTemplates: Record<string, string>;
|
|
101
85
|
blockStates: Record<number, PerBlockState>;
|
|
102
86
|
currentRecommendationId: number | null;
|
|
103
87
|
configVersion: number;
|
|
@@ -106,7 +90,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
106
90
|
* Proxy getter: delegates to blockStates[currentRecommendationId].recommendationProducts
|
|
107
91
|
*/
|
|
108
92
|
recommendationProducts(state: {
|
|
109
|
-
recommendationCampaignUrls: Record<string,
|
|
93
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
110
94
|
activePredictiveAlgorithms: number[];
|
|
111
95
|
languages: Languages;
|
|
112
96
|
currencyList: {
|
|
@@ -114,16 +98,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
114
98
|
value: string;
|
|
115
99
|
}[];
|
|
116
100
|
filterList: FiltersResponse;
|
|
117
|
-
strategies: {
|
|
118
|
-
[x: string]: unknown;
|
|
119
|
-
strategy_id: number;
|
|
120
|
-
name: string;
|
|
121
|
-
status: string;
|
|
122
|
-
suitable_channels: string;
|
|
123
|
-
size?: (number | string) | undefined;
|
|
124
|
-
}[];
|
|
125
|
-
strategiesLoading: boolean;
|
|
126
|
-
strategyUrlTemplates: Record<string, string>;
|
|
127
101
|
blockStates: Record<number, PerBlockState>;
|
|
128
102
|
currentRecommendationId: number | null;
|
|
129
103
|
configVersion: number;
|
|
@@ -132,30 +106,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
132
106
|
* Proxy getter: delegates to blockStates[currentRecommendationId].filterSelectionDrawerStatus
|
|
133
107
|
*/
|
|
134
108
|
filterSelectionDrawerStatus(state: {
|
|
135
|
-
recommendationCampaignUrls: Record<string,
|
|
136
|
-
activePredictiveAlgorithms: number[];
|
|
137
|
-
languages: Languages;
|
|
138
|
-
currencyList: {
|
|
139
|
-
text: string;
|
|
140
|
-
value: string;
|
|
141
|
-
}[];
|
|
142
|
-
filterList: FiltersResponse;
|
|
143
|
-
strategies: {
|
|
144
|
-
[x: string]: unknown;
|
|
145
|
-
strategy_id: number;
|
|
146
|
-
name: string;
|
|
147
|
-
status: string;
|
|
148
|
-
suitable_channels: string;
|
|
149
|
-
size?: (number | string) | undefined;
|
|
150
|
-
}[];
|
|
151
|
-
strategiesLoading: boolean;
|
|
152
|
-
strategyUrlTemplates: Record<string, string>;
|
|
153
|
-
blockStates: Record<number, PerBlockState>;
|
|
154
|
-
currentRecommendationId: number | null;
|
|
155
|
-
configVersion: number;
|
|
156
|
-
} & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
|
|
157
|
-
assignStrategyDrawerStatus(state: {
|
|
158
|
-
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
109
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
159
110
|
activePredictiveAlgorithms: number[];
|
|
160
111
|
languages: Languages;
|
|
161
112
|
currencyList: {
|
|
@@ -163,48 +114,15 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
163
114
|
value: string;
|
|
164
115
|
}[];
|
|
165
116
|
filterList: FiltersResponse;
|
|
166
|
-
strategies: {
|
|
167
|
-
[x: string]: unknown;
|
|
168
|
-
strategy_id: number;
|
|
169
|
-
name: string;
|
|
170
|
-
status: string;
|
|
171
|
-
suitable_channels: string;
|
|
172
|
-
size?: (number | string) | undefined;
|
|
173
|
-
}[];
|
|
174
|
-
strategiesLoading: boolean;
|
|
175
|
-
strategyUrlTemplates: Record<string, string>;
|
|
176
117
|
blockStates: Record<number, PerBlockState>;
|
|
177
118
|
currentRecommendationId: number | null;
|
|
178
119
|
configVersion: number;
|
|
179
120
|
} & import("pinia").PiniaCustomStateProperties<StoreState>): boolean;
|
|
180
|
-
assignedStrategy(state: {
|
|
181
|
-
recommendationCampaignUrls: Record<string, RecommendationCampaignUrlValue>;
|
|
182
|
-
activePredictiveAlgorithms: number[];
|
|
183
|
-
languages: Languages;
|
|
184
|
-
currencyList: {
|
|
185
|
-
text: string;
|
|
186
|
-
value: string;
|
|
187
|
-
}[];
|
|
188
|
-
filterList: FiltersResponse;
|
|
189
|
-
strategies: {
|
|
190
|
-
[x: string]: unknown;
|
|
191
|
-
strategy_id: number;
|
|
192
|
-
name: string;
|
|
193
|
-
status: string;
|
|
194
|
-
suitable_channels: string;
|
|
195
|
-
size?: (number | string) | undefined;
|
|
196
|
-
}[];
|
|
197
|
-
strategiesLoading: boolean;
|
|
198
|
-
strategyUrlTemplates: Record<string, string>;
|
|
199
|
-
blockStates: Record<number, PerBlockState>;
|
|
200
|
-
currentRecommendationId: number | null;
|
|
201
|
-
configVersion: number;
|
|
202
|
-
} & import("pinia").PiniaCustomStateProperties<StoreState>): RrsStrategy | null;
|
|
203
121
|
/**
|
|
204
122
|
* Proxy getter: delegates to blockStates[currentRecommendationId].filterStatus
|
|
205
123
|
*/
|
|
206
124
|
filterStatus(state: {
|
|
207
|
-
recommendationCampaignUrls: Record<string,
|
|
125
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
208
126
|
activePredictiveAlgorithms: number[];
|
|
209
127
|
languages: Languages;
|
|
210
128
|
currencyList: {
|
|
@@ -212,16 +130,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
212
130
|
value: string;
|
|
213
131
|
}[];
|
|
214
132
|
filterList: FiltersResponse;
|
|
215
|
-
strategies: {
|
|
216
|
-
[x: string]: unknown;
|
|
217
|
-
strategy_id: number;
|
|
218
|
-
name: string;
|
|
219
|
-
status: string;
|
|
220
|
-
suitable_channels: string;
|
|
221
|
-
size?: (number | string) | undefined;
|
|
222
|
-
}[];
|
|
223
|
-
strategiesLoading: boolean;
|
|
224
|
-
strategyUrlTemplates: Record<string, string>;
|
|
225
133
|
blockStates: Record<number, PerBlockState>;
|
|
226
134
|
currentRecommendationId: number | null;
|
|
227
135
|
configVersion: number;
|
|
@@ -230,7 +138,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
230
138
|
* Proxy getter: delegates to blockStates[currentRecommendationId].filterGroup
|
|
231
139
|
*/
|
|
232
140
|
filterGroup(state: {
|
|
233
|
-
recommendationCampaignUrls: Record<string,
|
|
141
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
234
142
|
activePredictiveAlgorithms: number[];
|
|
235
143
|
languages: Languages;
|
|
236
144
|
currencyList: {
|
|
@@ -238,16 +146,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
238
146
|
value: string;
|
|
239
147
|
}[];
|
|
240
148
|
filterList: FiltersResponse;
|
|
241
|
-
strategies: {
|
|
242
|
-
[x: string]: unknown;
|
|
243
|
-
strategy_id: number;
|
|
244
|
-
name: string;
|
|
245
|
-
status: string;
|
|
246
|
-
suitable_channels: string;
|
|
247
|
-
size?: (number | string) | undefined;
|
|
248
|
-
}[];
|
|
249
|
-
strategiesLoading: boolean;
|
|
250
|
-
strategyUrlTemplates: Record<string, string>;
|
|
251
149
|
blockStates: Record<number, PerBlockState>;
|
|
252
150
|
currentRecommendationId: number | null;
|
|
253
151
|
configVersion: number;
|
|
@@ -257,7 +155,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
257
155
|
getFilterGroupCount(): number;
|
|
258
156
|
getUniqueFilterGroups(): number[];
|
|
259
157
|
getActivePredictiveAlgorithms: (state: {
|
|
260
|
-
recommendationCampaignUrls: Record<string,
|
|
158
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
261
159
|
activePredictiveAlgorithms: number[];
|
|
262
160
|
languages: Languages;
|
|
263
161
|
currencyList: {
|
|
@@ -265,16 +163,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
265
163
|
value: string;
|
|
266
164
|
}[];
|
|
267
165
|
filterList: FiltersResponse;
|
|
268
|
-
strategies: {
|
|
269
|
-
[x: string]: unknown;
|
|
270
|
-
strategy_id: number;
|
|
271
|
-
name: string;
|
|
272
|
-
status: string;
|
|
273
|
-
suitable_channels: string;
|
|
274
|
-
size?: (number | string) | undefined;
|
|
275
|
-
}[];
|
|
276
|
-
strategiesLoading: boolean;
|
|
277
|
-
strategyUrlTemplates: Record<string, string>;
|
|
278
166
|
blockStates: Record<number, PerBlockState>;
|
|
279
167
|
currentRecommendationId: number | null;
|
|
280
168
|
configVersion: number;
|
|
@@ -283,7 +171,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
283
171
|
value: string;
|
|
284
172
|
}[];
|
|
285
173
|
getLanguages: (state: {
|
|
286
|
-
recommendationCampaignUrls: Record<string,
|
|
174
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
287
175
|
activePredictiveAlgorithms: number[];
|
|
288
176
|
languages: Languages;
|
|
289
177
|
currencyList: {
|
|
@@ -291,16 +179,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
291
179
|
value: string;
|
|
292
180
|
}[];
|
|
293
181
|
filterList: FiltersResponse;
|
|
294
|
-
strategies: {
|
|
295
|
-
[x: string]: unknown;
|
|
296
|
-
strategy_id: number;
|
|
297
|
-
name: string;
|
|
298
|
-
status: string;
|
|
299
|
-
suitable_channels: string;
|
|
300
|
-
size?: (number | string) | undefined;
|
|
301
|
-
}[];
|
|
302
|
-
strategiesLoading: boolean;
|
|
303
|
-
strategyUrlTemplates: Record<string, string>;
|
|
304
182
|
blockStates: Record<number, PerBlockState>;
|
|
305
183
|
currentRecommendationId: number | null;
|
|
306
184
|
configVersion: number;
|
|
@@ -309,7 +187,7 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
309
187
|
value: string;
|
|
310
188
|
}[];
|
|
311
189
|
getCurrencySymbolList: (state: {
|
|
312
|
-
recommendationCampaignUrls: Record<string,
|
|
190
|
+
recommendationCampaignUrls: Record<string, string>;
|
|
313
191
|
activePredictiveAlgorithms: number[];
|
|
314
192
|
languages: Languages;
|
|
315
193
|
currencyList: {
|
|
@@ -317,16 +195,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
317
195
|
value: string;
|
|
318
196
|
}[];
|
|
319
197
|
filterList: FiltersResponse;
|
|
320
|
-
strategies: {
|
|
321
|
-
[x: string]: unknown;
|
|
322
|
-
strategy_id: number;
|
|
323
|
-
name: string;
|
|
324
|
-
status: string;
|
|
325
|
-
suitable_channels: string;
|
|
326
|
-
size?: (number | string) | undefined;
|
|
327
|
-
}[];
|
|
328
|
-
strategiesLoading: boolean;
|
|
329
|
-
strategyUrlTemplates: Record<string, string>;
|
|
330
198
|
blockStates: Record<number, PerBlockState>;
|
|
331
199
|
currentRecommendationId: number | null;
|
|
332
200
|
configVersion: number;
|
|
@@ -404,12 +272,6 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
404
272
|
* to the snapshot taken when the drawer was opened.
|
|
405
273
|
*/
|
|
406
274
|
cancelFilterDrawer(): void;
|
|
407
|
-
openAssignStrategyDrawer(): void;
|
|
408
|
-
closeAssignStrategyDrawer(): void;
|
|
409
|
-
fetchStrategies(): Promise<void>;
|
|
410
|
-
resolveStrategyUrlTemplate(strategy: RrsStrategy, currency: string): Promise<string>;
|
|
411
|
-
assignStrategy(strategy: RrsStrategy): void;
|
|
412
|
-
removeStrategy(): void;
|
|
413
275
|
fetchRecommendationCreateData(): Promise<void>;
|
|
414
276
|
fetchRecommendationFilters(): Promise<void>;
|
|
415
277
|
addFilterGroup(filterGroup: number): void;
|
|
@@ -426,7 +288,5 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
426
288
|
hasInvalidBlock(): boolean;
|
|
427
289
|
fetchRecommendationProducts(): Promise<void>;
|
|
428
290
|
_doFetchProducts(): Promise<void>;
|
|
429
|
-
_doFetchStrategyProducts(blockId: number): Promise<void>;
|
|
430
|
-
_setBlockProducts(blockId: number, products: RecommendationProduct[], size: number): void;
|
|
431
291
|
}>;
|
|
432
292
|
export {};
|
|
@@ -56,9 +56,6 @@ interface ButtonProps {
|
|
|
56
56
|
name: string;
|
|
57
57
|
label: string;
|
|
58
58
|
id?: string;
|
|
59
|
-
className?: string;
|
|
60
|
-
icon?: string;
|
|
61
|
-
disabled?: boolean;
|
|
62
59
|
}
|
|
63
60
|
/**
|
|
64
61
|
* Common control for all blocks which includes common UI Elements.
|
|
@@ -119,7 +116,7 @@ export declare abstract class CommonControl extends Control {
|
|
|
119
116
|
icon?: string;
|
|
120
117
|
}): string;
|
|
121
118
|
_GuRadioButton({ name, buttons, id }: RadioButtonProps): string;
|
|
122
|
-
_GuButton({ name, label, id
|
|
119
|
+
_GuButton({ name, label, id }: ButtonProps): string;
|
|
123
120
|
_GuIcon({ src, className }: IconProps): string;
|
|
124
121
|
/**
|
|
125
122
|
*
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import type { InitialResponse, FiltersResponse, RecommendationProduct, RecommendationProductsParams
|
|
1
|
+
import type { InitialResponse, FiltersResponse, RecommendationProduct, RecommendationProductsParams } 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>;
|
|
9
6
|
};
|