@sapia-ai/chatbot-v3 1.0.0

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.
Files changed (108) hide show
  1. package/dist/EmbeddedVideoPlayer-SaMMfDIW.js +1277 -0
  2. package/dist/EmbeddedVideoPlayer-SaMMfDIW.js.map +1 -0
  3. package/dist/Preview-Db-hgkTh.js +83 -0
  4. package/dist/Preview-Db-hgkTh.js.map +1 -0
  5. package/dist/api/client.d.ts +60 -0
  6. package/dist/api/config.d.ts +18 -0
  7. package/dist/api/constants.d.ts +5 -0
  8. package/dist/api/index.d.ts +5 -0
  9. package/dist/api/sse.d.ts +12 -0
  10. package/dist/api/types/branding.d.ts +17 -0
  11. package/dist/api/types/messages.d.ts +148 -0
  12. package/dist/api/types/responses.d.ts +106 -0
  13. package/dist/api.js +2 -0
  14. package/dist/classPrivateFieldSet2-DtQPURVD.js +32 -0
  15. package/dist/core/bubbles/convert.d.ts +18 -0
  16. package/dist/core/bubbles/types.d.ts +55 -0
  17. package/dist/core/constants.d.ts +14 -0
  18. package/dist/core/events.d.ts +44 -0
  19. package/dist/core/i18n/fallback.d.ts +2 -0
  20. package/dist/core/i18n/languages.d.ts +11 -0
  21. package/dist/core/i18n/translator.d.ts +13 -0
  22. package/dist/core/interview.d.ts +207 -0
  23. package/dist/core/media/mimeTypes.d.ts +10 -0
  24. package/dist/core/media/recorder.d.ts +61 -0
  25. package/dist/core/persistence.d.ts +4 -0
  26. package/dist/core/store.d.ts +49 -0
  27. package/dist/core/theme/branding.d.ts +6 -0
  28. package/dist/core/theme/cssVariables.d.ts +16 -0
  29. package/dist/core/theme/types.d.ts +11 -0
  30. package/dist/core/validation/phoneCountries.d.ts +21 -0
  31. package/dist/core/validation/pii.d.ts +30 -0
  32. package/dist/dash.all.min-DZ1yEcJk.js +27302 -0
  33. package/dist/dash.all.min-DZ1yEcJk.js.map +1 -0
  34. package/dist/defineProperty-DiFpLzd2.js +39 -0
  35. package/dist/dist-BSi28_cP.js +702 -0
  36. package/dist/dist-BSi28_cP.js.map +1 -0
  37. package/dist/dist-DGBYKC8c.js +14327 -0
  38. package/dist/dist-DGBYKC8c.js.map +1 -0
  39. package/dist/dist-FvHBWiRa.js +76 -0
  40. package/dist/dist-FvHBWiRa.js.map +1 -0
  41. package/dist/embed/compat.d.ts +82 -0
  42. package/dist/embed/constants.d.ts +2 -0
  43. package/dist/embed/createChatbot.d.ts +22 -0
  44. package/dist/fix-webm-duration-BW9Fbdzt.js +1057 -0
  45. package/dist/fix-webm-duration-BW9Fbdzt.js.map +1 -0
  46. package/dist/hls-mBncGwsE.js +18657 -0
  47. package/dist/hls-mBncGwsE.js.map +1 -0
  48. package/dist/index.d.ts +7 -0
  49. package/dist/index.js +4428 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/max-Btet1snX.js +12212 -0
  52. package/dist/max-Btet1snX.js.map +1 -0
  53. package/dist/messages-C4jqrtSG.js +187 -0
  54. package/dist/messages-C4jqrtSG.js.map +1 -0
  55. package/dist/react/AnswerInput.d.ts +21 -0
  56. package/dist/react/SapiaChatbot.d.ts +23 -0
  57. package/dist/react/bubbleViewModel.d.ts +50 -0
  58. package/dist/react/strings.d.ts +98 -0
  59. package/dist/react/useBeforeUnload.d.ts +5 -0
  60. package/dist/react/useVideoRecorder.d.ts +24 -0
  61. package/dist/react-BGJ7Szvq.js +216 -0
  62. package/dist/react-BGJ7Szvq.js.map +1 -0
  63. package/dist/react-BMxM8TWJ.js +192 -0
  64. package/dist/react-BMxM8TWJ.js.map +1 -0
  65. package/dist/react-BVzcquey.js +457 -0
  66. package/dist/react-BVzcquey.js.map +1 -0
  67. package/dist/react-BrCGR7Ca.js +2208 -0
  68. package/dist/react-BrCGR7Ca.js.map +1 -0
  69. package/dist/react-Bujo1aK5.js +334 -0
  70. package/dist/react-Bujo1aK5.js.map +1 -0
  71. package/dist/react-CRTg4gz8.js +367 -0
  72. package/dist/react-CRTg4gz8.js.map +1 -0
  73. package/dist/react-GXf8sbzf.js +311 -0
  74. package/dist/react-GXf8sbzf.js.map +1 -0
  75. package/dist/react-lp7yfM94.js +371 -0
  76. package/dist/react-lp7yfM94.js.map +1 -0
  77. package/dist/sapia-chatbot.css +3 -0
  78. package/dist/sapia.d.ts +4 -0
  79. package/dist/ui/chat/ChatBubble/ChatBubble.d.ts +47 -0
  80. package/dist/ui/chat/ChatLog/ChatLog.d.ts +33 -0
  81. package/dist/ui/chat/TypingIndicator/TypingIndicator.d.ts +17 -0
  82. package/dist/ui/chat/types.d.ts +71 -0
  83. package/dist/ui/constants.d.ts +2 -0
  84. package/dist/ui/inputs/DropdownInput/DropdownInput.d.ts +18 -0
  85. package/dist/ui/inputs/OptionList/OptionList.d.ts +18 -0
  86. package/dist/ui/inputs/PhoneAnswerInput/PhoneAnswerInput.d.ts +19 -0
  87. package/dist/ui/inputs/SliderInput/SliderInput.d.ts +19 -0
  88. package/dist/ui/inputs/TextAnswerInput/TextAnswerInput.d.ts +32 -0
  89. package/dist/ui/inputs/VideoRecorder/VideoRecorder.d.ts +54 -0
  90. package/dist/ui/media/EmbeddedVideo/EmbeddedVideo.d.ts +11 -0
  91. package/dist/ui/media/EmbeddedVideo/EmbeddedVideoPlayer.d.ts +16 -0
  92. package/dist/ui/media/EmbeddedVideo/VimeoPlayer.d.ts +20 -0
  93. package/dist/ui/media/UploadProgress/UploadProgress.d.ts +7 -0
  94. package/dist/ui/media/VideoPlayer/VideoPlayer.d.ts +13 -0
  95. package/dist/ui/primitives/Button/Button.d.ts +6 -0
  96. package/dist/ui/primitives/Dialog/Dialog.d.ts +16 -0
  97. package/dist/ui/richText.d.ts +6 -0
  98. package/dist/ui/shell/AccessVerificationForm/AccessVerificationForm.d.ts +21 -0
  99. package/dist/ui/shell/CopyLinkButton/CopyLinkButton.d.ts +11 -0
  100. package/dist/ui/shell/DoneScreen/DoneScreen.d.ts +15 -0
  101. package/dist/ui/shell/Header/Header.d.ts +13 -0
  102. package/dist/ui/shell/PreparingScreen/PreparingScreen.d.ts +9 -0
  103. package/dist/ui/shell/ProgressBar/ProgressBar.d.ts +9 -0
  104. package/dist/ui/shell/WelcomeScreen/WelcomeScreen.d.ts +22 -0
  105. package/dist/ui/shell/WidgetRoot/WidgetRoot.d.ts +12 -0
  106. package/dist-umd/sapia-chatbot.umd.js +3655 -0
  107. package/dist-umd/sapia-chatbot.umd.js.map +1 -0
  108. package/package.json +94 -0
@@ -0,0 +1,334 @@
1
+ import { a as e, i as t, n, r, t as i } from "./classPrivateFieldSet2-DtQPURVD.js";
2
+ import { t as a } from "./defineProperty-DiFpLzd2.js";
3
+ import o from "react";
4
+ //#region ../../node_modules/.pnpm/tiktok-video-element@0.1.2/node_modules/tiktok-video-element/dist/tiktok-video-element.js
5
+ var s, c = "https://www.tiktok.com/player/v1", l = /tiktok\.com\/(?:player\/v1\/|share\/video\/|@[^/]+\/video\/)([0-9]+)/, u = {
6
+ INIT: -1,
7
+ ENDED: 0,
8
+ PLAYING: 1,
9
+ PAUSED: 2,
10
+ BUFFERING: 3
11
+ }, d = {
12
+ [u.INIT]: "emptied",
13
+ [u.PAUSED]: "pause",
14
+ [u.ENDED]: "ended",
15
+ [u.PLAYING]: "play",
16
+ [u.BUFFERING]: "waiting"
17
+ };
18
+ function f(e, t = {}) {
19
+ let n = {
20
+ src: p(e, t),
21
+ frameborder: 0,
22
+ width: "100%",
23
+ height: "100%",
24
+ allow: "accelerometer; autoplay; fullscreen; encrypted-media; gyroscope; picture-in-picture"
25
+ };
26
+ return t.config && (n["data-config"] = JSON.stringify(t.config)), `
27
+ <style>
28
+ :host {
29
+ display:inline-block;
30
+ min-width: 300px;
31
+ min-height: 150px;
32
+ position: relative;
33
+ }
34
+ iframe {
35
+ position:absolute;
36
+ top:0;
37
+ left:0;
38
+ width:100%;
39
+ height:100%;
40
+ border:0;
41
+ }
42
+ </style>
43
+ <iframe ${F(n)} title="TikTok video"></iframe>
44
+ `;
45
+ }
46
+ function p(e, t = {}) {
47
+ if (!e.src) return;
48
+ let n = e.src.match(l);
49
+ return `${c}/${n && n[1]}?${P({
50
+ controls: e.controls === "" ? null : 0,
51
+ autoplay: e.autoplay,
52
+ muted: e.muted,
53
+ loop: e.loop,
54
+ rel: 0,
55
+ ...t.config
56
+ })}`;
57
+ }
58
+ var m = /* @__PURE__ */ new WeakMap(), h = /* @__PURE__ */ new WeakMap(), g = /* @__PURE__ */ new WeakMap(), _ = /* @__PURE__ */ new WeakMap(), v = /* @__PURE__ */ new WeakMap(), y = /* @__PURE__ */ new WeakMap(), b = /* @__PURE__ */ new WeakMap(), x = /* @__PURE__ */ new WeakMap(), S = /* @__PURE__ */ new WeakMap(), C = /* @__PURE__ */ new WeakMap(), w = /* @__PURE__ */ new WeakSet(), T = class o extends ((s = globalThis.HTMLElement) == null ? class {} : s) {
59
+ static get observedAttributes() {
60
+ return [
61
+ "src",
62
+ "controls",
63
+ "loop",
64
+ "autoplay",
65
+ "muted"
66
+ ];
67
+ }
68
+ constructor() {
69
+ super(), e(this, w), a(this, "loadComplete", new j()), t(this, m, void 0), t(this, h, void 0), t(this, g, !1), t(this, _, 0), t(this, v, !0), t(this, y, null), t(this, b, 100), t(this, x, 0), t(this, S, void 0), t(this, C, (e) => {
70
+ var t;
71
+ if (e.source !== ((t = n(S, this)) == null ? void 0 : t.contentWindow)) return;
72
+ let r = e.data;
73
+ if (r != null && r["x-tiktok-player"]) switch (r.type) {
74
+ case "onPlayerReady":
75
+ this.loadComplete.resolve();
76
+ break;
77
+ case "onStateChange": {
78
+ i(v, this, [
79
+ u.INIT,
80
+ u.PAUSED,
81
+ u.ENDED
82
+ ].includes(r.value));
83
+ let e = d[r.value];
84
+ e && this.dispatchEvent(new Event(e));
85
+ break;
86
+ }
87
+ case "onCurrentTime":
88
+ i(_, this, r.value.currentTime), i(x, this, r.value.duration), this.dispatchEvent(new Event("durationchange")), this.dispatchEvent(new Event("timeupdate"));
89
+ break;
90
+ case "onVolumeChange":
91
+ i(b, this, r.value), this.dispatchEvent(new Event("volumechange"));
92
+ break;
93
+ case "onMute":
94
+ i(g, this, !!r.value), i(b, this, r.value ? 0 : n(b, this)), this.dispatchEvent(new Event("volumechange"));
95
+ break;
96
+ case "onError":
97
+ this.dispatchEvent(new Event("error"));
98
+ break;
99
+ default:
100
+ console.warn("Unhandled TikTok player message:", r);
101
+ break;
102
+ }
103
+ }), r(w, this, A).call(this, "config");
104
+ }
105
+ async load() {
106
+ if (n(m, this)) return;
107
+ this.shadowRoot || this.attachShadow(o.shadowRootOptions);
108
+ let e = !n(h, this);
109
+ if (n(h, this) && (this.loadComplete = new j()), i(h, this, !0), await i(m, this, Promise.resolve()), i(m, this, null), i(_, this, 0), i(g, this, !1), i(v, this, !0), !this.src) {
110
+ this.shadowRoot.innerHTML = "", globalThis.removeEventListener("message", n(C, this));
111
+ return;
112
+ }
113
+ let t = this.shadowRoot.querySelector("iframe"), r = M(this.attributes);
114
+ e && t && i(y, this, JSON.parse(t.getAttribute("data-config") || "{}")), (!(t != null && t.src) || t.src !== p(r, this)) && (this.shadowRoot.innerHTML = f(r, this), t = this.shadowRoot.querySelector("iframe")), i(S, this, t), globalThis.addEventListener("message", n(C, this));
115
+ }
116
+ async attributeChangedCallback(e, t, n) {
117
+ if (t !== n) switch (e) {
118
+ case "muted":
119
+ await this.loadComplete, this.muted = n != null;
120
+ break;
121
+ case "autoplay":
122
+ case "controls":
123
+ case "loop":
124
+ case "src":
125
+ this.load();
126
+ return;
127
+ }
128
+ }
129
+ get config() {
130
+ return n(y, this);
131
+ }
132
+ set config(e) {
133
+ i(y, this, e);
134
+ }
135
+ async play() {
136
+ await this.loadComplete, r(w, this, E).call(this, "play");
137
+ }
138
+ async pause() {
139
+ await this.loadComplete, r(w, this, E).call(this, "pause");
140
+ }
141
+ get volume() {
142
+ return n(b, this) / 100;
143
+ }
144
+ set volume(e) {
145
+ console.warn("Volume control is not supported for TikTok videos.");
146
+ }
147
+ get currentTime() {
148
+ return n(_, this);
149
+ }
150
+ set currentTime(e) {
151
+ r(w, this, D).call(this, e);
152
+ }
153
+ get muted() {
154
+ return n(g, this);
155
+ }
156
+ set muted(e) {
157
+ i(g, this, e), e ? r(w, this, O).call(this) : r(w, this, k).call(this);
158
+ }
159
+ get defaultMuted() {
160
+ return this.hasAttribute("muted");
161
+ }
162
+ set defaultMuted(e) {
163
+ this.toggleAttribute("muted", !!e);
164
+ }
165
+ get paused() {
166
+ return n(v, this);
167
+ }
168
+ get duration() {
169
+ return n(x, this);
170
+ }
171
+ get src() {
172
+ return this.getAttribute("src");
173
+ }
174
+ set src(e) {
175
+ this.setAttribute("src", e == null ? "" : e);
176
+ }
177
+ };
178
+ function E(e, t) {
179
+ var r;
180
+ if (!((r = n(S, this)) != null && r.contentWindow)) return;
181
+ let i = {
182
+ "x-tiktok-player": !0,
183
+ type: e,
184
+ ...t === void 0 ? {} : { value: t }
185
+ };
186
+ n(S, this).contentWindow.postMessage(i, "*");
187
+ }
188
+ async function D(e) {
189
+ await this.loadComplete, r(w, this, E).call(this, "seekTo", Number(e));
190
+ }
191
+ async function O() {
192
+ await this.loadComplete, r(w, this, E).call(this, "mute");
193
+ }
194
+ async function k() {
195
+ await this.loadComplete, r(w, this, E).call(this, "unMute");
196
+ }
197
+ function A(e) {
198
+ if (Object.prototype.hasOwnProperty.call(this, e)) {
199
+ let t = this[e];
200
+ delete this[e], this[e] = t;
201
+ }
202
+ }
203
+ a(T, "getTemplateHTML", f), a(T, "shadowRootOptions", { mode: "open" });
204
+ var j = class extends Promise {
205
+ constructor(e = () => {}) {
206
+ let t, n;
207
+ super((r, i) => {
208
+ e(r, i), t = r, n = i;
209
+ }), this.resolve = t, this.reject = n;
210
+ }
211
+ };
212
+ function M(e) {
213
+ let t = {};
214
+ for (let n of e) t[n.name] = n.value;
215
+ return t;
216
+ }
217
+ function N(e) {
218
+ let t = {};
219
+ for (let n in e) {
220
+ let r = e[n];
221
+ r === !0 || r === "" ? t[n] = 1 : r === !1 ? t[n] = 0 : r != null && (t[n] = r);
222
+ }
223
+ return t;
224
+ }
225
+ function P(e) {
226
+ return String(new URLSearchParams(N(e)));
227
+ }
228
+ function F(e) {
229
+ let t = "";
230
+ for (let n in e) {
231
+ let r = e[n];
232
+ r === "" ? t += ` ${I(n)}` : t += ` ${I(n)}="${I(`${r}`)}"`;
233
+ }
234
+ return t;
235
+ }
236
+ function I(e) {
237
+ return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/`/g, "&#x60;");
238
+ }
239
+ globalThis.customElements && !globalThis.customElements.get("tiktok-video") && globalThis.customElements.define("tiktok-video", T);
240
+ var L = T, R = /* @__PURE__ */ new Set([
241
+ "style",
242
+ "children",
243
+ "ref",
244
+ "key",
245
+ "suppressContentEditableWarning",
246
+ "suppressHydrationWarning",
247
+ "dangerouslySetInnerHTML"
248
+ ]), z = {
249
+ className: "class",
250
+ htmlFor: "for"
251
+ };
252
+ function B(e) {
253
+ return e.toLowerCase();
254
+ }
255
+ function V(e) {
256
+ if (typeof e == "boolean") return e ? "" : void 0;
257
+ if (typeof e != "function" && !(typeof e == "object" && e)) return e;
258
+ }
259
+ function H({ react: e, tagName: t, elementClass: n, events: r, displayName: i, defaultProps: a, toAttributeName: o = B, toAttributeValue: s = V }) {
260
+ let c = Number.parseInt(e.version) >= 19, l = e.forwardRef((i, l) => {
261
+ var u, d;
262
+ let f = e.useRef(null), p = e.useRef(/* @__PURE__ */ new Map()), m = {}, h = {}, g = {}, _ = {};
263
+ for (let [e, t] of Object.entries(i)) {
264
+ var v, y;
265
+ if (R.has(e)) {
266
+ g[e] = t;
267
+ continue;
268
+ }
269
+ let r = o((v = z[e]) == null ? e : v);
270
+ if (n.prototype && e in n.prototype && !(e in ((y = (u = globalThis.HTMLElement) == null ? void 0 : u.prototype) == null ? {} : y)) && !((d = n.observedAttributes) != null && d.some((e) => e === r))) {
271
+ _[e] = t;
272
+ continue;
273
+ }
274
+ if (e.startsWith("on")) {
275
+ m[e] = t;
276
+ continue;
277
+ }
278
+ let i = s(t);
279
+ r && i != null && (h[r] = String(i), c || (g[r] = i)), r && c && (i === V(t) ? g[r] = t : g[r] = i);
280
+ }
281
+ if (typeof window < "u") {
282
+ for (let t in m) {
283
+ var b;
284
+ let n = m[t], i = t.endsWith("Capture"), a = ((b = r == null ? void 0 : r[t]) == null ? t.slice(2).toLowerCase() : b).slice(0, i ? -7 : void 0);
285
+ e.useLayoutEffect(() => {
286
+ let e = f == null ? void 0 : f.current;
287
+ if (!(!e || typeof n != "function")) return e.addEventListener(a, n, i), () => {
288
+ e.removeEventListener(a, n, i);
289
+ };
290
+ }, [f == null ? void 0 : f.current, n]);
291
+ }
292
+ e.useLayoutEffect(() => {
293
+ if (f.current === null) return;
294
+ let e = /* @__PURE__ */ new Map();
295
+ for (let t in _) U(f.current, t, _[t]), p.current.delete(t), e.set(t, _[t]);
296
+ for (let [e, t] of p.current) U(f.current, e, void 0);
297
+ p.current = e;
298
+ });
299
+ }
300
+ if (typeof window > "u" && n != null && n.getTemplateHTML && n != null && n.shadowRootOptions) {
301
+ let { mode: t, delegatesFocus: r } = n.shadowRootOptions;
302
+ g.children = [e.createElement("template", {
303
+ shadowrootmode: t,
304
+ shadowrootdelegatesfocus: r,
305
+ dangerouslySetInnerHTML: { __html: n.getTemplateHTML(h, i) },
306
+ key: "ce-la-react-ssr-template-shadow-root"
307
+ }), g.children];
308
+ }
309
+ return e.createElement(t, {
310
+ ...a,
311
+ ...g,
312
+ ref: e.useCallback((e) => {
313
+ f.current = e, typeof l == "function" ? l(e) : l !== null && (l.current = e);
314
+ }, [l])
315
+ }, g.children);
316
+ });
317
+ return l.displayName = i == null ? n.name : i, l;
318
+ }
319
+ function U(e, t, n) {
320
+ var r, i;
321
+ e[t] = n, n == null && t in ((r = (i = globalThis.HTMLElement) == null ? void 0 : i.prototype) == null ? {} : r) && e.removeAttribute(t);
322
+ }
323
+ var W = H({
324
+ react: o,
325
+ tagName: "tiktok-video",
326
+ elementClass: L,
327
+ toAttributeName(e) {
328
+ return e === "muted" ? "" : e === "defaultMuted" ? "muted" : B(e);
329
+ }
330
+ });
331
+ //#endregion
332
+ export { W as default };
333
+
334
+ //# sourceMappingURL=react-Bujo1aK5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-Bujo1aK5.js","names":["CustomMediaElement"],"sources":["../../../node_modules/.pnpm/tiktok-video-element@0.1.2/node_modules/tiktok-video-element/dist/tiktok-video-element.js","../../../node_modules/.pnpm/tiktok-video-element@0.1.2/node_modules/tiktok-video-element/dist/react.js"],"sourcesContent":["const EMBED_BASE = \"https://www.tiktok.com/player/v1\";\nconst MATCH_SRC = /tiktok\\.com\\/(?:player\\/v1\\/|share\\/video\\/|@[^/]+\\/video\\/)([0-9]+)/;\nconst PlayerState = { INIT: -1, ENDED: 0, PLAYING: 1, PAUSED: 2, BUFFERING: 3 };\nconst EventMap = {\n [PlayerState.INIT]: \"emptied\",\n [PlayerState.PAUSED]: \"pause\",\n [PlayerState.ENDED]: \"ended\",\n [PlayerState.PLAYING]: \"play\",\n [PlayerState.BUFFERING]: \"waiting\"\n};\nfunction getTemplateHTML(attrs, props = {}) {\n const iframeAttrs = {\n src: serializeIframeUrl(attrs, props),\n frameborder: 0,\n width: \"100%\",\n height: \"100%\",\n allow: \"accelerometer; autoplay; fullscreen; encrypted-media; gyroscope; picture-in-picture\"\n };\n if (props.config) {\n iframeAttrs[\"data-config\"] = JSON.stringify(props.config);\n }\n return (\n /*html*/\n `\n <style>\n :host {\n display:inline-block;\n min-width: 300px;\n min-height: 150px;\n position: relative;\n }\n iframe {\n position:absolute;\n top:0;\n left:0;\n width:100%;\n height:100%;\n border:0;\n }\n </style>\n <iframe ${serializeAttributes(iframeAttrs)} title=\"TikTok video\"></iframe>\n `\n );\n}\nfunction serializeIframeUrl(attrs, props = {}) {\n if (!attrs.src) return;\n const matches = attrs.src.match(MATCH_SRC);\n const srcId = matches && matches[1];\n const params = {\n controls: attrs.controls === \"\" ? null : 0,\n autoplay: attrs.autoplay,\n muted: attrs.muted,\n loop: attrs.loop,\n rel: 0,\n ...props.config\n };\n return `${EMBED_BASE}/${srcId}?${serialize(params)}`;\n}\nclass TikTokVideoElement extends (globalThis.HTMLElement ?? class {\n}) {\n static getTemplateHTML = getTemplateHTML;\n static shadowRootOptions = { mode: \"open\" };\n static get observedAttributes() {\n return [\"src\", \"controls\", \"loop\", \"autoplay\", \"muted\"];\n }\n loadComplete = new PublicPromise();\n #loadRequested;\n #hasLoaded;\n #muted = false;\n #currentTime = 0;\n #paused = true;\n #config = null;\n #volume = 100;\n #duration = 0;\n #iframe;\n constructor() {\n super();\n this.#upgradeProperty(\"config\");\n }\n async load() {\n if (this.#loadRequested) return;\n if (!this.shadowRoot) {\n this.attachShadow(TikTokVideoElement.shadowRootOptions);\n }\n const isFirstLoad = !this.#hasLoaded;\n if (this.#hasLoaded) {\n this.loadComplete = new PublicPromise();\n }\n this.#hasLoaded = true;\n await (this.#loadRequested = Promise.resolve());\n this.#loadRequested = null;\n this.#currentTime = 0;\n this.#muted = false;\n this.#paused = true;\n if (!this.src) {\n this.shadowRoot.innerHTML = \"\";\n globalThis.removeEventListener(\"message\", this.#onMessage);\n return;\n }\n let iframe = this.shadowRoot.querySelector(\"iframe\");\n const attrs = namedNodeMapToObject(this.attributes);\n if (isFirstLoad && iframe) {\n this.#config = JSON.parse(iframe.getAttribute(\"data-config\") || \"{}\");\n }\n if (!(iframe == null ? void 0 : iframe.src) || iframe.src !== serializeIframeUrl(attrs, this)) {\n this.shadowRoot.innerHTML = getTemplateHTML(attrs, this);\n iframe = this.shadowRoot.querySelector(\"iframe\");\n }\n this.#iframe = iframe;\n globalThis.addEventListener(\"message\", this.#onMessage);\n }\n async attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue) return;\n switch (attrName) {\n case \"muted\": {\n await this.loadComplete;\n this.muted = newValue != null;\n break;\n }\n case \"autoplay\":\n case \"controls\":\n case \"loop\":\n case \"src\": {\n this.load();\n return;\n }\n }\n }\n get config() {\n return this.#config;\n }\n set config(value) {\n this.#config = value;\n }\n #onMessage = (event) => {\n var _a;\n if (event.source !== ((_a = this.#iframe) == null ? void 0 : _a.contentWindow)) return;\n const msg = event.data;\n if (!(msg == null ? void 0 : msg[\"x-tiktok-player\"])) return;\n switch (msg.type) {\n case \"onPlayerReady\":\n this.loadComplete.resolve();\n break;\n case \"onStateChange\": {\n this.#paused = [PlayerState.INIT, PlayerState.PAUSED, PlayerState.ENDED].includes(msg.value);\n const eventType = EventMap[msg.value];\n if (eventType) this.dispatchEvent(new Event(eventType));\n break;\n }\n case \"onCurrentTime\":\n this.#currentTime = msg.value.currentTime;\n this.#duration = msg.value.duration;\n this.dispatchEvent(new Event(\"durationchange\"));\n this.dispatchEvent(new Event(\"timeupdate\"));\n break;\n case \"onVolumeChange\":\n this.#volume = msg.value;\n this.dispatchEvent(new Event(\"volumechange\"));\n break;\n case \"onMute\":\n this.#muted = msg.value ? true : false;\n this.#volume = msg.value ? 0 : this.#volume;\n this.dispatchEvent(new Event(\"volumechange\"));\n break;\n case \"onError\":\n this.dispatchEvent(new Event(\"error\"));\n break;\n default:\n console.warn(\"Unhandled TikTok player message:\", msg);\n break;\n }\n };\n #post(type, value) {\n var _a;\n if (!((_a = this.#iframe) == null ? void 0 : _a.contentWindow)) return;\n const message = { \"x-tiktok-player\": true, type, ...value !== void 0 ? { value } : {} };\n this.#iframe.contentWindow.postMessage(message, \"*\");\n }\n async play() {\n await this.loadComplete;\n this.#post(\"play\");\n }\n async pause() {\n await this.loadComplete;\n this.#post(\"pause\");\n }\n async #seekTo(sec) {\n await this.loadComplete;\n this.#post(\"seekTo\", Number(sec));\n }\n async #mute() {\n await this.loadComplete;\n this.#post(\"mute\");\n }\n async #unMute() {\n await this.loadComplete;\n this.#post(\"unMute\");\n }\n get volume() {\n return this.#volume / 100;\n }\n set volume(_val) {\n console.warn(\"Volume control is not supported for TikTok videos.\");\n }\n get currentTime() {\n return this.#currentTime;\n }\n set currentTime(val) {\n this.#seekTo(val);\n }\n get muted() {\n return this.#muted;\n }\n set muted(val) {\n this.#muted = val;\n val ? this.#mute() : this.#unMute();\n }\n get defaultMuted() {\n return this.hasAttribute(\"muted\");\n }\n set defaultMuted(val) {\n this.toggleAttribute(\"muted\", !!val);\n }\n get paused() {\n return this.#paused;\n }\n get duration() {\n return this.#duration;\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(val) {\n this.setAttribute(\"src\", val ?? \"\");\n }\n // This is a pattern to update property values that are set before\n // the custom element is upgraded.\n // https://web.dev/custom-elements-best-practices/#make-properties-lazy\n #upgradeProperty(prop) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n const value = this[prop];\n delete this[prop];\n this[prop] = value;\n }\n }\n}\nclass PublicPromise extends Promise {\n constructor(executor = () => {\n }) {\n let res, rej;\n super((resolve, reject) => {\n executor(resolve, reject);\n res = resolve;\n rej = reject;\n });\n this.resolve = res;\n this.reject = rej;\n }\n}\nfunction namedNodeMapToObject(namedNodeMap) {\n let obj = {};\n for (let attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\n}\nfunction boolToBinary(props) {\n let p = {};\n for (let key in props) {\n let val = props[key];\n if (val === true || val === \"\") p[key] = 1;\n else if (val === false) p[key] = 0;\n else if (val != null) p[key] = val;\n }\n return p;\n}\nfunction serialize(props) {\n return String(new URLSearchParams(boolToBinary(props)));\n}\nfunction serializeAttributes(attrs) {\n let html = \"\";\n for (const key in attrs) {\n const value = attrs[key];\n if (value === \"\") html += ` ${escapeHtml(key)}`;\n else html += ` ${escapeHtml(key)}=\"${escapeHtml(`${value}`)}\"`;\n }\n return html;\n}\nfunction escapeHtml(str) {\n return str.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&apos;\").replace(/`/g, \"&#x60;\");\n}\nif (globalThis.customElements && !globalThis.customElements.get(\"tiktok-video\")) {\n globalThis.customElements.define(\"tiktok-video\", TikTokVideoElement);\n}\nvar tiktok_video_element_default = TikTokVideoElement;\nexport {\n tiktok_video_element_default as default\n};\n","\"use client\";\n\n// dist/react.ts\nimport React from \"react\";\nimport CustomMediaElement from \"./tiktok-video-element.js\";\n\n// ../../node_modules/ce-la-react/dist/ce-la-react.js\nvar reservedReactProps = /* @__PURE__ */ new Set([\n \"style\",\n \"children\",\n \"ref\",\n \"key\",\n \"suppressContentEditableWarning\",\n \"suppressHydrationWarning\",\n \"dangerouslySetInnerHTML\"\n]);\nvar reactPropToAttrNameMap = {\n className: \"class\",\n htmlFor: \"for\"\n};\nfunction defaultToAttributeName(propName) {\n return propName.toLowerCase();\n}\nfunction defaultToAttributeValue(propValue) {\n if (typeof propValue === \"boolean\") return propValue ? \"\" : void 0;\n if (typeof propValue === \"function\") return void 0;\n if (typeof propValue === \"object\" && propValue !== null) return void 0;\n return propValue;\n}\nfunction createComponent({\n react: React2,\n tagName,\n elementClass,\n events,\n displayName,\n defaultProps,\n toAttributeName = defaultToAttributeName,\n toAttributeValue = defaultToAttributeValue\n}) {\n const IS_REACT_19_OR_NEWER = Number.parseInt(React2.version) >= 19;\n const ReactComponent = React2.forwardRef((props, ref) => {\n var _a, _b;\n const elementRef = React2.useRef(null);\n const prevElemPropsRef = React2.useRef(/* @__PURE__ */ new Map());\n const eventProps = {};\n const attrs = {};\n const reactProps = {};\n const elementProps = {};\n for (const [k, v] of Object.entries(props)) {\n if (reservedReactProps.has(k)) {\n reactProps[k] = v;\n continue;\n }\n const attrName = toAttributeName(reactPropToAttrNameMap[k] ?? k);\n if (elementClass.prototype && k in elementClass.prototype && !(k in (((_a = globalThis.HTMLElement) == null ? void 0 : _a.prototype) ?? {})) && !((_b = elementClass.observedAttributes) == null ? void 0 : _b.some((attr) => attr === attrName))) {\n elementProps[k] = v;\n continue;\n }\n if (k.startsWith(\"on\")) {\n eventProps[k] = v;\n continue;\n }\n const attrValue = toAttributeValue(v);\n if (attrName && attrValue != null) {\n attrs[attrName] = String(attrValue);\n if (!IS_REACT_19_OR_NEWER) {\n reactProps[attrName] = attrValue;\n }\n }\n if (attrName && IS_REACT_19_OR_NEWER) {\n const attrValueFromDefault = defaultToAttributeValue(v);\n if (attrValue !== attrValueFromDefault) {\n reactProps[attrName] = attrValue;\n } else {\n reactProps[attrName] = v;\n }\n }\n }\n if (typeof window !== \"undefined\") {\n for (const propName in eventProps) {\n const callback = eventProps[propName];\n const useCapture = propName.endsWith(\"Capture\");\n const eventName = ((events == null ? void 0 : events[propName]) ?? propName.slice(2).toLowerCase()).slice(\n 0,\n useCapture ? -7 : void 0\n );\n React2.useLayoutEffect(() => {\n const eventTarget = elementRef == null ? void 0 : elementRef.current;\n if (!eventTarget || typeof callback !== \"function\") return;\n eventTarget.addEventListener(eventName, callback, useCapture);\n return () => {\n eventTarget.removeEventListener(eventName, callback, useCapture);\n };\n }, [elementRef == null ? void 0 : elementRef.current, callback]);\n }\n React2.useLayoutEffect(() => {\n if (elementRef.current === null) return;\n const newElemProps = /* @__PURE__ */ new Map();\n for (const key in elementProps) {\n setProperty(elementRef.current, key, elementProps[key]);\n prevElemPropsRef.current.delete(key);\n newElemProps.set(key, elementProps[key]);\n }\n for (const [key, _value] of prevElemPropsRef.current) {\n setProperty(elementRef.current, key, void 0);\n }\n prevElemPropsRef.current = newElemProps;\n });\n }\n if (typeof window === \"undefined\" && (elementClass == null ? void 0 : elementClass.getTemplateHTML) && (elementClass == null ? void 0 : elementClass.shadowRootOptions)) {\n const { mode, delegatesFocus } = elementClass.shadowRootOptions;\n const templateShadowRoot = React2.createElement(\"template\", {\n shadowrootmode: mode,\n shadowrootdelegatesfocus: delegatesFocus,\n dangerouslySetInnerHTML: {\n __html: elementClass.getTemplateHTML(attrs, props)\n },\n key: \"ce-la-react-ssr-template-shadow-root\"\n });\n reactProps.children = [templateShadowRoot, reactProps.children];\n }\n return React2.createElement(tagName, {\n ...defaultProps,\n ...reactProps,\n ref: React2.useCallback(\n (node) => {\n elementRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref !== null) {\n ref.current = node;\n }\n },\n [ref]\n )\n }, reactProps.children);\n });\n ReactComponent.displayName = displayName ?? elementClass.name;\n return ReactComponent;\n}\nfunction setProperty(node, name, value) {\n var _a;\n node[name] = value;\n if (value == null && name in (((_a = globalThis.HTMLElement) == null ? void 0 : _a.prototype) ?? {})) {\n node.removeAttribute(name);\n }\n}\n\n// dist/react.ts\nvar react_default = createComponent({\n react: React,\n tagName: \"tiktok-video\",\n elementClass: CustomMediaElement,\n toAttributeName(propName) {\n if (propName === \"muted\") return \"\";\n if (propName === \"defaultMuted\") return \"muted\";\n return defaultToAttributeName(propName);\n }\n});\nexport {\n react_default as default\n};\n/*! Bundled license information:\n\nce-la-react/dist/ce-la-react.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Modified version of `@lit/react` for vanilla custom elements with support for SSR.\n *)\n*/\n"],"x_google_ignoreList":[0,1],"mappings":"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"}