@linktr.ee/messaging-react 1.26.1 → 1.28.0-rc-1776225927
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/Creator-D38dWn2X.js +318 -0
- package/dist/Creator-D38dWn2X.js.map +1 -0
- package/dist/MediaPlayer-DE9MC6k6.js +599 -0
- package/dist/MediaPlayer-DE9MC6k6.js.map +1 -0
- package/dist/Preview-DqAv16NS.js +87 -0
- package/dist/Preview-DqAv16NS.js.map +1 -0
- package/dist/Visitor-BG-9-3HU.js +199 -0
- package/dist/Visitor-BG-9-3HU.js.map +1 -0
- package/dist/dash.all.min-Duv4lvGS.js +18858 -0
- package/dist/dash.all.min-Duv4lvGS.js.map +1 -0
- package/dist/hls-Bogc7CBn.js +21710 -0
- package/dist/hls-Bogc7CBn.js.map +1 -0
- package/dist/index-Da-xN4Yq.js +16142 -0
- package/dist/index-Da-xN4Yq.js.map +1 -0
- package/dist/index-Dj9rqWcU.js +69 -0
- package/dist/index-Dj9rqWcU.js.map +1 -0
- package/dist/index.d.ts +74 -10
- package/dist/index.js +979 -934
- package/dist/index.js.map +1 -1
- package/dist/mixin-B6jYfIcp.js +808 -0
- package/dist/mixin-B6jYfIcp.js.map +1 -0
- package/dist/react-BxlQMOfz.js +419 -0
- package/dist/react-BxlQMOfz.js.map +1 -0
- package/dist/react-COAP-MIW.js +377 -0
- package/dist/react-COAP-MIW.js.map +1 -0
- package/dist/react-Cn4WlMcl.js +3108 -0
- package/dist/react-Cn4WlMcl.js.map +1 -0
- package/dist/react-CwTJArKY.js +459 -0
- package/dist/react-CwTJArKY.js.map +1 -0
- package/dist/react-DkfS_atT.js +373 -0
- package/dist/react-DkfS_atT.js.map +1 -0
- package/dist/react-Pea5fum1.js +286 -0
- package/dist/react-Pea5fum1.js.map +1 -0
- package/dist/react-RiBbsUDd.js +534 -0
- package/dist/react-RiBbsUDd.js.map +1 -0
- package/dist/react-dS1WBxxz.js +238 -0
- package/dist/react-dS1WBxxz.js.map +1 -0
- package/package.json +2 -1
- package/src/components/ChannelView.tsx +12 -2
- package/src/components/CustomMessage/CustomMessage.stories.tsx +173 -41
- package/src/components/CustomMessage/MessageTag.tsx +5 -0
- package/src/components/CustomMessage/index.tsx +43 -4
- package/src/components/LockedAttachment/LockedAttachment.stories.tsx +343 -0
- package/src/components/LockedAttachment/components/Creator.tsx +469 -0
- package/src/components/LockedAttachment/components/MediaPlayer.tsx +359 -0
- package/src/components/LockedAttachment/components/Visitor.tsx +356 -0
- package/src/components/LockedAttachment/index.tsx +39 -0
- package/src/components/LockedAttachment/types.ts +17 -0
- package/src/components/LockedAttachment/utils/icons.ts +53 -0
- package/src/components/LockedAttachment/utils/mimeType.test.ts +119 -0
- package/src/components/LockedAttachment/utils/mimeType.ts +37 -0
- package/src/components/ParticipantPicker/index.tsx +8 -1
- package/src/hooks/useParticipants.ts +3 -2
- package/src/index.ts +4 -0
- package/src/stories/decorators/storyUser.tsx +37 -0
- package/src/stream-custom-data.ts +9 -3
- package/src/types.ts +20 -1
- package/src/utils/isDevBuild.ts +10 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
var Z = Object.defineProperty;
|
|
2
|
+
var U = (e) => {
|
|
3
|
+
throw TypeError(e);
|
|
4
|
+
};
|
|
5
|
+
var tt = (e, i, t) => i in e ? Z(e, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[i] = t;
|
|
6
|
+
var k = (e, i, t) => tt(e, typeof i != "symbol" ? i + "" : i, t), B = (e, i, t) => i.has(e) || U("Cannot " + t);
|
|
7
|
+
var a = (e, i, t) => (B(e, i, "read from private field"), t ? t.call(e) : i.get(e)), d = (e, i, t) => i.has(e) ? U("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(e) : i.set(e, t), n = (e, i, t, s) => (B(e, i, "write to private field"), s ? s.call(e, t) : i.set(e, t), t), q = (e, i, t) => (B(e, i, "access private method"), t);
|
|
8
|
+
import et from "react";
|
|
9
|
+
const it = "https://open.spotify.com", st = /open\.spotify\.com\/(\w+)\/(\w+)/i, nt = "https://open.spotify.com/embed-podcast/iframe-api/v1", ot = "SpotifyIframeApi", rt = "onSpotifyIframeApiReady";
|
|
10
|
+
function F(e, i = {}) {
|
|
11
|
+
const t = {
|
|
12
|
+
src: K(e, i),
|
|
13
|
+
scrolling: "no",
|
|
14
|
+
frameborder: 0,
|
|
15
|
+
width: "100%",
|
|
16
|
+
height: "100%",
|
|
17
|
+
allow: "accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
|
|
18
|
+
};
|
|
19
|
+
return (
|
|
20
|
+
/*html*/
|
|
21
|
+
`
|
|
22
|
+
<style>
|
|
23
|
+
:host {
|
|
24
|
+
display: inline-block;
|
|
25
|
+
min-width: 160px;
|
|
26
|
+
min-height: 80px;
|
|
27
|
+
position: relative;
|
|
28
|
+
}
|
|
29
|
+
iframe {
|
|
30
|
+
position: absolute;
|
|
31
|
+
top: 0;
|
|
32
|
+
left: 0;
|
|
33
|
+
width: 100%;
|
|
34
|
+
height: 100%;
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
}
|
|
37
|
+
:host(:not([controls])) {
|
|
38
|
+
display: none !important;
|
|
39
|
+
}
|
|
40
|
+
</style>
|
|
41
|
+
<iframe${at(t)}></iframe>
|
|
42
|
+
`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
function K(e, i) {
|
|
46
|
+
var t, s, u;
|
|
47
|
+
if (!e.src) return;
|
|
48
|
+
const c = e.src.match(st), b = c && c[1], g = c && c[2], A = {
|
|
49
|
+
t: (t = i.config) == null ? void 0 : t.startAt,
|
|
50
|
+
theme: ((s = i.config) == null ? void 0 : s.theme) === "dark" ? "0" : null
|
|
51
|
+
}, l = (u = i.config) != null && u.preferVideo ? "/video" : "";
|
|
52
|
+
return `${it}/embed/${b}/${g}${l}?${lt(A)}`;
|
|
53
|
+
}
|
|
54
|
+
var L, S, C, f, p, m, v, _, P, H, N, Q;
|
|
55
|
+
class R extends (globalThis.HTMLElement ?? class {
|
|
56
|
+
}) {
|
|
57
|
+
constructor() {
|
|
58
|
+
super();
|
|
59
|
+
d(this, N);
|
|
60
|
+
k(this, "loadComplete", new V());
|
|
61
|
+
d(this, L);
|
|
62
|
+
d(this, S);
|
|
63
|
+
d(this, C);
|
|
64
|
+
d(this, f, !1);
|
|
65
|
+
d(this, p, !1);
|
|
66
|
+
d(this, m, !0);
|
|
67
|
+
d(this, v, 0);
|
|
68
|
+
d(this, _, NaN);
|
|
69
|
+
d(this, P, !1);
|
|
70
|
+
d(this, H, null);
|
|
71
|
+
q(this, N, Q).call(this, "config");
|
|
72
|
+
}
|
|
73
|
+
async load() {
|
|
74
|
+
var t, s, u;
|
|
75
|
+
if (a(this, L)) return;
|
|
76
|
+
a(this, S) && (this.loadComplete = new V()), n(this, S, !0), await n(this, L, Promise.resolve()), n(this, L, null), n(this, f, !1), n(this, p, !1), n(this, v, 0), n(this, _, NaN), n(this, P, !1), this.dispatchEvent(new Event("emptied"));
|
|
77
|
+
let c = this.api;
|
|
78
|
+
if (this.api = null, !this.src)
|
|
79
|
+
return;
|
|
80
|
+
this.dispatchEvent(new Event("loadstart"));
|
|
81
|
+
const b = {
|
|
82
|
+
t: (t = this.config) == null ? void 0 : t.startAt,
|
|
83
|
+
theme: ((s = this.config) == null ? void 0 : s.theme) === "dark" ? "0" : null,
|
|
84
|
+
preferVideo: (u = this.config) == null ? void 0 : u.preferVideo
|
|
85
|
+
};
|
|
86
|
+
if (a(this, C))
|
|
87
|
+
this.api = c, this.api.iframeElement.src = K(G(this.attributes), this);
|
|
88
|
+
else {
|
|
89
|
+
n(this, C, !0), this.shadowRoot || (this.attachShadow({ mode: "open" }), this.shadowRoot.innerHTML = F(G(this.attributes), this));
|
|
90
|
+
let g = this.shadowRoot.querySelector("iframe");
|
|
91
|
+
const A = await ct(nt, ot, rt);
|
|
92
|
+
this.api = await new Promise((l) => A.createController(g, b, l)), this.api.iframeElement = g, this.api.addListener("ready", () => {
|
|
93
|
+
this.dispatchEvent(new Event("loadedmetadata")), this.dispatchEvent(new Event("durationchange")), this.dispatchEvent(new Event("volumechange"));
|
|
94
|
+
}), this.api.addListener("playback_update", (l) => {
|
|
95
|
+
if (a(this, p) && a(this, m) && (l.data.isBuffering || !l.data.isPaused)) {
|
|
96
|
+
n(this, p, !1), this.currentTime = 1;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (l.data.duration / 1e3 !== a(this, _) && (n(this, p, !1), n(this, _, l.data.duration / 1e3), this.dispatchEvent(new Event("durationchange"))), l.data.position / 1e3 !== a(this, v) && (n(this, P, !1), n(this, p, !1), n(this, v, l.data.position / 1e3), this.dispatchEvent(new Event("timeupdate"))), !a(this, f) && !a(this, m) && l.data.isPaused) {
|
|
100
|
+
n(this, m, !0), this.dispatchEvent(new Event("pause"));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (a(this, m) && (l.data.isBuffering || !l.data.isPaused)) {
|
|
104
|
+
n(this, m, !1), this.dispatchEvent(new Event("play")), n(this, f, l.data.isBuffering), a(this, f) ? this.dispatchEvent(new Event("waiting")) : this.dispatchEvent(new Event("playing"));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (a(this, f) && !l.data.isPaused) {
|
|
108
|
+
n(this, f, !1), this.dispatchEvent(new Event("playing"));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (!this.paused && !this.seeking && !a(this, p) && Math.ceil(this.currentTime) >= this.duration) {
|
|
112
|
+
if (n(this, p, !0), this.loop) {
|
|
113
|
+
this.currentTime = 1;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.continuous || (this.pause(), this.dispatchEvent(new Event("ended")));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
this.loadComplete.resolve(), await this.loadComplete;
|
|
122
|
+
}
|
|
123
|
+
async attributeChangedCallback(t, s, u) {
|
|
124
|
+
if (s !== u)
|
|
125
|
+
switch (t) {
|
|
126
|
+
case "src": {
|
|
127
|
+
this.load();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async play() {
|
|
133
|
+
var t;
|
|
134
|
+
return n(this, m, !1), n(this, f, !0), this.dispatchEvent(new Event("play")), await this.loadComplete, (t = this.api) == null ? void 0 : t.resume();
|
|
135
|
+
}
|
|
136
|
+
async pause() {
|
|
137
|
+
var t;
|
|
138
|
+
return await this.loadComplete, (t = this.api) == null ? void 0 : t.pause();
|
|
139
|
+
}
|
|
140
|
+
get config() {
|
|
141
|
+
return a(this, H);
|
|
142
|
+
}
|
|
143
|
+
set config(t) {
|
|
144
|
+
n(this, H, t);
|
|
145
|
+
}
|
|
146
|
+
get paused() {
|
|
147
|
+
return a(this, m) ?? !0;
|
|
148
|
+
}
|
|
149
|
+
get muted() {
|
|
150
|
+
return !1;
|
|
151
|
+
}
|
|
152
|
+
set muted(t) {
|
|
153
|
+
}
|
|
154
|
+
get volume() {
|
|
155
|
+
return 1;
|
|
156
|
+
}
|
|
157
|
+
set volume(t) {
|
|
158
|
+
}
|
|
159
|
+
get ended() {
|
|
160
|
+
return Math.ceil(this.currentTime) >= this.duration;
|
|
161
|
+
}
|
|
162
|
+
get seeking() {
|
|
163
|
+
return a(this, P);
|
|
164
|
+
}
|
|
165
|
+
get loop() {
|
|
166
|
+
return this.hasAttribute("loop");
|
|
167
|
+
}
|
|
168
|
+
set loop(t) {
|
|
169
|
+
this.loop != t && this.toggleAttribute("loop", !!t);
|
|
170
|
+
}
|
|
171
|
+
get currentTime() {
|
|
172
|
+
return a(this, v);
|
|
173
|
+
}
|
|
174
|
+
set currentTime(t) {
|
|
175
|
+
if (this.currentTime == t) return;
|
|
176
|
+
n(this, P, !0);
|
|
177
|
+
let s = a(this, v);
|
|
178
|
+
n(this, v, t), this.dispatchEvent(new Event("timeupdate")), n(this, v, s), this.loadComplete.then(() => {
|
|
179
|
+
var u;
|
|
180
|
+
(u = this.api) == null || u.seek(t);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
get duration() {
|
|
184
|
+
return a(this, _);
|
|
185
|
+
}
|
|
186
|
+
get src() {
|
|
187
|
+
return this.getAttribute("src");
|
|
188
|
+
}
|
|
189
|
+
set src(t) {
|
|
190
|
+
this.setAttribute("src", `${t}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
L = new WeakMap(), S = new WeakMap(), C = new WeakMap(), f = new WeakMap(), p = new WeakMap(), m = new WeakMap(), v = new WeakMap(), _ = new WeakMap(), P = new WeakMap(), H = new WeakMap(), N = new WeakSet(), // This is a pattern to update property values that are set before
|
|
194
|
+
// the custom element is upgraded.
|
|
195
|
+
// https://web.dev/custom-elements-best-practices/#make-properties-lazy
|
|
196
|
+
Q = function(t) {
|
|
197
|
+
if (Object.prototype.hasOwnProperty.call(this, t)) {
|
|
198
|
+
const s = this[t];
|
|
199
|
+
delete this[t], this[t] = s;
|
|
200
|
+
}
|
|
201
|
+
}, k(R, "getTemplateHTML", F), k(R, "shadowRootOptions", { mode: "open" }), k(R, "observedAttributes", [
|
|
202
|
+
"controls",
|
|
203
|
+
"loop",
|
|
204
|
+
"src"
|
|
205
|
+
]);
|
|
206
|
+
function at(e) {
|
|
207
|
+
let i = "";
|
|
208
|
+
for (const t in e) {
|
|
209
|
+
const s = e[t];
|
|
210
|
+
s === "" ? i += ` ${t}` : i += ` ${t}="${s}"`;
|
|
211
|
+
}
|
|
212
|
+
return i;
|
|
213
|
+
}
|
|
214
|
+
function lt(e) {
|
|
215
|
+
return String(new URLSearchParams(ut(e)));
|
|
216
|
+
}
|
|
217
|
+
function ut(e) {
|
|
218
|
+
let i = {};
|
|
219
|
+
for (let t in e) {
|
|
220
|
+
let s = e[t];
|
|
221
|
+
s === !0 || s === "" ? i[t] = 1 : s === !1 ? i[t] = 0 : s != null && (i[t] = s);
|
|
222
|
+
}
|
|
223
|
+
return i;
|
|
224
|
+
}
|
|
225
|
+
function G(e) {
|
|
226
|
+
let i = {};
|
|
227
|
+
for (let t of e)
|
|
228
|
+
i[t.name] = t.value;
|
|
229
|
+
return i;
|
|
230
|
+
}
|
|
231
|
+
const j = {};
|
|
232
|
+
async function ct(e, i, t) {
|
|
233
|
+
return j[e] ? j[e] : self[i] ? Promise.resolve(self[i]) : j[e] = new Promise(function(s, u) {
|
|
234
|
+
const c = document.createElement("script");
|
|
235
|
+
c.src = e;
|
|
236
|
+
const b = (g) => s(g);
|
|
237
|
+
self[t] = b, c.onload = () => !t, c.onerror = u, document.head.append(c);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
class V extends Promise {
|
|
241
|
+
constructor(i = () => {
|
|
242
|
+
}) {
|
|
243
|
+
let t, s;
|
|
244
|
+
super((u, c) => {
|
|
245
|
+
i(u, c), t = u, s = c;
|
|
246
|
+
}), this.resolve = t, this.reject = s;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
globalThis.customElements && !globalThis.customElements.get("spotify-audio") && globalThis.customElements.define("spotify-audio", R);
|
|
250
|
+
var ht = R, dt = /* @__PURE__ */ new Set([
|
|
251
|
+
"style",
|
|
252
|
+
"children",
|
|
253
|
+
"ref",
|
|
254
|
+
"key",
|
|
255
|
+
"suppressContentEditableWarning",
|
|
256
|
+
"suppressHydrationWarning",
|
|
257
|
+
"dangerouslySetInnerHTML"
|
|
258
|
+
]), ft = {
|
|
259
|
+
className: "class",
|
|
260
|
+
htmlFor: "for"
|
|
261
|
+
};
|
|
262
|
+
function X(e) {
|
|
263
|
+
return e.toLowerCase();
|
|
264
|
+
}
|
|
265
|
+
function Y(e) {
|
|
266
|
+
if (typeof e == "boolean") return e ? "" : void 0;
|
|
267
|
+
if (typeof e != "function" && !(typeof e == "object" && e !== null))
|
|
268
|
+
return e;
|
|
269
|
+
}
|
|
270
|
+
function pt({
|
|
271
|
+
react: e,
|
|
272
|
+
tagName: i,
|
|
273
|
+
elementClass: t,
|
|
274
|
+
events: s,
|
|
275
|
+
displayName: u,
|
|
276
|
+
defaultProps: c,
|
|
277
|
+
toAttributeName: b = X,
|
|
278
|
+
toAttributeValue: g = Y
|
|
279
|
+
}) {
|
|
280
|
+
const A = Number.parseInt(e.version) >= 19, l = e.forwardRef((W, M) => {
|
|
281
|
+
var x, z;
|
|
282
|
+
const y = e.useRef(null), O = e.useRef(/* @__PURE__ */ new Map()), $ = {}, D = {}, w = {}, I = {};
|
|
283
|
+
for (const [o, r] of Object.entries(W)) {
|
|
284
|
+
if (dt.has(o)) {
|
|
285
|
+
w[o] = r;
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
const h = b(ft[o] ?? o);
|
|
289
|
+
if (t.prototype && o in t.prototype && !(o in (((x = globalThis.HTMLElement) == null ? void 0 : x.prototype) ?? {})) && !((z = t.observedAttributes) != null && z.some((T) => T === h))) {
|
|
290
|
+
I[o] = r;
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
if (o.startsWith("on")) {
|
|
294
|
+
$[o] = r;
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
const E = g(r);
|
|
298
|
+
if (h && E != null && (D[h] = String(E), A || (w[h] = E)), h && A) {
|
|
299
|
+
const T = Y(r);
|
|
300
|
+
E !== T ? w[h] = E : w[h] = r;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (typeof window < "u") {
|
|
304
|
+
for (const o in $) {
|
|
305
|
+
const r = $[o], h = o.endsWith("Capture"), E = ((s == null ? void 0 : s[o]) ?? o.slice(2).toLowerCase()).slice(
|
|
306
|
+
0,
|
|
307
|
+
h ? -7 : void 0
|
|
308
|
+
);
|
|
309
|
+
e.useLayoutEffect(() => {
|
|
310
|
+
const T = y == null ? void 0 : y.current;
|
|
311
|
+
if (!(!T || typeof r != "function"))
|
|
312
|
+
return T.addEventListener(E, r, h), () => {
|
|
313
|
+
T.removeEventListener(E, r, h);
|
|
314
|
+
};
|
|
315
|
+
}, [y == null ? void 0 : y.current, r]);
|
|
316
|
+
}
|
|
317
|
+
e.useLayoutEffect(() => {
|
|
318
|
+
if (y.current === null) return;
|
|
319
|
+
const o = /* @__PURE__ */ new Map();
|
|
320
|
+
for (const r in I)
|
|
321
|
+
J(y.current, r, I[r]), O.current.delete(r), o.set(r, I[r]);
|
|
322
|
+
for (const [r, h] of O.current)
|
|
323
|
+
J(y.current, r, void 0);
|
|
324
|
+
O.current = o;
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
if (typeof window > "u" && (t != null && t.getTemplateHTML) && (t != null && t.shadowRootOptions)) {
|
|
328
|
+
const { mode: o, delegatesFocus: r } = t.shadowRootOptions, h = e.createElement("template", {
|
|
329
|
+
shadowrootmode: o,
|
|
330
|
+
shadowrootdelegatesfocus: r,
|
|
331
|
+
dangerouslySetInnerHTML: {
|
|
332
|
+
__html: t.getTemplateHTML(D, W)
|
|
333
|
+
},
|
|
334
|
+
key: "ce-la-react-ssr-template-shadow-root"
|
|
335
|
+
});
|
|
336
|
+
w.children = [h, w.children];
|
|
337
|
+
}
|
|
338
|
+
return e.createElement(i, {
|
|
339
|
+
...c,
|
|
340
|
+
...w,
|
|
341
|
+
ref: e.useCallback(
|
|
342
|
+
(o) => {
|
|
343
|
+
y.current = o, typeof M == "function" ? M(o) : M !== null && (M.current = o);
|
|
344
|
+
},
|
|
345
|
+
[M]
|
|
346
|
+
)
|
|
347
|
+
}, w.children);
|
|
348
|
+
});
|
|
349
|
+
return l.displayName = u ?? t.name, l;
|
|
350
|
+
}
|
|
351
|
+
function J(e, i, t) {
|
|
352
|
+
var s;
|
|
353
|
+
e[i] = t, t == null && i in (((s = globalThis.HTMLElement) == null ? void 0 : s.prototype) ?? {}) && e.removeAttribute(i);
|
|
354
|
+
}
|
|
355
|
+
var gt = pt({
|
|
356
|
+
react: et,
|
|
357
|
+
tagName: "spotify-audio",
|
|
358
|
+
elementClass: ht,
|
|
359
|
+
toAttributeName(e) {
|
|
360
|
+
return e === "muted" ? "" : e === "defaultMuted" ? "muted" : X(e);
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
/*! Bundled license information:
|
|
364
|
+
|
|
365
|
+
ce-la-react/dist/ce-la-react.js:
|
|
366
|
+
(**
|
|
367
|
+
* @license
|
|
368
|
+
* Copyright 2018 Google LLC
|
|
369
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
370
|
+
*
|
|
371
|
+
* Modified version of `@lit/react` for vanilla custom elements with support for SSR.
|
|
372
|
+
*)
|
|
373
|
+
*/
|
|
374
|
+
export {
|
|
375
|
+
gt as default
|
|
376
|
+
};
|
|
377
|
+
//# sourceMappingURL=react-COAP-MIW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-COAP-MIW.js","sources":["../../../node_modules/spotify-audio-element/dist/spotify-audio-element.js","../../../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"],"names":["EMBED_BASE","MATCH_SRC","API_URL","API_GLOBAL","API_GLOBAL_READY","getTemplateHTML","attrs","props","iframeAttrs","serializeIframeUrl","serializeAttributes","_a","_b","_c","matches","type","metaId","params","videoPath","serialize","SpotifyAudioElement","__privateAdd","_SpotifyAudioElement_instances","__publicField","PublicPromise","_loadRequested","_hasLoaded","_isInit","_isWaiting","_closeToEnded","_paused","_currentTime","_duration","_seeking","_config","__privateMethod","upgradeProperty_fn","__privateGet","__privateSet","oldApi","options","namedNodeMapToObject","iframe","Spotify","loadScript","resolve","event","attrName","oldValue","newValue","value","val","oldTime","prop","html","key","boolToBinary","p","namedNodeMap","obj","attr","loadScriptCache","src","globalName","readyFnName","reject","script","ready","api","executor","res","rej","spotify_audio_element_default","reservedReactProps","reactPropToAttrNameMap","defaultToAttributeName","propName","defaultToAttributeValue","propValue","createComponent","React2","tagName","elementClass","events","displayName","defaultProps","toAttributeName","toAttributeValue","IS_REACT_19_OR_NEWER","ReactComponent","ref","elementRef","prevElemPropsRef","eventProps","reactProps","elementProps","k","v","attrValue","attrValueFromDefault","callback","useCapture","eventName","eventTarget","newElemProps","setProperty","_value","mode","delegatesFocus","templateShadowRoot","node","name","react_default","React","CustomMediaElement"],"mappings":"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","x_google_ignoreList":[0,1]}
|