@gengage/assistant-fe 0.1.0 → 0.1.2
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/LICENSE +2 -2
- package/README.md +2 -2
- package/dist/assistant-fe.css +1 -1
- package/dist/chat/api.d.ts +12 -2
- package/dist/chat/api.d.ts.map +1 -1
- package/dist/chat/catalog.d.ts +246 -896
- package/dist/chat/catalog.d.ts.map +1 -1
- package/dist/chat/components/AIGroupingCards.d.ts.map +1 -1
- package/dist/chat/components/AISuggestedSearchCards.d.ts.map +1 -1
- package/dist/chat/components/AITopPicks.d.ts.map +1 -1
- package/dist/chat/components/CategoriesContainer.d.ts.map +1 -1
- package/dist/chat/components/ChatDrawer.d.ts +16 -3
- package/dist/chat/components/ChatDrawer.d.ts.map +1 -1
- package/dist/chat/components/ComparisonTable.d.ts +9 -0
- package/dist/chat/components/ComparisonTable.d.ts.map +1 -1
- package/dist/chat/components/GroundingReviewCard.d.ts.map +1 -1
- package/dist/chat/components/HandoffNotice.d.ts +5 -0
- package/dist/chat/components/HandoffNotice.d.ts.map +1 -0
- package/dist/chat/components/KvkkBanner.d.ts +1 -0
- package/dist/chat/components/KvkkBanner.d.ts.map +1 -1
- package/dist/chat/components/ProactivePopup.d.ts +9 -0
- package/dist/chat/components/ProactivePopup.d.ts.map +1 -1
- package/dist/chat/components/ProductSummaryCard.d.ts +4 -0
- package/dist/chat/components/ProductSummaryCard.d.ts.map +1 -0
- package/dist/chat/components/ReviewHighlights.d.ts +3 -1
- package/dist/chat/components/ReviewHighlights.d.ts.map +1 -1
- package/dist/chat/components/ThumbnailsColumn.d.ts.map +1 -1
- package/dist/chat/components/renderUISpec.d.ts +4 -3
- package/dist/chat/components/renderUISpec.d.ts.map +1 -1
- package/dist/chat/heartbeat.d.ts +71 -0
- package/dist/chat/heartbeat.d.ts.map +1 -0
- package/dist/chat/index.d.ts +39 -78
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/kvkk.d.ts +21 -0
- package/dist/chat/kvkk.d.ts.map +1 -0
- package/dist/chat/locales/en.d.ts.map +1 -1
- package/dist/chat/locales/tr.d.ts.map +1 -1
- package/dist/chat/panel-manager.d.ts +81 -0
- package/dist/chat/panel-manager.d.ts.map +1 -0
- package/dist/chat/session-persistence.d.ts +56 -0
- package/dist/chat/session-persistence.d.ts.map +1 -0
- package/dist/chat/types.d.ts +39 -1
- package/dist/chat/types.d.ts.map +1 -1
- package/dist/chat.cjs +1 -1
- package/dist/chat.iife.js +48 -10
- package/dist/chat.iife.js.map +1 -1
- package/dist/chat.js +9 -8
- package/dist/chat.js.map +1 -1
- package/dist/common/analytics-events.d.ts +2 -0
- package/dist/common/analytics-events.d.ts.map +1 -1
- package/dist/common/analytics.d.ts.map +1 -1
- package/dist/common/api-paths.d.ts +5 -0
- package/dist/common/api-paths.d.ts.map +1 -1
- package/dist/common/client.d.ts +4 -1
- package/dist/common/client.d.ts.map +1 -1
- package/dist/common/communication-bridge.d.ts.map +1 -1
- package/dist/common/config-schema.d.ts +33 -195
- package/dist/common/config-schema.d.ts.map +1 -1
- package/dist/common/ga-datalayer.d.ts +62 -0
- package/dist/common/ga-datalayer.d.ts.map +1 -0
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/indexed-db.d.ts +1 -1
- package/dist/common/indexed-db.d.ts.map +1 -1
- package/dist/common/merchant-configs.d.ts +22 -0
- package/dist/common/merchant-configs.d.ts.map +1 -0
- package/dist/common/overlay.d.ts +5 -0
- package/dist/common/overlay.d.ts.map +1 -1
- package/dist/common/page-detect.d.ts +31 -0
- package/dist/common/page-detect.d.ts.map +1 -0
- package/dist/common/preflight.d.ts +3 -1
- package/dist/common/preflight.d.ts.map +1 -1
- package/dist/common/price-formatter.d.ts +33 -0
- package/dist/common/price-formatter.d.ts.map +1 -0
- package/dist/common/product-utils.d.ts +26 -0
- package/dist/common/product-utils.d.ts.map +1 -0
- package/dist/common/quantity-stepper.d.ts +22 -0
- package/dist/common/quantity-stepper.d.ts.map +1 -0
- package/dist/common/safe-html.d.ts +10 -6
- package/dist/common/safe-html.d.ts.map +1 -1
- package/dist/common/streaming.d.ts +6 -0
- package/dist/common/streaming.d.ts.map +1 -1
- package/dist/common/tts-player.d.ts +12 -0
- package/dist/common/tts-player.d.ts.map +1 -0
- package/dist/common/types.d.ts +51 -0
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/v1-protocol-adapter.d.ts +9 -0
- package/dist/common/v1-protocol-adapter.d.ts.map +1 -1
- package/dist/common/voice-input.d.ts +74 -0
- package/dist/common/voice-input.d.ts.map +1 -0
- package/dist/common/widget-base.d.ts +18 -1
- package/dist/common/widget-base.d.ts.map +1 -1
- package/dist/common.cjs +1 -1
- package/dist/common.cjs.map +1 -1
- package/dist/common.js +564 -244
- package/dist/common.js.map +1 -1
- package/dist/index-CXbH-cw8.js +4337 -0
- package/dist/index-CXbH-cw8.js.map +1 -0
- package/dist/index-DHfTHscz.cjs +13 -0
- package/dist/index-DHfTHscz.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -53
- package/dist/qna/catalog.d.ts +30 -96
- package/dist/qna/catalog.d.ts.map +1 -1
- package/dist/qna/components/TextInput.d.ts.map +1 -1
- package/dist/qna/components/renderUISpec.d.ts.map +1 -1
- package/dist/qna/index.d.ts +2 -0
- package/dist/qna/index.d.ts.map +1 -1
- package/dist/qna.cjs +1 -1
- package/dist/qna.cjs.map +1 -1
- package/dist/qna.iife.js +46 -8
- package/dist/qna.iife.js.map +1 -1
- package/dist/qna.js +94 -86
- package/dist/qna.js.map +1 -1
- package/dist/quantity-stepper-B8kX8GbN.js +209 -0
- package/dist/quantity-stepper-B8kX8GbN.js.map +1 -0
- package/dist/quantity-stepper-UbAp53Ow.cjs +2 -0
- package/dist/quantity-stepper-UbAp53Ow.cjs.map +1 -0
- package/dist/schemas-CPkzbgia.js +4572 -0
- package/dist/schemas-CPkzbgia.js.map +1 -0
- package/dist/schemas-tCxs1sED.cjs +86 -0
- package/dist/schemas-tCxs1sED.cjs.map +1 -0
- package/dist/simrel/api.d.ts.map +1 -1
- package/dist/simrel/catalog.d.ts +32 -240
- package/dist/simrel/catalog.d.ts.map +1 -1
- package/dist/simrel/components/GroupTabs.d.ts.map +1 -1
- package/dist/simrel/components/ProductCard.d.ts +2 -0
- package/dist/simrel/components/ProductCard.d.ts.map +1 -1
- package/dist/simrel/components/renderUISpec.d.ts.map +1 -1
- package/dist/simrel/index.d.ts.map +1 -1
- package/dist/simrel/types.d.ts +5 -0
- package/dist/simrel/types.d.ts.map +1 -1
- package/dist/simrel.cjs +1 -1
- package/dist/simrel.cjs.map +1 -1
- package/dist/simrel.css +1 -1
- package/dist/simrel.iife.js +46 -8
- package/dist/simrel.iife.js.map +1 -1
- package/dist/simrel.js +319 -279
- package/dist/simrel.js.map +1 -1
- package/package.json +28 -8
- package/dist/index-CFA70IGF.js +0 -3626
- package/dist/index-CFA70IGF.js.map +0 -1
- package/dist/index-Dfl89zpe.cjs +0 -13
- package/dist/index-Dfl89zpe.cjs.map +0 -1
- package/dist/types-CeON7iBO.cjs +0 -48
- package/dist/types-CeON7iBO.cjs.map +0 -1
- package/dist/types-yxW8WA7u.js +0 -4132
- package/dist/types-yxW8WA7u.js.map +0 -1
package/dist/simrel/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/simrel/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AA6BD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/simrel/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AA6BD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B;AAuCD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CA0BzB"}
|
package/dist/simrel/catalog.d.ts
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const ProductGridSchema: z.ZodObject<{
|
|
3
|
-
layout: z.ZodOptional<z.ZodEnum<
|
|
3
|
+
layout: z.ZodOptional<z.ZodEnum<{
|
|
4
|
+
grid: "grid";
|
|
5
|
+
carousel: "carousel";
|
|
6
|
+
}>>;
|
|
4
7
|
columns: z.ZodOptional<z.ZodNumber>;
|
|
5
|
-
},
|
|
6
|
-
layout?: "grid" | "carousel" | undefined;
|
|
7
|
-
columns?: number | undefined;
|
|
8
|
-
}, {
|
|
9
|
-
layout?: "grid" | "carousel" | undefined;
|
|
10
|
-
columns?: number | undefined;
|
|
11
|
-
}>;
|
|
8
|
+
}, z.core.$strip>;
|
|
12
9
|
export declare const ProductCardSchema: z.ZodObject<{
|
|
13
10
|
product: z.ZodObject<{
|
|
14
11
|
sku: z.ZodString;
|
|
@@ -21,75 +18,18 @@ export declare const ProductCardSchema: z.ZodObject<{
|
|
|
21
18
|
brand: z.ZodOptional<z.ZodString>;
|
|
22
19
|
rating: z.ZodOptional<z.ZodNumber>;
|
|
23
20
|
reviewCount: z.ZodOptional<z.ZodNumber>;
|
|
24
|
-
},
|
|
25
|
-
sku: string;
|
|
26
|
-
url: string;
|
|
27
|
-
name: string;
|
|
28
|
-
price?: string | undefined;
|
|
29
|
-
reviewCount?: number | undefined;
|
|
30
|
-
brand?: string | undefined;
|
|
31
|
-
imageUrl?: string | undefined;
|
|
32
|
-
rating?: number | undefined;
|
|
33
|
-
originalPrice?: string | undefined;
|
|
34
|
-
discountPercent?: number | undefined;
|
|
35
|
-
}, {
|
|
36
|
-
sku: string;
|
|
37
|
-
url: string;
|
|
38
|
-
name: string;
|
|
39
|
-
price?: string | undefined;
|
|
40
|
-
reviewCount?: number | undefined;
|
|
41
|
-
brand?: string | undefined;
|
|
42
|
-
imageUrl?: string | undefined;
|
|
43
|
-
rating?: number | undefined;
|
|
44
|
-
originalPrice?: string | undefined;
|
|
45
|
-
discountPercent?: number | undefined;
|
|
46
|
-
}>;
|
|
21
|
+
}, z.core.$strip>;
|
|
47
22
|
index: z.ZodNumber;
|
|
48
|
-
discountType: z.ZodOptional<z.ZodEnum<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
name: string;
|
|
54
|
-
price?: string | undefined;
|
|
55
|
-
reviewCount?: number | undefined;
|
|
56
|
-
brand?: string | undefined;
|
|
57
|
-
imageUrl?: string | undefined;
|
|
58
|
-
rating?: number | undefined;
|
|
59
|
-
originalPrice?: string | undefined;
|
|
60
|
-
discountPercent?: number | undefined;
|
|
61
|
-
};
|
|
62
|
-
index: number;
|
|
63
|
-
discountType?: "strike-through" | "badge" | undefined;
|
|
64
|
-
}, {
|
|
65
|
-
product: {
|
|
66
|
-
sku: string;
|
|
67
|
-
url: string;
|
|
68
|
-
name: string;
|
|
69
|
-
price?: string | undefined;
|
|
70
|
-
reviewCount?: number | undefined;
|
|
71
|
-
brand?: string | undefined;
|
|
72
|
-
imageUrl?: string | undefined;
|
|
73
|
-
rating?: number | undefined;
|
|
74
|
-
originalPrice?: string | undefined;
|
|
75
|
-
discountPercent?: number | undefined;
|
|
76
|
-
};
|
|
77
|
-
index: number;
|
|
78
|
-
discountType?: "strike-through" | "badge" | undefined;
|
|
79
|
-
}>;
|
|
23
|
+
discountType: z.ZodOptional<z.ZodEnum<{
|
|
24
|
+
"strike-through": "strike-through";
|
|
25
|
+
badge: "badge";
|
|
26
|
+
}>>;
|
|
27
|
+
}, z.core.$strip>;
|
|
80
28
|
export declare const AddToCartButtonSchema: z.ZodObject<{
|
|
81
29
|
sku: z.ZodString;
|
|
82
30
|
label: z.ZodOptional<z.ZodString>;
|
|
83
31
|
cartCode: z.ZodString;
|
|
84
|
-
},
|
|
85
|
-
sku: string;
|
|
86
|
-
cartCode: string;
|
|
87
|
-
label?: string | undefined;
|
|
88
|
-
}, {
|
|
89
|
-
sku: string;
|
|
90
|
-
cartCode: string;
|
|
91
|
-
label?: string | undefined;
|
|
92
|
-
}>;
|
|
32
|
+
}, z.core.$strip>;
|
|
93
33
|
export declare const QuickActionsSchema: z.ZodObject<{
|
|
94
34
|
actions: z.ZodArray<z.ZodObject<{
|
|
95
35
|
label: z.ZodString;
|
|
@@ -97,69 +37,22 @@ export declare const QuickActionsSchema: z.ZodObject<{
|
|
|
97
37
|
title: z.ZodString;
|
|
98
38
|
type: z.ZodString;
|
|
99
39
|
payload: z.ZodOptional<z.ZodUnknown>;
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
payload?: unknown;
|
|
104
|
-
}, {
|
|
105
|
-
type: string;
|
|
106
|
-
title: string;
|
|
107
|
-
payload?: unknown;
|
|
108
|
-
}>;
|
|
109
|
-
}, "strip", z.ZodTypeAny, {
|
|
110
|
-
label: string;
|
|
111
|
-
action: {
|
|
112
|
-
type: string;
|
|
113
|
-
title: string;
|
|
114
|
-
payload?: unknown;
|
|
115
|
-
};
|
|
116
|
-
}, {
|
|
117
|
-
label: string;
|
|
118
|
-
action: {
|
|
119
|
-
type: string;
|
|
120
|
-
title: string;
|
|
121
|
-
payload?: unknown;
|
|
122
|
-
};
|
|
123
|
-
}>, "many">;
|
|
124
|
-
}, "strip", z.ZodTypeAny, {
|
|
125
|
-
actions: {
|
|
126
|
-
label: string;
|
|
127
|
-
action: {
|
|
128
|
-
type: string;
|
|
129
|
-
title: string;
|
|
130
|
-
payload?: unknown;
|
|
131
|
-
};
|
|
132
|
-
}[];
|
|
133
|
-
}, {
|
|
134
|
-
actions: {
|
|
135
|
-
label: string;
|
|
136
|
-
action: {
|
|
137
|
-
type: string;
|
|
138
|
-
title: string;
|
|
139
|
-
payload?: unknown;
|
|
140
|
-
};
|
|
141
|
-
}[];
|
|
142
|
-
}>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
143
43
|
export declare const EmptyStateSchema: z.ZodObject<{
|
|
144
44
|
message: z.ZodOptional<z.ZodString>;
|
|
145
|
-
},
|
|
146
|
-
message?: string | undefined;
|
|
147
|
-
}, {
|
|
148
|
-
message?: string | undefined;
|
|
149
|
-
}>;
|
|
45
|
+
}, z.core.$strip>;
|
|
150
46
|
export declare const simRelCatalog: {
|
|
151
47
|
readonly components: {
|
|
152
48
|
readonly ProductGrid: {
|
|
153
49
|
readonly schema: z.ZodObject<{
|
|
154
|
-
layout: z.ZodOptional<z.ZodEnum<
|
|
50
|
+
layout: z.ZodOptional<z.ZodEnum<{
|
|
51
|
+
grid: "grid";
|
|
52
|
+
carousel: "carousel";
|
|
53
|
+
}>>;
|
|
155
54
|
columns: z.ZodOptional<z.ZodNumber>;
|
|
156
|
-
},
|
|
157
|
-
layout?: "grid" | "carousel" | undefined;
|
|
158
|
-
columns?: number | undefined;
|
|
159
|
-
}, {
|
|
160
|
-
layout?: "grid" | "carousel" | undefined;
|
|
161
|
-
columns?: number | undefined;
|
|
162
|
-
}>;
|
|
55
|
+
}, z.core.$strip>;
|
|
163
56
|
readonly description: "Outer grid or carousel container for similar products.";
|
|
164
57
|
};
|
|
165
58
|
readonly ProductCard: {
|
|
@@ -175,62 +68,13 @@ export declare const simRelCatalog: {
|
|
|
175
68
|
brand: z.ZodOptional<z.ZodString>;
|
|
176
69
|
rating: z.ZodOptional<z.ZodNumber>;
|
|
177
70
|
reviewCount: z.ZodOptional<z.ZodNumber>;
|
|
178
|
-
},
|
|
179
|
-
sku: string;
|
|
180
|
-
url: string;
|
|
181
|
-
name: string;
|
|
182
|
-
price?: string | undefined;
|
|
183
|
-
reviewCount?: number | undefined;
|
|
184
|
-
brand?: string | undefined;
|
|
185
|
-
imageUrl?: string | undefined;
|
|
186
|
-
rating?: number | undefined;
|
|
187
|
-
originalPrice?: string | undefined;
|
|
188
|
-
discountPercent?: number | undefined;
|
|
189
|
-
}, {
|
|
190
|
-
sku: string;
|
|
191
|
-
url: string;
|
|
192
|
-
name: string;
|
|
193
|
-
price?: string | undefined;
|
|
194
|
-
reviewCount?: number | undefined;
|
|
195
|
-
brand?: string | undefined;
|
|
196
|
-
imageUrl?: string | undefined;
|
|
197
|
-
rating?: number | undefined;
|
|
198
|
-
originalPrice?: string | undefined;
|
|
199
|
-
discountPercent?: number | undefined;
|
|
200
|
-
}>;
|
|
71
|
+
}, z.core.$strip>;
|
|
201
72
|
index: z.ZodNumber;
|
|
202
|
-
discountType: z.ZodOptional<z.ZodEnum<
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
name: string;
|
|
208
|
-
price?: string | undefined;
|
|
209
|
-
reviewCount?: number | undefined;
|
|
210
|
-
brand?: string | undefined;
|
|
211
|
-
imageUrl?: string | undefined;
|
|
212
|
-
rating?: number | undefined;
|
|
213
|
-
originalPrice?: string | undefined;
|
|
214
|
-
discountPercent?: number | undefined;
|
|
215
|
-
};
|
|
216
|
-
index: number;
|
|
217
|
-
discountType?: "strike-through" | "badge" | undefined;
|
|
218
|
-
}, {
|
|
219
|
-
product: {
|
|
220
|
-
sku: string;
|
|
221
|
-
url: string;
|
|
222
|
-
name: string;
|
|
223
|
-
price?: string | undefined;
|
|
224
|
-
reviewCount?: number | undefined;
|
|
225
|
-
brand?: string | undefined;
|
|
226
|
-
imageUrl?: string | undefined;
|
|
227
|
-
rating?: number | undefined;
|
|
228
|
-
originalPrice?: string | undefined;
|
|
229
|
-
discountPercent?: number | undefined;
|
|
230
|
-
};
|
|
231
|
-
index: number;
|
|
232
|
-
discountType?: "strike-through" | "badge" | undefined;
|
|
233
|
-
}>;
|
|
73
|
+
discountType: z.ZodOptional<z.ZodEnum<{
|
|
74
|
+
"strike-through": "strike-through";
|
|
75
|
+
badge: "badge";
|
|
76
|
+
}>>;
|
|
77
|
+
}, z.core.$strip>;
|
|
234
78
|
readonly description: "A single product card with image, title, price, and actions.";
|
|
235
79
|
};
|
|
236
80
|
readonly AddToCartButton: {
|
|
@@ -238,15 +82,7 @@ export declare const simRelCatalog: {
|
|
|
238
82
|
sku: z.ZodString;
|
|
239
83
|
label: z.ZodOptional<z.ZodString>;
|
|
240
84
|
cartCode: z.ZodString;
|
|
241
|
-
},
|
|
242
|
-
sku: string;
|
|
243
|
-
cartCode: string;
|
|
244
|
-
label?: string | undefined;
|
|
245
|
-
}, {
|
|
246
|
-
sku: string;
|
|
247
|
-
cartCode: string;
|
|
248
|
-
label?: string | undefined;
|
|
249
|
-
}>;
|
|
85
|
+
}, z.core.$strip>;
|
|
250
86
|
readonly description: "Add-to-cart CTA rendered inside or below a product card.";
|
|
251
87
|
};
|
|
252
88
|
readonly QuickActions: {
|
|
@@ -257,59 +93,15 @@ export declare const simRelCatalog: {
|
|
|
257
93
|
title: z.ZodString;
|
|
258
94
|
type: z.ZodString;
|
|
259
95
|
payload: z.ZodOptional<z.ZodUnknown>;
|
|
260
|
-
},
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
payload?: unknown;
|
|
264
|
-
}, {
|
|
265
|
-
type: string;
|
|
266
|
-
title: string;
|
|
267
|
-
payload?: unknown;
|
|
268
|
-
}>;
|
|
269
|
-
}, "strip", z.ZodTypeAny, {
|
|
270
|
-
label: string;
|
|
271
|
-
action: {
|
|
272
|
-
type: string;
|
|
273
|
-
title: string;
|
|
274
|
-
payload?: unknown;
|
|
275
|
-
};
|
|
276
|
-
}, {
|
|
277
|
-
label: string;
|
|
278
|
-
action: {
|
|
279
|
-
type: string;
|
|
280
|
-
title: string;
|
|
281
|
-
payload?: unknown;
|
|
282
|
-
};
|
|
283
|
-
}>, "many">;
|
|
284
|
-
}, "strip", z.ZodTypeAny, {
|
|
285
|
-
actions: {
|
|
286
|
-
label: string;
|
|
287
|
-
action: {
|
|
288
|
-
type: string;
|
|
289
|
-
title: string;
|
|
290
|
-
payload?: unknown;
|
|
291
|
-
};
|
|
292
|
-
}[];
|
|
293
|
-
}, {
|
|
294
|
-
actions: {
|
|
295
|
-
label: string;
|
|
296
|
-
action: {
|
|
297
|
-
type: string;
|
|
298
|
-
title: string;
|
|
299
|
-
payload?: unknown;
|
|
300
|
-
};
|
|
301
|
-
}[];
|
|
302
|
-
}>;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
}, z.core.$strip>>;
|
|
98
|
+
}, z.core.$strip>;
|
|
303
99
|
readonly description: "A row of quick-action buttons below product info.";
|
|
304
100
|
};
|
|
305
101
|
readonly EmptyState: {
|
|
306
102
|
readonly schema: z.ZodObject<{
|
|
307
103
|
message: z.ZodOptional<z.ZodString>;
|
|
308
|
-
},
|
|
309
|
-
message?: string | undefined;
|
|
310
|
-
}, {
|
|
311
|
-
message?: string | undefined;
|
|
312
|
-
}>;
|
|
104
|
+
}, z.core.$strip>;
|
|
313
105
|
readonly description: "Empty state shown when no similar products are available.";
|
|
314
106
|
};
|
|
315
107
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/simrel/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/simrel/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,iBAAiB;;;;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;iBAI5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;iBAW7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupTabs.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/GroupTabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"GroupTabs.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/GroupTabs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,WAAW,CAqHtE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NormalizedProduct } from '../../common/v1-protocol-adapter.js';
|
|
2
2
|
import { SimRelI18n } from '../types.js';
|
|
3
|
+
import { PriceFormatConfig } from '../../common/price-formatter.js';
|
|
3
4
|
export interface ProductCardOptions {
|
|
4
5
|
product: NormalizedProduct;
|
|
5
6
|
index: number;
|
|
@@ -12,6 +13,7 @@ export interface ProductCardOptions {
|
|
|
12
13
|
}) => void;
|
|
13
14
|
renderCard?: (product: NormalizedProduct, index: number) => string;
|
|
14
15
|
i18n?: SimRelI18n;
|
|
16
|
+
pricing?: PriceFormatConfig;
|
|
15
17
|
}
|
|
16
18
|
export declare function renderProductCard(options: ProductCardOptions): HTMLElement;
|
|
17
19
|
//# sourceMappingURL=ProductCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductCard.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/ProductCard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ProductCard.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/ProductCard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAMzE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAyH1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderUISpec.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/renderUISpec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAkB,MAAM,aAAa,CAAC;AAK7E,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"renderUISpec.d.ts","sourceRoot":"","sources":["../../../src/simrel/components/renderUISpec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAkB,MAAM,aAAa,CAAC;AAK7E,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;AA6LhF,eAAO,MAAM,kCAAkC,EAAE,wBAAwB,CAAC,yBAAyB,CAgBlG,CAAC;AAEF,wBAAgB,iCAAiC,IAAI,oBAAoB,CAExE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,yBAAyB,EAClC,QAAQ,uBAAkC,EAC1C,eAAe,GAAE,wBAAwB,CAAC,yBAAyB,CAAsC,GACxG,WAAW,CAQb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simrel/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAI1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAgBtD,OAAO,KAAK,EAAE,kBAAkB,EAAyD,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simrel/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAI1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAgBtD,OAAO,KAAK,EAAE,kBAAkB,EAAyD,MAAM,YAAY,CAAC;AAI5G,OAAO,yBAAyB,CAAC;AAEjC,qBAAa,aAAc,SAAQ,UAAU,CAAC,kBAAkB,CAAC;IAC/D,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,KAAK,CAA8B;cAE3B,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAajE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAOvD,SAAS,CAAC,MAAM,IAAI,IAAI;IAUxB,SAAS,CAAC,MAAM,IAAI,IAAI;IAIxB,SAAS,CAAC,SAAS,IAAI,IAAI;IAY3B,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IA6BrD,gBAAgB,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAqBnF,OAAO,CAAC,MAAM;YAKA,eAAe;IAuJ7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,gBAAgB;CAiBzB;AAED,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAED,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/simrel/types.d.ts
CHANGED
|
@@ -62,6 +62,10 @@ export interface SimRelI18n {
|
|
|
62
62
|
similarProductsAriaLabel: string;
|
|
63
63
|
emptyStateMessage: string;
|
|
64
64
|
addToCartButton: string;
|
|
65
|
+
/**
|
|
66
|
+
* @deprecated Prefer `pricing` config on the widget for locale-aware formatting.
|
|
67
|
+
* Kept for backwards compatibility with existing custom integrations.
|
|
68
|
+
*/
|
|
65
69
|
priceSuffix: string;
|
|
66
70
|
}
|
|
67
71
|
export interface SimRelUISpecRenderContext {
|
|
@@ -75,6 +79,7 @@ export interface SimRelUISpecRenderContext {
|
|
|
75
79
|
discountType?: 'strike-through' | 'badge';
|
|
76
80
|
renderCard?: (product: SimilarProduct, index: number) => string;
|
|
77
81
|
i18n: SimRelI18n;
|
|
82
|
+
pricing?: import('../common/price-formatter.js').PriceFormatConfig;
|
|
78
83
|
}
|
|
79
84
|
export type SimRelRendererConfig = UISpecRendererOverrides<SimRelUISpecRenderContext>;
|
|
80
85
|
export interface SimRelUIComponents {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/simrel/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/simrel/types.ts"],"names":[],"mappings":"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"}
|
package/dist/simrel.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./types-CeON7iBO.cjs");function v(n){const e=n.headers.get("Content-Type")??"";return e.includes("application/x-ndjson")||e.includes("text/event-stream")}async function w(n,e){const t=[],r={onEvent:i=>{const o=a.adaptV1Event(i);if(!(!o||o.type!=="ui_spec")){for(const s of Object.values(o.spec.elements))if(s.type==="ProductCard"&&s.props){const c=s.props.product??s.props;typeof c.sku=="string"&&typeof c.name=="string"&&t.push(c)}}}};return e!==void 0&&(r.signal=e),await a.consumeStream(n,r),t}async function R(n,e,t){const r=a.buildChatEndpointUrl("similar_products",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const o=await fetch(r,i);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);if(v(o))return w(o,t);const s=await o.text();return s?a.normalizeSimilarProductsResponse(JSON.parse(s)):[]}async function N(n,e){const t=[];let r=null;const i={onEvent:o=>{const s=a.adaptV1Event(o);if(s){if(s.type==="metadata"&&s.meta){const c=s.meta.group_name;if(typeof c=="string"){r={name:c,products:[]};const l=s.meta.highlight;typeof l=="string"&&(r.highlight=l),t.push(r)}}if(s.type==="ui_spec"&&r){for(const c of Object.values(s.spec.elements))if(c.type==="ProductCard"&&c.props){const l=c.props.product??c.props;typeof l.sku=="string"&&typeof l.name=="string"&&r.products.push(l)}}}}};return e!==void 0&&(i.signal=e),await a.consumeStream(n,i),t}async function I(n,e,t){const r=a.buildChatEndpointUrl("product_groupings",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const o=await fetch(r,i);if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);if(v(o))return N(o,t);const s=await o.text();return s?a.normalizeProductGroupingsResponse(JSON.parse(s)):[]}function E(n){const{product:e,index:t,discountType:r,onClick:i,onAddToCart:o,renderCard:s}=n,c=n.i18n,l=c?.priceSuffix??" TL";if(s){const d=document.createElement("div");return d.className="gengage-simrel-card gengage-simrel-card--custom",d.innerHTML=s(e,t),d.addEventListener("click",f=>{f.target.closest(".gengage-simrel-atc")||i(e)}),d}const u=document.createElement("article");u.className="gengage-simrel-card",u.setAttribute("role","listitem"),u.dataset.sku=e.sku;const p=document.createElement("div");if(p.className="gengage-simrel-card-image",e.imageUrl){const d=document.createElement("img");d.src=e.imageUrl,d.alt=e.name,d.loading="lazy",p.appendChild(d)}if(r==="badge"&&e.discountPercent&&e.discountPercent>0){const d=document.createElement("span");d.className="gengage-simrel-badge",d.textContent=`%${e.discountPercent}`,p.appendChild(d)}u.appendChild(p);const g=document.createElement("div");if(g.className="gengage-simrel-card-info",e.brand){const d=document.createElement("div");d.className="gengage-simrel-card-brand",d.textContent=e.brand,g.appendChild(d)}const m=document.createElement("div");if(m.className="gengage-simrel-card-name",m.textContent=e.name,g.appendChild(m),e.rating!=null&&e.rating>0){const d=document.createElement("div");d.className="gengage-simrel-card-rating";const f="★".repeat(Math.round(e.rating))+"☆".repeat(5-Math.round(e.rating));if(d.textContent=f,e.reviewCount!=null){const y=document.createElement("span");y.className="gengage-simrel-card-review-count",y.textContent=` (${e.reviewCount})`,d.appendChild(y)}g.appendChild(d)}const h=document.createElement("div");if(h.className="gengage-simrel-card-price",e.originalPrice&&e.originalPrice!==e.price&&(r==="strike-through"||!r)){const d=document.createElement("span");d.className="gengage-simrel-card-price-original",d.textContent=e.originalPrice+l,h.appendChild(d)}if(e.price){const d=document.createElement("span");d.className="gengage-simrel-card-price-current",d.textContent=e.price+l,h.appendChild(d)}if(g.appendChild(h),u.appendChild(g),e.cartCode){const d=document.createElement("button");d.className="gengage-simrel-atc",d.type="button",d.textContent=c?.addToCartButton??"Sepete Ekle",d.addEventListener("click",f=>{f.stopPropagation(),o({sku:e.sku,quantity:1,cartCode:e.cartCode})}),u.appendChild(d)}return u.addEventListener("click",d=>{d.target.closest(".gengage-simrel-atc")||i(e)}),u}function b(n){const e=document.createElement("div");e.className="gengage-simrel-grid",e.setAttribute("role","list"),e.setAttribute("aria-label",n.i18n?.similarProductsAriaLabel??"Similar products"),n.columns&&e.style.setProperty("--gengage-simrel-columns",String(n.columns));for(let t=0;t<n.products.length;t++){const i={product:n.products[t],index:t,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(i.i18n=n.i18n),n.discountType!==void 0&&(i.discountType=n.discountType),n.renderCard!==void 0&&(i.renderCard=n.renderCard);const o=E(i);e.appendChild(o)}if(n.products.length===0){const t=document.createElement("div");t.className="gengage-simrel-empty",t.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",e.appendChild(t)}return e}function U(n){const e=document.createElement("div");if(e.className="gengage-simrel-groups",n.groups.length===0){const c=document.createElement("div");return c.className="gengage-simrel-empty",c.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",e.appendChild(c),e}const t=document.createElement("div");t.className="gengage-simrel-tabs",t.setAttribute("role","tablist");const r=document.createElement("div");r.className="gengage-simrel-tab-content";for(let c=0;c<n.groups.length;c++){const l=n.groups[c],u=document.createElement("button");u.className="gengage-simrel-tab",u.type="button",u.textContent=l.name,u.setAttribute("role","tab"),u.setAttribute("aria-selected",c===0?"true":"false"),c===0&&u.classList.add("gengage-simrel-tab--active"),u.addEventListener("click",()=>{const p=t.querySelector(".gengage-simrel-tab--active");p?.classList.remove("gengage-simrel-tab--active"),p?.setAttribute("aria-selected","false"),u.classList.add("gengage-simrel-tab--active"),u.setAttribute("aria-selected","true"),r.innerHTML="";const g={products:l.products,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(g.i18n=n.i18n),n.discountType!==void 0&&(g.discountType=n.discountType),n.renderCard!==void 0&&(g.renderCard=n.renderCard);const m=b(g);r.appendChild(m)}),t.appendChild(u)}e.appendChild(t);const o={products:n.groups[0].products,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(o.i18n=n.i18n),n.discountType!==void 0&&(o.discountType=n.discountType),n.renderCard!==void 0&&(o.renderCard=n.renderCard);const s=b(o);return r.appendChild(s),e.appendChild(r),e}function T(n){if(!n||typeof n!="object")return null;const e=n;if(typeof e.sku!="string"||typeof e.name!="string"||typeof e.url!="string")return null;const t={sku:e.sku,name:e.name,url:e.url},r=e.imageUrl;typeof r=="string"&&(t.imageUrl=r);const i=e.price;typeof i=="string"&&(t.price=i);const o=e.originalPrice;typeof o=="string"&&(t.originalPrice=o);const s=e.discountPercent;typeof s=="number"&&(t.discountPercent=s);const c=e.brand;typeof c=="string"&&(t.brand=c);const l=e.rating;typeof l=="number"&&(t.rating=l);const u=e.reviewCount;typeof u=="number"&&(t.reviewCount=u);const p=e.cartCode;typeof p=="string"&&(t.cartCode=p);const g=e.inStock;return typeof g=="boolean"&&(t.inStock=g),t}function x(n){if(!n||typeof n!="object")return null;const e=n,t=e.title,r=e.type;if(typeof t!="string"||typeof r!="string")return null;const i={title:t,type:r};return e.payload!==void 0&&(i.payload=e.payload),i}const _={ProductGrid:({element:n,renderElement:e})=>{const t=document.createElement("div");t.className="gengage-simrel-grid",t.setAttribute("role","list");const r=n.props?.columns;typeof r=="number"&&Number.isFinite(r)&&r>0&&t.style.setProperty("--gengage-simrel-columns",String(r));for(const i of n.children??[]){const o=e(i);o&&t.appendChild(o)}if(t.children.length===0){const i=document.createElement("div");i.className="gengage-simrel-empty",i.textContent="Benzer ürün bulunamadı.",t.appendChild(i)}return t},ProductCard:({element:n,context:e})=>{const t=n.props?.product??n.props,r=T(t);if(!r)return null;const i=n.props?.index,o=typeof i=="number"&&Number.isFinite(i)?i:0,s=n.props?.discountType,c=s==="strike-through"||s==="badge"?s:e.discountType,l={product:r,index:o,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return c!==void 0&&(l.discountType=c),e.renderCard!==void 0&&(l.renderCard=e.renderCard),E(l)},GroupTabs:({element:n,context:e})=>{const t=n.props?.groups;if(!Array.isArray(t))return null;const r=[];for(const o of t){if(!o||typeof o!="object")continue;const s=o;if(typeof s.name!="string")continue;const c=[];if(Array.isArray(s.products))for(const u of s.products){const p=T(u);p&&c.push(p)}const l={name:s.name,products:c};typeof s.highlight=="string"&&(l.highlight=s.highlight),r.push(l)}const i={groups:r,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),U(i)},EmptyState:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-empty";const r=n.props?.message;return t.textContent=typeof r=="string"?r:e.i18n.emptyStateMessage,t},AddToCartButton:({element:n,context:e})=>{const t=n.props?.sku,r=n.props?.cartCode;if(typeof t!="string"||typeof r!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc",i.type="button";const o=n.props?.label;return i.textContent=typeof o=="string"?o:e.i18n.addToCartButton,i.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),e.onAddToCart({sku:t,quantity:1,cartCode:r})}),i},QuickActions:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-quick-actions";const r=n.props?.actions;if(!Array.isArray(r)||!e.onAction)return t;for(const i of r){if(!i||typeof i!="object")continue;const o=i,s=o.label,c=x(o.action);if(typeof s!="string"||!c)continue;const l=document.createElement("button");l.className="gengage-simrel-quick-action",l.type="button",l.textContent=s,l.addEventListener("click",u=>{u.preventDefault(),u.stopPropagation(),e.onAction?.(c)}),t.appendChild(l)}return t}},C=({element:n,renderElement:e})=>{if(!n.children||n.children.length===0)return null;const t=document.createElement("div");for(const r of n.children){const i=e(r);i&&t.appendChild(i)}return t};function S(){return{..._}}function k(n,e,t=_,r=C){return a.renderUISpecWithRegistry({spec:n,context:e,registry:t,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}const P={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",priceSuffix:" TL"},L={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",priceSuffix:""};function G(n){return n?n.toLowerCase().split("-")[0]??"tr":"tr"}function j(n){return G(n)==="en"?L:P}const M=a.objectType({sku:a.stringType(),name:a.stringType(),imageUrl:a.stringType().url().optional(),price:a.stringType().optional(),originalPrice:a.stringType().optional(),discountPercent:a.numberType().optional(),url:a.stringType().url(),brand:a.stringType().optional(),rating:a.numberType().min(0).max(5).optional(),reviewCount:a.numberType().int().nonnegative().optional()}),O=a.objectType({layout:a.enumType(["grid","carousel"]).optional(),columns:a.numberType().int().positive().optional()}),B=a.objectType({product:M,index:a.numberType().int().nonnegative(),discountType:a.enumType(["strike-through","badge"]).optional()}),q=a.objectType({sku:a.stringType(),label:a.stringType().optional(),cartCode:a.stringType()}),D=a.objectType({actions:a.arrayType(a.objectType({label:a.stringType(),action:a.objectType({title:a.stringType(),type:a.stringType(),payload:a.unknownType().optional()})}))}),z=a.objectType({message:a.stringType().optional()}),H={components:{ProductGrid:{schema:O,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:B,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:q,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:D,description:"A row of quick-action buttons below product info."},EmptyState:{schema:z,description:"Empty state shown when no similar products are available."}}};class A extends a.BaseWidget{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=P}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),this.isVisible=!0}onUpdate(e){const t=e.sku;!t||t===this._lastSku||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;const r=this.config.session?.sessionId??null;a.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:r}),this.config.onProductNavigate?.(e.url,e.sku,r)}_handleAddToCart(e){this.config.onAddToCart?.(e),a.dispatch("gengage:similar:add-to-cart",e),this.track(a.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(e){if(this._abort(),this._abortController=new AbortController,!this._contentEl)return;this._contentEl.innerHTML="";const t=document.createElement("div");t.className="gengage-simrel-loading";const r=document.createElement("div");r.className="gengage-simrel-spinner",t.appendChild(r),this._contentEl.appendChild(t);const i={middlewareUrl:this.config.middlewareUrl},o=crypto.randomUUID(),s=Date.now();this.track(a.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:o,widget:"simrel"}));try{const c={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(c.domain=this.config.domain);const l=await R(c,i,this._abortController.signal);if(!this._contentEl)return;if(this._contentEl.innerHTML="",l.length>0)try{const u=l.map(g=>g.sku),p=await I({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:u},i,this._abortController.signal);if(p.length>0&&this._contentEl){const g=this._buildGroupsSpec(p),m=this._renderUISpec(g);this._contentEl.appendChild(m);return}}catch{}if(this._contentEl){const u=this._buildProductsSpec(l),p=this._renderUISpec(u);this._contentEl.appendChild(p)}this.track(a.streamDoneEvent(this.analyticsContext(),{request_id:o,latency_ms:Date.now()-s,chunk_count:l.length,widget:"simrel"})),this.track(a.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:l.length,history_ref:o,redaction_level:"none",widget:"simrel"}))}catch(c){if(c instanceof DOMException&&c.name==="AbortError")return;a.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:a.getGlobalErrorMessage(this.config.locale)}),this.track(a.streamErrorEvent(this.analyticsContext(),{request_id:o,error_code:"FETCH_ERROR",error_message:c instanceof Error?c.message:String(c),widget:"simrel"})),this._contentEl&&(this._contentEl.innerHTML="",this._contentEl.style.display="none")}}_resolveI18n(e){return{...j(e.locale),...e.i18n}}_resolveUISpecRegistry(){const e=S();return a.mergeUISpecRegistry(e,this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};return this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),r=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??C,o=(l,u)=>k(l,u,t,i),s=this.config.renderer?.renderUISpec;return s?s(e,r,{registry:t,unknownRenderer:i,defaultRender:o}):o(e,r)}_buildProductsSpec(e){const t={},r=[];for(let i=0;i<e.length;i++){const o=e[i],s=`product-${i}`;r.push(s),t[s]={type:"ProductCard",props:{product:o,index:i,discountType:this.config.discountType}}}return t.root={type:"ProductGrid",props:{layout:"grid"},children:r},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}}function F(){return new A}exports.GengageSimRel=A;exports.createDefaultSimRelUISpecRegistry=S;exports.createSimRelWidget=F;exports.defaultSimRelUnknownUISpecRenderer=C;exports.renderSimRelUISpec=k;exports.simRelCatalog=H;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./schemas-tCxs1sED.cjs"),C=require("./quantity-stepper-UbAp53Ow.cjs");function S(n){const e=n.headers.get("Content-Type")??"";return e.includes("application/x-ndjson")||e.includes("text/event-stream")}async function I(n,e){const t=[],r={onEvent:i=>{const s=c.adaptV1Event(i);if(!(!s||s.type!=="ui_spec")){for(const a of Object.values(s.spec.elements))if(a.type==="ProductCard"&&a.props){const u=a.props.product??a.props;typeof u.sku=="string"&&typeof u.name=="string"&&t.push(u)}}}};return e!==void 0&&(r.signal=e),await c.consumeStream(n,r),t}async function N(n,e,t){const r=c.buildChatEndpointUrl("similar_products",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const s=await fetch(r,i);if(!s.ok)throw new Error(`HTTP ${s.status}: ${s.statusText}`);if(S(s))return I(s,t);const a=await s.text();if(!a)return[];try{return c.normalizeSimilarProductsResponse(JSON.parse(a))}catch{throw new Error("Invalid JSON from similar_products endpoint")}}async function U(n,e){const t=[];let r=null;const i={onEvent:s=>{const a=c.adaptV1Event(s);if(a){if(a.type==="metadata"&&a.meta){const u=a.meta.group_name;if(typeof u=="string"){r={name:u,products:[]};const l=a.meta.highlight;typeof l=="string"&&(r.highlight=l),t.push(r)}}if(a.type==="ui_spec"&&r){for(const u of Object.values(a.spec.elements))if(u.type==="ProductCard"&&u.props){const l=u.props.product??u.props;typeof l.sku=="string"&&typeof l.name=="string"&&r.products.push(l)}}}}};return e!==void 0&&(i.signal=e),await c.consumeStream(n,i),t}async function x(n,e,t){const r=c.buildChatEndpointUrl("product_groupings",e),i={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)};t!==void 0&&(i.signal=t);const s=await fetch(r,i);if(!s.ok)throw new Error(`HTTP ${s.status}: ${s.statusText}`);if(S(s))return U(s,t);const a=await s.text();if(!a)return[];try{return c.normalizeProductGroupingsResponse(JSON.parse(a))}catch{throw new Error("Invalid JSON from product_groupings endpoint")}}function k(n){const{product:e,index:t,discountType:r,onClick:i,onAddToCart:s,renderCard:a}=n,u=n.i18n,l=n.pricing;if(a){const o=document.createElement("div");return o.className="gengage-simrel-card gengage-simrel-card--custom",o.innerHTML=C.sanitizeHtml(a(e,t)),o.addEventListener("click",p=>{p.target.closest(".gengage-simrel-atc")||i(e)}),o}const g=document.createElement("article");g.className="gengage-simrel-card",g.setAttribute("role","listitem"),g.dataset.sku=e.sku;const d=document.createElement("div");if(d.className="gengage-simrel-card-image",e.imageUrl&&C.isSafeImageUrl(e.imageUrl)){const o=document.createElement("img");o.src=e.imageUrl,o.alt=e.name,o.loading="lazy",C.addImageErrorHandler(o),d.appendChild(o)}if(r==="badge"&&e.discountPercent&&e.discountPercent>0){const o=document.createElement("span");o.className="gengage-simrel-badge",o.textContent=`%${C.clampDiscount(e.discountPercent)}`,d.appendChild(o)}g.appendChild(d);const m=document.createElement("div");if(m.className="gengage-simrel-card-info",e.brand){const o=document.createElement("div");o.className="gengage-simrel-card-brand",o.textContent=e.brand,m.appendChild(o)}const f=document.createElement("div");if(f.className="gengage-simrel-card-name",f.textContent=e.name,m.appendChild(f),e.rating!=null&&e.rating>0){const o=document.createElement("div");if(o.className="gengage-simrel-card-rating",o.textContent=C.renderStarRating(e.rating),e.reviewCount!=null){const p=document.createElement("span");p.className="gengage-simrel-card-review-count",p.textContent=` (${e.reviewCount})`,o.appendChild(p)}m.appendChild(o)}const h=document.createElement("div");if(h.className="gengage-simrel-card-price",e.originalPrice&&e.originalPrice!==e.price&&(r==="strike-through"||!r)){const o=document.createElement("span");o.className="gengage-simrel-card-price-original",o.textContent=C.formatPrice(e.originalPrice,l),h.appendChild(o)}if(e.price){const o=document.createElement("span");o.className="gengage-simrel-card-price-current",o.textContent=C.formatPrice(e.price,l),h.appendChild(o)}if(m.appendChild(h),g.appendChild(m),e.cartCode){const o=e.cartCode,p=C.createQuantityStepper({compact:!1,label:u?.addToCartButton??"Sepete Ekle",onSubmit:y=>{s({sku:e.sku,quantity:y,cartCode:o})}});p.classList.add("gengage-simrel-atc"),g.appendChild(p)}return g.addEventListener("click",o=>{o.target.closest(".gengage-simrel-atc")||i(e)}),g}function _(n){const e=document.createElement("div");e.className="gengage-simrel-grid",e.setAttribute("role","list"),e.setAttribute("aria-label",n.i18n?.similarProductsAriaLabel??"Similar products"),n.columns&&e.style.setProperty("--gengage-simrel-columns",String(n.columns));for(let t=0;t<n.products.length;t++){const i={product:n.products[t],index:t,onClick:n.onClick,onAddToCart:n.onAddToCart};n.i18n!==void 0&&(i.i18n=n.i18n),n.discountType!==void 0&&(i.discountType=n.discountType),n.renderCard!==void 0&&(i.renderCard=n.renderCard);const s=k(i);e.appendChild(s)}if(n.products.length===0){const t=document.createElement("div");t.className="gengage-simrel-empty",t.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",e.appendChild(t)}return e}let L=0;function j(n){const e=L++,t=document.createElement("div");if(t.className="gengage-simrel-groups",n.groups.length===0){const d=document.createElement("div");return d.className="gengage-simrel-empty",d.textContent=n.i18n?.emptyStateMessage??"Benzer ürün bulunamadı.",t.appendChild(d),t}const r=document.createElement("div");r.className="gengage-simrel-tabs",r.setAttribute("role","tablist");const i=[],s=[],a=d=>{const m={products:d.products,onClick:n.onClick,onAddToCart:n.onAddToCart};return n.i18n!==void 0&&(m.i18n=n.i18n),n.discountType!==void 0&&(m.discountType=n.discountType),n.renderCard!==void 0&&(m.renderCard=n.renderCard),m},u=d=>{for(let o=0;o<i.length;o++){const p=o===d;i[o].classList.toggle("gengage-simrel-tab--active",p),i[o].setAttribute("aria-selected",String(p)),i[o].tabIndex=p?0:-1}const m=n.groups[d],f=s[d];f.innerHTML="";const h=_(a(m));f.appendChild(h);for(let o=0;o<s.length;o++){const p=o===d;s[o].style.display=p?"":"none",s[o].tabIndex=p?0:-1}};for(let d=0;d<n.groups.length;d++){const m=n.groups[d],f=`gengage-simrel-tab-${e}-${d}`,h=`gengage-simrel-panel-${e}-${d}`,o=document.createElement("button");o.className="gengage-simrel-tab",o.type="button",o.id=f,o.textContent=m.name,o.setAttribute("role","tab"),o.setAttribute("aria-controls",h),o.setAttribute("aria-selected",String(d===0)),o.tabIndex=d===0?0:-1,d===0&&o.classList.add("gengage-simrel-tab--active"),o.addEventListener("click",()=>u(d)),o.addEventListener("keydown",y=>{let b=-1;y.key==="ArrowRight"||y.key==="ArrowDown"?b=(d+1)%n.groups.length:y.key==="ArrowLeft"||y.key==="ArrowUp"?b=(d-1+n.groups.length)%n.groups.length:y.key==="Home"?b=0:y.key==="End"&&(b=n.groups.length-1),b>=0&&(y.preventDefault(),u(b),i[b].focus())}),i.push(o),r.appendChild(o);const p=document.createElement("div");p.className="gengage-simrel-tab-panel",p.id=h,p.setAttribute("role","tabpanel"),p.setAttribute("aria-labelledby",f),p.tabIndex=d===0?0:-1,d!==0&&(p.style.display="none"),s.push(p)}t.appendChild(r);const l=s[0],g=_(a(n.groups[0]));l.appendChild(g);for(const d of s)t.appendChild(d);return t}function E(n){if(!n||typeof n!="object")return null;const e=n;if(typeof e.sku!="string"||typeof e.name!="string"||typeof e.url!="string")return null;const t={sku:e.sku,name:e.name,url:e.url},r=e.imageUrl;typeof r=="string"&&(t.imageUrl=r);const i=e.price;typeof i=="string"&&(t.price=i);const s=e.originalPrice;typeof s=="string"&&(t.originalPrice=s);const a=e.discountPercent;typeof a=="number"&&(t.discountPercent=a);const u=e.brand;typeof u=="string"&&(t.brand=u);const l=e.rating;typeof l=="number"&&(t.rating=l);const g=e.reviewCount;typeof g=="number"&&(t.reviewCount=g);const d=e.cartCode;typeof d=="string"&&(t.cartCode=d);const m=e.inStock;return typeof m=="boolean"&&(t.inStock=m),t}function G(n){if(!n||typeof n!="object")return null;const e=n,t=e.title,r=e.type;if(typeof t!="string"||typeof r!="string")return null;const i={title:t,type:r};return e.payload!==void 0&&(i.payload=e.payload),i}const T={ProductGrid:({element:n,renderElement:e,context:t})=>{const r=document.createElement("div");r.className="gengage-simrel-grid",r.setAttribute("role","list");const i=n.props?.columns;typeof i=="number"&&Number.isFinite(i)&&i>0&&r.style.setProperty("--gengage-simrel-columns",String(i));for(const s of n.children??[]){const a=e(s);a&&r.appendChild(a)}if(r.children.length===0){const s=document.createElement("div");s.className="gengage-simrel-empty",s.textContent=t.i18n.emptyStateMessage,r.appendChild(s)}return r},ProductCard:({element:n,context:e})=>{const t=n.props?.product??n.props,r=E(t);if(!r)return null;const i=n.props?.index,s=typeof i=="number"&&Number.isFinite(i)?i:0,a=n.props?.discountType,u=a==="strike-through"||a==="badge"?a:e.discountType,l={product:r,index:s,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return u!==void 0&&(l.discountType=u),e.renderCard!==void 0&&(l.renderCard=e.renderCard),e.pricing!==void 0&&(l.pricing=e.pricing),k(l)},GroupTabs:({element:n,context:e})=>{const t=n.props?.groups;if(!Array.isArray(t))return null;const r=[];for(const s of t){if(!s||typeof s!="object")continue;const a=s;if(typeof a.name!="string")continue;const u=[];if(Array.isArray(a.products))for(const g of a.products){const d=E(g);d&&u.push(d)}const l={name:a.name,products:u};typeof a.highlight=="string"&&(l.highlight=a.highlight),r.push(l)}const i={groups:r,onClick:e.onClick,onAddToCart:e.onAddToCart,i18n:e.i18n};return e.discountType!==void 0&&(i.discountType=e.discountType),e.renderCard!==void 0&&(i.renderCard=e.renderCard),j(i)},EmptyState:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-empty";const r=n.props?.message;return t.textContent=typeof r=="string"?r:e.i18n.emptyStateMessage,t},AddToCartButton:({element:n,context:e})=>{const t=n.props?.sku,r=n.props?.cartCode;if(typeof t!="string"||typeof r!="string")return null;const i=document.createElement("button");i.className="gengage-simrel-atc",i.type="button";const s=n.props?.label;return i.textContent=typeof s=="string"?s:e.i18n.addToCartButton,i.addEventListener("click",a=>{a.preventDefault(),a.stopPropagation(),e.onAddToCart({sku:t,quantity:1,cartCode:r})}),i},QuickActions:({element:n,context:e})=>{const t=document.createElement("div");t.className="gengage-simrel-quick-actions";const r=n.props?.actions;if(!Array.isArray(r)||!e.onAction)return t;for(const i of r){if(!i||typeof i!="object")continue;const s=i,a=s.label,u=G(s.action);if(typeof a!="string"||!u)continue;const l=document.createElement("button");l.className="gengage-simrel-quick-action",l.type="button",l.textContent=a,l.addEventListener("click",g=>{g.preventDefault(),g.stopPropagation(),e.onAction?.(u)}),t.appendChild(l)}return t}},v=({element:n,renderElement:e})=>{if(!n.children||n.children.length===0)return null;const t=document.createElement("div");for(const r of n.children){const i=e(r);i&&t.appendChild(i)}return t};function w(){return{...T}}function P(n,e,t=T,r=v){return c.renderUISpecWithRegistry({spec:n,context:e,registry:t,containerClassName:"gengage-simrel-uispec",unknownRenderer:r})}const A={similarProductsAriaLabel:"Benzer ürünler",emptyStateMessage:"Benzer ürün bulunamadı.",addToCartButton:"Sepete Ekle",priceSuffix:" TL"},O={similarProductsAriaLabel:"Similar products",emptyStateMessage:"No similar products found.",addToCartButton:"Add to cart",priceSuffix:""};function D(n){return n?n.toLowerCase().split("-")[0]??"tr":"tr"}function M(n){return D(n)==="en"?O:A}const q=c.object({sku:c.string(),name:c.string(),imageUrl:c.string().url().optional(),price:c.string().optional(),originalPrice:c.string().optional(),discountPercent:c.number().optional(),url:c.string().url(),brand:c.string().optional(),rating:c.number().min(0).max(5).optional(),reviewCount:c.number().int().nonnegative().optional()}),H=c.object({layout:c._enum(["grid","carousel"]).optional(),columns:c.number().int().positive().optional()}),B=c.object({product:q,index:c.number().int().nonnegative(),discountType:c._enum(["strike-through","badge"]).optional()}),z=c.object({sku:c.string(),label:c.string().optional(),cartCode:c.string()}),$=c.object({actions:c.array(c.object({label:c.string(),action:c.object({title:c.string(),type:c.string(),payload:c.unknown().optional()})}))}),F=c.object({message:c.string().optional()}),J={components:{ProductGrid:{schema:H,description:"Outer grid or carousel container for similar products."},ProductCard:{schema:B,description:"A single product card with image, title, price, and actions."},AddToCartButton:{schema:z,description:"Add-to-cart CTA rendered inside or below a product card."},QuickActions:{schema:$,description:"A row of quick-action buttons below product info."},EmptyState:{schema:F,description:"Empty state shown when no similar products are available."}}};class R extends c.BaseWidget{constructor(){super(...arguments),this._abortController=null,this._contentEl=null,this._i18n=A}async onInit(e){this._i18n=this._resolveI18n(e),this._contentEl=document.createElement("div"),this._contentEl.className="gengage-simrel-container",this.root.appendChild(this._contentEl),this._lastSku=e.sku,await this._fetchAndRender(e.sku),this.isVisible=!0,c.trackInit("simrel")}onUpdate(e){const t=e.sku;!t||t===this._lastSku||(this._lastSku=t,this._fetchAndRender(t))}onShow(){this._contentEl&&(this._contentEl.style.opacity="0",this._contentEl.style.transition="opacity 0.3s ease-in",requestAnimationFrame(()=>{this._contentEl&&(this._contentEl.style.opacity="1")}))}onHide(){}onDestroy(){this._abort(),this._contentEl&&(this._contentEl.remove(),this._contentEl=null)}_handleProductClick(e){const t={sku:e.sku,name:e.name,url:e.url};if(e.imageUrl!==void 0&&(t.imageUrl=e.imageUrl),e.price!==void 0&&(t.price=e.price),e.originalPrice!==void 0&&(t.originalPrice=e.originalPrice),e.discountPercent!==void 0&&(t.discountPercent=e.discountPercent),e.brand!==void 0&&(t.brand=e.brand),e.rating!==void 0&&(t.rating=e.rating),e.reviewCount!==void 0&&(t.reviewCount=e.reviewCount),e.cartCode!==void 0&&(t.cartCode=e.cartCode),e.inStock!==void 0&&(t.inStock=e.inStock),this.config.onProductClick?.(t)===!1)return;c.trackProductDetail(e.sku,e.name);const r=this.config.session?.sessionId??null;c.dispatch("gengage:similar:product-click",{sku:e.sku,url:e.url,sessionId:r}),this.config.onProductNavigate?.(e.url,e.sku,r)}_handleAddToCart(e){c.trackCartAdd(e.sku,e.quantity),this.config.onAddToCart?.(e),c.dispatch("gengage:similar:add-to-cart",e),this.track(c.basketAddEvent(this.analyticsContext(),{attribution_source:"simrel",attribution_action_id:crypto.randomUUID(),cart_value:0,currency:"TRY",line_items:e.quantity,sku:e.sku}))}_abort(){this._abortController?.abort(),this._abortController=null}async _fetchAndRender(e){this._abort(),this._abortController=new AbortController;const t=this._abortController.signal;if(!this._contentEl)return;this._contentEl.innerHTML="",this._contentEl.style.display="";const r=document.createElement("div");r.className="gengage-simrel-loading";const i=document.createElement("div");i.className="gengage-simrel-spinner",r.appendChild(i),this._contentEl.appendChild(r);const s={middlewareUrl:this.config.middlewareUrl},a=crypto.randomUUID(),u=Date.now();this.track(c.streamStartEvent(this.analyticsContext(),{endpoint:"similar_products",request_id:a,widget:"simrel"}));try{const l={account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",sku:e};this.config.domain!==void 0&&(l.domain=this.config.domain);const g=await N(l,s,t);if(!this._contentEl)return;if(this._contentEl.innerHTML="",g.length>0)try{const d=g.map(f=>f.sku),m=await x({account_id:this.config.accountId,session_id:this.config.session?.sessionId??"",correlation_id:this.config.session?.sessionId??"",skus:d},s,t);if(m.length>0&&this._contentEl){const f=this._buildGroupsSpec(m),h=this._renderUISpec(f);this._contentEl.appendChild(h),c.trackShow("simrel"),this.track(c.streamDoneEvent(this.analyticsContext(),{request_id:a,latency_ms:Date.now()-u,chunk_count:m.reduce((o,p)=>o+p.products.length,0),widget:"simrel"})),this.track(c.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:m.reduce((o,p)=>o+p.products.length,0),history_ref:a,redaction_level:"none",widget:"simrel"}));return}}catch{}if(this._contentEl){const d=this._buildProductsSpec(g),m=this._renderUISpec(d);this._contentEl.appendChild(m)}g.length>0&&c.trackShow("simrel"),this.track(c.streamDoneEvent(this.analyticsContext(),{request_id:a,latency_ms:Date.now()-u,chunk_count:g.length,widget:"simrel"})),this.track(c.widgetHistorySnapshotEvent(this.analyticsContext(),{message_count:g.length,history_ref:a,redaction_level:"none",widget:"simrel"}))}catch(l){if(l instanceof DOMException&&l.name==="AbortError")return;c.dispatch("gengage:global:error",{source:"simrel",code:"FETCH_ERROR",message:c.getGlobalErrorMessage(this.config.locale)}),this.track(c.streamErrorEvent(this.analyticsContext(),{request_id:a,error_code:"FETCH_ERROR",error_message:l instanceof Error?l.message:String(l),widget:"simrel"})),this._contentEl&&(this._contentEl.innerHTML="",this._contentEl.style.display="none")}}_resolveI18n(e){return{...M(e.locale),...e.i18n}}_resolveUISpecRegistry(){const e=w();return c.mergeUISpecRegistry(e,this.config.renderer?.registry)}_buildRenderContext(){const e=this.config.renderCard,t={onClick:r=>this._handleProductClick(r),onAddToCart:r=>this._handleAddToCart(r),i18n:this._i18n};return this.config.discountType!==void 0&&(t.discountType=this.config.discountType),e!==void 0&&(t.renderCard=e),this.config.pricing!==void 0&&(t.pricing=this.config.pricing),t}_renderUISpec(e){const t=this._resolveUISpecRegistry(),r=this._buildRenderContext(),i=this.config.renderer?.unknownRenderer??v,s=(l,g)=>P(l,g,t,i),a=this.config.renderer?.renderUISpec;return a?a(e,r,{registry:t,unknownRenderer:i,defaultRender:s}):s(e,r)}_buildProductsSpec(e){const t={},r=[];for(let i=0;i<e.length;i++){const s=e[i],a=`product-${i}`;r.push(a),t[a]={type:"ProductCard",props:{product:s,index:i,discountType:this.config.discountType}}}return t.root={type:"ProductGrid",props:{layout:"grid"},children:r},{root:"root",elements:t}}_buildGroupsSpec(e){return{root:"root",elements:{root:{type:"GroupTabs",props:{groups:e}}}}}}function W(){return new R}exports.GengageSimRel=R;exports.createDefaultSimRelUISpecRegistry=w;exports.createSimRelWidget=W;exports.defaultSimRelUnknownUISpecRenderer=v;exports.renderSimRelUISpec=P;exports.simRelCatalog=J;
|
|
2
2
|
//# sourceMappingURL=simrel.cjs.map
|