@gengage/assistant-fe 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -20
- package/dist/assistant-fe.css +1 -1
- package/dist/chat/components/ChatDrawer.d.ts +8 -4
- package/dist/chat/components/ChatDrawer.d.ts.map +1 -1
- package/dist/chat/index.d.ts +5 -0
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/types.d.ts +1 -1
- package/dist/chat.cjs +1 -1
- package/dist/chat.iife.js +16 -16
- package/dist/chat.iife.js.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/common/events.d.ts.map +1 -1
- package/dist/common/index.d.ts +2 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/native-webview.d.ts +61 -0
- package/dist/common/native-webview.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.cjs +1 -1
- package/dist/common.cjs.map +1 -1
- package/dist/common.js +197 -426
- package/dist/common.js.map +1 -1
- package/dist/index-BqIzV4ni.cjs +2 -0
- package/dist/index-BqIzV4ni.cjs.map +1 -0
- package/dist/index-CcOJTzYu.js +510 -0
- package/dist/index-CcOJTzYu.js.map +1 -0
- package/dist/index-DZ3Mi5xF.cjs +13 -0
- package/dist/index-DZ3Mi5xF.cjs.map +1 -0
- package/dist/index-FnP8WtfG.js +4571 -0
- package/dist/index-FnP8WtfG.js.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 +55 -50
- package/dist/index.js.map +1 -1
- package/dist/native/index.d.ts +3 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native.cjs +2 -0
- package/dist/native.cjs.map +1 -0
- package/dist/native.iife.js +97 -0
- package/dist/native.iife.js.map +1 -0
- package/dist/native.js +9 -0
- package/dist/native.js.map +1 -0
- 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 +1 -0
- package/dist/qna/index.d.ts.map +1 -1
- package/dist/qna/types.d.ts +1 -1
- package/dist/qna/types.d.ts.map +1 -1
- package/dist/qna.cjs +1 -1
- package/dist/qna.cjs.map +1 -1
- package/dist/qna.css +1 -1
- package/dist/qna.iife.js +14 -14
- package/dist/qna.iife.js.map +1 -1
- package/dist/qna.js +92 -80
- package/dist/qna.js.map +1 -1
- package/dist/{schemas-DhaO7I0-.cjs → schemas-DHzfUzwA.cjs} +22 -22
- package/dist/schemas-DHzfUzwA.cjs.map +1 -0
- package/dist/{schemas-BlkBmaA5.js → schemas-yF4IOEUi.js} +807 -755
- package/dist/schemas-yF4IOEUi.js.map +1 -0
- package/dist/simrel/components/ProductCard.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 +8 -8
- package/dist/simrel.iife.js.map +1 -1
- package/dist/simrel.js +218 -214
- package/dist/simrel.js.map +1 -1
- package/package.json +9 -2
- package/dist/index-B8EeSm-F.cjs +0 -13
- package/dist/index-B8EeSm-F.cjs.map +0 -1
- package/dist/index-BSpLCzAK.js +0 -4523
- package/dist/index-BSpLCzAK.js.map +0 -1
- package/dist/schemas-BlkBmaA5.js.map +0 -1
- package/dist/schemas-DhaO7I0-.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ contextual Q&A buttons, and a similar-products grid.
|
|
|
19
19
|
| **Chat** | `@gengage/assistant-fe/chat` | Floating AI chat drawer with streaming responses |
|
|
20
20
|
| **QNA** | `@gengage/assistant-fe/qna` | Contextual action buttons for product pages |
|
|
21
21
|
| **SimRel** | `@gengage/assistant-fe/simrel` | Similar / related product grid |
|
|
22
|
+
| **Native Bridge** | `@gengage/assistant-fe/native` | Android/iOS WebView bridge + native-ready overlay bootstrap |
|
|
22
23
|
|
|
23
24
|
> **`middlewareUrl` is required.** Set it in your initialization script to point to your
|
|
24
25
|
> Gengage backend. The SDK has no built-in default — you must always provide it explicitly.
|
|
@@ -55,14 +56,20 @@ npm install @gengage/assistant-fe
|
|
|
55
56
|
import { GengageChat, GengageQNA, GengageSimRel, bootstrapSession, wireQNAToChat } from '@gengage/assistant-fe';
|
|
56
57
|
|
|
57
58
|
const sessionId = bootstrapSession();
|
|
59
|
+
const middlewareUrl = 'https://YOUR_MIDDLEWARE_URL';
|
|
58
60
|
|
|
59
61
|
const chat = new GengageChat();
|
|
60
|
-
await chat.init({
|
|
62
|
+
await chat.init({
|
|
63
|
+
accountId: 'mystore',
|
|
64
|
+
middlewareUrl,
|
|
65
|
+
session: { sessionId },
|
|
66
|
+
});
|
|
61
67
|
|
|
62
68
|
// On PDP pages — mount QNA buttons and similar products
|
|
63
69
|
const qna = new GengageQNA();
|
|
64
70
|
await qna.init({
|
|
65
71
|
accountId: 'mystore',
|
|
72
|
+
middlewareUrl,
|
|
66
73
|
mountTarget: '#qna-section',
|
|
67
74
|
pageContext: { pageType: 'pdp', sku: currentSku },
|
|
68
75
|
session: { sessionId },
|
|
@@ -71,6 +78,7 @@ await qna.init({
|
|
|
71
78
|
const simrel = new GengageSimRel();
|
|
72
79
|
await simrel.init({
|
|
73
80
|
accountId: 'mystore',
|
|
81
|
+
middlewareUrl,
|
|
74
82
|
sku: currentSku,
|
|
75
83
|
mountTarget: '#similar-section',
|
|
76
84
|
session: { sessionId },
|
|
@@ -108,6 +116,103 @@ wireQNAToChat(); // auto-wires QNA button clicks → chat.openWithAction()
|
|
|
108
116
|
|
|
109
117
|
`initOverlayWidgets()` is safe to call multiple times from GTM; it de-duplicates by idempotency key.
|
|
110
118
|
|
|
119
|
+
## Native WebView SDK (Android / iOS)
|
|
120
|
+
|
|
121
|
+
Use the native helper package to bridge widget events with:
|
|
122
|
+
- iOS WKWebView (`webkit.messageHandlers`)
|
|
123
|
+
- Android `JavascriptInterface` (`window.GengageNative.postMessage`)
|
|
124
|
+
- React Native WebView (`window.ReactNativeWebView.postMessage`)
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
import { initNativeOverlayWidgets, applyNativeSession } from '@gengage/assistant-fe/native';
|
|
128
|
+
|
|
129
|
+
applyNativeSession({
|
|
130
|
+
sessionId: 'native-session-id',
|
|
131
|
+
userId: 'native-user-id',
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const { controller, bridge } = await initNativeOverlayWidgets({
|
|
135
|
+
accountId: 'yatasbeddingcomtr',
|
|
136
|
+
middlewareUrl: 'https://YOUR_MIDDLEWARE_URL',
|
|
137
|
+
locale: 'tr',
|
|
138
|
+
pageContext: { pageType: 'pdp', sku: '1066800' },
|
|
139
|
+
chat: {
|
|
140
|
+
variant: 'floating',
|
|
141
|
+
mobileInitialState: 'full',
|
|
142
|
+
},
|
|
143
|
+
qna: { mountTarget: '#gengage-qna' },
|
|
144
|
+
simrel: { mountTarget: '#gengage-simrel' },
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Optional manual command from JS side:
|
|
148
|
+
bridge.receive({ type: 'openChat', payload: { state: 'full' } });
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Inbound native commands supported by `bridge.receive(...)`:
|
|
152
|
+
`openChat`, `closeChat`, `updateContext`, `updateSku`, `setSession`, `destroy`.
|
|
153
|
+
|
|
154
|
+
Mobile SDK defaults (out-of-box):
|
|
155
|
+
- Commands received before overlay init are queued and replayed after controller is ready.
|
|
156
|
+
- `onAddToCart` and `onProductNavigate` auto-forward to native bridge messages if not provided.
|
|
157
|
+
- QNA/SimRel are auto-disabled when no mount exists (no noisy mount warnings).
|
|
158
|
+
- If QNA/SimRel are explicitly enabled but mount is missing, a default mount is auto-created.
|
|
159
|
+
|
|
160
|
+
Supported shorthand command envelopes:
|
|
161
|
+
|
|
162
|
+
```ts
|
|
163
|
+
bridge.receive('openChat');
|
|
164
|
+
bridge.receive({ command: 'updateSku', data: '1066800' } as unknown as { type: string });
|
|
165
|
+
bridge.receive({ action: 'setSession', sessionId: 's1', userId: 'u1' } as unknown as { type: string });
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### React Native (`react-native-webview`) host example
|
|
169
|
+
|
|
170
|
+
```tsx
|
|
171
|
+
import React, { useMemo } from 'react';
|
|
172
|
+
import { WebView } from 'react-native-webview';
|
|
173
|
+
|
|
174
|
+
const NATIVE_HTML = `
|
|
175
|
+
<!doctype html>
|
|
176
|
+
<html>
|
|
177
|
+
<body>
|
|
178
|
+
<div id="gengage-qna"></div>
|
|
179
|
+
<div id="gengage-simrel"></div>
|
|
180
|
+
<script type="module">
|
|
181
|
+
import { initNativeOverlayWidgets } from 'https://cdn.jsdelivr.net/npm/@gengage/assistant-fe/dist/native.js';
|
|
182
|
+
await initNativeOverlayWidgets({
|
|
183
|
+
accountId: 'yatasbeddingcomtr',
|
|
184
|
+
middlewareUrl: 'https://YOUR_MIDDLEWARE_URL',
|
|
185
|
+
pageContext: { pageType: 'pdp', sku: '1066800' },
|
|
186
|
+
});
|
|
187
|
+
</script>
|
|
188
|
+
</body>
|
|
189
|
+
</html>`;
|
|
190
|
+
|
|
191
|
+
export function GengageNativeOverlay() {
|
|
192
|
+
const injectedJavaScript = useMemo(
|
|
193
|
+
() =>
|
|
194
|
+
`window.gengageNative && window.gengageNative.receive(${JSON.stringify({
|
|
195
|
+
type: 'setSession',
|
|
196
|
+
payload: { sessionId: 'native-session-id', userId: 'native-user-id' },
|
|
197
|
+
})}); true;`,
|
|
198
|
+
[],
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
return (
|
|
202
|
+
<WebView
|
|
203
|
+
originWhitelist={['*']}
|
|
204
|
+
source={{ html: NATIVE_HTML }}
|
|
205
|
+
injectedJavaScript={injectedJavaScript}
|
|
206
|
+
onMessage={(event) => {
|
|
207
|
+
// event.nativeEvent.data is JSON from window.ReactNativeWebView.postMessage(...)
|
|
208
|
+
const message = JSON.parse(event.nativeEvent.data);
|
|
209
|
+
console.log('gengage-native-event', message);
|
|
210
|
+
}}
|
|
211
|
+
/>
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
111
216
|
---
|
|
112
217
|
|
|
113
218
|
## Repository Structure
|
|
@@ -123,6 +228,7 @@ gengage-assistant-fe/
|
|
|
123
228
|
│ │ └── components/ # Vanilla TS renderers (ChatDrawer, AITopPicks, etc.)
|
|
124
229
|
│ ├── qna/ # QNA widget (same structure)
|
|
125
230
|
│ ├── simrel/ # Similar Products widget (same structure)
|
|
231
|
+
│ ├── native/ # Native WebView bridge helper exports
|
|
126
232
|
│ └── index.ts # Barrel export
|
|
127
233
|
├── demos/
|
|
128
234
|
│ ├── koctascomtr/ # Koçtaş branded PDP (inline config)
|
|
@@ -137,7 +243,7 @@ gengage-assistant-fe/
|
|
|
137
243
|
│ └── native/ # Mobile WebView overlay
|
|
138
244
|
├── catalog/ # Visual component catalog (no backend needed)
|
|
139
245
|
│ ├── index.html # SPA shell
|
|
140
|
-
│ ├── vite.config.ts # Resolves @gengage/assistant-fe →
|
|
246
|
+
│ ├── vite.config.ts # Resolves @gengage/assistant-fe → src/
|
|
141
247
|
│ └── src/ # Router, layout, mock data, sections
|
|
142
248
|
├── scripts/
|
|
143
249
|
│ └── dev.ts # Dev server entry point (npm run dev)
|
|
@@ -155,13 +261,16 @@ gengage-assistant-fe/
|
|
|
155
261
|
|
|
156
262
|
| Command | Description |
|
|
157
263
|
|---------|-------------|
|
|
158
|
-
| `npm run dev -- <
|
|
264
|
+
| `npm run dev -- <demo> [--sku=SKU] [--port=3000] [--backend-url=URL]` | Start local dev server for any demo |
|
|
265
|
+
| `npm run dev -- --client=<demo> [--sku=SKU] [--port=3000] [--backend-url=URL]` | Same as above, using named demo flag |
|
|
159
266
|
| `npm run kill` | Kill zombie listeners on ports 3000-3010 |
|
|
160
|
-
| `npm run
|
|
267
|
+
| `npm run format` | Prettier + ESLint fix + `typecheck` + `typecheck:catalog` |
|
|
161
268
|
| `npm run dev -- koctascomtr --sku=1000465056` | Example: Koçtaş PDP with SKU 1000465056 |
|
|
162
269
|
| `npm run dev -- n11com --sku=ABC123 --port=3005` | Custom port |
|
|
270
|
+
| `npm run dev -- --client=yatasbeddingcomtr --sku=1066800 --backend-url=https://staging.example.com` | Demo alias + backend override |
|
|
163
271
|
| `npm run build` | Build all widgets to `dist/` |
|
|
164
272
|
| `npm run typecheck` | TypeScript strict check (no emit) |
|
|
273
|
+
| `npm run typecheck:catalog` | TypeScript check for `catalog/` |
|
|
165
274
|
| `npm run lint` | ESLint `src/` |
|
|
166
275
|
| `npm run test` | Vitest unit tests |
|
|
167
276
|
| `npm run test:e2e` | Playwright smoke tests |
|
|
@@ -170,21 +279,16 @@ gengage-assistant-fe/
|
|
|
170
279
|
|
|
171
280
|
### `npm run dev` — Local Widget Test Server
|
|
172
281
|
|
|
173
|
-
The dev server
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
Current focus is PDP mode (`product details`) with a concrete SKU.
|
|
177
|
-
PLP mode (`category / sku-list`) is planned and will be added as a separate harness flow.
|
|
282
|
+
The dev server serves `demos/<demo>/index.html` with HMR and supports optional query
|
|
283
|
+
injection via CLI flags (`--sku`, `--backend-url`). It also supports `--client=<demo>`
|
|
284
|
+
as an alias for the positional demo argument.
|
|
178
285
|
|
|
179
286
|
```
|
|
180
287
|
── Gengage Dev Server ──────────────────────────────
|
|
181
|
-
|
|
288
|
+
Demo: koctascomtr
|
|
182
289
|
SKU: 1234567
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
User ID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
|
|
186
|
-
View ID: 6ba7b811-9dad-11d1-80b4-00c04fd430c8
|
|
187
|
-
URL: http://localhost:3000
|
|
290
|
+
Backend: https://staging.example.com
|
|
291
|
+
URL: http://localhost:3000?sku=1234567&middlewareUrl=https%3A%2F%2Fstaging.example.com
|
|
188
292
|
────────────────────────────────────────────────────
|
|
189
293
|
```
|
|
190
294
|
|
|
@@ -197,16 +301,16 @@ The page shows:
|
|
|
197
301
|
|
|
198
302
|
HMR is active — editing `src/` files updates the page without a full reload.
|
|
199
303
|
|
|
200
|
-
> The dev server serves the
|
|
201
|
-
>
|
|
304
|
+
> The dev server serves the selected demo page from `demos/<demo>/index.html`,
|
|
305
|
+
> and keeps query options sticky if you open `/` directly.
|
|
202
306
|
|
|
203
307
|
### Component Catalog (`npm run catalog`)
|
|
204
308
|
|
|
205
309
|
A visual catalog that renders every component with mock data — no backend needed.
|
|
206
|
-
|
|
310
|
+
`npm run catalog` already runs `npm run build` first.
|
|
207
311
|
|
|
208
312
|
```bash
|
|
209
|
-
npm run
|
|
313
|
+
npm run catalog # Serves at :3002 (and builds first)
|
|
210
314
|
```
|
|
211
315
|
|
|
212
316
|
Open `http://localhost:3002` to see:
|
|
@@ -220,7 +324,7 @@ Open `http://localhost:3002` to see:
|
|
|
220
324
|
- **Theme Comparison** — same component rendered across all 12 merchant themes
|
|
221
325
|
- **Responsive Preview** — mobile / tablet / desktop viewport frames
|
|
222
326
|
|
|
223
|
-
The catalog lives in `catalog/` and is excluded from npm publish (`files
|
|
327
|
+
The catalog lives in `catalog/` and is excluded from npm publish (`files` publishes `dist/`, `README.md`, and `LICENSE`).
|
|
224
328
|
|
|
225
329
|
---
|
|
226
330
|
|
|
@@ -247,6 +351,7 @@ is the fully-wired reference. Copy it as a starting point for a new account.
|
|
|
247
351
|
| [docs/wire-protocol.md](docs/wire-protocol.md) | Backend ↔ frontend NDJSON contract |
|
|
248
352
|
| [docs/config-files.md](docs/config-files.md) | File-driven self-service account configuration |
|
|
249
353
|
| [docs/analytics-contract.md](docs/analytics-contract.md) | Stream/token/metering/history/checkout analytics contract |
|
|
354
|
+
| [docs/native-mobile-sdk.md](docs/native-mobile-sdk.md) | Android/iOS/React Native WebView integration guide |
|
|
250
355
|
| [CUSTOMIZATION-GUIDE.md](CUSTOMIZATION-GUIDE.md) | Fork/customize/deploy playbook for integrators and coding agents |
|
|
251
356
|
| [CONTRIBUTION-GUIDE.md](CONTRIBUTION-GUIDE.md) | SDK/core development guide for contributors and coding agents |
|
|
252
357
|
|
package/dist/assistant-fe.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.gengage-simrel-container{font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px);color:var(--gengage-foreground-color, #333);--_gengage-border-color: var(--gengage-border-color, #e5e7eb);--_gengage-discount-color: var(--gengage-discount-color, #ef4444);--_gengage-text-secondary: var(--gengage-text-secondary, #6b7280)}.gengage-simrel-uispec>*{animation:gengage-simrel-enter .2s cubic-bezier(.2,.72,.2,1) both}@keyframes gengage-simrel-enter{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-simrel-grid{display:grid;grid-template-columns:repeat(var(--gengage-simrel-columns, 4),minmax(0,1fr));gap:14px;padding:10px 0 16px}@media(max-width:992px){.gengage-simrel-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.gengage-simrel-grid{grid-template-columns:repeat(2,1fr);gap:12px}}.gengage-simrel-card{display:flex;flex-direction:column;border:1px solid #eee;border-radius:var(--gengage-simrel-card-radius, 16px);overflow:hidden;background:var(--gengage-background-color, #fff);cursor:pointer;transition:box-shadow .2s ease,transform .1s ease;box-shadow:0 2px 8px #0000000f}.gengage-simrel-card:hover{box-shadow:0 4px 16px #0000001f;transform:translateY(-2px)}.gengage-simrel-card-image{position:relative;aspect-ratio:1;overflow:hidden;background:#fff}.gengage-simrel-card-image img{width:100%;height:100%;object-fit:contain;padding:8px;box-sizing:border-box}.gengage-simrel-badge{position:absolute;top:8px;left:8px;padding:2px 8px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:12px;font-weight:600}.gengage-simrel-card-info{flex:1;padding:8px 10px 10px;display:flex;flex-direction:column;gap:4px;text-align:center}.gengage-simrel-card-brand{font-size:10px;color:#666}.gengage-simrel-card-name{font-size:13px;font-weight:600;color:#1f2937;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;min-height:0}.gengage-simrel-card-rating{font-size:12px;color:#f59e0b}.gengage-simrel-card-review-count{color:#9ca3af}.gengage-simrel-card-price{margin-top:auto;padding-top:4px;display:flex;align-items:baseline;justify-content:center;gap:4px}.gengage-simrel-card-price-original{text-decoration:line-through;color:#64748b;font-weight:400;font-size:12px}.gengage-simrel-card-price-current{font-size:16px;font-weight:800;color:#0f172a}.gengage-simrel-atc{display:flex;width:100%;border-top:1px solid var(--_gengage-border-color);border-left:none;border-right:none;border-bottom:none;border-radius:0;background:transparent}.gengage-simrel-atc.gengage-qty-stepper{gap:0;overflow:hidden;border-radius:0;border-top:1px solid #f1f5f9;border-left:none;border-right:none;border-bottom:none}.gengage-simrel-atc .gengage-qty-btn{width:32px;height:36px;color:#64748b;font-size:14px}.gengage-simrel-atc .gengage-qty-btn:hover:not(:disabled){background:#f1f5f9}.gengage-simrel-atc .gengage-qty-value{min-width:24px;font-size:13px;color:#334155}.gengage-simrel-atc .gengage-qty-submit{flex:1;border-left:1px solid var(--_gengage-border-color);background:transparent;color:var(--gengage-primary-color, #3b82f6);font-weight:700;font-size:12px;font-family:inherit;letter-spacing:.01em;padding:8px 10px;border-radius:0;transition:color .15s ease,background .15s ease}.gengage-simrel-atc .gengage-qty-submit:hover{color:var(--gengage-primary-color, #0b24d6);background:#f8fafc}.gengage-simrel-quick-actions{display:flex;flex-wrap:wrap;gap:8px;padding:6px 12px 12px}.gengage-simrel-quick-action{border:1px solid #d2d8e3;background:#f8fafc;color:#334155;border-radius:999px;padding:8px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.gengage-simrel-quick-action:hover{border-color:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-color, #3b82f6);box-shadow:0 6px 14px #0f172a1f;transform:translateY(-1px)}.gengage-simrel-empty{grid-column:1 / -1;text-align:center;padding:40px 20px;color:var(--_gengage-text-secondary)}.gengage-simrel-tabs{display:flex;gap:4px;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:16px;overflow-x:auto}.gengage-simrel-tab{padding:10px 14px;border:none;background:transparent;color:var(--_gengage-text-secondary);font-size:inherit;font-family:inherit;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}.gengage-simrel-tab:hover{color:var(--gengage-primary-color, #3b82f6)}.gengage-simrel-tab--active{color:var(--gengage-primary-color, #3b82f6);border-bottom-color:var(--gengage-primary-color, #3b82f6);font-weight:600}.gengage-simrel-loading{display:flex;justify-content:center;padding:40px}.gengage-simrel-spinner{width:32px;height:32px;border:3px solid var(--_gengage-border-color);border-top-color:var(--gengage-primary-color, #3b82f6);border-radius:50%;animation:gengage-simrel-spin .7s linear infinite}@keyframes gengage-simrel-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-simrel-grid{gap:10px;padding-top:8px}.gengage-simrel-atc.gengage-qty-stepper{flex-wrap:wrap}.gengage-simrel-atc .gengage-qty-btn{width:44px;height:44px;font-size:16px}.gengage-simrel-atc .gengage-qty-submit{min-height:44px;flex-basis:100%;border-left:none;border-top:1px solid var(--_gengage-border-color)}}.gengage-simrel-card:focus-visible,.gengage-simrel-tab:focus-visible,.gengage-simrel-quick-action:focus-visible,.gengage-simrel-atc .gengage-qty-btn:focus-visible,.gengage-simrel-atc .gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}@media(prefers-reduced-motion:reduce){.gengage-simrel-uispec>*,.gengage-simrel-card,.gengage-simrel-card-image img,.gengage-simrel-quick-action,.gengage-simrel-spinner{animation:none!important;transition:none!important;transform:none!important}}
|
|
1
|
+
.gengage-qna-container{font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px);color:var(--gengage-foreground-color, #333)}.gengage-qna-uispec>*{animation:gengage-qna-enter .15s cubic-bezier(.2,.72,.2,1) both}@keyframes gengage-qna-enter{0%{opacity:0;transform:translateY(4px) scale(.995)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-qna-buttons{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0 12px}.gengage-qna-button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 14px;border:none;border-radius:var(--gengage-qna-pill-radius, 999px);background:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-foreground, #fff);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:filter .14s ease,transform .12s ease;text-align:left;line-height:1.25}.gengage-qna-button:hover{filter:brightness(1.06);transform:translateY(-1px)}.gengage-qna-button:active{transform:translateY(1px) scale(.988)}.gengage-qna-button:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}.gengage-qna-cta{display:inline-flex;align-items:center;min-height:40px;padding:8px 14px;border:1px dashed color-mix(in srgb,var(--gengage-primary-color, #3b82f6) 65%,#cbd5e1 35%);border-radius:var(--gengage-qna-pill-radius, 999px);background:transparent;color:var(--gengage-primary-color, #3b82f6);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;opacity:.92;transition:opacity .12s ease,transform .12s ease;white-space:nowrap}.gengage-qna-cta:hover{opacity:1;transform:translateY(-1px)}.gengage-qna-input-wrapper{display:flex;gap:8px;padding:6px 0 2px;align-items:center}.gengage-qna-input{flex:1;min-width:0;height:48px;padding:0 14px 0 40px;border:1px solid #d5dbe7;border-radius:var(--gengage-qna-input-radius, 14px);font-size:15px;font-family:inherit;outline:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") 14px center no-repeat;transition:border-color .14s ease,box-shadow .14s ease}.gengage-qna-input::placeholder{transition:opacity .18s ease}.gengage-qna-input--fade::placeholder{opacity:0}.gengage-qna-input:focus{border-color:var(--gengage-primary-color, #3b82f6);box-shadow:0 0 0 3px color-mix(in srgb,var(--gengage-primary-color, #3b82f6) 18%,transparent)}.gengage-qna-send{min-width:60px;height:48px;padding:0 16px;border:1px dashed color-mix(in srgb,var(--gengage-primary-color, #3b82f6) 65%,#cbd5e1 35%);border-radius:var(--gengage-qna-pill-radius, 999px);background:transparent;color:var(--gengage-primary-color, #3b82f6);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;opacity:.92;transition:opacity .12s ease,transform .12s ease;white-space:nowrap}.gengage-qna-send:hover{opacity:1;transform:translateY(-1px)}.gengage-qna-send:active{transform:translateY(1px)}.gengage-qna-heading{font-size:1.04em;font-weight:700;margin:0 0 6px;color:var(--gengage-foreground-color, #333)}.gengage-qna-loading{display:flex;gap:4px;padding:12px 0}.gengage-qna-loading-dot{width:7px;height:7px;border-radius:50%;background:var(--gengage-primary-color, #3b82f6);opacity:.4;animation:gengage-qna-pulse 1.4s infinite ease-in-out both}.gengage-qna-loading-dot:nth-child(1){animation-delay:0s}.gengage-qna-loading-dot:nth-child(2){animation-delay:.16s}.gengage-qna-loading-dot:nth-child(3){animation-delay:.32s}@keyframes gengage-qna-pulse{0%,80%,to{opacity:.4;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@media(max-width:768px){.gengage-qna-buttons{gap:10px;padding:10px 0 14px}.gengage-qna-button,.gengage-qna-cta{min-height:44px;padding:10px 16px;font-size:14px;line-height:1.2}.gengage-qna-input-wrapper{flex-direction:column;gap:10px}.gengage-qna-input{width:100%;height:52px;padding-left:42px;font-size:16px}.gengage-qna-send{width:100%;min-height:48px;font-size:14px}}@media(prefers-reduced-motion:reduce){.gengage-qna-uispec>*,.gengage-qna-button,.gengage-qna-cta,.gengage-qna-send{animation:none!important;transition:none!important;transform:none!important}}.gengage-simrel-container{font-family:var(--gengage-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:var(--gengage-font-size, 14px);color:var(--gengage-foreground-color, #333);--_gengage-border-color: var(--gengage-border-color, #e5e7eb);--_gengage-discount-color: var(--gengage-discount-color, #ef4444);--_gengage-text-secondary: var(--gengage-text-secondary, #6b7280)}.gengage-simrel-uispec>*{animation:gengage-simrel-enter .2s cubic-bezier(.2,.72,.2,1) both}@keyframes gengage-simrel-enter{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.gengage-simrel-grid{display:grid;grid-template-columns:repeat(var(--gengage-simrel-columns, 4),minmax(0,1fr));gap:14px;padding:10px 0 16px}@media(max-width:992px){.gengage-simrel-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.gengage-simrel-grid{grid-template-columns:repeat(2,1fr);gap:12px}}.gengage-simrel-card{display:flex;flex-direction:column;position:relative;border:1px solid #eee;border-radius:var(--gengage-simrel-card-radius, 16px);overflow:hidden;background:var(--gengage-background-color, #fff);cursor:pointer;transition:box-shadow .2s ease,transform .1s ease;box-shadow:0 2px 8px #0000000f}.gengage-simrel-grid .gengage-simrel-card.gengage-chat-product-card{width:100%;min-width:0;max-width:none}.gengage-simrel-card:hover{box-shadow:0 4px 16px #0000001f;transform:translateY(-2px)}.gengage-simrel-card-image{position:relative;aspect-ratio:1;overflow:hidden;background:#fff}.gengage-simrel-card-image img{width:100%;height:100%;object-fit:contain;padding:8px;box-sizing:border-box}.gengage-simrel-badge{position:absolute;top:8px;left:8px;padding:2px 8px;border-radius:4px;background:var(--_gengage-discount-color);color:#fff;font-size:12px;font-weight:600}.gengage-simrel-card-info{flex:1;padding:8px 10px 10px;display:flex;flex-direction:column;gap:4px;text-align:center}.gengage-simrel-card-brand{font-size:10px;color:#666}.gengage-simrel-card-name{font-size:13px;font-weight:600;color:#1f2937;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;min-height:0}.gengage-simrel-card-rating{font-size:12px;color:#f59e0b}.gengage-simrel-card-review-count{color:#9ca3af}.gengage-simrel-card-price{margin-top:auto;padding-top:4px;display:flex;align-items:baseline;justify-content:center;gap:4px}.gengage-simrel-card-price-original{text-decoration:line-through;color:#64748b;font-weight:400;font-size:12px}.gengage-simrel-card-price-current{font-size:16px;font-weight:800;color:#0f172a}.gengage-simrel-card-cta{width:100%;min-height:40px;border:none;border-top:1px solid #f1f5f9;border-radius:0;background:transparent;font-family:inherit;cursor:pointer}.gengage-simrel-container .gengage-simrel-atc{display:flex;width:100%;border-top:1px solid var(--_gengage-border-color);border-left:none;border-right:none;border-bottom:none;border-radius:0;background:transparent}.gengage-simrel-container .gengage-simrel-atc.gengage-qty-stepper{gap:0;overflow:hidden;border-radius:0;border-top:1px solid #f1f5f9;border-left:none;border-right:none;border-bottom:none}.gengage-simrel-container .gengage-simrel-atc .gengage-qty-btn{width:32px;height:36px;color:#64748b;font-size:14px}.gengage-simrel-container .gengage-simrel-atc .gengage-qty-btn:hover:not(:disabled){background:#f1f5f9}.gengage-simrel-container .gengage-simrel-atc .gengage-qty-value{min-width:24px;font-size:13px;color:#334155}.gengage-simrel-container .gengage-simrel-atc .gengage-qty-submit{flex:1;border-left:1px solid var(--_gengage-border-color);background:transparent;color:var(--gengage-primary-color, #3b82f6);font-weight:700;font-size:12px;font-family:inherit;letter-spacing:.01em;padding:8px 10px;border-radius:0;transition:color .15s ease,background .15s ease}.gengage-simrel-container .gengage-simrel-atc .gengage-qty-submit:hover{color:var(--gengage-primary-color, #0b24d6);background:#f8fafc}.gengage-simrel-quick-actions{display:flex;flex-wrap:wrap;gap:8px;padding:6px 12px 12px}.gengage-simrel-quick-action{border:1px solid #d2d8e3;background:#f8fafc;color:#334155;border-radius:999px;min-height:40px;padding:8px 10px;font-size:12px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.gengage-simrel-quick-action:hover{border-color:var(--gengage-primary-color, #3b82f6);color:var(--gengage-primary-color, #3b82f6);box-shadow:0 6px 14px #0f172a1f;transform:translateY(-1px)}.gengage-simrel-empty{grid-column:1 / -1;text-align:center;padding:40px 20px;color:var(--_gengage-text-secondary)}.gengage-simrel-tabs{display:flex;gap:4px;border-bottom:2px solid var(--_gengage-border-color);margin-bottom:16px;overflow-x:auto}.gengage-simrel-tab{min-height:40px;padding:10px 14px;border:none;background:transparent;color:var(--_gengage-text-secondary);font-size:inherit;font-family:inherit;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}.gengage-simrel-tab:hover{color:var(--gengage-primary-color, #3b82f6)}.gengage-simrel-tab--active{color:var(--gengage-primary-color, #3b82f6);border-bottom-color:var(--gengage-primary-color, #3b82f6);font-weight:600}.gengage-simrel-loading{display:flex;justify-content:center;padding:40px}.gengage-simrel-spinner{width:32px;height:32px;border:3px solid var(--_gengage-border-color);border-top-color:var(--gengage-primary-color, #3b82f6);border-radius:50%;animation:gengage-simrel-spin .7s linear infinite}@keyframes gengage-simrel-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.gengage-simrel-grid{gap:10px;padding-top:8px}.gengage-simrel-card-cta,.gengage-simrel-quick-action,.gengage-simrel-tab{min-height:44px}.gengage-simrel-container .gengage-simrel-atc .gengage-qty-btn{width:44px;height:44px;font-size:16px}.gengage-simrel-container .gengage-simrel-atc .gengage-qty-submit{min-height:44px;flex-basis:auto;border-left:1px solid var(--_gengage-border-color);border-top:none}}.gengage-simrel-card:focus-visible,.gengage-simrel-tab:focus-visible,.gengage-simrel-quick-action:focus-visible,.gengage-simrel-atc .gengage-qty-btn:focus-visible,.gengage-simrel-atc .gengage-qty-submit:focus-visible{outline:2px solid var(--gengage-primary-color, #3b82f6);outline-offset:2px}@media(prefers-reduced-motion:reduce){.gengage-simrel-uispec>*,.gengage-simrel-card,.gengage-simrel-card-image img,.gengage-simrel-quick-action,.gengage-simrel-spinner{animation:none!important;transition:none!important;transform:none!important}}
|
|
@@ -41,7 +41,6 @@ export declare class ChatDrawer {
|
|
|
41
41
|
private _panelEl;
|
|
42
42
|
private _panelVisible;
|
|
43
43
|
private _panelCollapsed;
|
|
44
|
-
private _panelForceExpanded;
|
|
45
44
|
private _dividerEl;
|
|
46
45
|
private _onPanelToggle;
|
|
47
46
|
private _pendingAttachment;
|
|
@@ -64,6 +63,7 @@ export declare class ChatDrawer {
|
|
|
64
63
|
private _micBtn;
|
|
65
64
|
private _voiceEnabled;
|
|
66
65
|
private _voiceLang;
|
|
66
|
+
private _ignoreNextDividerClick;
|
|
67
67
|
constructor(container: HTMLElement, options: ChatDrawerOptions);
|
|
68
68
|
addMessage(message: ChatMessage): void;
|
|
69
69
|
showTypingIndicator(searchText?: string): void;
|
|
@@ -108,11 +108,15 @@ export declare class ChatDrawer {
|
|
|
108
108
|
* Hide the panel and clear its content. Always hides — even in force-expanded mode.
|
|
109
109
|
* Callers: _hideDrawer (stale panel cleanup), stream onDone (loading skeleton cleanup),
|
|
110
110
|
* thread navigation (no snapshot to restore). All require full hide.
|
|
111
|
+
* Keeps `_panelCollapsed` untouched so user collapse preference survives future panel renders.
|
|
111
112
|
*/
|
|
112
113
|
clearPanel(): void;
|
|
113
114
|
/** Expand panel without locking — user can still toggle via divider. */
|
|
114
115
|
expandPanel(): void;
|
|
115
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* Ensure the panel starts expanded (panelMode: 'expanded').
|
|
118
|
+
* Users can still collapse/expand via the divider chevron.
|
|
119
|
+
*/
|
|
116
120
|
setForceExpanded(): void;
|
|
117
121
|
/** Toggle panel between collapsed and expanded. */
|
|
118
122
|
togglePanel(): void;
|
|
@@ -122,8 +126,8 @@ export declare class ChatDrawer {
|
|
|
122
126
|
setPanelCollapsed(collapsed: boolean): void;
|
|
123
127
|
/** Save panel collapsed state to sessionStorage. */
|
|
124
128
|
persistPanelState(accountId: string): void;
|
|
125
|
-
/** Restore panel collapsed state from sessionStorage. */
|
|
126
|
-
restorePanelState(accountId: string):
|
|
129
|
+
/** Restore panel collapsed state from sessionStorage. Returns true when restored as collapsed. */
|
|
130
|
+
restorePanelState(accountId: string): boolean;
|
|
127
131
|
/** Re-render thinking steps inside the existing typing indicator container. */
|
|
128
132
|
private _renderThinkingSteps;
|
|
129
133
|
/** Render the accumulated thinking-step checklist into a container element. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatDrawer.d.ts","sourceRoot":"","sources":["../../../src/chat/components/ChatDrawer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAOzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,oFAAoF;AACpF,QAAA,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQlD,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACvC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1C,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5D,yDAAyD;IACzD,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"ChatDrawer.d.ts","sourceRoot":"","sources":["../../../src/chat/components/ChatDrawer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAOzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,oFAAoF;AACpF,QAAA,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQlD,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACvC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1C,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5D,yDAAyD;IACzD,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,WAAW,CAAwD;IAC3E,OAAO,CAAC,YAAY,CAAkD;IACtE,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB;IA6c9D,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAkEtC,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAgC9C,qFAAqF;IACrF,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,qBAAqB,IAAI,IAAI;IAM7B,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAsBvD,aAAa,IAAI,IAAI;IAIrB,0DAA0D;IAC1D,QAAQ,CACN,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACzG,IAAI;IA2DP,UAAU,IAAI,IAAI;IAIlB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,GAAG,IAAI;IAMzD,cAAc,IAAI,IAAI;IAItB,UAAU,IAAI,WAAW;IAIzB,0DAA0D;IAC1D,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAcjC,qDAAqD;IACrD,eAAe,IAAI,IAAI;IAUvB,yDAAyD;IACzD,oBAAoB,IAAI,IAAI,GAAG,IAAI;IAInC,gDAAgD;IAChD,eAAe,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAetC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAUzC,wEAAwE;IACxE,sBAAsB,IAAI,WAAW,GAAG,IAAI;IAe5C,2GAA2G;IAC3G,eAAe,IAAI,OAAO;IAI1B,6DAA6D;IAC7D,cAAc,IAAI,OAAO;IAIzB,+EAA+E;IAC/E,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IA6D5C,iDAAiD;IACjD,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7E;;;;;OAKG;IACH,UAAU,IAAI,IAAI;IASlB,wEAAwE;IACxE,WAAW,IAAI,IAAI;IAUnB;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAYxB,mDAAmD;IACnD,WAAW,IAAI,IAAI;IAInB,4DAA4D;IAC5D,gBAAgB,IAAI,OAAO;IAI3B,kDAAkD;IAClD,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAa3C,oDAAoD;IACpD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAa1C,kGAAkG;IAClG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAa7C,+EAA+E;IAC/E,OAAO,CAAC,oBAAoB;IAa5B,+EAA+E;IAC/E,OAAO,CAAC,wBAAwB;IAkChC,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,YAAY;IAcpB,uFAAuF;IACvF,oBAAoB,IAAI,IAAI;IAI5B,mFAAmF;IACnF,OAAO,CAAC,eAAe;IASvB,gFAAgF;IAChF,sBAAsB,IAAI,IAAI;IAI9B,mFAAmF;IACnF,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAavD,mFAAmF;IACnF,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ5C,8EAA8E;IAC9E,kBAAkB,IAAI,IAAI;IAsB1B,+EAA+E;IAC/E,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAgC7F,8BAA8B;IAC9B,mBAAmB,IAAI,IAAI;IAK3B,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAS9C,cAAc,IAAI,IAAI;CAGvB"}
|
package/dist/chat/index.d.ts
CHANGED
|
@@ -32,6 +32,10 @@ export declare class GengageChat extends BaseWidget<ChatWidgetConfig> {
|
|
|
32
32
|
private _mobileBreakpoint;
|
|
33
33
|
private _isMobileViewport;
|
|
34
34
|
private _pdpLaunched;
|
|
35
|
+
/** True while the initial silent PDP launch request is in flight. */
|
|
36
|
+
private _pdpPrimingInFlight;
|
|
37
|
+
/** User messages queued until silent PDP priming completes. */
|
|
38
|
+
private _queuedUserMessages;
|
|
35
39
|
private _productContextUnavailableSku;
|
|
36
40
|
private _i18n;
|
|
37
41
|
private _extendedModeManager;
|
|
@@ -105,6 +109,7 @@ export declare class GengageChat extends BaseWidget<ChatWidgetConfig> {
|
|
|
105
109
|
private _applyOpenStateClasses;
|
|
106
110
|
private _handleAttachment;
|
|
107
111
|
private _sendMessage;
|
|
112
|
+
private _flushQueuedUserMessages;
|
|
108
113
|
private _sendAction;
|
|
109
114
|
/** Return messages visible at the current thread cursor. */
|
|
110
115
|
private _getVisibleMessages;
|
package/dist/chat/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAA0C,MAAM,oBAAoB,CAAC;AAO7G,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAsCtD,OAAO,KAAK,EACV,gBAAgB,EAMjB,MAAM,YAAY,CAAC;AA+BpB,qBAAa,WAAY,SAAQ,UAAU,CAAC,gBAAgB,CAAC;IAC3D,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAqB;IAGtC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,iBAAiB,CAA8B;IACvD,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,wEAAwE;IACxE,OAAO,CAAC,aAAa,CAAuB;IAC5C,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAAM;IAC5B,2EAA2E;IAC3E,OAAO,CAAC,mBAAmB,CAA4D;IACvF,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,uBAAuB,CAAgB;IAC/C,OAAO,CAAC,iBAAiB,CAAwB;IACjD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,iBAAiB,CAAO;IAChC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,6BAA6B,CAAuB;IAC5D,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,oBAAoB,CAAoC;IAChE,oFAAoF;IACpF,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB,CAA4B;IACpD,6FAA6F;IAC7F,OAAO,CAAC,sBAAsB,CAAuB;IACrD,iEAAiE;IACjE,OAAO,CAAC,iBAAiB,CAA+C;IACxE,kEAAkE;IAClE,OAAO,CAAC,iBAAiB,CAAuB;IAChD,oEAAoE;IACpE,OAAO,CAAC,aAAa,CAAS;IAC9B,6EAA6E;IAC7E,OAAO,CAAC,eAAe,CAGf;IACR,oFAAoF;IACpF,OAAO,CAAC,cAAc,CAAwC;IAC9D,wDAAwD;IACxD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,oBAAoB,CAA0B;IACtD,2DAA2D;IAC3D,OAAO,CAAC,MAAM,CAA6B;IAC3C,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAmC;IACnD,gGAAgG;IAChG,OAAO,CAAC,eAAe,CAA2F;cAElG,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwP/D,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAOvD,SAAS,CAAC,MAAM,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/types.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export interface ChatWidgetConfig extends BaseWidgetConfig {
|
|
|
38
38
|
* Panel display mode:
|
|
39
39
|
* - 'auto' : Panel appears/hides with content; user can toggle (default)
|
|
40
40
|
* - 'collapsed' : Panel starts collapsed; user can expand
|
|
41
|
-
* - 'expanded' : Panel
|
|
41
|
+
* - 'expanded' : Panel starts expanded (users can still collapse/expand)
|
|
42
42
|
*/
|
|
43
43
|
panelMode?: 'auto' | 'collapsed' | 'expanded';
|
|
44
44
|
/**
|
package/dist/chat.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./schemas-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./schemas-DHzfUzwA.cjs");const e=require("./index-DZ3Mi5xF.cjs");require("./quantity-stepper-UbAp53Ow.cjs");exports.GengageChat=e.GengageChat;exports.chatCatalog=e.chatCatalog;exports.createChatWidget=e.createChatWidget;exports.createDefaultChatUISpecRegistry=e.createDefaultChatUISpecRegistry;exports.defaultChatUnknownUISpecRenderer=e.defaultChatUnknownUISpecRenderer;exports.renderUISpec=e.renderUISpec;
|
|
2
2
|
//# sourceMappingURL=chat.cjs.map
|