@rixl/media-core 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -100
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunks/BZFoe94X.js +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1157,59 +1157,6 @@ interface ControlsStore {
|
|
|
1157
1157
|
hideControls: (id: UUID) => void;
|
|
1158
1158
|
}
|
|
1159
1159
|
export declare const controlsStore: ControlsStore;
|
|
1160
|
-
interface FeedCacheState {
|
|
1161
|
-
cachedPosts: FeedPost[];
|
|
1162
|
-
isLoadingFromCache: boolean;
|
|
1163
|
-
}
|
|
1164
|
-
export declare const feedCacheAtom: WritableAtom<FeedCacheState>;
|
|
1165
|
-
interface FeedCacheStore {
|
|
1166
|
-
currentFeedId: string | undefined;
|
|
1167
|
-
loadCache: (feedId?: string) => FeedPost[];
|
|
1168
|
-
/**
|
|
1169
|
-
* Append posts to the cache. Pass the feed the posts came from and the batch
|
|
1170
|
-
* is refused if the cache has since moved to another feed.
|
|
1171
|
-
*/
|
|
1172
|
-
saveNewPosts: (newPosts: FeedPost[], feedId?: string) => void;
|
|
1173
|
-
removePost: (postId: string) => void;
|
|
1174
|
-
clearCache: () => void;
|
|
1175
|
-
getCacheStats: () => {
|
|
1176
|
-
size: number;
|
|
1177
|
-
timestamp: number | null;
|
|
1178
|
-
};
|
|
1179
|
-
}
|
|
1180
|
-
export declare const feedCacheStore: FeedCacheStore;
|
|
1181
|
-
interface PostStoreState {
|
|
1182
|
-
initialized: boolean;
|
|
1183
|
-
feedId: string;
|
|
1184
|
-
posts: FeedPost[];
|
|
1185
|
-
isLoadedInitial: boolean;
|
|
1186
|
-
isFetchingVideos: boolean;
|
|
1187
|
-
currentIndex: number;
|
|
1188
|
-
total: number;
|
|
1189
|
-
}
|
|
1190
|
-
export declare const postStore: WritableAtom<PostStoreState>;
|
|
1191
|
-
interface PostStoreActions {
|
|
1192
|
-
init: (feedId: string) => void;
|
|
1193
|
-
loadInitialPosts: () => Promise<void>;
|
|
1194
|
-
fetchNewVideos: () => Promise<void>;
|
|
1195
|
-
setCurrentIndex: (index: number) => void;
|
|
1196
|
-
}
|
|
1197
|
-
export declare const postStoreActions: PostStoreActions;
|
|
1198
|
-
export declare const FEED_COMPONENTS_COUNT = 5;
|
|
1199
|
-
export declare const FEED_TRANSITION_THRESHOLD: number;
|
|
1200
|
-
interface FeedInteractionStore {
|
|
1201
|
-
hasInteracted: WritableAtom<boolean>;
|
|
1202
|
-
whenInteracted: WritableAtom<Date>;
|
|
1203
|
-
hasInitialized: WritableAtom<boolean>;
|
|
1204
|
-
videosInitialized: WritableAtom<number>;
|
|
1205
|
-
components: WritableAtom<number[]>;
|
|
1206
|
-
originalPositions: WritableAtom<number[]>;
|
|
1207
|
-
transforms: WritableAtom<number[]>;
|
|
1208
|
-
setTransforms: (transforms: number[]) => void;
|
|
1209
|
-
}
|
|
1210
|
-
export declare const feedStore: FeedInteractionStore;
|
|
1211
|
-
export declare const setHasInteracted: () => boolean;
|
|
1212
|
-
export declare const initializeVideo: () => void;
|
|
1213
1160
|
interface PlayerContainerElementStore {
|
|
1214
1161
|
register: (playerId: UUID, element: HTMLDivElement) => void;
|
|
1215
1162
|
unregister: (playerId: UUID) => void;
|
|
@@ -1879,52 +1826,6 @@ interface CollectStatsInput {
|
|
|
1879
1826
|
export declare function getDroppedFrames(video: HTMLVideoElement): number;
|
|
1880
1827
|
export declare function getBufferHealth(video: HTMLVideoElement): number;
|
|
1881
1828
|
export declare function collectVideoStats(input: CollectStatsInput): VideoStats;
|
|
1882
|
-
export declare const LOOP_REBASE_BASE_MULTIPLIER = 2;
|
|
1883
|
-
export declare const LOOP_REBASE_THRESHOLD_MULTIPLIER = 50;
|
|
1884
|
-
export declare function shiftArray(arr: number[], shiftBy: number): number[];
|
|
1885
|
-
export declare function calcShiftCountArray(index: number, arraySize: number): number[];
|
|
1886
|
-
export declare function buildTransforms(currentIndex: number, originalPositions: number[]): number[];
|
|
1887
|
-
export declare function computeScrollIndex(scrollTop: number, containerHeight: number, gap?: number): number;
|
|
1888
|
-
export declare function isAtEndOfFeed(currentIndex: number, postsLength: number): boolean;
|
|
1889
|
-
export declare function isFeedExhausted(postsLength: number, total: number): boolean;
|
|
1890
|
-
interface ShouldFetchMoreInput {
|
|
1891
|
-
currentIndex: number;
|
|
1892
|
-
postsLength: number;
|
|
1893
|
-
total: number;
|
|
1894
|
-
isFetching: boolean;
|
|
1895
|
-
isLoaded: boolean;
|
|
1896
|
-
}
|
|
1897
|
-
export declare function shouldFetchMore({ currentIndex, postsLength, total, isFetching, isLoaded }: ShouldFetchMoreInput): boolean;
|
|
1898
|
-
export declare function resolvePostIndex(transform: number, postsLength: number, loop: boolean): number;
|
|
1899
|
-
export declare function getLoopRebaseThreshold(postsLength: number): number;
|
|
1900
|
-
interface LoopRebaseInput {
|
|
1901
|
-
currentIndex: number;
|
|
1902
|
-
postsLength: number;
|
|
1903
|
-
loop: boolean;
|
|
1904
|
-
total: number;
|
|
1905
|
-
}
|
|
1906
|
-
export declare function shouldRebaseLoopIndex({ currentIndex, postsLength, loop, total }: LoopRebaseInput): boolean;
|
|
1907
|
-
export declare function getRebasedLoopIndex(currentIndex: number, postsLength: number): number;
|
|
1908
|
-
export declare const IMAGE_DWELL_MS = 5e3;
|
|
1909
|
-
export declare function shouldDwellAdvance(autoscroll: boolean, isCurrent: boolean, isImage: boolean): boolean;
|
|
1910
|
-
export declare function gateVideoEnded(isCurrent: boolean, autoscroll: boolean): boolean;
|
|
1911
|
-
interface AutoAdvanceInput {
|
|
1912
|
-
isCurrent: boolean;
|
|
1913
|
-
autoscroll: boolean;
|
|
1914
|
-
loop: boolean;
|
|
1915
|
-
currentIndex: number;
|
|
1916
|
-
postsLength: number;
|
|
1917
|
-
total: number;
|
|
1918
|
-
}
|
|
1919
|
-
export declare function shouldAutoAdvance({ isCurrent, autoscroll, loop, currentIndex, postsLength, total }: AutoAdvanceInput): boolean;
|
|
1920
|
-
export declare function getViewportFallbackHeight(safeAreaTabBar: number): number;
|
|
1921
|
-
interface ContainerHeightInput {
|
|
1922
|
-
measuredHeight: number;
|
|
1923
|
-
scrollContainerHeight: number;
|
|
1924
|
-
safeAreaTabBar: number;
|
|
1925
|
-
}
|
|
1926
|
-
export declare function resolveContainerHeight({ measuredHeight, scrollContainerHeight, safeAreaTabBar }: ContainerHeightInput): number;
|
|
1927
|
-
export declare function checkIsCut(el: HTMLElement | null): boolean;
|
|
1928
1829
|
export declare function connect(config: ConnectConfig): Promise<string | undefined>;
|
|
1929
1830
|
interface CreateImageUploadOptions {
|
|
1930
1831
|
projectId: string;
|
|
@@ -2002,4 +1903,4 @@ interface PostUploadResult {
|
|
|
2002
1903
|
}
|
|
2003
1904
|
export declare function uploadPost(contentFile: Blob | Uint8Array, posterFile: Blob | Uint8Array, options: CreatePostUploadOptions): Promise<PostUploadResult>;
|
|
2004
1905
|
export declare function createPostUpload(options: CreatePostUploadOptions): Promise<PostUploadResult>;
|
|
2005
|
-
export type { AnalyticsContext, AnalyticsEvent, AppliedVolumeSync, AudioTrack, AudioTrackUploadItem, AudioTrackUploadResult, AuthConfig,
|
|
1906
|
+
export type { AnalyticsContext, AnalyticsEvent, AppliedVolumeSync, AudioTrack, AudioTrackUploadItem, AudioTrackUploadResult, AuthConfig, BufferRange, BuildEngagementParams, BuildErrorParams, BuildEventParams, BuildInteractionParams, BuildSessionStartParams, BuildVideoAnalyticsPayloadParams, CSSProperties, CalculateDragPositionOptions, CaptionLangType, CaptionTextSettings, CaptionWindowSettings, Chapter, ChapterWithEnd, ClickDisambiguationState, ClickOutsideOptions, CollectStatsInput, ConnectConfig, ContentType, ContentViewEvent, ControlsState, CreateImageUploadOptions, CreatePostUploadOptions, CreateVideoUploadOptions, DeriveVolumeSyncOptions, EngagementEvent, ErrorEvent, FeedPlaybackAction, FeedPlaybackDecisionInput, FeedPost, FeedPostsResponse, FileData, FileStatus, FontFamilyKey, GetHotSegmentsOptions, GetPointerOffsetsOptions, GetVideoHeatmapOptions, HandleClickOptions, HandleDoubleClickOptions, HlsController, HlsErrorAction, HlsErrorInput, HlsErrorPayload, HlsErrorRecoveryState, HlsInstance, HotSegment, ImageContainerStyleParams, ImageData, ImageRenderAction, ImageRenderState, ImageUploadResult, InteractionEvent, LoadingDebounceState, MenuKey, Page, PipReentryOptions, PlaybackHandlerCallbacks, PlaybackPointerOptions, PlayerControlLabels, PlayerLanguage, PlayerMenuLabels, PlayerState, PlayerStateStore, PointerOffsets, Position, PostUploadResult, PosterDimensions, ProgressBarControls, ProgressBarProps, ProgressBarStartEvent, QualityLevel, Segment, SegmentAnalyticsParams, SessionStartEvent, SettingsState, SetupHlsOptions, ShortcutAction as ShortcutActionType, ShortcutDefinition, SmartCaptionPositionParams, SubtitleTrack, SubtitleUploadItem, SubtitleUploadResult, UUID, UpdateLoadingStateOptions, VideoAnalyticsPayload, VideoData, VideoHeatmap, VideoKeyboardHandlers, VideoPreloadAttribute, VideoSdkKey, VideoSnapshot, VideoStats, VideoTheme, VideoUploadResult, ViewType, Viewport };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as e,c as t,d as n,f as r,g as i,h as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,s as ee,t as te,u as ne}from"./chunks/DMkwQjgA.js";import{a as re,c as ie,d as ae,f as oe,i as se,l as ce,n as le,o as ue,r as de,s as fe,t as pe,u as me}from"./chunks/B2DDE32u.js";import{_ as he,a as ge,c as p,d as _e,f as ve,g as ye,h as be,i as xe,l as Se,m as Ce,n as we,o as Te,p as Ee,r as De,s as Oe,t as ke,u as Ae,v as je}from"./chunks/B-QvSqjj.js";import{analyticsV1EventsServiceTrackEvents as Me,analyticsV1HeatmapServiceGetHotSegments as Ne,analyticsV1HeatmapServiceGetVideoHeatmap as Pe,client as Fe,connect as Ie,imagesV1ImageServiceCreateImageUpload as Le,imagesV1ImageServiceGetImage as Re,postsV1PostServiceCreatePostUpload as ze,postsV1PostServiceGetPost3 as Be,postsV1PostServiceListPosts3 as Ve,user as He,videosV1AudioTrackServiceCreateAudioTrackUpload as Ue,videosV1SubtitleServiceCreateSubtitleUpload as We,videosV1VideoServiceCreateVideoUpload as Ge,videosV1VideoServiceGetVideo as Ke}from"@rixl/sdk";import{atom as m,computed as qe,map as Je}from"nanostores";const h=(e,t,n)=>t.forEach(t=>window[`${e}EventListener`](t,n)),g=e=>Math.min(Math.max(e,0),1),Ye=e=>`touches`in e?e.touches[0]?.clientX??e.changedTouches?.[0]?.clientX??0:e.clientX,Xe=e=>({isDragging:!1,progress:Number.isFinite(e.duration)&&e.duration>0?e.currentTime/e.duration:0,initialRect:null,initialClientX:null,initialProgress:0,startTime:0,hasMoved:!1}),_=(e,t,n)=>{e.progress=Number(t.toFixed(6)),n?.(e.progress)},Ze=(e,t,n)=>{e.isDragging=t,n?.(t)},Qe=(e,t)=>{if(e.initialClientX===null)return!1;let n=Math.abs(t-e.initialClientX),r=Date.now()-e.startTime;return n>=15||r>=200},$e=(e,t,n)=>{e.hasMoved=!0,Ze(e,!0,n),e.initialClientX=t,e.initialProgress=e.progress},et=(e,t)=>{if(!e.initialRect)return null;let n=(t-(e.initialClientX??e.initialRect.left))/e.initialRect.width,r=e.initialClientX?e.initialProgress:0;return g(n+r)},tt=e=>!e.initialRect||e.initialClientX===null?null:g((e.initialClientX-e.initialRect.left)/e.initialRect.width),nt=(e,t)=>{Ze(e,!1,t),e.hasMoved=!1,e.initialRect=null,e.initialClientX=null},rt=(e,t,n)=>()=>{if(e.isDragging)return;let r=Number.isFinite(t.duration)&&t.duration>0?t.currentTime/t.duration:0;_(e,r,n)},it=(e,t,n)=>r=>{let i=Ye(r);if(!e.isDragging){if(!Qe(e,i))return;$e(e,i,t)}let a=et(e,i);a!==null&&_(e,a,n)},at=({state:e,video:t,onDraggingChange:n,onProgressChange:r,removeListeners:i})=>()=>{let a=e.hasMoved?null:tt(e),o=Number.isFinite(t.duration)&&t.duration>0;a===null?e.isDragging&&o&&(t.currentTime=e.progress*t.duration):(_(e,a,r),o&&(t.currentTime=a*t.duration)),nt(e,n),i()},ot=(e,t,n)=>r=>{e.initialRect=r.currentTarget.getBoundingClientRect(),e.startTime=Date.now(),e.hasMoved=!1,e.initialClientX=Ye(r),h(`add`,[`mousemove`,`touchmove`],t),h(`add`,[`mouseup`,`touchend`,`blur`],n)},st=({video:e,onDraggingChange:t,onProgressChange:n})=>{let r=Xe(e);t?.(!1),n?.(r.progress);let i=rt(r,e,n),a=it(r,t,n),o;o=at({state:r,video:e,onDraggingChange:t,onProgressChange:n,removeListeners:()=>{h(`remove`,[`mousemove`,`touchmove`],a),h(`remove`,[`mouseup`,`touchend`,`blur`],o)}});let s=ot(r,a,o);return e.addEventListener(`timeupdate`,i),{handleDragStart:s,destroy:()=>{o(),e.removeEventListener(`timeupdate`,i)}}};function ct(e){return e===`MEDIA_TYPE_IMAGE`?`image`:e===`MEDIA_TYPE_VIDEO`?`video`:`image`}function lt(e){let t=e;return{id:e.id??``,feedId:e.feed_id??``,creatorId:e.creator_id??``,type:ct(e.type),description:e.description??``,createdAt:e.created_at??``,image:t.image,video:t.video}}function ut(e,t,n){let r=e.total??0;return{posts:(e.posts??[]).map(lt),total:typeof r==`number`?r:Number(r),offset:e.offset??t,limit:e.limit??n}}const dt=async(e,t=0,n=10)=>{let{data:r,error:i,response:a}=await Ve({path:{feed_id:e},query:{"pagination.offset":t,"pagination.limit":n}});if(i||!r)throw Error(`HTTP error! status: ${a?.status??500}`);return ut(r,t,n)},ft=async(e,t)=>{let{data:n,error:r,response:i}=await Be({path:{feed_id:e,post_id:t}});if(r)throw Error(`HTTP error! status: ${i?.status??500}`);if(!n?.post)throw Error(`HTTP error! status: 404`);return lt(n.post)},v=()=>{let e=/* @__PURE__ */ new Map,t=/* @__PURE__ */ new Map;return{get:async(n,r)=>{let i=e.get(n);if(i)return i;let a=t.get(n);if(a)return a;let o=r(n).then(r=>(e.set(n,r),t.delete(n),r)).catch(e=>{throw t.delete(n),e});return t.set(n,o),o}}},pt=v(),mt=/* @__PURE__ */ new Map,ht=async(e,t)=>{let n=`${e}:${t}`;return pt.get(n,()=>ft(e,t))},gt=async(e,t=0,n=10)=>{if(t>0)return dt(e,t,n);let r=`feed:${e}`,i=mt.get(r);if(i)return i;let a=await dt(e,t,n);return mt.set(r,a),a.posts.forEach(t=>{let n=`${e}:${t.id}`;pt.get(n,()=>Promise.resolve(t))}),a},_t=async e=>{let{data:t,error:n,response:r}=await Re({path:{image_id:e}});if(n)throw Error(`HTTP error! status: ${r?.status??500}`);if(!t?.image)throw Error(`HTTP error! status: 404`);return t.image},vt=v(),yt=e=>vt.get(e,_t),bt=async e=>{let{data:t,error:n,response:r}=await Ke({path:{video_id:e}});if(n)throw Error(`HTTP error! status: ${r?.status??500}`);if(!t?.video)throw Error(`HTTP error! status: 404`);return t.video},xt=v(),St=e=>xt.get(e,bt);function y(e){let t=e.toString();return e<10&&(t=`0`+t),t}const Ct=e=>{if(isNaN(e)||e<0)return`00:00`;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60),i=`${y(n)}:${y(r)}`;return t>0?`${y(t)}:${i}`:i};function b(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}const wt=.5,Tt=.7,Et={isLoading:!0,isVisible:!1,aspectRatio:wt};function Dt(e,t){switch(t.type){case`reset`:return{isLoading:!0,isVisible:!1,aspectRatio:t.aspectRatio??e.aspectRatio};case`loaded`:return{...e,isLoading:!1};case`visible`:return{...e,isVisible:!0};case`set_aspect_ratio`:return{...e,aspectRatio:t.aspectRatio};default:return e}}function Ot(e,t){if(e&&t)return e/t}function kt({aspectRatio:e,isVisible:t,thumbhashUrl:n}){let r={display:`block`,width:`100%`,aspectRatio:e,position:`relative`};return t||(r.backgroundImage=`url(${n})`,r.backgroundSize=e>=.7?`contain`:`cover`,r.backgroundPosition=`center`,r.backgroundRepeat=`no-repeat`),r}function At(e,t){return{position:`absolute`,top:0,left:0,width:`100%`,height:`100%`,objectFit:e>=.7?`contain`:`cover`,opacity:+!t,transition:`opacity 300ms ease`}}function jt(e){return e=e.replace(`#`,``),{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}}function x(e,t=100){let{r:n,g:r,b:i}=jt(e);return t/=100,`rgba(${n}, ${r}, ${i}, ${t})`}const Mt=[`en`,`de`,`es`,`fr`,`it`,`pl`,`ru`,`tr`,`uk`],Nt={en:{play:`Play (k)`,pause:`Pause (k)`,replay:`Replay`,mute:`Mute (m)`,unmute:`Unmute (m)`,volume:`Volume`,settings:`Settings`,pip:`Miniplayer (i)`,fullScreen:`Full screen (f)`,captionsToggle:`Subtitles/close captions (c)`},de:{play:`Wiedergabe (k)`,pause:`Pause (k)`,replay:`Wiederholen`,mute:`Stummschalten (m)`,unmute:`Stummschaltung aufheben (m)`,volume:`Lautstärke`,settings:`Einstellungen`,pip:`Bild-im-Bild (i)`,fullScreen:`Vollbild (f)`,captionsToggle:`Untertitel/CC (c)`},es:{play:`Reproducir (k)`,pause:`Pausar (k)`,replay:`Repetir`,mute:`Silenciar (m)`,unmute:`Reactivar sonido (m)`,volume:`Volumen`,settings:`Configuración`,pip:`Minirreproductor (i)`,fullScreen:`Pantalla completa (f)`,captionsToggle:`Subtítulos (c)`},fr:{play:`Lire (k)`,pause:`Pause (k)`,replay:`Rejouer`,mute:`Muet (m)`,unmute:`Réactiver le son (m)`,volume:`Volume`,settings:`Paramètres`,pip:`Mini-lecteur (i)`,fullScreen:`Plein écran (f)`,captionsToggle:`Sous-titres/CC (c)`},it:{play:`Riproduci (k)`,pause:`Pausa (k)`,replay:`Rivedi`,mute:`Disattiva audio (m)`,unmute:`Riattiva audio (m)`,volume:`Volume`,settings:`Impostazioni`,pip:`Miniplayer (i)`,fullScreen:`Schermo intero (f)`,captionsToggle:`Sottotitoli (c)`},pl:{play:`Odtwórz (k)`,pause:`Pauza (k)`,replay:`Odtwórz ponownie`,mute:`Wycisz (m)`,unmute:`Wyłącz wyciszenie (m)`,volume:`Głośność`,settings:`Ustawienia`,pip:`Mini-odtwarzacz (i)`,fullScreen:`Pełny ekran (f)`,captionsToggle:`Napisy (c)`},ru:{play:`Воспроизвести (k)`,pause:`Пауза (k)`,replay:`Воспроизвести снова`,mute:`Выключить звук (m)`,unmute:`Включить звук (m)`,volume:`Громкость`,settings:`Настройки`,pip:`Мини-плеер (i)`,fullScreen:`Во весь экран (f)`,captionsToggle:`Субтитры (c)`},tr:{play:`Oynat (k)`,pause:`Duraklat (k)`,replay:`Tekrar oyna`,mute:`Sessize al (m)`,unmute:`Sesi aç (m)`,volume:`Ses düzeyi`,settings:`Ayarlar`,pip:`Mini oynatıcı (i)`,fullScreen:`Tam ekran (f)`,captionsToggle:`Altyazılar (c)`},uk:{play:`Відтворити (k)`,pause:`Пауза (k)`,replay:`Повторити`,mute:`Вимкнути звук (m)`,unmute:`Увімкнути звук (m)`,volume:`Гучність`,settings:`Налаштування`,pip:`Міні-плеєр (i)`,fullScreen:`На весь екран (f)`,captionsToggle:`Субтитри (c)`}};function S(e){let t=(e??``).toLowerCase();return Mt.find(e=>e===t)??`en`}function Pt(e){return Nt[S(e)]}const Ft=16,It=12,Lt=120,Rt=.03,zt=.07,Bt=100,Vt=8,C=.6,Ht=85,Ut=80,Wt=24,Gt=(e,t)=>{if(!e.width)return 16;let n=e.width*Rt,r=Math.max(.1,t/100),i=n*(1+.5*Math.log2(r)),a=Math.min(120,e.width*zt);return c(i,12,a)},Kt=(e,t=.6)=>{let n=t*100,r=Math.max(0,100-n);return{x:c(e.x,0,r),y:c(e.y,0,100)}},qt=(e,t,n)=>!n.width||!n.height?{x:0,y:0}:{x:e/n.width*100,y:t/n.height*100};function Jt(e){let{containerRect:t,elementRect:n,clientX:r,clientY:i}=e;return{clickXRelative:r-t.left,clickYRelative:i-t.top,currentVisualX:n.left-t.left,currentVisualY:n.top-t.top}}function Yt(e){let{startPositionPixels:t,startX:n,startY:r,currentXRelative:i,currentYRelative:a,viewport:o}=e,s=i-n,c=a-r,l=t.x+s,u=t.y+c,d=qt(l,u,o);return Kt(d,C)}function Xt(e){return{width:e.width-16,height:e.height-16}}function Zt(e,t){return!t&&e>85}function Qt(e,t){let n=Math.max(1,t*.06);switch(e){case`drop-shadow`:return`${n}px ${n}px ${n}px rgba(0, 0, 0, 0.75)`;case`raised`:return`${n}px ${n}px 0 rgba(0, 0, 0, 0.5), -${n*.5}px -${n*.5}px 0 rgba(255, 255, 255, 0.25)`;case`depressed`:return`-${n}px -${n}px 0 rgba(0, 0, 0, 0.5), ${n*.5}px ${n*.5}px 0 rgba(255, 255, 255, 0.25)`;case`outline`:return`
|
|
2
2
|
-${n}px -${n}px 0 #000,
|
|
3
3
|
${n}px -${n}px 0 #000,
|
|
4
4
|
-${n}px ${n}px 0 #000,
|
|
5
5
|
${n}px ${n}px 0 #000
|
|
6
|
-
`;default:return`none`}}function xn({position:e,isDragging:t,controlsVisible:n}){let r=t?`none`:`all 300ms ease`;if(yn(e.y,t)){let t=n?80:24;return{left:`${e.x}%`,top:`calc(100% - ${t}px)`,bottom:`auto`,transform:`translateY(-100%)`,transition:r}}return{left:`${e.x}%`,top:`${e.y}%`,bottom:`auto`,transform:`translateY(0)`,transition:r}}function Sn(e,t,n){let r=(t||300)*S,i=e.captionWindowOpacity>0?b(e.captionWindowColor,e.captionWindowOpacity):`transparent`;return{width:`${r}px`,backgroundColor:i,cursor:n?`grabbing`:`grab`,touchAction:`none`}}function Cn(e,t){let n=m[e.captionFontFamily]||m.proportional_sans;return{fontSize:`${t}px`,fontFamily:n,color:b(e.captionFontColor,e.captionFontOpacity),backgroundColor:e.captionBGOpacity>0?b(e.captionBGColor,e.captionBGOpacity):`transparent`,textShadow:bn(e.captionCharacterEdgeStyle,t),userSelect:`none`,touchAction:`none`}}function C(){let e=document;return!!(e.fullscreenElement||e.webkitFullscreenElement||e.mozFullScreenElement||e.msFullscreenElement)}function w(e){if(!e)return!1;if(document.pictureInPictureElement===e)return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&t.pictureInPictureElement===e}async function wn(e){if(e)try{w(e)?await document.exitPictureInPicture():await e.requestPictureInPicture()}catch(e){console.error(`Error toggling PIP:`,e)}}const T=`videosdk_progress_map`,Tn=5,En=5,Dn=2e3,On=e=>{if(typeof window>`u`)return 0;try{let t=window.localStorage.getItem(T);if(!t)return 0;let n=JSON.parse(t);return Math.max(0,Math.floor(n[e]??0))}catch{return 0}},kn=(e,t)=>{if(typeof window<`u`)try{let n=window.localStorage.getItem(T),r=n?JSON.parse(n):{};r[e]=Math.max(0,Math.floor(t)),window.localStorage.setItem(T,JSON.stringify(r))}catch{}};function An(e,t){return e>5&&e<t-5}function jn(e,t){return t-e>Dn}const E={BEFORE:0,AFTER:1},Mn=5,D={UNLOADED:`unloaded`,IDLE:`idle`,PRELOADING:`preloading`,PLAYING:`playing`};function Nn(e,t,n){if(n)return D.PLAYING;let r=e-t;return Math.abs(r)>5?D.UNLOADED:r<0&&r>=-E.BEFORE||r>0&&r<=E.AFTER?D.PRELOADING:D.IDLE}const Pn=300;function Fn(){return{timerId:null}}function In(e){let{state:t,shouldShow:n,onShow:r,onHide:i}=e;t.timerId!==null&&(clearTimeout(t.timerId),t.timerId=null),n?t.timerId=setTimeout(()=>{t.timerId=null,r()},300):i()}function Ln(e){e.timerId!==null&&(clearTimeout(e.timerId),e.timerId=null)}function Rn(e,t){if(e&&t&&e.videoWidth!==0&&e.videoHeight!==0)return e.videoWidth/e.videoHeight}function zn(e,t){p.setPaused(e,!1),p.setEnded(e,!1),t.onSegmentStart()}function Bn(e,t){p.setPaused(e,!0),t.onSegmentEnd()}function Vn(e,t,n){let r=t?.playbackRate;typeof r==`number`&&p.setPlaybackRate(e,r),n.onRestartSegment()}function Hn(e,t){p.setPaused(e,!0),p.setLoading(e,!1),t.onShowSpinner(!1)}function Un(e,t){p.setLoading(e,t)}const Wn=250,Gn=400;function Kn(){return{singleClickTimerId:null,lastClickTime:0}}function O(e){e.singleClickTimerId!==null&&(clearTimeout(e.singleClickTimerId),e.singleClickTimerId=null)}function qn(e,t){O(e),e.singleClickTimerId=setTimeout(()=>{t(),e.singleClickTimerId=null},250)}function Jn(e){let{state:t,hideUI:n,allowFullscreen:r,isExcludedTarget:i,onTogglePlay:a}=e;if(n||i)return!1;let o=Date.now(),s=o-t.lastClickTime;return t.lastClickTime=o,s>0&&s<400?(O(t),!0):r?(qn(t,a),!0):(a(),!0)}function Yn(e){let{state:t,allowFullscreen:n,isExcludedTarget:r,onToggleFullscreen:i}=e;return!n||r?!1:(O(t),t.lastClickTime=0,i(),!0)}function Xn(e){O(e)}function Zn(e){let t=()=>e(C());return document.addEventListener(`fullscreenchange`,t),()=>document.removeEventListener(`fullscreenchange`,t)}function Qn(e,t){if(!e)return()=>void 0;let n=()=>t(w(e));return e.addEventListener(`enterpictureinpicture`,n),e.addEventListener(`leavepictureinpicture`,n),()=>{e.removeEventListener(`enterpictureinpicture`,n),e.removeEventListener(`leavepictureinpicture`,n)}}function $n({videoElement:e,isCurrentlyInPip:t}){return!(typeof document>`u`||document.visibilityState!==`hidden`||!t||!e||w(e))}function er(e,t=e=>console.error(`Error maintaining PIP mode:`,e)){let n=()=>{let n=e();$n(n)&&n.videoElement.requestPictureInPicture().catch(t)};return document.addEventListener(`visibilitychange`,n),()=>document.removeEventListener(`visibilitychange`,n)}function tr({forcedMuted:e,playerMuted:t,playerInteracted:n,playerVolume:r,playerPreviousVolume:i}){if(e)return null;if(ct({playerMuted:t,playerInteracted:n}))return{muted:!0,volume:null,storeVolumeUpdate:null};let a=Ze(r,i);return{muted:!1,volume:a,storeVolumeUpdate:r===0?a:null}}function nr(e,t){if(!e)return()=>void 0;let n=()=>{t({width:e.clientWidth,height:e.clientHeight})};n();let r=new ResizeObserver(n);r.observe(e);let i=null,a=()=>{i===null&&(i=requestAnimationFrame(()=>{i=null,n()}))};return window.addEventListener(`resize`,a),()=>{r.disconnect(),window.removeEventListener(`resize`,a),i!==null&&cancelAnimationFrame(i)}}function rr(e){switch(e){case D.UNLOADED:return`none`;case D.IDLE:return`metadata`;case D.PRELOADING:case D.PLAYING:return`auto`}}function ir(e,t){if(!e)return()=>void 0;e.playbackRate=t;let n=()=>{e.playbackRate=t};return e.addEventListener(`loadeddata`,n),()=>e.removeEventListener(`loadeddata`,n)}function ar(e,t){return e?(e.addEventListener(`ended`,t),()=>e.removeEventListener(`ended`,t)):()=>void 0}function or(e){return!e?.width||!e?.height?null:e.width/e.height}function sr({isFeed:e,isCurrent:t,loadState:n,showSpinner:r,videoReadyState:i}){return e?t?n!==D.PLAYING||r||i<2?`none`:`play`:`pause`:`none`}function cr(e,t){return!t||!(e instanceof Node)?!1:!!document.querySelector(`[${t}]`)?.contains(e)}function lr(e,t,n){if(!t)return!1;let r=e.target;if(!(r instanceof Node))return!1;let i=e.composedPath();return!(i.includes(t)||t.contains(r)||n&&i.some(e=>e instanceof Element&&e.hasAttribute(n))||cr(r,n))}function ur({getContainer:e,excludeAttribute:t,onOutsideClick:n}){let r=r=>{lr(r,e(),t)&&n(r)};return document.addEventListener(`mousedown`,r),()=>document.removeEventListener(`mousedown`,r)}function dr(e){let t=()=>{document.visibilityState===`hidden`&&e()};return document.addEventListener(`visibilitychange`,t),()=>document.removeEventListener(`visibilitychange`,t)}function fr(e){if(!e)return!1;if(!e.paused&&e.currentTime>0){let t=e.buffered;for(let n=0;n<t.length;n++)if(e.currentTime>=t.start(n)&&e.currentTime<t.end(n))return!1}return e.readyState<3&&(e.seeking||e.readyState===2)}const pr=e=>[...e].sort((e,t)=>e.height>0&&t.height>0?t.height-e.height:e.height>0?-1:t.height>0?1:t.bitrate-e.bitrate),k=e=>e.includes(`.m3u8`)||e.includes(`application/vnd.apple.mpegurl`)||e.includes(`manifest(format=m3u8`)||e.toLowerCase().includes(`m3u8`),A=e=>{if(e.height>0&&e.width>0)return`${Math.min(e.height,e.width)}p`;if(e.height>0)return`${e.height}p`;if(e.width>0)return`${e.width}p`;{let t=Math.round(e.bitrate/1e3);return t>=3e3?`1080p`:t>=2e3?`720p`:t>=1e3?`480p`:t>=500?`360p`:t>=250?`240p`:`144p`}},mr=({resolution:e,levels:t,currentLevel:n,autoText:r})=>{let i=e===-1;return i&&t.length>0&&n>=0&&t[n]?`${r} (${t[n].name})`:!i&&e>=0&&t[e]?t[e].name:r},hr=3,gr=1;function _r(){return{networkRetries:0,mediaRecoveries:0}}function vr(e,t){return e.fatal?e.type===`networkError`?t.networkRetries<3?(t.networkRetries+=1,{kind:`retry-network`,attempt:t.networkRetries}):{kind:`give-up`,payload:{error:e.type,code:e.details}}:e.type===`mediaError`&&t.mediaRecoveries<1?(t.mediaRecoveries+=1,{kind:`recover-media`,attempt:t.mediaRecoveries}):{kind:`give-up`,payload:{error:e.type,code:e.details}}:null}let j=null;function yr(){return j??=import(`hls.js`).then(e=>e.default,e=>{throw j=null,e}),j}function br(e){return(t,n)=>{if(!n.audioTracks||n.audioTracks.length<=1)return;let r=n.audioTracks.map((e,t)=>({index:t,label:e.name||e.lang||`Audio Track ${t+1}`,language:e.lang||`unknown`,kind:`main`,track:e}));p.setAvailableAudioTracks(e,r)}}function xr(e,t,n){let r=p.get(e).get();r.audioTrack!==n.id&&(p.get(e).set({...r,audioTrack:n.id}),Oe(n.id))}function Sr(e,t){t(e.levels.map((e,t)=>({height:e.height,width:e.width,bitrate:e.bitrate,name:A(e),index:t})))}function Cr(e){let{hlsInstance:t,events:n,playerId:r,videoUrl:i,onLevelsChange:a,onLevelSwitch:o}=e,s=br(r),c=(e,t)=>xr(r,e,t),l=()=>Sr(t,a);t.on(n.MEDIA_ATTACHED,()=>{t.loadSource(i)}),t.on(n.AUDIO_TRACKS_UPDATED,s),t.on(n.AUDIO_TRACK_SWITCHED,c),t.on(n.LEVELS_UPDATED,l),t.on(n.MANIFEST_PARSED,l),t.on(n.LEVEL_SWITCHED,(e,t)=>o(t.level))}function wr({hlsInstance:e,events:t,videoElement:n},r){for(let i=0;i<n.buffered.length;i++){let a=n.buffered.start(i),o=n.buffered.end(i);(a<r-30||o>r+30)&&e.trigger(t.BUFFER_FLUSHING,{startOffset:a,endOffset:o,type:`video`})}}function Tr(e,t){for(let n=0;n<e.buffered.length;n++){let r=e.buffered.start(n),i=e.buffered.end(n);if(t>=r-5&&t<=i+5)return!0}return!1}function Er(e){let{hlsInstance:t,videoElement:n}=e;return()=>{let r=n.currentTime;Tr(n,r)||(t.config.maxBufferLength=30,wr(e,r))}}function Dr(e){return{debug:!1,enableWorker:!0,lowLatencyMode:!1,backBufferLength:10,maxBufferLength:e?10:30,maxMaxBufferLength:e?20:60,maxBufferSize:6e7,maxBufferHole:.3,manifestLoadingTimeOut:1e4,fragLoadingTimeOut:2e4,startFragPrefetch:!0,highBufferWatchdogPeriod:2,nudgeOffset:.2,nudgeMaxRetry:5,testBandwidth:!0,progressive:!1,abrEwmaDefaultEstimate:5e6,abrMaxWithRealBitrate:!0}}function Or(e,t,n){return!e.isSupported()&&t.canPlayType(`application/vnd.apple.mpegurl`)?(t.src=n,!0):!1}function kr(e,t,n){let r=_r();e.on(t.ERROR,(t,i)=>{let a=vr(i,r);if(a)switch(a.kind){case`retry-network`:e.startLoad();return;case`recover-media`:e.recoverMediaError();return;case`give-up`:n?.(a.payload);return}})}function Ar(e){let{hlsInstance:t,videoElement:n,playerId:r,handleSeeking:i,state:a}=e;return{hls:t,get levels(){return a.levels},get currentLevel(){return a.currentLevel},get isAuto(){return a.isAuto},setQuality:e=>{e===-1?(t.loadLevel=-1,a.isAuto=!0):(t.loadLevel=e,a.isAuto=!1)},destroy:()=>{n.removeEventListener(`seeking`,i),t.destroy(),p.setHlsInstance(r,null)}}}async function jr(e){let{videoElement:t,videoUrl:n,playerId:r,isPreloading:i,onError:a,onLevelsChange:o,onLevelSwitch:s}=e;if(!k(n))return t.src=n,null;let c=await yr();if(Or(c,t,n))return null;let l=new c(Dr(i)),u={levels:[],currentLevel:-1,isAuto:!0},d=Er({hlsInstance:l,events:c.Events,videoElement:t});return t.addEventListener(`seeking`,d),p.setHlsInstance(r,l),l.attachMedia(t),Cr({hlsInstance:l,events:c.Events,playerId:r,videoUrl:n,onLevelsChange:e=>{u.levels=e,o?.(e)},onLevelSwitch:e=>{u.currentLevel=e,s?.(e)}}),kr(l,c.Events,a),Ar({hlsInstance:l,videoElement:t,playerId:r,handleSeeking:d,state:u})}const M=h({segments:/* @__PURE__ */ new Map,currentSegment:/* @__PURE__ */ new Map}),N={startSegment(e,t,n){M.get().currentSegment.get(e)&&this.endSegment(e,t);let r=M.get(),i=new Map(r.currentSegment);i.set(e,{start_ms:t,speed:n}),M.set({...r,currentSegment:i})},endSegment(e,t){let n=M.get(),r=n.currentSegment.get(e);if(r){if(t-r.start_ms>100){let i={start_ms:Math.round(r.start_ms),end_ms:Math.round(t),speed:r.speed},a=new Map(n.segments),o=a.get(e)||[];a.set(e,[...o,i]);let s=new Map(n.currentSegment);s.set(e,null),M.set({...n,segments:a,currentSegment:s})}else{let t=new Map(n.currentSegment);t.set(e,null),M.set({...n,currentSegment:t})}}},getSegmentsWithCurrent(e,t){let n=M.get(),r=[...n.segments.get(e)||[]],i=n.currentSegment.get(e);return i&&t-i.start_ms>100&&r.push({start_ms:Math.round(i.start_ms),end_ms:Math.round(t),speed:i.speed}),r},clearSegments(e){let t=M.get(),n=new Map(t.segments);n.delete(e);let r=new Map(t.currentSegment);r.delete(e),M.set({...t,segments:n,currentSegment:r})}};function Mr(e){let{playerId:t,currentTimeMs:n,playbackRate:r}=e;N.startSegment(t,n,r)}function Nr(e){let{playerId:t,currentTimeMs:n}=e;N.endSegment(t,n)}function Pr(e){let{playerId:t,currentTimeMs:n,playbackRate:r,isPaused:i}=e;i||(N.endSegment(t,n),N.startSegment(t,n,r))}const Fr={visible:!1,hideTimeout:null},P={state:/* @__PURE__ */ new Map,get:e=>{let t=P.state.get(e);return t||(t=Ct({...Fr}),P.state.set(e,t)),t},deleteControls:e=>{let t=P.state.get(e);if(t){let e=t.get();e.hideTimeout&&clearTimeout(e.hideTimeout)}P.state.delete(e)},setVisible:(e,t)=>{let n=P.get(e),r=n.get();r.hideTimeout&&clearTimeout(r.hideTimeout),n.setKey(`visible`,t),n.setKey(`hideTimeout`,null)},showControls:(e,t)=>{let n=P.get(e),r=n.get();r.hideTimeout&&clearTimeout(r.hideTimeout);let i=null;t!==void 0&&t>0&&(i=setTimeout(()=>{P.setVisible(e,!1)},t)),n.setKey(`visible`,!0),n.setKey(`hideTimeout`,i)},hideControls:e=>{let t=P.get(e),n=t.get();n.hideTimeout&&clearTimeout(n.hideTimeout),t.setKey(`visible`,!1),t.setKey(`hideTimeout`,null)}},F=h([`main`]),I=h(`forward`),Ir=St(F,e=>e[e.length-1]),Lr=e=>{let t=F.get();t[t.length-1]!==e&&(I.set(`forward`),F.set([...t,e]))},Rr=()=>{let e=F.get();e.length<=1||(I.set(`back`),F.set(e.slice(0,-1)))},zr=()=>{I.set(`back`),F.set([`main`])};function Br(e,t,n){return e>=1?50+(e-1)/(n-1)*50:(e-t)/(1-t)*50}function Vr({rect:e,clientX:t,min:n,max:r,step:i}){let a=n+f((t-e.left)/e.width,0,1)*(r-n),o=Math.round(a/i)*i;return Number(f(o,n,r).toFixed(2))}const Hr={en:{quality:{title:`Quality`,auto:`Auto`},audio:{title:`Audio Tracks`,noTracks:`No audio tracks`},playback:{speed:`Playback speed`,custom:`Custom`,normal:`Normal`},captions:{title:`Subtitles/CC`,off:`Off`,style:`Caption Style`,font:`Font`,background:`Background`,window:`Window`,resetAll:`Reset all`,edgeStyle:{title:`Edge style`,options:{none:`None`,"drop-shadow":`Drop shadow`,raised:`Raised`,depressed:`Depressed`,outline:`Outline`}},fontFamilies:{monospace_serif:`Monospace Serif`,proportional_serif:`Proportional Serif`,monospace_sans:`Monospace Sans-Serif`,proportional_sans:`Proportional Sans-Serif`,casual:`Casual`,cursive:`Cursive`,small_caps:`Small Capitals`}},stats:{title:`Stats for nerds`,copyDebug:`Copy debug info`,videoId:`Video ID`,playerId:`Player ID`,viewport:`Viewport / Frames`,dropped:`dropped`,resolution:`Current / Optimal Res`,volume:`Volume / Normalized`,codecs:`Codecs`,color:`Color`,connectionSpeed:`Connection Speed`,bufferHealth:`Buffer Health`},shortcuts:{title:`Keyboard shortcuts`,playPause:`Play / Pause`,seek10s:`Seek 10s backward / forward`,seek5s:`Seek 5s backward / forward`,pip:`Miniplayer`,fullscreen:`Full screen`,mute:`Mute / Unmute`,volume:`Volume Up / Down`},colors:{white:`White`,yellow:`Yellow`,green:`Green`,cyan:`Cyan`,blue:`Blue`,magenta:`Magenta`,red:`Red`,black:`Black`},common:{back:`Back`,family:`Family`,more:`more`,less:`less`,settings:`Settings`,size:`Size`,opacity:`Opacity`,color:`Color`,reset:`Reset`,custom:`Custom`,options:`Options`,off:`Off`}},de:{quality:{title:`Qualität`,auto:`Automatisch`},audio:{title:`Audiospur`,noTracks:`Keine Audiospuren`},playback:{speed:`Wiedergabegeschwindigkeit`,custom:`Benutzerdefiniert`,normal:`Normal`},captions:{title:`Untertitel/CC`,off:`Aus`,style:`Untertitelstil`,font:`Schriftart`,background:`Hintergrund`,window:`Fenster`,resetAll:`Alles zurücksetzen`,edgeStyle:{title:`Schriftkante`,options:{none:`Keine`,"drop-shadow":`Schlagschatten`,raised:`Erhöht`,depressed:`Vertieft`,outline:`Kontur`}},fontFamilies:{monospace_serif:`Monospace-Serif`,proportional_serif:`Proportional-Serif`,monospace_sans:`Monospace-Sans-Serif`,proportional_sans:`Proportional-Sans-Serif`,casual:`Locker`,cursive:`Kursiv`,small_caps:`Kapitälchen`}},stats:{title:`Statistiken für Nerds`,copyDebug:`Debug-Informationen kopieren`,videoId:`Video-ID`,playerId:`Player-ID`,viewport:`Ansichtsfenster / Bilder`,dropped:`verloren`,resolution:`Aktuell / Optimale Aufl.`,volume:`Lautstärke / Normalisiert`,codecs:`Codecs`,color:`Farbe`,connectionSpeed:`Verbindungsgeschwindigkeit`,bufferHealth:`Pufferzustand`},shortcuts:{title:`Tastaturkürzel`,playPause:`Wiedergabe / Pause`,seek10s:`10s zurück / vor`,seek5s:`5s zurück / vor`,pip:`Bild-im-Bild`,fullscreen:`Vollbild`,mute:`Stumm / Laut`,volume:`Lautstärke auf / ab`},colors:{white:`Weiß`,yellow:`Gelb`,green:`Grün`,cyan:`Cyan`,blue:`Blau`,magenta:`Magenta`,red:`Rot`,black:`Schwarz`},common:{back:`Zurück`,family:`Schriftart`,more:`mehr`,less:`weniger`,settings:`Einstellungen`,size:`Schriftgröße`,opacity:`Deckkraft`,color:`Farbe`,reset:`Zurücksetzen`,custom:`Benutzerdefiniert`,options:`Optionen`,off:`Aus`}},es:{quality:{title:`Calidad`,auto:`Automática`},audio:{title:`Pista de audio`,noTracks:`Sin pistas de audio`},playback:{speed:`Velocidad de reproducción`,custom:`Personalizado`,normal:`Normal`},captions:{title:`Subtítulos/CC`,off:`Desactivados`,style:`Estilo de subtítulos`,font:`Fuente`,background:`Fondo`,window:`Ventana`,resetAll:`Restablecer todo`,edgeStyle:{title:`Estilo de borde`,options:{none:`Ninguno`,"drop-shadow":`Sombra paralela`,raised:`Elevado`,depressed:`Hundido`,outline:`Contorno`}},fontFamilies:{monospace_serif:`Serif monoespaciada`,proportional_serif:`Serif proporcional`,monospace_sans:`Sans monoespaciada`,proportional_sans:`Sans proporcional`,casual:`Informal`,cursive:`Cursiva`,small_caps:`Versalitas`}},stats:{title:`Estadísticas técnicas`,copyDebug:`Copiar información de depuración`,videoId:`ID del video`,playerId:`ID del reproductor`,viewport:`Ventana gráfica / Fotogramas`,dropped:`perdidos`,resolution:`Resolución actual / óptima`,volume:`Volumen / normalizado`,codecs:`Códecs`,color:`Color`,connectionSpeed:`Velocidad de conexión`,bufferHealth:`Estado del búfer`},shortcuts:{title:`Atajos de teclado`,playPause:`Reproducir / Pausa`,seek10s:`Retroceder / Avanzar 10s`,seek5s:`Retroceder / Avanzar 5s`,pip:`Minirreproductor`,fullscreen:`Pantalla completa`,mute:`Silenciar / Activar sonido`,volume:`Subir / Bajar volumen`},colors:{white:`Blanco`,yellow:`Amarillo`,green:`Verde`,cyan:`Cian`,blue:`Azul`,magenta:`Magenta`,red:`Rojo`,black:`Negro`},common:{back:`Atrás`,family:`Familia`,more:`más`,less:`menos`,settings:`Ajustes`,size:`Tamaño`,opacity:`Opacidad`,color:`Color`,reset:`Restablecer`,custom:`Personalizado`,options:`Opciones`,off:`Desactivados`}},fr:{quality:{title:`Qualité`,auto:`Automatique`},audio:{title:`Piste audio`,noTracks:`Aucune piste audio`},playback:{speed:`Vitesse de lecture`,custom:`Personnalisé`,normal:`Normal`},captions:{title:`Sous-titres/CC`,off:`Désactivé`,style:`Style des sous-titres`,font:`Police`,background:`Arrière-plan`,window:`Fenêtre`,resetAll:`Tout réinitialiser`,edgeStyle:{title:`Style de bordure`,options:{none:`Aucun`,"drop-shadow":`Ombre portée`,raised:`Relief`,depressed:`Enfoncé`,outline:`Contour`}},fontFamilies:{monospace_serif:`Serif mono-espacé`,proportional_serif:`Serif proportionnel`,monospace_sans:`Sans mono-espacé`,proportional_sans:`Sans proportionnel`,casual:`Décontractée`,cursive:`Cursive`,small_caps:`Petites capitales`}},stats:{title:`Statistiques avancées`,copyDebug:`Copier les infos de débogage`,videoId:`ID de la vidéo`,playerId:`ID du lecteur`,viewport:`Fenêtre / Images`,dropped:`perdues`,resolution:`Rés. actuelle / optimale`,volume:`Volume / normalisé`,codecs:`Codecs`,color:`Couleur`,connectionSpeed:`Vitesse de connexion`,bufferHealth:`État du tampon`},shortcuts:{title:`Raccourcis clavier`,playPause:`Lecture / Pause`,seek10s:`Reculer / Avancer de 10s`,seek5s:`Reculer / Avancer de 5s`,pip:`Mini-lecteur`,fullscreen:`Plein écran`,mute:`Muet / Son`,volume:`Volume haut / bas`},colors:{white:`Blanc`,yellow:`Jaune`,green:`Vert`,cyan:`Cyan`,blue:`Bleu`,magenta:`Magenta`,red:`Rouge`,black:`Noir`},common:{back:`Retour`,family:`Famille`,more:`plus`,less:`moins`,settings:`Paramètres`,size:`Taille`,opacity:`Opacité`,color:`Couleur`,reset:`Réinitialiser`,custom:`Personnalisé`,options:`Options`,off:`Désactivé`}},it:{quality:{title:`Qualità`,auto:`Automatico`},audio:{title:`Traccia audio`,noTracks:`Nessuna traccia audio`},playback:{speed:`Velocità di riproduzione`,custom:`Personalizzato`,normal:`Normale`},captions:{title:`Sottotitoli/CC`,off:`Disattivati`,style:`Stile sottotitoli`,font:`Carattere`,background:`Sfondo`,window:`Finestra`,resetAll:`Ripristina tutto`,edgeStyle:{title:`Bordo carattere`,options:{none:`Nessuno`,"drop-shadow":`Ombra esterna`,raised:`Rilievo`,depressed:`Incavato`,outline:`Contorno`}},fontFamilies:{monospace_serif:`Serif a spaziatura fissa`,proportional_serif:`Serif proporzionale`,monospace_sans:`Sans a spaziatura fissa`,proportional_sans:`Sans proporzionale`,casual:`Casual`,cursive:`Corsivo`,small_caps:`Maiuscoletto`}},stats:{title:`Statistiche avanzate`,copyDebug:`Copia info di debug`,videoId:`ID video`,playerId:`ID lettore`,viewport:`Area visibile / Fotogrammi`,dropped:`persi`,resolution:`Risoluzione attuale / ottimale`,volume:`Volume / normalizzato`,codecs:`Codec`,color:`Colore`,connectionSpeed:`Velocità di connessione`,bufferHealth:`Stato del buffer`},shortcuts:{title:`Scorciatoie da tastiera`,playPause:`Riproduci / Pausa`,seek10s:`Indietro / Avanti 10s`,seek5s:`Indietro / Avanti 5s`,pip:`Miniplayer`,fullscreen:`Schermo intero`,mute:`Muto / Attiva audio`,volume:`Volume su / giù`},colors:{white:`Bianco`,yellow:`Giallo`,green:`Verde`,cyan:`Ciano`,blue:`Blu`,magenta:`Magenta`,red:`Rosso`,black:`Nero`},common:{back:`Indietro`,family:`Famiglia`,more:`altro`,less:`meno`,settings:`Impostazioni`,size:`Dimensione`,opacity:`Opacità`,color:`Colore`,reset:`Ripristina`,custom:`Personalizzato`,options:`Opzioni`,off:`Disattivati`}},pl:{quality:{title:`Jakość`,auto:`Automatyczna`},audio:{title:`Ścieżka audio`,noTracks:`Brak ścieżek audio`},playback:{speed:`Prędkość odtwarzania`,custom:`Niestandardowa`,normal:`Normalna`},captions:{title:`Napisy`,off:`Wyłączone`,style:`Styl napisów`,font:`Czcionka`,background:`Tło`,window:`Okno`,resetAll:`Resetuj wszystko`,edgeStyle:{title:`Krawędź`,options:{none:`Brak`,"drop-shadow":`Cień`,raised:`Wypukły`,depressed:`Wklęsły`,outline:`Kontur`}},fontFamilies:{monospace_serif:`Szeryfowa o stałej szerokości`,proportional_serif:`Szeryfowa proporcjonalna`,monospace_sans:`Bezszeryfowa o stałej szerokości`,proportional_sans:`Bezszeryfowa proporcjonalna`,casual:`Swobodna`,cursive:`Pisanka`,small_caps:`Kapitaliki`}},stats:{title:`Statystyki techniczne`,copyDebug:`Kopiuj informacje debugowania`,videoId:`ID wideo`,playerId:`ID odtwarzacza`,viewport:`Widok / Klatki`,dropped:`zgubione`,resolution:`Aktualna / optymalna rozdz.`,volume:`Głośność / znormalizowana`,codecs:`Kodeki`,color:`Kolor`,connectionSpeed:`Prędkość połączenia`,bufferHealth:`Stan bufora`},shortcuts:{title:`Skróty klawiszowe`,playPause:`Odtwórz / Pauza`,seek10s:`10s wstecz / do przodu`,seek5s:`5s wstecz / do przodu`,pip:`Odtwarzacz w oknie`,fullscreen:`Pełny ekran`,mute:`Wycisz / Wyłącz wyciszenie`,volume:`Głośność w górę / w dół`},colors:{white:`Biały`,yellow:`Żółty`,green:`Zielony`,cyan:`Cyjan`,blue:`Niebieski`,magenta:`Magenta`,red:`Czerwony`,black:`Czarny`},common:{back:`Wstecz`,family:`Krój`,more:`więcej`,less:`mniej`,settings:`Ustawienia`,size:`Rozmiar`,opacity:`Przezroczystość`,color:`Kolor`,reset:`Resetuj`,custom:`Niestandardowe`,options:`Opcje`,off:`Wyłączone`}},ru:{quality:{title:`Качество`,auto:`Авто`},audio:{title:`Аудиодорожки`,noTracks:`Нет аудиодорожек`},playback:{speed:`Скорость воспроизведения`,custom:`Произвольно`,normal:`Обычная`},captions:{title:`Субтитры`,off:`Выкл.`,style:`Стиль субтитров`,font:`Шрифт`,background:`Фон`,window:`Окно`,resetAll:`Сбросить всё`,edgeStyle:{title:`Стиль обводки`,options:{none:`Нет`,"drop-shadow":`Тень`,raised:`Приподнятая`,depressed:`Утопленная`,outline:`Контур`}},fontFamilies:{monospace_serif:`Моноширинный с засечками`,proportional_serif:`Пропорциональный с засечками`,monospace_sans:`Моноширинный без засечек`,proportional_sans:`Пропорциональный без засечек`,casual:`Неформальный`,cursive:`Курсив`,small_caps:`Капители`}},stats:{title:`Статистика для сисадминов`,copyDebug:`Копировать отладочную информацию`,videoId:`ID видео`,playerId:`ID плеера`,viewport:`Окно просмотра / Кадры`,dropped:`пропусков`,resolution:`Текущ. / оптим. разр.`,volume:`Громкость / нормал.`,codecs:`Кодеки`,color:`Цвет`,connectionSpeed:`Скорость соединения`,bufferHealth:`Состояние буфера`},shortcuts:{title:`Сочетания клавиш`,playPause:`Воспроизведение / Пауза`,seek10s:`10с назад / вперед`,seek5s:`5с назад / вперед`,pip:`Мини-плеер`,fullscreen:`Полноэкранный режим`,mute:`Вкл. / Выкл. звук`,volume:`Громче / тише`},colors:{white:`Белый`,yellow:`Жёлтый`,green:`Зелёный`,cyan:`Циан`,blue:`Синий`,magenta:`Маджента`,red:`Красный`,black:`Чёрный`},common:{back:`Назад`,family:`Гарнитура`,more:`ещё`,less:`меньше`,settings:`Настройки`,size:`Размер`,opacity:`Прозрачность`,color:`Цвет`,reset:`Сбросить`,custom:`Пользовательский`,options:`Параметры`,off:`Выкл.`}},tr:{quality:{title:`Kalite`,auto:`Otomatik`},audio:{title:`Ses parçası`,noTracks:`Ses parçası yok`},playback:{speed:`Oynatma hızı`,custom:`Özel`,normal:`Normal`},captions:{title:`Altyazılar`,off:`Kapalı`,style:`Altyazı Stili`,font:`Yazı tipi`,background:`Arka plan`,window:`Pencere`,resetAll:`Tümünü sıfırla`,edgeStyle:{title:`Kenar stili`,options:{none:`Yok`,"drop-shadow":`Gölge`,raised:`Kabartma`,depressed:`Çökük`,outline:`Dış çizgi`}},fontFamilies:{monospace_serif:`Sabit aralıklı serif`,proportional_serif:`Orantılı serif`,monospace_sans:`Sabit aralıklı sans`,proportional_sans:`Orantılı sans`,casual:`Gündelik`,cursive:`El yazısı`,small_caps:`Küçük büyük harf`}},stats:{title:`Gelişmiş istatistikler`,copyDebug:`Hata ayıklama bilgisini kopyala`,videoId:`Video kimliği`,playerId:`Oynatıcı kimliği`,viewport:`Görüntü alanı / Kareler`,dropped:`düşen`,resolution:`Geçerli / optimal çöz.`,volume:`Ses düzeyi / normalize`,codecs:`Kodekler`,color:`Renk`,connectionSpeed:`Bağlantı hızı`,bufferHealth:`Arabellek durumu`},shortcuts:{title:`Klavye kısayolları`,playPause:`Oynat / Duraklat`,seek10s:`10sn Geri / İleri`,seek5s:`5sn Geri / İleri`,pip:`Mini oynatıcı`,fullscreen:`Tam ekran`,mute:`Sesi Aç / Kapat`,volume:`Ses Aç / Kıs`},colors:{white:`Beyaz`,yellow:`Sarı`,green:`Yeşil`,cyan:`Camgöbeği`,blue:`Mavi`,magenta:`Eflatun`,red:`Kırmızı`,black:`Siyah`},common:{back:`Geri`,family:`Aile`,more:`daha fazla`,less:`daha az`,settings:`Ayarlar`,size:`Boyut`,opacity:`Opaklık`,color:`Renk`,reset:`Sıfırla`,custom:`Özel`,options:`Seçenekler`,off:`Kapalı`}},uk:{quality:{title:`Якість`,auto:`Автоматично`},audio:{title:`Аудіодоріжки`,noTracks:`Немає аудіодоріжок`},playback:{speed:`Швидкість відтворення`,custom:`Власна`,normal:`Звичайна`},captions:{title:`Субтитри`,off:`Вимкнено`,style:`Стиль субтитрів`,font:`Шрифт`,background:`Фон`,window:`Вікно`,resetAll:`Скинути все`,edgeStyle:{title:`Стиль обведення`,options:{none:`Немає`,"drop-shadow":`Тінь`,raised:`Піднятий`,depressed:`Втоплений`,outline:`Контур`}},fontFamilies:{monospace_serif:`Моноширинний з зарубками`,proportional_serif:`Пропорційний з зарубками`,monospace_sans:`Моноширинний без зарубок`,proportional_sans:`Пропорційний без зарубок`,casual:`Неформальний`,cursive:`Курсив`,small_caps:`Капітелі`}},stats:{title:`Статистика для сисадмінів`,copyDebug:`Копіювати налагоджувальну інформацію`,videoId:`ID відео`,playerId:`ID програвача`,viewport:`Область перегляду / Кадри`,dropped:`пропусків`,resolution:`Поточна / оптим. розд.`,volume:`Гучність / нормаліз.`,codecs:`Кодеки`,color:`Колір`,connectionSpeed:`Швидкість з'єднання`,bufferHealth:`Стан буфера`},shortcuts:{title:`Комбінації клавіш`,playPause:`Відтворення / Пауза`,seek10s:`10с назад / уперед`,seek5s:`5с назад / уперед`,pip:`Міні-плеєр`,fullscreen:`Повноекранний режим`,mute:`Увімк. / Вимк. звук`,volume:`Гучніше / тихіше`},colors:{white:`Білий`,yellow:`Жовтий`,green:`Зелений`,cyan:`Ціан`,blue:`Синій`,magenta:`Маджента`,red:`Червоний`,black:`Чорний`},common:{back:`Назад`,family:`Гарнітура`,more:`ще`,less:`менше`,settings:`Налаштування`,size:`Розмір`,opacity:`Прозорість`,color:`Колір`,reset:`Скинути`,custom:`Користувацький`,options:`Параметри`,off:`Вимкнено`}}};function Ur(e){return Hr[x(e)]}function Wr(e,t){return{container:t?.container??Me.get(e),video:t?.video??Ae.get(e)}}function Gr(e){return p.get(e).get().isFullscreen||C()}async function Kr(e,t){try{if(C()&&document.exitFullscreen)await document.exitFullscreen();else if(t&&typeof t.webkitExitFullscreen==`function`)t.webkitExitFullscreen();else return;p.setFullscreen(e,!1)}catch{}}async function qr(e,t,n){try{if(t?.requestFullscreen)await t.requestFullscreen();else if(n?.requestFullscreen)await n.requestFullscreen();else if(n&&typeof n.webkitEnterFullscreen==`function`)n.webkitEnterFullscreen();else return;p.setFullscreen(e,!0)}catch{}}function Jr(e){P.setVisible(e,!0)}function Yr(e){P.hideControls(e)}async function Xr(e,t){let{container:n,video:r}=Wr(e,t);(n||r)&&(Gr(e)?await Kr(e,r):await qr(e,n,r))}async function Zr(e,t){let{video:n}=Wr(e,t);if(!n)return;let r=!p.get(e).get().isPictureInPicture;await wn(n),p.setPictureInPicture(e,r)}const Qr=(e,t)=>{let n=De(e.textTracks);p.setAvailableSubtitleTracks(t,n)},$r=e=>{p.setCurrentSubtitleText(e,``)},ei=(e,t)=>{if(!t.current)return;let n=p.get(e).get(),r=n.subtitleTrack;if(r<0||r>=n.availableSubtitleTracks.length){n.currentSubtitleText!==``&&$r(e);return}let i=n.availableSubtitleTracks[r].track;if(i.mode!==`showing`)return;let a=i.activeCues;if(!a||a.length===0){n.currentSubtitleText!==``&&p.setCurrentSubtitleText(e,``);return}Ce(a,i.cues);let o=a[a.length-1],s=Se(o);s!==n.currentSubtitleText&&p.setCurrentSubtitleText(e,s)},ti=(e,t)=>{if(!e||!t||!Number.isFinite(t)||t<=0)return[];let n=[];try{for(let r=0;r<e.length;r++){let i=e.end(r)/t*100;n.push({start:0,end:Math.min(100,i)})}}catch{return[]}return n},ni=(e,t,n)=>{if(!e.length||!n||!Number.isFinite(n)||n<=0)return 0;let r=t/n*100,i=0;return e.forEach(e=>{e.end>r&&e.start<=r+.1&&(i=Math.max(i,e.end-r))}),i};function ri(e,t){return!Number.isFinite(t)||t<=0||!Number.isFinite(e)||e<=0?0:e>=t?1:e/t}function ii(e,t,n){t&&(e.feed_id=t),n&&(e.post_id=n)}function ai({event:e,contentType:t,videoPositionMs:n,videoTotalDurationMs:r}){t===`video`&&(n!==void 0&&(e.video_position_ms=Math.round(n)),r!==void 0&&(e.video_total_duration_ms=Math.round(r)))}function oi({event:e,contentType:t,viewType:n,segments:r}){t===`video`&&L(n)&&r&&r.length!==0&&(e.segments=r)}function si(e){let{contentId:t,contentType:n,viewType:r,watchDurationMs:i,page:a,feedId:o,postId:s,videoPositionMs:c,videoTotalDurationMs:l,segments:u}=e,d={_type:`content_views`,timestamp:Date.now()/1e3,content_id:t,content_type:n,view_type:r,watch_duration_ms:i,page:o?`feed`:a};return ii(d,o,s),ai({event:d,contentType:n,videoPositionMs:c,videoTotalDurationMs:l}),oi({event:d,contentType:n,viewType:r,segments:u}),d}function ci(e){return e===null?0:Date.now()-e}function li(e,t){return t?`feed`:e}function L(e){return e===`watch`||e===`end`}function ui(e){return Math.round(e)}function R(e){return e*1e3}function di(e){return e/1e3}const z=h({});function B(e){z.set({...z.get(),...e})}const fi=`rixl_analytics_device_id`,V=h({deviceId:void 0});function pi(){let e=globalThis.crypto;return e?.randomUUID?e.randomUUID():`${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`}function mi(){if(typeof localStorage<`u`&&localStorage)try{return localStorage.getItem(fi)??void 0}catch{return}}function hi(e){if(typeof localStorage<`u`&&localStorage)try{localStorage.setItem(fi,e)}catch{}}function H(){let e=V.get();if(e.deviceId)return e.deviceId;let t=mi();if(t)return V.set({deviceId:t}),t;let n=pi();return hi(n),V.set({deviceId:n}),n}function gi(e){hi(e),V.set({deviceId:e})}const U=h({sessionId:void 0,started:!1});function _i(){let e=globalThis.crypto;return e?.randomUUID?e.randomUUID():`s-${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`}function vi(){let e=U.get();if(e.sessionId)return e.sessionId;let t=_i();return U.set({...e,sessionId:t}),t}function yi(){return U.get().started}function bi(){U.set({...U.get(),started:!0})}function xi(){U.set({sessionId:void 0,started:!1})}function Si(e){return{_type:`engagement`,timestamp:Date.now()/1e3,engagement_type:e.engagementType,...y({resource_type:e.resourceType,resource_id:e.resourceId,page:e.page,comment_text:e.commentText,share_platform:e.sharePlatform,country:e.country,device_type:e.deviceType,session_id:e.sessionId})}}function Ci(e){return{_type:`interaction`,timestamp:Date.now()/1e3,interaction_type:e.interactionType,...y({element_type:e.elementType,element_id:e.elementId,session_id:e.sessionId,page:e.page,page_url:e.pageUrl,scroll_depth:e.scrollDepth,search_query:e.searchQuery,click_x:e.clickX,click_y:e.clickY,device_type:e.deviceType,browser:e.browser,resource_id:e.resourceId,resource_type:e.resourceType,feed_id:e.feedId,post_id:e.postId,content_id:e.contentId})}}function wi(e){return{_type:`error`,timestamp:Date.now()/1e3,error_type:e.errorType,...y({error_code:e.errorCode,error_message:e.errorMessage,stack_trace:e.stackTrace,resource_type:e.resourceType,resource_id:e.resourceId,endpoint:e.endpoint,session_id:e.sessionId,device_type:e.deviceType,browser:e.browser,os:e.os})}}function Ti(e){return{_type:`session_start`,timestamp:Date.now()/1e3,...y({utm_source:e.utmSource,utm_campaign:e.utmCampaign,browser:e.browser,language:e.language,screen_resolution:e.screenResolution,platform:e.platform,tg_platform:e.tgPlatform,tg_version:e.tgVersion,timezone:e.timezone,timezone_offset:e.timezoneOffset,color_depth:e.colorDepth,touch_support:e.touchSupport,country:e.country,user_id:e.userId})}}function W(e){let t=e/1e3;return`${Number(t.toFixed(3))}s`}function Ei(e){return e===`video`?`MEDIA_TYPE_VIDEO`:`MEDIA_TYPE_IMAGE`}function Di(e){return{start_ms:W(e.start_ms),end_ms:W(e.end_ms),speed:e.speed}}function Oi(e,{context:t,deviceId:n}){let r={content_id:e.content_id,content_type:Ei(e.content_type),view_type:e.view_type,watch_duration_ms:W(e.watch_duration_ms),page:e.page,device_id:e.device_id??n,...y({feed_id:e.feed_id,post_id:e.post_id,video_position_ms:e.video_position_ms===void 0?void 0:W(e.video_position_ms),video_total_duration_ms:e.video_total_duration_ms===void 0?void 0:W(e.video_total_duration_ms),segments:e.segments!==void 0&&e.segments.length>0?e.segments.map(Di):void 0})},i=e.country??t.country;return i!==void 0&&(r.country=i),r}function ki(e,{context:t,sessionId:n}){let r={engagement_type:e.engagement_type,session_id:e.session_id??n,...y({resource_type:e.resource_type,resource_id:e.resource_id,page:e.page,comment_text:e.comment_text,share_platform:e.share_platform})},i=e.country??t.country;i!==void 0&&(r.country=i);let a=e.device_type??t.device;return a!==void 0&&(r.device_type=a),r}function Ai(e,{context:t,sessionId:n}){let r={interaction_type:e.interaction_type,session_id:e.session_id??n,...y({element_type:e.element_type,element_id:e.element_id,page:e.page,page_url:e.page_url,scroll_depth:e.scroll_depth,search_query:e.search_query,click_x:e.click_x,click_y:e.click_y,resource_id:e.resource_id,resource_type:e.resource_type,feed_id:e.feed_id,post_id:e.post_id,content_id:e.content_id,device_type:e.device_type,browser:e.browser})},i=r.device_type??t.device;i!==void 0&&(r.device_type=i);let a=r.browser??t.browser;return a!==void 0&&(r.browser=a),r}function ji(e,{context:t,sessionId:n}){let r={error_type:e.error_type,session_id:e.session_id??n,...y({error_code:e.error_code,error_message:e.error_message,stack_trace:e.stack_trace,resource_type:e.resource_type,resource_id:e.resource_id,endpoint:e.endpoint,device_type:e.device_type,browser:e.browser,os:e.os})},i=r.device_type??t.device;i!==void 0&&(r.device_type=i);let a=r.browser??t.browser;a!==void 0&&(r.browser=a);let o=r.os??t.os;return o!==void 0&&(r.os=o),r}function Mi(e){return{...y({utm_source:e.utm_source,utm_campaign:e.utm_campaign,browser:e.browser,language:e.language,screen_resolution:e.screen_resolution,platform:e.platform,tg_platform:e.tg_platform,tg_version:e.tg_version,timezone:e.timezone,timezone_offset:e.timezone_offset,color_depth:e.color_depth,touch_support:e.touch_support,country:e.country,user_id:e.user_id})}}function Ni(e,t){t!==void 0&&(e.timestamp=(/* @__PURE__ */ new Date(t*1e3)).toISOString())}function Pi(e,t){let n;switch(e._type){case`content_views`:n={content_view:Oi(e,t)};break;case`engagement`:n={engagement:ki(e,t)};break;case`interaction`:n={interaction:Ai(e,t)};break;case`error`:n={error:ji(e,t)};break;case`session_start`:n={session_start:Mi(e)};break;default:throw Error(`Unsupported analytics event type: ${e._type}`)}return Ni(n,e.timestamp),n}const Fi=/* @__PURE__ */ new Set([408,425,429]);function Ii(e){return e>=500||Fi.has(e)}function Li(e,t){return Object.assign(Error(e),{retryable:t})}function Ri(e){return e instanceof Error&&`retryable`in e?e.retryable:!0}let G=[],K=!1,q=null,J=null,Y=null;function zi(){let e=()=>{};return{promise:new Promise(t=>{e=t}),resolve:e}}function Bi(){let e=Y;Y=null,e?.resolve()}function Vi(){return Y??=zi(),q===null&&!K&&(q=setTimeout(()=>{q=null,Hi()},0)),Y.promise}function Hi(){if(K)return J??Promise.resolve();if(G.length===0)return Promise.resolve();let e=Ui().finally(()=>{J===e&&(J=null)});return J=e,e}async function Ui(){K=!0,q&&=(clearTimeout(q),null);try{for(;G.length>0;){let e=G;G=[];let t=Y;Y=null;try{await Gi(e)}catch(n){Wi(e,n),t?.resolve(),Bi();return}t?.resolve()}}finally{K=!1}}function Wi(e,t){console.error(`[Analytics] Failed to flush queue:`,t),Ri(t)&&G.unshift(...e)}async function Gi(e){let t={context:z.get(),deviceId:H(),sessionId:vi()},n=!yi();await Ji(qi(Ki(e,t.context,n),t)),n&&bi()}function Ki(e,t,n){let r=[];return n&&r.push(Xi(t)),r.push(...e),r}function qi(e,t){let n=y({user_id:t.context.user_id,country:t.context.country,city:t.context.city,region:t.context.region,device:t.context.device,os:t.context.os,os_version:t.context.os_version,language:t.context.language,browser:t.context.browser});return{events:e.map(e=>Pi(e,t)),...n}}async function Ji(e){let t;for(let n=0;n<3;n++)try{await Yi(e);return}catch(e){if(t=e,!Ri(e))break}throw t}async function Yi(e){let{response:t}=await lt({body:e});if(t&&!t.ok)throw console.error(`[Analytics] Failed to post events: ${t.status} ${t.statusText}`),Li(`Analytics request failed with ${t.status}`,Ii(t.status))}function Xi(e){return Ti({browser:e.browser,language:e.language,screenResolution:e.screen_resolution,platform:e.platform,tgPlatform:e.tg_platform,tgVersion:e.tg_version,timezone:e.timezone,timezoneOffset:e.timezone_offset,colorDepth:e.color_depth,touchSupport:e.touch_support,country:e.country,userId:e.user_id,utmSource:e.utm_source,utmCampaign:e.utm_campaign})}async function X(e){if(e.length!==0)return G.push(...e),Vi()}function Zi(e){X([Si(e)])}function Qi(e){X([Ci(e)])}function $i(e){X([wi(e)])}async function ea(){return Hi()}function ta(e){X([si(e)])}function na({contentType:e,viewType:t,video:n,playerId:r}){if(e!==`video`||!n)return{};let i=R(n.currentTime),a=R(n.duration),o=r&&L(t)?N.getSegmentsWithCurrent(r,i):void 0;return{videoPositionMs:i,videoTotalDurationMs:a,segments:o&&o.length>0?o:void 0}}function ra(){let e=typeof navigator<`u`?navigator.userAgent:``;return e?/iPad|Tablet|PlayBook|Silk|Android(?!.*Mobile)/i.test(e)?`tablet`:/Mobile|Android|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(e)?`mobile`:`desktop`:`desktop`}function ia(){if(typeof screen<`u`)return`${screen.width}x${screen.height}`}function aa(){if(typeof Intl<`u`)try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function oa(){return(/* @__PURE__ */ new Date()).getTimezoneOffset()*-1}function sa(){return typeof window<`u`&&`ontouchstart`in window}function ca(){let e=typeof navigator<`u`?navigator:void 0;return{device:ra(),os:e?.platform,language:e?.language,browser:e?.userAgent,screen_resolution:ia(),platform:e?.platform,timezone:aa(),timezone_offset:oa(),color_depth:typeof screen<`u`?screen.colorDepth:void 0,touch_support:sa()}}function la(e){let t={user_id:e?.id};e?.language_code&&(t.language=e.language_code),B(t)}function ua(){H(),xi(),B(ca()),_t.subscribe(la)}function da(e,t,n=1){return e.start_time_sec<=t+n&&e.end_time_sec<=t+n}function fa(e,t,n=1){return!e||e.length<=1||t<=0?!1:e.every(e=>da(e,t,n))}function pa(e,t){return e.map((n,r)=>{let i=e[r+1],a=i?i.start_time_sec:t;return{...n,endTime:a,durationSec:a-n.start_time_sec}})}function Z({heatmapData:e,chapterStartTime:t,chapterEndTime:n,videoDuration:r}){if(!e?.length||r<=0)return[];let i=t/r,a=n/r,o=Math.floor(i*e.length),s=Math.ceil(a*e.length);return e.slice(o,Math.max(o+1,s))}function ma(e,t,n){return e?.length?t.map(t=>Z({heatmapData:e,chapterStartTime:t.start_time_sec,chapterEndTime:t.endTime,videoDuration:n})):t.map(()=>[])}function ha(e){return e?.length?Math.max(...e):0}function ga(e,t,n){return e<=t?0:e>=n?100:(e-t)/(n-t)*100}function _a({globalBufferRanges:e,chapterStart:t,chapterEnd:n,videoDuration:r}){if(n-t<=0||r<=0)return[];let i=t/r*100,a=n/r*100;return e.map(e=>{if(e.end<=i||e.start>=a)return null;let t=Math.max(e.start,i),n=Math.min(e.end,a);return{start:(t-i)/(a-i)*100,end:(n-i)/(a-i)*100}}).filter(e=>e!==null)}function va(e,t){return t<=0?0:e/t}function ya({isDragging:e,progress:t,duration:n,currentTime:r}){return e?t*n:r}function ba(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(!r)continue;let i=r.getBoundingClientRect();if(t>=i.left&&t<=i.right)return n}return null}function xa(e,t){if(!e?.length)return null;let n=e.find(e=>e.start_time_sec>t);return n?n.start_time_sec:null}function Sa(e,t){if(!e?.length)return null;let n=-1;for(let r=e.length-1;r>=0;r--)if(e[r].start_time_sec<=t){n=r;break}if(n<0)return null;let r=e[n];return t-r.start_time_sec>3||n===0?r.start_time_sec:e[n-1].start_time_sec}function Ca(e){return e===void 0?0:typeof e==`number`?e:Number(e)}function wa(e){return{video_id:e.video_id??``,total_duration_ms:Ca(e.total_duration_ms),data:e.data??[]}}async function Ta({videoId:e,buckets:t=101}){try{let{data:n,error:r}=await dt({path:{video_id:e},query:{buckets:t}});return r||!n?null:wa(n)}catch{return null}}async function Ea({videoId:e,startDate:t,endDate:n}){try{let r={};t&&(r[`range.start`]=t),n&&(r[`range.end`]=n);let{data:i,error:a}=await ut({path:{video_id:e},query:Object.keys(r).length>0?r:void 0});return a?[]:i?.segments??[]}catch{return[]}}function Da(e){return`getVideoPlaybackQuality`in e?e.getVideoPlaybackQuality().droppedVideoFrames:0}function Oa(e){if(e.buffered.length===0)return 0;let t=e.currentTime;for(let n=0;n<e.buffered.length;n++)if(e.buffered.start(n)<=t&&e.buffered.end(n)>=t)return Math.max(0,e.buffered.end(n)-t);return 0}function ka(e){let t=e.hlsAutoLevelEnabled?e.hlsAutoLevelCapping:e.hlsCurrentLevel;if(t<0||t>=e.hlsLevels.length)return null;let n=e.hlsLevels[t];return n?{width:n.width,height:n.height}:null}function Aa(e){let{video:t}=e;return t?{droppedFrames:Da(t),volume:Math.round(t.volume*100),networkSpeed:e.hlsBandwidthEstimate??0,bufferHealth:Oa(t),currentRes:t.videoWidth>0?{width:t.videoWidth,height:t.videoHeight}:null,optimalRes:ka(e)}:{droppedFrames:0,volume:0,networkSpeed:0,bufferHealth:0,currentRes:null,optimalRes:null}}function Q(){return ft}async function ja(e){let t=await pt(e);return ua(),t}async function $(e,t){let n=await fetch(e,{method:`PUT`,body:t});if(!n.ok)throw Error(`PUT to presigned URL failed: ${n.status} ${n.statusText}`)}async function Ma(e){let t=Q(),n=await mt({client:t,path:{project_id:e.projectId},body:{project_id:e.projectId,org_id:e.orgId,name:e.name}});if(n.error)throw n.error;let r=n.data;return{imageId:r.image_id,uploadUrl:r.upload_url}}async function Na(e,t){let n=await Ma(t);return await $(n.uploadUrl,e),n}async function Pa(e){let t=Q(),n=await bt({client:t,path:{project_id:e.projectId},body:{project_id:e.projectId,org_id:e.orgId,name:e.name,video_quality:e.videoQuality}});if(n.error)throw n.error;let r=n.data;return{videoId:r.video_id,posterId:r.poster_id,videoUploadUrl:r.video_upload_url,posterUploadUrl:r.poster_upload_url}}async function Fa(e,t,n){let r=await Pa(n);return await Promise.all([$(r.videoUploadUrl,e),$(r.posterUploadUrl,t)]),r}async function Ia(e,t,n){let r=Q(),i=await vt({client:r,path:{project_id:e,video_id:t},body:{project_id:e,video_id:t,items:n.map(e=>({language_code:e.languageCode,label:e.label,file_name:e.fileName,format:e.format,...e.size===void 0?{}:{size:e.size}}))}});if(i.error)throw i.error;return{targets:(i.data.targets??[]).map(e=>({id:e.id,languageCode:e.language_code,uploadUrl:e.upload_url}))}}async function La(e,t,n){let r=Q(),i=await yt({client:r,path:{project_id:e,video_id:t},body:{project_id:e,video_id:t,items:n.map(e=>({language_code:e.languageCode,label:e.label,file_name:e.fileName,format:e.format,...e.size===void 0?{}:{size:e.size}}))}});if(i.error)throw i.error;return{targets:(i.data.targets??[]).map(e=>({id:e.id,languageCode:e.language_code,uploadUrl:e.upload_url}))}}async function Ra(e,t,n){let r=await za(n);return await Promise.all([$(r.contentUploadUrl,e),$(r.posterUploadUrl,t)]),r}async function za(e){let t=Q(),n=await gt({client:t,path:{project_id:e.projectId,feed_id:e.feedId},body:{project_id:e.projectId,feed_id:e.feedId,org_id:e.orgId,creator_id:e.creatorId,description:e.description,content_type:e.contentType,file_name:e.fileName,video_quality:e.videoQuality}});if(n.error)throw n.error;let r=n.data;return{postId:r.post_id,contentId:r.content_id,posterId:r.poster_id,contentUploadUrl:r.content_upload_url,posterUploadUrl:r.poster_upload_url}}export{fn as BOTTOM_OFFSET_CONTROLS_HIDDEN,dn as BOTTOM_OFFSET_CONTROLS_VISIBLE,un as BOTTOM_SNAP_THRESHOLD,S as CAPTION_WIDTH_RATIO,nt as COLORS,cn as DEFAULT_CAPTION_FONT_SIZE,nn as DEFAULT_FONT_SIZE,Gt as DEFAULT_IMAGE_ASPECT_RATIO,Gn as DOUBLE_CLICK_THRESHOLD_MS,at as EDGE_STYLES,ve as FEED_COMPONENTS_COUNT,o as FEED_TRANSITION_THRESHOLD,m as FONT_FAMILIES,$e as FONT_SIZES,on as FONT_SIZE_RATIO,sn as FONT_SIZE_VIEWPORT_RATIO,Kt as IMAGE_ASPECT_RATIO_THRESHOLD,ue as IMAGE_DWELL_MS,st as LANG_TYPES,Pn as LOADING_SPINNER_DELAY_MS,ne as LOOP_REBASE_BASE_MULTIPLIER,c as LOOP_REBASE_THRESHOLD_MULTIPLIER,an as MAX_FONT_SIZE,gr as MAX_MEDIA_RECOVERIES,hr as MAX_NETWORK_RETRIES,rn as MIN_FONT_SIZE,Dn as PERSIST_INTERVAL_MS,Je as PLAYBACK_SPEEDS,$t as PLAYER_LANGUAGES,We as PLAY_PAUSE_KEYS,E as PRELOAD_RANGE,Tn as RESUME_MIN_POSITION_SECONDS,En as RESUME_MIN_REMAINING_SECONDS,ln as SAFE_ZONE_MARGIN,Be as SEEK_LARGE_SECONDS,He as SEEK_SMALL_SECONDS,Re as SHORTCUTS_CONFIG,Wn as SINGLE_CLICK_DELAY_MS,Pe as ShortcutAction,Mn as UNLOAD_DISTANCE,Ve as VOLUME_DELTA,D as VideoLoadState,Ir as activeMenu,z as analyticsContextStore,V as analyticsDeviceStore,U as analyticsSessionStore,M as analyticsStore,N as analyticsStoreActions,ur as bindClickOutside,dr as bindDocumentHidden,ar as bindEndedListener,Zn as bindFullscreenChangeListener,Qn as bindPictureInPictureChangeListener,er as bindPipVisibilityReentry,ir as bindPlaybackRateSync,si as buildContentViewEvent,ge as buildTransforms,na as buildVideoAnalyticsPayload,ye as calcShiftCountArray,Rn as calculateAspectRatio,pa as calculateChaptersWithEnd,_n as calculateDragPosition,va as calculateFlexGrow,pn as calculateFontSize,ha as calculateGlobalMax,ma as calculateHeatmapSlices,vn as calculateSafeViewport,_a as calculateSegmentBufferRanges,ga as calculateSegmentProgress,xe as calculateSmoothedEndTime,Ye as calculateVolumeToSet,ci as calculateWatchDuration,me as checkIsCut,f as clamp,rt as clampVolume,Xn as cleanupClickDisambiguation,Ln as cleanupLoadingDebounce,$r as clearSubtitles,Aa as collectVideoStats,ti as computeBufferRanges,ni as computeBufferedAhead,Br as computePlaybackFillPercentage,Vr as computePlaybackValueFromPointer,ri as computeProgressFraction,te as computeScrollIndex,ja as connect,mn as constrainPercentagePosition,P as controlsStore,Ia as createAudioTrackUpload,Kn as createClickDisambiguationState,Dr as createHlsConfig,_r as createHlsErrorRecoveryState,Ma as createImageUpload,Fn as createLoadingDebounceState,za as createPostUpload,La as createSubtitleUpload,Pa as createVideoUpload,vr as decideHlsErrorAction,qe as defaultSettings,tr as deriveVolumeSync,Nr as endSegment,Ue as executeShortcutAction,De as extractSubtitleTracks,a as feedCacheAtom,oe as feedCacheStore,t as feedStore,y as filterUndefined,ba as findHoveredSegmentIndex,Ne as findNextCue,ea as flushAnalytics,Te as formatNumber,we as formatNumberSm,Wt as formatTime,ie as gateVideoEnded,A as generateLevelName,or as getAspectRatioFromPoster,Oa as getBufferHealth,Cn as getCaptionTextStyle,Sn as getCaptionWindowStyle,Se as getCleanCueText,ya as getCurrentPosition,Da as getDroppedFrames,li as getEffectivePage,sr as getFeedPlaybackAction,e as getFeedPost,ae as getFeedPosts,Ea as getHotSegments,Bt as getImage,Yt as getImageAspectRatio,Xt as getImageContainerStyle,Zt as getImageStyle,d as getLoopRebaseThreshold,xa as getNextChapterStart,H as getOrCreateDeviceId,vi as getOrCreateSessionId,Ee as getPersistedAudioTrack,On as getPersistedProgress,be as getPersistedSubtitleTrack,tn as getPlayerControlLabels,Ur as getPlayerMenuLabels,et as getPointerClientX,gn as getPointerOffsets,rr as getPreloadAttribute,Sa as getPrevChapterTarget,mr as getQualityLabel,se as getRebasedLoopIndex,Ze as getRestoredVolume,Fe as getSeekAmount,ze as getSeekPercent,xn as getSmartCaptionPosition,bn as getTextShadowValue,Ut as getVideo,Ta as getVideoHeatmap,Nn as getVideoLoadState,le as getViewportFallbackHeight,Ge as getVolumeDelta,Xe as getVolumeFromPointer,Jn as handleClick,ei as handleCueChange,Yn as handleDoubleClick,Qr as handleLoadedMetadata,Hn as handleVideoError,Bn as handleVideoPause,zn as handleVideoPlay,Vn as handleVideoRateChange,Qt as hexToRGB,b as hexToRGBAString,Yr as hidePlayerControls,Jt as imageRenderReducer,Lt as initProgressBar,qt as initialImageRenderState,ua as initializeAnalyticsContext,_e as initializeVideo,de as isAtEndOfFeed,da as isChapterWithinDuration,lr as isClickOutside,C as isDocumentFullscreen,Ke as isEffectivelyMuted,ce as isFeedExhausted,k as isHlsStream,cr as isInsideExcludedElement,w as isVideoPictureInPicture,tt as loadSettings,F as menuStack,di as msToSeconds,I as navigationDirection,nr as observeViewport,Oe as persistAudioTrack,kn as persistProgress,je as persistSubtitleTrack,hn as pixelsToPercentage,Me as playerContainerElementStore,Ae as playerMediaElementStore,p as playerStateStore,Rr as popMenu,X as postAnalytics,ta as postContentEvent,Zi as postEngagement,$i as postError,Qi as postInteraction,r as postStore,n as postStoreActions,Ce as processCues,Lr as pushMenu,zr as resetMenu,fe as resolveContainerHeight,x as resolvePlayerLanguage,he as resolvePostIndex,Ie as resolveShortcutAction,Pr as restartSegmentIfPlaying,ui as roundMs,it as saveSettings,R as secondsToMs,B as setAnalyticsContext,gi as setDeviceId,s as setHasInteracted,ot as settingsStore,jr as setupHls,u as shiftArray,l as shouldAutoAdvance,ct as shouldBeMuted,pe as shouldDwellAdvance,re as shouldFetchMore,Le as shouldIgnoreKeyboardEvent,L as shouldIncludeSegments,jn as shouldPersistProgress,yn as shouldPinToBottom,ee as shouldRebaseLoopIndex,$n as shouldReenterPictureInPicture,An as shouldResumeFromPosition,fr as shouldShowSpinner,Jr as showPlayerControls,Z as sliceHeatmapData,pr as sortLevelsByQuality,Mr as startSegment,ke as stripHtmlTags,wn as togglePictureInPicture,Xr as togglePlayerFullscreen,Zr as togglePlayerPictureInPicture,In as updateLoadingState,Un as updatePlayerLoadingState,Na as uploadImage,Ra as uploadPost,Fa as uploadVideo,fa as validateChapters,Qe as validateSettings};
|
|
6
|
+
`;default:return`none`}}function $t({position:e,isDragging:t,controlsVisible:n}){let r=t?`none`:`all 300ms ease`;if(Zt(e.y,t)){let t=n?80:24;return{left:`${e.x}%`,top:`calc(100% - ${t}px)`,bottom:`auto`,transform:`translateY(-100%)`,transition:r}}return{left:`${e.x}%`,top:`${e.y}%`,bottom:`auto`,transform:`translateY(0)`,transition:r}}function en(e,t,n){let r=(t||300)*C,i=e.captionWindowOpacity>0?x(e.captionWindowColor,e.captionWindowOpacity):`transparent`;return{width:`${r}px`,backgroundColor:i,cursor:n?`grabbing`:`grab`,touchAction:`none`}}function tn(e,t){let n=p[e.captionFontFamily]||p.proportional_sans;return{fontSize:`${t}px`,fontFamily:n,color:x(e.captionFontColor,e.captionFontOpacity),backgroundColor:e.captionBGOpacity>0?x(e.captionBGColor,e.captionBGOpacity):`transparent`,textShadow:Qt(e.captionCharacterEdgeStyle,t),userSelect:`none`,touchAction:`none`}}function w(){let e=document;return!!(e.fullscreenElement||e.webkitFullscreenElement||e.mozFullScreenElement||e.msFullscreenElement)}function T(e){if(!e)return!1;if(document.pictureInPictureElement===e)return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&t.pictureInPictureElement===e}async function nn(e){if(e)try{T(e)?await document.exitPictureInPicture():await e.requestPictureInPicture()}catch(e){console.error(`Error toggling PIP:`,e)}}const E=`videosdk_progress_map`,rn=5,an=5,on=2e3,sn=e=>{if(typeof window>`u`)return 0;try{let t=window.localStorage.getItem(E);if(!t)return 0;let n=JSON.parse(t);return Math.max(0,Math.floor(n[e]??0))}catch{return 0}},cn=(e,t)=>{if(typeof window<`u`)try{let n=window.localStorage.getItem(E),r=n?JSON.parse(n):{};r[e]=Math.max(0,Math.floor(t)),window.localStorage.setItem(E,JSON.stringify(r))}catch{}};function ln(e,t){return e>5&&e<t-5}function un(e,t){return t-e>on}const D={BEFORE:0,AFTER:1},dn=5,O={UNLOADED:`unloaded`,IDLE:`idle`,PRELOADING:`preloading`,PLAYING:`playing`};function fn(e,t,n){if(n)return O.PLAYING;let r=e-t;return Math.abs(r)>5?O.UNLOADED:r<0&&r>=-D.BEFORE||r>0&&r<=D.AFTER?O.PRELOADING:O.IDLE}const pn=300;function mn(){return{timerId:null}}function hn(e){let{state:t,shouldShow:n,onShow:r,onHide:i}=e;t.timerId!==null&&(clearTimeout(t.timerId),t.timerId=null),n?t.timerId=setTimeout(()=>{t.timerId=null,r()},300):i()}function gn(e){e.timerId!==null&&(clearTimeout(e.timerId),e.timerId=null)}function _n(e,t){if(e&&t&&e.videoWidth!==0&&e.videoHeight!==0)return e.videoWidth/e.videoHeight}function vn(e,t){l.setPaused(e,!1),l.setEnded(e,!1),t.onSegmentStart()}function yn(e,t){l.setPaused(e,!0),t.onSegmentEnd()}function bn(e,t,n){let r=t?.playbackRate;typeof r==`number`&&l.setPlaybackRate(e,r),n.onRestartSegment()}function xn(e,t){l.setPaused(e,!0),l.setLoading(e,!1),t.onShowSpinner(!1)}function Sn(e,t){l.setLoading(e,t)}const Cn=250,wn=400;function Tn(){return{singleClickTimerId:null,lastClickTime:0}}function k(e){e.singleClickTimerId!==null&&(clearTimeout(e.singleClickTimerId),e.singleClickTimerId=null)}function En(e,t){k(e),e.singleClickTimerId=setTimeout(()=>{t(),e.singleClickTimerId=null},250)}function Dn(e){let{state:t,hideUI:n,allowFullscreen:r,isExcludedTarget:i,onTogglePlay:a}=e;if(n||i)return!1;let o=Date.now(),s=o-t.lastClickTime;return t.lastClickTime=o,s>0&&s<400?(k(t),!0):r?(En(t,a),!0):(a(),!0)}function On(e){let{state:t,allowFullscreen:n,isExcludedTarget:r,onToggleFullscreen:i}=e;return!n||r?!1:(k(t),t.lastClickTime=0,i(),!0)}function kn(e){k(e)}function An(e){let t=()=>e(w());return document.addEventListener(`fullscreenchange`,t),()=>document.removeEventListener(`fullscreenchange`,t)}function jn(e,t){if(!e)return()=>void 0;let n=()=>t(T(e));return e.addEventListener(`enterpictureinpicture`,n),e.addEventListener(`leavepictureinpicture`,n),()=>{e.removeEventListener(`enterpictureinpicture`,n),e.removeEventListener(`leavepictureinpicture`,n)}}function Mn({videoElement:e,isCurrentlyInPip:t}){return!(typeof document>`u`||document.visibilityState!==`hidden`||!t||!e||T(e))}function Nn(e,t=e=>console.error(`Error maintaining PIP mode:`,e)){let n=()=>{let n=e();Mn(n)&&n.videoElement.requestPictureInPicture().catch(t)};return document.addEventListener(`visibilitychange`,n),()=>document.removeEventListener(`visibilitychange`,n)}function Pn({forcedMuted:e,playerMuted:t,playerInteracted:n,playerVolume:r,playerPreviousVolume:i}){if(e)return null;if(je({playerMuted:t,playerInteracted:n}))return{muted:!0,volume:null,storeVolumeUpdate:null};let a=be(r,i);return{muted:!1,volume:a,storeVolumeUpdate:r===0?a:null}}function Fn(e,t){if(!e)return()=>void 0;let n=()=>{t({width:e.clientWidth,height:e.clientHeight})};n();let r=new ResizeObserver(n);r.observe(e);let i=null,a=()=>{i===null&&(i=requestAnimationFrame(()=>{i=null,n()}))};return window.addEventListener(`resize`,a),()=>{r.disconnect(),window.removeEventListener(`resize`,a),i!==null&&cancelAnimationFrame(i)}}function In(e){switch(e){case O.UNLOADED:return`none`;case O.IDLE:return`metadata`;case O.PRELOADING:case O.PLAYING:return`auto`}}function Ln(e,t){if(!e)return()=>void 0;e.playbackRate=t;let n=()=>{e.playbackRate=t};return e.addEventListener(`loadeddata`,n),()=>e.removeEventListener(`loadeddata`,n)}function Rn(e,t){return e?(e.addEventListener(`ended`,t),()=>e.removeEventListener(`ended`,t)):()=>void 0}function zn(e){return!e?.width||!e?.height?null:e.width/e.height}function Bn({isFeed:e,isCurrent:t,loadState:n,showSpinner:r,videoReadyState:i}){return e?t?n!==O.PLAYING||r||i<2?`none`:`play`:`pause`:`none`}function Vn(e,t){return!t||!(e instanceof Node)?!1:!!document.querySelector(`[${t}]`)?.contains(e)}function Hn(e,t,n){if(!t)return!1;let r=e.target;if(!(r instanceof Node))return!1;let i=e.composedPath();return!(i.includes(t)||t.contains(r)||n&&i.some(e=>e instanceof Element&&e.hasAttribute(n))||Vn(r,n))}function Un({getContainer:e,excludeAttribute:t,onOutsideClick:n}){let r=r=>{Hn(r,e(),t)&&n(r)};return document.addEventListener(`mousedown`,r),()=>document.removeEventListener(`mousedown`,r)}function Wn(e){let t=()=>{document.visibilityState===`hidden`&&e()};return document.addEventListener(`visibilitychange`,t),()=>document.removeEventListener(`visibilitychange`,t)}function Gn(e){if(!e)return!1;if(!e.paused&&e.currentTime>0){let t=e.buffered;for(let n=0;n<t.length;n++)if(e.currentTime>=t.start(n)&&e.currentTime<t.end(n))return!1}return e.readyState<3&&(e.seeking||e.readyState===2)}const Kn=e=>[...e].sort((e,t)=>e.height>0&&t.height>0?t.height-e.height:e.height>0?-1:t.height>0?1:t.bitrate-e.bitrate),qn=e=>e.includes(`.m3u8`)||e.includes(`application/vnd.apple.mpegurl`)||e.includes(`manifest(format=m3u8`)||e.toLowerCase().includes(`m3u8`),A=e=>{if(e.height>0&&e.width>0)return`${Math.min(e.height,e.width)}p`;if(e.height>0)return`${e.height}p`;if(e.width>0)return`${e.width}p`;{let t=Math.round(e.bitrate/1e3);return t>=3e3?`1080p`:t>=2e3?`720p`:t>=1e3?`480p`:t>=500?`360p`:t>=250?`240p`:`144p`}},Jn=({resolution:e,levels:t,currentLevel:n,autoText:r})=>{let i=e===-1;return i&&t.length>0&&n>=0&&t[n]?`${r} (${t[n].name})`:!i&&e>=0&&t[e]?t[e].name:r},Yn=3,Xn=1;function Zn(){return{networkRetries:0,mediaRecoveries:0}}function Qn(e,t){return e.fatal?e.type===`networkError`?t.networkRetries<3?(t.networkRetries+=1,{kind:`retry-network`,attempt:t.networkRetries}):{kind:`give-up`,payload:{error:e.type,code:e.details}}:e.type===`mediaError`&&t.mediaRecoveries<1?(t.mediaRecoveries+=1,{kind:`recover-media`,attempt:t.mediaRecoveries}):{kind:`give-up`,payload:{error:e.type,code:e.details}}:null}let j=null;function $n(){return j??=import(`hls.js`).then(e=>e.default,e=>{throw j=null,e}),j}function er(e){return(t,n)=>{if(!n.audioTracks||n.audioTracks.length<=1)return;let r=n.audioTracks.map((e,t)=>({index:t,label:e.name||e.lang||`Audio Track ${t+1}`,language:e.lang||`unknown`,kind:`main`,track:e}));l.setAvailableAudioTracks(e,r)}}function tr(e,t,n){let r=l.get(e).get();r.audioTrack!==n.id&&(l.get(e).set({...r,audioTrack:n.id}),u(n.id))}function nr(e,t){t(e.levels.map((e,t)=>({height:e.height,width:e.width,bitrate:e.bitrate,name:A(e),index:t})))}function rr(e){let{hlsInstance:t,events:n,playerId:r,videoUrl:i,onLevelsChange:a,onLevelSwitch:o}=e,s=er(r),c=(e,t)=>tr(r,e,t),l=()=>nr(t,a);t.on(n.MEDIA_ATTACHED,()=>{t.loadSource(i)}),t.on(n.AUDIO_TRACKS_UPDATED,s),t.on(n.AUDIO_TRACK_SWITCHED,c),t.on(n.LEVELS_UPDATED,l),t.on(n.MANIFEST_PARSED,l),t.on(n.LEVEL_SWITCHED,(e,t)=>o(t.level))}function ir({hlsInstance:e,events:t,videoElement:n},r){for(let i=0;i<n.buffered.length;i++){let a=n.buffered.start(i),o=n.buffered.end(i);(a<r-30||o>r+30)&&e.trigger(t.BUFFER_FLUSHING,{startOffset:a,endOffset:o,type:`video`})}}function ar(e,t){for(let n=0;n<e.buffered.length;n++){let r=e.buffered.start(n),i=e.buffered.end(n);if(t>=r-5&&t<=i+5)return!0}return!1}function or(e){let{hlsInstance:t,videoElement:n}=e;return()=>{let r=n.currentTime;ar(n,r)||(t.config.maxBufferLength=30,ir(e,r))}}function sr(e){return{debug:!1,enableWorker:!0,lowLatencyMode:!1,backBufferLength:10,maxBufferLength:e?10:30,maxMaxBufferLength:e?20:60,maxBufferSize:6e7,maxBufferHole:.3,manifestLoadingTimeOut:1e4,fragLoadingTimeOut:2e4,startFragPrefetch:!0,highBufferWatchdogPeriod:2,nudgeOffset:.2,nudgeMaxRetry:5,testBandwidth:!0,progressive:!1,abrEwmaDefaultEstimate:5e6,abrMaxWithRealBitrate:!0}}function cr(e,t,n){return!e.isSupported()&&t.canPlayType(`application/vnd.apple.mpegurl`)?(t.src=n,!0):!1}function lr(e,t,n){let r=Zn();e.on(t.ERROR,(t,i)=>{let a=Qn(i,r);if(a)switch(a.kind){case`retry-network`:e.startLoad();return;case`recover-media`:e.recoverMediaError();return;case`give-up`:n?.(a.payload);return}})}function ur(e){let{hlsInstance:t,videoElement:n,playerId:r,handleSeeking:i,state:a}=e;return{hls:t,get levels(){return a.levels},get currentLevel(){return a.currentLevel},get isAuto(){return a.isAuto},setQuality:e=>{e===-1?(t.loadLevel=-1,a.isAuto=!0):(t.loadLevel=e,a.isAuto=!1)},destroy:()=>{n.removeEventListener(`seeking`,i),t.destroy(),l.setHlsInstance(r,null)}}}async function dr(e){let{videoElement:t,videoUrl:n,playerId:r,isPreloading:i,onError:a,onLevelsChange:o,onLevelSwitch:s}=e;if(!qn(n))return t.src=n,null;let c=await $n();if(cr(c,t,n))return null;let u=new c(sr(i)),d={levels:[],currentLevel:-1,isAuto:!0},f=or({hlsInstance:u,events:c.Events,videoElement:t});return t.addEventListener(`seeking`,f),l.setHlsInstance(r,u),u.attachMedia(t),rr({hlsInstance:u,events:c.Events,playerId:r,videoUrl:n,onLevelsChange:e=>{d.levels=e,o?.(e)},onLevelSwitch:e=>{d.currentLevel=e,s?.(e)}}),lr(u,c.Events,a),ur({hlsInstance:u,videoElement:t,playerId:r,handleSeeking:f,state:d})}const M=m({segments:/* @__PURE__ */ new Map,currentSegment:/* @__PURE__ */ new Map}),N={startSegment(e,t,n){M.get().currentSegment.get(e)&&this.endSegment(e,t);let r=M.get(),i=new Map(r.currentSegment);i.set(e,{start_ms:t,speed:n}),M.set({...r,currentSegment:i})},endSegment(e,t){let n=M.get(),r=n.currentSegment.get(e);if(r){if(t-r.start_ms>100){let i={start_ms:Math.round(r.start_ms),end_ms:Math.round(t),speed:r.speed},a=new Map(n.segments),o=a.get(e)||[];a.set(e,[...o,i]);let s=new Map(n.currentSegment);s.set(e,null),M.set({...n,segments:a,currentSegment:s})}else{let t=new Map(n.currentSegment);t.set(e,null),M.set({...n,currentSegment:t})}}},getSegmentsWithCurrent(e,t){let n=M.get(),r=[...n.segments.get(e)||[]],i=n.currentSegment.get(e);return i&&t-i.start_ms>100&&r.push({start_ms:Math.round(i.start_ms),end_ms:Math.round(t),speed:i.speed}),r},clearSegments(e){let t=M.get(),n=new Map(t.segments);n.delete(e);let r=new Map(t.currentSegment);r.delete(e),M.set({...t,segments:n,currentSegment:r})}};function fr(e){let{playerId:t,currentTimeMs:n,playbackRate:r}=e;N.startSegment(t,n,r)}function pr(e){let{playerId:t,currentTimeMs:n}=e;N.endSegment(t,n)}function mr(e){let{playerId:t,currentTimeMs:n,playbackRate:r,isPaused:i}=e;i||(N.endSegment(t,n),N.startSegment(t,n,r))}const hr={visible:!1,hideTimeout:null},P={state:/* @__PURE__ */ new Map,get:e=>{let t=P.state.get(e);return t||(t=Je({...hr}),P.state.set(e,t)),t},deleteControls:e=>{let t=P.state.get(e);if(t){let e=t.get();e.hideTimeout&&clearTimeout(e.hideTimeout)}P.state.delete(e)},setVisible:(e,t)=>{let n=P.get(e),r=n.get();r.hideTimeout&&clearTimeout(r.hideTimeout),n.setKey(`visible`,t),n.setKey(`hideTimeout`,null)},showControls:(e,t)=>{let n=P.get(e),r=n.get();r.hideTimeout&&clearTimeout(r.hideTimeout);let i=null;t!==void 0&&t>0&&(i=setTimeout(()=>{P.setVisible(e,!1)},t)),n.setKey(`visible`,!0),n.setKey(`hideTimeout`,i)},hideControls:e=>{let t=P.get(e),n=t.get();n.hideTimeout&&clearTimeout(n.hideTimeout),t.setKey(`visible`,!1),t.setKey(`hideTimeout`,null)}},F=m([`main`]),I=m(`forward`),gr=qe(F,e=>e[e.length-1]),_r=e=>{let t=F.get();t[t.length-1]!==e&&(I.set(`forward`),F.set([...t,e]))},vr=()=>{let e=F.get();e.length<=1||(I.set(`back`),F.set(e.slice(0,-1)))},yr=()=>{I.set(`back`),F.set([`main`])};function br(e,t,n){return e>=1?50+(e-1)/(n-1)*50:(e-t)/(1-t)*50}function xr({rect:e,clientX:t,min:n,max:r,step:i}){let a=n+c((t-e.left)/e.width,0,1)*(r-n),o=Math.round(a/i)*i;return Number(c(o,n,r).toFixed(2))}const Sr={en:{quality:{title:`Quality`,auto:`Auto`},audio:{title:`Audio Tracks`,noTracks:`No audio tracks`},playback:{speed:`Playback speed`,custom:`Custom`,normal:`Normal`},captions:{title:`Subtitles/CC`,off:`Off`,style:`Caption Style`,font:`Font`,background:`Background`,window:`Window`,resetAll:`Reset all`,edgeStyle:{title:`Edge style`,options:{none:`None`,"drop-shadow":`Drop shadow`,raised:`Raised`,depressed:`Depressed`,outline:`Outline`}},fontFamilies:{monospace_serif:`Monospace Serif`,proportional_serif:`Proportional Serif`,monospace_sans:`Monospace Sans-Serif`,proportional_sans:`Proportional Sans-Serif`,casual:`Casual`,cursive:`Cursive`,small_caps:`Small Capitals`}},stats:{title:`Stats for nerds`,copyDebug:`Copy debug info`,videoId:`Video ID`,playerId:`Player ID`,viewport:`Viewport / Frames`,dropped:`dropped`,resolution:`Current / Optimal Res`,volume:`Volume / Normalized`,codecs:`Codecs`,color:`Color`,connectionSpeed:`Connection Speed`,bufferHealth:`Buffer Health`},shortcuts:{title:`Keyboard shortcuts`,playPause:`Play / Pause`,seek10s:`Seek 10s backward / forward`,seek5s:`Seek 5s backward / forward`,pip:`Miniplayer`,fullscreen:`Full screen`,mute:`Mute / Unmute`,volume:`Volume Up / Down`},colors:{white:`White`,yellow:`Yellow`,green:`Green`,cyan:`Cyan`,blue:`Blue`,magenta:`Magenta`,red:`Red`,black:`Black`},common:{back:`Back`,family:`Family`,more:`more`,less:`less`,settings:`Settings`,size:`Size`,opacity:`Opacity`,color:`Color`,reset:`Reset`,custom:`Custom`,options:`Options`,off:`Off`}},de:{quality:{title:`Qualität`,auto:`Automatisch`},audio:{title:`Audiospur`,noTracks:`Keine Audiospuren`},playback:{speed:`Wiedergabegeschwindigkeit`,custom:`Benutzerdefiniert`,normal:`Normal`},captions:{title:`Untertitel/CC`,off:`Aus`,style:`Untertitelstil`,font:`Schriftart`,background:`Hintergrund`,window:`Fenster`,resetAll:`Alles zurücksetzen`,edgeStyle:{title:`Schriftkante`,options:{none:`Keine`,"drop-shadow":`Schlagschatten`,raised:`Erhöht`,depressed:`Vertieft`,outline:`Kontur`}},fontFamilies:{monospace_serif:`Monospace-Serif`,proportional_serif:`Proportional-Serif`,monospace_sans:`Monospace-Sans-Serif`,proportional_sans:`Proportional-Sans-Serif`,casual:`Locker`,cursive:`Kursiv`,small_caps:`Kapitälchen`}},stats:{title:`Statistiken für Nerds`,copyDebug:`Debug-Informationen kopieren`,videoId:`Video-ID`,playerId:`Player-ID`,viewport:`Ansichtsfenster / Bilder`,dropped:`verloren`,resolution:`Aktuell / Optimale Aufl.`,volume:`Lautstärke / Normalisiert`,codecs:`Codecs`,color:`Farbe`,connectionSpeed:`Verbindungsgeschwindigkeit`,bufferHealth:`Pufferzustand`},shortcuts:{title:`Tastaturkürzel`,playPause:`Wiedergabe / Pause`,seek10s:`10s zurück / vor`,seek5s:`5s zurück / vor`,pip:`Bild-im-Bild`,fullscreen:`Vollbild`,mute:`Stumm / Laut`,volume:`Lautstärke auf / ab`},colors:{white:`Weiß`,yellow:`Gelb`,green:`Grün`,cyan:`Cyan`,blue:`Blau`,magenta:`Magenta`,red:`Rot`,black:`Schwarz`},common:{back:`Zurück`,family:`Schriftart`,more:`mehr`,less:`weniger`,settings:`Einstellungen`,size:`Schriftgröße`,opacity:`Deckkraft`,color:`Farbe`,reset:`Zurücksetzen`,custom:`Benutzerdefiniert`,options:`Optionen`,off:`Aus`}},es:{quality:{title:`Calidad`,auto:`Automática`},audio:{title:`Pista de audio`,noTracks:`Sin pistas de audio`},playback:{speed:`Velocidad de reproducción`,custom:`Personalizado`,normal:`Normal`},captions:{title:`Subtítulos/CC`,off:`Desactivados`,style:`Estilo de subtítulos`,font:`Fuente`,background:`Fondo`,window:`Ventana`,resetAll:`Restablecer todo`,edgeStyle:{title:`Estilo de borde`,options:{none:`Ninguno`,"drop-shadow":`Sombra paralela`,raised:`Elevado`,depressed:`Hundido`,outline:`Contorno`}},fontFamilies:{monospace_serif:`Serif monoespaciada`,proportional_serif:`Serif proporcional`,monospace_sans:`Sans monoespaciada`,proportional_sans:`Sans proporcional`,casual:`Informal`,cursive:`Cursiva`,small_caps:`Versalitas`}},stats:{title:`Estadísticas técnicas`,copyDebug:`Copiar información de depuración`,videoId:`ID del video`,playerId:`ID del reproductor`,viewport:`Ventana gráfica / Fotogramas`,dropped:`perdidos`,resolution:`Resolución actual / óptima`,volume:`Volumen / normalizado`,codecs:`Códecs`,color:`Color`,connectionSpeed:`Velocidad de conexión`,bufferHealth:`Estado del búfer`},shortcuts:{title:`Atajos de teclado`,playPause:`Reproducir / Pausa`,seek10s:`Retroceder / Avanzar 10s`,seek5s:`Retroceder / Avanzar 5s`,pip:`Minirreproductor`,fullscreen:`Pantalla completa`,mute:`Silenciar / Activar sonido`,volume:`Subir / Bajar volumen`},colors:{white:`Blanco`,yellow:`Amarillo`,green:`Verde`,cyan:`Cian`,blue:`Azul`,magenta:`Magenta`,red:`Rojo`,black:`Negro`},common:{back:`Atrás`,family:`Familia`,more:`más`,less:`menos`,settings:`Ajustes`,size:`Tamaño`,opacity:`Opacidad`,color:`Color`,reset:`Restablecer`,custom:`Personalizado`,options:`Opciones`,off:`Desactivados`}},fr:{quality:{title:`Qualité`,auto:`Automatique`},audio:{title:`Piste audio`,noTracks:`Aucune piste audio`},playback:{speed:`Vitesse de lecture`,custom:`Personnalisé`,normal:`Normal`},captions:{title:`Sous-titres/CC`,off:`Désactivé`,style:`Style des sous-titres`,font:`Police`,background:`Arrière-plan`,window:`Fenêtre`,resetAll:`Tout réinitialiser`,edgeStyle:{title:`Style de bordure`,options:{none:`Aucun`,"drop-shadow":`Ombre portée`,raised:`Relief`,depressed:`Enfoncé`,outline:`Contour`}},fontFamilies:{monospace_serif:`Serif mono-espacé`,proportional_serif:`Serif proportionnel`,monospace_sans:`Sans mono-espacé`,proportional_sans:`Sans proportionnel`,casual:`Décontractée`,cursive:`Cursive`,small_caps:`Petites capitales`}},stats:{title:`Statistiques avancées`,copyDebug:`Copier les infos de débogage`,videoId:`ID de la vidéo`,playerId:`ID du lecteur`,viewport:`Fenêtre / Images`,dropped:`perdues`,resolution:`Rés. actuelle / optimale`,volume:`Volume / normalisé`,codecs:`Codecs`,color:`Couleur`,connectionSpeed:`Vitesse de connexion`,bufferHealth:`État du tampon`},shortcuts:{title:`Raccourcis clavier`,playPause:`Lecture / Pause`,seek10s:`Reculer / Avancer de 10s`,seek5s:`Reculer / Avancer de 5s`,pip:`Mini-lecteur`,fullscreen:`Plein écran`,mute:`Muet / Son`,volume:`Volume haut / bas`},colors:{white:`Blanc`,yellow:`Jaune`,green:`Vert`,cyan:`Cyan`,blue:`Bleu`,magenta:`Magenta`,red:`Rouge`,black:`Noir`},common:{back:`Retour`,family:`Famille`,more:`plus`,less:`moins`,settings:`Paramètres`,size:`Taille`,opacity:`Opacité`,color:`Couleur`,reset:`Réinitialiser`,custom:`Personnalisé`,options:`Options`,off:`Désactivé`}},it:{quality:{title:`Qualità`,auto:`Automatico`},audio:{title:`Traccia audio`,noTracks:`Nessuna traccia audio`},playback:{speed:`Velocità di riproduzione`,custom:`Personalizzato`,normal:`Normale`},captions:{title:`Sottotitoli/CC`,off:`Disattivati`,style:`Stile sottotitoli`,font:`Carattere`,background:`Sfondo`,window:`Finestra`,resetAll:`Ripristina tutto`,edgeStyle:{title:`Bordo carattere`,options:{none:`Nessuno`,"drop-shadow":`Ombra esterna`,raised:`Rilievo`,depressed:`Incavato`,outline:`Contorno`}},fontFamilies:{monospace_serif:`Serif a spaziatura fissa`,proportional_serif:`Serif proporzionale`,monospace_sans:`Sans a spaziatura fissa`,proportional_sans:`Sans proporzionale`,casual:`Casual`,cursive:`Corsivo`,small_caps:`Maiuscoletto`}},stats:{title:`Statistiche avanzate`,copyDebug:`Copia info di debug`,videoId:`ID video`,playerId:`ID lettore`,viewport:`Area visibile / Fotogrammi`,dropped:`persi`,resolution:`Risoluzione attuale / ottimale`,volume:`Volume / normalizzato`,codecs:`Codec`,color:`Colore`,connectionSpeed:`Velocità di connessione`,bufferHealth:`Stato del buffer`},shortcuts:{title:`Scorciatoie da tastiera`,playPause:`Riproduci / Pausa`,seek10s:`Indietro / Avanti 10s`,seek5s:`Indietro / Avanti 5s`,pip:`Miniplayer`,fullscreen:`Schermo intero`,mute:`Muto / Attiva audio`,volume:`Volume su / giù`},colors:{white:`Bianco`,yellow:`Giallo`,green:`Verde`,cyan:`Ciano`,blue:`Blu`,magenta:`Magenta`,red:`Rosso`,black:`Nero`},common:{back:`Indietro`,family:`Famiglia`,more:`altro`,less:`meno`,settings:`Impostazioni`,size:`Dimensione`,opacity:`Opacità`,color:`Colore`,reset:`Ripristina`,custom:`Personalizzato`,options:`Opzioni`,off:`Disattivati`}},pl:{quality:{title:`Jakość`,auto:`Automatyczna`},audio:{title:`Ścieżka audio`,noTracks:`Brak ścieżek audio`},playback:{speed:`Prędkość odtwarzania`,custom:`Niestandardowa`,normal:`Normalna`},captions:{title:`Napisy`,off:`Wyłączone`,style:`Styl napisów`,font:`Czcionka`,background:`Tło`,window:`Okno`,resetAll:`Resetuj wszystko`,edgeStyle:{title:`Krawędź`,options:{none:`Brak`,"drop-shadow":`Cień`,raised:`Wypukły`,depressed:`Wklęsły`,outline:`Kontur`}},fontFamilies:{monospace_serif:`Szeryfowa o stałej szerokości`,proportional_serif:`Szeryfowa proporcjonalna`,monospace_sans:`Bezszeryfowa o stałej szerokości`,proportional_sans:`Bezszeryfowa proporcjonalna`,casual:`Swobodna`,cursive:`Pisanka`,small_caps:`Kapitaliki`}},stats:{title:`Statystyki techniczne`,copyDebug:`Kopiuj informacje debugowania`,videoId:`ID wideo`,playerId:`ID odtwarzacza`,viewport:`Widok / Klatki`,dropped:`zgubione`,resolution:`Aktualna / optymalna rozdz.`,volume:`Głośność / znormalizowana`,codecs:`Kodeki`,color:`Kolor`,connectionSpeed:`Prędkość połączenia`,bufferHealth:`Stan bufora`},shortcuts:{title:`Skróty klawiszowe`,playPause:`Odtwórz / Pauza`,seek10s:`10s wstecz / do przodu`,seek5s:`5s wstecz / do przodu`,pip:`Odtwarzacz w oknie`,fullscreen:`Pełny ekran`,mute:`Wycisz / Wyłącz wyciszenie`,volume:`Głośność w górę / w dół`},colors:{white:`Biały`,yellow:`Żółty`,green:`Zielony`,cyan:`Cyjan`,blue:`Niebieski`,magenta:`Magenta`,red:`Czerwony`,black:`Czarny`},common:{back:`Wstecz`,family:`Krój`,more:`więcej`,less:`mniej`,settings:`Ustawienia`,size:`Rozmiar`,opacity:`Przezroczystość`,color:`Kolor`,reset:`Resetuj`,custom:`Niestandardowe`,options:`Opcje`,off:`Wyłączone`}},ru:{quality:{title:`Качество`,auto:`Авто`},audio:{title:`Аудиодорожки`,noTracks:`Нет аудиодорожек`},playback:{speed:`Скорость воспроизведения`,custom:`Произвольно`,normal:`Обычная`},captions:{title:`Субтитры`,off:`Выкл.`,style:`Стиль субтитров`,font:`Шрифт`,background:`Фон`,window:`Окно`,resetAll:`Сбросить всё`,edgeStyle:{title:`Стиль обводки`,options:{none:`Нет`,"drop-shadow":`Тень`,raised:`Приподнятая`,depressed:`Утопленная`,outline:`Контур`}},fontFamilies:{monospace_serif:`Моноширинный с засечками`,proportional_serif:`Пропорциональный с засечками`,monospace_sans:`Моноширинный без засечек`,proportional_sans:`Пропорциональный без засечек`,casual:`Неформальный`,cursive:`Курсив`,small_caps:`Капители`}},stats:{title:`Статистика для сисадминов`,copyDebug:`Копировать отладочную информацию`,videoId:`ID видео`,playerId:`ID плеера`,viewport:`Окно просмотра / Кадры`,dropped:`пропусков`,resolution:`Текущ. / оптим. разр.`,volume:`Громкость / нормал.`,codecs:`Кодеки`,color:`Цвет`,connectionSpeed:`Скорость соединения`,bufferHealth:`Состояние буфера`},shortcuts:{title:`Сочетания клавиш`,playPause:`Воспроизведение / Пауза`,seek10s:`10с назад / вперед`,seek5s:`5с назад / вперед`,pip:`Мини-плеер`,fullscreen:`Полноэкранный режим`,mute:`Вкл. / Выкл. звук`,volume:`Громче / тише`},colors:{white:`Белый`,yellow:`Жёлтый`,green:`Зелёный`,cyan:`Циан`,blue:`Синий`,magenta:`Маджента`,red:`Красный`,black:`Чёрный`},common:{back:`Назад`,family:`Гарнитура`,more:`ещё`,less:`меньше`,settings:`Настройки`,size:`Размер`,opacity:`Прозрачность`,color:`Цвет`,reset:`Сбросить`,custom:`Пользовательский`,options:`Параметры`,off:`Выкл.`}},tr:{quality:{title:`Kalite`,auto:`Otomatik`},audio:{title:`Ses parçası`,noTracks:`Ses parçası yok`},playback:{speed:`Oynatma hızı`,custom:`Özel`,normal:`Normal`},captions:{title:`Altyazılar`,off:`Kapalı`,style:`Altyazı Stili`,font:`Yazı tipi`,background:`Arka plan`,window:`Pencere`,resetAll:`Tümünü sıfırla`,edgeStyle:{title:`Kenar stili`,options:{none:`Yok`,"drop-shadow":`Gölge`,raised:`Kabartma`,depressed:`Çökük`,outline:`Dış çizgi`}},fontFamilies:{monospace_serif:`Sabit aralıklı serif`,proportional_serif:`Orantılı serif`,monospace_sans:`Sabit aralıklı sans`,proportional_sans:`Orantılı sans`,casual:`Gündelik`,cursive:`El yazısı`,small_caps:`Küçük büyük harf`}},stats:{title:`Gelişmiş istatistikler`,copyDebug:`Hata ayıklama bilgisini kopyala`,videoId:`Video kimliği`,playerId:`Oynatıcı kimliği`,viewport:`Görüntü alanı / Kareler`,dropped:`düşen`,resolution:`Geçerli / optimal çöz.`,volume:`Ses düzeyi / normalize`,codecs:`Kodekler`,color:`Renk`,connectionSpeed:`Bağlantı hızı`,bufferHealth:`Arabellek durumu`},shortcuts:{title:`Klavye kısayolları`,playPause:`Oynat / Duraklat`,seek10s:`10sn Geri / İleri`,seek5s:`5sn Geri / İleri`,pip:`Mini oynatıcı`,fullscreen:`Tam ekran`,mute:`Sesi Aç / Kapat`,volume:`Ses Aç / Kıs`},colors:{white:`Beyaz`,yellow:`Sarı`,green:`Yeşil`,cyan:`Camgöbeği`,blue:`Mavi`,magenta:`Eflatun`,red:`Kırmızı`,black:`Siyah`},common:{back:`Geri`,family:`Aile`,more:`daha fazla`,less:`daha az`,settings:`Ayarlar`,size:`Boyut`,opacity:`Opaklık`,color:`Renk`,reset:`Sıfırla`,custom:`Özel`,options:`Seçenekler`,off:`Kapalı`}},uk:{quality:{title:`Якість`,auto:`Автоматично`},audio:{title:`Аудіодоріжки`,noTracks:`Немає аудіодоріжок`},playback:{speed:`Швидкість відтворення`,custom:`Власна`,normal:`Звичайна`},captions:{title:`Субтитри`,off:`Вимкнено`,style:`Стиль субтитрів`,font:`Шрифт`,background:`Фон`,window:`Вікно`,resetAll:`Скинути все`,edgeStyle:{title:`Стиль обведення`,options:{none:`Немає`,"drop-shadow":`Тінь`,raised:`Піднятий`,depressed:`Втоплений`,outline:`Контур`}},fontFamilies:{monospace_serif:`Моноширинний з зарубками`,proportional_serif:`Пропорційний з зарубками`,monospace_sans:`Моноширинний без зарубок`,proportional_sans:`Пропорційний без зарубок`,casual:`Неформальний`,cursive:`Курсив`,small_caps:`Капітелі`}},stats:{title:`Статистика для сисадмінів`,copyDebug:`Копіювати налагоджувальну інформацію`,videoId:`ID відео`,playerId:`ID програвача`,viewport:`Область перегляду / Кадри`,dropped:`пропусків`,resolution:`Поточна / оптим. розд.`,volume:`Гучність / нормаліз.`,codecs:`Кодеки`,color:`Колір`,connectionSpeed:`Швидкість з'єднання`,bufferHealth:`Стан буфера`},shortcuts:{title:`Комбінації клавіш`,playPause:`Відтворення / Пауза`,seek10s:`10с назад / уперед`,seek5s:`5с назад / уперед`,pip:`Міні-плеєр`,fullscreen:`Повноекранний режим`,mute:`Увімк. / Вимк. звук`,volume:`Гучніше / тихіше`},colors:{white:`Білий`,yellow:`Жовтий`,green:`Зелений`,cyan:`Ціан`,blue:`Синій`,magenta:`Маджента`,red:`Червоний`,black:`Чорний`},common:{back:`Назад`,family:`Гарнітура`,more:`ще`,less:`менше`,settings:`Налаштування`,size:`Розмір`,opacity:`Прозорість`,color:`Колір`,reset:`Скинути`,custom:`Користувацький`,options:`Параметри`,off:`Вимкнено`}}};function Cr(e){return Sr[S(e)]}function wr(e,t){return{container:t?.container??te.get(e),video:t?.video??f.get(e)}}function Tr(e){return l.get(e).get().isFullscreen||w()}async function Er(e,t){try{if(w()&&document.exitFullscreen)await document.exitFullscreen();else if(t&&typeof t.webkitExitFullscreen==`function`)t.webkitExitFullscreen();else return;l.setFullscreen(e,!1)}catch{}}async function Dr(e,t,n){try{if(t?.requestFullscreen)await t.requestFullscreen();else if(n?.requestFullscreen)await n.requestFullscreen();else if(n&&typeof n.webkitEnterFullscreen==`function`)n.webkitEnterFullscreen();else return;l.setFullscreen(e,!0)}catch{}}function Or(e){P.setVisible(e,!0)}function kr(e){P.hideControls(e)}async function Ar(e,t){let{container:n,video:r}=wr(e,t);(n||r)&&(Tr(e)?await Er(e,r):await Dr(e,n,r))}async function jr(e,t){let{video:n}=wr(e,t);if(!n)return;let r=!l.get(e).get().isPictureInPicture;await nn(n),l.setPictureInPicture(e,r)}const Mr=(e,t)=>{let n=s(e.textTracks);l.setAvailableSubtitleTracks(t,n)},Nr=e=>{l.setCurrentSubtitleText(e,``)},Pr=(e,t)=>{if(!t.current)return;let i=l.get(e).get(),a=i.subtitleTrack;if(a<0||a>=i.availableSubtitleTracks.length){i.currentSubtitleText!==``&&Nr(e);return}let o=i.availableSubtitleTracks[a].track;if(o.mode!==`showing`)return;let s=o.activeCues;if(!s||s.length===0){i.currentSubtitleText!==``&&l.setCurrentSubtitleText(e,``);return}r(s,o.cues);let c=s[s.length-1],u=n(c);u!==i.currentSubtitleText&&l.setCurrentSubtitleText(e,u)},Fr=(e,t)=>{if(!e||!t||!Number.isFinite(t)||t<=0)return[];let n=[];try{for(let r=0;r<e.length;r++){let i=e.end(r)/t*100;n.push({start:0,end:Math.min(100,i)})}}catch{return[]}return n},Ir=(e,t,n)=>{if(!e.length||!n||!Number.isFinite(n)||n<=0)return 0;let r=t/n*100,i=0;return e.forEach(e=>{e.end>r&&e.start<=r+.1&&(i=Math.max(i,e.end-r))}),i};function Lr(e,t){return!Number.isFinite(t)||t<=0||!Number.isFinite(e)||e<=0?0:e>=t?1:e/t}function Rr(e,t,n){t&&(e.feed_id=t),n&&(e.post_id=n)}function zr({event:e,contentType:t,videoPositionMs:n,videoTotalDurationMs:r}){t===`video`&&(n!==void 0&&(e.video_position_ms=Math.round(n)),r!==void 0&&(e.video_total_duration_ms=Math.round(r)))}function Br({event:e,contentType:t,viewType:n,segments:r}){t===`video`&&L(n)&&r&&r.length!==0&&(e.segments=r)}function Vr(e){let{contentId:t,contentType:n,viewType:r,watchDurationMs:i,page:a,feedId:o,postId:s,videoPositionMs:c,videoTotalDurationMs:l,segments:u}=e,d={_type:`content_views`,timestamp:Date.now()/1e3,content_id:t,content_type:n,view_type:r,watch_duration_ms:i,page:o?`feed`:a};return Rr(d,o,s),zr({event:d,contentType:n,videoPositionMs:c,videoTotalDurationMs:l}),Br({event:d,contentType:n,viewType:r,segments:u}),d}function Hr(e){return e===null?0:Date.now()-e}function Ur(e,t){return t?`feed`:e}function L(e){return e===`watch`||e===`end`}function Wr(e){return Math.round(e)}function R(e){return e*1e3}function Gr(e){return e/1e3}const z=m({});function B(e){z.set({...z.get(),...e})}const Kr=`rixl_analytics_device_id`,V=m({deviceId:void 0});function qr(){let e=globalThis.crypto;return e?.randomUUID?e.randomUUID():`${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`}function Jr(){if(typeof localStorage<`u`&&localStorage)try{return localStorage.getItem(Kr)??void 0}catch{return}}function Yr(e){if(typeof localStorage<`u`&&localStorage)try{localStorage.setItem(Kr,e)}catch{}}function H(){let e=V.get();if(e.deviceId)return e.deviceId;let t=Jr();if(t)return V.set({deviceId:t}),t;let n=qr();return Yr(n),V.set({deviceId:n}),n}function Xr(e){Yr(e),V.set({deviceId:e})}const U=m({sessionId:void 0,started:!1});function Zr(){let e=globalThis.crypto;return e?.randomUUID?e.randomUUID():`s-${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`}function Qr(){let e=U.get();if(e.sessionId)return e.sessionId;let t=Zr();return U.set({...e,sessionId:t}),t}function $r(){return U.get().started}function ei(){U.set({...U.get(),started:!0})}function ti(){U.set({sessionId:void 0,started:!1})}function ni(e){return{_type:`engagement`,timestamp:Date.now()/1e3,engagement_type:e.engagementType,...b({resource_type:e.resourceType,resource_id:e.resourceId,page:e.page,comment_text:e.commentText,share_platform:e.sharePlatform,country:e.country,device_type:e.deviceType,session_id:e.sessionId})}}function ri(e){return{_type:`interaction`,timestamp:Date.now()/1e3,interaction_type:e.interactionType,...b({element_type:e.elementType,element_id:e.elementId,session_id:e.sessionId,page:e.page,page_url:e.pageUrl,scroll_depth:e.scrollDepth,search_query:e.searchQuery,click_x:e.clickX,click_y:e.clickY,device_type:e.deviceType,browser:e.browser,resource_id:e.resourceId,resource_type:e.resourceType,feed_id:e.feedId,post_id:e.postId,content_id:e.contentId})}}function ii(e){return{_type:`error`,timestamp:Date.now()/1e3,error_type:e.errorType,...b({error_code:e.errorCode,error_message:e.errorMessage,stack_trace:e.stackTrace,resource_type:e.resourceType,resource_id:e.resourceId,endpoint:e.endpoint,session_id:e.sessionId,device_type:e.deviceType,browser:e.browser,os:e.os})}}function ai(e){return{_type:`session_start`,timestamp:Date.now()/1e3,...b({utm_source:e.utmSource,utm_campaign:e.utmCampaign,browser:e.browser,language:e.language,screen_resolution:e.screenResolution,platform:e.platform,tg_platform:e.tgPlatform,tg_version:e.tgVersion,timezone:e.timezone,timezone_offset:e.timezoneOffset,color_depth:e.colorDepth,touch_support:e.touchSupport,country:e.country,user_id:e.userId})}}function W(e){let t=e/1e3;return`${Number(t.toFixed(3))}s`}function oi(e){return e===`video`?`MEDIA_TYPE_VIDEO`:`MEDIA_TYPE_IMAGE`}function si(e){return{start_ms:W(e.start_ms),end_ms:W(e.end_ms),speed:e.speed}}function ci(e,{context:t,deviceId:n}){let r={content_id:e.content_id,content_type:oi(e.content_type),view_type:e.view_type,watch_duration_ms:W(e.watch_duration_ms),page:e.page,device_id:e.device_id??n,...b({feed_id:e.feed_id,post_id:e.post_id,video_position_ms:e.video_position_ms===void 0?void 0:W(e.video_position_ms),video_total_duration_ms:e.video_total_duration_ms===void 0?void 0:W(e.video_total_duration_ms),segments:e.segments!==void 0&&e.segments.length>0?e.segments.map(si):void 0})},i=e.country??t.country;return i!==void 0&&(r.country=i),r}function li(e,{context:t,sessionId:n}){let r={engagement_type:e.engagement_type,session_id:e.session_id??n,...b({resource_type:e.resource_type,resource_id:e.resource_id,page:e.page,comment_text:e.comment_text,share_platform:e.share_platform})},i=e.country??t.country;i!==void 0&&(r.country=i);let a=e.device_type??t.device;return a!==void 0&&(r.device_type=a),r}function ui(e,{context:t,sessionId:n}){let r={interaction_type:e.interaction_type,session_id:e.session_id??n,...b({element_type:e.element_type,element_id:e.element_id,page:e.page,page_url:e.page_url,scroll_depth:e.scroll_depth,search_query:e.search_query,click_x:e.click_x,click_y:e.click_y,resource_id:e.resource_id,resource_type:e.resource_type,feed_id:e.feed_id,post_id:e.post_id,content_id:e.content_id,device_type:e.device_type,browser:e.browser})},i=r.device_type??t.device;i!==void 0&&(r.device_type=i);let a=r.browser??t.browser;return a!==void 0&&(r.browser=a),r}function di(e,{context:t,sessionId:n}){let r={error_type:e.error_type,session_id:e.session_id??n,...b({error_code:e.error_code,error_message:e.error_message,stack_trace:e.stack_trace,resource_type:e.resource_type,resource_id:e.resource_id,endpoint:e.endpoint,device_type:e.device_type,browser:e.browser,os:e.os})},i=r.device_type??t.device;i!==void 0&&(r.device_type=i);let a=r.browser??t.browser;a!==void 0&&(r.browser=a);let o=r.os??t.os;return o!==void 0&&(r.os=o),r}function fi(e){return{...b({utm_source:e.utm_source,utm_campaign:e.utm_campaign,browser:e.browser,language:e.language,screen_resolution:e.screen_resolution,platform:e.platform,tg_platform:e.tg_platform,tg_version:e.tg_version,timezone:e.timezone,timezone_offset:e.timezone_offset,color_depth:e.color_depth,touch_support:e.touch_support,country:e.country,user_id:e.user_id})}}function pi(e,t){t!==void 0&&(e.timestamp=(/* @__PURE__ */ new Date(t*1e3)).toISOString())}function mi(e,t){let n;switch(e._type){case`content_views`:n={content_view:ci(e,t)};break;case`engagement`:n={engagement:li(e,t)};break;case`interaction`:n={interaction:ui(e,t)};break;case`error`:n={error:di(e,t)};break;case`session_start`:n={session_start:fi(e)};break;default:throw Error(`Unsupported analytics event type: ${e._type}`)}return pi(n,e.timestamp),n}const hi=/* @__PURE__ */ new Set([408,425,429]);function gi(e){return e>=500||hi.has(e)}function _i(e,t){return Object.assign(Error(e),{retryable:t})}function vi(e){return e instanceof Error&&`retryable`in e?e.retryable:!0}let G=[],K=!1,q=null,J=null,Y=null;function yi(){let e=()=>{};return{promise:new Promise(t=>{e=t}),resolve:e}}function bi(){let e=Y;Y=null,e?.resolve()}function xi(){return Y??=yi(),q===null&&!K&&(q=setTimeout(()=>{q=null,Si()},0)),Y.promise}function Si(){if(K)return J??Promise.resolve();if(G.length===0)return Promise.resolve();let e=Ci().finally(()=>{J===e&&(J=null)});return J=e,e}async function Ci(){K=!0,q&&=(clearTimeout(q),null);try{for(;G.length>0;){let e=G;G=[];let t=Y;Y=null;try{await Ti(e)}catch(n){wi(e,n),t?.resolve(),bi();return}t?.resolve()}}finally{K=!1}}function wi(e,t){console.error(`[Analytics] Failed to flush queue:`,t),vi(t)&&G.unshift(...e)}async function Ti(e){let t={context:z.get(),deviceId:H(),sessionId:Qr()},n=!$r();await Oi(Di(Ei(e,t.context,n),t)),n&&ei()}function Ei(e,t,n){let r=[];return n&&r.push(Ai(t)),r.push(...e),r}function Di(e,t){let n=b({user_id:t.context.user_id,country:t.context.country,city:t.context.city,region:t.context.region,device:t.context.device,os:t.context.os,os_version:t.context.os_version,language:t.context.language,browser:t.context.browser});return{events:e.map(e=>mi(e,t)),...n}}async function Oi(e){let t;for(let n=0;n<3;n++)try{await ki(e);return}catch(e){if(t=e,!vi(e))break}throw t}async function ki(e){let{response:t}=await Me({body:e});if(t&&!t.ok)throw console.error(`[Analytics] Failed to post events: ${t.status} ${t.statusText}`),_i(`Analytics request failed with ${t.status}`,gi(t.status))}function Ai(e){return ai({browser:e.browser,language:e.language,screenResolution:e.screen_resolution,platform:e.platform,tgPlatform:e.tg_platform,tgVersion:e.tg_version,timezone:e.timezone,timezoneOffset:e.timezone_offset,colorDepth:e.color_depth,touchSupport:e.touch_support,country:e.country,userId:e.user_id,utmSource:e.utm_source,utmCampaign:e.utm_campaign})}async function X(e){if(e.length!==0)return G.push(...e),xi()}function ji(e){X([ni(e)])}function Mi(e){X([ri(e)])}function Ni(e){X([ii(e)])}async function Pi(){return Si()}function Fi(e){X([Vr(e)])}function Ii({contentType:e,viewType:t,video:n,playerId:r}){if(e!==`video`||!n)return{};let i=R(n.currentTime),a=R(n.duration),o=r&&L(t)?N.getSegmentsWithCurrent(r,i):void 0;return{videoPositionMs:i,videoTotalDurationMs:a,segments:o&&o.length>0?o:void 0}}function Li(){let e=typeof navigator<`u`?navigator.userAgent:``;return e?/iPad|Tablet|PlayBook|Silk|Android(?!.*Mobile)/i.test(e)?`tablet`:/Mobile|Android|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(e)?`mobile`:`desktop`:`desktop`}function Ri(){if(typeof screen<`u`)return`${screen.width}x${screen.height}`}function zi(){if(typeof Intl<`u`)try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function Bi(){return(/* @__PURE__ */ new Date()).getTimezoneOffset()*-1}function Vi(){return typeof window<`u`&&`ontouchstart`in window}function Hi(){let e=typeof navigator<`u`?navigator:void 0;return{device:Li(),os:e?.platform,language:e?.language,browser:e?.userAgent,screen_resolution:Ri(),platform:e?.platform,timezone:zi(),timezone_offset:Bi(),color_depth:typeof screen<`u`?screen.colorDepth:void 0,touch_support:Vi()}}function Ui(e){let t={user_id:e?.id};e?.language_code&&(t.language=e.language_code),B(t)}function Wi(){H(),ti(),B(Hi()),He.subscribe(Ui)}function Gi(e,t,n=1){return e.start_time_sec<=t+n&&e.end_time_sec<=t+n}function Ki(e,t,n=1){return!e||e.length<=1||t<=0?!1:e.every(e=>Gi(e,t,n))}function qi(e,t){return e.map((n,r)=>{let i=e[r+1],a=i?i.start_time_sec:t;return{...n,endTime:a,durationSec:a-n.start_time_sec}})}function Z({heatmapData:e,chapterStartTime:t,chapterEndTime:n,videoDuration:r}){if(!e?.length||r<=0)return[];let i=t/r,a=n/r,o=Math.floor(i*e.length),s=Math.ceil(a*e.length);return e.slice(o,Math.max(o+1,s))}function Ji(e,t,n){return e?.length?t.map(t=>Z({heatmapData:e,chapterStartTime:t.start_time_sec,chapterEndTime:t.endTime,videoDuration:n})):t.map(()=>[])}function Yi(e){return e?.length?Math.max(...e):0}function Xi(e,t,n){return e<=t?0:e>=n?100:(e-t)/(n-t)*100}function Zi({globalBufferRanges:e,chapterStart:t,chapterEnd:n,videoDuration:r}){if(n-t<=0||r<=0)return[];let i=t/r*100,a=n/r*100;return e.map(e=>{if(e.end<=i||e.start>=a)return null;let t=Math.max(e.start,i),n=Math.min(e.end,a);return{start:(t-i)/(a-i)*100,end:(n-i)/(a-i)*100}}).filter(e=>e!==null)}function Qi(e,t){return t<=0?0:e/t}function $i({isDragging:e,progress:t,duration:n,currentTime:r}){return e?t*n:r}function ea(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(!r)continue;let i=r.getBoundingClientRect();if(t>=i.left&&t<=i.right)return n}return null}function ta(e,t){if(!e?.length)return null;let n=e.find(e=>e.start_time_sec>t);return n?n.start_time_sec:null}function na(e,t){if(!e?.length)return null;let n=-1;for(let r=e.length-1;r>=0;r--)if(e[r].start_time_sec<=t){n=r;break}if(n<0)return null;let r=e[n];return t-r.start_time_sec>3||n===0?r.start_time_sec:e[n-1].start_time_sec}function ra(e){return e===void 0?0:typeof e==`number`?e:Number(e)}function ia(e){return{video_id:e.video_id??``,total_duration_ms:ra(e.total_duration_ms),data:e.data??[]}}async function aa({videoId:e,buckets:t=101}){try{let{data:n,error:r}=await Pe({path:{video_id:e},query:{buckets:t}});return r||!n?null:ia(n)}catch{return null}}async function oa({videoId:e,startDate:t,endDate:n}){try{let r={};t&&(r[`range.start`]=t),n&&(r[`range.end`]=n);let{data:i,error:a}=await Ne({path:{video_id:e},query:Object.keys(r).length>0?r:void 0});return a?[]:i?.segments??[]}catch{return[]}}function sa(e){return`getVideoPlaybackQuality`in e?e.getVideoPlaybackQuality().droppedVideoFrames:0}function ca(e){if(e.buffered.length===0)return 0;let t=e.currentTime;for(let n=0;n<e.buffered.length;n++)if(e.buffered.start(n)<=t&&e.buffered.end(n)>=t)return Math.max(0,e.buffered.end(n)-t);return 0}function la(e){let t=e.hlsAutoLevelEnabled?e.hlsAutoLevelCapping:e.hlsCurrentLevel;if(t<0||t>=e.hlsLevels.length)return null;let n=e.hlsLevels[t];return n?{width:n.width,height:n.height}:null}function ua(e){let{video:t}=e;return t?{droppedFrames:sa(t),volume:Math.round(t.volume*100),networkSpeed:e.hlsBandwidthEstimate??0,bufferHealth:ca(t),currentRes:t.videoWidth>0?{width:t.videoWidth,height:t.videoHeight}:null,optimalRes:la(e)}:{droppedFrames:0,volume:0,networkSpeed:0,bufferHealth:0,currentRes:null,optimalRes:null}}function Q(){return Fe}async function da(e){let t=await Ie(e);return Wi(),t}async function $(e,t){let n=await fetch(e,{method:`PUT`,body:t});if(!n.ok)throw Error(`PUT to presigned URL failed: ${n.status} ${n.statusText}`)}async function fa(e){let t=Q(),n=await Le({client:t,path:{project_id:e.projectId},body:{project_id:e.projectId,org_id:e.orgId,name:e.name}});if(n.error)throw n.error;let r=n.data;return{imageId:r.image_id,uploadUrl:r.upload_url}}async function pa(e,t){let n=await fa(t);return await $(n.uploadUrl,e),n}async function ma(e){let t=Q(),n=await Ge({client:t,path:{project_id:e.projectId},body:{project_id:e.projectId,org_id:e.orgId,name:e.name,video_quality:e.videoQuality}});if(n.error)throw n.error;let r=n.data;return{videoId:r.video_id,posterId:r.poster_id,videoUploadUrl:r.video_upload_url,posterUploadUrl:r.poster_upload_url}}async function ha(e,t,n){let r=await ma(n);return await Promise.all([$(r.videoUploadUrl,e),$(r.posterUploadUrl,t)]),r}async function ga(e,t,n){let r=Q(),i=await Ue({client:r,path:{project_id:e,video_id:t},body:{project_id:e,video_id:t,items:n.map(e=>({language_code:e.languageCode,label:e.label,file_name:e.fileName,format:e.format,...e.size===void 0?{}:{size:e.size}}))}});if(i.error)throw i.error;return{targets:(i.data.targets??[]).map(e=>({id:e.id,languageCode:e.language_code,uploadUrl:e.upload_url}))}}async function _a(e,t,n){let r=Q(),i=await We({client:r,path:{project_id:e,video_id:t},body:{project_id:e,video_id:t,items:n.map(e=>({language_code:e.languageCode,label:e.label,file_name:e.fileName,format:e.format,...e.size===void 0?{}:{size:e.size}}))}});if(i.error)throw i.error;return{targets:(i.data.targets??[]).map(e=>({id:e.id,languageCode:e.language_code,uploadUrl:e.upload_url}))}}async function va(e,t,n){let r=await ya(n);return await Promise.all([$(r.contentUploadUrl,e),$(r.posterUploadUrl,t)]),r}async function ya(e){let t=Q(),n=await ze({client:t,path:{project_id:e.projectId,feed_id:e.feedId},body:{project_id:e.projectId,feed_id:e.feedId,org_id:e.orgId,creator_id:e.creatorId,description:e.description,content_type:e.contentType,file_name:e.fileName,video_quality:e.videoQuality}});if(n.error)throw n.error;let r=n.data;return{postId:r.post_id,contentId:r.content_id,posterId:r.poster_id,contentUploadUrl:r.content_upload_url,posterUploadUrl:r.poster_upload_url}}export{Wt as BOTTOM_OFFSET_CONTROLS_HIDDEN,Ut as BOTTOM_OFFSET_CONTROLS_VISIBLE,Ht as BOTTOM_SNAP_THRESHOLD,C as CAPTION_WIDTH_RATIO,Te as COLORS,Bt as DEFAULT_CAPTION_FONT_SIZE,Ft as DEFAULT_FONT_SIZE,wt as DEFAULT_IMAGE_ASPECT_RATIO,wn as DOUBLE_CLICK_THRESHOLD_MS,Oe as EDGE_STYLES,p as FONT_FAMILIES,Se as FONT_SIZES,Rt as FONT_SIZE_RATIO,zt as FONT_SIZE_VIEWPORT_RATIO,Tt as IMAGE_ASPECT_RATIO_THRESHOLD,Ae as LANG_TYPES,pn as LOADING_SPINNER_DELAY_MS,Lt as MAX_FONT_SIZE,Xn as MAX_MEDIA_RECOVERIES,Yn as MAX_NETWORK_RETRIES,It as MIN_FONT_SIZE,on as PERSIST_INTERVAL_MS,_e as PLAYBACK_SPEEDS,Mt as PLAYER_LANGUAGES,pe as PLAY_PAUSE_KEYS,D as PRELOAD_RANGE,rn as RESUME_MIN_POSITION_SECONDS,an as RESUME_MIN_REMAINING_SECONDS,Vt as SAFE_ZONE_MARGIN,le as SEEK_LARGE_SECONDS,de as SEEK_SMALL_SECONDS,se as SHORTCUTS_CONFIG,Cn as SINGLE_CLICK_DELAY_MS,re as ShortcutAction,dn as UNLOAD_DISTANCE,ue as VOLUME_DELTA,O as VideoLoadState,gr as activeMenu,z as analyticsContextStore,V as analyticsDeviceStore,U as analyticsSessionStore,M as analyticsStore,N as analyticsStoreActions,Un as bindClickOutside,Wn as bindDocumentHidden,Rn as bindEndedListener,An as bindFullscreenChangeListener,jn as bindPictureInPictureChangeListener,Nn as bindPipVisibilityReentry,Ln as bindPlaybackRateSync,Vr as buildContentViewEvent,Ii as buildVideoAnalyticsPayload,_n as calculateAspectRatio,qi as calculateChaptersWithEnd,Yt as calculateDragPosition,Qi as calculateFlexGrow,Gt as calculateFontSize,Yi as calculateGlobalMax,Ji as calculateHeatmapSlices,Xt as calculateSafeViewport,Zi as calculateSegmentBufferRanges,Xi as calculateSegmentProgress,t as calculateSmoothedEndTime,ve as calculateVolumeToSet,Hr as calculateWatchDuration,c as clamp,Ee as clampVolume,kn as cleanupClickDisambiguation,gn as cleanupLoadingDebounce,Nr as clearSubtitles,ua as collectVideoStats,Fr as computeBufferRanges,Ir as computeBufferedAhead,br as computePlaybackFillPercentage,xr as computePlaybackValueFromPointer,Lr as computeProgressFraction,da as connect,Kt as constrainPercentagePosition,P as controlsStore,ga as createAudioTrackUpload,Tn as createClickDisambiguationState,sr as createHlsConfig,Zn as createHlsErrorRecoveryState,fa as createImageUpload,mn as createLoadingDebounceState,ya as createPostUpload,_a as createSubtitleUpload,ma as createVideoUpload,Qn as decideHlsErrorAction,ge as defaultSettings,Pn as deriveVolumeSync,pr as endSegment,fe as executeShortcutAction,s as extractSubtitleTracks,b as filterUndefined,ea as findHoveredSegmentIndex,ne as findNextCue,Pi as flushAnalytics,a as formatNumber,i as formatNumberSm,Ct as formatTime,A as generateLevelName,zn as getAspectRatioFromPoster,ca as getBufferHealth,tn as getCaptionTextStyle,en as getCaptionWindowStyle,n as getCleanCueText,$i as getCurrentPosition,sa as getDroppedFrames,Ur as getEffectivePage,Bn as getFeedPlaybackAction,ht as getFeedPost,gt as getFeedPosts,oa as getHotSegments,yt as getImage,Ot as getImageAspectRatio,kt as getImageContainerStyle,At as getImageStyle,ta as getNextChapterStart,H as getOrCreateDeviceId,Qr as getOrCreateSessionId,o as getPersistedAudioTrack,sn as getPersistedProgress,e as getPersistedSubtitleTrack,Pt as getPlayerControlLabels,Cr as getPlayerMenuLabels,Ce as getPointerClientX,Jt as getPointerOffsets,In as getPreloadAttribute,na as getPrevChapterTarget,Jn as getQualityLabel,be as getRestoredVolume,ie as getSeekAmount,ce as getSeekPercent,$t as getSmartCaptionPosition,Qt as getTextShadowValue,St as getVideo,aa as getVideoHeatmap,fn as getVideoLoadState,me as getVolumeDelta,ye as getVolumeFromPointer,Dn as handleClick,Pr as handleCueChange,On as handleDoubleClick,Mr as handleLoadedMetadata,xn as handleVideoError,yn as handleVideoPause,vn as handleVideoPlay,bn as handleVideoRateChange,jt as hexToRGB,x as hexToRGBAString,kr as hidePlayerControls,Dt as imageRenderReducer,st as initProgressBar,Et as initialImageRenderState,Wi as initializeAnalyticsContext,Gi as isChapterWithinDuration,Hn as isClickOutside,w as isDocumentFullscreen,he as isEffectivelyMuted,qn as isHlsStream,Vn as isInsideExcludedElement,T as isVideoPictureInPicture,we as loadSettings,F as menuStack,Gr as msToSeconds,I as navigationDirection,Fn as observeViewport,u as persistAudioTrack,cn as persistProgress,ee as persistSubtitleTrack,qt as pixelsToPercentage,te as playerContainerElementStore,f as playerMediaElementStore,l as playerStateStore,vr as popMenu,X as postAnalytics,Fi as postContentEvent,ji as postEngagement,Ni as postError,Mi as postInteraction,r as processCues,_r as pushMenu,yr as resetMenu,S as resolvePlayerLanguage,ae as resolveShortcutAction,mr as restartSegmentIfPlaying,Wr as roundMs,De as saveSettings,R as secondsToMs,B as setAnalyticsContext,Xr as setDeviceId,ke as settingsStore,dr as setupHls,je as shouldBeMuted,oe as shouldIgnoreKeyboardEvent,L as shouldIncludeSegments,un as shouldPersistProgress,Zt as shouldPinToBottom,Mn as shouldReenterPictureInPicture,ln as shouldResumeFromPosition,Gn as shouldShowSpinner,Or as showPlayerControls,Z as sliceHeatmapData,Kn as sortLevelsByQuality,fr as startSegment,d as stripHtmlTags,nn as togglePictureInPicture,Ar as togglePlayerFullscreen,jr as togglePlayerPictureInPicture,hn as updateLoadingState,Sn as updatePlayerLoadingState,pa as uploadImage,va as uploadPost,ha as uploadVideo,Ki as validateChapters,xe as validateSettings};
|
package/package.json
CHANGED
package/dist/chunks/BZFoe94X.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{postsV1PostServiceGetPost3 as e,postsV1PostServiceListPosts3 as t}from"@rixl/sdk";import{atom as n}from"nanostores";function r(e){return e===`MEDIA_TYPE_IMAGE`?`image`:e===`MEDIA_TYPE_VIDEO`?`video`:`image`}function i(e){let t=e;return{id:e.id??``,feedId:e.feed_id??``,creatorId:e.creator_id??``,type:r(e.type),description:e.description??``,createdAt:e.created_at??``,image:t.image,video:t.video}}function a(e,t,n){let r=e.total??0;return{posts:(e.posts??[]).map(i),total:typeof r==`number`?r:Number(r),offset:e.offset??t,limit:e.limit??n}}const o=async(e,n=0,r=10)=>{let{data:i,error:o,response:s}=await t({path:{feed_id:e},query:{"pagination.offset":n,"pagination.limit":r}});if(o||!i)throw Error(`HTTP error! status: ${s?.status??500}`);return a(i,n,r)},s=async(t,n)=>{let{data:r,error:a,response:o}=await e({path:{feed_id:t,post_id:n}});if(a)throw Error(`HTTP error! status: ${o?.status??500}`);if(!r?.post)throw Error(`HTTP error! status: 404`);return i(r.post)},c=()=>{let e=/* @__PURE__ */ new Map,t=/* @__PURE__ */ new Map;return{get:async(n,r)=>{let i=e.get(n);if(i)return i;let a=t.get(n);if(a)return a;let o=r(n).then(r=>(e.set(n,r),t.delete(n),r)).catch(e=>{throw t.delete(n),e});return t.set(n,o),o}}},l=c(),u=/* @__PURE__ */ new Map,d=async(e,t)=>{let n=`${e}:${t}`;return l.get(n,()=>s(e,t))},f=async(e,t=0,n=10)=>{if(t>0)return o(e,t,n);let r=`feed:${e}`,i=u.get(r);if(i)return i;let a=await o(e,t,n);return u.set(r,a),a.posts.forEach(t=>{let n=`${e}:${t.id}`;l.get(n,()=>Promise.resolve(t))}),a},p=`rixl_feed_cache`,m=n({cachedPosts:[],isLoadingFromCache:!1});function h(e){return typeof e==`object`&&!!e}function g(e){return typeof e.id==`string`&&typeof e.creatorId==`string`&&typeof e.feedId==`string`&&typeof e.description==`string`&&typeof e.createdAt==`string`}function _(e){if(!h(e)||!g(e))return!1;let t=e.type===`video`,n=e.type===`image`;return!t&&!n?!1:t?e.video!==void 0:e.image!==void 0}function v(e){try{let t=localStorage.getItem(p);if(!t)return[];let n=JSON.parse(t);if(n.version!==6||e&&n.feedId&&n.feedId!==e)return localStorage.removeItem(p),[];let r=n.posts.filter(e=>_(e)?!0:(console.warn(`[FeedCache] Invalid post found in cache:`,e),!1));return r.length!==n.posts.length&&y(r,e),r}catch{return localStorage.removeItem(p),[]}}function y(e,t){try{let n={version:6,feedId:t,posts:e.slice(0,50),timestamp:Date.now()};localStorage.setItem(p,JSON.stringify(n))}catch(e){e instanceof DOMException&&e.name===`QuotaExceededError`&&localStorage.removeItem(p)}}const b={currentFeedId:void 0,loadCache(e){this.currentFeedId=e,m.set({...m.get(),isLoadingFromCache:!0});let t=v(e);return m.set({cachedPosts:t,isLoadingFromCache:!1}),t},saveNewPosts(e,t){if(t!==void 0&&t!==this.currentFeedId)return;let n=m.get(),r=new Set(n.cachedPosts.map(e=>e.id)),i=e.filter(e=>!r.has(e.id));if(i.length===0)return;let a=[...n.cachedPosts,...i];m.set({...n,cachedPosts:a}),y(a,this.currentFeedId)},removePost(e){let t=m.get(),n=t.cachedPosts.filter(t=>t.id!==e);n.length!==t.cachedPosts.length&&(m.set({...t,cachedPosts:n}),y(n,this.currentFeedId))},clearCache(){localStorage.removeItem(p),m.set({cachedPosts:[],isLoadingFromCache:!1})},getCacheStats(){try{let e=localStorage.getItem(p);if(!e)return{size:0,timestamp:null};let t=JSON.parse(e);return{size:t.posts.length,timestamp:t.timestamp}}catch{return{size:0,timestamp:null}}}},x=n({initialized:!1,feedId:``,posts:[],isLoadedInitial:!0,isFetchingVideos:!1,currentIndex:0,total:0});let S=0;function C(e){return e===S}const w={init(e){S+=1;let t=b.loadCache(e);x.set({...x.get(),feedId:e,initialized:!0,posts:t,currentIndex:0,total:0,isLoadedInitial:t.length>0,isFetchingVideos:!1})},async loadInitialPosts(){let e=x.get();if(e.isFetchingVideos)return;let t=S,n=e.feedId;x.set({...e,isFetchingVideos:!0});try{let e=x.get(),r=await f(n);if(!C(t))return;let i=[...e.posts,...r.posts],a=Array.from(new Map(i.map(e=>[e.id,e])).values());b.saveNewPosts(r.posts,n),x.set({...x.get(),posts:a,isLoadedInitial:!0,total:r.total})}catch(e){console.error(`[PostStore] Error loading posts:`,e)}finally{C(t)&&x.set({...x.get(),isFetchingVideos:!1})}},async fetchNewVideos(){let e=x.get();if(e.isFetchingVideos||!e.initialized)return;let t=S,n=e.feedId;x.set({...e,isFetchingVideos:!0});try{let e=x.get(),r=await f(n,e.posts?e.posts.length:0);if(!C(t))return;x.set({...x.get(),posts:[...x.get().posts,...r.posts],total:r.total})}finally{C(t)&&x.set({...x.get(),isFetchingVideos:!1})}},setCurrentIndex(e){let t=x.get();if(e!==t.currentIndex){let n=t.posts[t.currentIndex];n&&b.removePost(n.id),x.set({...t,currentIndex:e})}}},T=5,E=2,D={hasInteracted:n(!1),whenInteracted:n(/* @__PURE__ */ new Date(0)),hasInitialized:n(!1),videosInitialized:n(5),components:n(Array.from({length:5})),originalPositions:n(Array.from({length:5}).map((e,t)=>t)),transforms:n(Array.from({length:5}).map((e,t)=>t)),setTransforms:e=>{let t=D.transforms.get();t.length===e.length&&t.every((t,n)=>t===e[n])||D.transforms.set(e)}},O=()=>(D.hasInitialized.get()&&(D.hasInteracted.set(!0),D.whenInteracted.set(/* @__PURE__ */ new Date)),D.hasInteracted.get()),k=()=>{D.videosInitialized.set(D.videosInitialized.get()+1),D.videosInitialized.get()>=5&&D.hasInitialized.set(!0)},A=2,j=50;function M(e,t){let n=e.length;return t%=n,t<0&&(t=n+t),[...e.slice(t),...e.slice(0,t)]}function N(e,t){let n=Math.floor(e/t),r=e%t,i=[];for(let e=0;e<t;e++)e<t-r?i.push(n):i.push(n+1);return i}function P(e,t){if(e<=2)return t;let n=N(e-2,5),r=M(t,e-2);return n.forEach((e,t)=>{r[t]+=e*5}),r}function F(e,t,n=.3){return t<=0||e<=0?0:Math.ceil(e/t-n)}function I(e,t){return e>=t-1}function L(e,t){return t>0&&e>=t}function R({currentIndex:e,postsLength:t,total:n,isFetching:r,isLoaded:i}){return r||!i||L(t,n)?!1:e>=t-3}function z(e,t,n){return!n||t===0?e:(e%t+t)%t}function B(e){return Math.max(250,e*50)}function V({currentIndex:e,postsLength:t,loop:n,total:r}){return n&&t>0&&L(t,r)&&e>=B(t)}function H(e,t){let n=(e%t+t)%t;return t*2+n}const U=5e3;function W(e,t,n){return!e||!t?!1:n}function G(e,t){return e&&t}function K({isCurrent:e,autoscroll:t,loop:n,currentIndex:r,postsLength:i,total:a}){return!(!e||!t||I(r,i)&&!n&&L(i,a))}function q(e){return Math.max(window.innerHeight-e,1)}function J({measuredHeight:e,scrollContainerHeight:t,safeAreaTabBar:n}){return t>0?t:e>0?e:q(n)}function Y(e){if(!e)return!1;let t=e.scrollHeight-e.clientHeight>1,n=e.scrollWidth-e.clientWidth>1;return t||n}export{d as A,D as C,w as D,x as E,c as M,m as O,E as S,O as T,j as _,K as a,M as b,B as c,V as d,F as f,A as g,R as h,G as i,f as j,b as k,H as l,L as m,q as n,U as o,I as p,J as r,W as s,Y as t,z as u,P as v,k as w,T as x,N as y};
|