@mottosports/motto-video-player 1.0.1-rc.12 → 1.0.1-rc.5
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 +161 -158
- package/dist/index.d.mts +54 -11
- package/dist/index.d.ts +54 -11
- package/dist/index.js +536 -245
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +500 -218
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
// src/index.ts
|
|
4
|
-
import "shaka-player/dist/controls.css";
|
|
5
|
-
|
|
6
3
|
// #style-inject:#style-inject
|
|
7
4
|
function styleInject(css, { insertAt } = {}) {
|
|
8
5
|
if (!css || typeof document === "undefined") return;
|
|
@@ -26,10 +23,10 @@ function styleInject(css, { insertAt } = {}) {
|
|
|
26
23
|
}
|
|
27
24
|
|
|
28
25
|
// src/index.css
|
|
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');
|
|
26
|
+
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 --container-4xl: 56rem;\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-8 {\n height: calc(var(--spacing) * 8);\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-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-full {\n width: 100%;\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\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 .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-white {\n border-color: var(--color-white);\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 .shaka-controls-container {\n z-index: 90 !important;\n height: 100px !important;\n bottom: 0 !important;\n top: unset !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@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\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-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-border-style: solid;\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-duration: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n }\n }\n}\n');
|
|
30
27
|
|
|
31
28
|
// src/Player.tsx
|
|
32
|
-
import { forwardRef, useEffect as
|
|
29
|
+
import { forwardRef, useEffect as useEffect5, useRef as useRef8, useImperativeHandle } from "react";
|
|
33
30
|
import shaka2 from "shaka-player/dist/shaka-player.ui";
|
|
34
31
|
|
|
35
32
|
// src/hooks/useShakePlayer.ts
|
|
@@ -49,7 +46,7 @@ var useShakePlayer = ({
|
|
|
49
46
|
if (!ShakaPlayer.isBrowserSupported()) {
|
|
50
47
|
throw new Error("Browser not supported by Shaka Player");
|
|
51
48
|
}
|
|
52
|
-
const player = new ShakaPlayer();
|
|
49
|
+
const player = new ShakaPlayer(video);
|
|
53
50
|
playerRef.current = player;
|
|
54
51
|
await player.attach(video);
|
|
55
52
|
if (shakaConfig) {
|
|
@@ -65,9 +62,6 @@ var useShakePlayer = ({
|
|
|
65
62
|
}
|
|
66
63
|
player.addEventListener("error", (event) => {
|
|
67
64
|
const error = event.detail;
|
|
68
|
-
if (error?.code === 7e3) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
65
|
console.error("Shaka Player Error:", error);
|
|
72
66
|
onError?.(new Error(`Shaka Player Error: ${error.message || "Unknown error"}`));
|
|
73
67
|
});
|
|
@@ -75,9 +69,6 @@ var useShakePlayer = ({
|
|
|
75
69
|
onPlayerReady?.(player);
|
|
76
70
|
return player;
|
|
77
71
|
} catch (error) {
|
|
78
|
-
if (error?.code === 7e3) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
72
|
console.error("Error initializing Shaka Player:", error);
|
|
82
73
|
onError?.(error);
|
|
83
74
|
throw error;
|
|
@@ -270,7 +261,6 @@ var useMuxAnalytics = (playerRef, muxConfig, onMuxReady, onMuxDataUpdate) => {
|
|
|
270
261
|
|
|
271
262
|
// src/hooks/useShakaUI.ts
|
|
272
263
|
import { useCallback as useCallback5, useRef as useRef4 } from "react";
|
|
273
|
-
import { ui as ShakaUI } from "shaka-player/dist/shaka-player.ui";
|
|
274
264
|
var SkipBackButton = class {
|
|
275
265
|
constructor(parent, controls, onSkipBack) {
|
|
276
266
|
this.parent = parent;
|
|
@@ -278,6 +268,10 @@ var SkipBackButton = class {
|
|
|
278
268
|
this.eventManager = { listen: (element, event, handler) => {
|
|
279
269
|
element.addEventListener(event, handler);
|
|
280
270
|
} };
|
|
271
|
+
if (typeof document === "undefined") {
|
|
272
|
+
console.warn("SkipBackButton: document is not available (SSR environment)");
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
281
275
|
this.button_ = document.createElement("button");
|
|
282
276
|
this.button_.className = "shaka-button motto-native-skip-button";
|
|
283
277
|
this.button_.innerHTML = `
|
|
@@ -300,10 +294,6 @@ var SkipBackButton = class {
|
|
|
300
294
|
}
|
|
301
295
|
});
|
|
302
296
|
}
|
|
303
|
-
// Shaka UI will call `release` when the controls are destroyed.
|
|
304
|
-
// Provide a no-op implementation to avoid TypeErrors.
|
|
305
|
-
release() {
|
|
306
|
-
}
|
|
307
297
|
};
|
|
308
298
|
var SkipForwardButton = class {
|
|
309
299
|
constructor(parent, controls, onSkipForward) {
|
|
@@ -312,6 +302,10 @@ var SkipForwardButton = class {
|
|
|
312
302
|
this.eventManager = { listen: (element, event, handler) => {
|
|
313
303
|
element.addEventListener(event, handler);
|
|
314
304
|
} };
|
|
305
|
+
if (typeof document === "undefined") {
|
|
306
|
+
console.warn("SkipForwardButton: document is not available (SSR environment)");
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
315
309
|
this.button_ = document.createElement("button");
|
|
316
310
|
this.button_.className = "shaka-button motto-native-skip-button";
|
|
317
311
|
this.button_.innerHTML = `
|
|
@@ -334,8 +328,6 @@ var SkipForwardButton = class {
|
|
|
334
328
|
}
|
|
335
329
|
});
|
|
336
330
|
}
|
|
337
|
-
release() {
|
|
338
|
-
}
|
|
339
331
|
};
|
|
340
332
|
var SkipBackButtonFactory = class {
|
|
341
333
|
constructor(onSkipBack) {
|
|
@@ -357,6 +349,10 @@ var MobilePlayButton = class {
|
|
|
357
349
|
constructor(parent, controls) {
|
|
358
350
|
this.parent = parent;
|
|
359
351
|
this.controls = controls;
|
|
352
|
+
if (typeof document === "undefined") {
|
|
353
|
+
console.warn("MobilePlayButton: document is not available (SSR environment)");
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
360
356
|
this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
|
|
361
357
|
if (!this.video) {
|
|
362
358
|
console.error("MobilePlayButton: No video element found");
|
|
@@ -396,13 +392,15 @@ var MobilePlayButton = class {
|
|
|
396
392
|
this.button_.setAttribute("aria-label", "Pause");
|
|
397
393
|
}
|
|
398
394
|
}
|
|
399
|
-
release() {
|
|
400
|
-
}
|
|
401
395
|
};
|
|
402
396
|
var MobileSkipBackButton = class {
|
|
403
397
|
constructor(parent, controls, onSkipBack) {
|
|
404
398
|
this.parent = parent;
|
|
405
399
|
this.controls = controls;
|
|
400
|
+
if (typeof document === "undefined") {
|
|
401
|
+
console.warn("MobileSkipBackButton: document is not available (SSR environment)");
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
406
404
|
this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
|
|
407
405
|
if (!this.video) {
|
|
408
406
|
console.error("MobileSkipBackButton: No video element found");
|
|
@@ -429,13 +427,15 @@ var MobileSkipBackButton = class {
|
|
|
429
427
|
onSkipBack?.(newTime);
|
|
430
428
|
});
|
|
431
429
|
}
|
|
432
|
-
release() {
|
|
433
|
-
}
|
|
434
430
|
};
|
|
435
431
|
var MobileSkipForwardButton = class {
|
|
436
432
|
constructor(parent, controls, onSkipForward) {
|
|
437
433
|
this.parent = parent;
|
|
438
434
|
this.controls = controls;
|
|
435
|
+
if (typeof document === "undefined") {
|
|
436
|
+
console.warn("MobileSkipForwardButton: document is not available (SSR environment)");
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
439
|
this.video = controls?.getVideo?.() || parent.querySelector("video") || document.querySelector("video");
|
|
440
440
|
if (!this.video) {
|
|
441
441
|
console.error("MobileSkipForwardButton: No video element found");
|
|
@@ -462,13 +462,15 @@ var MobileSkipForwardButton = class {
|
|
|
462
462
|
onSkipForward?.(newTime);
|
|
463
463
|
});
|
|
464
464
|
}
|
|
465
|
-
release() {
|
|
466
|
-
}
|
|
467
465
|
};
|
|
468
466
|
var MobileControlsContainer = class {
|
|
469
467
|
constructor(parent, controls, onSkipBack, onSkipForward) {
|
|
470
468
|
this.parent = parent;
|
|
471
469
|
this.controls = controls;
|
|
470
|
+
if (typeof document === "undefined") {
|
|
471
|
+
console.warn("MobileControlsContainer: document is not available (SSR environment)");
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
472
474
|
if (!parent) {
|
|
473
475
|
console.error("MobileControlsContainer: No parent element provided");
|
|
474
476
|
return;
|
|
@@ -526,19 +528,13 @@ var MobileControlsContainer = class {
|
|
|
526
528
|
}
|
|
527
529
|
}
|
|
528
530
|
isElementVisible(element) {
|
|
531
|
+
if (typeof window === "undefined") {
|
|
532
|
+
return false;
|
|
533
|
+
}
|
|
529
534
|
const style = window.getComputedStyle(element);
|
|
530
535
|
const hasHiddenClass = element.classList.contains("shaka-hidden") || element.classList.contains("hidden") || element.classList.contains("shaka-fade-out");
|
|
531
536
|
return style.display !== "none" && style.visibility !== "hidden" && style.opacity !== "0" && !element.hidden && !hasHiddenClass;
|
|
532
537
|
}
|
|
533
|
-
release() {
|
|
534
|
-
try {
|
|
535
|
-
this.observer?.disconnect?.();
|
|
536
|
-
if (this.container_ && this.parent.contains(this.container_)) {
|
|
537
|
-
this.parent.removeChild(this.container_);
|
|
538
|
-
}
|
|
539
|
-
} catch {
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
538
|
};
|
|
543
539
|
var MobileControlsContainerFactory = class {
|
|
544
540
|
constructor(onSkipBack, onSkipForward) {
|
|
@@ -553,80 +549,88 @@ var useShakaUI = (playerRef, containerRef, videoRef, controls, chromecastConfig,
|
|
|
553
549
|
const uiRef = useRef4(null);
|
|
554
550
|
const registeredElements = useRef4(/* @__PURE__ */ new Set());
|
|
555
551
|
const initializeUI = useCallback5(async () => {
|
|
556
|
-
if (
|
|
552
|
+
if (typeof window === "undefined" || typeof document === "undefined") {
|
|
553
|
+
console.warn("useShakaUI: Cannot initialize UI in SSR environment");
|
|
557
554
|
return null;
|
|
558
555
|
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
ShakaUI.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack));
|
|
562
|
-
registeredElements.current.add("skip_back_button");
|
|
563
|
-
}
|
|
564
|
-
if (!registeredElements.current.has("skip_forward_button")) {
|
|
565
|
-
ShakaUI.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward));
|
|
566
|
-
registeredElements.current.add("skip_forward_button");
|
|
556
|
+
if (!controls || !containerRef.current || !playerRef.current || !videoRef.current) {
|
|
557
|
+
return null;
|
|
567
558
|
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
559
|
+
try {
|
|
560
|
+
const { ui: ShakaUI } = await import("shaka-player/dist/shaka-player.ui");
|
|
561
|
+
let isMobile = false;
|
|
562
|
+
try {
|
|
563
|
+
isMobile = typeof window !== "undefined" && typeof navigator !== "undefined" && (window.innerWidth <= 767 || /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
|
|
564
|
+
} catch (error) {
|
|
565
|
+
isMobile = false;
|
|
572
566
|
}
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
"
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
ui.configure(uiConfig);
|
|
620
|
-
if (isMobile) {
|
|
621
|
-
setTimeout(() => {
|
|
622
|
-
const container = containerRef.current;
|
|
623
|
-
const video = videoRef.current;
|
|
624
|
-
if (container && video) {
|
|
625
|
-
new MobileControlsContainer(container, { getVideo: () => video }, onSkipBack, onSkipForward);
|
|
567
|
+
if (!registeredElements.current.has("skip_back_button")) {
|
|
568
|
+
ShakaUI.Controls.registerElement("skip_back_button", new SkipBackButtonFactory(onSkipBack));
|
|
569
|
+
registeredElements.current.add("skip_back_button");
|
|
570
|
+
}
|
|
571
|
+
if (!registeredElements.current.has("skip_forward_button")) {
|
|
572
|
+
ShakaUI.Controls.registerElement("skip_forward_button", new SkipForwardButtonFactory(onSkipForward));
|
|
573
|
+
registeredElements.current.add("skip_forward_button");
|
|
574
|
+
}
|
|
575
|
+
if (isMobile) {
|
|
576
|
+
if (!registeredElements.current.has("mobile_controls_container")) {
|
|
577
|
+
ShakaUI.Controls.registerElement("mobile_controls_container", new MobileControlsContainerFactory(onSkipBack, onSkipForward));
|
|
578
|
+
registeredElements.current.add("mobile_controls_container");
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
const ui = new ShakaUI.Overlay(playerRef.current, containerRef.current, videoRef.current);
|
|
582
|
+
uiRef.current = ui;
|
|
583
|
+
const controlPanelElements = isMobile ? [
|
|
584
|
+
"mute",
|
|
585
|
+
"time_and_duration",
|
|
586
|
+
"spacer",
|
|
587
|
+
"fullscreen",
|
|
588
|
+
"overflow_menu"
|
|
589
|
+
] : [
|
|
590
|
+
"skip_back_button",
|
|
591
|
+
"play_pause",
|
|
592
|
+
"skip_forward_button",
|
|
593
|
+
"mute",
|
|
594
|
+
"volume",
|
|
595
|
+
"time_and_duration",
|
|
596
|
+
"spacer",
|
|
597
|
+
"fullscreen",
|
|
598
|
+
"overflow_menu"
|
|
599
|
+
];
|
|
600
|
+
const uiConfig = {
|
|
601
|
+
seekBarColors: {
|
|
602
|
+
base: seekbarColors?.base || "rgba(255, 255, 255, 0.3)",
|
|
603
|
+
// Unbuffered track
|
|
604
|
+
buffered: seekbarColors?.buffered || "rgba(255, 255, 255, 0.5)",
|
|
605
|
+
// Buffered but not played
|
|
606
|
+
played: seekbarColors?.played || "#ffffff"
|
|
607
|
+
// Progress/played portion (white)
|
|
608
|
+
},
|
|
609
|
+
controlPanelElements,
|
|
610
|
+
...chromecastConfig?.receiverApplicationId && {
|
|
611
|
+
"castReceiverAppId": chromecastConfig.receiverApplicationId,
|
|
612
|
+
"castAndroidReceiverCompatible": false
|
|
626
613
|
}
|
|
627
|
-
}
|
|
614
|
+
};
|
|
615
|
+
if (chromecastConfig?.receiverApplicationId) {
|
|
616
|
+
uiConfig.castReceiverAppId = chromecastConfig.receiverApplicationId;
|
|
617
|
+
uiConfig.castAndroidReceiverCompatible = false;
|
|
618
|
+
}
|
|
619
|
+
ui.configure(uiConfig);
|
|
620
|
+
if (isMobile) {
|
|
621
|
+
setTimeout(() => {
|
|
622
|
+
const container = containerRef.current;
|
|
623
|
+
const video = videoRef.current;
|
|
624
|
+
if (container && video) {
|
|
625
|
+
new MobileControlsContainer(container, { getVideo: () => video }, onSkipBack, onSkipForward);
|
|
626
|
+
}
|
|
627
|
+
}, 500);
|
|
628
|
+
}
|
|
629
|
+
return ui;
|
|
630
|
+
} catch (error) {
|
|
631
|
+
console.error("Error initializing Shaka UI:", error);
|
|
632
|
+
return null;
|
|
628
633
|
}
|
|
629
|
-
return ui;
|
|
630
634
|
}, [controls, containerRef, playerRef, videoRef, chromecastConfig, seekbarColors, onSkipBack, onSkipForward]);
|
|
631
635
|
const destroyUI = useCallback5(() => {
|
|
632
636
|
if (uiRef.current) {
|
|
@@ -757,6 +761,9 @@ var useLiveIndicator = (containerRef, options = {}) => {
|
|
|
757
761
|
showPulseAnimation = true
|
|
758
762
|
} = options;
|
|
759
763
|
useEffect3(() => {
|
|
764
|
+
if (typeof window === "undefined" || typeof document === "undefined") {
|
|
765
|
+
return;
|
|
766
|
+
}
|
|
760
767
|
if (!containerRef.current || !enabled) {
|
|
761
768
|
return;
|
|
762
769
|
}
|
|
@@ -842,6 +849,213 @@ var useLiveIndicator = (containerRef, options = {}) => {
|
|
|
842
849
|
};
|
|
843
850
|
};
|
|
844
851
|
|
|
852
|
+
// src/hooks/useShakaAbsoluteTime.ts
|
|
853
|
+
import { useEffect as useEffect4, useState as useState3 } from "react";
|
|
854
|
+
function useShakaAbsoluteTime({
|
|
855
|
+
player,
|
|
856
|
+
controls,
|
|
857
|
+
manualStreamStartDate
|
|
858
|
+
}) {
|
|
859
|
+
const [detectedStreamStart, setDetectedStreamStart] = useState3(null);
|
|
860
|
+
const detectStreamStartFromManifest = async () => {
|
|
861
|
+
if (!player) return null;
|
|
862
|
+
try {
|
|
863
|
+
const manifest = player.getManifest();
|
|
864
|
+
if (!manifest) return null;
|
|
865
|
+
const isLive = player.isLive();
|
|
866
|
+
if (!isLive) return null;
|
|
867
|
+
const video = player.getMediaElement();
|
|
868
|
+
if (video && video.seekable && video.seekable.length > 0) {
|
|
869
|
+
const seekableStart = video.seekable.start(0);
|
|
870
|
+
const seekableEnd = video.seekable.end(0);
|
|
871
|
+
const seekableDuration = seekableEnd - seekableStart;
|
|
872
|
+
const now = Date.now() / 1e3;
|
|
873
|
+
const estimatedStreamStart = now - seekableDuration;
|
|
874
|
+
return new Date(estimatedStreamStart * 1e3);
|
|
875
|
+
}
|
|
876
|
+
const stats = player.getStats();
|
|
877
|
+
if (stats && stats.manifestTimeSeconds) {
|
|
878
|
+
return new Date((Date.now() / 1e3 - stats.manifestTimeSeconds) * 1e3);
|
|
879
|
+
}
|
|
880
|
+
try {
|
|
881
|
+
const bufferedTimeRanges = video?.buffered;
|
|
882
|
+
if (bufferedTimeRanges && bufferedTimeRanges.length > 0) {
|
|
883
|
+
const totalBuffered = bufferedTimeRanges.end(bufferedTimeRanges.length - 1);
|
|
884
|
+
const now = Date.now() / 1e3;
|
|
885
|
+
return new Date((now - totalBuffered) * 1e3);
|
|
886
|
+
}
|
|
887
|
+
} catch (error) {
|
|
888
|
+
console.warn("Error extracting buffered timing info:", error);
|
|
889
|
+
}
|
|
890
|
+
console.warn("Could not detect stream start time from manifest");
|
|
891
|
+
return null;
|
|
892
|
+
} catch (error) {
|
|
893
|
+
console.warn("Error detecting stream start time:", error);
|
|
894
|
+
return null;
|
|
895
|
+
}
|
|
896
|
+
};
|
|
897
|
+
useEffect4(() => {
|
|
898
|
+
if (!player || manualStreamStartDate) return;
|
|
899
|
+
const detectStartTime = async () => {
|
|
900
|
+
setTimeout(async () => {
|
|
901
|
+
const detectedStart = await detectStreamStartFromManifest();
|
|
902
|
+
if (detectedStart) {
|
|
903
|
+
setDetectedStreamStart(detectedStart);
|
|
904
|
+
console.log("Detected stream start time:", detectedStart.toISOString());
|
|
905
|
+
}
|
|
906
|
+
}, 1e3);
|
|
907
|
+
};
|
|
908
|
+
const onManifestParsed = () => {
|
|
909
|
+
detectStartTime();
|
|
910
|
+
};
|
|
911
|
+
detectStartTime();
|
|
912
|
+
try {
|
|
913
|
+
player.addEventListener("manifestparsed", onManifestParsed);
|
|
914
|
+
player.addEventListener("streaming", onManifestParsed);
|
|
915
|
+
} catch (error) {
|
|
916
|
+
console.warn("Could not add manifest event listeners:", error);
|
|
917
|
+
}
|
|
918
|
+
return () => {
|
|
919
|
+
try {
|
|
920
|
+
player.removeEventListener("manifestparsed", onManifestParsed);
|
|
921
|
+
player.removeEventListener("streaming", onManifestParsed);
|
|
922
|
+
} catch (error) {
|
|
923
|
+
}
|
|
924
|
+
};
|
|
925
|
+
}, [player, manualStreamStartDate]);
|
|
926
|
+
const effectiveStreamStart = manualStreamStartDate || detectedStreamStart;
|
|
927
|
+
useEffect4(() => {
|
|
928
|
+
if (!player || !controls || !effectiveStreamStart) return;
|
|
929
|
+
const video = player.getMediaElement();
|
|
930
|
+
if (!video) return;
|
|
931
|
+
let originalGetDisplayTime;
|
|
932
|
+
let timeDisplayElement;
|
|
933
|
+
const formatElapsedTime = (elapsedSeconds) => {
|
|
934
|
+
const hours = Math.floor(elapsedSeconds / 3600);
|
|
935
|
+
const minutes = Math.floor(elapsedSeconds % 3600 / 60);
|
|
936
|
+
const seconds = Math.floor(elapsedSeconds % 60);
|
|
937
|
+
if (hours > 0) {
|
|
938
|
+
return [hours, minutes, seconds].map((val) => val.toString().padStart(2, "0")).join(":");
|
|
939
|
+
} else {
|
|
940
|
+
return [minutes, seconds].map((val) => val.toString().padStart(2, "0")).join(":");
|
|
941
|
+
}
|
|
942
|
+
};
|
|
943
|
+
const getElapsedTime = () => {
|
|
944
|
+
const now = /* @__PURE__ */ new Date();
|
|
945
|
+
const elapsedMs = now.getTime() - effectiveStreamStart.getTime();
|
|
946
|
+
return Math.max(0, elapsedMs / 1e3);
|
|
947
|
+
};
|
|
948
|
+
const customGetDisplayTime = function() {
|
|
949
|
+
const elapsedSeconds = getElapsedTime();
|
|
950
|
+
return formatElapsedTime(elapsedSeconds);
|
|
951
|
+
};
|
|
952
|
+
const setupTimeDisplayOverride = () => {
|
|
953
|
+
try {
|
|
954
|
+
const controlsContainer = controls.getControlsContainer();
|
|
955
|
+
if (!controlsContainer) return;
|
|
956
|
+
const timeDisplay = controlsContainer.querySelector(".shaka-current-time");
|
|
957
|
+
if (timeDisplay) {
|
|
958
|
+
timeDisplayElement = timeDisplay;
|
|
959
|
+
if (timeDisplayElement.getDisplayTime) {
|
|
960
|
+
originalGetDisplayTime = timeDisplayElement.getDisplayTime.bind(timeDisplayElement);
|
|
961
|
+
timeDisplayElement.getDisplayTime = customGetDisplayTime.bind(timeDisplayElement);
|
|
962
|
+
} else {
|
|
963
|
+
setupDirectTextUpdate();
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
} catch (error) {
|
|
967
|
+
console.warn("Error setting up time display override:", error);
|
|
968
|
+
setupDirectTextUpdate();
|
|
969
|
+
}
|
|
970
|
+
};
|
|
971
|
+
const setupDirectTextUpdate = () => {
|
|
972
|
+
let animationFrameId;
|
|
973
|
+
let isDestroyed = false;
|
|
974
|
+
const updateTimeDisplay = () => {
|
|
975
|
+
if (isDestroyed) return;
|
|
976
|
+
try {
|
|
977
|
+
const controlsContainer = controls.getControlsContainer();
|
|
978
|
+
if (controlsContainer) {
|
|
979
|
+
const currentTimeLabels = controlsContainer.querySelectorAll(".shaka-current-time");
|
|
980
|
+
const elapsedSeconds = getElapsedTime();
|
|
981
|
+
const timeText = formatElapsedTime(elapsedSeconds);
|
|
982
|
+
currentTimeLabels.forEach((label) => {
|
|
983
|
+
if (label && label.textContent !== timeText) {
|
|
984
|
+
label.textContent = timeText;
|
|
985
|
+
}
|
|
986
|
+
});
|
|
987
|
+
}
|
|
988
|
+
} catch (error) {
|
|
989
|
+
console.warn("Error updating time display:", error);
|
|
990
|
+
}
|
|
991
|
+
animationFrameId = requestAnimationFrame(updateTimeDisplay);
|
|
992
|
+
};
|
|
993
|
+
updateTimeDisplay();
|
|
994
|
+
return () => {
|
|
995
|
+
isDestroyed = true;
|
|
996
|
+
if (animationFrameId) {
|
|
997
|
+
cancelAnimationFrame(animationFrameId);
|
|
998
|
+
}
|
|
999
|
+
};
|
|
1000
|
+
};
|
|
1001
|
+
const setupSeekbarTooltip = () => {
|
|
1002
|
+
try {
|
|
1003
|
+
const controlsContainer = controls.getControlsContainer();
|
|
1004
|
+
if (!controlsContainer) return;
|
|
1005
|
+
const seekBar = controlsContainer.querySelector(".shaka-seek-bar");
|
|
1006
|
+
if (!seekBar) return;
|
|
1007
|
+
const onSeekBarMouseMove = (event) => {
|
|
1008
|
+
const rect = seekBar.getBoundingClientRect();
|
|
1009
|
+
const pos = (event.clientX - rect.left) / rect.width;
|
|
1010
|
+
const totalElapsedSeconds = getElapsedTime();
|
|
1011
|
+
const seekableRange = video.seekable;
|
|
1012
|
+
if (seekableRange.length > 0) {
|
|
1013
|
+
const seekableDuration = seekableRange.end(0) - seekableRange.start(0);
|
|
1014
|
+
const positionInStream = totalElapsedSeconds - seekableDuration * (1 - pos);
|
|
1015
|
+
const timeAtPosition = Math.max(0, positionInStream);
|
|
1016
|
+
seekBar.title = formatElapsedTime(timeAtPosition);
|
|
1017
|
+
} else {
|
|
1018
|
+
seekBar.title = formatElapsedTime(totalElapsedSeconds);
|
|
1019
|
+
}
|
|
1020
|
+
};
|
|
1021
|
+
seekBar.addEventListener("mousemove", onSeekBarMouseMove);
|
|
1022
|
+
return () => {
|
|
1023
|
+
seekBar.removeEventListener("mousemove", onSeekBarMouseMove);
|
|
1024
|
+
};
|
|
1025
|
+
} catch (error) {
|
|
1026
|
+
console.warn("Error setting up seekbar tooltip:", error);
|
|
1027
|
+
return () => {
|
|
1028
|
+
};
|
|
1029
|
+
}
|
|
1030
|
+
};
|
|
1031
|
+
const setupWithDelay = () => {
|
|
1032
|
+
setTimeout(() => {
|
|
1033
|
+
setupTimeDisplayOverride();
|
|
1034
|
+
const cleanupSeekbar = setupSeekbarTooltip();
|
|
1035
|
+
setupWithDelay.cleanupSeekbar = cleanupSeekbar;
|
|
1036
|
+
}, 100);
|
|
1037
|
+
};
|
|
1038
|
+
setupWithDelay();
|
|
1039
|
+
return () => {
|
|
1040
|
+
if (timeDisplayElement && originalGetDisplayTime) {
|
|
1041
|
+
try {
|
|
1042
|
+
timeDisplayElement.getDisplayTime = originalGetDisplayTime;
|
|
1043
|
+
} catch (error) {
|
|
1044
|
+
console.warn("Error restoring original getDisplayTime:", error);
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
if (setupWithDelay.cleanupSeekbar) {
|
|
1048
|
+
setupWithDelay.cleanupSeekbar();
|
|
1049
|
+
}
|
|
1050
|
+
};
|
|
1051
|
+
}, [player, controls, effectiveStreamStart]);
|
|
1052
|
+
return {
|
|
1053
|
+
detectedStreamStart,
|
|
1054
|
+
effectiveStreamStart,
|
|
1055
|
+
isUsingManualDate: !!manualStreamStartDate
|
|
1056
|
+
};
|
|
1057
|
+
}
|
|
1058
|
+
|
|
845
1059
|
// src/components/Loading.tsx
|
|
846
1060
|
import { twMerge } from "tailwind-merge";
|
|
847
1061
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -854,25 +1068,7 @@ var Loading = ({ className }) => /* @__PURE__ */ jsxs(
|
|
|
854
1068
|
),
|
|
855
1069
|
role: "status",
|
|
856
1070
|
children: [
|
|
857
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
858
|
-
"svg",
|
|
859
|
-
{
|
|
860
|
-
className: "shaka-spinner-svg animate-spin h-12 w-12",
|
|
861
|
-
viewBox: "0 0 64 64",
|
|
862
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
863
|
-
children: /* @__PURE__ */ jsx(
|
|
864
|
-
"circle",
|
|
865
|
-
{
|
|
866
|
-
className: "shaka-spinner-path",
|
|
867
|
-
cx: "32",
|
|
868
|
-
cy: "32",
|
|
869
|
-
r: "28",
|
|
870
|
-
strokeWidth: "4",
|
|
871
|
-
strokeLinecap: "round"
|
|
872
|
-
}
|
|
873
|
-
)
|
|
874
|
-
}
|
|
875
|
-
) }),
|
|
1071
|
+
/* @__PURE__ */ jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-white" }),
|
|
876
1072
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading..." })
|
|
877
1073
|
]
|
|
878
1074
|
}
|
|
@@ -953,7 +1149,7 @@ var LiveBadge = ({
|
|
|
953
1149
|
};
|
|
954
1150
|
|
|
955
1151
|
// src/styles.css
|
|
956
|
-
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@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');
|
|
1152
|
+
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 --container-4xl: 56rem;\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-8 {\n height: calc(var(--spacing) * 8);\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-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-full {\n width: 100%;\n }\n .max-w-4xl {\n max-width: var(--container-4xl);\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 .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-white {\n border-color: var(--color-white);\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 .shaka-controls-container {\n z-index: 90 !important;\n height: 100px !important;\n bottom: 0 !important;\n top: unset !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@property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; }\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-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-border-style: solid;\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-duration: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n }\n }\n}\n');
|
|
957
1153
|
|
|
958
1154
|
// src/Player.tsx
|
|
959
1155
|
import { twMerge as twMerge2 } from "tailwind-merge";
|
|
@@ -978,6 +1174,7 @@ var Player = forwardRef(
|
|
|
978
1174
|
seekbarConfig,
|
|
979
1175
|
events,
|
|
980
1176
|
containerClassName,
|
|
1177
|
+
streamStartDate,
|
|
981
1178
|
...props
|
|
982
1179
|
}, ref) => {
|
|
983
1180
|
const videoRef = useRef8(null);
|
|
@@ -1038,6 +1235,11 @@ var Player = forwardRef(
|
|
|
1038
1235
|
indicatorSize: 8,
|
|
1039
1236
|
showPulseAnimation: true
|
|
1040
1237
|
});
|
|
1238
|
+
const { detectedStreamStart, effectiveStreamStart } = useShakaAbsoluteTime({
|
|
1239
|
+
player: playerRef.current,
|
|
1240
|
+
controls: uiRef.current,
|
|
1241
|
+
manualStreamStartDate: streamStartDate
|
|
1242
|
+
});
|
|
1041
1243
|
const initializeAds = () => {
|
|
1042
1244
|
if (!imaConfig || !playerRef.current || !videoRef.current) return;
|
|
1043
1245
|
const adManager = playerRef.current.getAdManager();
|
|
@@ -1078,7 +1280,7 @@ var Player = forwardRef(
|
|
|
1078
1280
|
console.warn("Chromecast initialization failed:", error);
|
|
1079
1281
|
}
|
|
1080
1282
|
};
|
|
1081
|
-
|
|
1283
|
+
useEffect5(() => {
|
|
1082
1284
|
const video = videoRef.current;
|
|
1083
1285
|
if (!video) return;
|
|
1084
1286
|
const initialize = async () => {
|
|
@@ -1118,7 +1320,7 @@ var Player = forwardRef(
|
|
|
1118
1320
|
handleMuxError,
|
|
1119
1321
|
playerRef
|
|
1120
1322
|
]);
|
|
1121
|
-
|
|
1323
|
+
useEffect5(() => {
|
|
1122
1324
|
const video = videoRef.current;
|
|
1123
1325
|
if (!video) return;
|
|
1124
1326
|
video.autoplay = autoPlay;
|
|
@@ -1142,7 +1344,7 @@ var Player = forwardRef(
|
|
|
1142
1344
|
getMuxMonitor: () => null
|
|
1143
1345
|
}), [getAvailableQualities, setQuality, skipBack, skipForward, updateMuxData]);
|
|
1144
1346
|
const isResponsive = !width && !height;
|
|
1145
|
-
const containerClasses = twMerge2(containerClassName, "motto-video-container
|
|
1347
|
+
const containerClasses = twMerge2(containerClassName, "motto-video-container");
|
|
1146
1348
|
const containerStyle = isResponsive ? {
|
|
1147
1349
|
aspectRatio: aspectRatio.toString()
|
|
1148
1350
|
} : { width, height };
|
|
@@ -1165,6 +1367,7 @@ var Player = forwardRef(
|
|
|
1165
1367
|
width: isResponsive ? void 0 : width,
|
|
1166
1368
|
height: isResponsive ? void 0 : height,
|
|
1167
1369
|
style: videoStyle,
|
|
1370
|
+
poster,
|
|
1168
1371
|
controls: false,
|
|
1169
1372
|
...props
|
|
1170
1373
|
}
|
|
@@ -1184,8 +1387,40 @@ var Player = forwardRef(
|
|
|
1184
1387
|
);
|
|
1185
1388
|
Player.displayName = "Player";
|
|
1186
1389
|
|
|
1390
|
+
// src/ClientOnlyPlayer.tsx
|
|
1391
|
+
import { forwardRef as forwardRef2, useEffect as useEffect6, useState as useState4 } from "react";
|
|
1392
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
1393
|
+
var ClientOnlyPlayer = forwardRef2(
|
|
1394
|
+
(props, ref) => {
|
|
1395
|
+
const [isClient, setIsClient] = useState4(false);
|
|
1396
|
+
useEffect6(() => {
|
|
1397
|
+
setIsClient(true);
|
|
1398
|
+
}, []);
|
|
1399
|
+
if (!isClient) {
|
|
1400
|
+
return /* @__PURE__ */ jsx6(
|
|
1401
|
+
"div",
|
|
1402
|
+
{
|
|
1403
|
+
className: props.containerClassName,
|
|
1404
|
+
style: {
|
|
1405
|
+
width: props.width,
|
|
1406
|
+
height: props.height,
|
|
1407
|
+
aspectRatio: props.aspectRatio ? props.aspectRatio.toString() : "16/9",
|
|
1408
|
+
backgroundColor: "#000",
|
|
1409
|
+
display: "flex",
|
|
1410
|
+
alignItems: "center",
|
|
1411
|
+
justifyContent: "center"
|
|
1412
|
+
},
|
|
1413
|
+
children: /* @__PURE__ */ jsx6("div", { style: { color: "white" }, children: "Loading player..." })
|
|
1414
|
+
}
|
|
1415
|
+
);
|
|
1416
|
+
}
|
|
1417
|
+
return /* @__PURE__ */ jsx6(Player, { ...props, ref });
|
|
1418
|
+
}
|
|
1419
|
+
);
|
|
1420
|
+
ClientOnlyPlayer.displayName = "ClientOnlyPlayer";
|
|
1421
|
+
|
|
1187
1422
|
// src/Video.tsx
|
|
1188
|
-
import { useEffect as
|
|
1423
|
+
import { useEffect as useEffect8 } from "react";
|
|
1189
1424
|
import { twMerge as twMerge3 } from "tailwind-merge";
|
|
1190
1425
|
import { useQuery } from "@tanstack/react-query";
|
|
1191
1426
|
|
|
@@ -1233,6 +1468,11 @@ async function fetchVideosList(publicKey, videoIds, mottoToken, skip = 0, limit
|
|
|
1233
1468
|
}
|
|
1234
1469
|
|
|
1235
1470
|
// src/api/event.ts
|
|
1471
|
+
var EventsSortDirection = /* @__PURE__ */ ((EventsSortDirection3) => {
|
|
1472
|
+
EventsSortDirection3["ASC"] = "asc";
|
|
1473
|
+
EventsSortDirection3["DESC"] = "desc";
|
|
1474
|
+
return EventsSortDirection3;
|
|
1475
|
+
})(EventsSortDirection || {});
|
|
1236
1476
|
async function fetchEventData(publicKey, eventId, unused, filter, order, locale) {
|
|
1237
1477
|
const endpoint = "https://cda.mottostreaming.com/motto.cda.cms.event.v1.EventService/GetEvent";
|
|
1238
1478
|
const url = new URL(endpoint);
|
|
@@ -1258,6 +1498,11 @@ async function fetchEventData(publicKey, eventId, unused, filter, order, locale)
|
|
|
1258
1498
|
}
|
|
1259
1499
|
|
|
1260
1500
|
// src/api/creative-work.ts
|
|
1501
|
+
var CreativeWorksSortDirection = /* @__PURE__ */ ((CreativeWorksSortDirection3) => {
|
|
1502
|
+
CreativeWorksSortDirection3["ASC"] = "asc";
|
|
1503
|
+
CreativeWorksSortDirection3["DESC"] = "desc";
|
|
1504
|
+
return CreativeWorksSortDirection3;
|
|
1505
|
+
})(CreativeWorksSortDirection || {});
|
|
1261
1506
|
async function fetchCreativeWorkData(publicKey, creativeWorkId, unused, filter, order, locale) {
|
|
1262
1507
|
const endpoint = "https://cda.mottostreaming.com/motto.cda.cms.creative_work.v1.CreativeWorkService/GetCreativeWork";
|
|
1263
1508
|
const url = new URL(endpoint);
|
|
@@ -1326,7 +1571,7 @@ var getErrorType = (error, video) => {
|
|
|
1326
1571
|
};
|
|
1327
1572
|
|
|
1328
1573
|
// src/messages/useMessages.tsx
|
|
1329
|
-
import { useState as
|
|
1574
|
+
import { useState as useState5, useEffect as useEffect7 } from "react";
|
|
1330
1575
|
|
|
1331
1576
|
// src/messages/en.json
|
|
1332
1577
|
var en_default = {
|
|
@@ -1624,15 +1869,21 @@ var availableLanguages = {
|
|
|
1624
1869
|
fa: fa_default
|
|
1625
1870
|
};
|
|
1626
1871
|
var getBrowserLanguage = () => {
|
|
1627
|
-
|
|
1628
|
-
|
|
1872
|
+
if (typeof window === "undefined" || typeof navigator === "undefined") {
|
|
1873
|
+
return "en";
|
|
1874
|
+
}
|
|
1875
|
+
try {
|
|
1876
|
+
const language = navigator.language.split("-")[0];
|
|
1877
|
+
return availableLanguages[language] ? language : "en";
|
|
1878
|
+
} catch (error) {
|
|
1879
|
+
return "en";
|
|
1880
|
+
}
|
|
1629
1881
|
};
|
|
1630
1882
|
var useMessages = (locale) => {
|
|
1631
|
-
const [language, setLanguage] =
|
|
1632
|
-
const [translations, setTranslations] =
|
|
1633
|
-
|
|
1883
|
+
const [language, setLanguage] = useState5("en");
|
|
1884
|
+
const [translations, setTranslations] = useState5(availableLanguages.en);
|
|
1885
|
+
useEffect7(() => {
|
|
1634
1886
|
const lang = !!availableLanguages?.[locale] ? locale : getBrowserLanguage();
|
|
1635
|
-
;
|
|
1636
1887
|
setLanguage(lang);
|
|
1637
1888
|
setTranslations(availableLanguages[lang]);
|
|
1638
1889
|
}, [locale]);
|
|
@@ -1656,7 +1907,7 @@ var useMessages = (locale) => {
|
|
|
1656
1907
|
var useMessages_default = useMessages;
|
|
1657
1908
|
|
|
1658
1909
|
// src/Video.tsx
|
|
1659
|
-
import { jsx as
|
|
1910
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1660
1911
|
var Video = ({
|
|
1661
1912
|
videoId,
|
|
1662
1913
|
publicKey,
|
|
@@ -1692,13 +1943,13 @@ var Video = ({
|
|
|
1692
1943
|
const { t } = useMessages_default(locale);
|
|
1693
1944
|
const activePlaylist = findHLSPlaylist(video);
|
|
1694
1945
|
const hlsUrl = activePlaylist?.url;
|
|
1695
|
-
|
|
1946
|
+
useEffect8(() => {
|
|
1696
1947
|
if (events?.onVideoData && video) {
|
|
1697
1948
|
events.onVideoData(video);
|
|
1698
1949
|
}
|
|
1699
1950
|
}, [video, events]);
|
|
1700
1951
|
if (isLoading || !providedVideoData && !video) {
|
|
1701
|
-
return /* @__PURE__ */
|
|
1952
|
+
return /* @__PURE__ */ jsx7("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx7("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ jsx7(Loading, {}) }) });
|
|
1702
1953
|
}
|
|
1703
1954
|
if (!isLoading && video && !hlsUrl && events?.onEmptyPlaylists) {
|
|
1704
1955
|
events.onEmptyPlaylists();
|
|
@@ -1711,8 +1962,8 @@ var Video = ({
|
|
|
1711
1962
|
}
|
|
1712
1963
|
const title = t(errorKey) || t("DEFAULT_ERROR");
|
|
1713
1964
|
const description = t(`${errorKey}_DESCRIPTION`) || t("DEFAULT_ERROR_DESCRIPTION");
|
|
1714
|
-
return /* @__PURE__ */
|
|
1715
|
-
/* @__PURE__ */
|
|
1965
|
+
return /* @__PURE__ */ jsx7("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs5("div", { className: "relative w-full h-full", children: [
|
|
1966
|
+
/* @__PURE__ */ jsx7(
|
|
1716
1967
|
ErrorScreen,
|
|
1717
1968
|
{
|
|
1718
1969
|
title,
|
|
@@ -1723,13 +1974,13 @@ var Video = ({
|
|
|
1723
1974
|
] }) });
|
|
1724
1975
|
}
|
|
1725
1976
|
if (!hlsUrl) {
|
|
1726
|
-
return /* @__PURE__ */
|
|
1727
|
-
/* @__PURE__ */
|
|
1977
|
+
return /* @__PURE__ */ jsx7("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs5("div", { className: "relative w-full h-full bg-[#151515]", children: [
|
|
1978
|
+
/* @__PURE__ */ jsx7(Title, { title: video?.name || "" }),
|
|
1728
1979
|
children
|
|
1729
1980
|
] }) });
|
|
1730
1981
|
}
|
|
1731
1982
|
console.log("hlsUrl", hlsUrl);
|
|
1732
|
-
return /* @__PURE__ */
|
|
1983
|
+
return /* @__PURE__ */ jsx7("div", { className: twMerge3("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx7("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx7(
|
|
1733
1984
|
Player,
|
|
1734
1985
|
{
|
|
1735
1986
|
...props,
|
|
@@ -1743,10 +1994,10 @@ var Video = ({
|
|
|
1743
1994
|
};
|
|
1744
1995
|
|
|
1745
1996
|
// src/Event.tsx
|
|
1746
|
-
import { useCallback as useCallback7, useEffect as
|
|
1997
|
+
import { useCallback as useCallback7, useEffect as useEffect9, useState as useState6 } from "react";
|
|
1747
1998
|
import { twMerge as twMerge4 } from "tailwind-merge";
|
|
1748
1999
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
1749
|
-
import { Fragment, jsx as
|
|
2000
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1750
2001
|
var Event = ({
|
|
1751
2002
|
publicKey,
|
|
1752
2003
|
eventId,
|
|
@@ -1776,8 +2027,8 @@ var Event = ({
|
|
|
1776
2027
|
retry: queryOptions.retry ?? 3,
|
|
1777
2028
|
retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
|
|
1778
2029
|
});
|
|
1779
|
-
const [activePlaylist, setActivePlaylist] =
|
|
1780
|
-
const [activeVideoId, setActiveVideoId] =
|
|
2030
|
+
const [activePlaylist, setActivePlaylist] = useState6();
|
|
2031
|
+
const [activeVideoId, setActiveVideoId] = useState6();
|
|
1781
2032
|
const videoIds = eventData?.videoIds ?? [];
|
|
1782
2033
|
const {
|
|
1783
2034
|
data: videosData,
|
|
@@ -1793,8 +2044,8 @@ var Event = ({
|
|
|
1793
2044
|
retry: queryOptions.retry ?? 3,
|
|
1794
2045
|
retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
|
|
1795
2046
|
});
|
|
1796
|
-
const [loadingApisState, setLoadingApisState] =
|
|
1797
|
-
|
|
2047
|
+
const [loadingApisState, setLoadingApisState] = useState6(true);
|
|
2048
|
+
useEffect9(() => {
|
|
1798
2049
|
if (videosData !== void 0) {
|
|
1799
2050
|
setLoadingApisState(false);
|
|
1800
2051
|
const videosWithPlaylists = videosData.filter(
|
|
@@ -1826,12 +2077,12 @@ var Event = ({
|
|
|
1826
2077
|
}
|
|
1827
2078
|
}, [videosData, eventData]);
|
|
1828
2079
|
const { t } = useMessages_default(locale);
|
|
1829
|
-
|
|
2080
|
+
useEffect9(() => {
|
|
1830
2081
|
if (events?.onEventData && eventData) {
|
|
1831
2082
|
events.onEventData(eventData);
|
|
1832
2083
|
}
|
|
1833
2084
|
}, [eventData, events]);
|
|
1834
|
-
|
|
2085
|
+
useEffect9(() => {
|
|
1835
2086
|
if (events?.onVideoData && activeVideoId && videosData) {
|
|
1836
2087
|
const activeVideo = videosData.find((video) => video.id === activeVideoId);
|
|
1837
2088
|
if (activeVideo) {
|
|
@@ -1839,10 +2090,10 @@ var Event = ({
|
|
|
1839
2090
|
}
|
|
1840
2091
|
}
|
|
1841
2092
|
}, [activeVideoId, videosData, events]);
|
|
1842
|
-
const [error, setError] =
|
|
1843
|
-
const [loadingPlaylist, setLoadingPlaylist] =
|
|
2093
|
+
const [error, setError] = useState6(null);
|
|
2094
|
+
const [loadingPlaylist, setLoadingPlaylist] = useState6(true);
|
|
1844
2095
|
const videosDataError = videosData?.some((video) => !!video.error);
|
|
1845
|
-
|
|
2096
|
+
useEffect9(() => {
|
|
1846
2097
|
if (eventError || videosError || videosDataError) {
|
|
1847
2098
|
const errorObj = eventError || videosError || videosData?.find((video) => !!video.error)?.error && new Error(videosData?.find((video) => !!video.error)?.error) || new Error("default");
|
|
1848
2099
|
setError(errorObj);
|
|
@@ -1853,7 +2104,7 @@ var Event = ({
|
|
|
1853
2104
|
setError(null);
|
|
1854
2105
|
}
|
|
1855
2106
|
}, [eventError, videosError, videosDataError, videosData, events]);
|
|
1856
|
-
|
|
2107
|
+
useEffect9(() => {
|
|
1857
2108
|
const eventLoadedWithNoVideos = !isEventLoading && eventData && eventData.videoIds && (!eventData.videoIds || eventData?.videoIds?.length === 0) && !loadingApisState;
|
|
1858
2109
|
const allApisLoadedWithPotentialVideos = !isEventLoading && !videosIsLoading && eventData && !loadingApisState;
|
|
1859
2110
|
if (eventLoadedWithNoVideos || allApisLoadedWithPotentialVideos) {
|
|
@@ -1863,7 +2114,7 @@ var Event = ({
|
|
|
1863
2114
|
if (error) {
|
|
1864
2115
|
const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
|
|
1865
2116
|
const description = t(`${error.message}_DESCRIPTION`)?.length ? t(`${error.message}_DESCRIPTION`) : t("DEFAULT_ERROR_DESCRIPTION");
|
|
1866
|
-
return /* @__PURE__ */
|
|
2117
|
+
return /* @__PURE__ */ jsx8("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx8("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx8(
|
|
1867
2118
|
ErrorScreen,
|
|
1868
2119
|
{
|
|
1869
2120
|
title,
|
|
@@ -1875,12 +2126,12 @@ var Event = ({
|
|
|
1875
2126
|
events.onEmptyPlaylists();
|
|
1876
2127
|
}
|
|
1877
2128
|
if (loadingPlaylist) {
|
|
1878
|
-
return /* @__PURE__ */
|
|
2129
|
+
return /* @__PURE__ */ jsx8("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx8("div", { className: "relative w-full h-full bg-[#151515]", children: /* @__PURE__ */ jsx8(Loading, {}) }) });
|
|
1879
2130
|
}
|
|
1880
2131
|
if (activePlaylist && activeVideoId && videosData) {
|
|
1881
2132
|
const activeVideo = videosData.find((video) => video.id === activeVideoId);
|
|
1882
|
-
return /* @__PURE__ */
|
|
1883
|
-
/* @__PURE__ */
|
|
2133
|
+
return /* @__PURE__ */ jsx8("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs6("div", { className: "relative w-full h-full", children: [
|
|
2134
|
+
/* @__PURE__ */ jsx8(
|
|
1884
2135
|
Player,
|
|
1885
2136
|
{
|
|
1886
2137
|
...props,
|
|
@@ -1890,7 +2141,7 @@ var Event = ({
|
|
|
1890
2141
|
containerClassName: "w-full h-full"
|
|
1891
2142
|
}
|
|
1892
2143
|
),
|
|
1893
|
-
!hideTitle && eventData && /* @__PURE__ */
|
|
2144
|
+
!hideTitle && eventData && /* @__PURE__ */ jsx8(
|
|
1894
2145
|
TitleAndDescription,
|
|
1895
2146
|
{
|
|
1896
2147
|
title: eventData.title,
|
|
@@ -1902,7 +2153,7 @@ var Event = ({
|
|
|
1902
2153
|
] }) });
|
|
1903
2154
|
}
|
|
1904
2155
|
if (eventData) {
|
|
1905
|
-
return /* @__PURE__ */
|
|
2156
|
+
return /* @__PURE__ */ jsx8("div", { className: twMerge4("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx8("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx8(
|
|
1906
2157
|
PreEvent,
|
|
1907
2158
|
{
|
|
1908
2159
|
event: eventData,
|
|
@@ -1924,12 +2175,12 @@ function PreEvent({
|
|
|
1924
2175
|
}) {
|
|
1925
2176
|
const date = new Date(event.startTime);
|
|
1926
2177
|
const now = /* @__PURE__ */ new Date();
|
|
1927
|
-
const [remainingTime, setRemainingTime] =
|
|
2178
|
+
const [remainingTime, setRemainingTime] = useState6(
|
|
1928
2179
|
date.getTime() - now.getTime()
|
|
1929
2180
|
);
|
|
1930
2181
|
const shouldBeStarted = remainingTime < 0;
|
|
1931
2182
|
const { t } = useMessages_default(locale);
|
|
1932
|
-
|
|
2183
|
+
useEffect9(() => {
|
|
1933
2184
|
const interval = setInterval(() => {
|
|
1934
2185
|
if (remainingTime < 0) {
|
|
1935
2186
|
clearInterval(interval);
|
|
@@ -1941,7 +2192,7 @@ function PreEvent({
|
|
|
1941
2192
|
}, [date, remainingTime]);
|
|
1942
2193
|
const renderCountdown = useCallback7(() => {
|
|
1943
2194
|
if (shouldBeStarted) {
|
|
1944
|
-
return /* @__PURE__ */
|
|
2195
|
+
return /* @__PURE__ */ jsx8("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
|
|
1945
2196
|
}
|
|
1946
2197
|
const seconds = Math.floor(remainingTime / 1e3) % 60;
|
|
1947
2198
|
const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
|
|
@@ -1949,7 +2200,7 @@ function PreEvent({
|
|
|
1949
2200
|
const days = Math.floor(remainingTime / 1e3 / 60 / 60 / 24);
|
|
1950
2201
|
return /* @__PURE__ */ jsxs6("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
|
|
1951
2202
|
/* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
1952
|
-
/* @__PURE__ */
|
|
2203
|
+
/* @__PURE__ */ jsx8("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx8(
|
|
1953
2204
|
"span",
|
|
1954
2205
|
{
|
|
1955
2206
|
style: { "--value": days },
|
|
@@ -1958,10 +2209,10 @@ function PreEvent({
|
|
|
1958
2209
|
children: days?.toString()?.padStart(2, "0")
|
|
1959
2210
|
}
|
|
1960
2211
|
) }),
|
|
1961
|
-
/* @__PURE__ */
|
|
2212
|
+
/* @__PURE__ */ jsx8("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
|
|
1962
2213
|
] }),
|
|
1963
2214
|
/* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
1964
|
-
/* @__PURE__ */
|
|
2215
|
+
/* @__PURE__ */ jsx8("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx8(
|
|
1965
2216
|
"span",
|
|
1966
2217
|
{
|
|
1967
2218
|
style: { "--value": hours },
|
|
@@ -1970,10 +2221,10 @@ function PreEvent({
|
|
|
1970
2221
|
children: hours?.toString()?.padStart(2, "0")
|
|
1971
2222
|
}
|
|
1972
2223
|
) }),
|
|
1973
|
-
/* @__PURE__ */
|
|
2224
|
+
/* @__PURE__ */ jsx8("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
|
|
1974
2225
|
] }),
|
|
1975
2226
|
/* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
1976
|
-
/* @__PURE__ */
|
|
2227
|
+
/* @__PURE__ */ jsx8("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx8(
|
|
1977
2228
|
"span",
|
|
1978
2229
|
{
|
|
1979
2230
|
style: { "--value": minutes },
|
|
@@ -1982,10 +2233,10 @@ function PreEvent({
|
|
|
1982
2233
|
children: minutes?.toString()?.padStart(2, "0")
|
|
1983
2234
|
}
|
|
1984
2235
|
) }),
|
|
1985
|
-
/* @__PURE__ */
|
|
2236
|
+
/* @__PURE__ */ jsx8("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
|
|
1986
2237
|
] }),
|
|
1987
2238
|
/* @__PURE__ */ jsxs6("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
1988
|
-
/* @__PURE__ */
|
|
2239
|
+
/* @__PURE__ */ jsx8("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx8(
|
|
1989
2240
|
"span",
|
|
1990
2241
|
{
|
|
1991
2242
|
style: { "--value": seconds },
|
|
@@ -1994,12 +2245,12 @@ function PreEvent({
|
|
|
1994
2245
|
children: seconds?.toString()?.padStart(2, "0")
|
|
1995
2246
|
}
|
|
1996
2247
|
) }),
|
|
1997
|
-
/* @__PURE__ */
|
|
2248
|
+
/* @__PURE__ */ jsx8("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
|
|
1998
2249
|
] })
|
|
1999
2250
|
] });
|
|
2000
2251
|
}, [remainingTime, shouldBeStarted, t]);
|
|
2001
|
-
return /* @__PURE__ */
|
|
2002
|
-
/* @__PURE__ */
|
|
2252
|
+
return /* @__PURE__ */ jsx8(Fragment, { children: event?.posterUrl ? /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
2253
|
+
/* @__PURE__ */ jsxs6(
|
|
2003
2254
|
"div",
|
|
2004
2255
|
{
|
|
2005
2256
|
className: "relative overflow-hidden bg-base-200 aspect-video text-base-content w-full h-full flex justify-center items-center flex-col bg-no-repeat bg-cover md:rounded-2xl",
|
|
@@ -2008,10 +2259,13 @@ function PreEvent({
|
|
|
2008
2259
|
backgroundRepeat: "no-repeat",
|
|
2009
2260
|
backgroundSize: "cover"
|
|
2010
2261
|
},
|
|
2011
|
-
children:
|
|
2262
|
+
children: [
|
|
2263
|
+
/* @__PURE__ */ jsx8("div", { className: "absolute inset-0 bg-base-200" }),
|
|
2264
|
+
/* @__PURE__ */ jsx8("div", { className: "relative z-10", children: renderCountdown() })
|
|
2265
|
+
]
|
|
2012
2266
|
}
|
|
2013
2267
|
),
|
|
2014
|
-
!hideTitle && /* @__PURE__ */
|
|
2268
|
+
!hideTitle && /* @__PURE__ */ jsx8(
|
|
2015
2269
|
TitleAndDescription,
|
|
2016
2270
|
{
|
|
2017
2271
|
title: event.title,
|
|
@@ -2021,17 +2275,20 @@ function PreEvent({
|
|
|
2021
2275
|
}
|
|
2022
2276
|
)
|
|
2023
2277
|
] }) : /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
2024
|
-
/* @__PURE__ */
|
|
2278
|
+
/* @__PURE__ */ jsxs6(
|
|
2025
2279
|
"div",
|
|
2026
2280
|
{
|
|
2027
2281
|
className: "relative overflow-hidden md:rounded-2xl bg-base-200 aspect-video text-base-content flex flex-col justify-center items-center w-full h-full bg-cover bg-center bg-no-repeat",
|
|
2028
2282
|
style: {
|
|
2029
2283
|
backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
|
|
2030
2284
|
},
|
|
2031
|
-
children:
|
|
2285
|
+
children: [
|
|
2286
|
+
backgroundImageUrl && /* @__PURE__ */ jsx8("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
|
|
2287
|
+
/* @__PURE__ */ jsx8("div", { className: "relative z-10", children: renderCountdown() })
|
|
2288
|
+
]
|
|
2032
2289
|
}
|
|
2033
2290
|
),
|
|
2034
|
-
!hideTitle && /* @__PURE__ */
|
|
2291
|
+
!hideTitle && /* @__PURE__ */ jsx8(
|
|
2035
2292
|
TitleAndDescription,
|
|
2036
2293
|
{
|
|
2037
2294
|
title: event.title,
|
|
@@ -2050,7 +2307,7 @@ var TitleAndDescription = ({
|
|
|
2050
2307
|
className
|
|
2051
2308
|
}) => {
|
|
2052
2309
|
return /* @__PURE__ */ jsxs6("div", { className: twMerge4("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
|
|
2053
|
-
/* @__PURE__ */
|
|
2310
|
+
/* @__PURE__ */ jsx8("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
|
|
2054
2311
|
startTime ? /* @__PURE__ */ jsxs6("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
|
|
2055
2312
|
new Date(startTime || "").toLocaleDateString(locale || "default", {
|
|
2056
2313
|
month: "long",
|
|
@@ -2064,15 +2321,15 @@ var TitleAndDescription = ({
|
|
|
2064
2321
|
minute: "2-digit"
|
|
2065
2322
|
})
|
|
2066
2323
|
] }) : null,
|
|
2067
|
-
description && /* @__PURE__ */
|
|
2324
|
+
description && /* @__PURE__ */ jsx8("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
|
|
2068
2325
|
] });
|
|
2069
2326
|
};
|
|
2070
2327
|
|
|
2071
2328
|
// src/CreativeWork.tsx
|
|
2072
|
-
import { useEffect as
|
|
2329
|
+
import { useEffect as useEffect10, useState as useState7 } from "react";
|
|
2073
2330
|
import { twMerge as twMerge5 } from "tailwind-merge";
|
|
2074
2331
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
2075
|
-
import { Fragment as Fragment2, jsx as
|
|
2332
|
+
import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2076
2333
|
var CreativeWork = ({
|
|
2077
2334
|
publicKey,
|
|
2078
2335
|
creativeWorkId,
|
|
@@ -2102,9 +2359,9 @@ var CreativeWork = ({
|
|
|
2102
2359
|
retry: queryOptions.retry ?? 3,
|
|
2103
2360
|
retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
|
|
2104
2361
|
});
|
|
2105
|
-
const [activePlaylist, setActivePlaylist] =
|
|
2106
|
-
const [activeVideoId, setActiveVideoId] =
|
|
2107
|
-
const [showCountDown, setShowCountDown] =
|
|
2362
|
+
const [activePlaylist, setActivePlaylist] = useState7();
|
|
2363
|
+
const [activeVideoId, setActiveVideoId] = useState7();
|
|
2364
|
+
const [showCountDown, setShowCountDown] = useState7(false);
|
|
2108
2365
|
const videoIds = creativeWorkData?.videoIds ?? [];
|
|
2109
2366
|
const {
|
|
2110
2367
|
data: videosData,
|
|
@@ -2120,8 +2377,8 @@ var CreativeWork = ({
|
|
|
2120
2377
|
retry: queryOptions.retry ?? 3,
|
|
2121
2378
|
retryDelay: queryOptions.retryDelay ?? ((attemptIndex) => Math.min(1e3 * 2 ** attemptIndex, 3e4))
|
|
2122
2379
|
});
|
|
2123
|
-
const [loadingApisState, setLoadingApisState] =
|
|
2124
|
-
|
|
2380
|
+
const [loadingApisState, setLoadingApisState] = useState7(true);
|
|
2381
|
+
useEffect10(() => {
|
|
2125
2382
|
if (videosData !== void 0) {
|
|
2126
2383
|
setLoadingApisState(false);
|
|
2127
2384
|
const videosWithPlaylists = videosData.filter(
|
|
@@ -2153,7 +2410,7 @@ var CreativeWork = ({
|
|
|
2153
2410
|
}
|
|
2154
2411
|
}, [videosData, creativeWorkData]);
|
|
2155
2412
|
const { t } = useMessages_default(locale);
|
|
2156
|
-
|
|
2413
|
+
useEffect10(() => {
|
|
2157
2414
|
if (events?.onCreativeWorkData && creativeWorkData) {
|
|
2158
2415
|
events.onCreativeWorkData(creativeWorkData);
|
|
2159
2416
|
}
|
|
@@ -2161,7 +2418,7 @@ var CreativeWork = ({
|
|
|
2161
2418
|
setShowCountDown(true);
|
|
2162
2419
|
}
|
|
2163
2420
|
}, [creativeWorkData, events]);
|
|
2164
|
-
|
|
2421
|
+
useEffect10(() => {
|
|
2165
2422
|
if (events?.onVideoData && activeVideoId && videosData) {
|
|
2166
2423
|
const activeVideo = videosData.find((video) => video.id === activeVideoId);
|
|
2167
2424
|
if (activeVideo) {
|
|
@@ -2169,9 +2426,9 @@ var CreativeWork = ({
|
|
|
2169
2426
|
}
|
|
2170
2427
|
}
|
|
2171
2428
|
}, [activeVideoId, videosData, events]);
|
|
2172
|
-
const [error, setError] =
|
|
2429
|
+
const [error, setError] = useState7(null);
|
|
2173
2430
|
const videosDataError = videosData?.some((video) => !!video.error);
|
|
2174
|
-
|
|
2431
|
+
useEffect10(() => {
|
|
2175
2432
|
if (creativeWorkError || videosError || videosDataError) {
|
|
2176
2433
|
const errorObj = creativeWorkError || videosError || videosData?.find((video) => !!video.error)?.error && new Error(videosData?.find((video) => !!video.error)?.error) || new Error("default");
|
|
2177
2434
|
setError(errorObj);
|
|
@@ -2185,7 +2442,7 @@ var CreativeWork = ({
|
|
|
2185
2442
|
if (error) {
|
|
2186
2443
|
const title = t(error.message)?.length ? t(error.message) : t("DEFAULT_ERROR");
|
|
2187
2444
|
const description = t(`${error.message}_DESCRIPTION`)?.length ? t(`${error.message}_DESCRIPTION`) : t("DEFAULT_ERROR_DESCRIPTION");
|
|
2188
|
-
return /* @__PURE__ */
|
|
2445
|
+
return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx9(
|
|
2189
2446
|
ErrorScreen,
|
|
2190
2447
|
{
|
|
2191
2448
|
title,
|
|
@@ -2193,8 +2450,8 @@ var CreativeWork = ({
|
|
|
2193
2450
|
}
|
|
2194
2451
|
) }) });
|
|
2195
2452
|
}
|
|
2196
|
-
const [loadingPlaylist, setLoadingPlaylist] =
|
|
2197
|
-
|
|
2453
|
+
const [loadingPlaylist, setLoadingPlaylist] = useState7(true);
|
|
2454
|
+
useEffect10(() => {
|
|
2198
2455
|
const creativeWorkLoadedWithNoVideos = !isCreativeWorkLoading && creativeWorkData && creativeWorkData.videoIds && creativeWorkData.videoIds.length === 0;
|
|
2199
2456
|
const creativeWorkLoadedWithNoData = !isCreativeWorkLoading && creativeWorkData && !creativeWorkData.videoIds;
|
|
2200
2457
|
const isEventsFinished = !videosIsLoading && videosData && videosData.length > 0 && videosData.every((video) => video.playlists && video.playlists.length === 0);
|
|
@@ -2215,10 +2472,10 @@ var CreativeWork = ({
|
|
|
2215
2472
|
events
|
|
2216
2473
|
]);
|
|
2217
2474
|
if (isCreativeWorkLoading || videosIsLoading || loadingApisState) {
|
|
2218
|
-
return /* @__PURE__ */
|
|
2475
|
+
return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full", children: /* @__PURE__ */ jsx9(Loading, {}) }) });
|
|
2219
2476
|
}
|
|
2220
2477
|
if (showCountDown && creativeWorkData) {
|
|
2221
|
-
return /* @__PURE__ */
|
|
2478
|
+
return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsx9("div", { className: "relative w-full h-full bg-base-200 text-base-content flex justify-center items-center flex-col", children: /* @__PURE__ */ jsx9(
|
|
2222
2479
|
PreCreativeWork,
|
|
2223
2480
|
{
|
|
2224
2481
|
creativeWork: creativeWorkData,
|
|
@@ -2231,8 +2488,8 @@ var CreativeWork = ({
|
|
|
2231
2488
|
}
|
|
2232
2489
|
if (activeVideoId && activePlaylist && !loadingPlaylist) {
|
|
2233
2490
|
const activeVideo = videosData?.find((video) => video.id === activeVideoId);
|
|
2234
|
-
return /* @__PURE__ */
|
|
2235
|
-
/* @__PURE__ */
|
|
2491
|
+
return /* @__PURE__ */ jsx9("div", { className: twMerge5("md:rounded-2xl overflow-hidden aspect-video", className), children: /* @__PURE__ */ jsxs7("div", { className: "relative w-full h-full", children: [
|
|
2492
|
+
/* @__PURE__ */ jsx9(
|
|
2236
2493
|
Player,
|
|
2237
2494
|
{
|
|
2238
2495
|
...props,
|
|
@@ -2244,7 +2501,7 @@ var CreativeWork = ({
|
|
|
2244
2501
|
containerClassName: "w-full h-full"
|
|
2245
2502
|
}
|
|
2246
2503
|
),
|
|
2247
|
-
!hideTitle && /* @__PURE__ */
|
|
2504
|
+
!hideTitle && /* @__PURE__ */ jsx9(
|
|
2248
2505
|
TitleAndDescription2,
|
|
2249
2506
|
{
|
|
2250
2507
|
title: creativeWorkData?.title || "",
|
|
@@ -2257,7 +2514,7 @@ var CreativeWork = ({
|
|
|
2257
2514
|
] }) });
|
|
2258
2515
|
}
|
|
2259
2516
|
if (loadingPlaylist) {
|
|
2260
|
-
return /* @__PURE__ */
|
|
2517
|
+
return /* @__PURE__ */ jsx9(Loading, {});
|
|
2261
2518
|
}
|
|
2262
2519
|
return null;
|
|
2263
2520
|
};
|
|
@@ -2270,12 +2527,12 @@ function PreCreativeWork({
|
|
|
2270
2527
|
}) {
|
|
2271
2528
|
const date = new Date(creativeWork.releaseTime);
|
|
2272
2529
|
const now = /* @__PURE__ */ new Date();
|
|
2273
|
-
const [remainingTime, setRemainingTime] =
|
|
2530
|
+
const [remainingTime, setRemainingTime] = useState7(
|
|
2274
2531
|
date.getTime() - now.getTime()
|
|
2275
2532
|
);
|
|
2276
2533
|
const shouldBeStarted = remainingTime < 0;
|
|
2277
2534
|
const { t } = useMessages_default(locale);
|
|
2278
|
-
|
|
2535
|
+
useEffect10(() => {
|
|
2279
2536
|
const interval = setInterval(() => {
|
|
2280
2537
|
if (remainingTime < 0) {
|
|
2281
2538
|
clearInterval(interval);
|
|
@@ -2289,7 +2546,7 @@ function PreCreativeWork({
|
|
|
2289
2546
|
}, [date, remainingTime]);
|
|
2290
2547
|
const renderCountdown = () => {
|
|
2291
2548
|
if (shouldBeStarted) {
|
|
2292
|
-
return /* @__PURE__ */
|
|
2549
|
+
return /* @__PURE__ */ jsx9("span", { className: "text-base-content text-xl", children: t("EVENT_NOT_STARTED") });
|
|
2293
2550
|
}
|
|
2294
2551
|
const seconds = Math.floor(remainingTime / 1e3) % 60;
|
|
2295
2552
|
const minutes = Math.floor(remainingTime / 1e3 / 60) % 60;
|
|
@@ -2297,7 +2554,7 @@ function PreCreativeWork({
|
|
|
2297
2554
|
const days = Math.floor(remainingTime / 1e3 / 60 / 60 / 24);
|
|
2298
2555
|
return /* @__PURE__ */ jsxs7("div", { className: "grid grid-flow-col gap-5 text-center auto-cols-max", children: [
|
|
2299
2556
|
/* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
2300
|
-
/* @__PURE__ */
|
|
2557
|
+
/* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
|
|
2301
2558
|
"span",
|
|
2302
2559
|
{
|
|
2303
2560
|
style: { "--value": days },
|
|
@@ -2306,10 +2563,10 @@ function PreCreativeWork({
|
|
|
2306
2563
|
children: days?.toString()?.padStart(2, "0")
|
|
2307
2564
|
}
|
|
2308
2565
|
) }),
|
|
2309
|
-
/* @__PURE__ */
|
|
2566
|
+
/* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("DAYS") })
|
|
2310
2567
|
] }),
|
|
2311
2568
|
/* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
2312
|
-
/* @__PURE__ */
|
|
2569
|
+
/* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
|
|
2313
2570
|
"span",
|
|
2314
2571
|
{
|
|
2315
2572
|
style: { "--value": hours },
|
|
@@ -2318,10 +2575,10 @@ function PreCreativeWork({
|
|
|
2318
2575
|
children: hours?.toString()?.padStart(2, "0")
|
|
2319
2576
|
}
|
|
2320
2577
|
) }),
|
|
2321
|
-
/* @__PURE__ */
|
|
2578
|
+
/* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("HOURS") })
|
|
2322
2579
|
] }),
|
|
2323
2580
|
/* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
2324
|
-
/* @__PURE__ */
|
|
2581
|
+
/* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
|
|
2325
2582
|
"span",
|
|
2326
2583
|
{
|
|
2327
2584
|
style: { "--value": minutes },
|
|
@@ -2330,10 +2587,10 @@ function PreCreativeWork({
|
|
|
2330
2587
|
children: minutes?.toString()?.padStart(2, "0")
|
|
2331
2588
|
}
|
|
2332
2589
|
) }),
|
|
2333
|
-
/* @__PURE__ */
|
|
2590
|
+
/* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("MINUTES") })
|
|
2334
2591
|
] }),
|
|
2335
2592
|
/* @__PURE__ */ jsxs7("div", { className: "flex flex-col p-2 bg-neutral rounded-box text-neutral-content", children: [
|
|
2336
|
-
/* @__PURE__ */
|
|
2593
|
+
/* @__PURE__ */ jsx9("span", { className: "countdown font-mono text-5xl", children: /* @__PURE__ */ jsx9(
|
|
2337
2594
|
"span",
|
|
2338
2595
|
{
|
|
2339
2596
|
style: { "--value": seconds },
|
|
@@ -2342,7 +2599,7 @@ function PreCreativeWork({
|
|
|
2342
2599
|
children: seconds?.toString()?.padStart(2, "0")
|
|
2343
2600
|
}
|
|
2344
2601
|
) }),
|
|
2345
|
-
/* @__PURE__ */
|
|
2602
|
+
/* @__PURE__ */ jsx9("span", { className: "text-sm uppercase tracking-widest mt-1", children: t("SECONDS") })
|
|
2346
2603
|
] })
|
|
2347
2604
|
] });
|
|
2348
2605
|
};
|
|
@@ -2355,12 +2612,12 @@ function PreCreativeWork({
|
|
|
2355
2612
|
backgroundImage: backgroundImageUrl ? `url(${backgroundImageUrl})` : ""
|
|
2356
2613
|
},
|
|
2357
2614
|
children: [
|
|
2358
|
-
backgroundImageUrl && /* @__PURE__ */
|
|
2359
|
-
/* @__PURE__ */
|
|
2615
|
+
backgroundImageUrl && /* @__PURE__ */ jsx9("div", { className: "absolute inset-0 bg-black bg-opacity-40" }),
|
|
2616
|
+
/* @__PURE__ */ jsx9("div", { className: "relative z-10", children: renderCountdown() })
|
|
2360
2617
|
]
|
|
2361
2618
|
}
|
|
2362
2619
|
),
|
|
2363
|
-
!hideTitle && /* @__PURE__ */
|
|
2620
|
+
!hideTitle && /* @__PURE__ */ jsx9(
|
|
2364
2621
|
TitleAndDescription2,
|
|
2365
2622
|
{
|
|
2366
2623
|
title: creativeWork.title,
|
|
@@ -2379,7 +2636,7 @@ var TitleAndDescription2 = ({
|
|
|
2379
2636
|
className
|
|
2380
2637
|
}) => {
|
|
2381
2638
|
return /* @__PURE__ */ jsxs7("div", { className: twMerge5("mt-3 mb-6 m-event-details-ctn px-4 text-left w-full", className), children: [
|
|
2382
|
-
/* @__PURE__ */
|
|
2639
|
+
/* @__PURE__ */ jsx9("div", { className: "text-base md:text-xl m-event-title text-base-content font-medium", children: title }),
|
|
2383
2640
|
releaseTime ? /* @__PURE__ */ jsxs7("div", { className: "text-sm md:text-base text-base-content/70 m-event-start-time", children: [
|
|
2384
2641
|
new Date(releaseTime || "").toLocaleDateString(locale || "default", {
|
|
2385
2642
|
month: "long",
|
|
@@ -2393,13 +2650,27 @@ var TitleAndDescription2 = ({
|
|
|
2393
2650
|
minute: "2-digit"
|
|
2394
2651
|
})
|
|
2395
2652
|
] }) : null,
|
|
2396
|
-
description && /* @__PURE__ */
|
|
2653
|
+
description && /* @__PURE__ */ jsx9("div", { className: "text-xs md:text-sm text-base-content/60 uppercase", children: description })
|
|
2397
2654
|
] });
|
|
2398
2655
|
};
|
|
2399
2656
|
|
|
2657
|
+
// src/ClientSideEvent.tsx
|
|
2658
|
+
import React6 from "react";
|
|
2659
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
2660
|
+
var ClientSideEvent = (props) => {
|
|
2661
|
+
const [isClient, setIsClient] = React6.useState(false);
|
|
2662
|
+
React6.useEffect(() => {
|
|
2663
|
+
setIsClient(true);
|
|
2664
|
+
}, []);
|
|
2665
|
+
if (!isClient) {
|
|
2666
|
+
return /* @__PURE__ */ jsx10("div", { className: "md:rounded-2xl overflow-hidden aspect-video", children: /* @__PURE__ */ jsx10("div", { className: "relative w-full h-full bg-[#151515] flex items-center justify-center", children: /* @__PURE__ */ jsx10("div", { className: "text-white", children: "Loading..." }) }) });
|
|
2667
|
+
}
|
|
2668
|
+
return /* @__PURE__ */ jsx10(Event, { ...props });
|
|
2669
|
+
};
|
|
2670
|
+
|
|
2400
2671
|
// src/QueryProvider.tsx
|
|
2401
2672
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
2402
|
-
import { jsx as
|
|
2673
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
2403
2674
|
var queryClient = new QueryClient({
|
|
2404
2675
|
defaultOptions: {
|
|
2405
2676
|
queries: {
|
|
@@ -2413,14 +2684,25 @@ var queryClient = new QueryClient({
|
|
|
2413
2684
|
}
|
|
2414
2685
|
});
|
|
2415
2686
|
var QueryProvider = ({ children }) => {
|
|
2416
|
-
return /* @__PURE__ */
|
|
2687
|
+
return /* @__PURE__ */ jsx11(QueryClientProvider, { client: queryClient, children });
|
|
2417
2688
|
};
|
|
2689
|
+
|
|
2690
|
+
// src/index.ts
|
|
2691
|
+
var index_default = { Player };
|
|
2418
2692
|
export {
|
|
2693
|
+
ClientOnlyPlayer,
|
|
2694
|
+
ClientSideEvent,
|
|
2419
2695
|
CreativeWork,
|
|
2696
|
+
CreativeWorksSortDirection,
|
|
2420
2697
|
Event,
|
|
2698
|
+
EventsSortDirection,
|
|
2421
2699
|
Player,
|
|
2422
2700
|
QueryProvider,
|
|
2423
2701
|
Video,
|
|
2424
|
-
|
|
2702
|
+
index_default as default,
|
|
2703
|
+
fetchCreativeWorkData,
|
|
2704
|
+
fetchEventData,
|
|
2705
|
+
fetchVideoData,
|
|
2706
|
+
fetchVideosList
|
|
2425
2707
|
};
|
|
2426
2708
|
//# sourceMappingURL=index.mjs.map
|