@wix/web5-embed 0.1.2 → 0.1.4
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/hostChrome.d.ts +69 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +279 -255
- package/dist/index.js.map +1 -1
- package/dist/shared.d.ts +21 -27
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,345 +1,324 @@
|
|
|
1
|
-
const
|
|
2
|
-
function
|
|
3
|
-
if (
|
|
4
|
-
if (typeof
|
|
5
|
-
return
|
|
1
|
+
const l = "__web5InputFocusShortcut__", C = 'input, textarea, [contenteditable=""], [contenteditable="true"]', v = '[role="dialog"][aria-modal="true"]';
|
|
2
|
+
function E(e) {
|
|
3
|
+
if (e.hasAttribute("inert")) return !1;
|
|
4
|
+
if (typeof e.checkVisibility == "function")
|
|
5
|
+
return e.checkVisibility({
|
|
6
6
|
checkOpacity: !0,
|
|
7
7
|
checkVisibilityCSS: !0
|
|
8
8
|
});
|
|
9
|
-
const
|
|
10
|
-
return !(
|
|
9
|
+
const t = getComputedStyle(e);
|
|
10
|
+
return !(t.visibility === "hidden" || t.display === "none" || parseFloat(t.opacity) === 0);
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
const
|
|
14
|
-
for (const n of
|
|
15
|
-
if (n instanceof Element && typeof n.matches == "function" && n.matches(
|
|
12
|
+
function T(e) {
|
|
13
|
+
const t = e.composedPath();
|
|
14
|
+
for (const n of t)
|
|
15
|
+
if (n instanceof Element && typeof n.matches == "function" && n.matches(C))
|
|
16
16
|
return !0;
|
|
17
17
|
return !1;
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
const
|
|
21
|
-
if (
|
|
22
|
-
const
|
|
19
|
+
function j() {
|
|
20
|
+
const e = window;
|
|
21
|
+
if (e[l]) return e[l];
|
|
22
|
+
const t = [];
|
|
23
23
|
let n = !1;
|
|
24
|
-
const
|
|
24
|
+
const o = (i) => {
|
|
25
25
|
if (i.defaultPrevented || i.isComposing) return;
|
|
26
|
-
const c = i.key === "/" && !i.metaKey && !i.ctrlKey && !i.altKey && !i.shiftKey,
|
|
27
|
-
if (!c && !
|
|
28
|
-
const
|
|
29
|
-
for (const
|
|
30
|
-
if (
|
|
31
|
-
const
|
|
32
|
-
if (!
|
|
26
|
+
const c = i.key === "/" && !i.metaKey && !i.ctrlKey && !i.altKey && !i.shiftKey, u = (i.metaKey || i.ctrlKey) && !i.altKey && i.key.toLowerCase() === "k";
|
|
27
|
+
if (!c && !u || c && T(i)) return;
|
|
28
|
+
const b = document.querySelectorAll(v);
|
|
29
|
+
for (const d of b)
|
|
30
|
+
if (E(d)) return;
|
|
31
|
+
const f = t.find((d) => d.isVisible());
|
|
32
|
+
if (!f) return;
|
|
33
33
|
i.preventDefault();
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
n || (window.addEventListener("keydown",
|
|
38
|
-
},
|
|
39
|
-
!n ||
|
|
40
|
-
},
|
|
34
|
+
const y = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
35
|
+
f.focus(y);
|
|
36
|
+
}, r = () => {
|
|
37
|
+
n || (window.addEventListener("keydown", o), n = !0);
|
|
38
|
+
}, a = () => {
|
|
39
|
+
!n || t.length > 0 || (window.removeEventListener("keydown", o), n = !1);
|
|
40
|
+
}, s = {
|
|
41
41
|
register(i) {
|
|
42
|
-
|
|
42
|
+
t.includes(i) || t.push(i), r();
|
|
43
43
|
},
|
|
44
44
|
unregister(i) {
|
|
45
|
-
const c =
|
|
46
|
-
c >= 0 &&
|
|
45
|
+
const c = t.indexOf(i);
|
|
46
|
+
c >= 0 && t.splice(c, 1), a();
|
|
47
47
|
},
|
|
48
48
|
__teardown() {
|
|
49
|
-
|
|
49
|
+
t.length = 0, n && (window.removeEventListener("keydown", o), n = !1);
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
return
|
|
52
|
+
return e[l] = s, s;
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
const
|
|
56
|
-
|
|
54
|
+
function J() {
|
|
55
|
+
const e = window;
|
|
56
|
+
e[l]?.__teardown(), delete e[l];
|
|
57
57
|
}
|
|
58
|
-
const
|
|
59
|
-
async function
|
|
60
|
-
const
|
|
58
|
+
const I = "https://www.wixapis.com/web50-server/static-versions", m = "__web5_static_versions";
|
|
59
|
+
async function _(e = I) {
|
|
60
|
+
const t = await fetch(e, {
|
|
61
61
|
method: "GET",
|
|
62
62
|
headers: { Accept: "application/json" },
|
|
63
63
|
mode: "cors",
|
|
64
64
|
credentials: "omit"
|
|
65
65
|
});
|
|
66
|
-
if (!
|
|
67
|
-
throw new Error(`[Web5Embed] static-versions returned ${
|
|
68
|
-
return
|
|
66
|
+
if (!t.ok)
|
|
67
|
+
throw new Error(`[Web5Embed] static-versions returned ${t.status}`);
|
|
68
|
+
return t.json();
|
|
69
69
|
}
|
|
70
|
-
function
|
|
71
|
-
const n =
|
|
70
|
+
function w(e, t) {
|
|
71
|
+
const n = e.find((o) => o.artifactId === t);
|
|
72
72
|
if (!n)
|
|
73
73
|
throw new Error(
|
|
74
|
-
`[Web5Embed] artifact ${
|
|
74
|
+
`[Web5Embed] artifact ${t} not found in static-versions`
|
|
75
75
|
);
|
|
76
76
|
return n.version;
|
|
77
77
|
}
|
|
78
|
-
function
|
|
79
|
-
return window[
|
|
78
|
+
function S() {
|
|
79
|
+
return window[m];
|
|
80
80
|
}
|
|
81
|
-
function
|
|
82
|
-
window[
|
|
81
|
+
function A(e) {
|
|
82
|
+
window[m] = e;
|
|
83
83
|
}
|
|
84
|
-
const
|
|
84
|
+
const k = {
|
|
85
85
|
staticVersionsUrl: "https://www.wixapis.com/web50-server/static-versions",
|
|
86
86
|
tokensCdnBase: "https://static.parastorage.com/services/web50-server-ui",
|
|
87
87
|
tokensArtifactId: "com.wixpress.web50-server-ui",
|
|
88
88
|
tokensFileName: "prompt-input-tokens.css",
|
|
89
89
|
fallbackVersion: "1.459.0"
|
|
90
90
|
};
|
|
91
|
-
function
|
|
92
|
-
return { ...
|
|
91
|
+
function p(e) {
|
|
92
|
+
return { ...k, ...e ?? {} };
|
|
93
93
|
}
|
|
94
|
-
function
|
|
95
|
-
const { tokensCdnBase: n, tokensFileName:
|
|
96
|
-
return `${n}/${
|
|
94
|
+
function L(e, t) {
|
|
95
|
+
const { tokensCdnBase: n, tokensFileName: o } = p(t);
|
|
96
|
+
return `${n}/${e}/${o}`;
|
|
97
97
|
}
|
|
98
|
-
async function M(
|
|
99
|
-
const
|
|
98
|
+
async function M(e) {
|
|
99
|
+
const t = p(e);
|
|
100
100
|
try {
|
|
101
|
-
const n =
|
|
102
|
-
if (n) return
|
|
103
|
-
const
|
|
104
|
-
return
|
|
101
|
+
const n = S();
|
|
102
|
+
if (n) return w(n, t.tokensArtifactId);
|
|
103
|
+
const o = await _(t.staticVersionsUrl);
|
|
104
|
+
return A(o), w(o, t.tokensArtifactId);
|
|
105
105
|
} catch (n) {
|
|
106
106
|
return console.warn(
|
|
107
107
|
"[Web5Embed] Failed to resolve prompt token version, using fallback:",
|
|
108
108
|
n
|
|
109
|
-
),
|
|
109
|
+
), t.fallbackVersion;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
async function
|
|
113
|
-
const
|
|
114
|
-
return
|
|
112
|
+
async function H(e) {
|
|
113
|
+
const t = await M(e);
|
|
114
|
+
return L(t, e);
|
|
115
115
|
}
|
|
116
|
-
async function
|
|
117
|
-
if (
|
|
116
|
+
async function X(e, t) {
|
|
117
|
+
if (e.querySelector(
|
|
118
118
|
'link[data-web5-prompt-input-tokens="true"]'
|
|
119
119
|
)) return;
|
|
120
|
-
const
|
|
121
|
-
|
|
120
|
+
const o = document.createElement("link");
|
|
121
|
+
o.rel = "stylesheet", o.dataset.web5PromptInputTokens = "true", o.href = await H(t), e.prepend(o);
|
|
122
122
|
}
|
|
123
|
-
const
|
|
123
|
+
const Y = `
|
|
124
124
|
<svg class="web5-submit-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
|
125
125
|
<path d="M13.0306 7.53114C12.9609 7.60106 12.8781 7.65654 12.787 7.69439C12.6958 7.73224 12.5981 7.75173 12.4993 7.75173C12.4006 7.75173 12.3029 7.73224 12.2117 7.69439C12.1206 7.65654 12.0378 7.60106 11.9681 7.53114L8.74997 4.31301V13.5005C8.74997 13.6994 8.67095 13.8902 8.5303 14.0308C8.38965 14.1715 8.19888 14.2505 7.99997 14.2505C7.80106 14.2505 7.61029 14.1715 7.46964 14.0308C7.32899 13.8902 7.24997 13.6994 7.24997 13.5005V4.31301L4.0306 7.53114C3.8897 7.67203 3.69861 7.75119 3.49935 7.75119C3.30009 7.75119 3.10899 7.67203 2.9681 7.53114C2.8272 7.39024 2.74805 7.19915 2.74805 6.99989C2.74805 6.80063 2.8272 6.60953 2.9681 6.46864L7.4681 1.96864C7.53778 1.89872 7.62057 1.84324 7.71173 1.80539C7.8029 1.76753 7.90064 1.74805 7.99935 1.74805C8.09806 1.74805 8.1958 1.76753 8.28696 1.80539C8.37813 1.84324 8.46092 1.89872 8.5306 1.96864L13.0306 6.46864C13.1005 6.53832 13.156 6.62111 13.1938 6.71227C13.2317 6.80344 13.2512 6.90118 13.2512 6.99989C13.2512 7.0986 13.2317 7.19634 13.1938 7.2875C13.156 7.37867 13.1005 7.46146 13.0306 7.53114Z" fill="currentColor" />
|
|
126
126
|
</svg>
|
|
127
127
|
`;
|
|
128
|
-
function
|
|
129
|
-
return `${
|
|
130
|
-
}
|
|
131
|
-
function
|
|
132
|
-
return
|
|
133
|
-
}
|
|
134
|
-
const
|
|
135
|
-
async function G(
|
|
136
|
-
if (
|
|
137
|
-
return
|
|
138
|
-
...
|
|
139
|
-
timeoutMs:
|
|
140
|
-
fetchImpl:
|
|
128
|
+
function x(e) {
|
|
129
|
+
return `${e}?initialQuestion=`;
|
|
130
|
+
}
|
|
131
|
+
function z(e) {
|
|
132
|
+
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
133
|
+
}
|
|
134
|
+
const F = "/_api/page-enrichment/v1/page-meta-data/chips", h = 5e3, O = "https://www.wixapis.com/wix-assistant-web5/v1/turn", P = "pdpChips";
|
|
135
|
+
async function G(e, t) {
|
|
136
|
+
if (t.conversation?.web5Id)
|
|
137
|
+
return U({
|
|
138
|
+
...t.conversation,
|
|
139
|
+
timeoutMs: t.timeoutMs,
|
|
140
|
+
fetchImpl: t.fetchImpl
|
|
141
141
|
});
|
|
142
|
-
const n =
|
|
142
|
+
const n = t.endpoint ?? F, o = t.timeoutMs ?? h, r = g(t.fetchImpl), a = new AbortController(), s = setTimeout(() => a.abort(), o);
|
|
143
143
|
try {
|
|
144
|
-
const i = await
|
|
145
|
-
`${n}?url=${encodeURIComponent(
|
|
146
|
-
|
|
144
|
+
const i = await r(
|
|
145
|
+
`${n}?url=${encodeURIComponent(e)}&sessionId=${encodeURIComponent(
|
|
146
|
+
t.sessionId
|
|
147
|
+
)}`,
|
|
148
|
+
{ signal: a.signal }
|
|
147
149
|
);
|
|
148
150
|
if (!i.ok)
|
|
149
151
|
throw new Error(`HTTP ${i.status}`);
|
|
150
|
-
return (await i.json()).chips?.map((
|
|
152
|
+
return (await i.json()).chips?.map((u) => u.label).filter(Boolean) ?? [];
|
|
151
153
|
} finally {
|
|
152
|
-
clearTimeout(
|
|
154
|
+
clearTimeout(s);
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
|
-
async function
|
|
156
|
-
const
|
|
157
|
+
async function U(e) {
|
|
158
|
+
const t = e.endpoint ?? O, n = e.timeoutMs ?? h, o = g(e.fetchImpl), r = new AbortController(), a = setTimeout(() => r.abort(), n);
|
|
157
159
|
try {
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
...
|
|
161
|
-
|
|
162
|
-
additionalData: {
|
|
163
|
-
|
|
164
|
-
// Per-placement running-context key, like the placements use.
|
|
165
|
-
...t.sessionId ? { sessionId: `${t.sessionId}-${p}` } : {},
|
|
166
|
-
placement: p,
|
|
167
|
-
...t.web5Id ? { predecessorTriggerId: t.web5Id } : {}
|
|
168
|
-
}
|
|
169
|
-
} : {
|
|
170
|
-
// `TurnRequest` shape (DL #110) — lock-free.
|
|
171
|
-
text: m,
|
|
172
|
-
...t.sessionId ? { sessionId: t.sessionId } : {},
|
|
173
|
-
...t.web5Id ? { parentMessageId: t.web5Id } : {},
|
|
174
|
-
placement: p
|
|
175
|
-
}, d = await s(r, {
|
|
160
|
+
const s = e.handle ? { handle: e.handle } : void 0, i = {
|
|
161
|
+
...e.sessionId ? { sessionId: e.sessionId } : {},
|
|
162
|
+
...e.web5Id ? { parentMessageId: e.web5Id } : {},
|
|
163
|
+
placement: P,
|
|
164
|
+
...s ? { additionalData: s } : {}
|
|
165
|
+
}, c = await o(t, {
|
|
176
166
|
method: "POST",
|
|
177
167
|
headers: {
|
|
178
168
|
"Content-Type": "application/json",
|
|
179
169
|
Accept: "text/event-stream"
|
|
180
170
|
},
|
|
181
|
-
body: JSON.stringify(
|
|
182
|
-
signal:
|
|
171
|
+
body: JSON.stringify(i),
|
|
172
|
+
signal: r.signal
|
|
183
173
|
});
|
|
184
|
-
if (!
|
|
185
|
-
throw new Error(`HTTP ${
|
|
186
|
-
const u = await
|
|
187
|
-
return
|
|
174
|
+
if (!c.ok)
|
|
175
|
+
throw new Error(`HTTP ${c.status}`);
|
|
176
|
+
const u = await c.text();
|
|
177
|
+
return N(V(u));
|
|
188
178
|
} finally {
|
|
189
|
-
clearTimeout(
|
|
179
|
+
clearTimeout(a);
|
|
190
180
|
}
|
|
191
181
|
}
|
|
192
|
-
function
|
|
193
|
-
return
|
|
182
|
+
function g(e) {
|
|
183
|
+
return e || (typeof window < "u" ? fetch.bind(window) : fetch);
|
|
194
184
|
}
|
|
195
|
-
function
|
|
196
|
-
let
|
|
197
|
-
if (!
|
|
198
|
-
|
|
185
|
+
function V(e) {
|
|
186
|
+
let t = e.trim();
|
|
187
|
+
if (!t) return "";
|
|
188
|
+
t.endsWith(",") && (t = t.slice(0, -1)), t.startsWith("[") || (t = `[${t}`), t.endsWith("]") || (t += "]");
|
|
199
189
|
try {
|
|
200
|
-
const n = JSON.parse(
|
|
190
|
+
const n = JSON.parse(t);
|
|
201
191
|
if (!Array.isArray(n)) return "";
|
|
202
|
-
const
|
|
203
|
-
(
|
|
192
|
+
const o = n.find(
|
|
193
|
+
(r) => typeof r?.completed?.markdown == "string"
|
|
204
194
|
)?.completed?.markdown;
|
|
205
|
-
return
|
|
195
|
+
return o || n.map((r) => typeof r?.markdown == "string" ? r.markdown : "").join("");
|
|
206
196
|
} catch {
|
|
207
197
|
return "";
|
|
208
198
|
}
|
|
209
199
|
}
|
|
210
|
-
function
|
|
211
|
-
|
|
212
|
-
if (!
|
|
213
|
-
e.endsWith(",") && (e = e.slice(0, -1)), e.startsWith("[") || (e = `[${e}`), e.endsWith("]") || (e += "]");
|
|
200
|
+
function N(e) {
|
|
201
|
+
const t = e.trim().replace(/^```(?:json)?\s*/i, "").replace(/\s*```$/, "").trim();
|
|
202
|
+
if (!t) return [];
|
|
214
203
|
try {
|
|
215
|
-
|
|
216
|
-
return Array.isArray(n) ? n.map((r) => typeof r?.markdown == "string" ? r.markdown : "").join("") : "";
|
|
217
|
-
} catch {
|
|
218
|
-
return "";
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
function W(t) {
|
|
222
|
-
const e = t.trim().replace(/^```(?:json)?\s*/i, "").replace(/\s*```$/, "").trim();
|
|
223
|
-
if (!e) return [];
|
|
224
|
-
try {
|
|
225
|
-
return JSON.parse(e).chips?.map((r) => r.label).filter(Boolean) ?? [];
|
|
204
|
+
return JSON.parse(t).chips?.map((o) => o.label).filter(Boolean) ?? [];
|
|
226
205
|
} catch {
|
|
227
206
|
return [];
|
|
228
207
|
}
|
|
229
208
|
}
|
|
230
|
-
function Z(
|
|
231
|
-
if (
|
|
232
|
-
if (typeof
|
|
233
|
-
const
|
|
234
|
-
if (!
|
|
235
|
-
throw new Error(`[Web5Embed] Target element not found: ${
|
|
236
|
-
return
|
|
209
|
+
function Z(e) {
|
|
210
|
+
if (e instanceof HTMLElement) return e;
|
|
211
|
+
if (typeof e == "string") {
|
|
212
|
+
const o = document.querySelector(e);
|
|
213
|
+
if (!o)
|
|
214
|
+
throw new Error(`[Web5Embed] Target element not found: ${e}`);
|
|
215
|
+
return o;
|
|
237
216
|
}
|
|
238
|
-
const
|
|
239
|
-
return
|
|
240
|
-
}
|
|
241
|
-
function Q(
|
|
242
|
-
return
|
|
243
|
-
}
|
|
244
|
-
function
|
|
245
|
-
return !(Array.isArray(
|
|
246
|
-
}
|
|
247
|
-
function
|
|
248
|
-
if (!
|
|
249
|
-
const
|
|
250
|
-
n && (
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
const
|
|
254
|
-
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
const
|
|
258
|
-
if (
|
|
217
|
+
const t = document.currentScript, n = document.createElement("div");
|
|
218
|
+
return t?.parentElement ? t.parentElement.insertBefore(n, t) : document.body.appendChild(n), n;
|
|
219
|
+
}
|
|
220
|
+
function Q(e) {
|
|
221
|
+
return e ? new URLSearchParams(window.location.search).has(e) : !0;
|
|
222
|
+
}
|
|
223
|
+
function ee(e, t = []) {
|
|
224
|
+
return !(Array.isArray(e) ? e : e != null ? [e] : t).includes(window.location.pathname);
|
|
225
|
+
}
|
|
226
|
+
function R(e) {
|
|
227
|
+
if (!e) return {};
|
|
228
|
+
const t = {}, n = e.getAttribute("data-target");
|
|
229
|
+
n && (t.target = n);
|
|
230
|
+
const o = e.getAttribute("data-placeholder");
|
|
231
|
+
o && (t.placeholder = o);
|
|
232
|
+
const r = e.getAttribute("data-base-url");
|
|
233
|
+
r && (t.baseUrl = r);
|
|
234
|
+
const a = e.getAttribute("data-require-param");
|
|
235
|
+
a && (t.requireParam = a);
|
|
236
|
+
const s = e.getAttribute("data-suggestions");
|
|
237
|
+
if (s)
|
|
259
238
|
try {
|
|
260
|
-
const i = JSON.parse(
|
|
261
|
-
Array.isArray(i) && i.length && (
|
|
239
|
+
const i = JSON.parse(s);
|
|
240
|
+
Array.isArray(i) && i.length && (t.suggestions = i);
|
|
262
241
|
} catch {
|
|
263
242
|
console.warn("[Web5Embed] Invalid data-suggestions JSON, ignoring.");
|
|
264
243
|
}
|
|
265
|
-
return
|
|
266
|
-
}
|
|
267
|
-
function
|
|
268
|
-
const
|
|
269
|
-
if (!
|
|
270
|
-
const n =
|
|
271
|
-
(n === "always" || n === "after-target") && (
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
const
|
|
275
|
-
return
|
|
276
|
-
}
|
|
277
|
-
function
|
|
244
|
+
return t;
|
|
245
|
+
}
|
|
246
|
+
function te(e) {
|
|
247
|
+
const t = R(e);
|
|
248
|
+
if (!e) return t;
|
|
249
|
+
const n = e.getAttribute("data-visibility-mode");
|
|
250
|
+
(n === "always" || n === "after-target") && (t.visibilityMode = n);
|
|
251
|
+
const o = e.getAttribute("data-show-after-target");
|
|
252
|
+
o && (t.showAfterTarget = o);
|
|
253
|
+
const r = e.getAttribute("data-exclude-paths");
|
|
254
|
+
return r && (t.excludePaths = r.includes(",") ? r.split(",").map((a) => a.trim()) : r), t;
|
|
255
|
+
}
|
|
256
|
+
function ne(e) {
|
|
278
257
|
if (typeof window > "u") return;
|
|
279
|
-
const
|
|
280
|
-
if (!
|
|
258
|
+
const t = window.__web5Loader__;
|
|
259
|
+
if (!t) {
|
|
281
260
|
console.warn(
|
|
282
|
-
`[Web5Embed] window.__web5Loader__ not present; widget "${
|
|
261
|
+
`[Web5Embed] window.__web5Loader__ not present; widget "${e.widgetId}" will not mount`
|
|
283
262
|
);
|
|
284
263
|
return;
|
|
285
264
|
}
|
|
286
|
-
const n = async (
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
function
|
|
290
|
-
return (
|
|
291
|
-
const
|
|
292
|
-
if (!
|
|
293
|
-
return
|
|
294
|
-
const
|
|
295
|
-
return
|
|
296
|
-
`[Web5Embed] unknown variant "${
|
|
297
|
-
),
|
|
265
|
+
const n = async (o) => e.mount(o, e.parseOptions(o.options));
|
|
266
|
+
t.register(e.widgetId, n);
|
|
267
|
+
}
|
|
268
|
+
function oe(e) {
|
|
269
|
+
return (t, n) => {
|
|
270
|
+
const o = n.variant;
|
|
271
|
+
if (!o || o === "default")
|
|
272
|
+
return e.default(t, n);
|
|
273
|
+
const r = e.variants?.[o];
|
|
274
|
+
return r ? r(t, n) : (console.warn(
|
|
275
|
+
`[Web5Embed] unknown variant "${o}" — falling back to default`
|
|
276
|
+
), e.default(t, n));
|
|
298
277
|
};
|
|
299
278
|
}
|
|
300
|
-
function
|
|
301
|
-
const
|
|
279
|
+
function re(e) {
|
|
280
|
+
const t = (n) => e?.[n];
|
|
302
281
|
return {
|
|
303
282
|
isEnabled: (n) => {
|
|
304
|
-
const
|
|
305
|
-
return
|
|
283
|
+
const o = t(n);
|
|
284
|
+
return o?.status === "SUCCESSFUL" && o.enabled === !0;
|
|
306
285
|
},
|
|
307
|
-
get:
|
|
286
|
+
get: t
|
|
308
287
|
};
|
|
309
288
|
}
|
|
310
|
-
function
|
|
289
|
+
function ie(e) {
|
|
311
290
|
const {
|
|
312
|
-
input:
|
|
291
|
+
input: t,
|
|
313
292
|
wrapper: n,
|
|
314
|
-
multilineClass:
|
|
315
|
-
maxHeightPx:
|
|
316
|
-
multilineThresholdMultiplier:
|
|
317
|
-
fallbackLineHeightPx:
|
|
318
|
-
} =
|
|
293
|
+
multilineClass: o,
|
|
294
|
+
maxHeightPx: r,
|
|
295
|
+
multilineThresholdMultiplier: a = 1,
|
|
296
|
+
fallbackLineHeightPx: s = 32
|
|
297
|
+
} = e;
|
|
319
298
|
return {
|
|
320
299
|
sync() {
|
|
321
300
|
if (!n) return;
|
|
322
|
-
const i = window.getComputedStyle(
|
|
323
|
-
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
301
|
+
const i = window.getComputedStyle(t), c = Number.parseFloat(i.lineHeight) || s;
|
|
302
|
+
t.style.height = "auto";
|
|
303
|
+
const u = t.value.trim().length === 0 ? c : Math.min(Math.max(t.scrollHeight, c), r);
|
|
304
|
+
t.style.height = `${u}px`, n.classList.toggle(
|
|
305
|
+
o,
|
|
306
|
+
u > c * a
|
|
328
307
|
);
|
|
329
308
|
}
|
|
330
309
|
};
|
|
331
310
|
}
|
|
332
|
-
const
|
|
333
|
-
function
|
|
334
|
-
const
|
|
311
|
+
const B = 400;
|
|
312
|
+
function se(e = {}) {
|
|
313
|
+
const t = e.thresholdPx ?? B;
|
|
335
314
|
let n = !1;
|
|
336
|
-
function
|
|
337
|
-
const
|
|
338
|
-
return
|
|
315
|
+
function o() {
|
|
316
|
+
const r = document.documentElement, a = window.scrollY || r.scrollTop || 0, s = a + window.innerHeight, i = r.scrollHeight - s;
|
|
317
|
+
return r.scrollHeight > window.innerHeight + t && a > 0 && i <= t;
|
|
339
318
|
}
|
|
340
319
|
return {
|
|
341
|
-
evaluate(
|
|
342
|
-
return !
|
|
320
|
+
evaluate(r) {
|
|
321
|
+
return !r.isCoordinatorVisible() || !o() ? (n = !1, !1) : r.hasFocusInside() || n ? r.isCollapsed() : !0;
|
|
343
322
|
},
|
|
344
323
|
markManuallyExpanded() {
|
|
345
324
|
n = !0;
|
|
@@ -349,45 +328,90 @@ function ot(t = {}) {
|
|
|
349
328
|
}
|
|
350
329
|
};
|
|
351
330
|
}
|
|
352
|
-
function
|
|
353
|
-
if (!
|
|
331
|
+
function ae(e) {
|
|
332
|
+
if (!e.baseUrl)
|
|
354
333
|
throw new Error(
|
|
355
334
|
"[Web5Embed] createSubmitFlow requires a non-empty baseUrl."
|
|
356
335
|
);
|
|
357
|
-
const
|
|
336
|
+
const t = x(e.baseUrl), n = e.windowTarget ?? "_self";
|
|
358
337
|
return {
|
|
359
|
-
open(
|
|
360
|
-
return window.open(
|
|
338
|
+
open(o) {
|
|
339
|
+
return window.open(t + encodeURIComponent(o), n), !0;
|
|
361
340
|
}
|
|
362
341
|
};
|
|
363
342
|
}
|
|
343
|
+
const $ = 100, D = 0.5, W = 0.8, K = "--web5-host-bottom-inset";
|
|
344
|
+
function q(e) {
|
|
345
|
+
if (typeof document > "u" || typeof window > "u")
|
|
346
|
+
return 0;
|
|
347
|
+
const t = /* @__PURE__ */ new Set();
|
|
348
|
+
for (const o of ["body > *", "body > * > *"])
|
|
349
|
+
document.querySelectorAll(o).forEach((r) => t.add(r));
|
|
350
|
+
let n = 0;
|
|
351
|
+
for (const o of t) {
|
|
352
|
+
if (e != null && (e.contains(o) || o.contains(e)))
|
|
353
|
+
continue;
|
|
354
|
+
const r = window.getComputedStyle(o);
|
|
355
|
+
if (r.position !== "fixed" && r.position !== "sticky" || r.visibility === "hidden" || r.bottom === "auto")
|
|
356
|
+
continue;
|
|
357
|
+
const a = Number.parseFloat(r.bottom);
|
|
358
|
+
if (!Number.isFinite(a) || a > $)
|
|
359
|
+
continue;
|
|
360
|
+
const s = o.getBoundingClientRect();
|
|
361
|
+
if (s.height <= 0 || s.width < window.innerWidth * W)
|
|
362
|
+
continue;
|
|
363
|
+
const i = window.innerHeight - s.top;
|
|
364
|
+
i <= 0 || i > window.innerHeight * D || (n = Math.max(n, i));
|
|
365
|
+
}
|
|
366
|
+
return Math.round(n);
|
|
367
|
+
}
|
|
368
|
+
function ce(e, t = {}) {
|
|
369
|
+
if (typeof window > "u")
|
|
370
|
+
return () => {
|
|
371
|
+
};
|
|
372
|
+
const n = t.exclude === void 0 ? e : t.exclude;
|
|
373
|
+
let o = 0, r = !1;
|
|
374
|
+
const a = () => {
|
|
375
|
+
o = 0, !r && e.style.setProperty(K, `${q(n)}px`);
|
|
376
|
+
}, s = () => {
|
|
377
|
+
r || o !== 0 || (o = window.requestAnimationFrame(a));
|
|
378
|
+
};
|
|
379
|
+
a(), window.addEventListener("resize", s, { passive: !0 }), window.addEventListener("orientationchange", s, { passive: !0 });
|
|
380
|
+
let i;
|
|
381
|
+
return typeof MutationObserver < "u" && document.body != null && (i = new MutationObserver(s), i.observe(document.body, { childList: !0, subtree: !1 })), () => {
|
|
382
|
+
r = !0, o !== 0 && (window.cancelAnimationFrame(o), o = 0), window.removeEventListener("resize", s), window.removeEventListener("orientationchange", s), i?.disconnect();
|
|
383
|
+
};
|
|
384
|
+
}
|
|
364
385
|
export {
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
386
|
+
I as DEFAULT_STATIC_VERSIONS_URL,
|
|
387
|
+
K as HOST_BOTTOM_INSET_VAR,
|
|
388
|
+
J as __resetFocusShortcutCoordinatorForTests,
|
|
389
|
+
X as attachPromptInputTokensStylesheet,
|
|
390
|
+
x as buildUrl,
|
|
391
|
+
A as cacheVersions,
|
|
392
|
+
se as createCollapseController,
|
|
393
|
+
re as createFeatureToggleReader,
|
|
394
|
+
ie as createInputHeightSync,
|
|
395
|
+
ae as createSubmitFlow,
|
|
396
|
+
oe as createVariantMount,
|
|
397
|
+
z as escapeHtml,
|
|
376
398
|
G as fetchChipSuggestions,
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
399
|
+
U as fetchContextualChips,
|
|
400
|
+
_ as fetchStaticVersions,
|
|
401
|
+
w as findVersion,
|
|
402
|
+
S as getCachedVersions,
|
|
403
|
+
j as getFocusShortcutCoordinator,
|
|
404
|
+
L as getPromptInputTokensUrl,
|
|
405
|
+
q as measureHostBottomInset,
|
|
406
|
+
R as readBaseConfigFromScript,
|
|
407
|
+
te as readBottomConfigFromScript,
|
|
408
|
+
ne as registerWeb5Widget,
|
|
409
|
+
H as resolvePromptInputTokensUrl,
|
|
387
410
|
M as resolvePromptInputTokensVersion,
|
|
388
411
|
Z as resolveTarget,
|
|
389
|
-
|
|
412
|
+
Y as sendIconSvg,
|
|
390
413
|
Q as shouldInit,
|
|
391
|
-
|
|
414
|
+
ee as shouldInitForPath,
|
|
415
|
+
ce as trackHostBottomInset
|
|
392
416
|
};
|
|
393
417
|
//# sourceMappingURL=index.js.map
|