UNPKG

@zezosoft/zezo-ott-react-native-video-player

Version:

React Native OTT Video Player for Android & iOS. Supports playlists, seasons, auto-next playback, subtitles, theming, analytics, fullscreen mode, and custom controls. 🚀 Powered by ZezoSoft.

147 lines (146 loc) • 3.39 kB
"use strict"; /** * @author Naresh Dhamu * @lastModified Sat 16 Aug 2025 at 10:26 AM */ import { create } from 'zustand'; import { createJSONStorage, persist } from 'zustand/middleware'; import { MMKV } from 'react-native-mmkv'; import { ResizeMode } from 'react-native-video'; export const storage = new MMKV({ id: 'videoPlayerStorage', encryptionKey: 'videoPlayerKey' }); export const mmkvStorage = { setItem: (key, value) => storage.set(key, value), getItem: key => storage.getString(key) ?? null, removeItem: key => storage.delete(key) }; const storeDataDefaults = { currentTime: 0, duration: 0, isPaused: false, isBuffering: false, resizeMode: ResizeMode.CONTAIN, controlsVisible: true, controlsTimer: 6, activeTrack: null, playableDuration: 0, settingsModal: { isVisible: false, action: 'none' }, playBackRate: 1, playBackRateLabel: null, onLoad: null, selectedAudioTrack: null, selectedSubtitleTrack: null, selectedVideoTrack: null, activeSubtitle: null, maxBitRate: null, startWatchTime: null, playList: [], currentTrackIndex: 0, contentSeasons: null, activeSeason: null, error: null, isViewCounted: false, isSkipIntroVisible: false, isNextEpisodeVisible: false }; export const useVideoPlayerStore = create()(persist(set => ({ ...storeDataDefaults, setCurrentTime: currentTime => set({ currentTime }), setDuration: duration => set({ duration }), setIsPaused: isPaused => set({ isPaused }), setIsBuffering: isBuffering => set({ isBuffering }), setResizeMode: resizeMode => set({ resizeMode }), setControlsVisible: controlsVisible => set({ controlsVisible }), setControlsTimer: controlsTimer => set({ controlsTimer }), setActiveTrack: activeTrack => set({ activeTrack }), setPlayableDuration: playableDuration => set({ playableDuration }), setSettingsModal: ({ isVisible, action }) => set({ settingsModal: { isVisible, action } }), setPlayBackRate: (playBackRate, playBackRateLabel) => set({ playBackRate, playBackRateLabel }), setOnLoad: onLoad => set({ onLoad }), setSelectedAudioTrack: selectedAudioTrack => set({ selectedAudioTrack }), setSelectedSubtitleTrack: selectedSubtitleTrack => set({ selectedSubtitleTrack }), setSelectedVideoTrack: selectedVideoTrack => set({ selectedVideoTrack }), setActiveSubtitle: activeSubtitle => set({ activeSubtitle }), setMaxBitRate: maxBitRate => set({ maxBitRate }), setStartWatchTime: startWatchTime => set({ startWatchTime }), setPlayList: playList => set({ playList }), setCurrentTrackIndex: currentTrackIndex => set({ currentTrackIndex }), setContentSeasons: contentSeasons => set({ contentSeasons }), setActiveSeason: activeSeason => set({ activeSeason }), setError: error => set({ error }), setIsViewCounted: isViewCounted => set({ isViewCounted }), setIsSkipIntroVisible: isSkipIntroVisible => set({ isSkipIntroVisible }), setIsNextEpisodeVisible: isNextEpisodeVisible => set({ isNextEpisodeVisible }), resetStore: () => { set(storeDataDefaults); storage.clearAll(); } }), { name: 'VideoPlayerStorage', storage: createJSONStorage(() => mmkvStorage) })); //# sourceMappingURL=videoPlayerStore.js.map