@zezosoft/zezo-ott-react-native-ui-kit 1.1.2 → 1.1.3

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 (136) hide show
  1. package/lib/module/components/Auth/QrLogin/QrLogin.js +304 -138
  2. package/lib/module/components/Auth/QrLogin/QrLogin.js.map +1 -1
  3. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js +193 -141
  4. package/lib/module/components/Auth/QrLogin/components/QrViewArea.js.map +1 -1
  5. package/lib/module/components/Content/Card/Category/Category.js +83 -11
  6. package/lib/module/components/Content/Card/Category/Category.js.map +1 -1
  7. package/lib/module/components/Content/Card/NowWatching/NowWatching.js +237 -108
  8. package/lib/module/components/Content/Card/NowWatching/NowWatching.js.map +1 -1
  9. package/lib/module/components/Content/Card/Sliders/Styles/One.js +185 -126
  10. package/lib/module/components/Content/Card/Sliders/Styles/One.js.map +1 -1
  11. package/lib/module/components/Content/Card/Sliders/Styles/Two.js +139 -92
  12. package/lib/module/components/Content/Card/Sliders/Styles/Two.js.map +1 -1
  13. package/lib/module/components/Content/Card/Styles/Five.js +131 -48
  14. package/lib/module/components/Content/Card/Styles/Five.js.map +1 -1
  15. package/lib/module/components/Content/Card/Styles/Four.js +126 -59
  16. package/lib/module/components/Content/Card/Styles/Four.js.map +1 -1
  17. package/lib/module/components/Content/Card/Styles/One.js +125 -50
  18. package/lib/module/components/Content/Card/Styles/One.js.map +1 -1
  19. package/lib/module/components/Content/Card/Styles/RotateInOut.js +138 -53
  20. package/lib/module/components/Content/Card/Styles/RotateInOut.js.map +1 -1
  21. package/lib/module/components/Content/Card/Styles/Six.js +207 -115
  22. package/lib/module/components/Content/Card/Styles/Six.js.map +1 -1
  23. package/lib/module/components/Content/Card/Styles/Three.js +134 -79
  24. package/lib/module/components/Content/Card/Styles/Three.js.map +1 -1
  25. package/lib/module/components/Content/Card/Styles/TopTen.js +186 -171
  26. package/lib/module/components/Content/Card/Styles/TopTen.js.map +1 -1
  27. package/lib/module/components/Content/Card/Styles/Two.js +144 -64
  28. package/lib/module/components/Content/Card/Styles/Two.js.map +1 -1
  29. package/lib/module/components/Content/Card/components/AdsPoster.js +162 -0
  30. package/lib/module/components/Content/Card/components/AdsPoster.js.map +1 -0
  31. package/lib/module/components/Content/Card/components/CardPoster.js +120 -136
  32. package/lib/module/components/Content/Card/components/CardPoster.js.map +1 -1
  33. package/lib/module/components/Content/Card/components/index.js +4 -0
  34. package/lib/module/components/Content/Card/components/index.js.map +1 -0
  35. package/lib/module/components/Content/Content.js +67 -27
  36. package/lib/module/components/Content/Content.js.map +1 -1
  37. package/lib/module/components/Content/Sections.js +32 -11
  38. package/lib/module/components/Content/Sections.js.map +1 -1
  39. package/lib/module/constants/dummySections.js +44 -4
  40. package/lib/module/constants/dummySections.js.map +1 -1
  41. package/lib/module/hooks/Images/index.js +5 -0
  42. package/lib/module/hooks/Images/index.js.map +1 -0
  43. package/lib/module/hooks/Images/useImageLoader.js +168 -0
  44. package/lib/module/hooks/Images/useImageLoader.js.map +1 -0
  45. package/lib/module/hooks/Images/useImageValidation.js +36 -0
  46. package/lib/module/hooks/Images/useImageValidation.js.map +1 -0
  47. package/lib/module/hooks/index.js +3 -0
  48. package/lib/module/hooks/index.js.map +1 -1
  49. package/lib/module/hooks/useAdTracking.js +270 -0
  50. package/lib/module/hooks/useAdTracking.js.map +1 -0
  51. package/lib/module/hooks/useCards.js +164 -0
  52. package/lib/module/hooks/useCards.js.map +1 -0
  53. package/lib/module/hooks/usePaginatedSection.js +11 -6
  54. package/lib/module/hooks/usePaginatedSection.js.map +1 -1
  55. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts +2 -0
  56. package/lib/typescript/src/components/Auth/QrLogin/QrLogin.d.ts.map +1 -1
  57. package/lib/typescript/src/components/Auth/QrLogin/components/QrViewArea.d.ts.map +1 -1
  58. package/lib/typescript/src/components/Content/Card/Category/Category.d.ts.map +1 -1
  59. package/lib/typescript/src/components/Content/Card/NowWatching/NowWatching.d.ts.map +1 -1
  60. package/lib/typescript/src/components/Content/Card/Sliders/Styles/One.d.ts.map +1 -1
  61. package/lib/typescript/src/components/Content/Card/Sliders/Styles/Two.d.ts.map +1 -1
  62. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts +13 -1
  63. package/lib/typescript/src/components/Content/Card/Styles/Five.d.ts.map +1 -1
  64. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts +13 -1
  65. package/lib/typescript/src/components/Content/Card/Styles/Four.d.ts.map +1 -1
  66. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts +15 -3
  67. package/lib/typescript/src/components/Content/Card/Styles/One.d.ts.map +1 -1
  68. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts +13 -1
  69. package/lib/typescript/src/components/Content/Card/Styles/RotateInOut.d.ts.map +1 -1
  70. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts +1 -0
  71. package/lib/typescript/src/components/Content/Card/Styles/Six.d.ts.map +1 -1
  72. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts +13 -5
  73. package/lib/typescript/src/components/Content/Card/Styles/Three.d.ts.map +1 -1
  74. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts +1 -0
  75. package/lib/typescript/src/components/Content/Card/Styles/TopTen.d.ts.map +1 -1
  76. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts +13 -1
  77. package/lib/typescript/src/components/Content/Card/Styles/Two.d.ts.map +1 -1
  78. package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts +26 -0
  79. package/lib/typescript/src/components/Content/Card/components/AdsPoster.d.ts.map +1 -0
  80. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts +3 -1
  81. package/lib/typescript/src/components/Content/Card/components/CardPoster.d.ts.map +1 -1
  82. package/lib/typescript/src/components/Content/Card/components/index.d.ts +2 -0
  83. package/lib/typescript/src/components/Content/Card/components/index.d.ts.map +1 -0
  84. package/lib/typescript/src/components/Content/Card/index.d.ts +76 -6
  85. package/lib/typescript/src/components/Content/Card/index.d.ts.map +1 -1
  86. package/lib/typescript/src/components/Content/Content.d.ts +4 -3
  87. package/lib/typescript/src/components/Content/Content.d.ts.map +1 -1
  88. package/lib/typescript/src/components/Content/Sections.d.ts +20 -6
  89. package/lib/typescript/src/components/Content/Sections.d.ts.map +1 -1
  90. package/lib/typescript/src/constants/dummySections.d.ts +5 -0
  91. package/lib/typescript/src/constants/dummySections.d.ts.map +1 -1
  92. package/lib/typescript/src/hooks/Images/index.d.ts +3 -0
  93. package/lib/typescript/src/hooks/Images/index.d.ts.map +1 -0
  94. package/lib/typescript/src/hooks/Images/useImageLoader.d.ts +36 -0
  95. package/lib/typescript/src/hooks/Images/useImageLoader.d.ts.map +1 -0
  96. package/lib/typescript/src/hooks/Images/useImageValidation.d.ts +17 -0
  97. package/lib/typescript/src/hooks/Images/useImageValidation.d.ts.map +1 -0
  98. package/lib/typescript/src/hooks/index.d.ts +3 -0
  99. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  100. package/lib/typescript/src/hooks/useAdTracking.d.ts +39 -0
  101. package/lib/typescript/src/hooks/useAdTracking.d.ts.map +1 -0
  102. package/lib/typescript/src/hooks/useCards.d.ts +36 -0
  103. package/lib/typescript/src/hooks/useCards.d.ts.map +1 -0
  104. package/lib/typescript/src/hooks/usePaginatedSection.d.ts +12 -2
  105. package/lib/typescript/src/hooks/usePaginatedSection.d.ts.map +1 -1
  106. package/lib/typescript/src/types/sections/index.d.ts +7 -4
  107. package/lib/typescript/src/types/sections/index.d.ts.map +1 -1
  108. package/package.json +6 -3
  109. package/src/components/Auth/QrLogin/QrLogin.tsx +382 -122
  110. package/src/components/Auth/QrLogin/components/QrViewArea.tsx +291 -197
  111. package/src/components/Content/Card/Category/Category.tsx +95 -8
  112. package/src/components/Content/Card/NowWatching/NowWatching.tsx +281 -136
  113. package/src/components/Content/Card/Sliders/Styles/One.tsx +244 -148
  114. package/src/components/Content/Card/Sliders/Styles/Two.tsx +171 -102
  115. package/src/components/Content/Card/Styles/Five.tsx +161 -62
  116. package/src/components/Content/Card/Styles/Four.tsx +164 -85
  117. package/src/components/Content/Card/Styles/One.tsx +161 -71
  118. package/src/components/Content/Card/Styles/RotateInOut.tsx +157 -60
  119. package/src/components/Content/Card/Styles/Six.tsx +242 -142
  120. package/src/components/Content/Card/Styles/Three.tsx +166 -133
  121. package/src/components/Content/Card/Styles/TopTen.tsx +230 -191
  122. package/src/components/Content/Card/Styles/Two.tsx +182 -79
  123. package/src/components/Content/Card/components/AdsPoster.tsx +202 -0
  124. package/src/components/Content/Card/components/CardPoster.tsx +134 -154
  125. package/src/components/Content/Card/components/index.ts +1 -0
  126. package/src/components/Content/Content.tsx +83 -45
  127. package/src/components/Content/Sections.tsx +51 -10
  128. package/src/constants/dummySections.ts +48 -1
  129. package/src/hooks/Images/index.ts +2 -0
  130. package/src/hooks/Images/useImageLoader.ts +206 -0
  131. package/src/hooks/Images/useImageValidation.ts +36 -0
  132. package/src/hooks/index.ts +3 -0
  133. package/src/hooks/useAdTracking.ts +349 -0
  134. package/src/hooks/useCards.ts +228 -0
  135. package/src/hooks/usePaginatedSection.ts +26 -7
  136. package/src/types/sections/index.ts +7 -4
@@ -2,15 +2,21 @@
2
2
 
3
3
  /**
4
4
  * @author Naresh Dhamu
5
- * @lastModified Sun 08 Jun 2025 at 03:50 PM
5
+ * @lastModified Sun 08 Jun 2025
6
6
  */
7
7
  import React, { useMemo } from 'react';
8
8
  import Sliders from "./Card/Sliders/index.js";
9
9
  import Cards from "./Card/index.js";
10
10
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
11
- // Memoized common props creator to prevent object recreation
12
11
  const createCommonProps = (type, props) => {
13
12
  const effectiveIsLoading = props.isLoading?.section || props.section_id === `dummy-${type}`;
13
+ const onPressMoreHandler = props.events?.onPressMore ? params => {
14
+ props.events?.onPressMore?.({
15
+ section_id: params.section_id,
16
+ name: params.name,
17
+ type
18
+ });
19
+ } : undefined;
14
20
  return {
15
21
  theme: props.theme,
16
22
  title: props.name,
@@ -19,10 +25,14 @@ const createCommonProps = (type, props) => {
19
25
  data: props.data?.sectionData || null,
20
26
  index: props.index,
21
27
  onPressItem: props.events?.onPressItem,
22
- onPressMore: props.events?.onPressMore,
28
+ onPressMore: onPressMoreHandler,
29
+ onAdVisible: props.events?.onAdVisible,
23
30
  isLoading: effectiveIsLoading,
24
31
  moreFetchDataHistory: props.moreFetchDataHistory,
25
- moreFetchData: props.moreFetchData
32
+ moreFetchData: props.moreFetchData,
33
+ onDisplayAds: props.onDisplayAds || props.events?.onDisplayAds,
34
+ screenDimensions: props.screenDimensions,
35
+ viewportOffsets: props.viewportOffsets
26
36
  };
27
37
  };
28
38
  const renderDefaultComponent = (type, props) => {
@@ -83,6 +93,10 @@ const renderDefaultComponent = (type, props) => {
83
93
  return null;
84
94
  }
85
95
  };
96
+
97
+ // ----------------------------------------
98
+ // Sections Component
99
+ // ----------------------------------------
86
100
  const Sections = ({
87
101
  type,
88
102
  data,
@@ -95,7 +109,10 @@ const Sections = ({
95
109
  sectionProps,
96
110
  isLoading,
97
111
  moreFetchData,
98
- moreFetchDataHistory
112
+ moreFetchDataHistory,
113
+ onDisplayAds,
114
+ screenDimensions,
115
+ viewportOffsets
99
116
  }) => {
100
117
  const commonProps = useMemo(() => ({
101
118
  data: data.sectionData,
@@ -112,10 +129,11 @@ const Sections = ({
112
129
  sectionProps,
113
130
  isLoading,
114
131
  moreFetchData,
115
- moreFetchDataHistory
116
- }), [type, data, name, section_id, index, theme, events, sectionProps, isLoading, moreFetchData, moreFetchDataHistory]);
117
-
118
- // Memoize props object to avoid recreating in filter
132
+ moreFetchDataHistory,
133
+ onDisplayAds,
134
+ screenDimensions,
135
+ viewportOffsets
136
+ }), [type, data, name, section_id, index, theme, events, sectionProps, isLoading, moreFetchData, moreFetchDataHistory, onDisplayAds, screenDimensions, viewportOffsets]);
119
137
  const filterProps = useMemo(() => ({
120
138
  data,
121
139
  name,
@@ -126,8 +144,11 @@ const Sections = ({
126
144
  sectionProps,
127
145
  isLoading,
128
146
  moreFetchData,
129
- moreFetchDataHistory
130
- }), [data, name, section_id, index, theme, events, sectionProps, isLoading, moreFetchData, moreFetchDataHistory]);
147
+ moreFetchDataHistory,
148
+ onDisplayAds,
149
+ screenDimensions,
150
+ viewportOffsets
151
+ }), [data, name, section_id, index, theme, events, sectionProps, isLoading, moreFetchData, moreFetchDataHistory, onDisplayAds, screenDimensions, viewportOffsets]);
131
152
  const fallbackComponents = useMemo(() => customComponents.filter(({
132
153
  type: customType
133
154
  }) => renderDefaultComponent(customType, filterProps) === null), [customComponents, filterProps]);
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","Sliders","Cards","jsx","_jsx","Fragment","_Fragment","createCommonProps","type","props","effectiveIsLoading","isLoading","section","section_id","theme","title","name","data","sectionData","index","onPressItem","events","onPressMore","moreFetchDataHistory","moreFetchData","renderDefaultComponent","commonProps","Styles","One","showPlayIcon","sectionProps","showPlayBtn","Two","Three","Four","Five","Six","NowWatching","historyData","isLoadingHistory","history","RotateCarousel","TopTen","Sections","customComponents","customComponent","find","c","defaultRendered","filterProps","fallbackComponents","filter","customType","cloneElement","component","children","map","key","memo"],"sourceRoot":"../../../../src","sources":["components/Content/Sections.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Sliders","Cards","jsx","_jsx","Fragment","_Fragment","createCommonProps","type","props","effectiveIsLoading","isLoading","section","section_id","onPressMoreHandler","events","onPressMore","params","name","undefined","theme","title","data","sectionData","index","onPressItem","onAdVisible","moreFetchDataHistory","moreFetchData","onDisplayAds","screenDimensions","viewportOffsets","renderDefaultComponent","commonProps","Styles","One","showPlayIcon","sectionProps","showPlayBtn","Two","Three","Four","Five","Six","NowWatching","historyData","isLoadingHistory","history","RotateCarousel","TopTen","Sections","customComponents","customComponent","find","c","defaultRendered","filterProps","fallbackComponents","filter","customType","cloneElement","component","children","map","key","memo"],"sourceRoot":"../../../../src","sources":["components/Content/Sections.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,46 @@
1
1
  "use strict";
2
2
 
3
+ /**
4
+ * Creates a dummy content data object for skeleton loading states
5
+ */
6
+ export const dummyContentData = (id = 'dummy-content-id') => {
7
+ return {
8
+ _id: id,
9
+ poster: '',
10
+ thumbnail: '',
11
+ content_offering_type: 'movie',
12
+ name: '',
13
+ slug: '',
14
+ u_age: '',
15
+ description: '',
16
+ release_date: '',
17
+ runtime: '',
18
+ duration: '',
19
+ genre: '',
20
+ director: '',
21
+ cast: [],
22
+ rating: '',
23
+ language: '',
24
+ subtitles: [],
25
+ audio_tracks: [],
26
+ type: 'movie',
27
+ year: '',
28
+ tags: [],
29
+ trailer: '',
30
+ trailer_source_link: '',
31
+ banner: '',
32
+ logo: '',
33
+ source_link: '',
34
+ source_type: '',
35
+ is_featured: false,
36
+ is_premium: false,
37
+ status: 'active',
38
+ views: 0,
39
+ likes: 0,
40
+ created_at: new Date().toISOString(),
41
+ updated_at: new Date().toISOString()
42
+ };
43
+ };
3
44
  const generateDummySection = type => {
4
45
  return {
5
46
  _id: `dummy-${type}`,
@@ -12,10 +53,9 @@ const generateDummySection = type => {
12
53
  slug: 'dummy'
13
54
  },
14
55
  content: {
15
- data: Array(5).fill({
16
- id: '',
17
- order: 0
18
- }),
56
+ data: Array.from({
57
+ length: 5
58
+ }, (_, i) => dummyContentData(`dummy-content-${i}`)),
19
59
  meta: {
20
60
  pagination: {
21
61
  total: 5,
@@ -1 +1 @@
1
- {"version":3,"names":["generateDummySection","type","_id","name","charAt","toUpperCase","slice","content_ids","Array","fill","category","slug","content","data","id","order","meta","pagination","total","limit","page","hasNextPage","length","nextPage","label","status","createdAt","Date","updatedAt","dummySections"],"sourceRoot":"../../../src","sources":["constants/dummySections.ts"],"mappings":";;AAEA,MAAMA,oBAAoB,GACxBC,IAA6B,IACT;EACpB,OAAO;IACLC,GAAG,EAAE,SAASD,IAAI,EAAE;IACpBE,IAAI,EAAE,WAAWF,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,GAAGJ,IAAI,CAACK,KAAK,CAAC,CAAC,CAAC,EAAE;IAC/DL,IAAI;IACJM,WAAW,EAAEC,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;IAC9BC,QAAQ,EAAE;MACRR,GAAG,EAAE,cAAc;MACnBC,IAAI,EAAE,OAAO;MACbQ,IAAI,EAAE;IACR,CAAC;IACDC,OAAO,EAAE;MACPC,IAAI,EAAEL,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC;QAAEK,EAAE,EAAE,EAAE;QAAEC,KAAK,EAAE;MAAE,CAAC,CAAC;MACzCC,IAAI,EAAE;QACJC,UAAU,EAAE;UACVC,KAAK,EAAE,CAAC;UACRC,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,CAAC;UACPC,WAAW,EAAE,IAAI;UACjBC,MAAM,EAAE,CAAC;UACTC,QAAQ,EAAE;QACZ;MACF;IACF,CAAC;IACDC,KAAK,EAAE,EAAE;IACTT,KAAK,EAAE,CAAC;IACRU,MAAM,EAAE,KAAK;IACbC,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC;IACrBC,SAAS,EAAE,IAAID,IAAI,CAAC;EACtB,CAAC;AACH,CAAC;AAED,OAAO,MAAME,aAAgC,GAAG,CAC9C7B,oBAAoB,CAAC,QAAQ,CAAC,EAC9BA,oBAAoB,CAAC,QAAQ,CAAC,EAC9BA,oBAAoB,CAAC,mBAAmB,CAAC,EACzCA,oBAAoB,CAAC,cAAc,CAAC,EACpCA,oBAAoB,CAAC,cAAc,CAAC,EACpCA,oBAAoB,CAAC,cAAc,CAAC,EACpCA,oBAAoB,CAAC,cAAc,CAAC,EACpCA,oBAAoB,CAAC,cAAc,CAAC,EACpCA,oBAAoB,CAAC,QAAQ,CAAC,CAC/B","ignoreList":[]}
1
+ {"version":3,"names":["dummyContentData","id","_id","poster","thumbnail","content_offering_type","name","slug","u_age","description","release_date","runtime","duration","genre","director","cast","rating","language","subtitles","audio_tracks","type","year","tags","trailer","trailer_source_link","banner","logo","source_link","source_type","is_featured","is_premium","status","views","likes","created_at","Date","toISOString","updated_at","generateDummySection","charAt","toUpperCase","slice","content_ids","Array","fill","category","content","data","from","length","_","i","meta","pagination","total","limit","page","hasNextPage","nextPage","label","order","createdAt","updatedAt","dummySections"],"sourceRoot":"../../../src","sources":["constants/dummySections.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export * from "./useImageLoader.js";
4
+ export * from "./useImageValidation.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["hooks/Images/index.ts"],"mappings":";;AAAA,cAAc,qBAAkB;AAChC,cAAc,yBAAsB","ignoreList":[]}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @author Naresh Dhamu
5
+ * @lastModified Wed 26 Nov 2025 at 02:19 PM
6
+ */
7
+
8
+ import { useState, useEffect, useMemo, useCallback, useRef } from 'react';
9
+ import FastImage from 'react-native-fast-image';
10
+ import { isValidImageUrl, isLocalFile } from "./useImageValidation.js";
11
+
12
+ // Module-level cache to track successfully loaded images
13
+ const loadedImageCache = new Set();
14
+ /**
15
+ * Custom hook to manage image loading state, caching, and validation
16
+ * @param options - Configuration options for image loading
17
+ * @returns Object containing image state and handlers
18
+ */
19
+ export const useImageLoader = ({
20
+ imageUri,
21
+ isLoading = false,
22
+ enablePreload = false,
23
+ onError,
24
+ onLoad,
25
+ onLoadStart
26
+ }) => {
27
+ const [imageLoading, setImageLoading] = useState(true);
28
+ const [imageError, setImageError] = useState(false);
29
+ const previousUriRef = useRef('');
30
+ const onErrorRef = useRef(onError);
31
+
32
+ // Keep onError ref updated
33
+ useEffect(() => {
34
+ onErrorRef.current = onError;
35
+ }, [onError]);
36
+
37
+ // Validate image URL
38
+ const hasValidImage = useMemo(() => isValidImageUrl(imageUri), [imageUri]);
39
+
40
+ // Check if image is already cached
41
+ const isImageCached = useMemo(() => loadedImageCache.has(imageUri), [imageUri]);
42
+
43
+ // Handle image state changes
44
+ useEffect(() => {
45
+ const uriChanged = previousUriRef.current !== imageUri;
46
+
47
+ // Update ref when URI changes
48
+ if (uriChanged) {
49
+ previousUriRef.current = imageUri;
50
+ // Reset error state when URI changes to allow new image to load
51
+ setImageError(false);
52
+ }
53
+
54
+ // Reset states when loading
55
+ if (isLoading) {
56
+ setImageLoading(true);
57
+ setImageError(false);
58
+ return;
59
+ }
60
+
61
+ // Handle valid image URL
62
+ if (hasValidImage) {
63
+ const isLocal = isLocalFile(imageUri);
64
+ if (isImageCached) {
65
+ // Image is cached, mark as loaded
66
+ setImageLoading(false);
67
+ setImageError(false);
68
+ } else {
69
+ // Image not cached, start loading
70
+ setImageLoading(true);
71
+ setImageError(false);
72
+ // Preload image if enabled (only for remote URLs, not local files)
73
+ if (enablePreload && !isLocal && uriChanged) {
74
+ FastImage.preload([{
75
+ uri: imageUri
76
+ }]);
77
+ }
78
+ }
79
+ } else {
80
+ // For empty or invalid URLs
81
+ if (!imageUri || imageUri.trim() === '') {
82
+ // Empty URI - show error immediately (no point in trying to load)
83
+ setImageLoading(false);
84
+ setImageError(true);
85
+ } else {
86
+ // Invalid URL format - attempt to load anyway
87
+ // FastImage might still be able to load it, so keep loading state
88
+ setImageLoading(true);
89
+ setImageError(false);
90
+ }
91
+ }
92
+ }, [imageUri, hasValidImage, isLoading, isImageCached, enablePreload]);
93
+
94
+ // Determine if skeleton should be shown
95
+ const showSkeleton = useMemo(() => isLoading || imageLoading && !imageError, [isLoading, imageLoading, imageError]);
96
+
97
+ // Determine if fallback should be shown
98
+ // Show fallback when:
99
+ // 1. Not showing skeleton
100
+ // 2. AND (imageError is true OR URI is empty/invalid)
101
+ // This allows images with invalid format to attempt loading, but shows fallback for empty URIs
102
+ const showFallback = useMemo(() => {
103
+ if (showSkeleton) return false;
104
+ // Empty URI - show fallback immediately
105
+ if (!imageUri || imageUri.trim() === '') return true;
106
+ // Show fallback only after actual error (not just invalid format)
107
+ return imageError && !imageLoading;
108
+ }, [showSkeleton, imageError, imageLoading, imageUri]);
109
+
110
+ // Check if image is a local file
111
+ const isLocal = useMemo(() => isLocalFile(imageUri), [imageUri]);
112
+
113
+ // Image source configuration
114
+ // Local files don't need cache control, cloud URIs do
115
+ const imageSource = useMemo(() => {
116
+ const source = {
117
+ uri: imageUri
118
+ };
119
+
120
+ // Only add cache control for remote URLs, not local files
121
+ if (!isLocal) {
122
+ source.cache = FastImage.cacheControl.immutable;
123
+ source.priority = FastImage.priority.normal;
124
+ }
125
+ return source;
126
+ }, [imageUri, isLocal]);
127
+
128
+ // Image event handlers
129
+ const handleLoad = useCallback(() => {
130
+ setImageLoading(false);
131
+ setImageError(false);
132
+ if (imageUri) {
133
+ loadedImageCache.add(imageUri);
134
+ }
135
+ if (onLoad) {
136
+ onLoad();
137
+ }
138
+ }, [imageUri, onLoad]);
139
+ const handleError = useCallback(() => {
140
+ setImageLoading(false);
141
+ setImageError(true);
142
+ if (onError) {
143
+ onError();
144
+ }
145
+ }, [onError]);
146
+ const handleLoadStart = useCallback(() => {
147
+ if (!isImageCached) {
148
+ setImageLoading(true);
149
+ setImageError(false);
150
+ if (onLoadStart) {
151
+ onLoadStart();
152
+ }
153
+ }
154
+ }, [isImageCached, onLoadStart]);
155
+ return {
156
+ imageLoading,
157
+ imageError,
158
+ hasValidImage,
159
+ isImageCached,
160
+ showSkeleton,
161
+ showFallback,
162
+ imageSource,
163
+ handleLoad,
164
+ handleError,
165
+ handleLoadStart: enablePreload ? handleLoadStart : undefined
166
+ };
167
+ };
168
+ //# sourceMappingURL=useImageLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useEffect","useMemo","useCallback","useRef","FastImage","isValidImageUrl","isLocalFile","loadedImageCache","Set","useImageLoader","imageUri","isLoading","enablePreload","onError","onLoad","onLoadStart","imageLoading","setImageLoading","imageError","setImageError","previousUriRef","onErrorRef","current","hasValidImage","isImageCached","has","uriChanged","isLocal","preload","uri","trim","showSkeleton","showFallback","imageSource","source","cache","cacheControl","immutable","priority","normal","handleLoad","add","handleError","handleLoadStart","undefined"],"sourceRoot":"../../../../src","sources":["hooks/Images/useImageLoader.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @author Naresh Dhamu
5
+ * @lastModified Wed 26 Nov 2025 at 02:19 PM
6
+ */
7
+
8
+ const IMAGE_URL_REGEX = /\.(jpg|jpeg|png|webp|gif|bmp)$/i;
9
+
10
+ /**
11
+ * Utility function to check if URL is a local file path
12
+ * @param url - The URL to check
13
+ * @returns true if the URL is a local file path, false otherwise
14
+ */
15
+ export const isLocalFile = url => {
16
+ return url?.startsWith?.('file://') || url?.startsWith?.('/');
17
+ };
18
+
19
+ /**
20
+ * Utility function to validate image URL (supports both cloud URIs and local file paths)
21
+ * @param url - The URL to validate
22
+ * @returns true if the URL is a valid image URL, false otherwise
23
+ */
24
+ export const isValidImageUrl = url => {
25
+ if (!url || typeof url !== 'string') return false;
26
+ const cleaned = url.trim();
27
+
28
+ // Check for local file paths
29
+ if (isLocalFile(cleaned)) {
30
+ return IMAGE_URL_REGEX.test(cleaned) || cleaned.length > 0;
31
+ }
32
+
33
+ // Check for cloud URIs (http/https)
34
+ return (cleaned?.startsWith?.('http://') || cleaned?.startsWith?.('https://')) && IMAGE_URL_REGEX.test(cleaned);
35
+ };
36
+ //# sourceMappingURL=useImageValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["IMAGE_URL_REGEX","isLocalFile","url","startsWith","isValidImageUrl","cleaned","trim","test","length"],"sourceRoot":"../../../../src","sources":["hooks/Images/useImageValidation.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,MAAMA,eAAe,GAAG,iCAAiC;;AAEzD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAIC,GAAW,IAAc;EACnD,OAAOA,GAAG,EAAEC,UAAU,GAAG,SAAS,CAAC,IAAID,GAAG,EAAEC,UAAU,GAAG,GAAG,CAAC;AAC/D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAIF,GAA8B,IAAc;EAC1E,IAAI,CAACA,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO,KAAK;EACjD,MAAMG,OAAO,GAAGH,GAAG,CAACI,IAAI,CAAC,CAAC;;EAE1B;EACA,IAAIL,WAAW,CAACI,OAAO,CAAC,EAAE;IACxB,OAAOL,eAAe,CAACO,IAAI,CAACF,OAAO,CAAC,IAAIA,OAAO,CAACG,MAAM,GAAG,CAAC;EAC5D;;EAEA;EACA,OACE,CAACH,OAAO,EAAEF,UAAU,GAAG,SAAS,CAAC,IAAIE,OAAO,EAAEF,UAAU,GAAG,UAAU,CAAC,KACtEH,eAAe,CAACO,IAAI,CAACF,OAAO,CAAC;AAEjC,CAAC","ignoreList":[]}
@@ -14,4 +14,7 @@ export * from "./usePrevious.js";
14
14
  export * from "./useSafeCallback.js";
15
15
  export * from "./useSkeletonItems.js";
16
16
  export * from "./useThemeColors.js";
17
+ export * from "./useCards.js";
18
+ export * from "./Images/index.js";
19
+ export * from "./useAdTracking.js";
17
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,cAAc,kBAAe;AAC7B,cAAc,kBAAe;AAC7B,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,qBAAkB;AAChC,cAAc,kBAAe;AAC7B,cAAc,sBAAmB;AACjC,cAAc,uBAAoB;AAClC,cAAc,qBAAkB","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,cAAc,kBAAe;AAC7B,cAAc,kBAAe;AAC7B,cAAc,wBAAqB;AACnC,cAAc,0BAAuB;AACrC,cAAc,qBAAkB;AAChC,cAAc,kBAAe;AAC7B,cAAc,sBAAmB;AACjC,cAAc,uBAAoB;AAClC,cAAc,qBAAkB;AAChC,cAAc,eAAY;AAC1B,cAAc,mBAAU;AACxB,cAAc,oBAAiB","ignoreList":[]}