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,181 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * types.ts — Public TypeScript types for react-native-gliph-player
5
+ */
6
+
7
+ // ─── Track ───────────────────────────────────────────────────────────────────
8
+
9
+ // ─── Enums ───────────────────────────────────────────────────────────────────
10
+
11
+ export let State = /*#__PURE__*/function (State) {
12
+ /** No player setup yet */
13
+ State["None"] = "none";
14
+ /** Player is ready but not playing */
15
+ State["Ready"] = "ready";
16
+ /** Audio is playing */
17
+ State["Playing"] = "playing";
18
+ /** Audio is paused */
19
+ State["Paused"] = "paused";
20
+ /** Player is stopped */
21
+ State["Stopped"] = "stopped";
22
+ /** Buffering / loading */
23
+ State["Buffering"] = "buffering";
24
+ /** Loading initial data */
25
+ State["Loading"] = "loading";
26
+ /** An error occurred */
27
+ State["Error"] = "error";
28
+ /** End of queue reached */
29
+ State["Ended"] = "ended";
30
+ return State;
31
+ }({});
32
+ export let Event = /*#__PURE__*/function (Event) {
33
+ /** Playback state changed */
34
+ Event["PlaybackState"] = "playback-state";
35
+ /** Playback error */
36
+ Event["PlaybackError"] = "playback-error";
37
+ /** Active track changed */
38
+ Event["PlaybackActiveTrackChanged"] = "playback-active-track-changed";
39
+ /** Queue ended */
40
+ Event["PlaybackQueueEnded"] = "playback-queue-ended";
41
+ /** Track ended */
42
+ Event["PlaybackTrackEnded"] = "playback-track-ended";
43
+ /** Playback progress updated */
44
+ Event["PlaybackProgressUpdated"] = "playback-progress-updated";
45
+ /** Metadata received (e.g. from stream) */
46
+ Event["PlaybackMetadataReceived"] = "playback-metadata-received";
47
+ /** Repeat mode changed */
48
+ Event["PlaybackRepeatModeChanged"] = "playback-repeat-mode-changed";
49
+ // Remote control events (from notification / lock screen / headphones)
50
+ Event["RemotePlay"] = "remote-play";
51
+ Event["RemotePause"] = "remote-pause";
52
+ Event["RemoteStop"] = "remote-stop";
53
+ Event["RemoteSkip"] = "remote-skip";
54
+ Event["RemoteNext"] = "remote-next";
55
+ Event["RemotePrevious"] = "remote-previous";
56
+ Event["RemoteJumpForward"] = "remote-jump-forward";
57
+ Event["RemoteJumpBackward"] = "remote-jump-backward";
58
+ Event["RemoteSeek"] = "remote-seek";
59
+ Event["RemoteSetRating"] = "remote-set-rating";
60
+ Event["RemoteDuck"] = "remote-duck";
61
+ Event["RemoteLike"] = "remote-like";
62
+ Event["RemoteDislike"] = "remote-dislike";
63
+ Event["RemoteBookmark"] = "remote-bookmark";
64
+ return Event;
65
+ }({});
66
+ export let RepeatMode = /*#__PURE__*/function (RepeatMode) {
67
+ /** No repeat */
68
+ RepeatMode[RepeatMode["Off"] = 0] = "Off";
69
+ /** Repeat current track */
70
+ RepeatMode[RepeatMode["Track"] = 1] = "Track";
71
+ /** Repeat entire queue */
72
+ RepeatMode[RepeatMode["Queue"] = 2] = "Queue";
73
+ return RepeatMode;
74
+ }({});
75
+ export let Capability = /*#__PURE__*/function (Capability) {
76
+ Capability["Play"] = "play";
77
+ Capability["Pause"] = "pause";
78
+ Capability["Stop"] = "stop";
79
+ Capability["SeekTo"] = "seek-to";
80
+ Capability["Skip"] = "skip";
81
+ Capability["SkipToNext"] = "skip-to-next";
82
+ Capability["SkipToPrevious"] = "skip-to-previous";
83
+ Capability["JumpForward"] = "jump-forward";
84
+ Capability["JumpBackward"] = "jump-backward";
85
+ Capability["SetRating"] = "set-rating";
86
+ Capability["Like"] = "like";
87
+ Capability["Dislike"] = "dislike";
88
+ Capability["Bookmark"] = "bookmark";
89
+ return Capability;
90
+ }({});
91
+ export let RatingType = /*#__PURE__*/function (RatingType) {
92
+ RatingType["Heart"] = "heart";
93
+ RatingType["ThumbsUpDown"] = "thumbs-up-down";
94
+ RatingType["ThreeStars"] = "3-stars";
95
+ RatingType["FourStars"] = "4-stars";
96
+ RatingType["FiveStars"] = "5-stars";
97
+ RatingType["Percentage"] = "percentage";
98
+ return RatingType;
99
+ }({});
100
+ export let PitchAlgorithm = /*#__PURE__*/function (PitchAlgorithm) {
101
+ /** Best quality, higher CPU */
102
+ PitchAlgorithm[PitchAlgorithm["Quality"] = 0] = "Quality";
103
+ /** Balanced */
104
+ PitchAlgorithm[PitchAlgorithm["Consistency"] = 1] = "Consistency";
105
+ /** Lowest CPU */
106
+ PitchAlgorithm[PitchAlgorithm["Varispeed"] = 2] = "Varispeed";
107
+ return PitchAlgorithm;
108
+ }({});
109
+ export let IOSCategory = /*#__PURE__*/function (IOSCategory) {
110
+ IOSCategory["Playback"] = "playback";
111
+ IOSCategory["PlayAndRecord"] = "playAndRecord";
112
+ IOSCategory["MultiRoute"] = "multiRoute";
113
+ IOSCategory["Ambient"] = "ambient";
114
+ IOSCategory["SoloAmbient"] = "soloAmbient";
115
+ IOSCategory["Record"] = "record";
116
+ return IOSCategory;
117
+ }({});
118
+ export let IOSCategoryMode = /*#__PURE__*/function (IOSCategoryMode) {
119
+ IOSCategoryMode["Default"] = "default";
120
+ IOSCategoryMode["GameChat"] = "gameChat";
121
+ IOSCategoryMode["Measurement"] = "measurement";
122
+ IOSCategoryMode["MoviePlayback"] = "moviePlayback";
123
+ IOSCategoryMode["SpokenAudio"] = "spokenAudio";
124
+ IOSCategoryMode["VideoChat"] = "videoChat";
125
+ IOSCategoryMode["VideoRecording"] = "videoRecording";
126
+ IOSCategoryMode["VoiceChat"] = "voiceChat";
127
+ IOSCategoryMode["VoicePrompt"] = "voicePrompt";
128
+ return IOSCategoryMode;
129
+ }({});
130
+ export let IOSCategoryOptions = /*#__PURE__*/function (IOSCategoryOptions) {
131
+ IOSCategoryOptions["MixWithOthers"] = "mixWithOthers";
132
+ IOSCategoryOptions["DuckOthers"] = "duckOthers";
133
+ IOSCategoryOptions["InterruptSpokenAudioAndMixWithOthers"] = "interruptSpokenAudioAndMixWithOthers";
134
+ IOSCategoryOptions["AllowBluetooth"] = "allowBluetooth";
135
+ IOSCategoryOptions["AllowBluetoothA2DP"] = "allowBluetoothA2DP";
136
+ IOSCategoryOptions["AllowAirPlay"] = "allowAirPlay";
137
+ IOSCategoryOptions["DefaultToSpeaker"] = "defaultToSpeaker";
138
+ return IOSCategoryOptions;
139
+ }({});
140
+ export let AndroidAudioContentType = /*#__PURE__*/function (AndroidAudioContentType) {
141
+ AndroidAudioContentType[AndroidAudioContentType["Unknown"] = 0] = "Unknown";
142
+ AndroidAudioContentType[AndroidAudioContentType["Speech"] = 1] = "Speech";
143
+ AndroidAudioContentType[AndroidAudioContentType["Music"] = 2] = "Music";
144
+ AndroidAudioContentType[AndroidAudioContentType["Movie"] = 3] = "Movie";
145
+ AndroidAudioContentType[AndroidAudioContentType["Sonification"] = 4] = "Sonification";
146
+ return AndroidAudioContentType;
147
+ }({});
148
+ export let AndroidAudioUsage = /*#__PURE__*/function (AndroidAudioUsage) {
149
+ AndroidAudioUsage[AndroidAudioUsage["Unknown"] = 0] = "Unknown";
150
+ AndroidAudioUsage[AndroidAudioUsage["Media"] = 1] = "Media";
151
+ AndroidAudioUsage[AndroidAudioUsage["VoiceCommunication"] = 2] = "VoiceCommunication";
152
+ AndroidAudioUsage[AndroidAudioUsage["VoiceCommunicationSignalling"] = 3] = "VoiceCommunicationSignalling";
153
+ AndroidAudioUsage[AndroidAudioUsage["Alarm"] = 4] = "Alarm";
154
+ AndroidAudioUsage[AndroidAudioUsage["Notification"] = 5] = "Notification";
155
+ AndroidAudioUsage[AndroidAudioUsage["NotificationRingtone"] = 6] = "NotificationRingtone";
156
+ AndroidAudioUsage[AndroidAudioUsage["NotificationEvent"] = 10] = "NotificationEvent";
157
+ AndroidAudioUsage[AndroidAudioUsage["AssistanceAccessibility"] = 11] = "AssistanceAccessibility";
158
+ AndroidAudioUsage[AndroidAudioUsage["AssistanceNavigationGuidance"] = 12] = "AssistanceNavigationGuidance";
159
+ AndroidAudioUsage[AndroidAudioUsage["AssistanceSonification"] = 13] = "AssistanceSonification";
160
+ AndroidAudioUsage[AndroidAudioUsage["Game"] = 14] = "Game";
161
+ return AndroidAudioUsage;
162
+ }({});
163
+
164
+ // ─── Options ─────────────────────────────────────────────────────────────────
165
+
166
+ export let AppKilledPlaybackBehavior = /*#__PURE__*/function (AppKilledPlaybackBehavior) {
167
+ /** Stop playback when app is killed */
168
+ AppKilledPlaybackBehavior["StopPlaybackAndRemoveNotification"] = "StopPlaybackAndRemoveNotification";
169
+ /** Continue playback in background service */
170
+ AppKilledPlaybackBehavior["ContinuePlayback"] = "ContinuePlayback";
171
+ /** Pause playback but keep notification */
172
+ AppKilledPlaybackBehavior["PausePlayback"] = "PausePlayback";
173
+ return AppKilledPlaybackBehavior;
174
+ }({});
175
+
176
+ // ─── Playback state / progress ───────────────────────────────────────────────
177
+
178
+ // ─── Event payloads ──────────────────────────────────────────────────────────
179
+
180
+ // ─── Event map ───────────────────────────────────────────────────────────────
181
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["State","Event","RepeatMode","Capability","RatingType","PitchAlgorithm","IOSCategory","IOSCategoryMode","IOSCategoryOptions","AndroidAudioContentType","AndroidAudioUsage","AppKilledPlaybackBehavior"],"sourceRoot":"..\\..\\src","sources":["types.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * GliphPlayer.ts
3
+ *
4
+ * Main JS/TS API surface. Wraps the TurboModule (NativeGliphPlayer) and
5
+ * provides a clean, typed interface identical in spirit to react-native-track-player.
6
+ */
7
+ import type { Track, PlayerOptions, UpdateOptions, Progress, PlaybackState } from './types';
8
+ import { RepeatMode, State } from './types';
9
+ declare const GliphPlayer: {
10
+ /**
11
+ * Initialize the player. Must be called once before any other method.
12
+ * Safe to call multiple times — subsequent calls are no-ops.
13
+ */
14
+ setupPlayer(options?: PlayerOptions): Promise<void>;
15
+ /**
16
+ * Destroy the player and release all resources.
17
+ */
18
+ destroy(): void;
19
+ /**
20
+ * Returns true if the background service is running (Android).
21
+ */
22
+ isServiceRunning(): Promise<boolean>;
23
+ /**
24
+ * Add one or more tracks to the queue.
25
+ * @param tracks Single track or array of tracks.
26
+ * @param insertBeforeIndex Insert position. Defaults to end of queue.
27
+ * @returns The index of the first inserted track.
28
+ */
29
+ add(tracks: Track | Track[], insertBeforeIndex?: number): Promise<number | void>;
30
+ /**
31
+ * Remove tracks by their IDs.
32
+ */
33
+ remove(trackIds: string | string[]): Promise<void>;
34
+ /**
35
+ * Remove all tracks after the current one.
36
+ */
37
+ removeUpcomingTracks(): Promise<void>;
38
+ /**
39
+ * Skip to a specific queue index.
40
+ */
41
+ skip(index: number, initialPosition?: number): Promise<void>;
42
+ /**
43
+ * Skip to the next track.
44
+ */
45
+ skipToNext(initialPosition?: number): Promise<void>;
46
+ /**
47
+ * Skip to the previous track.
48
+ */
49
+ skipToPrevious(initialPosition?: number): Promise<void>;
50
+ /**
51
+ * Move a track from one index to another.
52
+ */
53
+ move(fromIndex: number, toIndex: number): Promise<void>;
54
+ play(): Promise<void>;
55
+ pause(): Promise<void>;
56
+ stop(): Promise<void>;
57
+ /**
58
+ * Stop playback and clear the queue.
59
+ */
60
+ reset(): Promise<void>;
61
+ /**
62
+ * Seek to an absolute position in seconds.
63
+ */
64
+ seekTo(position: number): Promise<void>;
65
+ /**
66
+ * Seek by a relative offset in seconds (positive = forward, negative = back).
67
+ */
68
+ seekBy(offset: number): Promise<void>;
69
+ /**
70
+ * Set volume (0.0 – 1.0).
71
+ */
72
+ setVolume(volume: number): Promise<void>;
73
+ getVolume(): Promise<number>;
74
+ /**
75
+ * Set playback rate (1.0 = normal speed).
76
+ */
77
+ setRate(rate: number): Promise<void>;
78
+ getRate(): Promise<number>;
79
+ setRepeatMode(mode: RepeatMode): Promise<void>;
80
+ getRepeatMode(): Promise<RepeatMode>;
81
+ getQueue(): Promise<Track[]>;
82
+ getActiveTrackIndex(): Promise<number | null>;
83
+ getActiveTrack(): Promise<Track | null>;
84
+ getTrack(index: number): Promise<Track | null>;
85
+ getQueueSize(): Promise<number>;
86
+ getPlaybackState(): Promise<PlaybackState>;
87
+ getProgress(): Promise<Progress>;
88
+ updateMetadataForTrack(index: number, metadata: Partial<Track>): Promise<void>;
89
+ clearNowPlayingMetadata(): Promise<void>;
90
+ updateNowPlayingMetadata(metadata: Partial<Track>): Promise<void>;
91
+ /**
92
+ * Configure notification capabilities, jump intervals, etc.
93
+ */
94
+ updateOptions(options: UpdateOptions): Promise<void>;
95
+ /**
96
+ * Subscribe to a player event.
97
+ * Returns an unsubscribe function — call it to remove the listener.
98
+ *
99
+ * @example
100
+ * const unsub = GliphPlayer.addEventListener(Event.PlaybackState, ({ state }) => {
101
+ * console.log('State:', state);
102
+ * });
103
+ * // later:
104
+ * unsub();
105
+ */
106
+ addEventListener<E extends string>(event: E, listener: (data: any) => void): () => void;
107
+ };
108
+ export default GliphPlayer;
109
+ export declare function isPlaying(state: State): boolean;
110
+ export declare function isPaused(state: State): boolean;
111
+ export declare function isBuffering(state: State): boolean;
112
+ export declare function isStopped(state: State): boolean;
113
+ //# sourceMappingURL=GliphPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GliphPlayer.d.ts","sourceRoot":"","sources":["../../../src/GliphPlayer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AA4D5C,QAAA,MAAM,WAAW;IAGf;;;OAGG;0BACwB,aAAa,GAAQ,OAAO,CAAC,IAAI,CAAC;IAsB7D;;OAEG;eACQ,IAAI;IAKf;;OAEG;wBACuB,OAAO,CAAC,OAAO,CAAC;IAO1C;;;;;OAKG;gBAEO,KAAK,GAAG,KAAK,EAAE,sBACH,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQzB;;OAEG;qBACoB,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;OAEG;4BAC2B,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;gBACe,MAAM,oBAAoB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE;;OAEG;iCACgC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;qCACoC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;OAEG;oBACmB,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAM/C,OAAO,CAAC,IAAI,CAAC;aAIZ,OAAO,CAAC,IAAI,CAAC;YAId,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;aACY,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;qBACoB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;mBACkB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;iBAK3B,OAAO,CAAC,MAAM,CAAC;IAIlC;;OAEG;kBACiB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;eAIzB,OAAO,CAAC,MAAM,CAAC;wBAIN,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;qBAI7B,OAAO,CAAC,UAAU,CAAC;gBAOxB,OAAO,CAAC,KAAK,EAAE,CAAC;2BAKL,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;sBAM3B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;oBAKvB,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;oBAK9B,OAAO,CAAC,MAAM,CAAC;wBAMX,OAAO,CAAC,aAAa,CAAC;mBAK3B,OAAO,CAAC,QAAQ,CAAC;kCAQ7B,MAAM,YACH,OAAO,CAAC,KAAK,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC;+BAIiB,OAAO,CAAC,IAAI,CAAC;uCAIL,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvE;;OAEG;2BAC0B,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D;;;;;;;;;;OAUG;qBACc,CAAC,SAAS,MAAM,SACxB,CAAC,YACE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAC5B,MAAM,IAAI;CAId,CAAC;AAEF,eAAe,WAAW,CAAC;AAI3B,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE/C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE9C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEjD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE/C"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * hooks.ts — React hooks for react-native-gliph-player
3
+ */
4
+ import { Event } from './types';
5
+ import type { Track, Progress, PlaybackState, RepeatMode, EventPayloadByEvent } from './types';
6
+ /**
7
+ * Subscribe to one or more player events inside a component.
8
+ * Automatically unsubscribes on unmount.
9
+ *
10
+ * @example
11
+ * useTrackPlayerEvents([Event.PlaybackState], ({ state }) => {
12
+ * console.log(state);
13
+ * });
14
+ */
15
+ export declare function useTrackPlayerEvents<E extends Event>(events: E[], handler: (payload: EventPayloadByEvent[E] & {
16
+ type: E;
17
+ }) => void): void;
18
+ /**
19
+ * Returns the current playback state, updating reactively.
20
+ */
21
+ export declare function usePlaybackState(): PlaybackState;
22
+ /**
23
+ * Returns live playback progress (position, duration, buffered).
24
+ * @param updateInterval How often to poll in ms. Defaults to 1000ms.
25
+ * Set to 0 to rely solely on native progress events.
26
+ */
27
+ export declare function useProgress(updateInterval?: number): Progress;
28
+ /**
29
+ * Returns the currently active track, updating when the track changes.
30
+ */
31
+ export declare function useActiveTrack(): Track | null | undefined;
32
+ /**
33
+ * Returns the current queue, updating when tracks are added/removed/changed.
34
+ */
35
+ export declare function useQueue(): Track[];
36
+ /**
37
+ * Returns the current repeat mode and a setter.
38
+ */
39
+ export declare function useRepeatMode(): [RepeatMode | null, (mode: RepeatMode) => Promise<void>];
40
+ /**
41
+ * Returns the current volume (0–1) and a setter.
42
+ */
43
+ export declare function useVolume(): [number, (v: number) => Promise<void>];
44
+ /**
45
+ * Convenience hook — returns { playing, bufferingDuringPlay }.
46
+ */
47
+ export declare function useIsPlaying(): {
48
+ playing: boolean;
49
+ bufferingDuringPlay: boolean;
50
+ };
51
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,KAAK,EAAS,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,UAAU,EACV,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAIjB;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAClD,MAAM,EAAE,CAAC,EAAE,EACX,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,KAAK,IAAI,GAC/D,IAAI,CAaN;AAID;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAyBhD;AAID;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,cAAc,SAAO,GAAG,QAAQ,CA6C3D;AAID;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,GAAG,IAAI,GAAG,SAAS,CAwBzD;AAID;;GAEG;AACH,wBAAgB,QAAQ,IAAI,KAAK,EAAE,CAuBlC;AAID;;GAEG;AACH,wBAAgB,aAAa,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAwBxF;AAID;;GAEG;AACH,wBAAgB,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAelE;AAID;;GAEG;AACH,wBAAgB,YAAY,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAA;CAAE,CAMjF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * react-native-gliph-player
3
+ * Public API entry point
4
+ */
5
+ export { default } from './GliphPlayer';
6
+ export { default as GliphPlayer } from './GliphPlayer';
7
+ export { isPlaying, isPaused, isBuffering, isStopped } from './GliphPlayer';
8
+ export type { Track, PlayerOptions, UpdateOptions, Progress, PlaybackState, PlaybackError, CustomAction, EventPayloadByEvent, PlaybackStateEvent, PlaybackErrorEvent, PlaybackActiveTrackChangedEvent, PlaybackQueueEndedEvent, PlaybackProgressUpdatedEvent, PlaybackMetadataReceivedEvent, RemoteSeekEvent, RemoteJumpForwardEvent, RemoteJumpBackwardEvent, RemoteSetRatingEvent, RemoteDuckEvent, RemoteSkipEvent, } from './types';
9
+ export { State, Event, RepeatMode, Capability, RatingType, PitchAlgorithm, IOSCategory, IOSCategoryMode, IOSCategoryOptions, AndroidAudioContentType, AndroidAudioUsage, AppKilledPlaybackBehavior, } from './types';
10
+ export { useTrackPlayerEvents, usePlaybackState, useProgress, useActiveTrack, useQueue, useRepeatMode, useVolume, useIsPlaying, } from './hooks';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG5E,YAAY,EACV,KAAK,EACL,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,+BAA+B,EAC/B,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,KAAK,EACL,KAAK,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,aAAa,EACb,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * NativeGliphPlayer.ts
3
+ *
4
+ * TurboModule spec for the New React Native Architecture (Codegen).
5
+ * This file is parsed by Codegen to generate C++/Java/ObjC bridge code.
6
+ * All types must be Codegen-compatible (no unions of complex types, etc.)
7
+ */
8
+ import type { TurboModule } from 'react-native';
9
+ export interface TrackObject {
10
+ id: string;
11
+ url: string;
12
+ title: string;
13
+ artist: string;
14
+ album?: string;
15
+ artwork?: string;
16
+ duration?: number;
17
+ genre?: string;
18
+ date?: string;
19
+ description?: string;
20
+ rating?: number;
21
+ isLiveStream?: boolean;
22
+ headers?: Object;
23
+ pitchAlgorithm?: number;
24
+ userAgent?: string;
25
+ }
26
+ export interface PlayerOptions {
27
+ minBuffer?: number;
28
+ maxBuffer?: number;
29
+ playBuffer?: number;
30
+ backBuffer?: number;
31
+ maxCacheSize?: number;
32
+ iosCategory?: string;
33
+ iosCategoryMode?: string;
34
+ iosCategoryOptions?: ReadonlyArray<string>;
35
+ waitForBuffer?: boolean;
36
+ autoHandleInterruptions?: boolean;
37
+ autoUpdateMetadata?: boolean;
38
+ android?: Object;
39
+ progressUpdateEventInterval?: number;
40
+ }
41
+ export interface Spec extends TurboModule {
42
+ setupPlayer(options: Object): Promise<void>;
43
+ destroy(): void;
44
+ isServiceRunning(): Promise<boolean>;
45
+ add(tracks: ReadonlyArray<Object>, insertBeforeIndex: number): Promise<number>;
46
+ remove(tracks: ReadonlyArray<string>): Promise<void>;
47
+ removeUpcomingTracks(): Promise<void>;
48
+ skip(index: number, initialPosition: number): Promise<void>;
49
+ skipToNext(initialPosition: number): Promise<void>;
50
+ skipToPrevious(initialPosition: number): Promise<void>;
51
+ move(fromIndex: number, toIndex: number): Promise<void>;
52
+ play(): Promise<void>;
53
+ pause(): Promise<void>;
54
+ stop(): Promise<void>;
55
+ reset(): Promise<void>;
56
+ seekTo(position: number): Promise<void>;
57
+ seekBy(offset: number): Promise<void>;
58
+ setVolume(volume: number): Promise<void>;
59
+ getVolume(): Promise<number>;
60
+ setRate(rate: number): Promise<void>;
61
+ getRate(): Promise<number>;
62
+ setRepeatMode(mode: number): Promise<void>;
63
+ getRepeatMode(): Promise<number>;
64
+ getQueue(): Promise<ReadonlyArray<Object>>;
65
+ getActiveTrackIndex(): Promise<number>;
66
+ getActiveTrack(): Promise<Object | null>;
67
+ getTrack(index: number): Promise<Object | null>;
68
+ getQueueSize(): Promise<number>;
69
+ getPlaybackState(): Promise<Object>;
70
+ getProgress(): Promise<Object>;
71
+ updateMetadataForTrack(index: number, metadata: Object): Promise<void>;
72
+ clearNowPlayingMetadata(): Promise<void>;
73
+ updateNowPlayingMetadata(metadata: Object): Promise<void>;
74
+ updateOptions(options: Object): Promise<void>;
75
+ addListener(eventType: string): void;
76
+ removeListeners(count: number): void;
77
+ }
78
+ declare const _default: Spec | null;
79
+ export default _default;
80
+ //# sourceMappingURL=NativeGliphPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeGliphPlayer.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeGliphPlayer.ts"],"names":[],"mappings":"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"}