@smooai/chat-widget 0.10.0 → 0.10.1
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/dist/chat-widget.global.js +42 -7
- package/dist/chat-widget.global.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/element.ts +24 -0
- package/src/styles.ts +26 -7
package/dist/index.d.ts
CHANGED
|
@@ -253,6 +253,16 @@ declare class SmoothAgentChatElement extends HTMLElement {
|
|
|
253
253
|
private tickReveal;
|
|
254
254
|
/** Snap the bound bubble to the full buffered text immediately (reduced-motion / no-rAF). */
|
|
255
255
|
private snapReveal;
|
|
256
|
+
/**
|
|
257
|
+
* Full-page sizing probe: decide whether the host's container gives it a
|
|
258
|
+
* real box. With the `.wrap` flex chain hidden, `height: 100%` of a SIZED
|
|
259
|
+
* container still resolves (clientHeight > 0), while an auto-height parent
|
|
260
|
+
* (e.g. mounted straight into `<body>`) collapses to ~0. Only the latter
|
|
261
|
+
* gets `data-viewport-fallback`, whose CSS applies `min-height: 100dvh` —
|
|
262
|
+
* so an embed inside a fixed-height box never overflows it (the composer
|
|
263
|
+
* stays visible), and a bare full-page route still fills the viewport.
|
|
264
|
+
*/
|
|
265
|
+
private syncViewportFallback;
|
|
256
266
|
/** Cancel any in-flight reveal loop and clear its state (called on full rebuild). */
|
|
257
267
|
private resetReveal;
|
|
258
268
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/persistence.ts","../src/conversation.ts","../src/fingerprint.ts"],"mappings":";;;;UASiB,eAAA;;EAEb,IAAA;;EAEA,UAAA;EAJ4B;EAM5B,OAAA;EAN4B;EAQ5B,WAAA;EAJA;EAMA,SAAA;EAFA;EAIA,eAAA;EAAA;EAEA,mBAAA;EAEA;EAAA,UAAA;EAIA;EAFA,cAAA;EAUA;EARA,MAAA;EAYA;EANA,iBAAA;EAMsB;EAJtB,qBAAA;EAesB;EAbtB,kBAAA;EAasB;EAXtB,sBAAA;AAAA;;;;;;;;;KAWQ,cAAA;AAAA,UAEK,gBAAA;EAyBb;;;;EApBA,QAAA;EA6BmD;;;;EAxBnD,IAAA,GAAO,cAAA;EAqCP;EAnCA,OAAA;EAuCA;EArCA,SAAA;EA6CA;;;;;;EAtCA,OAAA;EAyDuB;EAvDvB,QAAA;;EAEA,SAAA;ECvDS;EDyDT,SAAA;;;ACzDoB;AAsDxB;;;EDUI,WAAA;IAAgB,MAAA;IAAgB,SAAA;IAAmB,SAAA;EAAA;ECVX;EDYxC,WAAA;ECPiB;EDSjB,QAAA;ECPQ;EDSR,sBAAA;ECPQ;EDSR,SAAA;ECPQ;;;;EDYR,cAAA;ECFQ;EDIR,WAAA;ECDQ;EDGR,YAAA;ECCQ;EDCR,YAAA;ECGQ;;;;;EDGR,YAAA;ECWQ;;;;;;EDJR,cAAA;ECuBA;;;;EDlBA,gBAAA;ECiCU;;;;ED5BV,cAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/config.ts","../src/element.ts","../src/loader-core.ts","../src/persistence.ts","../src/conversation.ts","../src/fingerprint.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1398,11 +1398,11 @@ function buildStyles(theme, mode = "popover") {
|
|
|
1398
1398
|
--sac-ease: cubic-bezier(.16, 1, .3, 1);
|
|
1399
1399
|
|
|
1400
1400
|
${mode === "fullpage" ? `/* Full-page: fill the host's box (sized by its container, else the viewport). */
|
|
1401
|
-
display:
|
|
1401
|
+
display: flex;
|
|
1402
|
+
flex-direction: column;
|
|
1402
1403
|
position: relative;
|
|
1403
1404
|
width: 100%;
|
|
1404
|
-
height: 100
|
|
1405
|
-
min-height: 100vh;` : `/* Popover: float in the bottom-right corner. */
|
|
1405
|
+
height: 100%;` : `/* Popover: float in the bottom-right corner. */
|
|
1406
1406
|
position: fixed;
|
|
1407
1407
|
bottom: 24px;
|
|
1408
1408
|
right: 24px;
|
|
@@ -1410,7 +1410,20 @@ function buildStyles(theme, mode = "popover") {
|
|
|
1410
1410
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
1411
1411
|
-webkit-font-smoothing: antialiased;
|
|
1412
1412
|
}
|
|
1413
|
-
|
|
1413
|
+
${mode === "fullpage" ? `
|
|
1414
|
+
/* Viewport fallback — the element sets this attribute only when the host's
|
|
1415
|
+
container gives it no resolved height (e.g. mounted straight into an
|
|
1416
|
+
auto-height <body>). A sized container always wins, so an embed inside a
|
|
1417
|
+
fixed-height box never overflows it (composer stays visible). */
|
|
1418
|
+
:host([data-viewport-fallback]) { min-height: 100dvh; }
|
|
1419
|
+
/* The render wrapper passes the host's box down to the panel via flex. */
|
|
1420
|
+
.wrap {
|
|
1421
|
+
flex: 1;
|
|
1422
|
+
display: flex;
|
|
1423
|
+
flex-direction: column;
|
|
1424
|
+
min-height: 0;
|
|
1425
|
+
}
|
|
1426
|
+
` : ""}
|
|
1414
1427
|
* { box-sizing: border-box; }
|
|
1415
1428
|
|
|
1416
1429
|
/* ───────────────────────────── Launcher ───────────────────────────── */
|
|
@@ -1492,11 +1505,13 @@ function buildStyles(theme, mode = "popover") {
|
|
|
1492
1505
|
pointer-events: none;
|
|
1493
1506
|
background: radial-gradient(120% 100% at 50% 0%, color-mix(in srgb, var(--sac-primary) 22%, transparent), transparent 70%);
|
|
1494
1507
|
}
|
|
1495
|
-
/* Full-page: the panel becomes the whole surface
|
|
1508
|
+
/* Full-page: the panel becomes the whole surface — it follows the host's box
|
|
1509
|
+
(via the .wrap flex chain), never a hardcoded viewport unit. */
|
|
1496
1510
|
.panel.fullpage {
|
|
1497
1511
|
width: 100%;
|
|
1498
|
-
|
|
1499
|
-
|
|
1512
|
+
flex: 1;
|
|
1513
|
+
height: auto;
|
|
1514
|
+
min-height: 0;
|
|
1500
1515
|
max-width: none;
|
|
1501
1516
|
max-height: none;
|
|
1502
1517
|
border: none;
|
|
@@ -2321,6 +2336,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
|
|
|
2321
2336
|
<div class="footer">powered by <b>smooth‑operator</b>${restoreLink}</div>
|
|
2322
2337
|
</div>`;
|
|
2323
2338
|
const container = document.createElement("div");
|
|
2339
|
+
container.className = "wrap";
|
|
2324
2340
|
container.innerHTML = `
|
|
2325
2341
|
${fullpage ? "" : `<button class="launcher" part="launcher" aria-label="Open chat">${ICON.spark}</button>`}
|
|
2326
2342
|
<div class="panel${fullpage ? " fullpage" : " hidden"}" part="panel" role="${fullpage ? "region" : "dialog"}" aria-label="${escapeHtml(resolved.agentName)} chat">
|
|
@@ -2364,6 +2380,7 @@ var SmoothAgentChatElement = class extends HTMLElement {
|
|
|
2364
2380
|
await this.controller?.connect().catch(() => {});
|
|
2365
2381
|
})();
|
|
2366
2382
|
});
|
|
2383
|
+
if (fullpage) this.syncViewportFallback();
|
|
2367
2384
|
if (fullpage && !gating) this.controller?.connect().catch(() => {});
|
|
2368
2385
|
this.syncOpenState();
|
|
2369
2386
|
if (!gating) this.renderMessages();
|
|
@@ -2853,6 +2870,24 @@ var SmoothAgentChatElement = class extends HTMLElement {
|
|
|
2853
2870
|
this.streamBubbleEl.textContent = this.streamTarget;
|
|
2854
2871
|
}
|
|
2855
2872
|
}
|
|
2873
|
+
/**
|
|
2874
|
+
* Full-page sizing probe: decide whether the host's container gives it a
|
|
2875
|
+
* real box. With the `.wrap` flex chain hidden, `height: 100%` of a SIZED
|
|
2876
|
+
* container still resolves (clientHeight > 0), while an auto-height parent
|
|
2877
|
+
* (e.g. mounted straight into `<body>`) collapses to ~0. Only the latter
|
|
2878
|
+
* gets `data-viewport-fallback`, whose CSS applies `min-height: 100dvh` —
|
|
2879
|
+
* so an embed inside a fixed-height box never overflows it (the composer
|
|
2880
|
+
* stays visible), and a bare full-page route still fills the viewport.
|
|
2881
|
+
*/
|
|
2882
|
+
syncViewportFallback() {
|
|
2883
|
+
const wrap = this.shadowRoot?.querySelector(".wrap");
|
|
2884
|
+
if (!wrap) return;
|
|
2885
|
+
const prev = wrap.style.display;
|
|
2886
|
+
wrap.style.display = "none";
|
|
2887
|
+
const heightless = this.clientHeight < 8;
|
|
2888
|
+
wrap.style.display = prev;
|
|
2889
|
+
this.toggleAttribute("data-viewport-fallback", heightless);
|
|
2890
|
+
}
|
|
2856
2891
|
/** Cancel any in-flight reveal loop and clear its state (called on full rebuild). */
|
|
2857
2892
|
resetReveal() {
|
|
2858
2893
|
if (this.rafId && typeof cancelAnimationFrame === "function") cancelAnimationFrame(this.rafId);
|