xxf_react 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/package.json +1 -1
  2. package/dist/cache/CacheEntry.d.ts +0 -28
  3. package/dist/cache/CacheEntry.d.ts.map +0 -1
  4. package/dist/cache/CacheEntry.js +0 -1
  5. package/dist/cache/DiskCacheConfig.d.ts +0 -56
  6. package/dist/cache/DiskCacheConfig.d.ts.map +0 -1
  7. package/dist/cache/DiskCacheConfig.js +0 -4
  8. package/dist/cache/DiskLruCache.d.ts +0 -69
  9. package/dist/cache/DiskLruCache.d.ts.map +0 -1
  10. package/dist/cache/DiskLruCache.js +0 -305
  11. package/dist/cache/LruMetadata.d.ts +0 -28
  12. package/dist/cache/LruMetadata.d.ts.map +0 -1
  13. package/dist/cache/LruMetadata.js +0 -6
  14. package/dist/cache/index.d.ts +0 -5
  15. package/dist/cache/index.d.ts.map +0 -1
  16. package/dist/cache/index.js +0 -2
  17. package/dist/event-bus/EventBus.d.ts +0 -176
  18. package/dist/event-bus/EventBus.d.ts.map +0 -1
  19. package/dist/event-bus/EventBus.js +0 -278
  20. package/dist/event-bus/EventDemo.d.ts +0 -71
  21. package/dist/event-bus/EventDemo.d.ts.map +0 -1
  22. package/dist/event-bus/EventDemo.js +0 -76
  23. package/dist/event-bus/EventHooks.d.ts +0 -48
  24. package/dist/event-bus/EventHooks.d.ts.map +0 -1
  25. package/dist/event-bus/EventHooks.js +0 -73
  26. package/dist/event-bus/index.d.ts +0 -3
  27. package/dist/event-bus/index.d.ts.map +0 -1
  28. package/dist/event-bus/index.js +0 -2
  29. package/dist/fetch/Fetch.d.ts +0 -9
  30. package/dist/fetch/Fetch.d.ts.map +0 -1
  31. package/dist/fetch/Fetch.js +0 -54
  32. package/dist/fetch/TimeoutError.d.ts +0 -7
  33. package/dist/fetch/TimeoutError.d.ts.map +0 -1
  34. package/dist/fetch/TimeoutError.js +0 -23
  35. package/dist/fetch/index.d.ts +0 -3
  36. package/dist/fetch/index.d.ts.map +0 -1
  37. package/dist/fetch/index.js +0 -2
  38. package/dist/flow/PromiseExt.d.ts +0 -8
  39. package/dist/flow/PromiseExt.d.ts.map +0 -1
  40. package/dist/flow/PromiseExt.js +0 -50
  41. package/dist/flow/PromiseLifecycle.d.ts +0 -33
  42. package/dist/flow/PromiseLifecycle.d.ts.map +0 -1
  43. package/dist/flow/PromiseLifecycle.js +0 -37
  44. package/dist/flow/PromiseLoading.d.ts +0 -25
  45. package/dist/flow/PromiseLoading.d.ts.map +0 -1
  46. package/dist/flow/PromiseLoading.js +0 -30
  47. package/dist/flow/index.d.ts +0 -4
  48. package/dist/flow/index.d.ts.map +0 -1
  49. package/dist/flow/index.js +0 -3
  50. package/dist/foundation/Copy.d.ts +0 -8
  51. package/dist/foundation/Copy.d.ts.map +0 -1
  52. package/dist/foundation/Copy.js +0 -21
  53. package/dist/foundation/Debug.d.ts +0 -7
  54. package/dist/foundation/Debug.d.ts.map +0 -1
  55. package/dist/foundation/Debug.js +0 -12
  56. package/dist/foundation/LayoutSize.d.ts +0 -5
  57. package/dist/foundation/LayoutSize.d.ts.map +0 -1
  58. package/dist/foundation/LayoutSize.js +0 -1
  59. package/dist/foundation/PerformanceMonitor.d.ts +0 -13
  60. package/dist/foundation/PerformanceMonitor.d.ts.map +0 -1
  61. package/dist/foundation/PerformanceMonitor.js +0 -26
  62. package/dist/foundation/index.d.ts +0 -5
  63. package/dist/foundation/index.d.ts.map +0 -1
  64. package/dist/foundation/index.js +0 -4
  65. package/dist/http/api/ApiBuilder.d.ts +0 -251
  66. package/dist/http/api/ApiBuilder.d.ts.map +0 -1
  67. package/dist/http/api/ApiBuilder.js +0 -189
  68. package/dist/http/api/index.d.ts +0 -2
  69. package/dist/http/api/index.d.ts.map +0 -1
  70. package/dist/http/api/index.js +0 -1
  71. package/dist/http/cache/HttpCache.d.ts +0 -59
  72. package/dist/http/cache/HttpCache.d.ts.map +0 -1
  73. package/dist/http/cache/HttpCache.js +0 -215
  74. package/dist/http/cache/index.d.ts +0 -3
  75. package/dist/http/cache/index.d.ts.map +0 -1
  76. package/dist/http/cache/index.js +0 -2
  77. package/dist/http/client/ApiStream.d.ts +0 -80
  78. package/dist/http/client/ApiStream.d.ts.map +0 -1
  79. package/dist/http/client/ApiStream.js +0 -190
  80. package/dist/http/client/HttpClient.d.ts +0 -88
  81. package/dist/http/client/HttpClient.d.ts.map +0 -1
  82. package/dist/http/client/HttpClient.js +0 -381
  83. package/dist/http/client/index.d.ts +0 -3
  84. package/dist/http/client/index.d.ts.map +0 -1
  85. package/dist/http/client/index.js +0 -2
  86. package/dist/http/demo/api-builder.demo.d.ts +0 -102
  87. package/dist/http/demo/api-builder.demo.d.ts.map +0 -1
  88. package/dist/http/demo/api-builder.demo.js +0 -343
  89. package/dist/http/index.d.ts +0 -52
  90. package/dist/http/index.d.ts.map +0 -1
  91. package/dist/http/index.js +0 -61
  92. package/dist/http/interceptor/CacheInterceptor.d.ts +0 -112
  93. package/dist/http/interceptor/CacheInterceptor.d.ts.map +0 -1
  94. package/dist/http/interceptor/CacheInterceptor.js +0 -6
  95. package/dist/http/interceptor/DefaultCacheInterceptor.d.ts +0 -53
  96. package/dist/http/interceptor/DefaultCacheInterceptor.d.ts.map +0 -1
  97. package/dist/http/interceptor/DefaultCacheInterceptor.js +0 -106
  98. package/dist/http/interceptor/index.d.ts +0 -3
  99. package/dist/http/interceptor/index.d.ts.map +0 -1
  100. package/dist/http/interceptor/index.js +0 -2
  101. package/dist/http/models/ApiTypes.d.ts +0 -54
  102. package/dist/http/models/ApiTypes.d.ts.map +0 -1
  103. package/dist/http/models/ApiTypes.js +0 -4
  104. package/dist/http/models/CacheConfig.d.ts +0 -58
  105. package/dist/http/models/CacheConfig.d.ts.map +0 -1
  106. package/dist/http/models/CacheConfig.js +0 -4
  107. package/dist/http/models/CacheMode.d.ts +0 -45
  108. package/dist/http/models/CacheMode.d.ts.map +0 -1
  109. package/dist/http/models/CacheMode.js +0 -45
  110. package/dist/http/models/HttpClientConfig.d.ts +0 -90
  111. package/dist/http/models/HttpClientConfig.d.ts.map +0 -1
  112. package/dist/http/models/HttpClientConfig.js +0 -4
  113. package/dist/http/models/RequestConfig.d.ts +0 -67
  114. package/dist/http/models/RequestConfig.d.ts.map +0 -1
  115. package/dist/http/models/RequestConfig.js +0 -4
  116. package/dist/http/models/index.d.ts +0 -24
  117. package/dist/http/models/index.d.ts.map +0 -1
  118. package/dist/http/models/index.js +0 -16
  119. package/dist/http/types.d.ts +0 -13
  120. package/dist/http/types.d.ts.map +0 -1
  121. package/dist/http/types.js +0 -14
  122. package/dist/index.d.ts +0 -15
  123. package/dist/index.d.ts.map +0 -1
  124. package/dist/index.js +0 -20
  125. package/dist/layout/button/XButton.d.ts +0 -99
  126. package/dist/layout/button/XButton.d.ts.map +0 -1
  127. package/dist/layout/button/XButton.js +0 -131
  128. package/dist/layout/hover/XHover.d.ts +0 -147
  129. package/dist/layout/hover/XHover.d.ts.map +0 -1
  130. package/dist/layout/hover/XHover.js +0 -128
  131. package/dist/layout/image/XImage.d.ts +0 -35
  132. package/dist/layout/image/XImage.d.ts.map +0 -1
  133. package/dist/layout/image/XImage.effects.d.ts +0 -16
  134. package/dist/layout/image/XImage.effects.d.ts.map +0 -1
  135. package/dist/layout/image/XImage.effects.js +0 -77
  136. package/dist/layout/image/XImage.js +0 -261
  137. package/dist/layout/image/XImage.types.d.ts +0 -130
  138. package/dist/layout/image/XImage.types.d.ts.map +0 -1
  139. package/dist/layout/image/XImage.types.js +0 -2
  140. package/dist/layout/image/XImageGallery.d.ts +0 -76
  141. package/dist/layout/image/XImageGallery.d.ts.map +0 -1
  142. package/dist/layout/image/XImageGallery.js +0 -94
  143. package/dist/layout/image/index.d.ts +0 -12
  144. package/dist/layout/image/index.d.ts.map +0 -1
  145. package/dist/layout/image/index.js +0 -4
  146. package/dist/layout/index.d.ts +0 -12
  147. package/dist/layout/index.d.ts.map +0 -1
  148. package/dist/layout/index.js +0 -11
  149. package/dist/layout/resize/core/ResizeObserverHook.d.ts +0 -41
  150. package/dist/layout/resize/core/ResizeObserverHook.d.ts.map +0 -1
  151. package/dist/layout/resize/core/ResizeObserverHook.js +0 -57
  152. package/dist/layout/resize/core/SizedLayoutContext.d.ts +0 -23
  153. package/dist/layout/resize/core/SizedLayoutContext.d.ts.map +0 -1
  154. package/dist/layout/resize/core/SizedLayoutContext.js +0 -23
  155. package/dist/layout/resize/core/SizedLayoutProps.d.ts +0 -19
  156. package/dist/layout/resize/core/SizedLayoutProps.d.ts.map +0 -1
  157. package/dist/layout/resize/core/SizedLayoutProps.js +0 -1
  158. package/dist/layout/resize/impl/SizedContainer.d.ts +0 -45
  159. package/dist/layout/resize/impl/SizedContainer.d.ts.map +0 -1
  160. package/dist/layout/resize/impl/SizedContainer.js +0 -65
  161. package/dist/layout/resize/impl/SizedLayout.d.ts +0 -45
  162. package/dist/layout/resize/impl/SizedLayout.d.ts.map +0 -1
  163. package/dist/layout/resize/impl/SizedLayout.js +0 -65
  164. package/dist/layout/spinner/XSpinner.d.ts +0 -43
  165. package/dist/layout/spinner/XSpinner.d.ts.map +0 -1
  166. package/dist/layout/spinner/XSpinner.js +0 -47
  167. package/dist/layout/virtualized/VirtualizedConfig.d.ts +0 -16
  168. package/dist/layout/virtualized/VirtualizedConfig.d.ts.map +0 -1
  169. package/dist/layout/virtualized/VirtualizedConfig.js +0 -15
  170. package/dist/layout/visibility/ElementVisibilityHooks.d.ts +0 -13
  171. package/dist/layout/visibility/ElementVisibilityHooks.d.ts.map +0 -1
  172. package/dist/layout/visibility/ElementVisibilityHooks.js +0 -119
  173. package/dist/media/components/XVideo.d.ts +0 -205
  174. package/dist/media/components/XVideo.d.ts.map +0 -1
  175. package/dist/media/components/XVideo.js +0 -297
  176. package/dist/media/components/XVideoBufferingIndicator.d.ts +0 -13
  177. package/dist/media/components/XVideoBufferingIndicator.d.ts.map +0 -1
  178. package/dist/media/components/XVideoBufferingIndicator.js +0 -13
  179. package/dist/media/components/XVideoErrorIndicator.d.ts +0 -15
  180. package/dist/media/components/XVideoErrorIndicator.d.ts.map +0 -1
  181. package/dist/media/components/XVideoErrorIndicator.js +0 -19
  182. package/dist/media/index.d.ts +0 -7
  183. package/dist/media/index.d.ts.map +0 -1
  184. package/dist/media/index.js +0 -7
  185. package/dist/media/playback-queue-store.d.ts +0 -746
  186. package/dist/media/playback-queue-store.d.ts.map +0 -1
  187. package/dist/media/playback-queue-store.js +0 -670
  188. package/dist/media/video-play-safe.d.ts +0 -26
  189. package/dist/media/video-play-safe.d.ts.map +0 -1
  190. package/dist/media/video-play-safe.js +0 -56
  191. package/dist/media/video-state.d.ts +0 -38
  192. package/dist/media/video-state.d.ts.map +0 -1
  193. package/dist/media/video-state.js +0 -125
  194. package/dist/models/ApiPageDataFieldDTO.d.ts +0 -9
  195. package/dist/models/ApiPageDataFieldDTO.d.ts.map +0 -1
  196. package/dist/models/ApiPageDataFieldDTO.js +0 -1
  197. package/dist/models/ApiResponse.d.ts +0 -29
  198. package/dist/models/ApiResponse.d.ts.map +0 -1
  199. package/dist/models/ApiResponse.js +0 -32
  200. package/dist/models/PaginationDTO.d.ts +0 -8
  201. package/dist/models/PaginationDTO.d.ts.map +0 -1
  202. package/dist/models/PaginationDTO.js +0 -6
  203. package/dist/models/index.d.ts +0 -4
  204. package/dist/models/index.d.ts.map +0 -1
  205. package/dist/models/index.js +0 -3
  206. package/dist/refresh/LoadMoreAsync.d.ts +0 -36
  207. package/dist/refresh/LoadMoreAsync.d.ts.map +0 -1
  208. package/dist/refresh/LoadMoreAsync.js +0 -55
  209. package/dist/refresh/index.d.ts +0 -2
  210. package/dist/refresh/index.d.ts.map +0 -1
  211. package/dist/refresh/index.js +0 -2
  212. package/dist/responsive/BrowserAdapter.d.ts +0 -26
  213. package/dist/responsive/BrowserAdapter.d.ts.map +0 -1
  214. package/dist/responsive/BrowserAdapter.js +0 -79
  215. package/dist/responsive/ScreenAdapter.d.ts +0 -2
  216. package/dist/responsive/ScreenAdapter.d.ts.map +0 -1
  217. package/dist/responsive/ScreenAdapter.js +0 -5
  218. package/dist/responsive/index.d.ts +0 -3
  219. package/dist/responsive/index.d.ts.map +0 -1
  220. package/dist/responsive/index.js +0 -3
  221. package/dist/sse/SSEManager.d.ts +0 -21
  222. package/dist/sse/SSEManager.d.ts.map +0 -1
  223. package/dist/sse/SSEManager.js +0 -73
  224. package/dist/sse/SSERegistry.d.ts +0 -20
  225. package/dist/sse/SSERegistry.d.ts.map +0 -1
  226. package/dist/sse/SSERegistry.js +0 -36
  227. package/dist/sse/SSEStatus.d.ts +0 -7
  228. package/dist/sse/SSEStatus.d.ts.map +0 -1
  229. package/dist/sse/SSEStatus.js +0 -7
  230. package/dist/sse/UseSSE.d.ts +0 -13
  231. package/dist/sse/UseSSE.d.ts.map +0 -1
  232. package/dist/sse/UseSSE.js +0 -39
  233. package/dist/sse/index.d.ts +0 -5
  234. package/dist/sse/index.d.ts.map +0 -1
  235. package/dist/sse/index.js +0 -5
  236. package/dist/utils/MIME.d.ts +0 -137
  237. package/dist/utils/MIME.d.ts.map +0 -1
  238. package/dist/utils/MIME.js +0 -192
  239. package/dist/utils/Reload.d.ts +0 -62
  240. package/dist/utils/Reload.d.ts.map +0 -1
  241. package/dist/utils/Reload.js +0 -66
  242. package/dist/utils/ScrollToCenter.d.ts +0 -72
  243. package/dist/utils/ScrollToCenter.d.ts.map +0 -1
  244. package/dist/utils/ScrollToCenter.js +0 -145
  245. package/dist/utils/index.d.ts +0 -5
  246. package/dist/utils/index.d.ts.map +0 -1
  247. package/dist/utils/index.js +0 -5
  248. package/dist/utils/url-placholder.d.ts +0 -14
  249. package/dist/utils/url-placholder.d.ts.map +0 -1
  250. package/dist/utils/url-placholder.js +0 -17
@@ -1 +0,0 @@
1
- {"version":3,"file":"playback-queue-store.d.ts","sourceRoot":"","sources":["../../src/media/playback-queue-store.ts"],"names":[],"mappings":"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"}
@@ -1,670 +0,0 @@
1
- /**
2
- * @fileoverview 播放队列状态管理 (Zustand)
3
- *
4
- * 支持多 Tab / 多页面场景,全局只有一个视频在播放。
5
- *
6
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
7
- *
8
- * @module playback-queue-store
9
- * @see {@link ./playback-queue-store.md} 详细文档
10
- */
11
- import { create } from 'zustand';
12
- import { subscribeWithSelector } from 'zustand/middleware';
13
- import { useShallow } from 'zustand/react/shallow';
14
- // ============================================================================
15
- // Initial State - 初始状态
16
- // ============================================================================
17
- /**
18
- * 初始状态
19
- *
20
- * @internal
21
- */
22
- const initialState = {
23
- sources: {},
24
- itemIdToSource: {},
25
- activeSource: null,
26
- currentId: null,
27
- muted: true, // 默认静音,符合浏览器自动播放策略
28
- loop: true, // 默认循环播放
29
- };
30
- // ============================================================================
31
- // Helper Functions - 辅助函数
32
- // ============================================================================
33
- /**
34
- * 更新单个 source 的反向索引
35
- *
36
- * @param currentIndex - 当前的反向索引
37
- * @param sourceName - source 名称
38
- * @param oldIds - 旧的 ID 列表
39
- * @param newIds - 新的 ID 列表
40
- * @returns 更新后的反向索引
41
- *
42
- * @internal
43
- */
44
- function updateReverseIndexForSource(currentIndex, sourceName, oldIds, newIds) {
45
- const index = { ...currentIndex };
46
- // 移除旧的映射
47
- for (const id of oldIds) {
48
- if (index[id] === sourceName) {
49
- delete index[id];
50
- }
51
- }
52
- // 添加新的映射
53
- for (const id of newIds) {
54
- index[id] = sourceName;
55
- }
56
- return index;
57
- }
58
- // ============================================================================
59
- // Store - Zustand Store 定义
60
- // ============================================================================
61
- /**
62
- * 播放队列 Zustand Store
63
- *
64
- * 使用 `subscribeWithSelector` 中间件支持选择性订阅。
65
- *
66
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
67
- *
68
- * @example
69
- * ```tsx
70
- * // 直接使用 store(不推荐,建议使用封装的 hooks)
71
- * const currentId = usePlaybackQueueStore(state => state.currentId)
72
- * ```
73
- */
74
- export const usePlaybackQueueStore = create()(subscribeWithSelector((set, get) => ({
75
- ...initialState,
76
- setSource: (source, ids, autoPlay = false) => {
77
- if (!source) {
78
- if (process.env.NODE_ENV === 'development') {
79
- console.warn('[PlaybackQueue] source name is required');
80
- }
81
- return;
82
- }
83
- const uniqueIds = [...new Set(ids || [])];
84
- set(state => {
85
- var _a;
86
- const oldIds = ((_a = state.sources[source]) === null || _a === void 0 ? void 0 : _a.itemIds) || [];
87
- const newSources = {
88
- ...state.sources,
89
- [source]: { itemIds: uniqueIds },
90
- };
91
- const newIndex = updateReverseIndexForSource(state.itemIdToSource, source, oldIds, uniqueIds);
92
- // 检查当前播放的项目是否还在列表中
93
- let newCurrentId = state.currentId;
94
- let newActiveSource = state.activeSource;
95
- if (state.activeSource === source && state.currentId) {
96
- if (!uniqueIds.includes(state.currentId)) {
97
- // 当前播放的项目不在新列表中
98
- newCurrentId = autoPlay && uniqueIds.length > 0 ? uniqueIds[0] : null;
99
- }
100
- }
101
- // 如果要自动播放且当前没有在播放
102
- if (autoPlay && uniqueIds.length > 0 && !state.currentId) {
103
- newActiveSource = source;
104
- newCurrentId = uniqueIds[0];
105
- }
106
- return {
107
- sources: newSources,
108
- itemIdToSource: newIndex,
109
- activeSource: newActiveSource,
110
- currentId: newCurrentId,
111
- };
112
- });
113
- },
114
- appendToSource: (source, ids) => {
115
- if (!source || !ids || ids.length === 0)
116
- return;
117
- set(state => {
118
- const sourceData = state.sources[source];
119
- const existingIds = (sourceData === null || sourceData === void 0 ? void 0 : sourceData.itemIds) || [];
120
- const existingSet = new Set(existingIds);
121
- const newIds = ids.filter(id => !existingSet.has(id));
122
- if (newIds.length === 0)
123
- return state;
124
- const allIds = [...existingIds, ...newIds];
125
- const newIndex = { ...state.itemIdToSource };
126
- for (const id of newIds) {
127
- newIndex[id] = source;
128
- }
129
- return {
130
- sources: {
131
- ...state.sources,
132
- [source]: { itemIds: allIds },
133
- },
134
- itemIdToSource: newIndex,
135
- };
136
- });
137
- },
138
- removeSource: (source) => {
139
- set(state => {
140
- const sourceData = state.sources[source];
141
- if (!sourceData)
142
- return state;
143
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
144
- const { [source]: _removed, ...restSources } = state.sources;
145
- // 清理反向索引
146
- const newIndex = { ...state.itemIdToSource };
147
- for (const id of sourceData.itemIds) {
148
- if (newIndex[id] === source) {
149
- delete newIndex[id];
150
- }
151
- }
152
- // 如果移除的是当前激活的 source,停止播放
153
- if (state.activeSource === source) {
154
- return {
155
- sources: restSources,
156
- itemIdToSource: newIndex,
157
- activeSource: null,
158
- currentId: null,
159
- };
160
- }
161
- return {
162
- sources: restSources,
163
- itemIdToSource: newIndex,
164
- };
165
- });
166
- },
167
- play: (source, id) => {
168
- const { sources } = get();
169
- const sourceData = sources[source];
170
- if (!sourceData) {
171
- if (process.env.NODE_ENV === 'development') {
172
- console.warn(`[PlaybackQueue] Source "${source}" not found`);
173
- }
174
- return;
175
- }
176
- if (!sourceData.itemIds.includes(id)) {
177
- if (process.env.NODE_ENV === 'development') {
178
- console.warn(`[PlaybackQueue] Item "${id}" not found in source "${source}"`);
179
- }
180
- return;
181
- }
182
- set({
183
- activeSource: source,
184
- currentId: id,
185
- });
186
- },
187
- playById: (id) => {
188
- var _a;
189
- const { sources, activeSource, itemIdToSource } = get();
190
- // 优先检查当前 activeSource
191
- if (activeSource && ((_a = sources[activeSource]) === null || _a === void 0 ? void 0 : _a.itemIds.includes(id))) {
192
- set({ currentId: id });
193
- return;
194
- }
195
- // 使用反向索引快速查找
196
- const source = itemIdToSource[id];
197
- if (!source) {
198
- if (process.env.NODE_ENV === 'development') {
199
- console.warn(`[PlaybackQueue] Item "${id}" not found in any source`);
200
- }
201
- return;
202
- }
203
- set({
204
- activeSource: source,
205
- currentId: id,
206
- });
207
- },
208
- next: () => {
209
- const { sources, activeSource, currentId, loop } = get();
210
- if (!activeSource)
211
- return;
212
- const sourceData = sources[activeSource];
213
- if (!sourceData || sourceData.itemIds.length === 0)
214
- return;
215
- // 如果没有当前播放项,播放第一个
216
- if (!currentId) {
217
- set({ currentId: sourceData.itemIds[0] });
218
- return;
219
- }
220
- const currentIndex = sourceData.itemIds.indexOf(currentId);
221
- if (currentIndex === -1) {
222
- set({ currentId: sourceData.itemIds[0] });
223
- return;
224
- }
225
- const nextIndex = currentIndex + 1;
226
- if (nextIndex >= sourceData.itemIds.length) {
227
- // 已是最后一个
228
- set({ currentId: loop ? sourceData.itemIds[0] : null });
229
- return;
230
- }
231
- set({ currentId: sourceData.itemIds[nextIndex] });
232
- },
233
- prev: () => {
234
- const { sources, activeSource, currentId, loop } = get();
235
- if (!activeSource)
236
- return;
237
- const sourceData = sources[activeSource];
238
- if (!sourceData || sourceData.itemIds.length === 0)
239
- return;
240
- if (!currentId) {
241
- set({ currentId: sourceData.itemIds[sourceData.itemIds.length - 1] });
242
- return;
243
- }
244
- const currentIndex = sourceData.itemIds.indexOf(currentId);
245
- if (currentIndex === -1) {
246
- set({ currentId: sourceData.itemIds[0] });
247
- return;
248
- }
249
- const prevIndex = currentIndex - 1;
250
- if (prevIndex < 0) {
251
- set({
252
- currentId: loop ? sourceData.itemIds[sourceData.itemIds.length - 1] : null
253
- });
254
- return;
255
- }
256
- set({ currentId: sourceData.itemIds[prevIndex] });
257
- },
258
- stop: () => {
259
- set({ currentId: null });
260
- },
261
- onEnded: () => {
262
- get().next();
263
- },
264
- setMuted: (muted) => {
265
- set({ muted });
266
- },
267
- toggleMute: () => {
268
- set(state => ({ muted: !state.muted }));
269
- },
270
- setLoop: (loop) => {
271
- set({ loop });
272
- },
273
- reset: () => {
274
- set(initialState);
275
- },
276
- })));
277
- // ============================================================================
278
- // Selectors - 选择器(静态引用,避免重复创建)
279
- // ============================================================================
280
- /** @internal */
281
- const selectActions = (state) => ({
282
- setSource: state.setSource,
283
- appendToSource: state.appendToSource,
284
- removeSource: state.removeSource,
285
- play: state.play,
286
- playById: state.playById,
287
- next: state.next,
288
- prev: state.prev,
289
- stop: state.stop,
290
- onEnded: state.onEnded,
291
- setMuted: state.setMuted,
292
- toggleMute: state.toggleMute,
293
- setLoop: state.setLoop,
294
- reset: state.reset,
295
- });
296
- /** @internal */
297
- const selectMuted = (state) => state.muted;
298
- /** @internal */
299
- const selectCurrentId = (state) => state.currentId;
300
- /** @internal */
301
- const selectActiveSource = (state) => state.activeSource;
302
- /** @internal */
303
- const selectLoop = (state) => state.loop;
304
- // ============================================================================
305
- // Hooks - React Hooks(选择性订阅,性能优化)
306
- // ============================================================================
307
- /**
308
- * 获取播放队列操作方法
309
- *
310
- * 使用 shallow 比较,避免不必要的重渲染。
311
- * 返回的方法引用稳定,可以安全地用作依赖项。
312
- *
313
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
314
- *
315
- * @returns 所有操作方法
316
- *
317
- * @example
318
- * ```tsx
319
- * const { play, stop, next, prev, toggleMute, onEnded } = usePlaybackActions()
320
- *
321
- * // 在视频组件中
322
- * <video
323
- * onEnded={onEnded}
324
- * onClick={() => play('home', item.id)}
325
- * />
326
- *
327
- * // 控制按钮
328
- * <button onClick={prev}>上一个</button>
329
- * <button onClick={next}>下一个</button>
330
- * <button onClick={toggleMute}>静音</button>
331
- * ```
332
- */
333
- export function usePlaybackActions() {
334
- return usePlaybackQueueStore(useShallow(selectActions));
335
- }
336
- /**
337
- * 判断指定项目是否正在播放
338
- *
339
- * 选择性订阅,只有当该项目的播放状态变化时才会重渲染。
340
- * 这是性能最优的播放状态判断方式。
341
- *
342
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
343
- *
344
- * @param id - 项目 ID
345
- * @returns 是否正在播放
346
- *
347
- * @example
348
- * ```tsx
349
- * const VideoCard = ({ item }) => {
350
- * const isPlaying = usePlaybackIsPlaying(item.id)
351
- *
352
- * return (
353
- * <video autoPlay={isPlaying} muted />
354
- * )
355
- * }
356
- * ```
357
- */
358
- export function usePlaybackIsPlaying(id) {
359
- return usePlaybackQueueStore(state => state.currentId === id);
360
- }
361
- /**
362
- * 获取静音状态
363
- *
364
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
365
- *
366
- * @returns 是否静音
367
- *
368
- * @example
369
- * ```tsx
370
- * const muted = usePlaybackMuted()
371
- *
372
- * <video muted={muted} />
373
- * ```
374
- */
375
- export function usePlaybackMuted() {
376
- return usePlaybackQueueStore(selectMuted);
377
- }
378
- /**
379
- * 获取当前播放的项目 ID
380
- *
381
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
382
- *
383
- * @returns 当前播放的 ID,没有播放时为 null
384
- *
385
- * @example
386
- * ```tsx
387
- * const currentId = usePlaybackCurrentId()
388
- *
389
- * if (currentId) {
390
- * console.log('正在播放:', currentId)
391
- * }
392
- * ```
393
- */
394
- export function usePlaybackCurrentId() {
395
- return usePlaybackQueueStore(selectCurrentId);
396
- }
397
- /**
398
- * 获取当前激活的 source 名称
399
- *
400
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
401
- *
402
- * @returns source 名称,没有激活时为 null
403
- *
404
- * @example
405
- * ```tsx
406
- * const activeSource = usePlaybackActiveSource()
407
- *
408
- * // 高亮当前激活的 Tab
409
- * <Tab active={activeSource === 'home'}>首页</Tab>
410
- * ```
411
- */
412
- export function usePlaybackActiveSource() {
413
- return usePlaybackQueueStore(selectActiveSource);
414
- }
415
- /**
416
- * 获取循环播放状态
417
- *
418
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
419
- *
420
- * @returns 是否循环播放
421
- *
422
- * @example
423
- * ```tsx
424
- * const loop = usePlaybackLoop()
425
- * const { setLoop } = usePlaybackActions()
426
- *
427
- * <button onClick={() => setLoop(!loop)}>
428
- * {loop ? '循环开' : '循环关'}
429
- * </button>
430
- * ```
431
- */
432
- export function usePlaybackLoop() {
433
- return usePlaybackQueueStore(selectLoop);
434
- }
435
- /**
436
- * 获取指定 source 的项目 ID 列表
437
- *
438
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
439
- *
440
- * @param source - source 名称
441
- * @returns 项目 ID 列表,source 不存在时返回空数组
442
- *
443
- * @example
444
- * ```tsx
445
- * const homeItems = usePlaybackSourceItems('home')
446
- *
447
- * console.log('首页有', homeItems.length, '个视频')
448
- * ```
449
- */
450
- export function usePlaybackSourceItems(source) {
451
- return usePlaybackQueueStore(state => { var _a, _b; return (_b = (_a = state.sources[source]) === null || _a === void 0 ? void 0 : _a.itemIds) !== null && _b !== void 0 ? _b : []; });
452
- }
453
- /**
454
- * 获取单个 item 的播放状态和静音状态(常用组合)
455
- *
456
- * 使用 shallow 比较,仅当 isPlaying 或 muted 变化时重渲染。
457
- *
458
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
459
- *
460
- * @param id - 项目 ID
461
- * @returns { isPlaying: boolean, muted: boolean }
462
- *
463
- * @example
464
- * ```tsx
465
- * const VideoCard = ({ item }) => {
466
- * const { isPlaying, muted } = usePlaybackItemState(item.id)
467
- * const { onEnded } = usePlaybackActions()
468
- *
469
- * return (
470
- * <video
471
- * autoPlay={isPlaying}
472
- * muted={muted}
473
- * onEnded={onEnded}
474
- * />
475
- * )
476
- * }
477
- * ```
478
- */
479
- export function usePlaybackItemState(id) {
480
- return usePlaybackQueueStore(useShallow(state => ({
481
- isPlaying: state.currentId === id,
482
- muted: state.muted,
483
- })));
484
- }
485
- // ============================================================================
486
- // Non-Hook API - 非 Hook API(用于组件外部或副作用)
487
- // ============================================================================
488
- /**
489
- * 播放队列命名空间
490
- *
491
- * 非 Hook 版本的 API,用于:
492
- * - 组件外部调用(如事件回调、工具函数)
493
- * - 不在 React 组件中的场景
494
- * - 需要命令式调用的场景
495
- *
496
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
497
- *
498
- * @example
499
- * ```tsx
500
- * // 在事件回调中使用
501
- * const handleClick = () => {
502
- * PlaybackQueue.play('home', 'item-1')
503
- * }
504
- *
505
- * // 在非组件代码中使用
506
- * PlaybackQueue.toggleMute()
507
- *
508
- * // 获取当前状态快照
509
- * const state = PlaybackQueue.getState()
510
- * console.log('当前播放:', state.currentId)
511
- *
512
- * // 订阅状态变化
513
- * const unsubscribe = PlaybackQueue.subscribeCurrentId((currentId, prevId) => {
514
- * console.log('播放变化:', prevId, '->', currentId)
515
- * })
516
- * // 不再需要时取消订阅
517
- * unsubscribe()
518
- * ```
519
- */
520
- export const PlaybackQueue = {
521
- /**
522
- * 获取当前状态快照(非响应式)
523
- *
524
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
525
- *
526
- * @returns 当前完整状态
527
- */
528
- getState: () => usePlaybackQueueStore.getState(),
529
- /**
530
- * 设置某个 source 的播放列表
531
- *
532
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
533
- *
534
- * @see {@link PlaybackQueueActions.setSource}
535
- */
536
- setSource: (...args) => usePlaybackQueueStore.getState().setSource(...args),
537
- /**
538
- * 向某个 source 追加项目
539
- *
540
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
541
- *
542
- * @see {@link PlaybackQueueActions.appendToSource}
543
- */
544
- appendToSource: (...args) => usePlaybackQueueStore.getState().appendToSource(...args),
545
- /**
546
- * 移除某个 source
547
- *
548
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
549
- *
550
- * @see {@link PlaybackQueueActions.removeSource}
551
- */
552
- removeSource: (...args) => usePlaybackQueueStore.getState().removeSource(...args),
553
- /**
554
- * 播放指定项目
555
- *
556
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
557
- *
558
- * @see {@link PlaybackQueueActions.play}
559
- */
560
- play: (...args) => usePlaybackQueueStore.getState().play(...args),
561
- /**
562
- * 播放指定项目(自动查找 source)
563
- *
564
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
565
- *
566
- * @see {@link PlaybackQueueActions.playById}
567
- */
568
- playById: (...args) => usePlaybackQueueStore.getState().playById(...args),
569
- /**
570
- * 播放下一个
571
- *
572
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
573
- *
574
- * @see {@link PlaybackQueueActions.next}
575
- */
576
- next: () => usePlaybackQueueStore.getState().next(),
577
- /**
578
- * 播放上一个
579
- *
580
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
581
- *
582
- * @see {@link PlaybackQueueActions.prev}
583
- */
584
- prev: () => usePlaybackQueueStore.getState().prev(),
585
- /**
586
- * 停止播放
587
- *
588
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
589
- *
590
- * @see {@link PlaybackQueueActions.stop}
591
- */
592
- stop: () => usePlaybackQueueStore.getState().stop(),
593
- /**
594
- * 播放完成回调
595
- *
596
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
597
- *
598
- * @see {@link PlaybackQueueActions.onEnded}
599
- */
600
- onEnded: () => usePlaybackQueueStore.getState().onEnded(),
601
- /**
602
- * 设置静音状态
603
- *
604
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
605
- *
606
- * @see {@link PlaybackQueueActions.setMuted}
607
- */
608
- setMuted: (...args) => usePlaybackQueueStore.getState().setMuted(...args),
609
- /**
610
- * 切换静音状态
611
- *
612
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
613
- *
614
- * @see {@link PlaybackQueueActions.toggleMute}
615
- */
616
- toggleMute: () => usePlaybackQueueStore.getState().toggleMute(),
617
- /**
618
- * 设置循环播放
619
- *
620
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
621
- *
622
- * @see {@link PlaybackQueueActions.setLoop}
623
- */
624
- setLoop: (...args) => usePlaybackQueueStore.getState().setLoop(...args),
625
- /**
626
- * 重置所有状态
627
- *
628
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
629
- *
630
- * @see {@link PlaybackQueueActions.reset}
631
- */
632
- reset: () => usePlaybackQueueStore.getState().reset(),
633
- /**
634
- * 订阅当前播放 ID 变化
635
- *
636
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
637
- *
638
- * @param callback - 回调函数,参数为 (新值, 旧值)
639
- * @returns 取消订阅函数
640
- *
641
- * @example
642
- * ```ts
643
- * const unsubscribe = PlaybackQueue.subscribeCurrentId((currentId, prevId) => {
644
- * console.log('播放变化:', prevId, '->', currentId)
645
- * })
646
- *
647
- * // 清理时取消订阅
648
- * unsubscribe()
649
- * ```
650
- */
651
- subscribeCurrentId: (callback) => usePlaybackQueueStore.subscribe(state => state.currentId, callback),
652
- /**
653
- * 订阅 activeSource 变化
654
- *
655
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
656
- *
657
- * @param callback - 回调函数,参数为 (新值, 旧值)
658
- * @returns 取消订阅函数
659
- */
660
- subscribeActiveSource: (callback) => usePlaybackQueueStore.subscribe(state => state.activeSource, callback),
661
- /**
662
- * 订阅静音状态变化
663
- *
664
- * 查看更多,请访问 https://github.com/NBXXF/xxf_react/blob/main/src/media/playback-queue-store.md
665
- *
666
- * @param callback - 回调函数,参数为 (新值, 旧值)
667
- * @returns 取消订阅函数
668
- */
669
- subscribeMuted: (callback) => usePlaybackQueueStore.subscribe(state => state.muted, callback),
670
- };
@@ -1,26 +0,0 @@
1
- /**
2
- * Video 安全播放扩展
3
- * 处理移动端自动播放限制,自动降级为静音播放
4
- */
5
- export interface PlaySafeOptions {
6
- /** 是否在非静音播放失败时降级为静音重试,默认 true */
7
- mutedRetry?: boolean;
8
- /** 从有声降级为静音时回调 */
9
- onMutedChange?: () => void;
10
- }
11
- declare global {
12
- interface HTMLVideoElement {
13
- playSafe(options?: PlaySafeOptions): Promise<void>;
14
- }
15
- }
16
- /**
17
- * 安全播放视频
18
- * 1. 按当前 video.muted 状态尝试播放
19
- * 2. 如果非静音播放失败,降级为静音再试
20
- */
21
- export declare function playSafe(video: HTMLVideoElement, options?: PlaySafeOptions): Promise<void>;
22
- /**
23
- * 扩展 HTMLVideoElement 原型
24
- */
25
- export declare function extendVideoElement(): void;
26
- //# sourceMappingURL=video-play-safe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video-play-safe.d.ts","sourceRoot":"","sources":["../../src/media/video-play-safe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC5B,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB;IAClB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAGD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,gBAAgB;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACtD;CACJ;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC1B,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAYzC"}