@mottosports/motto-video-player 1.0.1-rc.14 → 1.0.1-rc.16
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/README.md +11 -0
- package/dist/index.js +138 -65
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +117 -44
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -29,7 +29,7 @@ function styleInject(css, { insertAt } = {}) {
|
|
|
29
29
|
styleInject('/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root,\n :host {\n --font-sans:\n ui-sans-serif,\n system-ui,\n sans-serif,\n "Apple Color Emoji",\n "Segoe UI Emoji",\n "Segoe UI Symbol",\n "Noto Color Emoji";\n --font-mono:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-wide: 0.025em;\n --tracking-widest: 0.1em;\n --radius-md: 0.375rem;\n --radius-2xl: 1rem;\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html,\n :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b,\n strong {\n font-weight: bolder;\n }\n code,\n kbd,\n samp,\n pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol,\n ul,\n menu {\n list-style: none;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n vertical-align: middle;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n button,\n input,\n select,\n optgroup,\n textarea,\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit,\n ::-webkit-datetime-edit-year-field,\n ::-webkit-datetime-edit-month-field,\n ::-webkit-datetime-edit-day-field,\n ::-webkit-datetime-edit-hour-field,\n ::-webkit-datetime-edit-minute-field,\n ::-webkit-datetime-edit-second-field,\n ::-webkit-datetime-edit-millisecond-field,\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button,\n input:where([type=button], [type=reset], [type=submit]),\n ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button,\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=until-found])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .visible {\n visibility: visible;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .bottom-4 {\n bottom: calc(var(--spacing) * 4);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .left-4 {\n left: calc(var(--spacing) * 4);\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .m-6 {\n margin: calc(var(--spacing) * 6);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .aspect-video {\n aspect-ratio: var(--aspect-video);\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-full {\n height: 100%;\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-full {\n width: 100%;\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .auto-cols-max {\n grid-auto-columns: max-content;\n }\n .grid-flow-col {\n grid-auto-flow: column;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-center {\n align-items: center;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-stretch {\n justify-content: stretch;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .bg-\\[\\#151515\\] {\n background-color: #151515;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-red-600 {\n background-color: var(--color-red-600);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-gradient-to-t {\n --tw-gradient-position: to top in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-black\\/70 {\n --tw-gradient-from: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-gradient-from: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-transparent {\n --tw-gradient-to: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .bg-cover {\n background-size: cover;\n }\n .bg-center {\n background-position: center;\n }\n .bg-no-repeat {\n background-repeat: no-repeat;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-5xl {\n font-size: var(--text-5xl);\n line-height: var(--tw-leading, var(--text-5xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[10px\\] {\n font-size: 10px;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-wide {\n --tw-tracking: var(--tracking-wide);\n letter-spacing: var(--tracking-wide);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-white {\n color: var(--color-white);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .md\\:rounded-2xl {\n @media (width >= 48rem) {\n border-radius: var(--radius-2xl);\n }\n }\n .md\\:rounded-2xl\\! {\n @media (width >= 48rem) {\n border-radius: var(--radius-2xl) !important;\n }\n }\n .md\\:text-base {\n @media (width >= 48rem) {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:text-xl {\n @media (width >= 48rem) {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n }\n}\n@layer components {\n .motto-video-container {\n position: relative;\n width: 100%;\n min-height: 300px;\n }\n @supports (aspect-ratio: 16/9) {\n .motto-video-container {\n min-height: auto;\n }\n }\n .motto-video-responsive {\n position: absolute;\n top: calc(var(--spacing) * 0);\n left: calc(var(--spacing) * 0);\n height: 100%;\n width: 100%;\n }\n .motto-skip-button {\n position: absolute;\n top: calc(1/2 * 100%);\n z-index: 10;\n display: flex;\n height: calc(var(--spacing) * 16);\n width: calc(var(--spacing) * 16);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n cursor: pointer;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 70%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 70%, transparent);\n }\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n color: var(--color-white);\n opacity: 80%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n &:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n .motto-skip-button-back {\n left: calc(var(--spacing) * 5);\n }\n .motto-skip-button-forward {\n right: calc(var(--spacing) * 5);\n }\n .motto-mobile-controls-overlay {\n position: absolute;\n inset: calc(var(--spacing) * 0);\n z-index: 20;\n display: flex;\n align-items: center;\n justify-content: center;\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n pointer-events: none;\n }\n .motto-mobile-controls-group {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 8);\n opacity: 100%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: none;\n }\n .motto-mobile-play-button {\n display: flex;\n height: calc(var(--spacing) * 14);\n width: calc(var(--spacing) * 14);\n cursor: pointer;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n color: var(--color-white);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: auto;\n }\n .motto-mobile-play-button:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .motto-mobile-play-button svg {\n height: calc(var(--spacing) * 7);\n width: calc(var(--spacing) * 7);\n }\n .motto-mobile-skip-button {\n display: flex;\n height: calc(var(--spacing) * 10);\n width: calc(var(--spacing) * 10);\n cursor: pointer;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 0px;\n background-color: color-mix(in srgb, #000 30%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 30%, transparent);\n }\n color: var(--color-white);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow:\n var(--tw-inset-shadow),\n var(--tw-inset-ring-shadow),\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n pointer-events: auto;\n }\n .motto-mobile-skip-button:active {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .motto-mobile-skip-button svg {\n height: calc(var(--spacing) * 6);\n width: calc(var(--spacing) * 6);\n }\n}\n@media (min-width: 768px) {\n .motto-mobile-controls-overlay {\n display: none !important;\n }\n}\n@media (max-width: 767px) {\n .shaka-controls-container .motto-native-skip-button,\n .shaka-controls-container .motto-skip-back-button,\n .shaka-controls-container .motto-skip-forward-button,\n .shaka-controls-container .shaka-button[title*="Skip back"],\n .shaka-controls-container .shaka-button[title*="Skip forward"],\n .shaka-controls-container .shaka-button[aria-label*="Skip back"],\n .shaka-controls-container .shaka-button[aria-label*="Skip forward"],\n .shaka-controls-container button[title*="Skip back"],\n .shaka-controls-container button[title*="Skip forward"],\n .shaka-controls-container button[aria-label*="Skip back"],\n .shaka-controls-container button[aria-label*="Skip forward"],\n .motto-native-skip-button:not(.motto-mobile-skip-button),\n .motto-skip-back-button:not(.motto-mobile-skip-button),\n .motto-skip-forward-button:not(.motto-mobile-skip-button),\n .shaka-button[title*="Skip back"]:not(.motto-mobile-skip-button),\n .shaka-button[title*="Skip forward"]:not(.motto-mobile-skip-button),\n .shaka-button[aria-label*="Skip back"]:not(.motto-mobile-skip-button),\n .shaka-button[aria-label*="Skip forward"]:not(.motto-mobile-skip-button),\n button[title*="Skip back"]:not(.motto-mobile-skip-button),\n button[title*="Skip forward"]:not(.motto-mobile-skip-button),\n button[aria-label*="Skip back"]:not(.motto-mobile-skip-button),\n button[aria-label*="Skip forward"]:not(.motto-mobile-skip-button) {\n display: none !important;\n visibility: hidden !important;\n opacity: 0 !important;\n width: 0 !important;\n height: 0 !important;\n padding: 0 !important;\n margin: 0 !important;\n }\n .motto-mobile-skip-button {\n display: flex !important;\n visibility: visible !important;\n opacity: 1 !important;\n }\n}\n.shaka-seek-bar-container {\n height: 6px !important;\n width: 100% !important;\n margin: 8px 0 !important;\n border-radius: 4px !important;\n position: relative !important;\n border-top: none !important;\n border-bottom: none !important;\n box-shadow: none !important;\n}\n.shaka-seek-bar {\n height: 6px !important;\n width: 100% !important;\n -webkit-appearance: none !important;\n appearance: none !important;\n background: transparent !important;\n cursor: pointer !important;\n border: none !important;\n outline: none !important;\n position: absolute !important;\n top: 0 !important;\n left: 0 !important;\n border-radius: 4px !important;\n}\n.shaka-seek-bar::-webkit-slider-runnable-track {\n height: 6px !important;\n background: transparent !important;\n border-radius: 4px !important;\n border: none !important;\n}\n.shaka-seek-bar::-moz-range-track {\n height: 6px !important;\n background: transparent !important;\n border-radius: 4px !important;\n border: none !important;\n}\n.shaka-seek-bar::-webkit-slider-thumb {\n -webkit-appearance: none !important;\n appearance: none !important;\n width: 16px !important;\n height: 16px !important;\n border-radius: 50% !important;\n background: #ffffff !important;\n cursor: pointer !important;\n border: 2px solid #ffffff !important;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;\n margin-top: -4px !important;\n}\n.shaka-seek-bar::-moz-range-thumb {\n width: 16px !important;\n height: 16px !important;\n border-radius: 50% !important;\n background: #ffffff !important;\n cursor: pointer !important;\n border: 2px solid #ffffff !important;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;\n margin-top: -4px !important;\n}\n.motto-skip-back-button,\n.motto-skip-forward-button,\n.motto-native-skip-button {\n background: transparent !important;\n border: none !important;\n padding: 4px !important;\n margin: 0px !important;\n cursor: pointer !important;\n color: #ffffff !important;\n transition: all 0.2s ease !important;\n min-width: 32px !important;\n height: 32px !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n border-radius: 4px !important;\n width: 25px;\n}\n.motto-skip-back-button:hover,\n.motto-skip-forward-button:hover,\n.motto-native-skip-button:hover {\n opacity: 0.8 !important;\n background: transparent !important;\n transform: scale(1.05) !important;\n}\n.motto-skip-back-button:active,\n.motto-skip-forward-button:active,\n.motto-native-skip-button:active {\n transform: scale(0.95) !important;\n}\n.motto-skip-back-button svg,\n.motto-skip-forward-button svg,\n.motto-native-skip-button svg {\n width: 24px !important;\n height: 24px !important;\n}\n@media (max-width: 767px) {\n .shaka-controls-container .motto-native-skip-button,\n .shaka-controls-container .motto-skip-back-button,\n .shaka-controls-container .motto-skip-forward-button,\n .shaka-controls-container .shaka-play-button,\n .shaka-controls-container .shaka-pause-button {\n display: none !important;\n }\n}\n.shaka-spinner-svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-spinner-path {\n stroke: white !important;\n fill: none !important;\n}\n.shaka-spinner-container {\n color: white !important;\n}\n.shaka-buffering-spinner {\n color: white !important;\n fill: white !important;\n}\n.shaka-buffering-spinner svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-buffering-spinner path {\n stroke: white !important;\n fill: none !important;\n}\n[data-shaka-player-container] .shaka-spinner,\n[data-shaka-player-container] .spinner {\n color: white !important;\n border-color: white !important;\n}\n.material-icons.shaka-spinner {\n color: white !important;\n}\n.shaka-controls-container .shaka-spinner,\n.shaka-video-container .shaka-spinner {\n color: white !important;\n fill: white !important;\n}\n.shaka-controls-container .shaka-spinner svg,\n.shaka-video-container .shaka-spinner svg {\n color: white !important;\n fill: white !important;\n}\n.shaka-controls-container .shaka-spinner path,\n.shaka-video-container .shaka-spinner path {\n stroke: white !important;\n}\n.motto-video-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background:\n linear-gradient(\n 135deg,\n #1a1a1a 0%,\n #2d2d2d 100%);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n z-index: 10;\n transition: opacity 0.3s ease;\n}\n.motto-video-loading-overlay.hidden {\n opacity: 0;\n pointer-events: none;\n}\n.motto-video-loading-content {\n text-align: center;\n color: white;\n}\n.motto-video-loading-icon {\n width: 64px;\n height: 64px;\n margin-bottom: 16px;\n opacity: 0.7;\n}\n.motto-video-loading-text {\n font-size: 16px;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.motto-video-loading-subtext {\n font-size: 14px;\n opacity: 0.7;\n}\n@keyframes pulse-live {\n 0% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.7;\n transform: scale(1.1);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n}\n.shaka-play-button-container {\n display: none !important;\n}\n@media (max-width: 767px) {\n .shaka-controls-container {\n z-index: 90 !important;\n height: 100px !important;\n bottom: 0 !important;\n top: unset !important;\n }\n}\n@property --tw-gradient-position { syntax: "*"; inherits: false; }\n@property --tw-gradient-from { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-via { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-to { syntax: "<color>"; inherits: false; initial-value: #0000; }\n@property --tw-gradient-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-via-stops { syntax: "*"; inherits: false; }\n@property --tw-gradient-from-position { syntax: "<length-percentage>"; inherits: false; initial-value: 0%; }\n@property --tw-gradient-via-position { syntax: "<length-percentage>"; inherits: false; initial-value: 50%; }\n@property --tw-gradient-to-position { syntax: "<length-percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-font-weight { syntax: "*"; inherits: false; }\n@property --tw-tracking { syntax: "*"; inherits: false; }\n@property --tw-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-inset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-inset-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-ring-color { syntax: "*"; inherits: false; }\n@property --tw-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-inset-ring-color { syntax: "*"; inherits: false; }\n@property --tw-inset-ring-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-ring-inset { syntax: "*"; inherits: false; }\n@property --tw-ring-offset-width { syntax: "<length>"; inherits: false; initial-value: 0px; }\n@property --tw-ring-offset-color { syntax: "*"; inherits: false; initial-value: #fff; }\n@property --tw-ring-offset-shadow { syntax: "*"; inherits: false; initial-value: 0 0 #0000; }\n@property --tw-blur { syntax: "*"; inherits: false; }\n@property --tw-brightness { syntax: "*"; inherits: false; }\n@property --tw-contrast { syntax: "*"; inherits: false; }\n@property --tw-grayscale { syntax: "*"; inherits: false; }\n@property --tw-hue-rotate { syntax: "*"; inherits: false; }\n@property --tw-invert { syntax: "*"; inherits: false; }\n@property --tw-opacity { syntax: "*"; inherits: false; }\n@property --tw-saturate { syntax: "*"; inherits: false; }\n@property --tw-sepia { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-color { syntax: "*"; inherits: false; }\n@property --tw-drop-shadow-alpha { syntax: "<percentage>"; inherits: false; initial-value: 100%; }\n@property --tw-drop-shadow-size { syntax: "*"; inherits: false; }\n@property --tw-translate-x { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-y { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-translate-z { syntax: "*"; inherits: false; initial-value: 0; }\n@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\n@property --tw-duration { syntax: "*"; inherits: false; }\n@property --tw-scale-x { syntax: "*"; inherits: false; initial-value: 1; }\n@property --tw-scale-y { syntax: "*"; inherits: false; initial-value: 1; }\n@property --tw-scale-z { syntax: "*"; inherits: false; initial-value: 1; }\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *,\n ::before,\n ::after,\n ::backdrop {\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n --tw-duration: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n }\n }\n}\n');
|
|
30
30
|
|
|
31
31
|
// src/Player.tsx
|
|
32
|
-
import { forwardRef, useEffect as
|
|
32
|
+
import { forwardRef, useEffect as useEffect5, useRef as useRef8, useImperativeHandle } from "react";
|
|
33
33
|
import shaka2 from "shaka-player/dist/shaka-player.ui";
|
|
34
34
|
|
|
35
35
|
// src/hooks/useShakePlayer.ts
|
|
@@ -120,11 +120,25 @@ var useQualityControl = (playerRef, qualityConfig, onQualityChange) => {
|
|
|
120
120
|
if (!playerRef.current) return;
|
|
121
121
|
if (height === 0) {
|
|
122
122
|
playerRef.current.configure({
|
|
123
|
-
abr: {
|
|
123
|
+
abr: {
|
|
124
|
+
enabled: true,
|
|
125
|
+
switchInterval: 2,
|
|
126
|
+
// quicker re-checks
|
|
127
|
+
clearBufferSwitch: true,
|
|
128
|
+
safeMarginSwitch: 10
|
|
129
|
+
// leave ~10 s in front of the playhead }
|
|
130
|
+
}
|
|
124
131
|
});
|
|
125
132
|
} else {
|
|
126
133
|
playerRef.current.configure({
|
|
127
|
-
abr: {
|
|
134
|
+
abr: {
|
|
135
|
+
enabled: false,
|
|
136
|
+
switchInterval: 2,
|
|
137
|
+
// quicker re-checks
|
|
138
|
+
clearBufferSwitch: true,
|
|
139
|
+
safeMarginSwitch: 10
|
|
140
|
+
// leave ~10 s in front of the playhead }
|
|
141
|
+
}
|
|
128
142
|
});
|
|
129
143
|
const tracks = playerRef.current.getVariantTracks();
|
|
130
144
|
const targetTrack = tracks.find((track) => track.height === height);
|
|
@@ -551,6 +565,7 @@ var MobileControlsContainerFactory = class {
|
|
|
551
565
|
};
|
|
552
566
|
var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig, seekbarColors, onSkipBack, onSkipForward) => {
|
|
553
567
|
const uiRef = useRef4(null);
|
|
568
|
+
const mobileOverlayRef = useRef4(null);
|
|
554
569
|
const registeredElements = useRef4(/* @__PURE__ */ new Set());
|
|
555
570
|
const initializeUI = useCallback5(async () => {
|
|
556
571
|
if (!controls || !containerRef.current || !playerRef.current || !videoRef.current) {
|
|
@@ -622,7 +637,14 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
|
|
|
622
637
|
const container = containerRef.current;
|
|
623
638
|
const video = videoRef.current;
|
|
624
639
|
if (container && video) {
|
|
625
|
-
|
|
640
|
+
if (!mobileOverlayRef.current) {
|
|
641
|
+
mobileOverlayRef.current = new MobileControlsContainer(
|
|
642
|
+
container,
|
|
643
|
+
{ getVideo: () => video },
|
|
644
|
+
onSkipBack,
|
|
645
|
+
onSkipForward
|
|
646
|
+
);
|
|
647
|
+
}
|
|
626
648
|
}
|
|
627
649
|
}, 500);
|
|
628
650
|
}
|
|
@@ -637,6 +659,14 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
|
|
|
637
659
|
}
|
|
638
660
|
uiRef.current = null;
|
|
639
661
|
}
|
|
662
|
+
if (mobileOverlayRef.current) {
|
|
663
|
+
try {
|
|
664
|
+
mobileOverlayRef.current.release();
|
|
665
|
+
} catch (error) {
|
|
666
|
+
console.warn("Error releasing mobile controls overlay:", error);
|
|
667
|
+
}
|
|
668
|
+
mobileOverlayRef.current = null;
|
|
669
|
+
}
|
|
640
670
|
}, []);
|
|
641
671
|
return {
|
|
642
672
|
uiRef,
|
|
@@ -821,12 +851,10 @@ var useLiveIndicator = (containerRef, options = {}) => {
|
|
|
821
851
|
characterData: true,
|
|
822
852
|
characterDataOldValue: true
|
|
823
853
|
});
|
|
824
|
-
const intervalId = setInterval(checkForLiveContent, 1e3);
|
|
825
854
|
return () => {
|
|
826
855
|
if (observerRef.current) {
|
|
827
856
|
observerRef.current.disconnect();
|
|
828
857
|
}
|
|
829
|
-
clearInterval(intervalId);
|
|
830
858
|
};
|
|
831
859
|
}, [containerRef, enabled, indicatorColor, indicatorSize, showPulseAnimation]);
|
|
832
860
|
return {
|
|
@@ -842,6 +870,51 @@ var useLiveIndicator = (containerRef, options = {}) => {
|
|
|
842
870
|
};
|
|
843
871
|
};
|
|
844
872
|
|
|
873
|
+
// src/hooks/useKeyboardControls.ts
|
|
874
|
+
import { useCallback as useCallback7, useEffect as useEffect4 } from "react";
|
|
875
|
+
var useKeyboardControls = (videoRef, options = {}) => {
|
|
876
|
+
const { skipBack, skipForward, enabled = true } = options;
|
|
877
|
+
const isDesktop = useCallback7(() => {
|
|
878
|
+
return window.innerWidth > 767 && !/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
|
879
|
+
}, []);
|
|
880
|
+
const handleKeydown = useCallback7((event) => {
|
|
881
|
+
if (!enabled || !isDesktop() || !videoRef.current) return;
|
|
882
|
+
const activeElement = document.activeElement;
|
|
883
|
+
if (activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.isContentEditable)) {
|
|
884
|
+
return;
|
|
885
|
+
}
|
|
886
|
+
switch (event.key) {
|
|
887
|
+
case "ArrowLeft":
|
|
888
|
+
event.preventDefault();
|
|
889
|
+
skipBack?.();
|
|
890
|
+
break;
|
|
891
|
+
case "ArrowRight":
|
|
892
|
+
event.preventDefault();
|
|
893
|
+
skipForward?.();
|
|
894
|
+
break;
|
|
895
|
+
case " ":
|
|
896
|
+
case "Space":
|
|
897
|
+
event.preventDefault();
|
|
898
|
+
if (videoRef.current.paused) {
|
|
899
|
+
videoRef.current.play();
|
|
900
|
+
} else {
|
|
901
|
+
videoRef.current.pause();
|
|
902
|
+
}
|
|
903
|
+
break;
|
|
904
|
+
}
|
|
905
|
+
}, [enabled, videoRef, skipBack, skipForward, isDesktop]);
|
|
906
|
+
useEffect4(() => {
|
|
907
|
+
if (!enabled || !isDesktop()) return;
|
|
908
|
+
document.addEventListener("keydown", handleKeydown);
|
|
909
|
+
return () => {
|
|
910
|
+
document.removeEventListener("keydown", handleKeydown);
|
|
911
|
+
};
|
|
912
|
+
}, [handleKeydown, enabled, isDesktop]);
|
|
913
|
+
return {
|
|
914
|
+
isDesktop: isDesktop()
|
|
915
|
+
};
|
|
916
|
+
};
|
|
917
|
+
|
|
845
918
|
// src/components/Loading.tsx
|
|
846
919
|
import { twMerge } from "tailwind-merge";
|
|
847
920
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -978,7 +1051,7 @@ var Player = forwardRef(
|
|
|
978
1051
|
seekbarConfig,
|
|
979
1052
|
events,
|
|
980
1053
|
containerClassName,
|
|
981
|
-
...
|
|
1054
|
+
...videoProps
|
|
982
1055
|
}, ref) => {
|
|
983
1056
|
const videoRef = useRef8(null);
|
|
984
1057
|
const containerRef = useRef8(null);
|
|
@@ -1003,6 +1076,11 @@ var Player = forwardRef(
|
|
|
1003
1076
|
skipDuration,
|
|
1004
1077
|
shouldShowSkipControls
|
|
1005
1078
|
} = useSkipControls(videoRef, events?.onSkipBack, events?.onSkipForward);
|
|
1079
|
+
useKeyboardControls(videoRef, {
|
|
1080
|
+
skipBack,
|
|
1081
|
+
skipForward,
|
|
1082
|
+
enabled: true
|
|
1083
|
+
});
|
|
1006
1084
|
const {
|
|
1007
1085
|
initializeMux,
|
|
1008
1086
|
updateMuxData,
|
|
@@ -1078,7 +1156,7 @@ var Player = forwardRef(
|
|
|
1078
1156
|
console.warn("Chromecast initialization failed:", error);
|
|
1079
1157
|
}
|
|
1080
1158
|
};
|
|
1081
|
-
|
|
1159
|
+
useEffect5(() => {
|
|
1082
1160
|
const video = videoRef.current;
|
|
1083
1161
|
if (!video) return;
|
|
1084
1162
|
const initialize = async () => {
|
|
@@ -1103,22 +1181,8 @@ var Player = forwardRef(
|
|
|
1103
1181
|
destroyMux();
|
|
1104
1182
|
destroyPlayer();
|
|
1105
1183
|
};
|
|
1106
|
-
}, [
|
|
1107
|
-
|
|
1108
|
-
initializePlayer,
|
|
1109
|
-
setupEventListeners,
|
|
1110
|
-
setupQualityTracking,
|
|
1111
|
-
configureQuality,
|
|
1112
|
-
initializeUI,
|
|
1113
|
-
initializeMux,
|
|
1114
|
-
cleanupEventListeners,
|
|
1115
|
-
destroyUI,
|
|
1116
|
-
destroyMux,
|
|
1117
|
-
destroyPlayer,
|
|
1118
|
-
handleMuxError,
|
|
1119
|
-
playerRef
|
|
1120
|
-
]);
|
|
1121
|
-
useEffect4(() => {
|
|
1184
|
+
}, [src]);
|
|
1185
|
+
useEffect5(() => {
|
|
1122
1186
|
const video = videoRef.current;
|
|
1123
1187
|
if (!video) return;
|
|
1124
1188
|
video.autoplay = autoPlay;
|
|
@@ -1127,6 +1191,13 @@ var Player = forwardRef(
|
|
|
1127
1191
|
video.controls = false;
|
|
1128
1192
|
if (poster) video.poster = poster;
|
|
1129
1193
|
}, [autoPlay, loop, muted, poster]);
|
|
1194
|
+
useEffect5(() => {
|
|
1195
|
+
const video = videoRef.current;
|
|
1196
|
+
if (!video) return;
|
|
1197
|
+
video.controls = false;
|
|
1198
|
+
video.setAttribute("controls", "false");
|
|
1199
|
+
video.removeAttribute("controls");
|
|
1200
|
+
}, []);
|
|
1130
1201
|
useImperativeHandle(ref, () => ({
|
|
1131
1202
|
...videoRef.current,
|
|
1132
1203
|
// Custom methods for quality control
|
|
@@ -1148,6 +1219,8 @@ var Player = forwardRef(
|
|
|
1148
1219
|
} : { width, height };
|
|
1149
1220
|
const videoClasses = isResponsive ? "motto-video-responsive" : "w-full h-full ";
|
|
1150
1221
|
const videoStyle = isResponsive ? {} : { width, height };
|
|
1222
|
+
const filteredVideoProps = { ...videoProps };
|
|
1223
|
+
delete filteredVideoProps.controls;
|
|
1151
1224
|
return /* @__PURE__ */ jsxs4(
|
|
1152
1225
|
"div",
|
|
1153
1226
|
{
|
|
@@ -1166,7 +1239,7 @@ var Player = forwardRef(
|
|
|
1166
1239
|
height: isResponsive ? void 0 : height,
|
|
1167
1240
|
style: videoStyle,
|
|
1168
1241
|
controls: false,
|
|
1169
|
-
...
|
|
1242
|
+
...filteredVideoProps
|
|
1170
1243
|
}
|
|
1171
1244
|
),
|
|
1172
1245
|
/* @__PURE__ */ jsx5(LiveBadge, { isVisible: isLiveBadgeVisible }),
|
|
@@ -1185,7 +1258,7 @@ var Player = forwardRef(
|
|
|
1185
1258
|
Player.displayName = "Player";
|
|
1186
1259
|
|
|
1187
1260
|
// src/Video.tsx
|
|
1188
|
-
import { useEffect as
|
|
1261
|
+
import { useEffect as useEffect7 } from "react";
|
|
1189
1262
|
import { twMerge as twMerge3 } from "tailwind-merge";
|
|
1190
1263
|
import { useQuery } from "@tanstack/react-query";
|
|
1191
1264
|
|
|
@@ -1326,7 +1399,7 @@ var getErrorType = (error, video) => {
|
|
|
1326
1399
|
};
|
|
1327
1400
|
|
|
1328
1401
|
// src/messages/useMessages.tsx
|
|
1329
|
-
import { useState as useState3, useEffect as
|
|
1402
|
+
import { useState as useState3, useEffect as useEffect6 } from "react";
|
|
1330
1403
|
|
|
1331
1404
|
// src/messages/en.json
|
|
1332
1405
|
var en_default = {
|
|
@@ -1630,7 +1703,7 @@ var getBrowserLanguage = () => {
|
|
|
1630
1703
|
var useMessages = (locale) => {
|
|
1631
1704
|
const [language, setLanguage] = useState3("en");
|
|
1632
1705
|
const [translations, setTranslations] = useState3(availableLanguages.en);
|
|
1633
|
-
|
|
1706
|
+
useEffect6(() => {
|
|
1634
1707
|
const lang = !!availableLanguages?.[locale] ? locale : getBrowserLanguage();
|
|
1635
1708
|
;
|
|
1636
1709
|
setLanguage(lang);
|
|
@@ -1692,7 +1765,7 @@ var Video = ({
|
|
|
1692
1765
|
const { t } = useMessages_default(locale);
|
|
1693
1766
|
const activePlaylist = findHLSPlaylist(video);
|
|
1694
1767
|
const hlsUrl = activePlaylist?.url;
|
|
1695
|
-
|
|
1768
|
+
useEffect7(() => {
|
|
1696
1769
|
if (events?.onVideoData && video) {
|
|
1697
1770
|
events.onVideoData(video);
|
|
1698
1771
|
}
|
|
@@ -1743,7 +1816,7 @@ var Video = ({
|
|
|
1743
1816
|
};
|
|
1744
1817
|
|
|
1745
1818
|
// src/Event.tsx
|
|
1746
|
-
import { useCallback as
|
|
1819
|
+
import { useCallback as useCallback8, useEffect as useEffect8, useState as useState4 } from "react";
|
|
1747
1820
|
import { twMerge as twMerge4 } from "tailwind-merge";
|
|
1748
1821
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
1749
1822
|
import { Fragment, jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
@@ -1794,7 +1867,7 @@ var Event = ({
|
|
|
1794
1867
|
retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
|
|
1795
1868
|
});
|
|
1796
1869
|
const [loadingApisState, setLoadingApisState] = useState4(true);
|
|
1797
|
-
|
|
1870
|
+
useEffect8(() => {
|
|
1798
1871
|
if (videosData !== void 0) {
|
|
1799
1872
|
setLoadingApisState(false);
|
|
1800
1873
|
const videosWithPlaylists = videosData.filter(
|
|
@@ -1826,12 +1899,12 @@ var Event = ({
|
|
|
1826
1899
|
}
|
|
1827
1900
|
}, [videosData, eventData]);
|
|
1828
1901
|
const { t } = useMessages_default(locale);
|
|
1829
|
-
|
|
1902
|
+
useEffect8(() => {
|
|
1830
1903
|
if (events?.onEventData && eventData) {
|
|
1831
1904
|
events.onEventData(eventData);
|
|
1832
1905
|
}
|
|
1833
1906
|
}, [eventData, events]);
|
|
1834
|
-
|
|
1907
|
+
useEffect8(() => {
|
|
1835
1908
|
if (events?.onVideoData && activeVideoId && videosData) {
|
|
1836
1909
|
const activeVideo = videosData.find((video) => video.id === activeVideoId);
|
|
1837
1910
|
if (activeVideo) {
|
|
@@ -1842,7 +1915,7 @@ var Event = ({
|
|
|
1842
1915
|
const [error, setError] = useState4(null);
|
|
1843
1916
|
const [loadingPlaylist, setLoadingPlaylist] = useState4(true);
|
|
1844
1917
|
const videosDataError = videosData?.some((video) => !!video.error);
|
|
1845
|
-
|
|
1918
|
+
useEffect8(() => {
|
|
1846
1919
|
if (eventError || videosError || videosDataError) {
|
|
1847
1920
|
const errorObj = eventError || videosError || videosData?.find((video) => !!video.error)?.error && new Error(videosData?.find((video) => !!video.error)?.error) || new Error("default");
|
|
1848
1921
|
setError(errorObj);
|
|
@@ -1853,7 +1926,7 @@ var Event = ({
|
|
|
1853
1926
|
setError(null);
|
|
1854
1927
|
}
|
|
1855
1928
|
}, [eventError, videosError, videosDataError, videosData, events]);
|
|
1856
|
-
|
|
1929
|
+
useEffect8(() => {
|
|
1857
1930
|
const eventLoadedWithNoVideos = !isEventLoading && eventData && eventData.videoIds && (!eventData.videoIds || eventData?.videoIds?.length === 0) && !loadingApisState;
|
|
1858
1931
|
const allApisLoadedWithPotentialVideos = !isEventLoading && !videosIsLoading && eventData && !loadingApisState;
|
|
1859
1932
|
if (eventLoadedWithNoVideos || allApisLoadedWithPotentialVideos) {
|
|
@@ -1929,7 +2002,7 @@ function PreEvent({
|
|
|
1929
2002
|
);
|
|
1930
2003
|
const shouldBeStarted = remainingTime < 0;
|
|
1931
2004
|
const { t } = useMessages_default(locale);
|
|
1932
|
-
|
|
2005
|
+
useEffect8(() => {
|
|
1933
2006
|
const interval = setInterval(() => {
|
|
1934
2007
|
if (remainingTime < 0) {
|
|
1935
2008
|
clearInterval(interval);
|
|
@@ -1939,7 +2012,7 @@ function PreEvent({
|
|
|
1939
2012
|
}, 1e3);
|
|
1940
2013
|
return () => clearInterval(interval);
|
|
1941
2014
|
}, [date, remainingTime]);
|
|
1942
|
-
const renderCountdown =
|
|
2015
|
+
const renderCountdown = useCallback8(() => {
|
|
1943
2016
|
if (shouldBeStarted) {
|
|
1944
2017
|
return /* @__PURE__ */ jsx7("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
|
|
1945
2018
|
}
|
|
@@ -2069,7 +2142,7 @@ var TitleAndDescription = ({
|
|
|
2069
2142
|
};
|
|
2070
2143
|
|
|
2071
2144
|
// src/CreativeWork.tsx
|
|
2072
|
-
import { useEffect as
|
|
2145
|
+
import { useEffect as useEffect9, useState as useState5 } from "react";
|
|
2073
2146
|
import { twMerge as twMerge5 } from "tailwind-merge";
|
|
2074
2147
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
2075
2148
|
import { Fragment as Fragment2, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
@@ -2121,7 +2194,7 @@ var CreativeWork = ({
|
|
|
2121
2194
|
retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
|
|
2122
2195
|
});
|
|
2123
2196
|
const [loadingApisState, setLoadingApisState] = useState5(true);
|
|
2124
|
-
|
|
2197
|
+
useEffect9(() => {
|
|
2125
2198
|
if (videosData !== void 0) {
|
|
2126
2199
|
setLoadingApisState(false);
|
|
2127
2200
|
const videosWithPlaylists = videosData.filter(
|
|
@@ -2153,7 +2226,7 @@ var CreativeWork = ({
|
|
|
2153
2226
|
}
|
|
2154
2227
|
}, [videosData, creativeWorkData]);
|
|
2155
2228
|
const { t } = useMessages_default(locale);
|
|
2156
|
-
|
|
2229
|
+
useEffect9(() => {
|
|
2157
2230
|
if (events?.onCreativeWorkData && creativeWorkData) {
|
|
2158
2231
|
events.onCreativeWorkData(creativeWorkData);
|
|
2159
2232
|
}
|
|
@@ -2161,7 +2234,7 @@ var CreativeWork = ({
|
|
|
2161
2234
|
setShowCountDown(true);
|
|
2162
2235
|
}
|
|
2163
2236
|
}, [creativeWorkData, events]);
|
|
2164
|
-
|
|
2237
|
+
useEffect9(() => {
|
|
2165
2238
|
if (events?.onVideoData && activeVideoId && videosData) {
|
|
2166
2239
|
const activeVideo = videosData.find((video) => video.id === activeVideoId);
|
|
2167
2240
|
if (activeVideo) {
|
|
@@ -2171,7 +2244,7 @@ var CreativeWork = ({
|
|
|
2171
2244
|
}, [activeVideoId, videosData, events]);
|
|
2172
2245
|
const [error, setError] = useState5(null);
|
|
2173
2246
|
const videosDataError = videosData?.some((video) => !!video.error);
|
|
2174
|
-
|
|
2247
|
+
useEffect9(() => {
|
|
2175
2248
|
if (creativeWorkError || videosError || videosDataError) {
|
|
2176
2249
|
const errorObj = creativeWorkError || videosError || videosData?.find((video) => !!video.error)?.error && new Error(videosData?.find((video) => !!video.error)?.error) || new Error("default");
|
|
2177
2250
|
setError(errorObj);
|
|
@@ -2194,7 +2267,7 @@ var CreativeWork = ({
|
|
|
2194
2267
|
) }) });
|
|
2195
2268
|
}
|
|
2196
2269
|
const [loadingPlaylist, setLoadingPlaylist] = useState5(true);
|
|
2197
|
-
|
|
2270
|
+
useEffect9(() => {
|
|
2198
2271
|
const creativeWorkLoadedWithNoVideos = !isCreativeWorkLoading && creativeWorkData && creativeWorkData.videoIds && creativeWorkData.videoIds.length === 0;
|
|
2199
2272
|
const creativeWorkLoadedWithNoData = !isCreativeWorkLoading && creativeWorkData && !creativeWorkData.videoIds;
|
|
2200
2273
|
const isEventsFinished = !videosIsLoading && videosData && videosData.length > 0 && videosData.every((video) => video.playlists && video.playlists.length === 0);
|
|
@@ -2275,7 +2348,7 @@ function PreCreativeWork({
|
|
|
2275
2348
|
);
|
|
2276
2349
|
const shouldBeStarted = remainingTime < 0;
|
|
2277
2350
|
const { t } = useMessages_default(locale);
|
|
2278
|
-
|
|
2351
|
+
useEffect9(() => {
|
|
2279
2352
|
const interval = setInterval(() => {
|
|
2280
2353
|
if (remainingTime < 0) {
|
|
2281
2354
|
clearInterval(interval);
|