@quantabit/live-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/services/liveClient.js","../src/types/index.js","../src/i18n/index.js","../src/hooks/useLive.js","../src/components/LiveRoom.jsx","../src/components/Advanced.jsx","../src/index.js"],"sourcesContent":["/**\n * Live SDK - API 客户端\n * 直播系统后端接口封装\n * \n * 使用 BaseApiClient 基类,集成统一的配置管理、Token 和错误处理\n * 支持直播间管理、弹幕礼物、互动功能、WebSocket等\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 直播 API 客户端\n */\nexport class LiveClient extends BaseApiClient {\n constructor(config = {}) {\n super('/live', config);\n \n // 初始化 WebSocket 基础 URL (在 BaseApiClient 初始化后 this.baseUrl 已就绪)\n if (config.wsBaseUrl) {\n this.wsBaseUrl = config.wsBaseUrl;\n } else {\n // 从全局配置获取,或者通过 baseUrl 转换\n // 这里的 this.baseUrl 已经是完整的 API 前缀,比如 /api/v1/live 或 http://.../api/v1/live\n this.wsBaseUrl = (this.baseUrl || '').replace('http', 'ws');\n // 注意: 这里简单替换 http 为 ws。如果 baseUrl 只是 relative 路径如 /api/v1/live\n // websocket 将会在连接时根据 window.location 使用相对路径或需要提供绝对路径。\n }\n\n this.onError = config.onError;\n \n // WebSocket 相关\n this.ws = null;\n this.currentRoomId = null;\n this.reconnectAttempts = 0;\n this.maxReconnectAttempts = 5;\n this.reconnectDelay = 3000;\n \n // 事件监听器\n this.listeners = {\n message: [],\n gift: [],\n enter: [],\n leave: [],\n status: [],\n like: [],\n follow: [],\n share: [],\n error: [],\n reconnect: [],\n };\n }\n\n // ============ 直播间管理 ============\n\n /**\n * 获取直播列表\n * @param {Object} options - 查询选项\n */\n async getLiveRooms(options = {}) {\n const { page = 1, pageSize = 20, type, status, category } = options;\n const params = { page, page_size: pageSize };\n if (type) params.type = type;\n if (status) params.status = status;\n if (category) params.category = category;\n return this.get('/rooms', params);\n }\n\n /**\n * 获取直播间详情\n * @param {string} roomId - 直播间 ID\n */\n async getRoomInfo(roomId) {\n return this.get(`/rooms/${roomId}`);\n }\n\n /**\n * 获取推荐直播\n * @param {number} limit - 数量限制\n */\n async getRecommendedRooms(limit = 10) {\n return this.get('/rooms/recommended', { limit });\n }\n\n /**\n * 获取热门直播\n * @param {number} limit - 数量限制\n */\n async getHotRooms(limit = 20) {\n return this.get('/rooms/hot', { limit });\n }\n\n /**\n * 搜索直播间\n * @param {string} keyword - 关键词\n * @param {Object} params - 搜索参数\n */\n async searchRooms(keyword, params = {}) {\n return this.get('/rooms/search', { q: keyword, ...params });\n }\n\n /**\n * 获取直播分类\n */\n async getCategories() {\n return this.get('/categories');\n }\n\n /**\n * 创建直播间\n * @param {Object} room - 直播间数据\n */\n async createRoom(room) {\n return this.post('/rooms', room);\n }\n\n /**\n * 更新直播间信息\n * @param {string} roomId - 直播间 ID\n * @param {Object} updates - 更新数据\n */\n async updateRoom(roomId, updates) {\n return this.put(`/rooms/${roomId}`, updates);\n }\n\n /**\n * 开始直播\n * @param {string} roomId - 直播间 ID\n */\n async startLive(roomId) {\n return this.post(`/rooms/${roomId}/start`);\n }\n\n /**\n * 结束直播\n * @param {string} roomId - 直播间 ID\n */\n async endLive(roomId) {\n return this.post(`/rooms/${roomId}/end`);\n }\n\n /**\n * 获取推流地址\n * @param {string} roomId - 直播间 ID\n */\n async getPushUrl(roomId) {\n return this.get(`/rooms/${roomId}/push-url`);\n }\n\n /**\n * 获取拉流地址\n * @param {string} roomId - 直播间 ID\n */\n async getPullUrl(roomId) {\n return this.get(`/rooms/${roomId}/pull-url`);\n }\n\n // ============ 进入/离开 ============\n\n /**\n * 进入直播间\n * @param {string} roomId - 直播间 ID\n */\n async enterRoom(roomId) {\n this.currentRoomId = roomId;\n await this.post(`/rooms/${roomId}/enter`);\n this.connectWebSocket(roomId);\n }\n\n /**\n * 离开直播间\n * @param {string} roomId - 直播间 ID\n */\n async leaveRoom(roomId) {\n await this.post(`/rooms/${roomId}/leave`);\n this.disconnectWebSocket();\n this.currentRoomId = null;\n }\n\n /**\n * 获取直播间观众列表\n * @param {string} roomId - 直播间 ID\n * @param {Object} params - 分页参数\n */\n async getViewers(roomId, params = {}) {\n return this.get(`/rooms/${roomId}/viewers`, params);\n }\n\n /**\n * 获取在线人数\n * @param {string} roomId - 直播间 ID\n */\n async getOnlineCount(roomId) {\n return this.get(`/rooms/${roomId}/online-count`);\n }\n\n // ============ WebSocket ============\n\n /**\n * 连接 WebSocket\n * @param {string} roomId - 直播间 ID\n */\n connectWebSocket(roomId) {\n if (this.ws) {\n this.disconnectWebSocket();\n }\n \n // 如果 wsBaseUrl 配置里有 live 则不重复加\n // 假设 wsBaseUrl 是 ws://.../api/v1/live\n const baseUrl = this.wsBaseUrl.endsWith('/live') ? this.wsBaseUrl.slice(0, -5) : this.wsBaseUrl;\n // 如果 wsBaseUrl 为空或者相对路径,这可能需要更健壮的处理,但这里保持原有逻辑结构\n const wsUrl = `${this.wsBaseUrl}/ws/${roomId}`;\n \n const token = this.getToken();\n this.ws = new WebSocket(token ? `${wsUrl}?token=${token}` : wsUrl);\n \n this.ws.onopen = () => {\n this.reconnectAttempts = 0;\n this.emit('status', { type: 'connected', roomId });\n };\n \n this.ws.onmessage = (event) => {\n try {\n const data = JSON.parse(event.data);\n this.handleMessage(data);\n } catch (e) {\n console.error('Failed to parse message:', e);\n }\n };\n \n this.ws.onclose = (event) => {\n this.emit('status', { type: 'disconnected', code: event.code });\n if (this.currentRoomId && this.reconnectAttempts < this.maxReconnectAttempts) {\n this.reconnectAttempts++;\n this.emit('reconnect', { attempt: this.reconnectAttempts });\n setTimeout(() => this.connectWebSocket(roomId), this.reconnectDelay);\n }\n };\n \n this.ws.onerror = (error) => {\n this.emit('error', error);\n };\n }\n\n /**\n * 断开 WebSocket\n */\n disconnectWebSocket() {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n /**\n * 处理 WebSocket 消息\n * @param {Object} data - 消息数据\n */\n handleMessage(data) {\n switch (data.type) {\n case 'chat':\n this.emit('message', data);\n break;\n case 'gift':\n this.emit('gift', data);\n break;\n case 'enter':\n this.emit('enter', data);\n break;\n case 'leave':\n this.emit('leave', data);\n break;\n case 'like':\n this.emit('like', data);\n break;\n case 'follow':\n this.emit('follow', data);\n break;\n case 'share':\n this.emit('share', data);\n break;\n case 'status':\n this.emit('status', data);\n break;\n default:\n this.emit(data.type, data);\n }\n }\n\n // ============ 弹幕互动 ============\n\n /**\n * 发送弹幕\n * @param {string} content - 弹幕内容\n * @param {Object} options - 弹幕选项\n */\n sendMessage(content, options = {}) {\n if (!this.ws || !this.currentRoomId) return;\n this.ws.send(JSON.stringify({\n type: 'chat',\n content,\n ...options,\n }));\n }\n\n /**\n * 点赞\n */\n sendLike() {\n if (!this.ws || !this.currentRoomId) return;\n this.ws.send(JSON.stringify({ type: 'like' }));\n }\n\n /**\n * 发送弹幕(HTTP)\n * @param {string} roomId - 直播间 ID\n * @param {string} content - 弹幕内容\n */\n async sendDanmaku(roomId, content) {\n return this.post(`/rooms/${roomId}/danmaku`, { content });\n }\n\n /**\n * 获取历史弹幕\n * @param {string} roomId - 直播间 ID\n * @param {Object} params - 查询参数\n */\n async getDanmakuHistory(roomId, params = {}) {\n return this.get(`/rooms/${roomId}/danmaku`, params);\n }\n\n // ============ 礼物 ============\n\n /**\n * 发送礼物\n * @param {string} roomId - 直播间 ID\n * @param {string} giftId - 礼物 ID\n * @param {number} count - 数量\n */\n async sendGift(roomId, giftId, count = 1) {\n return this.post(`/rooms/${roomId}/gift`, { gift_id: giftId, count });\n }\n\n /**\n * 获取礼物列表\n */\n async getGifts() {\n return this.get('/gifts');\n }\n\n /**\n * 获取礼物榜\n * @param {string} roomId - 直播间 ID\n * @param {string} period - 周期\n */\n async getGiftRanking(roomId, period = 'day') {\n return this.get(`/rooms/${roomId}/gift-ranking`, { period });\n }\n\n /**\n * 获取贡献榜\n * @param {string} roomId - 直播间 ID\n */\n async getContributionRanking(roomId) {\n return this.get(`/rooms/${roomId}/contribution-ranking`);\n }\n\n // ============ 关注/订阅 ============\n\n /**\n * 关注主播\n * @param {string} roomId - 直播间 ID\n */\n async followAnchor(roomId) {\n return this.post(`/rooms/${roomId}/follow`);\n }\n\n /**\n * 取消关注\n * @param {string} roomId - 直播间 ID\n */\n async unfollowAnchor(roomId) {\n return this.delete(`/rooms/${roomId}/follow`);\n }\n\n /**\n * 获取关注的主播\n * @param {Object} params - 分页参数\n */\n async getFollowedAnchors(params = {}) {\n return this.get('/following', params);\n }\n\n // ============ 直播预约 ============\n\n /**\n * 预约直播\n * @param {string} roomId - 直播间 ID\n */\n async reserveLive(roomId) {\n return this.post(`/rooms/${roomId}/reserve`);\n }\n\n /**\n * 取消预约\n * @param {string} roomId - 直播间 ID\n */\n async cancelReservation(roomId) {\n return this.delete(`/rooms/${roomId}/reserve`);\n }\n\n /**\n * 获取我的预约\n */\n async getMyReservations() {\n return this.get('/reservations');\n }\n\n // ============ 回放 ============\n\n /**\n * 获取直播回放\n * @param {string} roomId - 直播间 ID\n */\n async getPlayback(roomId) {\n return this.get(`/rooms/${roomId}/playback`);\n }\n\n /**\n * 获取主播回放列表\n * @param {string} anchorId - 主播 ID\n * @param {Object} params - 分页参数\n */\n async getPlaybacks(anchorId, params = {}) {\n return this.get(`/anchors/${anchorId}/playbacks`, params);\n }\n\n // ============ 管理功能 ============\n\n /**\n * 禁言用户\n * @param {string} roomId - 直播间 ID\n * @param {string} userId - 用户 ID\n * @param {number} duration - 禁言时长(秒)\n */\n async muteUser(roomId, userId, duration) {\n return this.post(`/rooms/${roomId}/mute`, { user_id: userId, duration });\n }\n\n /**\n * 踢出用户\n * @param {string} roomId - 直播间 ID\n * @param {string} userId - 用户 ID\n */\n async kickUser(roomId, userId) {\n return this.post(`/rooms/${roomId}/kick`, { user_id: userId });\n }\n\n /**\n * 设置管理员\n * @param {string} roomId - 直播间 ID\n * @param {string} userId - 用户 ID\n * @param {boolean} isAdmin - 是否设为管理员\n */\n async setAdmin(roomId, userId, isAdmin) {\n return this.put(`/rooms/${roomId}/admin`, { user_id: userId, is_admin: isAdmin });\n }\n\n // ============ 事件系统 ============\n\n /**\n * 注册事件监听\n * @param {string} event - 事件名\n * @param {Function} callback - 回调函数\n */\n on(event, callback) {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event].push(callback);\n return () => this.off(event, callback);\n }\n\n /**\n * 移除事件监听\n * @param {string} event - 事件名\n * @param {Function} callback - 回调函数\n */\n off(event, callback) {\n if (this.listeners[event]) {\n this.listeners[event] = this.listeners[event].filter(cb => cb !== callback);\n }\n }\n\n /**\n * 触发事件\n * @param {string} event - 事件名\n * @param {*} data - 数据\n */\n emit(event, data) {\n if (this.listeners[event]) {\n this.listeners[event].forEach(cb => cb(data));\n }\n }\n}\n\n// 创建默认实例\nexport const liveClient = new LiveClient();\n\nexport default liveClient;\n","/**\n * Live SDK - 类型定义\n */\n\n// 直播状态\nexport const LiveStatus = {\n SCHEDULED: 'scheduled',\n LIVE: 'live',\n PAUSED: 'paused',\n ENDED: 'ended',\n};\n\n// 直播类型\nexport const LiveType = {\n NORMAL: 'normal', // 普通直播\n GAME: 'game', // 游戏直播\n SHOPPING: 'shopping', // 带货直播\n EDUCATION: 'education', // 教育直播\n};\n\n// 消息类型\nexport const LiveMessageType = {\n CHAT: 'chat', // 聊天\n GIFT: 'gift', // 礼物\n ENTER: 'enter', // 进入\n LEAVE: 'leave', // 离开\n FOLLOW: 'follow', // 关注\n SHARE: 'share', // 分享\n SYSTEM: 'system', // 系统消息\n};\n\n// 礼物类型\nexport const GiftType = {\n FREE: 'free', // 免费\n PAID: 'paid', // 付费\n SPECIAL: 'special', // 特效\n};\n\nexport default { LiveStatus, LiveType, LiveMessageType, GiftType };\n","/**\n * Live SDK - 国际化\n */\n\nexport const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n zh: {\n // 直播状态\n live: '直播中',\n offline: '已结束',\n scheduled: '预约中',\n starting: '即将开始',\n \n // 直播间\n liveRoom: '直播间',\n follow: '关注',\n followed: '已关注',\n viewers: '观看',\n likes: '点赞',\n \n // 弹幕\n sendDanmaku: '发送弹幕...',\n send: '发送',\n \n // 礼物\n gifts: '礼物',\n sendGift: '送礼物',\n freeGifts: '免费礼物',\n paidGifts: '付费礼物',\n \n // 互动\n enterRoom: '进入直播间',\n leaveRoom: '离开直播间',\n justEntered: '刚刚进入直播间',\n welcome: '欢迎',\n \n // 主播\n startLive: '开始直播',\n endLive: '结束直播',\n duration: '直播时长',\n earnings: '收益',\n \n // 连麦\n requestMic: '申请连麦',\n cancelRequest: '取消申请',\n onMic: '连麦中',\n \n // PK\n pk: 'PK',\n pkInvite: '发起PK',\n pkScore: 'PK分数',\n win: '胜利',\n lose: '失败',\n draw: '平局',\n },\n ja: {\n // 直播状态\n live: '配信中',\n offline: '終了',\n scheduled: '予約中',\n starting: 'まもなく開始',\n \n // 直播间\n liveRoom: '配信ルーム',\n follow: 'フォロー',\n followed: 'フォロー済み',\n viewers: '視聴',\n likes: 'いいね',\n \n // 弹幕\n sendDanmaku: 'コメントを送信...',\n send: '送信',\n \n // 礼物\n gifts: 'ギフト',\n sendGift: 'ギフトを贈る',\n freeGifts: '無料ギフト',\n paidGifts: '有料ギフト',\n \n // 互动\n enterRoom: '配信ルームに入る',\n leaveRoom: '配信ルームを退出する',\n justEntered: 'が配信ルームに入りました',\n welcome: '歓迎',\n \n // 主播\n startLive: '配信開始',\n endLive: '配信終了',\n duration: '配信時間',\n earnings: '収益',\n \n // 连麦\n requestMic: 'コラボ申請',\n cancelRequest: '申請取消',\n onMic: 'コラボ中',\n \n // PK\n pk: 'PK',\n pkInvite: 'PK開始',\n pkScore: 'PKスコア',\n win: '勝利',\n lose: '敗北',\n draw: '引き分け',\n },\n ko: {\n // 直播状态\n live: '라이브 중',\n offline: '종료됨',\n scheduled: '예약 중',\n starting: '시작 예정',\n \n // 直播间\n liveRoom: '라이브 룸',\n follow: '팔로우',\n followed: '팔로우함',\n viewers: '시청',\n likes: '좋아요',\n \n // 弹幕\n sendDanmaku: '댓글 보내기...',\n send: '보내기',\n \n // 礼物\n gifts: '선물',\n sendGift: '선물 보내기',\n freeGifts: '무료 선물',\n paidGifts: '유료 선물',\n \n // 互动\n enterRoom: '라이브 룸 입장',\n leaveRoom: '라이브 룸 퇴장',\n justEntered: '방금 라이브 룸에 입장했습니다',\n welcome: '환영합니다',\n \n // 主播\n startLive: '라이브 시작',\n endLive: '라이브 종료',\n duration: '라이브 지속 시간',\n earnings: '수익',\n \n // 连麦\n requestMic: '연결 신청',\n cancelRequest: '신청 취소',\n onMic: '연결 중',\n \n // PK\n pk: 'PK',\n pkInvite: 'PK 시작',\n pkScore: 'PK 점수',\n win: '승리',\n lose: '패배',\n draw: '무승부',\n },\n en: {\n live: 'Live',\n offline: 'Offline',\n scheduled: 'Scheduled',\n starting: 'Starting Soon',\n \n liveRoom: 'Live Room',\n follow: 'Follow',\n followed: 'Following',\n viewers: 'Viewers',\n likes: 'Likes',\n \n sendDanmaku: 'Send a message...',\n send: 'Send',\n \n gifts: 'Gifts',\n sendGift: 'Send Gift',\n freeGifts: 'Free',\n paidGifts: 'Premium',\n \n enterRoom: 'Enter Room',\n leaveRoom: 'Leave Room',\n justEntered: 'just entered',\n welcome: 'Welcome',\n \n startLive: 'Go Live',\n endLive: 'End Live',\n duration: 'Duration',\n earnings: 'Earnings',\n \n requestMic: 'Request Mic',\n cancelRequest: 'Cancel',\n onMic: 'On Mic',\n \n pk: 'PK',\n pkInvite: 'Start PK',\n pkScore: 'PK Score',\n win: 'Win',\n lose: 'Lose',\n draw: 'Draw',\n },\n};\n\nlet currentLanguage = 'zh';\n\nexport function setLanguage(lang) {\n if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang;\n}\n\nexport function getLanguage() {\n return currentLanguage;\n}\n\nexport function t(key) {\n return (messages[currentLanguage] || messages.en)[key] || key;\n}\n\nexport default { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t };\n","/**\n * Live SDK - React Hooks\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { liveClient } from '../services/liveClient';\nimport { LiveStatus } from '../types';\n\n/**\n * useLiveRooms - 直播列表Hook\n */\nexport function useLiveRooms(options = {}) {\n const [rooms, setRooms] = useState([]);\n const [loading, setLoading] = useState(false);\n const [page, setPage] = useState(1);\n const [hasMore, setHasMore] = useState(true);\n\n const loadRooms = useCallback(async (reset = false) => {\n const currentPage = reset ? 1 : page;\n setLoading(true);\n try {\n const result = await liveClient.getLiveRooms({\n ...options,\n page: currentPage,\n pageSize: 20,\n });\n \n const newRooms = result.rooms || [];\n setRooms(prev => reset ? newRooms : [...prev, ...newRooms]);\n setHasMore(newRooms.length >= 20);\n if (reset) setPage(1);\n } finally {\n setLoading(false);\n }\n }, [options.type, options.status, page]);\n\n const loadMore = useCallback(() => {\n if (hasMore && !loading) {\n setPage(p => p + 1);\n }\n }, [hasMore, loading]);\n\n useEffect(() => {\n loadRooms(true);\n }, [options.type, options.status]);\n\n useEffect(() => {\n if (page > 1) loadRooms();\n }, [page]);\n\n return {\n rooms,\n loading,\n hasMore,\n loadMore,\n refresh: () => loadRooms(true),\n };\n}\n\n/**\n * useLiveRoom - 单个直播间Hook\n */\nexport function useLiveRoom(roomId) {\n const [room, setRoom] = useState(null);\n const [messages, setMessages] = useState([]);\n const [gifts, setGifts] = useState([]);\n const [viewers, setViewers] = useState(0);\n const [loading, setLoading] = useState(false);\n const [isInRoom, setIsInRoom] = useState(false);\n\n // 加载房间信息\n const loadRoom = useCallback(async () => {\n if (!roomId) return;\n setLoading(true);\n try {\n const result = await liveClient.getRoomInfo(roomId);\n setRoom(result);\n setViewers(result.viewer_count || 0);\n } finally {\n setLoading(false);\n }\n }, [roomId]);\n\n // 进入直播间\n const enterRoom = useCallback(async () => {\n if (!roomId || isInRoom) return;\n try {\n await liveClient.enterRoom(roomId);\n setIsInRoom(true);\n } catch (e) {\n console.error('Failed to enter room', e);\n }\n }, [roomId, isInRoom]);\n\n // 离开直播间\n const leaveRoom = useCallback(async () => {\n if (!roomId || !isInRoom) return;\n try {\n await liveClient.leaveRoom(roomId);\n setIsInRoom(false);\n } catch (e) {\n console.error('Failed to leave room', e);\n }\n }, [roomId, isInRoom]);\n\n // 发送弹幕\n const sendMessage = useCallback((content) => {\n if (!isInRoom || !content.trim()) return;\n liveClient.sendMessage(content);\n }, [isInRoom]);\n\n // 发送礼物\n const sendGift = useCallback(async (giftId, count = 1) => {\n if (!roomId) return false;\n try {\n await liveClient.sendGift(roomId, giftId, count);\n return true;\n } catch (e) {\n return false;\n }\n }, [roomId]);\n\n // 监听事件\n useEffect(() => {\n if (!roomId) return;\n\n const unsubMessage = liveClient.on('message', (data) => {\n setMessages(prev => [...prev.slice(-100), data]); // 保留最近100条\n });\n\n const unsubGift = liveClient.on('gift', (data) => {\n setGifts(prev => [...prev.slice(-20), data]); // 保留最近20条\n });\n\n const unsubEnter = liveClient.on('enter', (data) => {\n setViewers(prev => prev + 1);\n setMessages(prev => [...prev.slice(-100), { type: 'enter', ...data }]);\n });\n\n const unsubLeave = liveClient.on('leave', () => {\n setViewers(prev => Math.max(0, prev - 1));\n });\n\n return () => {\n unsubMessage();\n unsubGift();\n unsubEnter();\n unsubLeave();\n };\n }, [roomId]);\n\n // 初始化\n useEffect(() => {\n loadRoom();\n return () => {\n if (isInRoom) leaveRoom();\n };\n }, [roomId]);\n\n return {\n room,\n messages,\n gifts,\n viewers,\n loading,\n isInRoom,\n enterRoom,\n leaveRoom,\n sendMessage,\n sendGift,\n refresh: loadRoom,\n };\n}\n\n/**\n * useGifts - 礼物列表Hook\n */\nexport function useGifts() {\n const [gifts, setGifts] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const loadGifts = useCallback(async () => {\n setLoading(true);\n try {\n const result = await liveClient.getGifts();\n setGifts(result.gifts || []);\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n loadGifts();\n }, []);\n\n return { gifts, loading, refresh: loadGifts };\n}\n\n","/**\n * Live SDK - 直播间组件\n */\n\nimport React, { useState, useRef, useEffect } from 'react';\nimport { t } from '../i18n';\nimport { LiveStatus } from '../types';\n\n/**\n * 弹幕消息\n */\nexport function DanmakuMessage({ message, isGift = false }) {\n if (message.type === 'enter') {\n return (\n <div className=\"eco-live-danmaku enter\">\n <span className=\"eco-live-user\">{message.user?.name}</span>\n <span className=\"eco-live-text\">{t('justEntered')}</span>\n </div>\n );\n }\n\n if (isGift || message.type === 'gift') {\n return (\n <div className=\"eco-live-danmaku gift\">\n <span className=\"eco-live-user\">{message.user?.name}</span>\n <span className=\"eco-live-text\">\n 送出 <span className=\"eco-live-gift-icon\">{message.gift?.icon}</span>\n {message.gift?.name} x{message.count}\n </span>\n </div>\n );\n }\n\n return (\n <div className=\"eco-live-danmaku\">\n <span className=\"eco-live-user\">{message.user?.name}:</span>\n <span className=\"eco-live-text\">{message.content}</span>\n </div>\n );\n}\n\n/**\n * 弹幕列表\n */\nexport function DanmakuList({ messages = [], maxHeight = 300 }) {\n const containerRef = useRef(null);\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollTop = containerRef.current.scrollHeight;\n }\n }, [messages.length]);\n\n return (\n <div\n ref={containerRef}\n className=\"eco-live-danmaku-list\"\n style={{ maxHeight }}\n >\n {messages.map((msg, index) => (\n <DanmakuMessage key={msg.id || index} message={msg} />\n ))}\n </div>\n );\n}\n\n/**\n * 弹幕输入框\n */\nexport function DanmakuInput({ onSend, disabled = false }) {\n const [text, setText] = useState('');\n\n const handleSend = () => {\n if (text.trim() && !disabled) {\n onSend(text.trim());\n setText('');\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSend();\n }\n };\n\n return (\n <div className=\"eco-live-danmaku-input\">\n <input\n type=\"text\"\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={t('sendDanmaku')}\n disabled={disabled}\n />\n <button onClick={handleSend} disabled={disabled || !text.trim()}>\n {t('send')}\n </button>\n </div>\n );\n}\n\n/**\n * 礼物面板\n */\nexport function GiftPanel({ gifts = [], onSend, selectedId, onSelect }) {\n const [count, setCount] = useState(1);\n\n const handleSend = () => {\n if (selectedId && onSend) {\n onSend(selectedId, count);\n setCount(1);\n }\n };\n\n return (\n <div className=\"eco-live-gift-panel\">\n <div className=\"eco-live-gift-grid\">\n {gifts.map(gift => (\n <div\n key={gift.id}\n className={`eco-live-gift-item ${selectedId === gift.id ? 'selected' : ''}`}\n onClick={() => onSelect(gift.id)}\n >\n <span className=\"eco-live-gift-icon\">{gift.icon || '🎁'}</span>\n <span className=\"eco-live-gift-name\">{gift.name}</span>\n <span className=\"eco-live-gift-price\">\n {gift.price > 0 ? `${gift.price}币` : '免费'}\n </span>\n </div>\n ))}\n </div>\n \n {selectedId && (\n <div className=\"eco-live-gift-actions\">\n <div className=\"eco-live-gift-count\">\n <button onClick={() => setCount(Math.max(1, count - 1))}>-</button>\n <span>{count}</span>\n <button onClick={() => setCount(count + 1)}>+</button>\n </div>\n <button className=\"eco-live-gift-send\" onClick={handleSend}>\n {t('sendGift')}\n </button>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * 直播间卡片\n */\nexport function LiveRoomCard({ room, onClick }) {\n const { id, title, cover, host, viewer_count, status } = room;\n const isLive = status === LiveStatus.LIVE;\n\n return (\n <div className=\"eco-live-room-card\" onClick={() => onClick?.(room)}>\n <div className=\"eco-live-room-cover\">\n <img src={cover || '/placeholder.png'} alt={title} />\n \n {isLive && (\n <span className=\"eco-live-status live\">\n <span className=\"eco-live-dot\"></span>\n {t('live')}\n </span>\n )}\n \n <span className=\"eco-live-viewers\">\n 👁 {viewer_count || 0}\n </span>\n </div>\n \n <div className=\"eco-live-room-info\">\n <h4 className=\"eco-live-room-title\">{title}</h4>\n <div className=\"eco-live-room-host\">\n <img src={host?.avatar || '/avatar.png'} alt={host?.name} />\n <span>{host?.name}</span>\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * 直播间网格\n */\nexport function LiveRoomGrid({ rooms = [], loading, onRoomClick, columns = 2 }) {\n if (loading && rooms.length === 0) {\n return <div className=\"eco-live-loading\">加载中...</div>;\n }\n\n if (rooms.length === 0) {\n return <div className=\"eco-live-empty\">暂无直播</div>;\n }\n\n return (\n <div\n className=\"eco-live-room-grid\"\n style={{ gridTemplateColumns: `repeat(${columns}, 1fr)` }}\n >\n {rooms.map(room => (\n <LiveRoomCard key={room.id} room={room} onClick={onRoomClick} />\n ))}\n </div>\n );\n}\n\n","/**\n * Live SDK - 高级组件: 直播播放器、弹幕、礼物面板\n */\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { t } from '../i18n';\n\n// 直播播放器\nexport function LivePlayer({\n streamUrl,\n thumbnail,\n isLive = false,\n viewerCount = 0,\n onFullscreen,\n onPictureInPicture,\n className = '',\n}) {\n const videoRef = useRef(null);\n const [isPlaying, setIsPlaying] = useState(false);\n const [isMuted, setIsMuted] = useState(true);\n const [quality, setQuality] = useState('auto');\n\n const togglePlay = () => {\n if (videoRef.current) {\n if (isPlaying) {\n videoRef.current.pause();\n } else {\n videoRef.current.play();\n }\n setIsPlaying(!isPlaying);\n }\n };\n\n const toggleMute = () => {\n if (videoRef.current) {\n videoRef.current.muted = !isMuted;\n setIsMuted(!isMuted);\n }\n };\n\n return (\n <div className={`live-player ${className}`}>\n <div className=\"live-player-container\">\n <video\n ref={videoRef}\n src={streamUrl}\n poster={thumbnail}\n muted={isMuted}\n autoPlay\n playsInline\n />\n \n <div className=\"live-player-overlay\">\n {isLive && (\n <div className=\"live-badge\">\n <span className=\"live-dot\"></span>\n LIVE\n </div>\n )}\n \n <div className=\"live-viewer-count\">\n 👁️ {formatNumber(viewerCount)}\n </div>\n </div>\n\n <div className=\"live-player-controls\">\n <button className=\"live-control-btn\" onClick={togglePlay}>\n {isPlaying ? '⏸️' : '▶️'}\n </button>\n <button className=\"live-control-btn\" onClick={toggleMute}>\n {isMuted ? '🔇' : '🔊'}\n </button>\n \n <div className=\"live-quality-selector\">\n <select value={quality} onChange={(e) => setQuality(e.target.value)}>\n <option value=\"auto\">Auto</option>\n <option value=\"1080p\">1080p</option>\n <option value=\"720p\">720p</option>\n <option value=\"480p\">480p</option>\n </select>\n </div>\n\n <div className=\"live-control-spacer\" />\n \n <button className=\"live-control-btn\" onClick={onPictureInPicture}>\n 📺\n </button>\n <button className=\"live-control-btn\" onClick={onFullscreen}>\n ⛶\n </button>\n </div>\n </div>\n </div>\n );\n}\n\n// 弹幕系统\nexport function Danmaku({\n messages = [],\n onSend,\n enabled = true,\n speed = 5,\n className = '',\n}) {\n const containerRef = useRef(null);\n const [inputValue, setInputValue] = useState('');\n const [activeMessages, setActiveMessages] = useState([]);\n\n useEffect(() => {\n if (!enabled) return;\n\n // 添加新消息到弹幕轨道\n const newMessages = messages.slice(-5).map((msg, i) => ({\n ...msg,\n id: msg.id || Date.now() + i,\n track: i % 5,\n left: 100,\n }));\n \n setActiveMessages(prev => [...prev, ...newMessages].slice(-50));\n }, [messages, enabled]);\n\n useEffect(() => {\n if (!enabled) return;\n\n const interval = setInterval(() => {\n setActiveMessages(prev => \n prev\n .map(m => ({ ...m, left: m.left - 2 }))\n .filter(m => m.left > -100)\n );\n }, 50);\n\n return () => clearInterval(interval);\n }, [enabled, speed]);\n\n const handleSend = () => {\n if (!inputValue.trim()) return;\n onSend?.({ text: inputValue.trim() });\n setInputValue('');\n };\n\n return (\n <div className={`live-danmaku ${className}`}>\n <div className=\"live-danmaku-container\" ref={containerRef}>\n {enabled && activeMessages.map((msg) => (\n <div\n key={msg.id}\n className=\"live-danmaku-message\"\n style={{\n left: `${msg.left}%`,\n top: `${msg.track * 28 + 10}px`,\n color: msg.color || '#fff',\n }}\n >\n {msg.text}\n </div>\n ))}\n </div>\n \n <div className=\"live-danmaku-input\">\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSend()}\n placeholder={t('sendDanmaku')}\n maxLength={50}\n />\n <button onClick={handleSend}>{t('send')}</button>\n </div>\n </div>\n );\n}\n\n// 礼物面板\nexport function GiftPanel({\n gifts = [],\n selectedGift,\n onSelectGift,\n onSendGift,\n balance = 0,\n loading = false,\n className = '',\n}) {\n const [quantity, setQuantity] = useState(1);\n\n const handleSend = () => {\n if (!selectedGift) return;\n onSendGift?.({ gift: selectedGift, quantity });\n setQuantity(1);\n };\n\n return (\n <div className={`live-gift-panel ${className}`}>\n <div className=\"live-gift-header\">\n <span className=\"live-gift-title\">🎁 {t('gifts')}</span>\n <span className=\"live-gift-balance\">💰 {balance.toLocaleString()}</span>\n </div>\n \n <div className=\"live-gift-grid\">\n {gifts.map((gift) => (\n <div\n key={gift.id}\n className={`live-gift-item ${selectedGift?.id === gift.id ? 'selected' : ''}`}\n onClick={() => onSelectGift?.(gift)}\n >\n <div className=\"live-gift-icon\">{gift.icon || '🎁'}</div>\n <div className=\"live-gift-name\">{gift.name}</div>\n <div className=\"live-gift-price\">💰 {gift.price}</div>\n </div>\n ))}\n </div>\n \n {selectedGift && (\n <div className=\"live-gift-send\">\n <div className=\"live-gift-selected\">\n <span>{selectedGift.icon}</span>\n <span>{selectedGift.name}</span>\n </div>\n \n <div className=\"live-gift-quantity\">\n <button onClick={() => setQuantity(Math.max(1, quantity - 1))}>-</button>\n <span>{quantity}</span>\n <button onClick={() => setQuantity(quantity + 1)}>+</button>\n </div>\n \n <button\n className=\"live-btn live-btn-primary\"\n onClick={handleSend}\n disabled={loading || balance < selectedGift.price * quantity}\n >\n {t('send')} ({selectedGift.price * quantity})\n </button>\n </div>\n )}\n </div>\n );\n}\n\n// 直播间信息\nexport function LiveRoomInfo({\n room,\n host,\n isFollowing = false,\n onFollow,\n onShare,\n className = '',\n}) {\n if (!room) return null;\n\n return (\n <div className={`live-room-info ${className}`}>\n <div className=\"live-host-section\">\n <div className=\"live-host-avatar\">\n {host?.avatar ? (\n <img src={host.avatar} alt={host.name} />\n ) : (\n <span>👤</span>\n )}\n <span className=\"live-host-live-badge\">LIVE</span>\n </div>\n \n <div className=\"live-host-info\">\n <div className=\"live-host-name\">{host?.name || t('anonymous')}</div>\n <div className=\"live-host-followers\">\n {formatNumber(host?.followers || 0)} {t('followers')}\n </div>\n </div>\n \n <button\n className={`live-btn ${isFollowing ? 'live-btn-outline' : 'live-btn-primary'}`}\n onClick={() => onFollow?.(!isFollowing)}\n >\n {isFollowing ? t('following') : t('follow')}\n </button>\n \n <button className=\"live-btn live-btn-outline\" onClick={onShare}>\n 📤 {t('share')}\n </button>\n </div>\n \n <div className=\"live-room-title\">{room.title}</div>\n \n <div className=\"live-room-tags\">\n {room.tags?.map((tag, i) => (\n <span key={i} className=\"live-room-tag\">#{tag}</span>\n ))}\n </div>\n \n <div className=\"live-room-stats\">\n <span>👁️ {formatNumber(room.viewers)} {t('viewers')}</span>\n <span>❤️ {formatNumber(room.likes)} {t('likes')}</span>\n <span>💬 {formatNumber(room.comments)} {t('comments')}</span>\n </div>\n </div>\n );\n}\n\n// 聊天面板\nexport function LiveChat({\n messages = [],\n onSendMessage,\n onMention,\n className = '',\n}) {\n const [inputValue, setInputValue] = useState('');\n const chatRef = useRef(null);\n\n useEffect(() => {\n if (chatRef.current) {\n chatRef.current.scrollTop = chatRef.current.scrollHeight;\n }\n }, [messages.length]);\n\n const handleSend = () => {\n if (!inputValue.trim()) return;\n onSendMessage?.(inputValue.trim());\n setInputValue('');\n };\n\n return (\n <div className={`live-chat ${className}`}>\n <div className=\"live-chat-header\">\n <span>💬 {t('chat')}</span>\n <span className=\"live-chat-count\">{messages.length}</span>\n </div>\n \n <div className=\"live-chat-messages\" ref={chatRef}>\n {messages.map((msg, index) => (\n <div key={msg.id || index} className={`live-chat-message ${msg.type || ''}`}>\n {msg.type === 'gift' ? (\n <div className=\"live-chat-gift\">\n <span className=\"live-chat-user\">{msg.user?.name}</span>\n <span>{t('sent')}</span>\n <span className=\"live-chat-gift-icon\">{msg.gift?.icon}</span>\n <span>x{msg.quantity}</span>\n </div>\n ) : (\n <>\n <span\n className=\"live-chat-user\"\n onClick={() => onMention?.(msg.user)}\n >\n {msg.user?.name}:\n </span>\n <span className=\"live-chat-text\">{msg.text}</span>\n </>\n )}\n </div>\n ))}\n </div>\n \n <div className=\"live-chat-input\">\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && handleSend()}\n placeholder={t('typeMessage')}\n />\n <button onClick={handleSend}>{t('send')}</button>\n </div>\n </div>\n );\n}\n\nfunction formatNumber(num) {\n if (num >= 1000000) return (num / 1000000).toFixed(1) + 'M';\n if (num >= 1000) return (num / 1000).toFixed(1) + 'K';\n return num.toString();\n}\n\nexport default LivePlayer;\n","/**\n * @quantabit/live-sdk\n * Live SDK - Full Version\n */\n\n// Core Client\nexport { liveClient, LiveClient } from './services/liveClient';\n\n// Types\nexport { LiveStatus, LiveType, LiveMessageType, GiftType } from './types';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\n\n// React Hooks\nexport { useLiveRooms, useLiveRoom, useGifts } from './hooks/useLive';\n\n// React Components\nexport {\n DanmakuMessage,\n DanmakuList,\n DanmakuInput,\n GiftPanel,\n LiveRoomCard,\n LiveRoomGrid,\n} from './components/LiveRoom';\n\n// Advanced Components\nexport {\n LivePlayer,\n Danmaku,\n GiftPanel as GiftPanelAdvanced,\n LiveRoomInfo,\n LiveChat,\n} from './components/Advanced';\n\n// Styles\nimport './styles/advanced.css';\n\n// Shortcut Methods\nimport { liveClient } from './services/liveClient';\n\nexport const getLiveRooms = (...args) => liveClient.getLiveRooms(...args);\nexport const getRoomInfo = (...args) => liveClient.getRoomInfo(...args);\nexport const createRoom = (...args) => liveClient.createRoom(...args);\nexport const startLive = (...args) => liveClient.startLive(...args);\nexport const endLive = (...args) => liveClient.endLive(...args);\nexport const enterRoom = (...args) => liveClient.enterRoom(...args);\nexport const leaveRoom = (...args) => liveClient.leaveRoom(...args);\nexport const sendMessage = (...args) => liveClient.sendMessage(...args);\nexport const sendGift = (...args) => liveClient.sendGift(...args);\nexport const getGifts = (...args) => liveClient.getGifts(...args);\nexport const on = (...args) => liveClient.on(...args);\nexport const off = (...args) => liveClient.off(...args);\n"],"names":["LiveClient","BaseApiClient","constructor","config","wsBaseUrl","baseUrl","replace","onError","ws","currentRoomId","reconnectAttempts","maxReconnectAttempts","reconnectDelay","listeners","message","gift","enter","leave","status","like","follow","share","error","reconnect","getLiveRooms","options","page","pageSize","type","category","params","page_size","get","getRoomInfo","roomId","getRecommendedRooms","limit","getHotRooms","searchRooms","keyword","q","getCategories","createRoom","room","post","updateRoom","updates","put","startLive","endLive","getPushUrl","getPullUrl","enterRoom","connectWebSocket","leaveRoom","disconnectWebSocket","getViewers","getOnlineCount","endsWith","slice","wsUrl","token","getToken","WebSocket","onopen","emit","onmessage","event","data","JSON","parse","handleMessage","e","console","onclose","code","attempt","setTimeout","onerror","close","sendMessage","content","send","stringify","sendLike","sendDanmaku","getDanmakuHistory","sendGift","giftId","count","gift_id","getGifts","getGiftRanking","period","getContributionRanking","followAnchor","unfollowAnchor","delete","getFollowedAnchors","reserveLive","cancelReservation","getMyReservations","getPlayback","getPlaybacks","anchorId","muteUser","userId","duration","user_id","kickUser","setAdmin","isAdmin","is_admin","on","callback","push","off","filter","cb","forEach","liveClient","LiveStatus","SCHEDULED","LIVE","PAUSED","ENDED","LiveType","NORMAL","GAME","SHOPPING","EDUCATION","LiveMessageType","CHAT","GIFT","ENTER","LEAVE","FOLLOW","SHARE","SYSTEM","GiftType","FREE","PAID","SPECIAL","SUPPORTED_LANGUAGES","messages","zh","live","offline","scheduled","starting","liveRoom","followed","viewers","likes","gifts","freeGifts","paidGifts","justEntered","welcome","earnings","requestMic","cancelRequest","onMic","pk","pkInvite","pkScore","win","lose","draw","ja","ko","en","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","useLiveRooms","rooms","setRooms","useState","loading","setLoading","setPage","hasMore","setHasMore","loadRooms","useCallback","reset","currentPage","result","newRooms","prev","length","loadMore","p","useEffect","refresh","useLiveRoom","setRoom","setMessages","setGifts","setViewers","isInRoom","setIsInRoom","loadRoom","viewer_count","trim","unsubMessage","unsubGift","unsubEnter","unsubLeave","Math","max","useGifts","loadGifts","DanmakuMessage","isGift","React","createElement","className","user","name","icon","DanmakuList","maxHeight","containerRef","useRef","current","scrollTop","scrollHeight","ref","style","map","msg","index","id","DanmakuInput","onSend","disabled","text","setText","handleSend","handleKeyDown","preventDefault","value","onChange","target","onKeyDown","placeholder","onClick","GiftPanel","selectedId","onSelect","setCount","price","LiveRoomCard","title","cover","host","isLive","src","alt","avatar","LiveRoomGrid","onRoomClick","columns","gridTemplateColumns","LivePlayer","streamUrl","thumbnail","viewerCount","onFullscreen","onPictureInPicture","videoRef","isPlaying","setIsPlaying","isMuted","setIsMuted","quality","setQuality","togglePlay","pause","play","toggleMute","muted","poster","autoPlay","playsInline","formatNumber","Danmaku","enabled","speed","inputValue","setInputValue","activeMessages","setActiveMessages","newMessages","i","Date","now","track","left","interval","setInterval","m","clearInterval","top","color","maxLength","selectedGift","onSelectGift","onSendGift","balance","quantity","setQuantity","toLocaleString","LiveRoomInfo","isFollowing","onFollow","onShare","followers","tags","tag","comments","LiveChat","onSendMessage","onMention","chatRef","Fragment","num","toFixed","toString","args"],"mappings":"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"}