@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.
Files changed (58) hide show
  1. package/dist/Creator-D38dWn2X.js +318 -0
  2. package/dist/Creator-D38dWn2X.js.map +1 -0
  3. package/dist/MediaPlayer-DE9MC6k6.js +599 -0
  4. package/dist/MediaPlayer-DE9MC6k6.js.map +1 -0
  5. package/dist/Preview-DqAv16NS.js +87 -0
  6. package/dist/Preview-DqAv16NS.js.map +1 -0
  7. package/dist/Visitor-BG-9-3HU.js +199 -0
  8. package/dist/Visitor-BG-9-3HU.js.map +1 -0
  9. package/dist/dash.all.min-Duv4lvGS.js +18858 -0
  10. package/dist/dash.all.min-Duv4lvGS.js.map +1 -0
  11. package/dist/hls-Bogc7CBn.js +21710 -0
  12. package/dist/hls-Bogc7CBn.js.map +1 -0
  13. package/dist/index-Da-xN4Yq.js +16142 -0
  14. package/dist/index-Da-xN4Yq.js.map +1 -0
  15. package/dist/index-Dj9rqWcU.js +69 -0
  16. package/dist/index-Dj9rqWcU.js.map +1 -0
  17. package/dist/index.d.ts +74 -10
  18. package/dist/index.js +979 -934
  19. package/dist/index.js.map +1 -1
  20. package/dist/mixin-B6jYfIcp.js +808 -0
  21. package/dist/mixin-B6jYfIcp.js.map +1 -0
  22. package/dist/react-BxlQMOfz.js +419 -0
  23. package/dist/react-BxlQMOfz.js.map +1 -0
  24. package/dist/react-COAP-MIW.js +377 -0
  25. package/dist/react-COAP-MIW.js.map +1 -0
  26. package/dist/react-Cn4WlMcl.js +3108 -0
  27. package/dist/react-Cn4WlMcl.js.map +1 -0
  28. package/dist/react-CwTJArKY.js +459 -0
  29. package/dist/react-CwTJArKY.js.map +1 -0
  30. package/dist/react-DkfS_atT.js +373 -0
  31. package/dist/react-DkfS_atT.js.map +1 -0
  32. package/dist/react-Pea5fum1.js +286 -0
  33. package/dist/react-Pea5fum1.js.map +1 -0
  34. package/dist/react-RiBbsUDd.js +534 -0
  35. package/dist/react-RiBbsUDd.js.map +1 -0
  36. package/dist/react-dS1WBxxz.js +238 -0
  37. package/dist/react-dS1WBxxz.js.map +1 -0
  38. package/package.json +2 -1
  39. package/src/components/ChannelView.tsx +12 -2
  40. package/src/components/CustomMessage/CustomMessage.stories.tsx +173 -41
  41. package/src/components/CustomMessage/MessageTag.tsx +5 -0
  42. package/src/components/CustomMessage/index.tsx +43 -4
  43. package/src/components/LockedAttachment/LockedAttachment.stories.tsx +343 -0
  44. package/src/components/LockedAttachment/components/Creator.tsx +469 -0
  45. package/src/components/LockedAttachment/components/MediaPlayer.tsx +359 -0
  46. package/src/components/LockedAttachment/components/Visitor.tsx +356 -0
  47. package/src/components/LockedAttachment/index.tsx +39 -0
  48. package/src/components/LockedAttachment/types.ts +17 -0
  49. package/src/components/LockedAttachment/utils/icons.ts +53 -0
  50. package/src/components/LockedAttachment/utils/mimeType.test.ts +119 -0
  51. package/src/components/LockedAttachment/utils/mimeType.ts +37 -0
  52. package/src/components/ParticipantPicker/index.tsx +8 -1
  53. package/src/hooks/useParticipants.ts +3 -2
  54. package/src/index.ts +4 -0
  55. package/src/stories/decorators/storyUser.tsx +37 -0
  56. package/src/stream-custom-data.ts +9 -3
  57. package/src/types.ts +20 -1
  58. package/src/utils/isDevBuild.ts +10 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixin-B6jYfIcp.js","sources":["../../../node_modules/custom-media-element/dist/custom-media-element.js","../../../node_modules/media-tracks/dist/change-event.js","../../../node_modules/media-tracks/dist/utils.js","../../../node_modules/media-tracks/dist/video-track-list.js","../../../node_modules/media-tracks/dist/rendition-event.js","../../../node_modules/media-tracks/dist/video-rendition-list.js","../../../node_modules/media-tracks/dist/video-rendition.js","../../../node_modules/media-tracks/dist/video-track.js","../../../node_modules/media-tracks/dist/audio-rendition-list.js","../../../node_modules/media-tracks/dist/audio-rendition.js","../../../node_modules/media-tracks/dist/audio-track-list.js","../../../node_modules/media-tracks/dist/audio-track.js","../../../node_modules/media-tracks/dist/mixin.js"],"sourcesContent":["const Events = [\n \"abort\",\n \"canplay\",\n \"canplaythrough\",\n \"durationchange\",\n \"emptied\",\n \"encrypted\",\n \"ended\",\n \"error\",\n \"loadeddata\",\n \"loadedmetadata\",\n \"loadstart\",\n \"pause\",\n \"play\",\n \"playing\",\n \"progress\",\n \"ratechange\",\n \"seeked\",\n \"seeking\",\n \"stalled\",\n \"suspend\",\n \"timeupdate\",\n \"volumechange\",\n \"waiting\",\n \"waitingforkey\",\n \"resize\",\n \"enterpictureinpicture\",\n \"leavepictureinpicture\",\n \"webkitbeginfullscreen\",\n \"webkitendfullscreen\",\n \"webkitpresentationmodechanged\"\n];\nconst Attributes = [\n \"autopictureinpicture\",\n \"disablepictureinpicture\",\n \"disableremoteplayback\",\n \"autoplay\",\n \"controls\",\n \"controlslist\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\"\n];\nfunction getAudioTemplateHTML(attrs) {\n return (\n /*html*/\n `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n audio {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <audio${serializeAttributes(attrs)}></audio>\n </slot>\n <slot></slot>\n `\n );\n}\nfunction getVideoTemplateHTML(attrs) {\n return (\n /*html*/\n `\n <style>\n :host {\n display: inline-block;\n line-height: 0;\n }\n\n video {\n max-width: 100%;\n max-height: 100%;\n min-width: 100%;\n min-height: 100%;\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, 50% 50%);\n }\n\n video::-webkit-media-text-track-container {\n transform: var(--media-webkit-text-track-transform);\n transition: var(--media-webkit-text-track-transition);\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `\n );\n}\nfunction CustomMediaMixin(superclass, { tag, is }) {\n const nativeElTest = globalThis.document?.createElement?.(tag, { is });\n const nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];\n return class CustomMedia extends superclass {\n static getTemplateHTML = tag.endsWith(\"audio\") ? getAudioTemplateHTML : getVideoTemplateHTML;\n static shadowRootOptions = { mode: \"open\" };\n static Events = Events;\n static #isDefined = false;\n static get observedAttributes() {\n CustomMedia.#define();\n const natAttrs = nativeElTest?.constructor?.observedAttributes ?? [];\n return [\n ...natAttrs,\n ...Attributes\n ];\n }\n static #define() {\n if (this.#isDefined) return;\n this.#isDefined = true;\n const propsToAttrs = new Set(this.observedAttributes);\n propsToAttrs.delete(\"muted\");\n for (const prop of nativeElProps) {\n if (prop in this.prototype) continue;\n if (typeof nativeElTest[prop] === \"function\") {\n this.prototype[prop] = function(...args) {\n this.#init();\n const fn = () => {\n if (this.call) return this.call(prop, ...args);\n const nativeFn = this.nativeEl?.[prop];\n return nativeFn?.apply(this.nativeEl, args);\n };\n return fn();\n };\n } else {\n const config = {\n get() {\n this.#init();\n const attr = prop.toLowerCase();\n if (propsToAttrs.has(attr)) {\n const val = this.getAttribute(attr);\n return val === null ? false : val === \"\" ? true : val;\n }\n return this.get?.(prop) ?? this.nativeEl?.[prop];\n }\n };\n if (prop !== prop.toUpperCase()) {\n config.set = function(val) {\n this.#init();\n const attr = prop.toLowerCase();\n if (propsToAttrs.has(attr)) {\n if (val === true || val === false || val == null) {\n this.toggleAttribute(attr, Boolean(val));\n } else {\n this.setAttribute(attr, val);\n }\n return;\n }\n if (this.set) {\n this.set(prop, val);\n return;\n }\n if (this.nativeEl) {\n this.nativeEl[prop] = val;\n }\n };\n }\n Object.defineProperty(this.prototype, prop, config);\n }\n }\n }\n // Private fields\n #isInit = false;\n #nativeEl = null;\n #childMap = /* @__PURE__ */ new Map();\n #childObserver;\n #slotChangeHandler;\n get;\n set;\n call;\n // If the custom element is defined before the custom element's HTML is parsed\n // no attributes will be available in the constructor (construction process).\n // Wait until initializing in the attributeChangedCallback or\n // connectedCallback or accessing any properties.\n get nativeEl() {\n this.#init();\n return this.#nativeEl ?? this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n }\n set nativeEl(val) {\n this.#nativeEl = val;\n }\n get defaultMuted() {\n return this.hasAttribute(\"muted\");\n }\n set defaultMuted(val) {\n this.toggleAttribute(\"muted\", val);\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(val) {\n this.setAttribute(\"src\", `${val}`);\n }\n get preload() {\n return this.getAttribute(\"preload\") ?? this.nativeEl?.preload;\n }\n set preload(val) {\n this.setAttribute(\"preload\", `${val}`);\n }\n #init() {\n if (this.#isInit) return;\n this.#isInit = true;\n this.init();\n }\n init() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: \"open\" });\n const attrs = namedNodeMapToObject(this.attributes);\n if (is) attrs.is = is;\n if (tag) attrs.part = tag;\n this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n }\n this.nativeEl.muted = this.hasAttribute(\"muted\");\n for (const prop of nativeElProps) {\n this.#upgradeProperty(prop);\n }\n this.#setupListeners();\n }\n #setupListeners() {\n this.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n this.#slotChangeHandler = () => this.#syncMediaChildren();\n this.shadowRoot?.addEventListener(\"slotchange\", this.#slotChangeHandler);\n this.#syncMediaChildren();\n for (const type of this.constructor.Events) {\n this.shadowRoot?.addEventListener(type, this, true);\n }\n }\n handleEvent(event) {\n if (event.target === this.nativeEl) {\n this.dispatchEvent(new CustomEvent(event.type, { detail: event.detail }));\n }\n }\n #syncMediaChildren() {\n const removeNativeChildren = new Map(this.#childMap);\n const defaultSlot = this.shadowRoot?.querySelector(\"slot:not([name])\");\n const mediaChildren = defaultSlot?.assignedElements({ flatten: true }).filter((el) => [\"track\", \"source\"].includes(el.localName));\n mediaChildren.forEach((el) => {\n removeNativeChildren.delete(el);\n let clone = this.#childMap.get(el);\n if (!clone) {\n clone = el.cloneNode();\n this.#childMap.set(el, clone);\n this.#childObserver?.observe(el, { attributes: true });\n }\n this.nativeEl?.append(clone);\n this.#enableDefaultTrack(clone);\n });\n removeNativeChildren.forEach((clone, el) => {\n clone.remove();\n this.#childMap.delete(el);\n });\n }\n #syncMediaChildAttribute(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === \"attributes\") {\n const { target, attributeName } = mutation;\n const clone = this.#childMap.get(target);\n if (clone && attributeName) {\n clone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n this.#enableDefaultTrack(clone);\n }\n }\n }\n }\n #enableDefaultTrack(trackEl) {\n if (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") {\n trackEl.track.mode = \"hidden\";\n }\n }\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 attributeChangedCallback(attrName, oldValue, newValue) {\n this.#init();\n this.#forwardAttribute(attrName, oldValue, newValue);\n }\n #forwardAttribute(attrName, _oldValue, newValue) {\n if ([\"id\", \"class\"].includes(attrName)) return;\n if (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) {\n return;\n }\n if (newValue === null) {\n this.nativeEl?.removeAttribute(attrName);\n } else if (this.nativeEl?.getAttribute(attrName) !== newValue) {\n this.nativeEl?.setAttribute(attrName, newValue);\n }\n }\n connectedCallback() {\n this.#init();\n if (!this.#slotChangeHandler) {\n this.#setupListeners();\n }\n }\n disconnectedCallback() {\n this.#childObserver?.disconnect();\n this.#childObserver = void 0;\n if (this.#slotChangeHandler) {\n this.shadowRoot?.removeEventListener(\"slotchange\", this.#slotChangeHandler);\n this.#slotChangeHandler = void 0;\n }\n for (const type of this.constructor.Events) {\n this.shadowRoot?.removeEventListener(type, this, true);\n }\n this.#childMap.forEach((clone) => clone.remove());\n this.#childMap.clear();\n this.#nativeEl = null;\n }\n };\n}\nfunction getNativeElProps(nativeElTest) {\n const nativeElProps = [];\n for (let proto = Object.getPrototypeOf(nativeElTest); proto && proto !== HTMLElement.prototype; proto = Object.getPrototypeOf(proto)) {\n const props = Object.getOwnPropertyNames(proto);\n nativeElProps.push(...props);\n }\n return nativeElProps;\n}\nfunction serializeAttributes(attrs) {\n let html = \"\";\n for (const key in attrs) {\n if (!Attributes.includes(key)) continue;\n const value = attrs[key];\n if (value === \"\") html += ` ${key}`;\n else html += ` ${key}=\"${value}\"`;\n }\n return html;\n}\nfunction namedNodeMapToObject(namedNodeMap) {\n const obj = {};\n for (const attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\n}\nconst CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {\n}, {\n tag: \"video\"\n});\nconst CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {\n}, {\n tag: \"audio\"\n});\nexport {\n Attributes,\n CustomAudioElement,\n CustomMediaMixin,\n CustomVideoElement,\n Events\n};\n","class TrackEvent extends Event {\n track;\n constructor(type, init) {\n super(type);\n this.track = init.track;\n }\n}\nexport {\n TrackEvent\n};\n","const privateProps = /* @__PURE__ */ new WeakMap();\nfunction getPrivate(instance) {\n return privateProps.get(instance) ?? setPrivate(instance, {});\n}\nfunction setPrivate(instance, props) {\n let saved = privateProps.get(instance);\n if (!saved) privateProps.set(instance, saved = {});\n return Object.assign(saved, props);\n}\nexport {\n getPrivate,\n setPrivate\n};\n","import { TrackEvent } from \"./change-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addVideoTrack(media, track) {\n const trackList = media.videoTracks;\n getPrivate(track).media = new WeakRef(media);\n if (!getPrivate(track).renditionSet) {\n getPrivate(track).renditionSet = /* @__PURE__ */ new Set();\n }\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.add(track);\n const index = trackSet.size - 1;\n if (!(index in VideoTrackList.prototype)) {\n Object.defineProperty(VideoTrackList.prototype, index, {\n get() {\n return [...getPrivate(this).trackSet][index];\n }\n });\n }\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"addtrack\", { track }));\n });\n}\nfunction removeVideoTrack(track) {\n const trackList = getPrivate(track).media?.deref()?.videoTracks;\n if (!trackList) return;\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.delete(track);\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"removetrack\", { track }));\n });\n}\nfunction selectedChanged(selected) {\n const trackList = getPrivate(selected).media?.deref()?.videoTracks ?? [];\n let hasUnselected = false;\n for (const track of trackList) {\n if (track === selected) continue;\n track.selected = false;\n hasUnselected = true;\n }\n if (hasUnselected) {\n if (getPrivate(trackList).changeRequested) return;\n getPrivate(trackList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(trackList).changeRequested;\n trackList.dispatchEvent(new Event(\"change\"));\n });\n }\n}\nclass VideoTrackList extends EventTarget {\n #addTrackCallback;\n #removeTrackCallback;\n #changeCallback;\n constructor() {\n super();\n getPrivate(this).trackSet = /* @__PURE__ */ new Set();\n }\n get #tracks() {\n return getPrivate(this).trackSet;\n }\n [Symbol.iterator]() {\n return this.#tracks.values();\n }\n get length() {\n return this.#tracks.size;\n }\n getTrackById(id) {\n return [...this.#tracks].find((track) => track.id === id) ?? null;\n }\n get selectedIndex() {\n return [...this.#tracks].findIndex((track) => track.selected);\n }\n get onaddtrack() {\n return this.#addTrackCallback;\n }\n set onaddtrack(callback) {\n if (this.#addTrackCallback) {\n this.removeEventListener(\"addtrack\", this.#addTrackCallback);\n this.#addTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addTrackCallback = callback;\n this.addEventListener(\"addtrack\", callback);\n }\n }\n get onremovetrack() {\n return this.#removeTrackCallback;\n }\n set onremovetrack(callback) {\n if (this.#removeTrackCallback) {\n this.removeEventListener(\"removetrack\", this.#removeTrackCallback);\n this.#removeTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeTrackCallback = callback;\n this.addEventListener(\"removetrack\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n VideoTrackList,\n addVideoTrack,\n removeVideoTrack,\n selectedChanged\n};\n","class RenditionEvent extends Event {\n rendition;\n constructor(type, init) {\n super(type);\n this.rendition = init.rendition;\n }\n}\nexport {\n RenditionEvent\n};\n","import { RenditionEvent } from \"./rendition-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addRendition(track, rendition) {\n const renditionList = getPrivate(track).media?.deref()?.videoRenditions;\n getPrivate(rendition).media = getPrivate(track).media;\n getPrivate(rendition).track = track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.add(rendition);\n const index = renditionSet.size - 1;\n if (!(index in VideoRenditionList.prototype)) {\n Object.defineProperty(VideoRenditionList.prototype, index, {\n get() {\n return getCurrentRenditions(this)[index];\n }\n });\n }\n queueMicrotask(() => {\n if (!renditionList || !track.selected) return;\n renditionList.dispatchEvent(new RenditionEvent(\"addrendition\", { rendition }));\n });\n}\nfunction removeRendition(rendition) {\n const renditionList = getPrivate(rendition).media?.deref()?.videoRenditions;\n const track = getPrivate(rendition).track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.delete(rendition);\n queueMicrotask(() => {\n const track2 = getPrivate(rendition).track;\n if (!renditionList || !track2.selected) return;\n renditionList.dispatchEvent(new RenditionEvent(\"removerendition\", { rendition }));\n });\n}\nfunction selectedChanged(rendition) {\n const renditionList = getPrivate(rendition).media?.deref()?.videoRenditions;\n if (!renditionList || getPrivate(renditionList).changeRequested) return;\n getPrivate(renditionList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(renditionList).changeRequested;\n const track = getPrivate(rendition).track;\n if (!track.selected) return;\n renditionList.dispatchEvent(new Event(\"change\"));\n });\n}\nfunction getCurrentRenditions(renditionList) {\n const media = getPrivate(renditionList).media?.deref();\n if (!media) return [];\n return [...media.videoTracks].filter((track) => track.selected).flatMap((track) => [...getPrivate(track).renditionSet]);\n}\nclass VideoRenditionList extends EventTarget {\n #addRenditionCallback;\n #removeRenditionCallback;\n #changeCallback;\n [Symbol.iterator]() {\n return getCurrentRenditions(this).values();\n }\n get length() {\n return getCurrentRenditions(this).length;\n }\n getRenditionById(id) {\n return getCurrentRenditions(this).find((rendition) => `${rendition.id}` === `${id}`) ?? null;\n }\n get selectedIndex() {\n return getCurrentRenditions(this).findIndex((rendition) => rendition.selected);\n }\n set selectedIndex(index) {\n for (const [i, rendition] of getCurrentRenditions(this).entries()) {\n rendition.selected = i === index;\n }\n }\n get onaddrendition() {\n return this.#addRenditionCallback;\n }\n set onaddrendition(callback) {\n if (this.#addRenditionCallback) {\n this.removeEventListener(\"addrendition\", this.#addRenditionCallback);\n this.#addRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addRenditionCallback = callback;\n this.addEventListener(\"addrendition\", callback);\n }\n }\n get onremoverendition() {\n return this.#removeRenditionCallback;\n }\n set onremoverendition(callback) {\n if (this.#removeRenditionCallback) {\n this.removeEventListener(\"removerendition\", this.#removeRenditionCallback);\n this.#removeRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeRenditionCallback = callback;\n this.addEventListener(\"removerendition\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n VideoRenditionList,\n addRendition,\n removeRendition,\n selectedChanged\n};\n","import { selectedChanged } from \"./video-rendition-list.js\";\nclass VideoRendition {\n src;\n id;\n width;\n height;\n bitrate;\n frameRate;\n codec;\n #selected = false;\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n selectedChanged(this);\n }\n}\nexport {\n VideoRendition\n};\n","import { selectedChanged } from \"./video-track-list.js\";\nimport { VideoRendition } from \"./video-rendition.js\";\nimport { addRendition, removeRendition } from \"./video-rendition-list.js\";\nconst VideoTrackKind = {\n alternative: \"alternative\",\n captions: \"captions\",\n main: \"main\",\n sign: \"sign\",\n subtitles: \"subtitles\",\n commentary: \"commentary\"\n};\nclass VideoTrack {\n id;\n kind;\n label = \"\";\n language = \"\";\n sourceBuffer;\n #selected = false;\n addRendition(src, width, height, codec, bitrate, frameRate) {\n const rendition = new VideoRendition();\n rendition.src = src;\n rendition.width = width;\n rendition.height = height;\n rendition.frameRate = frameRate;\n rendition.bitrate = bitrate;\n rendition.codec = codec;\n addRendition(this, rendition);\n return rendition;\n }\n removeRendition(rendition) {\n removeRendition(rendition);\n }\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n if (val !== true) return;\n selectedChanged(this);\n }\n}\nexport {\n VideoTrack,\n VideoTrackKind\n};\n","import { RenditionEvent } from \"./rendition-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addRendition(track, rendition) {\n const renditionList = getPrivate(track).media?.deref()?.audioRenditions;\n getPrivate(rendition).media = getPrivate(track).media;\n getPrivate(rendition).track = track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.add(rendition);\n const index = renditionSet.size - 1;\n if (!(index in AudioRenditionList.prototype)) {\n Object.defineProperty(AudioRenditionList.prototype, index, {\n get() {\n return getCurrentRenditions(this)[index];\n }\n });\n }\n queueMicrotask(() => {\n if (!renditionList || !track.enabled) return;\n renditionList.dispatchEvent(new RenditionEvent(\"addrendition\", { rendition }));\n });\n}\nfunction removeRendition(rendition) {\n const renditionList = getPrivate(rendition).media?.deref()?.audioRenditions;\n const track = getPrivate(rendition).track;\n const renditionSet = getPrivate(track).renditionSet;\n renditionSet.delete(rendition);\n queueMicrotask(() => {\n const track2 = getPrivate(rendition).track;\n if (!renditionList || !track2.enabled) return;\n renditionList.dispatchEvent(new RenditionEvent(\"removerendition\", { rendition }));\n });\n}\nfunction selectedChanged(rendition) {\n const renditionList = getPrivate(rendition).media?.deref()?.audioRenditions;\n if (!renditionList || getPrivate(renditionList).changeRequested) return;\n getPrivate(renditionList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(renditionList).changeRequested;\n const track = getPrivate(rendition).track;\n if (!track.enabled) return;\n renditionList.dispatchEvent(new Event(\"change\"));\n });\n}\nfunction getCurrentRenditions(renditionList) {\n const media = getPrivate(renditionList).media?.deref();\n if (!media) return [];\n return [...media.audioTracks].filter((track) => track.enabled).flatMap((track) => [...getPrivate(track).renditionSet]);\n}\nclass AudioRenditionList extends EventTarget {\n #addRenditionCallback;\n #removeRenditionCallback;\n #changeCallback;\n [Symbol.iterator]() {\n return getCurrentRenditions(this).values();\n }\n get length() {\n return getCurrentRenditions(this).length;\n }\n getRenditionById(id) {\n return getCurrentRenditions(this).find((rendition) => `${rendition.id}` === `${id}`) ?? null;\n }\n get selectedIndex() {\n return getCurrentRenditions(this).findIndex((rendition) => rendition.selected);\n }\n set selectedIndex(index) {\n for (const [i, rendition] of getCurrentRenditions(this).entries()) {\n rendition.selected = i === index;\n }\n }\n get onaddrendition() {\n return this.#addRenditionCallback;\n }\n set onaddrendition(callback) {\n if (this.#addRenditionCallback) {\n this.removeEventListener(\"addrendition\", this.#addRenditionCallback);\n this.#addRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addRenditionCallback = callback;\n this.addEventListener(\"addrendition\", callback);\n }\n }\n get onremoverendition() {\n return this.#removeRenditionCallback;\n }\n set onremoverendition(callback) {\n if (this.#removeRenditionCallback) {\n this.removeEventListener(\"removerendition\", this.#removeRenditionCallback);\n this.#removeRenditionCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeRenditionCallback = callback;\n this.addEventListener(\"removerendition\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n AudioRenditionList,\n addRendition,\n removeRendition,\n selectedChanged\n};\n","import { selectedChanged } from \"./audio-rendition-list.js\";\nclass AudioRendition {\n src;\n id;\n bitrate;\n codec;\n #selected = false;\n get selected() {\n return this.#selected;\n }\n set selected(val) {\n if (this.#selected === val) return;\n this.#selected = val;\n selectedChanged(this);\n }\n}\nexport {\n AudioRendition\n};\n","import { TrackEvent } from \"./change-event.js\";\nimport { getPrivate } from \"./utils.js\";\nfunction addAudioTrack(media, track) {\n const trackList = media.audioTracks;\n getPrivate(track).media = new WeakRef(media);\n if (!getPrivate(track).renditionSet) {\n getPrivate(track).renditionSet = /* @__PURE__ */ new Set();\n }\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.add(track);\n const index = trackSet.size - 1;\n if (!(index in AudioTrackList.prototype)) {\n Object.defineProperty(AudioTrackList.prototype, index, {\n get() {\n return [...getPrivate(this).trackSet][index];\n }\n });\n }\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"addtrack\", { track }));\n });\n}\nfunction removeAudioTrack(track) {\n const trackList = getPrivate(track).media?.deref()?.audioTracks;\n if (!trackList) return;\n const trackSet = getPrivate(trackList).trackSet;\n trackSet.delete(track);\n queueMicrotask(() => {\n trackList.dispatchEvent(new TrackEvent(\"removetrack\", { track }));\n });\n}\nfunction enabledChanged(track) {\n const trackList = getPrivate(track).media?.deref()?.audioTracks;\n if (!trackList || getPrivate(trackList).changeRequested) return;\n getPrivate(trackList).changeRequested = true;\n queueMicrotask(() => {\n delete getPrivate(trackList).changeRequested;\n trackList.dispatchEvent(new Event(\"change\"));\n });\n}\nclass AudioTrackList extends EventTarget {\n #addTrackCallback;\n #removeTrackCallback;\n #changeCallback;\n constructor() {\n super();\n getPrivate(this).trackSet = /* @__PURE__ */ new Set();\n }\n get #tracks() {\n return getPrivate(this).trackSet;\n }\n [Symbol.iterator]() {\n return this.#tracks.values();\n }\n get length() {\n return this.#tracks.size;\n }\n getTrackById(id) {\n return [...this.#tracks].find((track) => track.id === id) ?? null;\n }\n get onaddtrack() {\n return this.#addTrackCallback;\n }\n set onaddtrack(callback) {\n if (this.#addTrackCallback) {\n this.removeEventListener(\"addtrack\", this.#addTrackCallback);\n this.#addTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#addTrackCallback = callback;\n this.addEventListener(\"addtrack\", callback);\n }\n }\n get onremovetrack() {\n return this.#removeTrackCallback;\n }\n set onremovetrack(callback) {\n if (this.#removeTrackCallback) {\n this.removeEventListener(\"removetrack\", this.#removeTrackCallback);\n this.#removeTrackCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#removeTrackCallback = callback;\n this.addEventListener(\"removetrack\", callback);\n }\n }\n get onchange() {\n return this.#changeCallback;\n }\n set onchange(callback) {\n if (this.#changeCallback) {\n this.removeEventListener(\"change\", this.#changeCallback);\n this.#changeCallback = void 0;\n }\n if (typeof callback == \"function\") {\n this.#changeCallback = callback;\n this.addEventListener(\"change\", callback);\n }\n }\n}\nexport {\n AudioTrackList,\n addAudioTrack,\n enabledChanged,\n removeAudioTrack\n};\n","import { AudioRendition } from \"./audio-rendition.js\";\nimport { enabledChanged } from \"./audio-track-list.js\";\nimport { addRendition, removeRendition } from \"./audio-rendition-list.js\";\nconst AudioTrackKind = {\n alternative: \"alternative\",\n descriptions: \"descriptions\",\n main: \"main\",\n \"main-desc\": \"main-desc\",\n translation: \"translation\",\n commentary: \"commentary\"\n};\nclass AudioTrack {\n id;\n kind;\n label = \"\";\n language = \"\";\n sourceBuffer;\n #enabled = false;\n addRendition(src, codec, bitrate) {\n const rendition = new AudioRendition();\n rendition.src = src;\n rendition.codec = codec;\n rendition.bitrate = bitrate;\n addRendition(this, rendition);\n return rendition;\n }\n removeRendition(rendition) {\n removeRendition(rendition);\n }\n get enabled() {\n return this.#enabled;\n }\n set enabled(val) {\n if (this.#enabled === val) return;\n this.#enabled = val;\n enabledChanged(this);\n }\n}\nexport {\n AudioTrack,\n AudioTrackKind\n};\n","import { VideoTrack } from \"./video-track.js\";\nimport { VideoTrackList, addVideoTrack, removeVideoTrack } from \"./video-track-list.js\";\nimport { AudioTrack } from \"./audio-track.js\";\nimport { AudioTrackList, addAudioTrack, removeAudioTrack } from \"./audio-track-list.js\";\nimport { VideoRenditionList } from \"./video-rendition-list.js\";\nimport { AudioRenditionList } from \"./audio-rendition-list.js\";\nimport { getPrivate } from \"./utils.js\";\nconst nativeVideoTracksFn = getBaseMediaTracksFn(globalThis.HTMLMediaElement, \"video\");\nconst nativeAudioTracksFn = getBaseMediaTracksFn(globalThis.HTMLMediaElement, \"audio\");\nfunction MediaTracksMixin(MediaElementClass) {\n if (!MediaElementClass?.prototype) return MediaElementClass;\n const videoTracksFn = getBaseMediaTracksFn(MediaElementClass, \"video\");\n if (!videoTracksFn || `${videoTracksFn}`.includes(\"[native code]\")) {\n Object.defineProperty(MediaElementClass.prototype, \"videoTracks\", {\n get() {\n return getVideoTracks(this);\n }\n });\n }\n const audioTracksFn = getBaseMediaTracksFn(MediaElementClass, \"audio\");\n if (!audioTracksFn || `${audioTracksFn}`.includes(\"[native code]\")) {\n Object.defineProperty(MediaElementClass.prototype, \"audioTracks\", {\n get() {\n return getAudioTracks(this);\n }\n });\n }\n if (!(\"addVideoTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.addVideoTrack = function(kind, label = \"\", language = \"\") {\n const track = new VideoTrack();\n track.kind = kind;\n track.label = label;\n track.language = language;\n addVideoTrack(this, track);\n return track;\n };\n }\n if (!(\"removeVideoTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.removeVideoTrack = removeVideoTrack;\n }\n if (!(\"addAudioTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.addAudioTrack = function(kind, label = \"\", language = \"\") {\n const track = new AudioTrack();\n track.kind = kind;\n track.label = label;\n track.language = language;\n addAudioTrack(this, track);\n return track;\n };\n }\n if (!(\"removeAudioTrack\" in MediaElementClass.prototype)) {\n MediaElementClass.prototype.removeAudioTrack = removeAudioTrack;\n }\n if (!(\"videoRenditions\" in MediaElementClass.prototype)) {\n Object.defineProperty(MediaElementClass.prototype, \"videoRenditions\", {\n get() {\n return initVideoRenditions(this);\n }\n });\n }\n const initVideoRenditions = (media) => {\n let renditions = getPrivate(media).videoRenditions;\n if (!renditions) {\n renditions = new VideoRenditionList();\n getPrivate(renditions).media = new WeakRef(media);\n getPrivate(media).videoRenditions = renditions;\n }\n return renditions;\n };\n if (!(\"audioRenditions\" in MediaElementClass.prototype)) {\n Object.defineProperty(MediaElementClass.prototype, \"audioRenditions\", {\n get() {\n return initAudioRenditions(this);\n }\n });\n }\n const initAudioRenditions = (media) => {\n let renditions = getPrivate(media).audioRenditions;\n if (!renditions) {\n renditions = new AudioRenditionList();\n getPrivate(renditions).media = new WeakRef(media);\n getPrivate(media).audioRenditions = renditions;\n }\n return renditions;\n };\n return MediaElementClass;\n}\nfunction getBaseMediaTracksFn(MediaElementClass, type) {\n if (MediaElementClass?.prototype) {\n return Object.getOwnPropertyDescriptor(MediaElementClass.prototype, `${type}Tracks`)?.get;\n }\n}\nfunction getVideoTracks(media) {\n let tracks = getPrivate(media).videoTracks;\n if (!tracks) {\n tracks = new VideoTrackList();\n getPrivate(media).videoTracks = tracks;\n if (nativeVideoTracksFn) {\n const nativeTracks = nativeVideoTracksFn.call(media.nativeEl ?? media);\n for (const nativeTrack of nativeTracks) {\n addVideoTrack(media, nativeTrack);\n }\n const onChange = () => {\n tracks.dispatchEvent(new Event(\"change\"));\n };\n const onAddTrack = (event) => {\n if ([...tracks].some((t) => t instanceof VideoTrack)) {\n for (const nativeTrack of nativeTracks) {\n removeVideoTrack(nativeTrack);\n }\n return;\n }\n addVideoTrack(media, event.track);\n };\n const onRemoveTrack = (event) => {\n removeVideoTrack(event.track);\n };\n nativeTracks.addEventListener(\"change\", onChange);\n nativeTracks.addEventListener(\"addtrack\", onAddTrack);\n nativeTracks.addEventListener(\"removetrack\", onRemoveTrack);\n }\n }\n return tracks;\n}\nfunction getAudioTracks(media) {\n let tracks = getPrivate(media).audioTracks;\n if (!tracks) {\n tracks = new AudioTrackList();\n getPrivate(media).audioTracks = tracks;\n if (nativeAudioTracksFn) {\n const nativeTracks = nativeAudioTracksFn.call(media.nativeEl ?? media);\n for (const nativeTrack of nativeTracks) {\n addAudioTrack(media, nativeTrack);\n }\n const onChange = () => {\n tracks.dispatchEvent(new Event(\"change\"));\n };\n const onAddTrack = (event) => {\n if ([...tracks].some((t) => t instanceof AudioTrack)) {\n for (const nativeTrack of nativeTracks) {\n removeAudioTrack(nativeTrack);\n }\n return;\n }\n addAudioTrack(media, event.track);\n };\n const onRemoveTrack = (event) => {\n removeAudioTrack(event.track);\n };\n nativeTracks.addEventListener(\"change\", onChange);\n nativeTracks.addEventListener(\"addtrack\", onAddTrack);\n nativeTracks.addEventListener(\"removetrack\", onRemoveTrack);\n }\n }\n return tracks;\n}\nexport {\n MediaTracksMixin\n};\n"],"names":["Events","Attributes","getAudioTemplateHTML","attrs","serializeAttributes","getVideoTemplateHTML","CustomMediaMixin","superclass","tag","is","_a","_b","_c","_isDefined","_CustomMedia_static","define_fn","_isInit","_nativeEl","_childMap","_childObserver","_slotChangeHandler","_CustomMedia_instances","init_fn","setupListeners_fn","syncMediaChildren_fn","syncMediaChildAttribute_fn","enableDefaultTrack_fn","upgradeProperty_fn","forwardAttribute_fn","nativeElTest","nativeElProps","getNativeElProps","__privateAdd","__publicField","__privateMethod","__privateGet","val","__privateSet","namedNodeMapToObject","prop","event","attrName","oldValue","newValue","type","clone","propsToAttrs","args","nativeFn","config","attr","removeNativeChildren","defaultSlot","el","mutations","mutation","target","attributeName","trackEl","value","_oldValue","proto","props","html","key","namedNodeMap","obj","CustomVideoElement","TrackEvent","init","privateProps","getPrivate","instance","setPrivate","saved","addVideoTrack","media","track","trackList","trackSet","index","VideoTrackList","removeVideoTrack","selectedChanged","selected","hasUnselected","_addTrackCallback","_removeTrackCallback","_changeCallback","_VideoTrackList_instances","tracks_get","id","callback","RenditionEvent","addRendition","rendition","renditionList","renditionSet","VideoRenditionList","getCurrentRenditions","removeRendition","track2","_addRenditionCallback","_removeRenditionCallback","i","_selected","VideoRendition","VideoTrack","src","width","height","codec","bitrate","frameRate","AudioRenditionList","AudioRendition","addAudioTrack","AudioTrackList","removeAudioTrack","enabledChanged","_AudioTrackList_instances","_enabled","AudioTrack","nativeVideoTracksFn","getBaseMediaTracksFn","nativeAudioTracksFn","MediaTracksMixin","MediaElementClass","videoTracksFn","getVideoTracks","audioTracksFn","getAudioTracks","kind","label","language","initVideoRenditions","renditions","initAudioRenditions","tracks","nativeTracks","nativeTrack","onChange","onAddTrack","t","onRemoveTrack"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}
@@ -0,0 +1,419 @@
1
+ var rt = Object.defineProperty;
2
+ var V = (e) => {
3
+ throw TypeError(e);
4
+ };
5
+ var at = (e, i, t) => i in e ? rt(e, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[i] = t;
6
+ var C = (e, i, t) => at(e, typeof i != "symbol" ? i + "" : i, t), q = (e, i, t) => i.has(e) || V("Cannot " + t);
7
+ var n = (e, i, t) => (q(e, i, "read from private field"), t ? t.call(e) : i.get(e)), h = (e, i, t) => i.has(e) ? V("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(e) : i.set(e, t), l = (e, i, t, s) => (q(e, i, "write to private field"), s ? s.call(e, t) : i.set(e, t), t), T = (e, i, t) => (q(e, i, "access private method"), t);
8
+ import lt from "react";
9
+ const Y = "https://player.twitch.tv", ut = /(?:www\.|go\.)?twitch\.tv\/(?:videos?\/|\?video=)(\d+)($|\?)/, ct = /(?:www\.|go\.)?twitch\.tv\/([a-zA-Z0-9_]+)($|\?)/, Z = {
10
+ IDLE: "Idle",
11
+ ENDED: "Ended"
12
+ }, O = {
13
+ PAUSE: 2,
14
+ PLAY: 3,
15
+ SEEK: 4,
16
+ SET_MUTED: 10,
17
+ SET_VOLUME: 11
18
+ };
19
+ function G(e, i = {}) {
20
+ const t = {
21
+ src: st(e, i),
22
+ frameborder: "0",
23
+ width: "100%",
24
+ height: "100%",
25
+ allow: "accelerometer; fullscreen; autoplay; encrypted-media; picture-in-picture;",
26
+ sandbox: "allow-modals allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox",
27
+ scrolling: "no"
28
+ };
29
+ return i.config && (t["data-config"] = JSON.stringify(i.config)), /*html*/
30
+ `
31
+ <style>
32
+ :host {
33
+ display: inline-block;
34
+ min-width: 300px;
35
+ min-height: 150px;
36
+ position: relative;
37
+ }
38
+ iframe {
39
+ position: absolute;
40
+ top: 0;
41
+ left: 0;
42
+ width: 100%;
43
+ height: 100%;
44
+ }
45
+ :host(:not([controls])) {
46
+ pointer-events: none;
47
+ }
48
+ </style>
49
+ <iframe${dt(t)}></iframe>
50
+ `;
51
+ }
52
+ function st(e, i) {
53
+ var t;
54
+ if (!e.src) return;
55
+ const s = e.src.match(ut), u = e.src.match(ct), d = {
56
+ parent: (t = globalThis.location) == null ? void 0 : t.hostname,
57
+ // ?controls=true is enabled by default in the iframe
58
+ controls: e.controls === "" ? null : !1,
59
+ autoplay: e.autoplay === "" ? null : !1,
60
+ muted: e.muted,
61
+ preload: e.preload,
62
+ ...i.config
63
+ };
64
+ if (s) {
65
+ const v = s[1];
66
+ return `${Y}/?video=v${v}&${X(d)}`;
67
+ } else if (u) {
68
+ const v = u[1];
69
+ return `${Y}/?channel=${v}&${X(d)}`;
70
+ }
71
+ return "";
72
+ }
73
+ var L, P, w, o, $, N, k, H, A, S, R, I, p, M, nt;
74
+ class D extends (globalThis.HTMLElement ?? class {
75
+ }) {
76
+ constructor() {
77
+ super();
78
+ h(this, p);
79
+ C(this, "loadComplete", new tt());
80
+ h(this, L);
81
+ h(this, P);
82
+ h(this, w);
83
+ h(this, o, {});
84
+ h(this, $, 0);
85
+ h(this, N, !1);
86
+ h(this, k, 1);
87
+ h(this, H, !this.autoplay);
88
+ h(this, A, !1);
89
+ h(this, S, 0);
90
+ h(this, R, null);
91
+ h(this, I, async (t) => {
92
+ var s, u, d, v;
93
+ if (!n(this, w).contentWindow) return;
94
+ const { data: f, source: W } = t;
95
+ if (W === n(this, w).contentWindow) {
96
+ if (f.namespace === "twitch-embed")
97
+ await new Promise((_) => setTimeout(_, 10)), f.eventName === "ready" ? (this.dispatchEvent(new Event("loadcomplete")), this.loadComplete.resolve(), l(this, S, 1), this.dispatchEvent(new Event("loadedmetadata"))) : f.eventName === "seek" ? (l(this, A, !0), this.dispatchEvent(new Event("seeking"))) : f.eventName === "playing" ? (n(this, A) && (l(this, A, !1), this.dispatchEvent(new Event("seeked"))), l(this, S, 3), this.dispatchEvent(new Event("playing"))) : this.dispatchEvent(new Event(f.eventName));
98
+ else if (f.namespace === "twitch-embed-player-proxy" && f.eventName === "UPDATE_STATE") {
99
+ const _ = n(this, o).duration, E = n(this, o).currentTime, x = n(this, o).volume, U = n(this, o).muted, m = (u = (s = n(this, o).stats) == null ? void 0 : s.videoStats) == null ? void 0 : u.bufferSize;
100
+ l(this, o, { ...n(this, o), ...f.params }), _ !== n(this, o).duration && this.dispatchEvent(new Event("durationchange")), E !== n(this, o).currentTime && this.dispatchEvent(new Event("timeupdate")), (x !== n(this, o).volume || U !== n(this, o).muted) && (n(this, o).volume !== void 0 && l(this, k, n(this, o).volume), n(this, o).muted !== void 0 && l(this, N, n(this, o).muted), this.dispatchEvent(new Event("volumechange"))), m !== ((v = (d = n(this, o).stats) == null ? void 0 : d.videoStats) == null ? void 0 : v.bufferSize) && this.dispatchEvent(new Event("progress"));
101
+ }
102
+ }
103
+ });
104
+ T(this, p, nt).call(this, "config");
105
+ }
106
+ get config() {
107
+ return n(this, R);
108
+ }
109
+ set config(t) {
110
+ l(this, R, t);
111
+ }
112
+ async load() {
113
+ if (n(this, L)) return;
114
+ this.shadowRoot || this.attachShadow({ mode: "open" });
115
+ const t = !n(this, P);
116
+ if (n(this, P) && (this.loadComplete = new tt()), l(this, P, !0), await l(this, L, Promise.resolve()), l(this, L, null), l(this, S, 0), this.dispatchEvent(new Event("emptied")), !this.src) {
117
+ this.shadowRoot.innerHTML = "", globalThis.removeEventListener("message", n(this, I));
118
+ return;
119
+ }
120
+ this.dispatchEvent(new Event("loadstart"));
121
+ let s = this.shadowRoot.querySelector("iframe");
122
+ const u = ht(this.attributes);
123
+ t && s && l(this, R, JSON.parse(s.getAttribute("data-config") || "{}")), (!(s != null && s.src) || s.src !== st(u, this)) && (this.shadowRoot.innerHTML = G(u, this), s = this.shadowRoot.querySelector("iframe")), l(this, w, s), globalThis.addEventListener("message", n(this, I));
124
+ }
125
+ attributeChangedCallback(t, s, u) {
126
+ if (s !== u)
127
+ switch (t) {
128
+ case "src":
129
+ case "controls": {
130
+ this.load();
131
+ break;
132
+ }
133
+ }
134
+ }
135
+ getVideoPlaybackQuality() {
136
+ return n(this, o).stats.videoStats;
137
+ }
138
+ get src() {
139
+ return this.getAttribute("src");
140
+ }
141
+ set src(t) {
142
+ this.setAttribute("src", t);
143
+ }
144
+ get readyState() {
145
+ return n(this, S);
146
+ }
147
+ get seeking() {
148
+ return n(this, A);
149
+ }
150
+ get buffered() {
151
+ var t, s;
152
+ return mt(0, ((s = (t = n(this, o).stats) == null ? void 0 : t.videoStats) == null ? void 0 : s.bufferSize) ?? 0);
153
+ }
154
+ get paused() {
155
+ return n(this, o).playback ? n(this, o).playback === Z.IDLE : n(this, H);
156
+ }
157
+ get ended() {
158
+ return n(this, o).playback ? n(this, o).playback === Z.ENDED : !1;
159
+ }
160
+ get duration() {
161
+ return n(this, o).duration ?? NaN;
162
+ }
163
+ get autoplay() {
164
+ return this.hasAttribute("autoplay");
165
+ }
166
+ set autoplay(t) {
167
+ this.autoplay != t && this.toggleAttribute("autoplay", !!t);
168
+ }
169
+ get controls() {
170
+ return this.hasAttribute("controls");
171
+ }
172
+ set controls(t) {
173
+ this.controls != t && this.toggleAttribute("controls", !!t);
174
+ }
175
+ get currentTime() {
176
+ return n(this, o).currentTime ? n(this, o).currentTime : n(this, $);
177
+ }
178
+ set currentTime(t) {
179
+ l(this, $, t), this.loadComplete.then(() => {
180
+ T(this, p, M).call(this, O.SEEK, t);
181
+ });
182
+ }
183
+ get defaultMuted() {
184
+ return this.hasAttribute("muted");
185
+ }
186
+ set defaultMuted(t) {
187
+ this.toggleAttribute("muted", !!t);
188
+ }
189
+ get loop() {
190
+ return this.hasAttribute("loop");
191
+ }
192
+ set loop(t) {
193
+ this.toggleAttribute("loop", !!t);
194
+ }
195
+ get muted() {
196
+ return n(this, N);
197
+ }
198
+ set muted(t) {
199
+ l(this, N, t), this.loadComplete.then(() => {
200
+ T(this, p, M).call(this, O.SET_MUTED, t);
201
+ });
202
+ }
203
+ get volume() {
204
+ return n(this, k);
205
+ }
206
+ set volume(t) {
207
+ l(this, k, t), this.loadComplete.then(() => {
208
+ T(this, p, M).call(this, O.SET_VOLUME, t);
209
+ });
210
+ }
211
+ get playsInline() {
212
+ return this.hasAttribute("playsinline");
213
+ }
214
+ set playsInline(t) {
215
+ this.toggleAttribute("playsinline", !!t);
216
+ }
217
+ play() {
218
+ l(this, H, !1), T(this, p, M).call(this, O.PLAY);
219
+ }
220
+ pause() {
221
+ l(this, H, !0), T(this, p, M).call(this, O.PAUSE);
222
+ }
223
+ }
224
+ L = new WeakMap(), P = new WeakMap(), w = new WeakMap(), o = new WeakMap(), $ = new WeakMap(), N = new WeakMap(), k = new WeakMap(), H = new WeakMap(), A = new WeakMap(), S = new WeakMap(), R = new WeakMap(), I = new WeakMap(), p = new WeakSet(), M = function(t, s) {
225
+ if (!n(this, w).contentWindow) return;
226
+ const u = {
227
+ eventName: t,
228
+ params: s,
229
+ namespace: "twitch-embed-player-proxy"
230
+ };
231
+ n(this, w).contentWindow.postMessage(u, Y);
232
+ }, // This is a pattern to update property values that are set before
233
+ // the custom element is upgraded.
234
+ // https://web.dev/custom-elements-best-practices/#make-properties-lazy
235
+ nt = function(t) {
236
+ if (Object.prototype.hasOwnProperty.call(this, t)) {
237
+ const s = this[t];
238
+ delete this[t], this[t] = s;
239
+ }
240
+ }, C(D, "getTemplateHTML", G), C(D, "shadowRootOptions", { mode: "open" }), C(D, "observedAttributes", ["autoplay", "controls", "loop", "muted", "playsinline", "preload", "src"]);
241
+ function ht(e) {
242
+ let i = {};
243
+ for (let t of e)
244
+ i[t.name] = t.value;
245
+ return i;
246
+ }
247
+ function dt(e) {
248
+ let i = "";
249
+ for (const t in e) {
250
+ const s = e[t];
251
+ s === "" ? i += ` ${J(t)}` : i += ` ${J(t)}="${J(`${s}`)}"`;
252
+ }
253
+ return i;
254
+ }
255
+ function J(e) {
256
+ return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/`/g, "&#x60;");
257
+ }
258
+ function X(e) {
259
+ return String(new URLSearchParams(ft(e)));
260
+ }
261
+ function ft(e) {
262
+ let i = {};
263
+ for (let t in e) {
264
+ let s = e[t];
265
+ s === !0 || s === "" ? i[t] = !0 : s === !1 ? i[t] = !1 : s != null && (i[t] = s);
266
+ }
267
+ return i;
268
+ }
269
+ class tt extends Promise {
270
+ constructor(i = () => {
271
+ }) {
272
+ let t, s;
273
+ super((u, d) => {
274
+ i(u, d), t = u, s = d;
275
+ }), this.resolve = t, this.reject = s;
276
+ }
277
+ }
278
+ function mt(e, i) {
279
+ return Array.isArray(e) ? K(e) : i == null || i === 0 ? K([[0, 0]]) : K([[e, i]]);
280
+ }
281
+ function K(e) {
282
+ return Object.defineProperties(e, {
283
+ start: {
284
+ value: (i) => e[i][0]
285
+ },
286
+ end: {
287
+ value: (i) => e[i][1]
288
+ }
289
+ }), e;
290
+ }
291
+ globalThis.customElements && !globalThis.customElements.get("twitch-video") && globalThis.customElements.define("twitch-video", D);
292
+ var pt = D, vt = /* @__PURE__ */ new Set([
293
+ "style",
294
+ "children",
295
+ "ref",
296
+ "key",
297
+ "suppressContentEditableWarning",
298
+ "suppressHydrationWarning",
299
+ "dangerouslySetInnerHTML"
300
+ ]), gt = {
301
+ className: "class",
302
+ htmlFor: "for"
303
+ };
304
+ function ot(e) {
305
+ return e.toLowerCase();
306
+ }
307
+ function et(e) {
308
+ if (typeof e == "boolean") return e ? "" : void 0;
309
+ if (typeof e != "function" && !(typeof e == "object" && e !== null))
310
+ return e;
311
+ }
312
+ function yt({
313
+ react: e,
314
+ tagName: i,
315
+ elementClass: t,
316
+ events: s,
317
+ displayName: u,
318
+ defaultProps: d,
319
+ toAttributeName: v = ot,
320
+ toAttributeValue: f = et
321
+ }) {
322
+ const W = Number.parseInt(e.version) >= 19, B = e.forwardRef((_, E) => {
323
+ var x, U;
324
+ const m = e.useRef(null), z = e.useRef(/* @__PURE__ */ new Map()), F = {}, Q = {}, g = {}, j = {};
325
+ for (const [r, a] of Object.entries(_)) {
326
+ if (vt.has(r)) {
327
+ g[r] = a;
328
+ continue;
329
+ }
330
+ const c = v(gt[r] ?? r);
331
+ if (t.prototype && r in t.prototype && !(r in (((x = globalThis.HTMLElement) == null ? void 0 : x.prototype) ?? {})) && !((U = t.observedAttributes) != null && U.some((b) => b === c))) {
332
+ j[r] = a;
333
+ continue;
334
+ }
335
+ if (r.startsWith("on")) {
336
+ F[r] = a;
337
+ continue;
338
+ }
339
+ const y = f(a);
340
+ if (c && y != null && (Q[c] = String(y), W || (g[c] = y)), c && W) {
341
+ const b = et(a);
342
+ y !== b ? g[c] = y : g[c] = a;
343
+ }
344
+ }
345
+ if (typeof window < "u") {
346
+ for (const r in F) {
347
+ const a = F[r], c = r.endsWith("Capture"), y = ((s == null ? void 0 : s[r]) ?? r.slice(2).toLowerCase()).slice(
348
+ 0,
349
+ c ? -7 : void 0
350
+ );
351
+ e.useLayoutEffect(() => {
352
+ const b = m == null ? void 0 : m.current;
353
+ if (!(!b || typeof a != "function"))
354
+ return b.addEventListener(y, a, c), () => {
355
+ b.removeEventListener(y, a, c);
356
+ };
357
+ }, [m == null ? void 0 : m.current, a]);
358
+ }
359
+ e.useLayoutEffect(() => {
360
+ if (m.current === null) return;
361
+ const r = /* @__PURE__ */ new Map();
362
+ for (const a in j)
363
+ it(m.current, a, j[a]), z.current.delete(a), r.set(a, j[a]);
364
+ for (const [a, c] of z.current)
365
+ it(m.current, a, void 0);
366
+ z.current = r;
367
+ });
368
+ }
369
+ if (typeof window > "u" && (t != null && t.getTemplateHTML) && (t != null && t.shadowRootOptions)) {
370
+ const { mode: r, delegatesFocus: a } = t.shadowRootOptions, c = e.createElement("template", {
371
+ shadowrootmode: r,
372
+ shadowrootdelegatesfocus: a,
373
+ dangerouslySetInnerHTML: {
374
+ __html: t.getTemplateHTML(Q, _)
375
+ },
376
+ key: "ce-la-react-ssr-template-shadow-root"
377
+ });
378
+ g.children = [c, g.children];
379
+ }
380
+ return e.createElement(i, {
381
+ ...d,
382
+ ...g,
383
+ ref: e.useCallback(
384
+ (r) => {
385
+ m.current = r, typeof E == "function" ? E(r) : E !== null && (E.current = r);
386
+ },
387
+ [E]
388
+ )
389
+ }, g.children);
390
+ });
391
+ return B.displayName = u ?? t.name, B;
392
+ }
393
+ function it(e, i, t) {
394
+ var s;
395
+ e[i] = t, t == null && i in (((s = globalThis.HTMLElement) == null ? void 0 : s.prototype) ?? {}) && e.removeAttribute(i);
396
+ }
397
+ var bt = yt({
398
+ react: lt,
399
+ tagName: "twitch-video",
400
+ elementClass: pt,
401
+ toAttributeName(e) {
402
+ return e === "muted" ? "" : e === "defaultMuted" ? "muted" : ot(e);
403
+ }
404
+ });
405
+ /*! Bundled license information:
406
+
407
+ ce-la-react/dist/ce-la-react.js:
408
+ (**
409
+ * @license
410
+ * Copyright 2018 Google LLC
411
+ * SPDX-License-Identifier: BSD-3-Clause
412
+ *
413
+ * Modified version of `@lit/react` for vanilla custom elements with support for SSR.
414
+ *)
415
+ */
416
+ export {
417
+ bt as default
418
+ };
419
+ //# sourceMappingURL=react-BxlQMOfz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-BxlQMOfz.js","sources":["../../../node_modules/twitch-video-element/dist/twitch-video-element.js","../../../node_modules/twitch-video-element/dist/react.js"],"sourcesContent":["const EMBED_BASE = \"https://player.twitch.tv\";\nconst MATCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/(?:videos?\\/|\\?video=)(\\d+)($|\\?)/;\nconst MATCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)($|\\?)/;\nconst PlaybackState = {\n IDLE: \"Idle\",\n READY: \"Ready\",\n BUFFERING: \"Buffering\",\n PLAYING: \"Playing\",\n ENDED: \"Ended\"\n};\nconst PlayerCommands = {\n DISABLE_CAPTIONS: 0,\n ENABLE_CAPTIONS: 1,\n PAUSE: 2,\n PLAY: 3,\n SEEK: 4,\n SET_CHANNEL: 5,\n SET_CHANNEL_ID: 6,\n SET_COLLECTION: 7,\n SET_QUALITY: 8,\n SET_VIDEO: 9,\n SET_MUTED: 10,\n SET_VOLUME: 11\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; fullscreen; autoplay; encrypted-media; picture-in-picture;\",\n sandbox: \"allow-modals allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox\",\n scrolling: \"no\"\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 }\n :host(:not([controls])) {\n pointer-events: none;\n }\n </style>\n <iframe${serializeAttributes(iframeAttrs)}></iframe>\n `\n );\n}\nfunction serializeIframeUrl(attrs, props) {\n var _a;\n if (!attrs.src) return;\n const videoMatch = attrs.src.match(MATCH_VIDEO);\n const channelMatch = attrs.src.match(MATCH_CHANNEL);\n const params = {\n parent: (_a = globalThis.location) == null ? void 0 : _a.hostname,\n // ?controls=true is enabled by default in the iframe\n controls: attrs.controls === \"\" ? null : false,\n autoplay: attrs.autoplay === \"\" ? null : false,\n muted: attrs.muted,\n preload: attrs.preload,\n ...props.config\n };\n if (videoMatch) {\n const videoId = videoMatch[1];\n return `${EMBED_BASE}/?video=v${videoId}&${serialize(params)}`;\n } else if (channelMatch) {\n const channel = channelMatch[1];\n return `${EMBED_BASE}/?channel=${channel}&${serialize(params)}`;\n }\n return \"\";\n}\nclass TwitchVideoElement extends (globalThis.HTMLElement ?? class {\n}) {\n static getTemplateHTML = getTemplateHTML;\n static shadowRootOptions = { mode: \"open\" };\n static observedAttributes = [\"autoplay\", \"controls\", \"loop\", \"muted\", \"playsinline\", \"preload\", \"src\"];\n loadComplete = new PublicPromise();\n #loadRequested;\n #hasLoaded;\n #iframe;\n #playerState = {};\n #currentTime = 0;\n #muted = false;\n #volume = 1;\n #paused = !this.autoplay;\n #seeking = false;\n #readyState = 0;\n #config = null;\n constructor() {\n super();\n this.#upgradeProperty(\"config\");\n }\n get config() {\n return this.#config;\n }\n set config(value) {\n this.#config = value;\n }\n async load() {\n if (this.#loadRequested) return;\n if (!this.shadowRoot) {\n this.attachShadow({ mode: \"open\" });\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.#readyState = 0;\n this.dispatchEvent(new Event(\"emptied\"));\n if (!this.src) {\n this.shadowRoot.innerHTML = \"\";\n globalThis.removeEventListener(\"message\", this.#onMessage);\n return;\n }\n this.dispatchEvent(new Event(\"loadstart\"));\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 attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue) return;\n switch (attrName) {\n case \"src\":\n case \"controls\": {\n this.load();\n break;\n }\n }\n }\n getVideoPlaybackQuality() {\n return this.#playerState.stats.videoStats;\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n this.setAttribute(\"src\", value);\n }\n get readyState() {\n return this.#readyState;\n }\n get seeking() {\n return this.#seeking;\n }\n get buffered() {\n var _a, _b;\n return createTimeRanges(0, ((_b = (_a = this.#playerState.stats) == null ? void 0 : _a.videoStats) == null ? void 0 : _b.bufferSize) ?? 0);\n }\n get paused() {\n if (!this.#playerState.playback) return this.#paused;\n return this.#playerState.playback === PlaybackState.IDLE;\n }\n get ended() {\n if (!this.#playerState.playback) return false;\n return this.#playerState.playback === PlaybackState.ENDED;\n }\n get duration() {\n return this.#playerState.duration ?? NaN;\n }\n get autoplay() {\n return this.hasAttribute(\"autoplay\");\n }\n set autoplay(val) {\n if (this.autoplay == val) return;\n this.toggleAttribute(\"autoplay\", Boolean(val));\n }\n get controls() {\n return this.hasAttribute(\"controls\");\n }\n set controls(val) {\n if (this.controls == val) return;\n this.toggleAttribute(\"controls\", Boolean(val));\n }\n get currentTime() {\n if (!this.#playerState.currentTime) return this.#currentTime;\n return this.#playerState.currentTime;\n }\n set currentTime(val) {\n this.#currentTime = val;\n this.loadComplete.then(() => {\n this.#sendCommand(PlayerCommands.SEEK, val);\n });\n }\n get defaultMuted() {\n return this.hasAttribute(\"muted\");\n }\n set defaultMuted(val) {\n this.toggleAttribute(\"muted\", Boolean(val));\n }\n get loop() {\n return this.hasAttribute(\"loop\");\n }\n set loop(val) {\n this.toggleAttribute(\"loop\", Boolean(val));\n }\n get muted() {\n return this.#muted;\n }\n set muted(val) {\n this.#muted = val;\n this.loadComplete.then(() => {\n this.#sendCommand(PlayerCommands.SET_MUTED, val);\n });\n }\n get volume() {\n return this.#volume;\n }\n set volume(val) {\n this.#volume = val;\n this.loadComplete.then(() => {\n this.#sendCommand(PlayerCommands.SET_VOLUME, val);\n });\n }\n get playsInline() {\n return this.hasAttribute(\"playsinline\");\n }\n set playsInline(val) {\n this.toggleAttribute(\"playsinline\", Boolean(val));\n }\n play() {\n this.#paused = false;\n this.#sendCommand(PlayerCommands.PLAY);\n }\n pause() {\n this.#paused = true;\n this.#sendCommand(PlayerCommands.PAUSE);\n }\n #onMessage = async (event) => {\n var _a, _b, _c, _d;\n if (!this.#iframe.contentWindow) return;\n const { data, source } = event;\n const isFromEmbedWindow = source === this.#iframe.contentWindow;\n if (!isFromEmbedWindow) return;\n if (data.namespace === \"twitch-embed\") {\n await new Promise((resolve) => setTimeout(resolve, 10));\n if (data.eventName === \"ready\") {\n this.dispatchEvent(new Event(\"loadcomplete\"));\n this.loadComplete.resolve();\n this.#readyState = 1;\n this.dispatchEvent(new Event(\"loadedmetadata\"));\n } else if (data.eventName === \"seek\") {\n this.#seeking = true;\n this.dispatchEvent(new Event(\"seeking\"));\n } else if (data.eventName === \"playing\") {\n if (this.#seeking) {\n this.#seeking = false;\n this.dispatchEvent(new Event(\"seeked\"));\n }\n this.#readyState = 3;\n this.dispatchEvent(new Event(\"playing\"));\n } else {\n this.dispatchEvent(new Event(data.eventName));\n }\n } else if (data.namespace === \"twitch-embed-player-proxy\" && data.eventName === \"UPDATE_STATE\") {\n const oldDuration = this.#playerState.duration;\n const oldCurrentTime = this.#playerState.currentTime;\n const oldVolume = this.#playerState.volume;\n const oldMuted = this.#playerState.muted;\n const oldBuffered = (_b = (_a = this.#playerState.stats) == null ? void 0 : _a.videoStats) == null ? void 0 : _b.bufferSize;\n this.#playerState = { ...this.#playerState, ...data.params };\n if (oldDuration !== this.#playerState.duration) {\n this.dispatchEvent(new Event(\"durationchange\"));\n }\n if (oldCurrentTime !== this.#playerState.currentTime) {\n this.dispatchEvent(new Event(\"timeupdate\"));\n }\n if (oldVolume !== this.#playerState.volume || oldMuted !== this.#playerState.muted) {\n if (this.#playerState.volume !== void 0) {\n this.#volume = this.#playerState.volume;\n }\n if (this.#playerState.muted !== void 0) {\n this.#muted = this.#playerState.muted;\n }\n this.dispatchEvent(new Event(\"volumechange\"));\n }\n if (oldBuffered !== ((_d = (_c = this.#playerState.stats) == null ? void 0 : _c.videoStats) == null ? void 0 : _d.bufferSize)) {\n this.dispatchEvent(new Event(\"progress\"));\n }\n }\n };\n #sendCommand(command, params) {\n if (!this.#iframe.contentWindow) return;\n const message = {\n eventName: command,\n params,\n namespace: \"twitch-embed-player-proxy\"\n };\n this.#iframe.contentWindow.postMessage(message, EMBED_BASE);\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 namedNodeMapToObject(namedNodeMap) {\n let obj = {};\n for (let attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\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}\nfunction serialize(props) {\n return String(new URLSearchParams(filterParams(props)));\n}\nfunction filterParams(props) {\n let p = {};\n for (let key in props) {\n let val = props[key];\n if (val === true || val === \"\") p[key] = true;\n else if (val === false) p[key] = false;\n else if (val != null) p[key] = val;\n }\n return p;\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 createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start == null || end == null || start === 0 && end === 0) {\n return createTimeRangesObj([[0, 0]]);\n }\n return createTimeRangesObj([[start, end]]);\n}\nfunction createTimeRangesObj(ranges) {\n Object.defineProperties(ranges, {\n start: {\n value: (i) => ranges[i][0]\n },\n end: {\n value: (i) => ranges[i][1]\n }\n });\n return ranges;\n}\nif (globalThis.customElements && !globalThis.customElements.get(\"twitch-video\")) {\n globalThis.customElements.define(\"twitch-video\", TwitchVideoElement);\n}\nvar twitch_video_element_default = TwitchVideoElement;\nexport {\n twitch_video_element_default as default\n};\n","\"use client\";\n\n// dist/react.ts\nimport React from \"react\";\nimport CustomMediaElement from \"./twitch-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: \"twitch-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"],"names":["EMBED_BASE","MATCH_VIDEO","MATCH_CHANNEL","PlaybackState","PlayerCommands","getTemplateHTML","attrs","props","iframeAttrs","serializeIframeUrl","serializeAttributes","_a","videoMatch","channelMatch","params","videoId","serialize","channel","TwitchVideoElement","__privateAdd","_TwitchVideoElement_instances","__publicField","PublicPromise","_loadRequested","_hasLoaded","_iframe","_playerState","_currentTime","_muted","_volume","_paused","_seeking","_readyState","_config","_onMessage","event","_b","_c","_d","__privateGet","data","source","resolve","__privateSet","oldDuration","oldCurrentTime","oldVolume","oldMuted","oldBuffered","__privateMethod","upgradeProperty_fn","value","isFirstLoad","iframe","namedNodeMapToObject","attrName","oldValue","newValue","createTimeRanges","val","sendCommand_fn","command","message","prop","namedNodeMap","obj","attr","html","key","escapeHtml","str","filterParams","p","executor","res","rej","reject","start","end","createTimeRangesObj","ranges","twitch_video_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]}