expo-gliph-player 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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +348 -0
  3. package/android/build.gradle +82 -0
  4. package/android/src/main/AndroidManifest.xml +31 -0
  5. package/android/src/main/java/com/gliphplayer/DeviceInfoModule.kt +48 -0
  6. package/android/src/main/java/com/gliphplayer/DeviceInfoPackage.kt +16 -0
  7. package/android/src/main/java/com/gliphplayer/GliphPlayerModule.kt +360 -0
  8. package/android/src/main/java/com/gliphplayer/GliphPlayerPackage.kt +48 -0
  9. package/android/src/main/java/com/gliphplayer/GliphPlayerService.kt +797 -0
  10. package/android/src/main/res/xml/automotive_app_desc.xml +4 -0
  11. package/android/src/oldarch/com/gliphplayer/NativeGliphPlayerSpec.kt +56 -0
  12. package/app.plugin.js +1 -0
  13. package/expo-gliph-player.podspec +91 -0
  14. package/ios/GliphAudioPlayer.h +77 -0
  15. package/ios/GliphAudioPlayer.swift +697 -0
  16. package/ios/GliphPlayer-Bridging-Header.h +3 -0
  17. package/ios/GliphPlayerModule.h +12 -0
  18. package/ios/GliphPlayerModule.mm +243 -0
  19. package/ios/expo_gliph_player.h +22 -0
  20. package/lib/commonjs/GliphPlayer.js +310 -0
  21. package/lib/commonjs/GliphPlayer.js.map +1 -0
  22. package/lib/commonjs/hooks.js +233 -0
  23. package/lib/commonjs/hooks.js.map +1 -0
  24. package/lib/commonjs/index.js +166 -0
  25. package/lib/commonjs/index.js.map +1 -0
  26. package/lib/commonjs/package.json +1 -0
  27. package/lib/commonjs/specs/NativeGliphPlayer.js +19 -0
  28. package/lib/commonjs/specs/NativeGliphPlayer.js.map +1 -0
  29. package/lib/commonjs/types.js +175 -0
  30. package/lib/commonjs/types.js.map +1 -0
  31. package/lib/module/GliphPlayer.js +305 -0
  32. package/lib/module/GliphPlayer.js.map +1 -0
  33. package/lib/module/hooks.js +221 -0
  34. package/lib/module/hooks.js.map +1 -0
  35. package/lib/module/index.js +20 -0
  36. package/lib/module/index.js.map +1 -0
  37. package/lib/module/package.json +1 -0
  38. package/lib/module/specs/NativeGliphPlayer.js +20 -0
  39. package/lib/module/specs/NativeGliphPlayer.js.map +1 -0
  40. package/lib/module/types.js +181 -0
  41. package/lib/module/types.js.map +1 -0
  42. package/lib/typescript/src/GliphPlayer.d.ts +113 -0
  43. package/lib/typescript/src/GliphPlayer.d.ts.map +1 -0
  44. package/lib/typescript/src/hooks.d.ts +51 -0
  45. package/lib/typescript/src/hooks.d.ts.map +1 -0
  46. package/lib/typescript/src/index.d.ts +11 -0
  47. package/lib/typescript/src/index.d.ts.map +1 -0
  48. package/lib/typescript/src/specs/NativeGliphPlayer.d.ts +80 -0
  49. package/lib/typescript/src/specs/NativeGliphPlayer.d.ts.map +1 -0
  50. package/lib/typescript/src/types.d.ts +348 -0
  51. package/lib/typescript/src/types.d.ts.map +1 -0
  52. package/package.json +62 -0
  53. package/src/GliphPlayer.ts +356 -0
  54. package/src/hooks.ts +256 -0
  55. package/src/index.ts +61 -0
  56. package/src/specs/NativeGliphPlayer.ts +105 -0
  57. package/src/types.ts +395 -0
  58. package/src/withGliphPlayer.js +166 -0
@@ -0,0 +1,305 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * GliphPlayer.ts
5
+ *
6
+ * Main JS/TS API surface. Wraps the TurboModule (NativeGliphPlayer) and
7
+ * provides a clean, typed interface identical in spirit to react-native-track-player.
8
+ */
9
+
10
+ import { NativeEventEmitter, Platform } from 'react-native';
11
+ import NativeGliphPlayer from './specs/NativeGliphPlayer';
12
+ import { State } from './types';
13
+
14
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
15
+
16
+ let _emitter = null;
17
+ function getEmitter() {
18
+ if (!NativeGliphPlayer) {
19
+ throw new Error('[RNGliphPlayer] Native module not found. Is it linked correctly?');
20
+ }
21
+ if (!_emitter) {
22
+ _emitter = new NativeEventEmitter(NativeGliphPlayer);
23
+ }
24
+ return _emitter;
25
+ }
26
+
27
+ /** Resolve a require()'d asset to a URI string the native side can consume */
28
+ function resolveAssetSource(source) {
29
+ if (typeof source === 'number') {
30
+ const {
31
+ Image
32
+ } = require('react-native');
33
+ return Image.resolveAssetSource(source).uri;
34
+ }
35
+ return source;
36
+ }
37
+
38
+ /** Serialize a Track to a plain object safe for the TurboModule bridge */
39
+ function serializeTrack(track) {
40
+ return {
41
+ id: track.id ?? `track_${Date.now()}_${Math.random().toString(36).slice(2)}`,
42
+ url: resolveAssetSource(track.url),
43
+ title: track.title,
44
+ artist: track.artist,
45
+ album: track.album ?? '',
46
+ artwork: track.artwork != null ? resolveAssetSource(track.artwork) : '',
47
+ duration: track.duration ?? -1,
48
+ genre: track.genre ?? '',
49
+ date: track.date ?? '',
50
+ description: track.description ?? '',
51
+ rating: track.rating ?? 0,
52
+ isLiveStream: track.isLiveStream ?? false,
53
+ headers: track.headers ?? {},
54
+ pitchAlgorithm: track.pitchAlgorithm ?? 0,
55
+ userAgent: track.userAgent ?? ''
56
+ };
57
+ }
58
+ function checkModule() {
59
+ if (!NativeGliphPlayer) {
60
+ throw new Error('[RNGliphPlayer] Native module not found. ' + 'Ensure you have rebuilt the app after installing the library and ' + 'that you are not calling player methods before the JSI bridge is ready.');
61
+ }
62
+ return NativeGliphPlayer;
63
+ }
64
+
65
+ // ─── GliphPlayer API ─────────────────────────────────────────────────────────
66
+
67
+ const GliphPlayer = {
68
+ // ── Setup ──────────────────────────────────────────────────────────────────
69
+
70
+ /**
71
+ * Initialize the player. Must be called once before any other method.
72
+ * Safe to call multiple times — subsequent calls are no-ops.
73
+ */
74
+ async setupPlayer(options = {}) {
75
+ if (!NativeGliphPlayer) {
76
+ throw new Error('[RNGliphPlayer] Native module not ready. Ensure setup is called after app initialization.');
77
+ }
78
+ const opts = {
79
+ minBuffer: options.minBuffer ?? 15,
80
+ maxBuffer: options.maxBuffer ?? 50,
81
+ playBuffer: options.playBuffer ?? 2.5,
82
+ backBuffer: options.backBuffer ?? 0,
83
+ maxCacheSize: options.maxCacheSize ?? 0,
84
+ iosCategory: options.iosCategory ?? 'playback',
85
+ iosCategoryMode: options.iosCategoryMode ?? 'default',
86
+ iosCategoryOptions: options.iosCategoryOptions ?? [],
87
+ waitForBuffer: options.waitForBuffer ?? true,
88
+ autoHandleInterruptions: options.autoHandleInterruptions ?? false,
89
+ autoUpdateMetadata: options.autoUpdateMetadata ?? true,
90
+ progressUpdateEventInterval: options.progressUpdateEventInterval ?? 1.0,
91
+ android: options.android ?? {}
92
+ };
93
+ return NativeGliphPlayer.setupPlayer(opts);
94
+ },
95
+ /**
96
+ * Destroy the player and release all resources.
97
+ */
98
+ destroy() {
99
+ checkModule().destroy();
100
+ _emitter = null;
101
+ },
102
+ /**
103
+ * Returns true if the background service is running (Android).
104
+ */
105
+ async isServiceRunning() {
106
+ if (Platform.OS !== 'android') {
107
+ return true;
108
+ }
109
+ return checkModule().isServiceRunning();
110
+ },
111
+ // ── Queue management ───────────────────────────────────────────────────────
112
+
113
+ /**
114
+ * Add one or more tracks to the queue.
115
+ * @param tracks Single track or array of tracks.
116
+ * @param insertBeforeIndex Insert position. Defaults to end of queue.
117
+ * @returns The index of the first inserted track.
118
+ */
119
+ async add(tracks, insertBeforeIndex) {
120
+ const arr = Array.isArray(tracks) ? tracks : [tracks];
121
+ const serialized = arr.map(serializeTrack);
122
+ // Pass -1 as sentinel for "append to end" — Codegen doesn't support optional number params
123
+ const result = await checkModule().add(serialized, insertBeforeIndex ?? -1);
124
+ return result;
125
+ },
126
+ /**
127
+ * Remove tracks by their IDs.
128
+ */
129
+ async remove(trackIds) {
130
+ const ids = Array.isArray(trackIds) ? trackIds : [trackIds];
131
+ return checkModule().remove(ids);
132
+ },
133
+ /**
134
+ * Remove all tracks after the current one.
135
+ */
136
+ async removeUpcomingTracks() {
137
+ return checkModule().removeUpcomingTracks();
138
+ },
139
+ /**
140
+ * Skip to a specific queue index.
141
+ */
142
+ async skip(index, initialPosition) {
143
+ return checkModule().skip(index, initialPosition ?? -1);
144
+ },
145
+ /**
146
+ * Skip to the next track.
147
+ */
148
+ async skipToNext(initialPosition) {
149
+ return checkModule().skipToNext(initialPosition ?? -1);
150
+ },
151
+ /**
152
+ * Skip to the previous track.
153
+ */
154
+ async skipToPrevious(initialPosition) {
155
+ return checkModule().skipToPrevious(initialPosition ?? -1);
156
+ },
157
+ /**
158
+ * Move a track from one index to another.
159
+ */
160
+ async move(fromIndex, toIndex) {
161
+ return checkModule().move(fromIndex, toIndex);
162
+ },
163
+ // ── Playback control ───────────────────────────────────────────────────────
164
+
165
+ async play() {
166
+ return checkModule().play();
167
+ },
168
+ async pause() {
169
+ return checkModule().pause();
170
+ },
171
+ async stop() {
172
+ return checkModule().stop();
173
+ },
174
+ /**
175
+ * Stop playback and clear the queue.
176
+ */
177
+ async reset() {
178
+ return checkModule().reset();
179
+ },
180
+ /**
181
+ * Seek to an absolute position in seconds.
182
+ */
183
+ async seekTo(position) {
184
+ return checkModule().seekTo(position);
185
+ },
186
+ /**
187
+ * Seek by a relative offset in seconds (positive = forward, negative = back).
188
+ */
189
+ async seekBy(offset) {
190
+ return checkModule().seekBy(offset);
191
+ },
192
+ /**
193
+ * Set volume (0.0 – 1.0).
194
+ */
195
+ async setVolume(volume) {
196
+ if (volume < 0 || volume > 1) {
197
+ throw new Error('Volume must be between 0 and 1');
198
+ }
199
+ return checkModule().setVolume(volume);
200
+ },
201
+ async getVolume() {
202
+ return checkModule().getVolume();
203
+ },
204
+ /**
205
+ * Set playback rate (1.0 = normal speed).
206
+ */
207
+ async setRate(rate) {
208
+ return checkModule().setRate(rate);
209
+ },
210
+ async getRate() {
211
+ return checkModule().getRate();
212
+ },
213
+ async setRepeatMode(mode) {
214
+ return checkModule().setRepeatMode(mode);
215
+ },
216
+ async getRepeatMode() {
217
+ const mode = await checkModule().getRepeatMode();
218
+ return mode;
219
+ },
220
+ // ── Queue getters ──────────────────────────────────────────────────────────
221
+
222
+ async getQueue() {
223
+ const queue = await checkModule().getQueue();
224
+ return queue;
225
+ },
226
+ async getActiveTrackIndex() {
227
+ const idx = await checkModule().getActiveTrackIndex();
228
+ // Native returns -1 as sentinel when no track is active
229
+ return idx < 0 ? null : idx;
230
+ },
231
+ async getActiveTrack() {
232
+ const track = await checkModule().getActiveTrack();
233
+ return track;
234
+ },
235
+ async getTrack(index) {
236
+ const track = await checkModule().getTrack(index);
237
+ return track;
238
+ },
239
+ async getQueueSize() {
240
+ return checkModule().getQueueSize();
241
+ },
242
+ // ── State / progress ───────────────────────────────────────────────────────
243
+
244
+ async getPlaybackState() {
245
+ const state = await checkModule().getPlaybackState();
246
+ return state;
247
+ },
248
+ async getProgress() {
249
+ const progress = await checkModule().getProgress();
250
+ return progress;
251
+ },
252
+ // ── Metadata ───────────────────────────────────────────────────────────────
253
+
254
+ async updateMetadataForTrack(index, metadata) {
255
+ return checkModule().updateMetadataForTrack(index, metadata);
256
+ },
257
+ async clearNowPlayingMetadata() {
258
+ return checkModule().clearNowPlayingMetadata();
259
+ },
260
+ async updateNowPlayingMetadata(metadata) {
261
+ return checkModule().updateNowPlayingMetadata(metadata);
262
+ },
263
+ // ── Options / notification ─────────────────────────────────────────────────
264
+
265
+ /**
266
+ * Configure notification capabilities, jump intervals, etc.
267
+ */
268
+ async updateOptions(options) {
269
+ return checkModule().updateOptions(options);
270
+ },
271
+ // ── Event subscription ─────────────────────────────────────────────────────
272
+
273
+ /**
274
+ * Subscribe to a player event.
275
+ * Returns an unsubscribe function — call it to remove the listener.
276
+ *
277
+ * @example
278
+ * const unsub = GliphPlayer.addEventListener(Event.PlaybackState, ({ state }) => {
279
+ * console.log('State:', state);
280
+ * });
281
+ * // later:
282
+ * unsub();
283
+ */
284
+ addEventListener(event, listener) {
285
+ const subscription = getEmitter().addListener(event, listener);
286
+ return () => subscription.remove();
287
+ }
288
+ };
289
+ export default GliphPlayer;
290
+
291
+ // ─── Convenience state helpers ────────────────────────────────────────────────
292
+
293
+ export function isPlaying(state) {
294
+ return state === State.Playing;
295
+ }
296
+ export function isPaused(state) {
297
+ return state === State.Paused;
298
+ }
299
+ export function isBuffering(state) {
300
+ return state === State.Buffering || state === State.Loading;
301
+ }
302
+ export function isStopped(state) {
303
+ return state === State.Stopped || state === State.None;
304
+ }
305
+ //# sourceMappingURL=GliphPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeEventEmitter","Platform","NativeGliphPlayer","State","_emitter","getEmitter","Error","resolveAssetSource","source","Image","require","uri","serializeTrack","track","id","Date","now","Math","random","toString","slice","url","title","artist","album","artwork","duration","genre","date","description","rating","isLiveStream","headers","pitchAlgorithm","userAgent","checkModule","GliphPlayer","setupPlayer","options","opts","minBuffer","maxBuffer","playBuffer","backBuffer","maxCacheSize","iosCategory","iosCategoryMode","iosCategoryOptions","waitForBuffer","autoHandleInterruptions","autoUpdateMetadata","progressUpdateEventInterval","android","destroy","isServiceRunning","OS","add","tracks","insertBeforeIndex","arr","Array","isArray","serialized","map","result","remove","trackIds","ids","removeUpcomingTracks","skip","index","initialPosition","skipToNext","skipToPrevious","move","fromIndex","toIndex","play","pause","stop","reset","seekTo","position","seekBy","offset","setVolume","volume","getVolume","setRate","rate","getRate","setRepeatMode","mode","getRepeatMode","getQueue","queue","getActiveTrackIndex","idx","getActiveTrack","getTrack","getQueueSize","getPlaybackState","state","getProgress","progress","updateMetadataForTrack","metadata","clearNowPlayingMetadata","updateNowPlayingMetadata","updateOptions","addEventListener","event","listener","subscription","addListener","isPlaying","Playing","isPaused","Paused","isBuffering","Buffering","Loading","isStopped","Stopped","None"],"sourceRoot":"..\\..\\src","sources":["GliphPlayer.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * hooks.ts — React hooks for react-native-gliph-player
5
+ */
6
+
7
+ import { useEffect, useRef, useState, useCallback } from 'react';
8
+ import GliphPlayer from './GliphPlayer';
9
+ import { Event, State } from './types';
10
+ // ─── useTrackPlayerEvents ─────────────────────────────────────────────────────
11
+
12
+ /**
13
+ * Subscribe to one or more player events inside a component.
14
+ * Automatically unsubscribes on unmount.
15
+ *
16
+ * @example
17
+ * useTrackPlayerEvents([Event.PlaybackState], ({ state }) => {
18
+ * console.log(state);
19
+ * });
20
+ */
21
+ export function useTrackPlayerEvents(events, handler) {
22
+ const handlerRef = useRef(handler);
23
+ handlerRef.current = handler;
24
+ useEffect(() => {
25
+ const unsubs = events.map(event => GliphPlayer.addEventListener(event, data => {
26
+ handlerRef.current({
27
+ ...data,
28
+ type: event
29
+ });
30
+ }));
31
+ return () => unsubs.forEach(u => u());
32
+ // eslint-disable-next-line react-hooks/exhaustive-deps
33
+ }, events);
34
+ }
35
+
36
+ // ─── usePlaybackState ─────────────────────────────────────────────────────────
37
+
38
+ /**
39
+ * Returns the current playback state, updating reactively.
40
+ */
41
+ export function usePlaybackState() {
42
+ const [state, setState] = useState({
43
+ state: State.None
44
+ });
45
+ useEffect(() => {
46
+ let mounted = true;
47
+
48
+ // Fetch initial state
49
+ GliphPlayer.getPlaybackState().then(s => {
50
+ if (mounted) {
51
+ setState(s);
52
+ }
53
+ }).catch(() => {});
54
+ const unsub = GliphPlayer.addEventListener(Event.PlaybackState, data => {
55
+ if (mounted) {
56
+ setState({
57
+ state: data.state
58
+ });
59
+ }
60
+ });
61
+ return () => {
62
+ mounted = false;
63
+ unsub();
64
+ };
65
+ }, []);
66
+ return state;
67
+ }
68
+
69
+ // ─── useProgress ─────────────────────────────────────────────────────────────
70
+
71
+ /**
72
+ * Returns live playback progress (position, duration, buffered).
73
+ * @param updateInterval How often to poll in ms. Defaults to 1000ms.
74
+ * Set to 0 to rely solely on native progress events.
75
+ */
76
+ export function useProgress(updateInterval = 1000) {
77
+ const [progress, setProgress] = useState({
78
+ position: 0,
79
+ duration: 0,
80
+ buffered: 0
81
+ });
82
+ useEffect(() => {
83
+ let mounted = true;
84
+ let timer = null;
85
+ const update = () => {
86
+ GliphPlayer.getProgress().then(p => {
87
+ if (mounted) {
88
+ setProgress(p);
89
+ }
90
+ }).catch(() => {});
91
+ };
92
+ update();
93
+ if (updateInterval > 0) {
94
+ timer = setInterval(update, updateInterval);
95
+ }
96
+
97
+ // Also listen to native progress events for immediate updates
98
+ const unsub = GliphPlayer.addEventListener(Event.PlaybackProgressUpdated, data => {
99
+ if (mounted) {
100
+ setProgress({
101
+ position: data.position,
102
+ duration: data.duration,
103
+ buffered: data.buffered
104
+ });
105
+ }
106
+ });
107
+ return () => {
108
+ mounted = false;
109
+ if (timer) {
110
+ clearInterval(timer);
111
+ }
112
+ unsub();
113
+ };
114
+ }, [updateInterval]);
115
+ return progress;
116
+ }
117
+
118
+ // ─── useActiveTrack ───────────────────────────────────────────────────────────
119
+
120
+ /**
121
+ * Returns the currently active track, updating when the track changes.
122
+ */
123
+ export function useActiveTrack() {
124
+ const [track, setTrack] = useState(undefined);
125
+ useEffect(() => {
126
+ let mounted = true;
127
+ GliphPlayer.getActiveTrack().then(t => {
128
+ if (mounted) {
129
+ setTrack(t);
130
+ }
131
+ }).catch(() => {});
132
+ const unsub = GliphPlayer.addEventListener(Event.PlaybackActiveTrackChanged, data => {
133
+ if (mounted) {
134
+ setTrack(data.track);
135
+ }
136
+ });
137
+ return () => {
138
+ mounted = false;
139
+ unsub();
140
+ };
141
+ }, []);
142
+ return track;
143
+ }
144
+
145
+ // ─── useQueue ─────────────────────────────────────────────────────────────────
146
+
147
+ /**
148
+ * Returns the current queue, updating when tracks are added/removed/changed.
149
+ */
150
+ export function useQueue() {
151
+ const [queue, setQueue] = useState([]);
152
+ const refresh = useCallback(() => {
153
+ GliphPlayer.getQueue().then(setQueue).catch(() => {});
154
+ }, []);
155
+ useEffect(() => {
156
+ refresh();
157
+
158
+ // Re-fetch on any track change event
159
+ const unsub1 = GliphPlayer.addEventListener(Event.PlaybackActiveTrackChanged, refresh);
160
+ const unsub2 = GliphPlayer.addEventListener(Event.PlaybackQueueEnded, refresh);
161
+ return () => {
162
+ unsub1();
163
+ unsub2();
164
+ };
165
+ }, [refresh]);
166
+ return queue;
167
+ }
168
+
169
+ // ─── useRepeatMode ────────────────────────────────────────────────────────────
170
+
171
+ /**
172
+ * Returns the current repeat mode and a setter.
173
+ */
174
+ export function useRepeatMode() {
175
+ const [mode, setMode] = useState(null);
176
+ useEffect(() => {
177
+ GliphPlayer.getRepeatMode().then(setMode).catch(() => {});
178
+ const unsub = GliphPlayer.addEventListener(Event.PlaybackRepeatModeChanged, data => {
179
+ setMode(data.mode);
180
+ });
181
+ return () => unsub();
182
+ }, []);
183
+ const set = useCallback(async newMode => {
184
+ await GliphPlayer.setRepeatMode(newMode);
185
+ setMode(newMode);
186
+ }, []);
187
+ return [mode, set];
188
+ }
189
+
190
+ // ─── useVolume ────────────────────────────────────────────────────────────────
191
+
192
+ /**
193
+ * Returns the current volume (0–1) and a setter.
194
+ */
195
+ export function useVolume() {
196
+ const [volume, setVolume] = useState(1);
197
+ useEffect(() => {
198
+ GliphPlayer.getVolume().then(setVolume).catch(() => {});
199
+ }, []);
200
+ const set = useCallback(async v => {
201
+ await GliphPlayer.setVolume(v);
202
+ setVolume(v);
203
+ }, []);
204
+ return [volume, set];
205
+ }
206
+
207
+ // ─── useIsPlaying ─────────────────────────────────────────────────────────────
208
+
209
+ /**
210
+ * Convenience hook — returns { playing, bufferingDuringPlay }.
211
+ */
212
+ export function useIsPlaying() {
213
+ const {
214
+ state
215
+ } = usePlaybackState();
216
+ return {
217
+ playing: state === State.Playing || state === State.Buffering,
218
+ bufferingDuringPlay: state === State.Buffering
219
+ };
220
+ }
221
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useState","useCallback","GliphPlayer","Event","State","useTrackPlayerEvents","events","handler","handlerRef","current","unsubs","map","event","addEventListener","data","type","forEach","u","usePlaybackState","state","setState","None","mounted","getPlaybackState","then","s","catch","unsub","PlaybackState","useProgress","updateInterval","progress","setProgress","position","duration","buffered","timer","update","getProgress","p","setInterval","PlaybackProgressUpdated","clearInterval","useActiveTrack","track","setTrack","undefined","getActiveTrack","t","PlaybackActiveTrackChanged","useQueue","queue","setQueue","refresh","getQueue","unsub1","unsub2","PlaybackQueueEnded","useRepeatMode","mode","setMode","getRepeatMode","PlaybackRepeatModeChanged","set","newMode","setRepeatMode","useVolume","volume","setVolume","getVolume","v","useIsPlaying","playing","Playing","Buffering","bufferingDuringPlay"],"sourceRoot":"..\\..\\src","sources":["hooks.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * react-native-gliph-player
5
+ * Public API entry point
6
+ */
7
+
8
+ // Default export — the player API
9
+ export { default } from './GliphPlayer';
10
+ export { default as GliphPlayer } from './GliphPlayer';
11
+ export { isPlaying, isPaused, isBuffering, isStopped } from './GliphPlayer';
12
+
13
+ // Types
14
+
15
+ // Enums
16
+ export { State, Event, RepeatMode, Capability, RatingType, PitchAlgorithm, IOSCategory, IOSCategoryMode, IOSCategoryOptions, AndroidAudioContentType, AndroidAudioUsage, AppKilledPlaybackBehavior } from './types';
17
+
18
+ // Hooks
19
+ export { useTrackPlayerEvents, usePlaybackState, useProgress, useActiveTrack, useQueue, useRepeatMode, useVolume, useIsPlaying } from './hooks';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","GliphPlayer","isPlaying","isPaused","isBuffering","isStopped","State","Event","RepeatMode","Capability","RatingType","PitchAlgorithm","IOSCategory","IOSCategoryMode","IOSCategoryOptions","AndroidAudioContentType","AndroidAudioUsage","AppKilledPlaybackBehavior","useTrackPlayerEvents","usePlaybackState","useProgress","useActiveTrack","useQueue","useRepeatMode","useVolume","useIsPlaying"],"sourceRoot":"..\\..\\src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA;AACA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASA,OAAO,IAAIC,WAAW,QAAQ,eAAe;AACtD,SAASC,SAAS,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,QAAQ,eAAe;;AAE3E;;AAwBA;AACA,SACEC,KAAK,EACLC,KAAK,EACLC,UAAU,EACVC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,eAAe,EACfC,kBAAkB,EAClBC,uBAAuB,EACvBC,iBAAiB,EACjBC,yBAAyB,QACpB,SAAS;;AAEhB;AACA,SACEC,oBAAoB,EACpBC,gBAAgB,EAChBC,WAAW,EACXC,cAAc,EACdC,QAAQ,EACRC,aAAa,EACbC,SAAS,EACTC,YAAY,QACP,SAAS","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * NativeGliphPlayer.ts
5
+ *
6
+ * TurboModule spec for the New React Native Architecture (Codegen).
7
+ * This file is parsed by Codegen to generate C++/Java/ObjC bridge code.
8
+ * All types must be Codegen-compatible (no unions of complex types, etc.)
9
+ */
10
+
11
+ import { TurboModuleRegistry } from 'react-native';
12
+
13
+ // ─── Codegen-compatible track object ────────────────────────────────────────
14
+
15
+ // ─── Player options ──────────────────────────────────────────────────────────
16
+
17
+ // ─── TurboModule spec ────────────────────────────────────────────────────────
18
+
19
+ export default TurboModuleRegistry.get('RNGliphPlayer');
20
+ //# sourceMappingURL=NativeGliphPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"..\\..\\..\\src","sources":["specs/NativeGliphPlayer.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;;AAmBA;;AAiBA;;AAyDA,eAAeA,mBAAmB,CAACC,GAAG,CAAO,eAAe,CAAC","ignoreList":[]}