@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
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configurable price formatting.
|
|
3
|
+
*
|
|
4
|
+
* Defaults to Turkish locale (dot thousands, comma decimal, TL suffix).
|
|
5
|
+
* Configure via widget config `pricing` field for any locale/currency.
|
|
6
|
+
*/
|
|
7
|
+
export interface PriceFormatConfig {
|
|
8
|
+
/** Currency symbol. Default: 'TL' */
|
|
9
|
+
currencySymbol?: string;
|
|
10
|
+
/** Where to place the symbol. Default: 'suffix' */
|
|
11
|
+
currencyPosition?: 'prefix' | 'suffix';
|
|
12
|
+
/** Separator between thousands. Default: '.' (Turkish) */
|
|
13
|
+
thousandsSeparator?: string;
|
|
14
|
+
/** Decimal point character. Default: ',' (Turkish) */
|
|
15
|
+
decimalSeparator?: string;
|
|
16
|
+
/** Whether to show decimal part for whole numbers. Default: false */
|
|
17
|
+
alwaysShowDecimals?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Formats a raw numeric price string into the configured locale format.
|
|
21
|
+
*
|
|
22
|
+
* Examples (default Turkish):
|
|
23
|
+
* "17990" → "17.990 TL"
|
|
24
|
+
* "17990.5" → "17.990,50 TL"
|
|
25
|
+
*
|
|
26
|
+
* Examples (GBP prefix):
|
|
27
|
+
* "17990" with { currencySymbol: '£', currencyPosition: 'prefix', thousandsSeparator: ',', decimalSeparator: '.' }
|
|
28
|
+
* → "£17,990"
|
|
29
|
+
*
|
|
30
|
+
* Returns the input as-is if it's not a valid number.
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatPrice(raw: string, config?: PriceFormatConfig): string;
|
|
33
|
+
//# sourceMappingURL=price-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-formatter.d.ts","sourceRoot":"","sources":["../../src/common/price-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACvC,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CA8B3E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared product rendering utilities.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from chat/renderUISpec and simrel/ProductCard to eliminate
|
|
5
|
+
* duplication and provide consistent behavior across all widgets.
|
|
6
|
+
*/
|
|
7
|
+
/** Clamp a rating value to the 0–5 range. Returns 0 for NaN/non-finite. */
|
|
8
|
+
export declare function clampRating(value: number): number;
|
|
9
|
+
/** Clamp a discount percentage to the 0–100 range, rounded to integer. Returns 0 for NaN/non-finite. */
|
|
10
|
+
export declare function clampDiscount(value: number): number;
|
|
11
|
+
/**
|
|
12
|
+
* Render a star rating string with full, half, and empty stars.
|
|
13
|
+
*
|
|
14
|
+
* @param rating - A numeric rating (will be clamped to 0–5).
|
|
15
|
+
* @param halfStars - Whether to render half-star characters. Defaults to true.
|
|
16
|
+
* @returns A string like "★★★½☆" or "★★★☆☆" (without half-stars).
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderStarRating(rating: number, halfStars?: boolean): string;
|
|
19
|
+
/**
|
|
20
|
+
* Attach a one-time error handler that hides the image on load failure.
|
|
21
|
+
*
|
|
22
|
+
* Works with any HTMLImageElement. Hides the element by setting
|
|
23
|
+
* `display: none` so layout doesn't break from broken images.
|
|
24
|
+
*/
|
|
25
|
+
export declare function addImageErrorHandler(img: HTMLImageElement): void;
|
|
26
|
+
//# sourceMappingURL=product-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-utils.d.ts","sourceRoot":"","sources":["../../src/common/product-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,wGAAwG;AACxG,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,OAAc,GAAG,MAAM,CAUlF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAQhE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface QuantityStepperOptions {
|
|
2
|
+
min?: number;
|
|
3
|
+
max?: number;
|
|
4
|
+
initial?: number;
|
|
5
|
+
label?: string;
|
|
6
|
+
compact?: boolean;
|
|
7
|
+
decreaseLabel?: string;
|
|
8
|
+
increaseLabel?: string;
|
|
9
|
+
/** Symbol for decrease button (default: '\u2212' minus sign). */
|
|
10
|
+
decreaseSymbol?: string;
|
|
11
|
+
/** Symbol for increase button (default: '+'). */
|
|
12
|
+
increaseSymbol?: string;
|
|
13
|
+
/** Icon/text for compact mode submit button (default: shopping cart emoji). */
|
|
14
|
+
submitIcon?: string;
|
|
15
|
+
onSubmit: (quantity: number) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates a quantity stepper with [−] [value] [+] and a submit button.
|
|
19
|
+
* Compact mode renders a cart icon button; full mode renders a labeled button.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createQuantityStepper(options: QuantityStepperOptions): HTMLElement;
|
|
22
|
+
//# sourceMappingURL=quantity-stepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantity-stepper.d.ts","sourceRoot":"","sources":["../../src/common/quantity-stepper.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,WAAW,CAoFlF"}
|
|
@@ -7,13 +7,17 @@
|
|
|
7
7
|
*
|
|
8
8
|
* WARNING: Any new injection point that uses innerHTML must call this function first.
|
|
9
9
|
*/
|
|
10
|
+
/** Check if a URL uses a safe protocol (http or https). */
|
|
11
|
+
export declare function isSafeImageUrl(url: string): boolean;
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
13
|
+
* Check if a URL is safe for use in href/src attributes.
|
|
14
|
+
* Allows http:, https:, and relative paths (starting with `/`).
|
|
15
|
+
*/
|
|
16
|
+
export declare function isSafeUrl(url: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Safely set an attribute on an element.
|
|
19
|
+
* For `href` and `src` attributes, validates the URL against safe protocols.
|
|
17
20
|
*/
|
|
21
|
+
export declare function safeSetAttribute(el: HTMLElement, attr: string, value: string): void;
|
|
18
22
|
export declare function sanitizeHtml(raw: string): string;
|
|
19
23
|
//# sourceMappingURL=safe-html.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-html.d.ts","sourceRoot":"","sources":["../../src/common/safe-html.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"safe-html.d.ts","sourceRoot":"","sources":["../../src/common/safe-html.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6KH,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMnD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAS9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKnF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYhD"}
|
|
@@ -9,6 +9,12 @@ export interface StreamOptions {
|
|
|
9
9
|
onError?: (err: Error) => void;
|
|
10
10
|
/** AbortController signal to cancel mid-stream. */
|
|
11
11
|
signal?: AbortSignal;
|
|
12
|
+
/**
|
|
13
|
+
* Max milliseconds to wait between chunks before treating the stream as dead.
|
|
14
|
+
* Prevents the UI from hanging indefinitely when the backend stops sending
|
|
15
|
+
* data without closing the connection. Default: 60_000 (60 s).
|
|
16
|
+
*/
|
|
17
|
+
idleTimeoutMs?: number;
|
|
12
18
|
}
|
|
13
19
|
/**
|
|
14
20
|
* Consume an NDJSON streaming response and call onEvent for each line.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/common/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/common/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AA+C9D,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0DD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E7F;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,aAAa,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAC5D,eAAe,CAoBjB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Returned by `playTtsAudio` on successful playback initiation. */
|
|
2
|
+
export interface AudioHandle {
|
|
3
|
+
/** Stop playback immediately. Safe to call multiple times. */
|
|
4
|
+
stop: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Plays a base64-encoded audio clip.
|
|
8
|
+
* Returns an `AudioHandle` that can stop playback, or `null` if playback
|
|
9
|
+
* could not be initiated (blocked by browser, unsupported environment, etc.).
|
|
10
|
+
*/
|
|
11
|
+
export declare function playTtsAudio(base64: string, contentType?: string): AudioHandle | null;
|
|
12
|
+
//# sourceMappingURL=tts-player.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tts-player.d.ts","sourceRoot":"","sources":["../../src/common/tts-player.ts"],"names":[],"mappings":"AAUA,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,SAAc,GAAG,WAAW,GAAG,IAAI,CAmB1F"}
|
package/dist/common/types.d.ts
CHANGED
|
@@ -47,6 +47,10 @@ export interface SessionContext {
|
|
|
47
47
|
userId?: string;
|
|
48
48
|
/** View/visit identifier (e.g. from analytics platform). */
|
|
49
49
|
viewId?: string;
|
|
50
|
+
/** AB test variant assignment (e.g. 'control', 'treatment'). */
|
|
51
|
+
abTestVariant?: string;
|
|
52
|
+
/** AB test experiment identifier (e.g. 'exp_chat_v2'). */
|
|
53
|
+
abTestExperimentId?: string;
|
|
50
54
|
}
|
|
51
55
|
export interface BaseWidgetConfig {
|
|
52
56
|
/** Your Gengage account identifier. */
|
|
@@ -69,6 +73,8 @@ export interface BaseWidgetConfig {
|
|
|
69
73
|
* metering, and commerce attribution events automatically.
|
|
70
74
|
*/
|
|
71
75
|
analyticsClient?: import('./analytics.js').AnalyticsClient;
|
|
76
|
+
/** Price formatting options. Defaults to Turkish locale (TL, dot thousands, comma decimal). */
|
|
77
|
+
pricing?: import('./price-formatter.js').PriceFormatConfig;
|
|
72
78
|
}
|
|
73
79
|
export interface WidgetTheme {
|
|
74
80
|
primaryColor?: string;
|
|
@@ -201,6 +207,51 @@ export interface UIElement {
|
|
|
201
207
|
props?: Record<string, unknown>;
|
|
202
208
|
children?: string[];
|
|
203
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Shape of `context.panel` as returned by the backend's `context` event
|
|
212
|
+
* and sent back with each request. Field names match the V2 `SessionContext`.
|
|
213
|
+
*
|
|
214
|
+
* This is intentionally extensible (index signature) because the backend
|
|
215
|
+
* may add fields without a frontend release.
|
|
216
|
+
*/
|
|
217
|
+
export interface BackendPanelContext {
|
|
218
|
+
screen_type?: 'product_list' | 'product_details' | 'comparison_table';
|
|
219
|
+
screen_summary?: string;
|
|
220
|
+
screen_sku_list?: string[];
|
|
221
|
+
chat_mentioned_skus?: string[];
|
|
222
|
+
conversation_stage?: 'exploring' | 'evaluating' | 'deciding' | 'refining';
|
|
223
|
+
last_search_query?: string;
|
|
224
|
+
last_search_offset?: number;
|
|
225
|
+
last_search_page_size?: number;
|
|
226
|
+
last_search_end_of_list?: boolean;
|
|
227
|
+
last_search_category_id?: string;
|
|
228
|
+
last_search_title?: string;
|
|
229
|
+
last_search_max_budget?: number;
|
|
230
|
+
product_refs?: Array<{
|
|
231
|
+
ref: string;
|
|
232
|
+
sku: string;
|
|
233
|
+
name: string;
|
|
234
|
+
brand?: string;
|
|
235
|
+
price?: number;
|
|
236
|
+
}>;
|
|
237
|
+
session_memory?: Record<string, unknown>;
|
|
238
|
+
suggested_action_titles?: string[];
|
|
239
|
+
[key: string]: unknown;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* The full backend context object stored between turns.
|
|
243
|
+
* Contains `panel` (session state), `messages` (conversation history),
|
|
244
|
+
* and `message_id` (last message identifier).
|
|
245
|
+
*/
|
|
246
|
+
export interface BackendContext {
|
|
247
|
+
panel?: BackendPanelContext;
|
|
248
|
+
messages?: Array<{
|
|
249
|
+
role?: string;
|
|
250
|
+
content?: string;
|
|
251
|
+
}>;
|
|
252
|
+
message_id?: string;
|
|
253
|
+
[key: string]: unknown;
|
|
254
|
+
}
|
|
204
255
|
export interface ActionPayload {
|
|
205
256
|
/** Display label shown to the user. */
|
|
206
257
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAE/D,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAMD,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;OAUG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,15 @@ export interface V1Product {
|
|
|
19
19
|
facet_hits?: Record<string, unknown> | null;
|
|
20
20
|
promotions?: string[];
|
|
21
21
|
}
|
|
22
|
+
export interface V1ProsAndCons {
|
|
23
|
+
type: 'prosAndCons';
|
|
24
|
+
payload: {
|
|
25
|
+
pros?: string[];
|
|
26
|
+
cons?: string[];
|
|
27
|
+
product_name?: string;
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
22
31
|
export declare function adaptV1Event(raw: Record<string, unknown>): StreamEvent | null;
|
|
23
32
|
export interface NormalizedProduct {
|
|
24
33
|
sku: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v1-protocol-adapter.d.ts","sourceRoot":"","sources":["../../src/common/v1-protocol-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,WAAW,EAQZ,MAAM,YAAY,CAAC;AAkDpB,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"v1-protocol-adapter.d.ts","sourceRoot":"","sources":["../../src/common/v1-protocol-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-native Web Speech API voice input.
|
|
3
|
+
*
|
|
4
|
+
* Uses the SpeechRecognition API for real-time speech-to-text.
|
|
5
|
+
* The frontend sends transcribed text directly — no audio blobs
|
|
6
|
+
* are sent to the backend. This replaces server-side Groq Whisper.
|
|
7
|
+
*
|
|
8
|
+
* Supports:
|
|
9
|
+
* - Real-time transcription with interim results
|
|
10
|
+
* - Turkish (`tr-TR`) and English (`en-US`) language support
|
|
11
|
+
* - Auto-submit on silence (configurable timeout)
|
|
12
|
+
* - Microphone permission handling with descriptive errors
|
|
13
|
+
*
|
|
14
|
+
* Browser support:
|
|
15
|
+
* - Chrome 33+, Edge 79+, Safari 14.1+ (via webkitSpeechRecognition)
|
|
16
|
+
* - Firefox: NOT SUPPORTED (no SpeechRecognition API)
|
|
17
|
+
*/
|
|
18
|
+
export type VoiceInputState = 'idle' | 'listening' | 'error';
|
|
19
|
+
export type VoiceInputErrorCode = 'not-supported' | 'not-allowed' | 'no-microphone' | 'no-speech' | 'network' | 'aborted' | 'unknown';
|
|
20
|
+
export interface VoiceInputCallbacks {
|
|
21
|
+
/** Called with interim transcript while the user speaks. */
|
|
22
|
+
onInterim?: (text: string) => void;
|
|
23
|
+
/** Called with final transcript when a phrase is recognized. */
|
|
24
|
+
onFinal?: (text: string) => void;
|
|
25
|
+
/** Called when auto-submit fires (silence timeout reached with final text). */
|
|
26
|
+
onAutoSubmit?: (text: string) => void;
|
|
27
|
+
/** Called when voice input state changes. */
|
|
28
|
+
onStateChange?: (state: VoiceInputState) => void;
|
|
29
|
+
/** Called on recognition error. */
|
|
30
|
+
onError?: (code: VoiceInputErrorCode, message: string) => void;
|
|
31
|
+
}
|
|
32
|
+
export interface VoiceInputOptions {
|
|
33
|
+
/** BCP 47 language tag. Default: 'tr-TR'. */
|
|
34
|
+
lang?: string;
|
|
35
|
+
/** Silence duration in ms before auto-submit. Default: 1500. */
|
|
36
|
+
silenceTimeoutMs?: number;
|
|
37
|
+
/** Whether to auto-submit on silence. Default: true. */
|
|
38
|
+
autoSubmit?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check whether the browser supports the Web Speech API.
|
|
42
|
+
*/
|
|
43
|
+
export declare function isVoiceInputSupported(): boolean;
|
|
44
|
+
export declare class VoiceInput {
|
|
45
|
+
private recognition;
|
|
46
|
+
private _state;
|
|
47
|
+
private silenceTimer;
|
|
48
|
+
private accumulatedTranscript;
|
|
49
|
+
private readonly callbacks;
|
|
50
|
+
private readonly lang;
|
|
51
|
+
private readonly silenceTimeoutMs;
|
|
52
|
+
private readonly autoSubmit;
|
|
53
|
+
private intentionalStop;
|
|
54
|
+
constructor(callbacks: VoiceInputCallbacks, options?: VoiceInputOptions);
|
|
55
|
+
get state(): VoiceInputState;
|
|
56
|
+
/**
|
|
57
|
+
* Start listening. Requests microphone permission on first call.
|
|
58
|
+
*/
|
|
59
|
+
start(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Stop listening. Returns the accumulated transcript.
|
|
62
|
+
*/
|
|
63
|
+
stop(): string;
|
|
64
|
+
/**
|
|
65
|
+
* Abort listening. Discards any accumulated transcript.
|
|
66
|
+
*/
|
|
67
|
+
abort(): void;
|
|
68
|
+
/** Destroy the instance and release resources. */
|
|
69
|
+
destroy(): void;
|
|
70
|
+
private setState;
|
|
71
|
+
private startSilenceTimer;
|
|
72
|
+
private clearSilenceTimer;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=voice-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-input.d.ts","sourceRoot":"","sources":["../../src/common/voice-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA0DH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,aAAa,GACb,eAAe,GACf,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,6CAA6C;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjD,mCAAmC;IACnC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAOD,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAA0C;IAC7D,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,eAAe,CAAS;gBAEpB,SAAS,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAOvE,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAiGb;;OAEG;IACH,IAAI,IAAI,MAAM;IAed;;OAEG;IACH,KAAK,IAAI,IAAI;IAeb,kDAAkD;IAClD,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,iBAAiB;CAM1B"}
|
|
@@ -10,6 +10,7 @@ export declare abstract class BaseWidget<TConfig extends BaseWidgetConfig = Base
|
|
|
10
10
|
private readonly _handlers;
|
|
11
11
|
private readonly _cleanups;
|
|
12
12
|
private _ownsRoot;
|
|
13
|
+
private _destroying;
|
|
13
14
|
init(config: TConfig): Promise<void>;
|
|
14
15
|
update(context: Partial<PageContext>): void;
|
|
15
16
|
show(): void;
|
|
@@ -53,11 +54,18 @@ export interface ChatPublicAPI {
|
|
|
53
54
|
}): void;
|
|
54
55
|
openWithAction(action: import('./types.js').ActionPayload, options?: {
|
|
55
56
|
sku?: string;
|
|
57
|
+
state?: 'full' | 'half';
|
|
58
|
+
}): void;
|
|
59
|
+
/** Send a user message programmatically (same as typing + submit). */
|
|
60
|
+
sendMessage(text: string): void;
|
|
61
|
+
/** Send a backend action programmatically. */
|
|
62
|
+
sendAction(action: import('./types.js').ActionPayload, options?: {
|
|
63
|
+
silent?: boolean;
|
|
56
64
|
}): void;
|
|
57
65
|
close(): void;
|
|
58
66
|
saveSession(sessionId: string, sku: string): void;
|
|
59
67
|
readonly isOpen: boolean;
|
|
60
|
-
on(event: 'open' | 'close' | 'ready', handler: () => void): () => void;
|
|
68
|
+
on(event: 'open' | 'close' | 'ready' | 'message' | 'error' | 'context-update' | 'destroy', handler: (...args: unknown[]) => void): () => void;
|
|
61
69
|
trackCheckout(type: 'start' | 'complete', data: {
|
|
62
70
|
attribution_source: 'chat' | 'qna' | 'simrel';
|
|
63
71
|
attribution_action_id: string;
|
|
@@ -70,6 +78,15 @@ export interface ChatPublicAPI {
|
|
|
70
78
|
quantity: number;
|
|
71
79
|
unit: string;
|
|
72
80
|
}): void;
|
|
81
|
+
/**
|
|
82
|
+
* Register a callback for a GA4 event name.
|
|
83
|
+
* When the widget fires that event, the callback is invoked with the event detail.
|
|
84
|
+
* Callbacks that return `false` or throw signal failure — the widget reacts accordingly
|
|
85
|
+
* (e.g. showing an error message for add-to-cart failures).
|
|
86
|
+
*
|
|
87
|
+
* @returns unsubscribe function
|
|
88
|
+
*/
|
|
89
|
+
addCallback(eventName: string, callback: (detail: Record<string, unknown>) => boolean | Promise<boolean>): () => void;
|
|
73
90
|
}
|
|
74
91
|
export {};
|
|
75
92
|
//# sourceMappingURL=widget-base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-base.d.ts","sourceRoot":"","sources":["../../src/common/widget-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAe,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAO9D,KAAK,UAAU,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAE/C,8BAAsB,UAAU,CAC9B,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,CACnD,YAAW,aAAa,CAAC,OAAO,CAAC;IACjC,SAAS,CAAC,MAAM,EAAG,OAAO,CAAC;IAC3B,SAAS,CAAC,IAAI,EAAG,WAAW,CAAC;IAC7B,SAAS,CAAC,SAAS,UAAS;IAC5B,SAAS,CAAC,aAAa,UAAS;IAEhC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,SAAS,CAAS;
|
|
1
|
+
{"version":3,"file":"widget-base.d.ts","sourceRoot":"","sources":["../../src/common/widget-base.ts"],"names":[],"mappings":"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"}
|
package/dist/common.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./types-CeON7iBO.cjs"),g=require("./index-Dfl89zpe.cjs"),q=require("./qna.cjs"),U=require("./simrel.cjs"),u=n.objectType({enabled:n.booleanType().default(!0)}),R=n.objectType({chat:n.stringType().optional(),qna:n.stringType().optional(),simrel:n.stringType().optional()}),M=n.objectType({}),v=n.enumType(["none","x-api-key-header","bearer-header","body-api-key"]),P=n.objectType({mode:v.default("none"),key:n.stringType().optional(),headerName:n.stringType().optional(),bodyField:n.stringType().default("api_key")}),O=n.objectType({enabled:n.booleanType().default(!0),endpoint:n.stringType().default("/analytics"),auth:P.default({mode:"none",bodyField:"api_key"}),fireAndForget:n.booleanType().default(!0),useBeacon:n.booleanType().default(!0),keepaliveFetch:n.booleanType().default(!0),timeoutMs:n.numberType().int().positive().default(4e3),maxRetries:n.numberType().int().min(0).max(5).default(1)}),w="__gengageWidgetsInit",F=n.objectType({idempotencyKey:n.stringType().default(w),requireDomReady:n.booleanType().default(!0)}),T=n.enumType(["log-and-ignore","throw","delegate"]),D=n.objectType({unknownActionPolicy:T.default("log-and-ignore"),allowScriptCall:n.booleanType().default(!0)}),m=n.objectType({version:n.literalType("1"),accountId:n.stringType().min(1),middlewareUrl:n.stringType().url(),locale:n.stringType().optional(),widgets:n.objectType({chat:u.default({enabled:!0}),qna:u.default({enabled:!0}),simrel:u.default({enabled:!0})}),mounts:R.default({}),transport:M.default({}),analytics:O.default({enabled:!0,endpoint:"/analytics",auth:{mode:"none",bodyField:"api_key"},fireAndForget:!0,useBeacon:!0,keepaliveFetch:!0,timeoutMs:4e3,maxRetries:1}),gtm:F.default({idempotencyKey:"__gengageWidgetsInit",requireDomReady:!0}),actionHandling:D.default({unknownActionPolicy:"log-and-ignore",allowScriptCall:!0})});function _(e){return m.parse(e)}function b(e){return m.safeParse(e)}function N(e){return _({version:"1",accountId:e.accountId,middlewareUrl:e.middlewareUrl,locale:e.locale,widgets:{chat:{enabled:!0},qna:{enabled:!0},simrel:{enabled:!0}}})}const C=`${w}_overlay_`,L="#gengage-qna",W="#gengage-simrel";function h(){const e=window;return e.__gengageOverlayRegistry||(e.__gengageOverlayRegistry={instances:{},pending:{}}),e.__gengageOverlayRegistry}function B(e){const t={pageType:e.pageContext?.pageType??(e.sku!==void 0?"pdp":"other")},i=e.pageContext;return i?.sku!==void 0&&(t.sku=i.sku),i?.price!==void 0&&(t.price=i.price),i?.categoryTree!==void 0&&(t.categoryTree=i.categoryTree),i?.url!==void 0&&(t.url=i.url),i?.extra!==void 0&&(t.extra=i.extra),e.sku!==void 0&&(t.sku=e.sku),t}function $(e,t){const i={...e,...t,pageType:t.pageType??e.pageType};return t.sku===void 0&&e.sku!==void 0&&(i.sku=e.sku),i}function y(e){return e instanceof HTMLElement||document.querySelector(e)?e:null}function E(e){return e.idempotencyKey??`${C}${e.accountId}`}class G{constructor(t,i){this.options=t,this.onDestroy=i,this._chat=null,this._qna=null,this._simrel=null,this._destroyed=!1,this._queue=Promise.resolve(),this._warnedQnaMountMissing=!1,this._warnedSimRelMountMissing=!1,this.idempotencyKey=E(t),this.session=n.resolveSession(t.session),this._pageContext=B(t)}get chat(){return this._chat}get qna(){return this._qna}get simrel(){return this._simrel}async init(){window.gengage||(window.gengage={}),window.gengage.sessionId=this.session.sessionId,window.gengage.pageContext=this._pageContext,await this._initChat(),await this._syncPdpWidgets(),this.options.wireQnaToChat!==!1&&n.wireQNAToChat(),window.gengage.overlay=this}openChat(t){this._chat?.open(t)}closeChat(){this._chat?.close()}async updateContext(t){this._destroyed||await this._enqueue(async()=>{this._pageContext=$(this._pageContext,t),window.gengage||(window.gengage={}),window.gengage.pageContext=this._pageContext,this._chat?.update(t),this._qna?.update(t),this._simrel?.update(t),await this._syncPdpWidgets()})}async updateSku(t,i="pdp"){await this.updateContext({sku:t,pageType:i})}destroy(){this._destroyed||(this._destroyed=!0,this._chat?.destroy(),this._qna?.destroy(),this._simrel?.destroy(),this._chat=null,this._qna=null,this._simrel=null,window.gengage?.overlay===this&&delete window.gengage.overlay,this.onDestroy())}async _initChat(){if(this.options.chat?.enabled===!1)return;const t=this.options.middlewareUrl,i={accountId:this.options.accountId,middlewareUrl:t,session:this.session,pageContext:this._pageContext,variant:this.options.chat?.variant??"floating"};this.options.theme!==void 0&&(i.theme=this.options.theme),this.options.locale!==void 0&&(i.locale=this.options.locale),this.options.chat?.mountTarget!==void 0&&(i.mountTarget=this.options.chat.mountTarget),this.options.chat?.launcherSvg!==void 0&&(i.launcherSvg=this.options.chat.launcherSvg),this.options.chat?.hideMobileLauncher!==void 0&&(i.hideMobileLauncher=this.options.chat.hideMobileLauncher),this.options.chat?.mobileBreakpoint!==void 0&&(i.mobileBreakpoint=this.options.chat.mobileBreakpoint),this.options.chat?.mobileInitialState!==void 0&&(i.mobileInitialState=this.options.chat.mobileInitialState),this.options.chat?.i18n!==void 0&&(i.i18n=this.options.chat.i18n),this.options.chat?.actionHandling!==void 0&&(i.actionHandling=this.options.chat.actionHandling),this._chat=new g.GengageChat,await this._chat.init(i)}async _syncPdpWidgets(){if(this._destroyed)return;const t=this._pageContext.sku;if(!(this._pageContext.pageType==="pdp"&&t!==void 0&&t.length>0)){this._destroyPdpWidgets();return}const o=this.options.middlewareUrl;if(this.options.qna?.enabled!==!1){const r=this.options.qna?.mountTarget??L,s=y(r);if(s)if(this._warnedQnaMountMissing=!1,this._qna)this._qna.show(),this._qna.update({pageType:"pdp",sku:t});else{const l=new q.GengageQNA,a={accountId:this.options.accountId,middlewareUrl:o,session:this.session,pageContext:{pageType:"pdp",sku:t},mountTarget:s};this.options.theme!==void 0&&(a.theme=this.options.theme),this.options.qna?.ctaText!==void 0&&(a.ctaText=this.options.qna.ctaText),this.options.qna?.inputPlaceholder!==void 0&&(a.inputPlaceholder=this.options.qna.inputPlaceholder),await l.init(a),this._qna=l}else this._qna?.destroy(),this._qna=null,this._warnedQnaMountMissing||(console.warn(`[gengage] QNA mount target not found: ${r}`),this._warnedQnaMountMissing=!0)}else this._qna?.destroy(),this._qna=null;if(this.options.simrel?.enabled!==!1){const r=this.options.simrel?.mountTarget??W,s=y(r);if(s)if(this._warnedSimRelMountMissing=!1,this._simrel)this._simrel.show(),this._simrel.update({pageType:"pdp",sku:t});else{const l=new U.GengageSimRel,a={accountId:this.options.accountId,middlewareUrl:o,session:this.session,sku:t,mountTarget:s};this.options.theme!==void 0&&(a.theme=this.options.theme),this.options.simrel?.discountType!==void 0&&(a.discountType=this.options.simrel.discountType),this.options.onAddToCart!==void 0&&(a.onAddToCart=this.options.onAddToCart),this.options.onProductNavigate!==void 0?a.onProductNavigate=this.options.onProductNavigate:a.onProductNavigate=(c,d,p)=>{this._chat?.saveSession(p??this.session.sessionId,d),window.location.href=c},await l.init(a),this._simrel=l}else this._simrel?.destroy(),this._simrel=null,this._warnedSimRelMountMissing||(console.warn(`[gengage] SimRel mount target not found: ${r}`),this._warnedSimRelMountMissing=!0)}else this._simrel?.destroy(),this._simrel=null}_destroyPdpWidgets(){this._qna?.destroy(),this._simrel?.destroy(),this._qna=null,this._simrel=null}_enqueue(t){const i=this._queue.then(t);return this._queue=i.catch(()=>{}),i}}async function S(e){const t=E(e),i=h(),o=i.instances[t];if(o)return o;const r=i.pending[t];if(r)return r;const s=new G(e,()=>{const a=h();delete a.instances[t],delete a.pending[t]}),l=s.init().then(()=>(i.instances[t]=s,delete i.pending[t],s)).catch(a=>{throw delete i.pending[t],a});return i.pending[t]=l,l}function A(e){return h().instances[e]??null}function H(e){A(e)?.destroy()}function z(e){return`${C}${e}`}const K={enabled:!0,endpoint:"/analytics",fireAndForget:!0,useBeacon:!0,keepaliveFetch:!0,timeoutMs:4e3,maxRetries:1,batchSize:10,flushIntervalMs:250},j={mode:"none",key:"",headerName:"X-API-Key",bodyField:"api_key"};class I{constructor(t){this.queue=[],this.flushTimer=null,this.config={...K,...t,auth:{...j,...t.auth??{}}},this.onPageHideBound=()=>{this.queue.length!==0&&this.flushAll({preferBeacon:!0})},typeof window<"u"&&window.addEventListener("pagehide",this.onPageHideBound)}track(t){if(!this.config.enabled)return;const i=Y(t);if(this.queue.push(i),this.queue.length>=this.config.batchSize){this.scheduleImmediateFlush();return}this.scheduleFlush()}async flush(t={}){if(!this.config.enabled||this.queue.length===0)return;const i=this.queue.splice(0,this.config.batchSize),o=this.buildTransportBody(i),r=V(this.config.endpoint,this.config.middlewareUrl),s=t.preferBeacon??this.config.useBeacon;await this.sendWithRetry(r,o,s)}async flushAll(t={}){for(;this.queue.length>0;)await this.flush(t)}destroy(){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null),typeof window<"u"&&window.removeEventListener("pagehide",this.onPageHideBound)}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.flush()},this.config.flushIntervalMs))}scheduleImmediateFlush(){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null),this.flush()}buildTransportBody(t){const i={events:t};return this.config.auth.mode==="body-api-key"&&this.config.auth.key&&(i[this.config.auth.bodyField]=this.config.auth.key),i}async sendWithRetry(t,i,o){let r=0;for(;r<=this.config.maxRetries;){r+=1;try{if(await this.send(t,i,o))return}catch{}}}async send(t,i,o){const r=JSON.stringify(i);if(o&&this.config.useBeacon&&this.config.auth.mode!=="x-api-key-header"&&this.config.auth.mode!=="bearer-header"&&X()&&navigator.sendBeacon(t,r))return!0;if(typeof fetch>"u")return!1;const l={"Content-Type":"application/json"};this.config.auth.mode==="x-api-key-header"&&this.config.auth.key&&(l[this.config.auth.headerName]=this.config.auth.key),this.config.auth.mode==="bearer-header"&&this.config.auth.key&&(l.Authorization=`Bearer ${this.config.auth.key}`);const a=typeof AbortController<"u"?new AbortController:null,c=a?setTimeout(()=>a.abort(),this.config.timeoutMs):null;try{const d={method:"POST",headers:l,body:r,keepalive:this.config.keepaliveFetch&&this.config.fireAndForget};return a&&(d.signal=a.signal),(await fetch(t,d)).ok}finally{c&&clearTimeout(c)}}}function Q(e){return new I(e)}function Y(e){const t={event_name:e.event_name,event_version:e.event_version??"1",timestamp_ms:e.timestamp_ms??Date.now(),account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:e.payload};return e.view_id!==void 0&&(t.view_id=e.view_id),e.user_id!==void 0&&(t.user_id=e.user_id),e.widget!==void 0&&(t.widget=e.widget),e.page_type!==void 0&&(t.page_type=e.page_type),e.sku!==void 0&&(t.sku=e.sku),t}function V(e,t){if(/^https?:\/\//i.test(e))return e;const i=n.normalizeMiddlewareUrl(t),o=e.startsWith("/")?e:`/${e}`;return`${i}${o}`}function X(){return typeof navigator<"u"&&typeof navigator.sendBeacon=="function"}const k={primaryColor:"#000000",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#222222",borderRadius:"8px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',fontSize:"14px",zIndex:"1000","--glov-chatbot-width":"420px","--glov-left-spacing":"260px","--chatbot-padding":"16px","--root-wrapper-background-color":"#F2F2F2","--root-wrapper-border-color":"#E5E5E5","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"12px","--gengage-chat-header-height":"60px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"860px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"14px","--gengage-simrel-card-radius":"14px"};function Z(e){return{...k,...e}}const f="tr";function J(e){return{ACCOUNT_ID:e.accountId,MIDDLEWARE_URL:e.middlewareUrl,LOCALE:e.locale??f}}function ee(e,t={}){const i={accountId:e.accountId,middlewareUrl:e.middlewareUrl,session:{sessionId:e.sessionId},variant:"floating",locale:e.locale??f,...t};return e.theme!==void 0&&(i.theme=e.theme),i}function te(e,t={}){const i={accountId:e.accountId,middlewareUrl:e.middlewareUrl,session:{sessionId:e.sessionId},pageContext:{pageType:"pdp",sku:e.sku},mountTarget:e.mountTarget,...t};return e.theme!==void 0&&(i.theme=e.theme),i}function ie(e,t={}){const i={accountId:e.accountId,middlewareUrl:e.middlewareUrl,session:{sessionId:e.sessionId},sku:e.sku,mountTarget:e.mountTarget,...t};return e.theme!==void 0&&(i.theme=e.theme),i}function ne(e,t={}){return{enabled:!0,middlewareUrl:e,endpoint:"/analytics",fireAndForget:!0,useBeacon:!0,...t}}function oe(e){try{return document.querySelector(e),!0}catch{return!1}}function x(e){const t=[],i=e.mounts,o=[["qna",i.qna],["simrel",i.simrel],["chat",i.chat]];for(const[s,l]of o)if(l!==void 0){if(!oe(l)){t.push({code:"INVALID_SELECTOR",message:`[gengage preflight] ${s} mount selector is invalid CSS: "${l}"`,severity:"error"});continue}document.querySelector(l)||t.push({code:"MOUNT_NOT_FOUND",message:`[gengage preflight] ${s} mount target not found: "${l}" — widget will skip or wait for DOM`,severity:"warn"})}const r=e.gtm.idempotencyKey;window[r]!==void 0&&t.push({code:"DUPLICATE_IDEMPOTENCY",message:`[gengage preflight] window["${r}"] already exists — widgets may have already initialized`,severity:"warn"});for(const s of t)s.severity==="error"?console.error(s.message):console.warn(s.message);return{ok:t.every(s=>s.severity!=="error"),warnings:t}}function se(e){const t=b(e);if(!t.success){const i=t.error.issues.map(o=>`${o.path.join(".")}: ${o.message}`).join("; ");throw new Error(`[gengage] Invalid runtime config: ${i}`)}return t.data}function ae(e,t,i){const o={accountId:e.accountId,middlewareUrl:e.middlewareUrl,idempotencyKey:e.gtm.idempotencyKey};return e.locale!==void 0&&(o.locale=e.locale),i!==void 0&&(o.pageContext=i,i.sku!==void 0&&(o.sku=i.sku)),o.chat={enabled:e.widgets.chat.enabled},e.mounts.chat!==void 0&&(o.chat.mountTarget=e.mounts.chat),o.qna={enabled:e.widgets.qna.enabled},e.mounts.qna!==void 0&&(o.qna.mountTarget=e.mounts.qna),o.simrel={enabled:e.widgets.simrel.enabled},e.mounts.simrel!==void 0&&(o.simrel.mountTarget=e.mounts.simrel),t?.onAddToCart!==void 0&&(o.onAddToCart=t.onAddToCart),t?.onProductNavigate!==void 0&&(o.onProductNavigate=t.onProductNavigate),o}async function re(e){const t=se(e.runtimeConfig);if(e.preflight!==!1){const s=x(t);if(!s.ok){const l=s.warnings.filter(a=>a.severity==="error");throw new Error(`[gengage] Preflight failed: ${l.map(a=>a.message).join("; ")}`)}}const i=e.contextResolver?.(),o=ae(t,e.hostActions,i),r=await S(o);if(e.contextResolver!==void 0){const s=e.contextResolver;window.addEventListener("gengage:context:update",()=>{const l=s();r.updateContext(l)})}return r}exports.BaseWidget=n.BaseWidget;exports.DEFAULT_WIDGET_THEME_TOKENS=n.DEFAULT_WIDGET_THEME_TOKENS;exports.adaptV1Event=n.adaptV1Event;exports.basketAddEvent=n.basketAddEvent;exports.bootstrapSession=n.bootstrapSession;exports.buildChatEndpointUrl=n.buildChatEndpointUrl;exports.chatHistorySnapshotEvent=n.chatHistorySnapshotEvent;exports.checkoutCompleteEvent=n.checkoutCompleteEvent;exports.checkoutStartEvent=n.checkoutStartEvent;exports.consumeStream=n.consumeStream;exports.defaultUnknownUISpecRenderer=n.defaultUnknownUISpecRenderer;exports.dismissGlobalErrorToast=n.dismissGlobalErrorToast;exports.dispatch=n.dispatch;exports.getGlobalErrorMessage=n.getGlobalErrorMessage;exports.getWindowPageContext=n.getWindowPageContext;exports.listen=n.listen;exports.llmUsageEvent=n.llmUsageEvent;exports.mergeUISpecRegistry=n.mergeUISpecRegistry;exports.meteringIncrementEvent=n.meteringIncrementEvent;exports.meteringSummaryEvent=n.meteringSummaryEvent;exports.normalizeMiddlewareUrl=n.normalizeMiddlewareUrl;exports.normalizeProductGroupingsResponse=n.normalizeProductGroupingsResponse;exports.normalizeSimilarProductsResponse=n.normalizeSimilarProductsResponse;exports.productToNormalized=n.productToNormalized;exports.registerGlobalErrorToastListener=n.registerGlobalErrorToastListener;exports.renderUISpecWithRegistry=n.renderUISpecWithRegistry;exports.resolveSession=n.resolveSession;exports.showGlobalErrorToast=n.showGlobalErrorToast;exports.streamChunkEvent=n.streamChunkEvent;exports.streamDoneEvent=n.streamDoneEvent;exports.streamErrorEvent=n.streamErrorEvent;exports.streamPost=n.streamPost;exports.streamStartEvent=n.streamStartEvent;exports.streamUiSpecEvent=n.streamUiSpecEvent;exports.updatePageContext=n.updatePageContext;exports.widgetHistorySnapshotEvent=n.widgetHistorySnapshotEvent;exports.wireQNAToChat=n.wireQNAToChat;exports.wireSimilarToChat=n.wireSimilarToChat;exports.withDefaultWidgetTheme=n.withDefaultWidgetTheme;exports.routeStreamAction=g.routeStreamAction;exports.sanitizeHtml=g.sanitizeHtml;exports.AccountRuntimeConfigSchema=m;exports.AnalyticsAuthModeSchema=v;exports.AnalyticsClient=I;exports.BASE_WIDGET_THEME=k;exports.DEFAULT_CUSTOMIZATION_LOCALE=f;exports.UnknownActionPolicySchema=T;exports.buildOverlayIdempotencyKey=z;exports.createAccountIdentity=J;exports.createAnalyticsClient=Q;exports.createDefaultAccountRuntimeConfig=N;exports.createDefaultAnalyticsConfig=ne;exports.createFloatingChatConfig=ee;exports.createPdpQnaConfig=te;exports.createPdpSimRelConfig=ie;exports.destroyOverlayWidgets=H;exports.getOverlayWidgets=A;exports.initGengageClient=re;exports.initOverlayWidgets=S;exports.parseAccountRuntimeConfig=_;exports.preflightDiagnostics=x;exports.safeParseAccountRuntimeConfig=b;exports.withBaseTheme=Z;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./schemas-tCxs1sED.cjs"),f=require("./index-DHfTHscz.cjs"),F=require("./quantity-stepper-UbAp53Ow.cjs"),M=require("./qna.cjs"),D=require("./simrel.cjs"),g=o.object({enabled:o.boolean().default(!0)}),B=o.object({chat:o.string().optional(),qna:o.string().optional(),simrel:o.string().optional()}),L=o.object({}),v=o._enum(["none","x-api-key-header","bearer-header","body-api-key"]),O=o.object({mode:v.default("none"),key:o.string().optional(),headerName:o.string().optional(),bodyField:o.string().default("api_key")}),z=o.object({enabled:o.boolean().default(!0),endpoint:o.string().default("/analytics"),auth:O.default({mode:"none",bodyField:"api_key"}),fireAndForget:o.boolean().default(!0),useBeacon:o.boolean().default(!0),keepaliveFetch:o.boolean().default(!0),timeoutMs:o.number().int().positive().default(4e3),maxRetries:o.number().int().min(0).max(5).default(1)}),C="__gengageWidgetsInit",N=o.object({idempotencyKey:o.string().default(C),requireDomReady:o.boolean().default(!0)}),_=o._enum(["log-and-ignore","throw","delegate"]),W=o.object({unknownActionPolicy:_.default("log-and-ignore"),allowScriptCall:o.boolean().default(!1)}),p=o.object({version:o.literal("1"),accountId:o.string().min(1),middlewareUrl:o.string().url(),locale:o.string().optional(),widgets:o.object({chat:g.default({enabled:!0}),qna:g.default({enabled:!0}),simrel:g.default({enabled:!0})}),mounts:B.default({}),transport:L.default({}),analytics:z.default({enabled:!0,endpoint:"/analytics",auth:{mode:"none",bodyField:"api_key"},fireAndForget:!0,useBeacon:!0,keepaliveFetch:!0,timeoutMs:4e3,maxRetries:1}),gtm:N.default({idempotencyKey:"__gengageWidgetsInit",requireDomReady:!0}),actionHandling:W.default({unknownActionPolicy:"log-and-ignore",allowScriptCall:!1})});function b(e){return p.parse(e)}function T(e){return p.safeParse(e)}function H(e){return b({version:"1",accountId:e.accountId,middlewareUrl:e.middlewareUrl,locale:e.locale,widgets:{chat:{enabled:!0},qna:{enabled:!0},simrel:{enabled:!0}}})}const S=`${C}_overlay_`,$="#gengage-qna",G="#gengage-simrel";function m(){const e=window;return e.__gengageOverlayRegistry||(e.__gengageOverlayRegistry={instances:{},pending:{}}),e.__gengageOverlayRegistry}function K(e){const t={pageType:e.pageContext?.pageType??(e.sku!==void 0?"pdp":"other")},n=e.pageContext;return n?.sku!==void 0&&(t.sku=n.sku),n?.price!==void 0&&(t.price=n.price),n?.categoryTree!==void 0&&(t.categoryTree=n.categoryTree),n?.url!==void 0&&(t.url=n.url),n?.extra!==void 0&&(t.extra=n.extra),e.sku!==void 0&&(t.sku=e.sku),t}function j(e,t){const n={...e,...t,pageType:t.pageType??e.pageType};return t.sku===void 0&&e.sku!==void 0&&(n.sku=e.sku),n}function w(e){return e instanceof HTMLElement||document.querySelector(e)?e:null}function A(e){return e.idempotencyKey??`${S}${e.accountId}`}class Q{constructor(t,n){this.options=t,this.onDestroy=n,this._chat=null,this._qna=null,this._simrel=null,this._analyticsClient=null,this._destroyed=!1,this._queue=Promise.resolve(),this._warnedQnaMountMissing=!1,this._warnedSimRelMountMissing=!1,this.idempotencyKey=A(t),this.session=o.resolveSession(t.session),this._pageContext=K(t)}get chat(){return this._chat}get qna(){return this._qna}get simrel(){return this._simrel}get analyticsClient(){return this._analyticsClient}async init(){window.gengage||(window.gengage={}),window.gengage.sessionId=this.session.sessionId,window.gengage.pageContext=this._pageContext,await this._initChat(),await this._syncPdpWidgets(),this.options.wireQnaToChat!==!1&&o.wireQNAToChat(),window.gengage.overlay=this}openChat(t){this._chat?.open(t)}closeChat(){this._chat?.close()}async updateContext(t){this._destroyed||await this._enqueue(async()=>{this._pageContext=j(this._pageContext,t),window.gengage||(window.gengage={}),window.gengage.pageContext=this._pageContext,this._chat?.update(t),this._qna?.update(t),this._simrel?.update(t),await this._syncPdpWidgets()})}async updateSku(t,n="pdp"){await this.updateContext({sku:t,pageType:n})}destroy(){this._destroyed||(this._destroyed=!0,this._chat?.destroy(),this._qna?.destroy(),this._simrel?.destroy(),this._chat=null,this._qna=null,this._simrel=null,window.gengage?.overlay===this&&delete window.gengage.overlay,this.onDestroy())}async _initChat(){if(this.options.chat?.enabled===!1)return;const t=this.options.middlewareUrl,n={accountId:this.options.accountId,middlewareUrl:t,session:this.session,pageContext:this._pageContext,variant:this.options.chat?.variant??"floating"};this.options.theme!==void 0&&(n.theme=this.options.theme),this.options.locale!==void 0&&(n.locale=this.options.locale),this.options.pricing!==void 0&&(n.pricing=this.options.pricing),this.options.chat?.mountTarget!==void 0&&(n.mountTarget=this.options.chat.mountTarget),this.options.chat?.launcherSvg!==void 0&&(n.launcherSvg=this.options.chat.launcherSvg),this.options.chat?.hideMobileLauncher!==void 0&&(n.hideMobileLauncher=this.options.chat.hideMobileLauncher),this.options.chat?.mobileBreakpoint!==void 0&&(n.mobileBreakpoint=this.options.chat.mobileBreakpoint),this.options.chat?.mobileInitialState!==void 0&&(n.mobileInitialState=this.options.chat.mobileInitialState),this.options.chat?.i18n!==void 0&&(n.i18n=this.options.chat.i18n),this.options.chat?.actionHandling!==void 0&&(n.actionHandling=this.options.chat.actionHandling),this.options.onScriptCall!==void 0&&(n.onScriptCall=this.options.onScriptCall),this._chat=new f.GengageChat,await this._chat.init(n)}async _syncPdpWidgets(){if(this._destroyed)return;const t=this._pageContext.sku;if(!(this._pageContext.pageType==="pdp"&&t!==void 0&&t.length>0)){this._destroyPdpWidgets();return}const i=this.options.middlewareUrl;if(this.options.qna?.enabled!==!1){const a=this.options.qna?.mountTarget??$,s=w(a);if(s)if(this._warnedQnaMountMissing=!1,this._qna)this._qna.show(),this._qna.update({pageType:"pdp",sku:t});else{const l=new M.GengageQNA,r={accountId:this.options.accountId,middlewareUrl:i,session:this.session,pageContext:{pageType:"pdp",sku:t},mountTarget:s};this.options.theme!==void 0&&(r.theme=this.options.theme),this.options.qna?.ctaText!==void 0&&(r.ctaText=this.options.qna.ctaText),this.options.qna?.inputPlaceholder!==void 0&&(r.inputPlaceholder=this.options.qna.inputPlaceholder),await l.init(r),this._qna=l}else this._qna?.destroy(),this._qna=null,this._warnedQnaMountMissing||(console.warn(`[gengage] QNA mount target not found: ${a}`),this._warnedQnaMountMissing=!0)}else this._qna?.destroy(),this._qna=null;if(this.options.simrel?.enabled!==!1){const a=this.options.simrel?.mountTarget??G,s=w(a);if(s)if(this._warnedSimRelMountMissing=!1,this._simrel)this._simrel.show(),this._simrel.update({pageType:"pdp",sku:t});else{const l=new D.GengageSimRel,r={accountId:this.options.accountId,middlewareUrl:i,session:this.session,sku:t,mountTarget:s};this.options.theme!==void 0&&(r.theme=this.options.theme),this.options.pricing!==void 0&&(r.pricing=this.options.pricing),this.options.simrel?.discountType!==void 0&&(r.discountType=this.options.simrel.discountType),this.options.onAddToCart!==void 0&&(r.onAddToCart=this.options.onAddToCart),this.options.onProductNavigate!==void 0?r.onProductNavigate=this.options.onProductNavigate:r.onProductNavigate=(d,u,h)=>{this._chat?.saveSession(h??this.session.sessionId,u),window.location.href=d},await l.init(r),this._simrel=l}else this._simrel?.destroy(),this._simrel=null,this._warnedSimRelMountMissing||(console.warn(`[gengage] SimRel mount target not found: ${a}`),this._warnedSimRelMountMissing=!0)}else this._simrel?.destroy(),this._simrel=null}_destroyPdpWidgets(){this._qna?.destroy(),this._simrel?.destroy(),this._qna=null,this._simrel=null}_enqueue(t){const n=this._queue.then(t);return this._queue=n.catch(i=>{}),n}}async function I(e){const t=A(e),n=m(),i=n.instances[t];if(i)return i;const a=n.pending[t];if(a)return a;const s=new Q(e,()=>{const r=m();delete r.instances[t],delete r.pending[t]}),l=s.init().then(()=>(n.instances[t]=s,delete n.pending[t],s)).catch(r=>{throw delete n.pending[t],r});return n.pending[t]=l,l}function k(e){return m().instances[e]??null}function V(e){k(e)?.destroy()}function Y(e){return`${S}${e}`}const X={enabled:!0,endpoint:"/analytics",fireAndForget:!0,useBeacon:!0,keepaliveFetch:!0,timeoutMs:4e3,maxRetries:1,batchSize:10,flushIntervalMs:250},Z={mode:"none",key:"",headerName:"X-API-Key",bodyField:"api_key"};class E{constructor(t){this.queue=[],this.flushTimer=null,this.config={...X,...t,auth:{...Z,...t.auth??{}}},this.onPageHideBound=()=>{this.queue.length!==0&&this.flushAll({preferBeacon:!0})},typeof window<"u"&&window.addEventListener("pagehide",this.onPageHideBound)}track(t){if(!this.config.enabled)return;const n=ee(t);if(this.queue.push(n),this.queue.length>=this.config.batchSize){this.scheduleImmediateFlush();return}this.scheduleFlush()}async flush(t={}){if(!this.config.enabled||this.queue.length===0)return;const n=this.queue.splice(0,this.config.batchSize),i=this.buildTransportBody(n),a=te(this.config.endpoint,this.config.middlewareUrl),s=t.preferBeacon??this.config.useBeacon;await this.sendWithRetry(a,i,s)}async flushAll(t={}){for(;this.queue.length>0;)await this.flush(t)}destroy(){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null),this.queue.length>0&&this.flushAll({preferBeacon:!0}),typeof window<"u"&&window.removeEventListener("pagehide",this.onPageHideBound)}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.flush()},this.config.flushIntervalMs))}scheduleImmediateFlush(){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null),this.flush()}buildTransportBody(t){const n={events:t};return this.config.auth.mode==="body-api-key"&&this.config.auth.key&&(n[this.config.auth.bodyField]=this.config.auth.key),n}async sendWithRetry(t,n,i){let a=0;for(;a<=this.config.maxRetries;){a+=1;try{if(await this.send(t,n,i))return}catch{}a<=this.config.maxRetries&&await new Promise(s=>setTimeout(s,Math.min(1e3,100*Math.pow(2,a-1))))}}async send(t,n,i){const a=JSON.stringify(n);if(i&&this.config.useBeacon&&this.config.auth.mode!=="x-api-key-header"&&this.config.auth.mode!=="bearer-header"&&ne()){const u=new Blob([a],{type:"application/json"});if(navigator.sendBeacon(t,u))return!0}if(typeof fetch>"u")return!1;const l={"Content-Type":"application/json"};this.config.auth.mode==="x-api-key-header"&&this.config.auth.key&&(l[this.config.auth.headerName]=this.config.auth.key),this.config.auth.mode==="bearer-header"&&this.config.auth.key&&(l.Authorization=`Bearer ${this.config.auth.key}`);const r=typeof AbortController<"u"?new AbortController:null,d=r?setTimeout(()=>r.abort(),this.config.timeoutMs):null;try{const u={method:"POST",headers:l,body:a,keepalive:this.config.keepaliveFetch&&this.config.fireAndForget};return r&&(u.signal=r.signal),(await fetch(t,u)).ok}finally{d&&clearTimeout(d)}}}function J(e){return new E(e)}function ee(e){const t={event_name:e.event_name,event_version:e.event_version??"1",timestamp_ms:e.timestamp_ms??Date.now(),account_id:e.account_id,session_id:e.session_id,correlation_id:e.correlation_id,payload:e.payload};return e.view_id!==void 0&&(t.view_id=e.view_id),e.user_id!==void 0&&(t.user_id=e.user_id),e.widget!==void 0&&(t.widget=e.widget),e.page_type!==void 0&&(t.page_type=e.page_type),e.sku!==void 0&&(t.sku=e.sku),t}function te(e,t){if(/^https?:\/\//i.test(e))return e;const n=o.normalizeMiddlewareUrl(t),i=e.startsWith("/")?e:`/${e}`;return`${n}${i}`}function ne(){return typeof navigator<"u"&&typeof navigator.sendBeacon=="function"}const x={primaryColor:"#000000",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#222222",borderRadius:"8px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',fontSize:"14px",zIndex:"1000","--glov-chatbot-width":"420px","--glov-left-spacing":"260px","--chatbot-padding":"16px","--root-wrapper-background-color":"#F2F2F2","--root-wrapper-border-color":"#E5E5E5","--gengage-chat-width":"400px","--gengage-chat-shell-radius":"12px","--gengage-chat-header-height":"60px","--gengage-chat-conversation-width":"396px","--gengage-chat-panel-min-width":"320px","--gengage-chat-panel-max-width":"860px","--gengage-chat-input-height":"48px","--gengage-qna-pill-radius":"999px","--gengage-qna-input-radius":"14px","--gengage-simrel-card-radius":"14px"};function oe(e){return{...x,...e}}const y="tr";function ie(e){return{ACCOUNT_ID:e.accountId,MIDDLEWARE_URL:e.middlewareUrl,LOCALE:e.locale??y}}function re(e,t={}){const n={accountId:e.accountId,middlewareUrl:e.middlewareUrl,session:{sessionId:e.sessionId},variant:"floating",locale:e.locale??y,...t};return e.theme!==void 0&&(n.theme=e.theme),n}function ae(e,t={}){const n={accountId:e.accountId,middlewareUrl:e.middlewareUrl,session:{sessionId:e.sessionId},pageContext:{pageType:"pdp",sku:e.sku},mountTarget:e.mountTarget,...t};return e.theme!==void 0&&(n.theme=e.theme),n}function se(e,t={}){const n={accountId:e.accountId,middlewareUrl:e.middlewareUrl,session:{sessionId:e.sessionId},sku:e.sku,mountTarget:e.mountTarget,...t};return e.theme!==void 0&&(n.theme=e.theme),n}function le(e,t={}){return{enabled:!0,middlewareUrl:e,endpoint:"/analytics",fireAndForget:!0,useBeacon:!0,...t}}function ce(e){try{return document.querySelector(e),!0}catch{return!1}}function P(e,t){const n=[],i=e.mounts,a=[["qna",i.qna],["simrel",i.simrel],["chat",i.chat]];for(const[l,r]of a)if(r!==void 0){if(!ce(r)){n.push({code:"INVALID_SELECTOR",message:`[gengage preflight] ${l} mount selector is invalid CSS: "${r}"`,severity:"error"});continue}document.querySelector(r)||n.push({code:"MOUNT_NOT_FOUND",message:`[gengage preflight] ${l} mount target not found: "${r}" — widget will skip or wait for DOM`,severity:"warn"})}const s=e.gtm.idempotencyKey;if(window[s]!==void 0&&n.push({code:"DUPLICATE_IDEMPOTENCY",message:`[gengage preflight] window["${s}"] already exists — widgets may have already initialized`,severity:"warn"}),!t?.skipCspCheck){let l=!1;const r=d=>{d.blockedURI&&e.middlewareUrl.startsWith(d.blockedURI)&&(l=!0)};document.addEventListener("securitypolicyviolation",r);try{fetch(e.middlewareUrl,{method:"HEAD",mode:"no-cors"}).catch(()=>{})}catch{l=!0}document.removeEventListener("securitypolicyviolation",r),l&&n.push({code:"CSP_BLOCKED",message:`[gengage preflight] middleware URL may be blocked by Content-Security-Policy: "${e.middlewareUrl}". Add it to connect-src.`,severity:"warn"})}for(const l of n)l.severity==="error"?console.error(l.message):console.warn(l.message);return{ok:n.every(l=>l.severity!=="error"),warnings:n}}function de(e){const t=T(e);if(!t.success){const n=t.error.issues.map(i=>`${i.path.join(".")}: ${i.message}`).join("; ");throw new Error(`[gengage] Invalid runtime config: ${n}`)}return t.data}function ue(e,t,n){const i={accountId:e.accountId,middlewareUrl:e.middlewareUrl,idempotencyKey:e.gtm.idempotencyKey};return e.locale!==void 0&&(i.locale=e.locale),n!==void 0&&(i.pageContext=n,n.sku!==void 0&&(i.sku=n.sku)),i.chat={enabled:e.widgets.chat.enabled},e.mounts.chat!==void 0&&(i.chat.mountTarget=e.mounts.chat),i.qna={enabled:e.widgets.qna.enabled},e.mounts.qna!==void 0&&(i.qna.mountTarget=e.mounts.qna),i.simrel={enabled:e.widgets.simrel.enabled},e.mounts.simrel!==void 0&&(i.simrel.mountTarget=e.mounts.simrel),t?.onAddToCart!==void 0&&(i.onAddToCart=t.onAddToCart),t?.onProductNavigate!==void 0&&(i.onProductNavigate=t.onProductNavigate),t?.onScriptCall!==void 0&&(i.onScriptCall=t.onScriptCall),i}async function fe(e){const t=de(e.runtimeConfig);if(e.preflight!==!1){const s=P(t);if(!s.ok){const l=s.warnings.filter(r=>r.severity==="error");throw new Error(`[gengage] Preflight failed: ${l.map(r=>r.message).join("; ")}`)}}const n=e.contextResolver?.(),i=ue(t,e.hostActions,n),a=await I(i);if(e.contextResolver!==void 0){const s=e.contextResolver,l=()=>{const d=s();a.updateContext(d)};window.addEventListener("gengage:context:update",l);const r=a.destroy.bind(a);a.destroy=()=>{window.removeEventListener("gengage:context:update",l),r()}}return a}const he=[{pageType:"home",urlPatterns:["^/$","^/index\\.html?$","^/anasayfa$"]},{pageType:"search",urlPatterns:["/arama","/search","/ara\\?"],queryParam:"q"},{pageType:"cart",urlPatterns:["/sepet","/cart","/basket","/sepetim"]},{pageType:"plp",urlPatterns:["/kategori/","/category/","/c/","/koleksiyon/","/collection/"]},{pageType:"pdp",urlPatterns:["/urun/","/product/","/p/","/-p-","/-pm-"]}];function U(e,t){const n=t??(typeof window<"u"?new URL(window.location.href):null);if(!n)return"other";const i=e??he,a=n.pathname;for(const s of i)if(!(s.urlPatterns&&!s.urlPatterns.some(r=>{try{return new RegExp(r,"i").test(a)}catch{return!1}}))&&!(s.queryParam&&!n.searchParams.has(s.queryParam))&&!(s.selector&&typeof document<"u"&&!document.querySelector(s.selector)))return s.pageType;return"other"}function R(e){const t=e??(typeof window<"u"?new URL(window.location.href):null);if(!t)return;const n=t.pathname,i=n.match(/\/(?:p|urun|product)\/([^/?#]+)/i);if(i?.[1])return i[1];const a=n.match(/-p-(\d+)/i);if(a?.[1])return a[1]}function ge(e){const t=U(e),n={pageType:t};if(t==="pdp"){const i=R();i&&(n.sku=i)}return typeof window<"u"&&(n.url=window.location.href),n}const c="https://chatbe-dev.gengage.ai",q={koctascomtr:{accountId:"koctascomtr",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#ec6e00",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#222222",borderRadius:"8px",fontFamily:'"Source Sans Pro", "Helvetica Neue", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Ürün ara, soru sor",poweredBy:"Koçtaş AI Asistan"}},n11com:{accountId:"n11com",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#ff44ef",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#222222",borderRadius:"8px",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"14px"},chatI18n:{inputPlaceholder:"Ne aramıştınız?",poweredBy:"n11 AI Asistan"}},hepsiburadacom:{accountId:"hepsiburadacom",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#ff6000",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#333333",borderRadius:"8px",fontFamily:'"Open Sans", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Ürün ara veya soru sor",poweredBy:"Hepsiburada AI Asistan"}},arcelikcomtr:{accountId:"arcelikcomtr",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#e4002b",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#222222",borderRadius:"8px",fontFamily:'"Arcelik Sans", "Helvetica Neue", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Size nasıl yardımcı olabilirim?",poweredBy:"Arçelik AI Asistan"}},yatasbeddingcomtr:{accountId:"yatasbeddingcomtr",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#c8102e",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#333333",borderRadius:"8px",fontFamily:'"Nunito Sans", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Yatak, baza veya ürün arayın",poweredBy:"Yataş AI Asistan"}},trendyolcom:{accountId:"trendyolcom",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#f27a1a",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#333333",borderRadius:"6px",fontFamily:'"Source Sans Pro", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Ne aramıştınız?",poweredBy:"Trendyol AI Asistan"}},boynercomtr:{accountId:"boynercomtr",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#000000",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#333333",borderRadius:"4px",fontFamily:'"Montserrat", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Moda, kozmetik veya ev ürünleri arayın",poweredBy:"Boyner AI Asistan"}},evideacom:{accountId:"evideacom",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#e84393",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#2d3436",borderRadius:"8px",fontFamily:'"Poppins", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Ev dekorasyon ürünleri arayın",poweredBy:"Evidea AI Asistan"}},aygazcomtr:{accountId:"aygazcomtr",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#e30613",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#333333",borderRadius:"8px",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"14px"},chatI18n:{inputPlaceholder:"Aygaz ürünleri hakkında sorun",poweredBy:"Aygaz AI Asistan"}},otokoccomtr:{accountId:"otokoccomtr",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#003087",primaryForeground:"#ffffff",backgroundColor:"#ffffff",foregroundColor:"#333333",borderRadius:"8px",fontFamily:'"Roboto", Arial, sans-serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Araç veya hizmet arayın",poweredBy:"Otokoç AI Asistan"}},divanpastanelericomtr:{accountId:"divanpastanelericomtr",locale:"tr",middlewareUrl:c,theme:{primaryColor:"#8b1a2d",primaryForeground:"#ffffff",backgroundColor:"#faf8f5",foregroundColor:"#3d2c2e",borderRadius:"8px",fontFamily:'"Georgia", serif',fontSize:"14px"},chatI18n:{inputPlaceholder:"Ürün veya mağaza arayın",poweredBy:"Divan AI Asistan"}},screwfixcom:{accountId:"screwfixcom",locale:"en",middlewareUrl:c,theme:{primaryColor:"#f6a623",primaryForeground:"#1a1a1a",backgroundColor:"#ffffff",foregroundColor:"#333333",borderRadius:"4px",fontFamily:'"Arial", Helvetica, sans-serif',fontSize:"14px"},pricing:{currencySymbol:"£",currencyPosition:"prefix",thousandsSeparator:",",decimalSeparator:"."},chatI18n:{inputPlaceholder:"Search products or ask a question",poweredBy:"Screwfix AI Assistant"}}};function me(e){return q[e]}function pe(){return Object.keys(q)}exports.BaseWidget=o.BaseWidget;exports.DEFAULT_WIDGET_THEME_TOKENS=o.DEFAULT_WIDGET_THEME_TOKENS;exports.adaptV1Event=o.adaptV1Event;exports.basketAddEvent=o.basketAddEvent;exports.bootstrapSession=o.bootstrapSession;exports.buildChatEndpointUrl=o.buildChatEndpointUrl;exports.chatHistorySnapshotEvent=o.chatHistorySnapshotEvent;exports.checkoutCompleteEvent=o.checkoutCompleteEvent;exports.checkoutStartEvent=o.checkoutStartEvent;exports.consumeStream=o.consumeStream;exports.defaultUnknownUISpecRenderer=o.defaultUnknownUISpecRenderer;exports.dismissGlobalErrorToast=o.dismissGlobalErrorToast;exports.dispatch=o.dispatch;exports.getGlobalErrorMessage=o.getGlobalErrorMessage;exports.getWindowPageContext=o.getWindowPageContext;exports.listen=o.listen;exports.llmUsageEvent=o.llmUsageEvent;exports.mergeUISpecRegistry=o.mergeUISpecRegistry;exports.meteringIncrementEvent=o.meteringIncrementEvent;exports.meteringSummaryEvent=o.meteringSummaryEvent;exports.normalizeMiddlewareUrl=o.normalizeMiddlewareUrl;exports.normalizeProductGroupingsResponse=o.normalizeProductGroupingsResponse;exports.normalizeSimilarProductsResponse=o.normalizeSimilarProductsResponse;exports.productToNormalized=o.productToNormalized;exports.registerGlobalErrorToastListener=o.registerGlobalErrorToastListener;exports.renderUISpecWithRegistry=o.renderUISpecWithRegistry;exports.resolveSession=o.resolveSession;exports.showGlobalErrorToast=o.showGlobalErrorToast;exports.streamChunkEvent=o.streamChunkEvent;exports.streamDoneEvent=o.streamDoneEvent;exports.streamErrorEvent=o.streamErrorEvent;exports.streamPost=o.streamPost;exports.streamStartEvent=o.streamStartEvent;exports.streamUiSpecEvent=o.streamUiSpecEvent;exports.updatePageContext=o.updatePageContext;exports.widgetHistorySnapshotEvent=o.widgetHistorySnapshotEvent;exports.wireGADataLayer=o.wireGADataLayer;exports.wireQNAToChat=o.wireQNAToChat;exports.wireSimilarToChat=o.wireSimilarToChat;exports.withDefaultWidgetTheme=o.withDefaultWidgetTheme;exports.VoiceInput=f.VoiceInput;exports.isVoiceInputSupported=f.isVoiceInputSupported;exports.routeStreamAction=f.routeStreamAction;exports.sanitizeHtml=F.sanitizeHtml;exports.AccountRuntimeConfigSchema=p;exports.AnalyticsAuthModeSchema=v;exports.AnalyticsClient=E;exports.BASE_WIDGET_THEME=x;exports.DEFAULT_CUSTOMIZATION_LOCALE=y;exports.UnknownActionPolicySchema=_;exports.autoDetectPageContext=ge;exports.buildOverlayIdempotencyKey=Y;exports.createAccountIdentity=ie;exports.createAnalyticsClient=J;exports.createDefaultAccountRuntimeConfig=H;exports.createDefaultAnalyticsConfig=le;exports.createFloatingChatConfig=re;exports.createPdpQnaConfig=ae;exports.createPdpSimRelConfig=se;exports.destroyOverlayWidgets=V;exports.detectPageType=U;exports.extractSkuFromUrl=R;exports.getMerchantConfig=me;exports.getMerchantIds=pe;exports.getOverlayWidgets=k;exports.initGengageClient=fe;exports.initOverlayWidgets=I;exports.parseAccountRuntimeConfig=b;exports.preflightDiagnostics=P;exports.safeParseAccountRuntimeConfig=T;exports.withBaseTheme=oe;
|
|
2
2
|
//# sourceMappingURL=common.cjs.map
|