@zezosoft/zezo-ott-react-native-ui-kit 1.1.0 → 1.1.1

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 (178) hide show
  1. package/lib/module/components/BottomSheet/BottomSheet.js +152 -0
  2. package/lib/module/components/BottomSheet/BottomSheet.js.map +1 -0
  3. package/lib/module/components/BottomSheet/index.js +4 -0
  4. package/lib/module/components/BottomSheet/index.js.map +1 -0
  5. package/lib/module/components/Button/BackBtn.js +28 -2
  6. package/lib/module/components/Button/BackBtn.js.map +1 -1
  7. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js +134 -0
  8. package/lib/module/components/Reels/ReelsSeries/MediaControls/BottomControls.js.map +1 -0
  9. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js +154 -0
  10. package/lib/module/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.js.map +1 -0
  11. package/lib/module/components/Reels/ReelsSeries/MediaControls/MiddleControls.js +173 -0
  12. package/lib/module/components/Reels/ReelsSeries/MediaControls/MiddleControls.js.map +1 -0
  13. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js +77 -0
  14. package/lib/module/components/Reels/ReelsSeries/MediaControls/RightControls.js.map +1 -0
  15. package/lib/module/components/Reels/ReelsSeries/MediaControls/TopControls.js +132 -0
  16. package/lib/module/components/Reels/ReelsSeries/MediaControls/TopControls.js.map +1 -0
  17. package/lib/module/components/Reels/ReelsSeries/Model/DetailsModal.js +165 -0
  18. package/lib/module/components/Reels/ReelsSeries/Model/DetailsModal.js.map +1 -0
  19. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js +106 -0
  20. package/lib/module/components/Reels/ReelsSeries/Model/SettingModal.js.map +1 -0
  21. package/lib/module/components/Reels/ReelsSeries/Model/UnlockModal.js +124 -0
  22. package/lib/module/components/Reels/ReelsSeries/Model/UnlockModal.js.map +1 -0
  23. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js +102 -64
  24. package/lib/module/components/Reels/ReelsSeries/ReelsSeries.js.map +1 -1
  25. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js +241 -232
  26. package/lib/module/components/Reels/ReelsSeries/ReelsSeriesItem.js.map +1 -1
  27. package/lib/module/components/Reels/ReelsSeries/components/AnimatedThreeLines.js +153 -0
  28. package/lib/module/components/Reels/ReelsSeries/components/AnimatedThreeLines.js.map +1 -0
  29. package/lib/module/components/Reels/ReelsSeries/{Model → components}/Episodes.js +46 -36
  30. package/lib/module/components/Reels/ReelsSeries/components/Episodes.js.map +1 -0
  31. package/lib/module/components/Reels/ReelsSeries/components/GradientOverlay.js +35 -0
  32. package/lib/module/components/Reels/ReelsSeries/components/GradientOverlay.js.map +1 -0
  33. package/lib/module/components/Reels/ReelsSeries/components/Like.js +37 -0
  34. package/lib/module/components/Reels/ReelsSeries/components/Like.js.map +1 -0
  35. package/lib/module/components/Reels/ReelsSeries/components/RotatingLoader.js +55 -0
  36. package/lib/module/components/Reels/ReelsSeries/components/RotatingLoader.js.map +1 -0
  37. package/lib/module/components/Reels/ReelsSeries/components/Synopsis.js +268 -0
  38. package/lib/module/components/Reels/ReelsSeries/components/Synopsis.js.map +1 -0
  39. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js +143 -0
  40. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/QualityControl.js.map +1 -0
  41. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.js +56 -0
  42. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.js.map +1 -0
  43. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/index.js +5 -0
  44. package/lib/module/components/Reels/ReelsSeries/components/VideoControls/index.js.map +1 -0
  45. package/lib/module/components/Reels/utils/Controls/gestureUtils.js +30 -0
  46. package/lib/module/components/Reels/utils/Controls/gestureUtils.js.map +1 -0
  47. package/lib/module/components/Reels/utils/Controls/index.js +7 -0
  48. package/lib/module/components/Reels/utils/Controls/index.js.map +1 -0
  49. package/lib/module/components/Reels/utils/Controls/overlayUtils.js +28 -0
  50. package/lib/module/components/Reels/utils/Controls/overlayUtils.js.map +1 -0
  51. package/lib/module/components/Reels/utils/Controls/videoControlsConstants.js +27 -0
  52. package/lib/module/components/Reels/utils/Controls/videoControlsConstants.js.map +1 -0
  53. package/lib/module/components/Reels/utils/Controls/videoRef.js +5 -0
  54. package/lib/module/components/Reels/utils/Controls/videoRef.js.map +1 -0
  55. package/lib/module/components/Reels/utils/index.js +4 -0
  56. package/lib/module/components/Reels/utils/index.js.map +1 -0
  57. package/lib/module/components/Reels/utils/timeoutUtils.js +24 -0
  58. package/lib/module/components/Reels/utils/timeoutUtils.js.map +1 -0
  59. package/lib/module/components/index.js +1 -0
  60. package/lib/module/components/index.js.map +1 -1
  61. package/lib/module/theme/ThemeProvider.js +7 -4
  62. package/lib/module/theme/ThemeProvider.js.map +1 -1
  63. package/lib/module/theme/themes.js +3 -3
  64. package/lib/typescript/src/components/BottomSheet/BottomSheet.d.ts +18 -0
  65. package/lib/typescript/src/components/BottomSheet/BottomSheet.d.ts.map +1 -0
  66. package/lib/typescript/src/components/BottomSheet/index.d.ts +3 -0
  67. package/lib/typescript/src/components/BottomSheet/index.d.ts.map +1 -0
  68. package/lib/typescript/src/components/Button/BackBtn.d.ts +3 -1
  69. package/lib/typescript/src/components/Button/BackBtn.d.ts.map +1 -1
  70. package/lib/typescript/src/components/Button/index.d.ts +2 -0
  71. package/lib/typescript/src/components/Button/index.d.ts.map +1 -1
  72. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts +14 -0
  73. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/BottomControls.d.ts.map +1 -0
  74. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts +60 -0
  75. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.d.ts.map +1 -0
  76. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.d.ts +14 -0
  77. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.d.ts.map +1 -0
  78. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/RightControls.d.ts +14 -0
  79. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/RightControls.d.ts.map +1 -0
  80. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/TopControls.d.ts +12 -0
  81. package/lib/typescript/src/components/Reels/ReelsSeries/MediaControls/TopControls.d.ts.map +1 -0
  82. package/lib/typescript/src/components/Reels/ReelsSeries/Model/DetailsModal.d.ts +16 -0
  83. package/lib/typescript/src/components/Reels/ReelsSeries/Model/DetailsModal.d.ts.map +1 -0
  84. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts +15 -0
  85. package/lib/typescript/src/components/Reels/ReelsSeries/Model/SettingModal.d.ts.map +1 -0
  86. package/lib/typescript/src/components/Reels/ReelsSeries/Model/UnlockModal.d.ts +14 -0
  87. package/lib/typescript/src/components/Reels/ReelsSeries/Model/UnlockModal.d.ts.map +1 -0
  88. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts +8 -2
  89. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeries.d.ts.map +1 -1
  90. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts +8 -2
  91. package/lib/typescript/src/components/Reels/ReelsSeries/ReelsSeriesItem.d.ts.map +1 -1
  92. package/lib/typescript/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.d.ts +13 -0
  93. package/lib/typescript/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.d.ts.map +1 -0
  94. package/lib/typescript/src/components/Reels/ReelsSeries/{Model → components}/Episodes.d.ts +3 -2
  95. package/lib/typescript/src/components/Reels/ReelsSeries/components/Episodes.d.ts.map +1 -0
  96. package/lib/typescript/src/components/Reels/ReelsSeries/components/GradientOverlay.d.ts +7 -0
  97. package/lib/typescript/src/components/Reels/ReelsSeries/components/GradientOverlay.d.ts.map +1 -0
  98. package/lib/typescript/src/components/Reels/ReelsSeries/components/Like.d.ts +7 -0
  99. package/lib/typescript/src/components/Reels/ReelsSeries/components/Like.d.ts.map +1 -0
  100. package/lib/typescript/src/components/Reels/ReelsSeries/components/RotatingLoader.d.ts +12 -0
  101. package/lib/typescript/src/components/Reels/ReelsSeries/components/RotatingLoader.d.ts.map +1 -0
  102. package/lib/typescript/src/components/Reels/ReelsSeries/components/Synopsis.d.ts +12 -0
  103. package/lib/typescript/src/components/Reels/ReelsSeries/components/Synopsis.d.ts.map +1 -0
  104. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts +11 -0
  105. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.d.ts.map +1 -0
  106. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.d.ts +10 -0
  107. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.d.ts.map +1 -0
  108. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/index.d.ts +3 -0
  109. package/lib/typescript/src/components/Reels/ReelsSeries/components/VideoControls/index.d.ts.map +1 -0
  110. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts +13 -0
  111. package/lib/typescript/src/components/Reels/ReelsSeries/types.d.ts.map +1 -1
  112. package/lib/typescript/src/components/Reels/utils/Controls/gestureUtils.d.ts +10 -0
  113. package/lib/typescript/src/components/Reels/utils/Controls/gestureUtils.d.ts.map +1 -0
  114. package/lib/typescript/src/components/Reels/utils/Controls/index.d.ts +5 -0
  115. package/lib/typescript/src/components/Reels/utils/Controls/index.d.ts.map +1 -0
  116. package/lib/typescript/src/components/Reels/utils/Controls/overlayUtils.d.ts +12 -0
  117. package/lib/typescript/src/components/Reels/utils/Controls/overlayUtils.d.ts.map +1 -0
  118. package/lib/typescript/src/components/Reels/utils/Controls/videoControlsConstants.d.ts +24 -0
  119. package/lib/typescript/src/components/Reels/utils/Controls/videoControlsConstants.d.ts.map +1 -0
  120. package/lib/typescript/src/components/Reels/utils/Controls/videoRef.d.ts +3 -0
  121. package/lib/typescript/src/components/Reels/utils/Controls/videoRef.d.ts.map +1 -0
  122. package/lib/typescript/src/components/Reels/utils/index.d.ts +2 -0
  123. package/lib/typescript/src/components/Reels/utils/index.d.ts.map +1 -0
  124. package/lib/typescript/src/components/Reels/utils/timeoutUtils.d.ts +14 -0
  125. package/lib/typescript/src/components/Reels/utils/timeoutUtils.d.ts.map +1 -0
  126. package/lib/typescript/src/components/index.d.ts +1 -0
  127. package/lib/typescript/src/components/index.d.ts.map +1 -1
  128. package/package.json +1 -1
  129. package/src/components/BottomSheet/BottomSheet.tsx +195 -0
  130. package/src/components/BottomSheet/index.ts +2 -0
  131. package/src/components/Button/BackBtn.tsx +33 -0
  132. package/src/components/Reels/ReelsSeries/MediaControls/BottomControls.tsx +156 -0
  133. package/src/components/Reels/ReelsSeries/MediaControls/MediaControlsProvider.tsx +234 -0
  134. package/src/components/Reels/ReelsSeries/MediaControls/MiddleControls.tsx +196 -0
  135. package/src/components/Reels/ReelsSeries/MediaControls/RightControls.tsx +92 -0
  136. package/src/components/Reels/ReelsSeries/MediaControls/TopControls.tsx +163 -0
  137. package/src/components/Reels/ReelsSeries/Model/DetailsModal.tsx +210 -0
  138. package/src/components/Reels/ReelsSeries/Model/SettingModal.tsx +143 -0
  139. package/src/components/Reels/ReelsSeries/Model/UnlockModal.tsx +154 -0
  140. package/src/components/Reels/ReelsSeries/ReelsSeries.tsx +142 -74
  141. package/src/components/Reels/ReelsSeries/ReelsSeriesItem.tsx +349 -250
  142. package/src/components/Reels/ReelsSeries/components/AnimatedThreeLines.tsx +184 -0
  143. package/src/components/Reels/ReelsSeries/{Model → components}/Episodes.tsx +54 -33
  144. package/src/components/Reels/ReelsSeries/components/GradientOverlay.tsx +41 -0
  145. package/src/components/Reels/ReelsSeries/components/Like.tsx +40 -0
  146. package/src/components/Reels/ReelsSeries/components/RotatingLoader.tsx +79 -0
  147. package/src/components/Reels/ReelsSeries/components/Synopsis.tsx +332 -0
  148. package/src/components/Reels/ReelsSeries/components/VideoControls/QualityControl.tsx +190 -0
  149. package/src/components/Reels/ReelsSeries/components/VideoControls/SpeedControl.tsx +80 -0
  150. package/src/components/Reels/ReelsSeries/components/VideoControls/index.ts +2 -0
  151. package/src/components/Reels/ReelsSeries/types.ts +13 -2
  152. package/src/components/Reels/utils/Controls/gestureUtils.ts +42 -0
  153. package/src/components/Reels/utils/Controls/index.ts +4 -0
  154. package/src/components/Reels/utils/Controls/overlayUtils.ts +35 -0
  155. package/src/components/Reels/utils/Controls/videoControlsConstants.ts +25 -0
  156. package/src/components/Reels/utils/Controls/videoRef.ts +4 -0
  157. package/src/components/Reels/utils/index.ts +1 -0
  158. package/src/components/Reels/utils/timeoutUtils.ts +29 -0
  159. package/src/components/index.ts +1 -0
  160. package/src/theme/ThemeProvider.tsx +8 -2
  161. package/src/theme/themes.ts +3 -3
  162. package/lib/module/components/Reels/ReelsSeries/Model/Episodes.js.map +0 -1
  163. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js +0 -212
  164. package/lib/module/components/Reels/ReelsSeries/Model/Synopsis.js.map +0 -1
  165. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js +0 -182
  166. package/lib/module/components/Reels/ReelsSeries/ReelSeriesDetailsModal.js.map +0 -1
  167. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js +0 -203
  168. package/lib/module/components/Reels/ReelsSeries/ReelSeriesOverlay.js.map +0 -1
  169. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Episodes.d.ts.map +0 -1
  170. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts +0 -9
  171. package/lib/typescript/src/components/Reels/ReelsSeries/Model/Synopsis.d.ts.map +0 -1
  172. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts +0 -13
  173. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.d.ts.map +0 -1
  174. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts +0 -18
  175. package/lib/typescript/src/components/Reels/ReelsSeries/ReelSeriesOverlay.d.ts.map +0 -1
  176. package/src/components/Reels/ReelsSeries/Model/Synopsis.tsx +0 -242
  177. package/src/components/Reels/ReelsSeries/ReelSeriesDetailsModal.tsx +0 -209
  178. package/src/components/Reels/ReelsSeries/ReelSeriesOverlay.tsx +0 -185
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Reels/ReelsSeries/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IAEd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Reels/ReelsSeries/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;CAChC;AACD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CACvC"}
@@ -0,0 +1,10 @@
1
+ import { Gesture } from 'react-native-gesture-handler';
2
+ /**
3
+ * Create a tap gesture handler
4
+ */
5
+ export declare const useCreateTapGesture: (isInOverlay: (x: number, y: number) => boolean, isLocked: boolean, handleLockedTap: () => void) => (onAction: () => void, numberOfTaps?: number) => import("react-native-gesture-handler/lib/typescript/handlers/gestures/tapGesture").TapGesture;
6
+ /**
7
+ * Create combined gesture (single tap and double tap)
8
+ */
9
+ export declare const useCombinedGesture: (singleTap: ReturnType<typeof Gesture.Tap>, doubleTap: ReturnType<typeof Gesture.Tap>) => import("react-native-gesture-handler/lib/typescript/handlers/gestures/gestureComposition").ExclusiveGesture;
10
+ //# sourceMappingURL=gestureUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gestureUtils.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Reels/utils/Controls/gestureUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAGvD;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,EAC9C,UAAU,OAAO,EACjB,iBAAiB,MAAM,IAAI,gBAGd,MAAM,IAAI,yHAexB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,EACzC,WAAW,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,gHAM1C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './videoRef';
2
+ export * from './videoControlsConstants';
3
+ export * from './overlayUtils';
4
+ export * from './gestureUtils';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Reels/utils/Controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Calculate overlay thresholds
3
+ */
4
+ export declare const useOverlayThresholds: (videoHeight: number) => {
5
+ rightThreshold: number;
6
+ bottomThreshold: number;
7
+ };
8
+ /**
9
+ * Check if coordinates are in overlay area
10
+ */
11
+ export declare const useIsInOverlay: (rightThreshold: number, bottomThreshold: number) => (x: number, y: number) => boolean;
12
+ //# sourceMappingURL=overlayUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlayUtils.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Reels/utils/Controls/overlayUtils.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,aAAa,MAAM;;;CASvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,gBAAgB,MAAM,EACtB,iBAAiB,MAAM,SAGjB,MAAM,KAAK,MAAM,YAGxB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Video Controls Constants
3
+ */
4
+ export declare const GESTURE_MAX_DURATION = 300;
5
+ export declare const PAUSE_ICON_TIMEOUT = 800;
6
+ export declare const LIKE_ANIM_TIMEOUT = 1200;
7
+ export declare const UNLOCK_MODAL_DELAY = 500;
8
+ export declare const OVERLAY_RIGHT_OFFSET = 80;
9
+ export declare const OVERLAY_BOTTOM_OFFSET = 150;
10
+ export declare const videoControlsStyles: {
11
+ hideForward: boolean;
12
+ hideDuration: boolean;
13
+ hideFullscreen: boolean;
14
+ hidePlayPause: boolean;
15
+ hideNavigationBarOnFullScreenMode: boolean;
16
+ hideNotificationBarOnFullScreenMode: boolean;
17
+ hideNext: boolean;
18
+ hidePosition: boolean;
19
+ hidePrevious: boolean;
20
+ hideRewind: boolean;
21
+ hideSeekBar: boolean;
22
+ hideSettingButton: boolean;
23
+ };
24
+ //# sourceMappingURL=videoControlsConstants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoControlsConstants.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Reels/utils/Controls/videoControlsConstants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;CAa/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { VideoRef } from 'react-native-video';
2
+ export declare const videoRef: import("react").RefObject<VideoRef | null>;
3
+ //# sourceMappingURL=videoRef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoRef.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Reels/utils/Controls/videoRef.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,eAAO,MAAM,QAAQ,4CAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './timeoutUtils';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Reels/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type MutableRefObject } from 'react';
2
+ /**
3
+ * Safely clears a timeout stored in a ref
4
+ * @param ref - React ref containing the timeout
5
+ */
6
+ export declare const clearTimeoutSafely: (ref: MutableRefObject<NodeJS.Timeout | null>) => void;
7
+ /**
8
+ * Safely sets a timeout and stores it in a ref, clearing any existing timeout first
9
+ * @param ref - React ref to store the timeout
10
+ * @param callback - Function to execute after delay
11
+ * @param delay - Delay in milliseconds
12
+ */
13
+ export declare const setTimeoutSafely: (ref: MutableRefObject<NodeJS.Timeout | null>, callback: () => void, delay: number) => void;
14
+ //# sourceMappingURL=timeoutUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeoutUtils.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Reels/utils/timeoutUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,gBAAgB,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAC3C,IAKF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,gBAAgB,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAC5C,UAAU,MAAM,IAAI,EACpB,OAAO,MAAM,KACZ,IAGF,CAAC"}
@@ -25,4 +25,5 @@ export * from './Subscription';
25
25
  export * from './Alert';
26
26
  export * from './Reels';
27
27
  export * from './BlurView';
28
+ export * from './BottomSheet';
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zezosoft/zezo-ott-react-native-ui-kit",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "A professional React Native UI component library built for OTT applications.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "lib/typescript/src/index.d.ts",
@@ -0,0 +1,195 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import {
4
+ TouchableOpacity,
5
+ StyleSheet,
6
+ View,
7
+ ScrollView,
8
+ Dimensions,
9
+ } from 'react-native';
10
+ import type { ViewStyle } from 'react-native';
11
+ import Modal from 'react-native-modal';
12
+ import { X } from 'lucide-react-native';
13
+ import { moderateScale, verticalScale } from 'react-native-size-matters';
14
+ import { RFValue } from 'react-native-responsive-fontsize';
15
+ import Animated from 'react-native-reanimated';
16
+ import type { ITheme } from '../../theme';
17
+ import { Text } from '../Text';
18
+
19
+ const { height: SCREEN_HEIGHT } = Dimensions.get('window');
20
+
21
+ export interface BottomSheetProps {
22
+ theme: ITheme;
23
+ children: ReactNode;
24
+ title?: string;
25
+ height?: string | number;
26
+ showCloseButton?: boolean;
27
+ visible?: boolean;
28
+ onClose?: () => void;
29
+ handleIndicatorStyle?: ViewStyle;
30
+ scrollable?: boolean;
31
+ }
32
+
33
+ const BottomSheet: React.FC<BottomSheetProps> = ({
34
+ theme,
35
+ children,
36
+ title,
37
+ height,
38
+ showCloseButton = true,
39
+ visible = false,
40
+ onClose,
41
+ handleIndicatorStyle,
42
+ scrollable = true,
43
+ }) => {
44
+ const calculatedHeight = useMemo(() => {
45
+ if (!height) return SCREEN_HEIGHT * 0.75;
46
+
47
+ if (typeof height === 'number') return height;
48
+
49
+ if (typeof height === 'string' && height.includes('%')) {
50
+ const num = parseFloat(height);
51
+ if (!isNaN(num)) {
52
+ return (num / 100) * SCREEN_HEIGHT;
53
+ }
54
+ }
55
+
56
+ return SCREEN_HEIGHT * 0.75;
57
+ }, [height]);
58
+
59
+ const handleClosePress = useCallback(() => {
60
+ onClose?.();
61
+ }, [onClose]);
62
+
63
+ const renderHeader = useMemo(() => {
64
+ if (title) {
65
+ return (
66
+ <Text style={[styles.title, { color: theme.colors.textPrimary }]}>
67
+ {title}
68
+ </Text>
69
+ );
70
+ }
71
+ return null;
72
+ }, [title, theme.colors.textPrimary]);
73
+
74
+ const renderCloseButton = useMemo(() => {
75
+ if (!showCloseButton) return null;
76
+ return (
77
+ <TouchableOpacity
78
+ onPress={handleClosePress}
79
+ style={[
80
+ styles.closeButtonWrapper,
81
+ { backgroundColor: theme.colors.button },
82
+ ]}
83
+ activeOpacity={0.8}
84
+ >
85
+ <X size={moderateScale(16)} color={theme.colors.buttonText} />
86
+ </TouchableOpacity>
87
+ );
88
+ }, [showCloseButton, handleClosePress, theme.colors]);
89
+
90
+ return (
91
+ <Modal
92
+ isVisible={visible}
93
+ onBackdropPress={handleClosePress}
94
+ onSwipeComplete={handleClosePress}
95
+ style={styles.modal}
96
+ backdropOpacity={0.45}
97
+ // swipeDirection="down"
98
+ animationIn="slideInUp"
99
+ animationOut="slideOutDown"
100
+ animationInTiming={260}
101
+ animationOutTiming={220}
102
+ useNativeDriver
103
+ useNativeDriverForBackdrop
104
+ propagateSwipe
105
+ avoidKeyboard
106
+ statusBarTranslucent={false}
107
+ hardwareAccelerated
108
+ >
109
+ <Animated.View
110
+ style={[
111
+ styles.bottomSheetContainer,
112
+ {
113
+ backgroundColor: theme.colors.background,
114
+ maxHeight: calculatedHeight,
115
+ },
116
+ ]}
117
+ >
118
+ {renderCloseButton}
119
+ <View
120
+ style={[
121
+ styles.handleIndicator,
122
+ { backgroundColor: theme.colors.button },
123
+ handleIndicatorStyle,
124
+ ]}
125
+ />
126
+
127
+ {scrollable ? (
128
+ <ScrollView
129
+ showsVerticalScrollIndicator={false}
130
+ bounces={false}
131
+ nestedScrollEnabled
132
+ keyboardShouldPersistTaps="handled"
133
+ contentContainerStyle={styles.scrollContent}
134
+ >
135
+ {renderHeader}
136
+ {children}
137
+ </ScrollView>
138
+ ) : (
139
+ <View style={styles.viewContent}>
140
+ {renderHeader}
141
+ {children}
142
+ </View>
143
+ )}
144
+ </Animated.View>
145
+ </Modal>
146
+ );
147
+ };
148
+
149
+ export default BottomSheet;
150
+
151
+ const styles = StyleSheet.create({
152
+ modal: {
153
+ justifyContent: 'flex-end',
154
+ margin: 0,
155
+ },
156
+ bottomSheetContainer: {
157
+ borderTopLeftRadius: moderateScale(22),
158
+ borderTopRightRadius: moderateScale(22),
159
+ overflow: 'hidden',
160
+ position: 'relative',
161
+ flex: 1,
162
+ },
163
+ handleIndicator: {
164
+ width: moderateScale(45),
165
+ height: verticalScale(4),
166
+ borderRadius: moderateScale(3),
167
+ alignSelf: 'center',
168
+ marginVertical: verticalScale(10),
169
+ },
170
+ scrollContent: {
171
+ flex: 1,
172
+ paddingBottom: verticalScale(30),
173
+ paddingHorizontal: moderateScale(12),
174
+ },
175
+ viewContent: {
176
+ paddingBottom: verticalScale(10),
177
+ paddingHorizontal: moderateScale(12),
178
+ flex: 1,
179
+ },
180
+ closeButtonWrapper: {
181
+ position: 'absolute',
182
+ top: verticalScale(10),
183
+ right: moderateScale(14),
184
+ borderRadius: moderateScale(18),
185
+ padding: moderateScale(6),
186
+ zIndex: 1000,
187
+ elevation: 10,
188
+ },
189
+ title: {
190
+ fontSize: RFValue(16),
191
+ fontWeight: '700',
192
+ textAlign: 'center',
193
+ marginBottom: verticalScale(15),
194
+ },
195
+ });
@@ -0,0 +1,2 @@
1
+ export { default as BottomSheet } from './BottomSheet';
2
+ export type { BottomSheetProps } from './BottomSheet';
@@ -9,6 +9,7 @@ import {
9
9
  Alert,
10
10
  Platform,
11
11
  type ViewStyle,
12
+ type TextStyle,
12
13
  type StyleProp,
13
14
  } from 'react-native';
14
15
  import { ArrowLeft } from 'lucide-react-native';
@@ -17,6 +18,7 @@ import { useInternalTheme } from '../../theme/hook/useInternalTheme';
17
18
  import { scale, verticalScale } from 'react-native-size-matters';
18
19
  import { BlurView } from '@react-native-community/blur';
19
20
  import type { ThemeOverride } from '../../theme/themes';
21
+ import { Text } from '../Text';
20
22
 
21
23
  type BackBtnProps = {
22
24
  size?: number;
@@ -25,6 +27,8 @@ type BackBtnProps = {
25
27
  style?: StyleProp<ViewStyle>;
26
28
  theme?: ThemeOverride;
27
29
  enableBlur?: boolean;
30
+ label?: string;
31
+ textStyle?: StyleProp<TextStyle>;
28
32
  };
29
33
 
30
34
  const BackBtn: React.FC<BackBtnProps> = ({
@@ -34,6 +38,8 @@ const BackBtn: React.FC<BackBtnProps> = ({
34
38
  style,
35
39
  theme,
36
40
  enableBlur = false,
41
+ label,
42
+ textStyle,
37
43
  }) => {
38
44
  const insets = useSafeAreaInsets();
39
45
  const { theme: appliedTheme } = useInternalTheme(theme);
@@ -61,12 +67,14 @@ const BackBtn: React.FC<BackBtnProps> = ({
61
67
  const hasBackground = !!flattenedStyle.backgroundColor;
62
68
 
63
69
  const shouldRenderBlur = enableBlur && hasBackground;
70
+ const hasLabel = !!label;
64
71
 
65
72
  return (
66
73
  <TouchableOpacity
67
74
  activeOpacity={0.8}
68
75
  style={[
69
76
  styles.container,
77
+ hasLabel && styles.containerWithText,
70
78
  !hasTopInStyle && { top: calculatedTop },
71
79
  style,
72
80
  ]}
@@ -86,6 +94,18 @@ const BackBtn: React.FC<BackBtnProps> = ({
86
94
  )}
87
95
 
88
96
  <ArrowLeft size={size} color={color || appliedTheme.colors.textPrimary} />
97
+ {hasLabel && (
98
+ <Text
99
+ style={[
100
+ styles.text,
101
+ { color: color || appliedTheme.colors.textPrimary },
102
+ textStyle,
103
+ ]}
104
+ color={color || appliedTheme.colors.textPrimary}
105
+ >
106
+ {label}
107
+ </Text>
108
+ )}
89
109
  </TouchableOpacity>
90
110
  );
91
111
  };
@@ -102,4 +122,17 @@ const styles = StyleSheet.create({
102
122
  alignItems: 'center',
103
123
  overflow: 'hidden',
104
124
  },
125
+ containerWithText: {
126
+ flexDirection: 'row',
127
+ borderRadius: scale(20),
128
+ paddingHorizontal: scale(12),
129
+ },
130
+ text: {
131
+ fontSize: scale(14),
132
+ fontWeight: '600',
133
+ marginLeft: scale(8),
134
+ textShadowColor: 'rgba(0, 0, 0, 0.75)',
135
+ textShadowOffset: { width: 0, height: 1 },
136
+ textShadowRadius: 3,
137
+ },
105
138
  });
@@ -0,0 +1,156 @@
1
+ import React from 'react';
2
+ import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
3
+ import { ChevronRight, ListVideo } from 'lucide-react-native';
4
+ import { moderateScale, verticalScale } from 'react-native-size-matters';
5
+ import { RFValue } from 'react-native-responsive-fontsize';
6
+ import type { ISeriesItem } from '../types';
7
+ import type { ITheme } from '../../../../theme';
8
+
9
+ interface BottomControlsProps {
10
+ series: ISeriesItem;
11
+ episodeIndex: number;
12
+ videoCurrentTime: number;
13
+ videoDuration: number;
14
+ onEpisodesPress?: () => void;
15
+ theme: ITheme;
16
+ }
17
+
18
+ const BottomControls: React.FC<BottomControlsProps> = ({
19
+ series,
20
+ episodeIndex,
21
+ videoCurrentTime,
22
+ videoDuration,
23
+ onEpisodesPress,
24
+ theme,
25
+ }) => {
26
+ const progressPercentage =
27
+ videoDuration > 0 ? (videoCurrentTime / videoDuration) * 100 : 0;
28
+
29
+ const truncatedTitle =
30
+ series.title.length <= 25
31
+ ? series.title
32
+ : series.title.slice(0, 25) + '...';
33
+
34
+ return (
35
+ <View style={styles.container}>
36
+ {/* Series Info Section */}
37
+ <View style={styles.seriesInfo}>
38
+ <Text style={styles.seriesTitle}>{truncatedTitle}</Text>
39
+ <Text numberOfLines={2} style={styles.seriesDescription}>
40
+ {series.description}
41
+ </Text>
42
+ </View>
43
+
44
+ {/* Episodes Selector Button */}
45
+ <TouchableOpacity
46
+ style={styles.episodesButton}
47
+ onPress={onEpisodesPress}
48
+ activeOpacity={0.7}
49
+ >
50
+ <View style={styles.episodesButtonContent}>
51
+ <ListVideo
52
+ color={'#fff'}
53
+ width={moderateScale(20)}
54
+ height={moderateScale(20)}
55
+ />
56
+ <Text style={styles.episodesText}>
57
+ {episodeIndex + 1} / {series.episodes.length} Episodes
58
+ </Text>
59
+ </View>
60
+ <ChevronRight color={'#fff'} size={moderateScale(22)} />
61
+ </TouchableOpacity>
62
+
63
+ {/* Video Progress Bar */}
64
+ <View style={styles.progressBarContainer}>
65
+ <View style={styles.progressBarWrapper}>
66
+ <View
67
+ style={[
68
+ styles.progressBarFill,
69
+ {
70
+ width: `${progressPercentage}%`,
71
+ backgroundColor: theme.colors.primary,
72
+ },
73
+ ]}
74
+ />
75
+ {videoDuration > 0 && (
76
+ <View
77
+ style={[
78
+ styles.progressBarKnob,
79
+ {
80
+ left: `${progressPercentage}%`,
81
+ },
82
+ ]}
83
+ />
84
+ )}
85
+ </View>
86
+ </View>
87
+ </View>
88
+ );
89
+ };
90
+
91
+ export default BottomControls;
92
+
93
+ const styles = StyleSheet.create({
94
+ container: {
95
+ position: 'absolute',
96
+ bottom: 0,
97
+ zIndex: 10,
98
+ marginHorizontal: moderateScale(8),
99
+ },
100
+ seriesInfo: {
101
+ marginBottom: verticalScale(10),
102
+ },
103
+ seriesTitle: {
104
+ fontSize: RFValue(13),
105
+ fontWeight: '500',
106
+ color: '#fff',
107
+ },
108
+ seriesDescription: {
109
+ fontSize: RFValue(10),
110
+ color: '#fff',
111
+ marginTop: 2.5,
112
+ opacity: 0.9,
113
+ },
114
+ episodesButton: {
115
+ flexDirection: 'row',
116
+ justifyContent: 'space-between',
117
+ alignItems: 'center',
118
+ backgroundColor: 'rgba(0,0,0,0.5)',
119
+ borderRadius: moderateScale(8),
120
+ paddingHorizontal: moderateScale(12),
121
+ paddingVertical: verticalScale(8),
122
+ },
123
+ episodesButtonContent: {
124
+ flexDirection: 'row',
125
+ alignItems: 'center',
126
+ },
127
+ episodesText: {
128
+ fontSize: RFValue(13),
129
+ color: '#fff',
130
+ marginLeft: moderateScale(10),
131
+ },
132
+ progressBarContainer: {
133
+ marginVertical: verticalScale(10),
134
+ marginHorizontal: moderateScale(5),
135
+ },
136
+ progressBarWrapper: {
137
+ height: verticalScale(2),
138
+ backgroundColor: 'rgba(255, 255, 255, 0.3)',
139
+ borderRadius: moderateScale(1),
140
+ position: 'relative',
141
+ },
142
+ progressBarFill: {
143
+ height: '100%',
144
+ // backgroundColor: '#fff',
145
+ borderRadius: moderateScale(1),
146
+ },
147
+ progressBarKnob: {
148
+ position: 'absolute',
149
+ top: -verticalScale(2),
150
+ width: moderateScale(7),
151
+ height: moderateScale(7),
152
+ borderRadius: moderateScale(5),
153
+ backgroundColor: '#fff',
154
+ transform: [{ translateX: -moderateScale(3.5) }],
155
+ },
156
+ });