@linktr.ee/messaging-react 1.26.1 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Creator-B6M8dB0U.js +87 -0
- package/dist/Creator-B6M8dB0U.js.map +1 -0
- package/dist/MediaPlayer-DsjlYGGH.js +539 -0
- package/dist/MediaPlayer-DsjlYGGH.js.map +1 -0
- package/dist/Preview-DqAv16NS.js +87 -0
- package/dist/Preview-DqAv16NS.js.map +1 -0
- package/dist/Visitor-CpmFZRGO.js +175 -0
- package/dist/Visitor-CpmFZRGO.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 +73 -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 +249 -0
- package/src/components/LockedAttachment/components/Creator.tsx +171 -0
- package/src/components/LockedAttachment/components/MediaPlayer.tsx +299 -0
- package/src/components/LockedAttachment/components/Visitor.tsx +293 -0
- package/src/components/LockedAttachment/index.tsx +39 -0
- package/src/components/LockedAttachment/types.ts +18 -0
- package/src/components/LockedAttachment/utils/icons.ts +52 -0
- package/src/components/LockedAttachment/utils/mimeType.test.ts +97 -0
- package/src/components/LockedAttachment/utils/mimeType.ts +35 -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 +21 -1
- 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, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/`/g, "`");
|
|
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, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/`/g, \"`\");\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]}
|