@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,311 @@
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/spotify-audio-element@1.0.4/node_modules/spotify-audio-element/dist/spotify-audio-element.js
5
+ var s, c = "https://open.spotify.com", l = /open\.spotify\.com\/(\w+)\/(\w+)/i, u = "https://open.spotify.com/embed-podcast/iframe-api/v1", d = "SpotifyIframeApi", f = "onSpotifyIframeApiReady";
6
+ function p(e, t = {}) {
7
+ return `
8
+ <style>
9
+ :host {
10
+ display: inline-block;
11
+ min-width: 160px;
12
+ min-height: 80px;
13
+ position: relative;
14
+ }
15
+ iframe {
16
+ position: absolute;
17
+ top: 0;
18
+ left: 0;
19
+ width: 100%;
20
+ height: 100%;
21
+ overflow: hidden;
22
+ }
23
+ :host(:not([controls])) {
24
+ display: none !important;
25
+ }
26
+ </style>
27
+ <iframe${O({
28
+ src: m(e, t),
29
+ scrolling: "no",
30
+ frameborder: 0,
31
+ width: "100%",
32
+ height: "100%",
33
+ allow: "accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
34
+ })}></iframe>
35
+ `;
36
+ }
37
+ function m(e, t) {
38
+ var n, r, i;
39
+ if (!e.src) return;
40
+ let a = e.src.match(l), o = a && a[1], s = a && a[2], u = {
41
+ t: (n = t.config) == null ? void 0 : n.startAt,
42
+ theme: ((r = t.config) == null ? void 0 : r.theme) === "dark" ? "0" : null
43
+ };
44
+ return `${c}/embed/${o}/${s}${(i = t.config) != null && i.preferVideo ? "/video" : ""}?${k(u)}`;
45
+ }
46
+ var 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 WeakMap(), T = /* @__PURE__ */ new WeakSet(), E = class extends ((s = globalThis.HTMLElement) == null ? class {} : s) {
47
+ constructor() {
48
+ super(), e(this, T), a(this, "loadComplete", new P()), t(this, h, void 0), t(this, g, void 0), t(this, _, void 0), t(this, v, !1), t(this, y, !1), t(this, b, !0), t(this, x, 0), t(this, S, NaN), t(this, C, !1), t(this, w, null), r(T, this, D).call(this, "config");
49
+ }
50
+ async load() {
51
+ var e, t, r;
52
+ if (n(h, this)) return;
53
+ n(g, this) && (this.loadComplete = new P()), i(g, this, !0), await i(h, this, Promise.resolve()), i(h, this, null), i(v, this, !1), i(y, this, !1), i(x, this, 0), i(S, this, NaN), i(C, this, !1), this.dispatchEvent(new Event("emptied"));
54
+ let a = this.api;
55
+ if (this.api = null, !this.src) return;
56
+ this.dispatchEvent(new Event("loadstart"));
57
+ let o = {
58
+ t: (e = this.config) == null ? void 0 : e.startAt,
59
+ theme: ((t = this.config) == null ? void 0 : t.theme) === "dark" ? "0" : null,
60
+ preferVideo: (r = this.config) == null ? void 0 : r.preferVideo
61
+ };
62
+ if (n(_, this)) this.api = a, this.api.iframeElement.src = m(j(this.attributes), this);
63
+ else {
64
+ i(_, this, !0), this.shadowRoot || (this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = p(j(this.attributes), this));
65
+ let e = this.shadowRoot.querySelector("iframe"), t = await N(u, d, f);
66
+ this.api = await new Promise((n) => t.createController(e, o, n)), this.api.iframeElement = e, this.api.addListener("ready", () => {
67
+ this.dispatchEvent(new Event("loadedmetadata")), this.dispatchEvent(new Event("durationchange")), this.dispatchEvent(new Event("volumechange"));
68
+ }), this.api.addListener("playback_update", (e) => {
69
+ if (n(y, this) && n(b, this) && (e.data.isBuffering || !e.data.isPaused)) {
70
+ i(y, this, !1), this.currentTime = 1;
71
+ return;
72
+ }
73
+ if (e.data.duration / 1e3 !== n(S, this) && (i(y, this, !1), i(S, this, e.data.duration / 1e3), this.dispatchEvent(new Event("durationchange"))), e.data.position / 1e3 !== n(x, this) && (i(C, this, !1), i(y, this, !1), i(x, this, e.data.position / 1e3), this.dispatchEvent(new Event("timeupdate"))), !n(v, this) && !n(b, this) && e.data.isPaused) {
74
+ i(b, this, !0), this.dispatchEvent(new Event("pause"));
75
+ return;
76
+ }
77
+ if (n(b, this) && (e.data.isBuffering || !e.data.isPaused)) {
78
+ i(b, this, !1), this.dispatchEvent(new Event("play")), i(v, this, e.data.isBuffering), n(v, this) ? this.dispatchEvent(new Event("waiting")) : this.dispatchEvent(new Event("playing"));
79
+ return;
80
+ }
81
+ if (n(v, this) && !e.data.isPaused) {
82
+ i(v, this, !1), this.dispatchEvent(new Event("playing"));
83
+ return;
84
+ }
85
+ if (!this.paused && !this.seeking && !n(y, this) && Math.ceil(this.currentTime) >= this.duration) {
86
+ if (i(y, this, !0), this.loop) {
87
+ this.currentTime = 1;
88
+ return;
89
+ }
90
+ this.continuous || (this.pause(), this.dispatchEvent(new Event("ended")));
91
+ return;
92
+ }
93
+ });
94
+ }
95
+ this.loadComplete.resolve(), await this.loadComplete;
96
+ }
97
+ async attributeChangedCallback(e, t, n) {
98
+ if (t !== n) switch (e) {
99
+ case "src":
100
+ this.load();
101
+ return;
102
+ }
103
+ }
104
+ async play() {
105
+ var e;
106
+ return i(b, this, !1), i(v, this, !0), this.dispatchEvent(new Event("play")), await this.loadComplete, (e = this.api) == null ? void 0 : e.resume();
107
+ }
108
+ async pause() {
109
+ var e;
110
+ return await this.loadComplete, (e = this.api) == null ? void 0 : e.pause();
111
+ }
112
+ get config() {
113
+ return n(w, this);
114
+ }
115
+ set config(e) {
116
+ i(w, this, e);
117
+ }
118
+ get paused() {
119
+ var e;
120
+ return (e = n(b, this)) == null ? !0 : e;
121
+ }
122
+ get muted() {
123
+ return !1;
124
+ }
125
+ set muted(e) {}
126
+ get volume() {
127
+ return 1;
128
+ }
129
+ set volume(e) {}
130
+ get ended() {
131
+ return Math.ceil(this.currentTime) >= this.duration;
132
+ }
133
+ get seeking() {
134
+ return n(C, this);
135
+ }
136
+ get loop() {
137
+ return this.hasAttribute("loop");
138
+ }
139
+ set loop(e) {
140
+ this.loop != e && this.toggleAttribute("loop", !!e);
141
+ }
142
+ get currentTime() {
143
+ return n(x, this);
144
+ }
145
+ set currentTime(e) {
146
+ if (this.currentTime == e) return;
147
+ i(C, this, !0);
148
+ let t = n(x, this);
149
+ i(x, this, e), this.dispatchEvent(new Event("timeupdate")), i(x, this, t), this.loadComplete.then(() => {
150
+ var t;
151
+ (t = this.api) == null || t.seek(e);
152
+ });
153
+ }
154
+ get duration() {
155
+ return n(S, this);
156
+ }
157
+ get src() {
158
+ return this.getAttribute("src");
159
+ }
160
+ set src(e) {
161
+ this.setAttribute("src", `${e}`);
162
+ }
163
+ };
164
+ function D(e) {
165
+ if (Object.prototype.hasOwnProperty.call(this, e)) {
166
+ let t = this[e];
167
+ delete this[e], this[e] = t;
168
+ }
169
+ }
170
+ a(E, "getTemplateHTML", p), a(E, "shadowRootOptions", { mode: "open" }), a(E, "observedAttributes", [
171
+ "controls",
172
+ "loop",
173
+ "src"
174
+ ]);
175
+ function O(e) {
176
+ let t = "";
177
+ for (let n in e) {
178
+ let r = e[n];
179
+ r === "" ? t += ` ${n}` : t += ` ${n}="${r}"`;
180
+ }
181
+ return t;
182
+ }
183
+ function k(e) {
184
+ return String(new URLSearchParams(A(e)));
185
+ }
186
+ function A(e) {
187
+ let t = {};
188
+ for (let n in e) {
189
+ let r = e[n];
190
+ r === !0 || r === "" ? t[n] = 1 : r === !1 ? t[n] = 0 : r != null && (t[n] = r);
191
+ }
192
+ return t;
193
+ }
194
+ function j(e) {
195
+ let t = {};
196
+ for (let n of e) t[n.name] = n.value;
197
+ return t;
198
+ }
199
+ var M = {};
200
+ async function N(e, t, n) {
201
+ return M[e] ? M[e] : t && self[t] ? Promise.resolve(self[t]) : M[e] = new Promise(function(t, r) {
202
+ let i = document.createElement("script");
203
+ i.src = e;
204
+ let a = (e) => t(e);
205
+ n && (self[n] = a), i.onload = () => !n && a(), i.onerror = r, document.head.append(i);
206
+ });
207
+ }
208
+ var P = class extends Promise {
209
+ constructor(e = () => {}) {
210
+ let t, n;
211
+ super((r, i) => {
212
+ e(r, i), t = r, n = i;
213
+ }), this.resolve = t, this.reject = n;
214
+ }
215
+ };
216
+ globalThis.customElements && !globalThis.customElements.get("spotify-audio") && globalThis.customElements.define("spotify-audio", E);
217
+ var F = E, I = /* @__PURE__ */ new Set([
218
+ "style",
219
+ "children",
220
+ "ref",
221
+ "key",
222
+ "suppressContentEditableWarning",
223
+ "suppressHydrationWarning",
224
+ "dangerouslySetInnerHTML"
225
+ ]), L = {
226
+ className: "class",
227
+ htmlFor: "for"
228
+ };
229
+ function R(e) {
230
+ return e.toLowerCase();
231
+ }
232
+ function z(e) {
233
+ if (typeof e == "boolean") return e ? "" : void 0;
234
+ if (typeof e != "function" && !(typeof e == "object" && e)) return e;
235
+ }
236
+ function B({ react: e, tagName: t, elementClass: n, events: r, displayName: i, defaultProps: a, toAttributeName: o = R, toAttributeValue: s = z }) {
237
+ let c = Number.parseInt(e.version) >= 19, l = e.forwardRef((i, l) => {
238
+ var u, d;
239
+ let f = e.useRef(null), p = e.useRef(/* @__PURE__ */ new Map()), m = {}, h = {}, g = {}, _ = {};
240
+ for (let [e, t] of Object.entries(i)) {
241
+ var v, y;
242
+ if (I.has(e)) {
243
+ g[e] = t;
244
+ continue;
245
+ }
246
+ let r = o((v = L[e]) == null ? e : v);
247
+ 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))) {
248
+ _[e] = t;
249
+ continue;
250
+ }
251
+ if (e.startsWith("on")) {
252
+ m[e] = t;
253
+ continue;
254
+ }
255
+ let i = s(t);
256
+ r && i != null && (h[r] = String(i), c || (g[r] = i)), r && c && (i === z(t) ? g[r] = t : g[r] = i);
257
+ }
258
+ if (typeof window < "u") {
259
+ for (let t in m) {
260
+ var b;
261
+ 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);
262
+ e.useLayoutEffect(() => {
263
+ let e = f == null ? void 0 : f.current;
264
+ if (!(!e || typeof n != "function")) return e.addEventListener(a, n, i), () => {
265
+ e.removeEventListener(a, n, i);
266
+ };
267
+ }, [f == null ? void 0 : f.current, n]);
268
+ }
269
+ e.useLayoutEffect(() => {
270
+ if (f.current === null) return;
271
+ let e = /* @__PURE__ */ new Map();
272
+ for (let t in _) V(f.current, t, _[t]), p.current.delete(t), e.set(t, _[t]);
273
+ for (let [e, t] of p.current) V(f.current, e, void 0);
274
+ p.current = e;
275
+ });
276
+ }
277
+ if (typeof window > "u" && n != null && n.getTemplateHTML && n != null && n.shadowRootOptions) {
278
+ let { mode: t, delegatesFocus: r } = n.shadowRootOptions;
279
+ g.children = [e.createElement("template", {
280
+ shadowrootmode: t,
281
+ shadowrootdelegatesfocus: r,
282
+ dangerouslySetInnerHTML: { __html: n.getTemplateHTML(h, i) },
283
+ key: "ce-la-react-ssr-template-shadow-root"
284
+ }), g.children];
285
+ }
286
+ return e.createElement(t, {
287
+ ...a,
288
+ ...g,
289
+ ref: e.useCallback((e) => {
290
+ f.current = e, typeof l == "function" ? l(e) : l !== null && (l.current = e);
291
+ }, [l])
292
+ }, g.children);
293
+ });
294
+ return l.displayName = i == null ? n.name : i, l;
295
+ }
296
+ function V(e, t, n) {
297
+ var r, i;
298
+ e[t] = n, n == null && t in ((r = (i = globalThis.HTMLElement) == null ? void 0 : i.prototype) == null ? {} : r) && e.removeAttribute(t);
299
+ }
300
+ var H = B({
301
+ react: o,
302
+ tagName: "spotify-audio",
303
+ elementClass: F,
304
+ toAttributeName(e) {
305
+ return e === "muted" ? "" : e === "defaultMuted" ? "muted" : R(e);
306
+ }
307
+ });
308
+ //#endregion
309
+ export { H as default };
310
+
311
+ //# sourceMappingURL=react-GXf8sbzf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-GXf8sbzf.js","names":["CustomMediaElement"],"sources":["../../../node_modules/.pnpm/spotify-audio-element@1.0.4/node_modules/spotify-audio-element/dist/spotify-audio-element.js","../../../node_modules/.pnpm/spotify-audio-element@1.0.4/node_modules/spotify-audio-element/dist/react.js"],"sourcesContent":["const EMBED_BASE = \"https://open.spotify.com\";\nconst MATCH_SRC = /open\\.spotify\\.com\\/(\\w+)\\/(\\w+)/i;\nconst API_URL = \"https://open.spotify.com/embed-podcast/iframe-api/v1\";\nconst API_GLOBAL = \"SpotifyIframeApi\";\nconst API_GLOBAL_READY = \"onSpotifyIframeApiReady\";\nfunction getTemplateHTML(attrs, props = {}) {\n const iframeAttrs = {\n src: serializeIframeUrl(attrs, props),\n scrolling: \"no\",\n frameborder: 0,\n width: \"100%\",\n height: \"100%\",\n allow: \"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n };\n return (\n /*html*/\n `\n <style>\n :host {\n display: inline-block;\n min-width: 160px;\n min-height: 80px;\n position: relative;\n }\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n :host(:not([controls])) {\n display: none !important;\n }\n </style>\n <iframe${serializeAttributes(iframeAttrs)}></iframe>\n `\n );\n}\nfunction serializeIframeUrl(attrs, props) {\n var _a, _b, _c;\n if (!attrs.src) return;\n const matches = attrs.src.match(MATCH_SRC);\n const type = matches && matches[1];\n const metaId = matches && matches[2];\n const params = {\n t: (_a = props.config) == null ? void 0 : _a.startAt,\n theme: ((_b = props.config) == null ? void 0 : _b.theme) === \"dark\" ? \"0\" : null\n };\n const videoPath = ((_c = props.config) == null ? void 0 : _c.preferVideo) ? \"/video\" : \"\";\n return `${EMBED_BASE}/embed/${type}/${metaId}${videoPath}?${serialize(params)}`;\n}\nclass SpotifyAudioElement extends (globalThis.HTMLElement ?? class {\n}) {\n static getTemplateHTML = getTemplateHTML;\n static shadowRootOptions = { mode: \"open\" };\n static observedAttributes = [\n \"controls\",\n \"loop\",\n \"src\"\n ];\n loadComplete = new PublicPromise();\n #loadRequested;\n #hasLoaded;\n #isInit;\n #isWaiting = false;\n #closeToEnded = false;\n #paused = true;\n #currentTime = 0;\n #duration = NaN;\n #seeking = false;\n #config = null;\n constructor() {\n super();\n this.#upgradeProperty(\"config\");\n }\n async load() {\n var _a, _b, _c;\n if (this.#loadRequested) return;\n if (this.#hasLoaded) this.loadComplete = new PublicPromise();\n this.#hasLoaded = true;\n await (this.#loadRequested = Promise.resolve());\n this.#loadRequested = null;\n this.#isWaiting = false;\n this.#closeToEnded = false;\n this.#currentTime = 0;\n this.#duration = NaN;\n this.#seeking = false;\n this.dispatchEvent(new Event(\"emptied\"));\n let oldApi = this.api;\n this.api = null;\n if (!this.src) {\n return;\n }\n this.dispatchEvent(new Event(\"loadstart\"));\n const options = {\n t: (_a = this.config) == null ? void 0 : _a.startAt,\n theme: ((_b = this.config) == null ? void 0 : _b.theme) === \"dark\" ? \"0\" : null,\n preferVideo: (_c = this.config) == null ? void 0 : _c.preferVideo\n };\n if (this.#isInit) {\n this.api = oldApi;\n this.api.iframeElement.src = serializeIframeUrl(namedNodeMapToObject(this.attributes), this);\n } else {\n this.#isInit = true;\n if (!this.shadowRoot) {\n this.attachShadow({ mode: \"open\" });\n this.shadowRoot.innerHTML = getTemplateHTML(namedNodeMapToObject(this.attributes), this);\n }\n let iframe = this.shadowRoot.querySelector(\"iframe\");\n const Spotify = await loadScript(API_URL, API_GLOBAL, API_GLOBAL_READY);\n this.api = await new Promise((resolve) => Spotify.createController(iframe, options, resolve));\n this.api.iframeElement = iframe;\n this.api.addListener(\"ready\", () => {\n this.dispatchEvent(new Event(\"loadedmetadata\"));\n this.dispatchEvent(new Event(\"durationchange\"));\n this.dispatchEvent(new Event(\"volumechange\"));\n });\n this.api.addListener(\"playback_update\", (event) => {\n if (this.#closeToEnded && this.#paused && (event.data.isBuffering || !event.data.isPaused)) {\n this.#closeToEnded = false;\n this.currentTime = 1;\n return;\n }\n if (event.data.duration / 1e3 !== this.#duration) {\n this.#closeToEnded = false;\n this.#duration = event.data.duration / 1e3;\n this.dispatchEvent(new Event(\"durationchange\"));\n }\n if (event.data.position / 1e3 !== this.#currentTime) {\n this.#seeking = false;\n this.#closeToEnded = false;\n this.#currentTime = event.data.position / 1e3;\n this.dispatchEvent(new Event(\"timeupdate\"));\n }\n if (!this.#isWaiting && !this.#paused && event.data.isPaused) {\n this.#paused = true;\n this.dispatchEvent(new Event(\"pause\"));\n return;\n }\n if (this.#paused && (event.data.isBuffering || !event.data.isPaused)) {\n this.#paused = false;\n this.dispatchEvent(new Event(\"play\"));\n this.#isWaiting = event.data.isBuffering;\n if (this.#isWaiting) {\n this.dispatchEvent(new Event(\"waiting\"));\n } else {\n this.dispatchEvent(new Event(\"playing\"));\n }\n return;\n }\n if (this.#isWaiting && !event.data.isPaused) {\n this.#isWaiting = false;\n this.dispatchEvent(new Event(\"playing\"));\n return;\n }\n if (!this.paused && !this.seeking && !this.#closeToEnded && Math.ceil(this.currentTime) >= this.duration) {\n this.#closeToEnded = true;\n if (this.loop) {\n this.currentTime = 1;\n return;\n }\n if (!this.continuous) {\n this.pause();\n this.dispatchEvent(new Event(\"ended\"));\n }\n return;\n }\n });\n }\n this.loadComplete.resolve();\n await this.loadComplete;\n }\n async attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue) return;\n switch (attrName) {\n case \"src\": {\n this.load();\n return;\n }\n }\n }\n async play() {\n var _a;\n this.#paused = false;\n this.#isWaiting = true;\n this.dispatchEvent(new Event(\"play\"));\n await this.loadComplete;\n return (_a = this.api) == null ? void 0 : _a.resume();\n }\n async pause() {\n var _a;\n await this.loadComplete;\n return (_a = this.api) == null ? void 0 : _a.pause();\n }\n get config() {\n return this.#config;\n }\n set config(value) {\n this.#config = value;\n }\n get paused() {\n return this.#paused ?? true;\n }\n get muted() {\n return false;\n }\n set muted(val) {\n }\n get volume() {\n return 1;\n }\n set volume(val) {\n }\n get ended() {\n return Math.ceil(this.currentTime) >= this.duration;\n }\n get seeking() {\n return this.#seeking;\n }\n get loop() {\n return this.hasAttribute(\"loop\");\n }\n set loop(val) {\n if (this.loop == val) return;\n this.toggleAttribute(\"loop\", Boolean(val));\n }\n get currentTime() {\n return this.#currentTime;\n }\n set currentTime(val) {\n if (this.currentTime == val) return;\n this.#seeking = true;\n let oldTime = this.#currentTime;\n this.#currentTime = val;\n this.dispatchEvent(new Event(\"timeupdate\"));\n this.#currentTime = oldTime;\n this.loadComplete.then(() => {\n var _a;\n (_a = this.api) == null ? void 0 : _a.seek(val);\n });\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}\nfunction serializeAttributes(attrs) {\n let html = \"\";\n for (const key in attrs) {\n const value = attrs[key];\n if (value === \"\") html += ` ${key}`;\n else html += ` ${key}=\"${value}\"`;\n }\n return html;\n}\nfunction serialize(props) {\n return String(new URLSearchParams(boolToBinary(props)));\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 namedNodeMapToObject(namedNodeMap) {\n let obj = {};\n for (let attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\n}\nconst loadScriptCache = {};\nasync function loadScript(src, globalName, readyFnName) {\n if (loadScriptCache[src]) return loadScriptCache[src];\n if (globalName && self[globalName]) {\n return Promise.resolve(self[globalName]);\n }\n return loadScriptCache[src] = new Promise(function(resolve, reject) {\n const script = document.createElement(\"script\");\n script.src = src;\n const ready = (api) => resolve(api);\n if (readyFnName) self[readyFnName] = ready;\n script.onload = () => !readyFnName && ready();\n script.onerror = reject;\n document.head.append(script);\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}\nif (globalThis.customElements && !globalThis.customElements.get(\"spotify-audio\")) {\n globalThis.customElements.define(\"spotify-audio\", SpotifyAudioElement);\n}\nvar spotify_audio_element_default = SpotifyAudioElement;\nexport {\n spotify_audio_element_default as default\n};\n","\"use client\";\n\n// dist/react.ts\nimport React from \"react\";\nimport CustomMediaElement from \"./spotify-audio-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: \"spotify-audio\",\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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"}