react-native-inapp-inspector 2.5.12 → 2.5.13

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 (186) hide show
  1. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  2. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  3. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  5. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/8.9/gc.properties +0 -0
  7. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  8. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  10. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/9.2.0/gc.properties +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  14. package/android/.gradle/vcs-1/gc.properties +0 -0
  15. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  16. package/android/src/main/AndroidManifest.xml +11 -0
  17. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +379 -19
  18. package/android/src/main/res/xml/inappinspector_file_paths.xml +7 -0
  19. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +47 -49
  20. package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  21. package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +76 -0
  22. package/dist/commonjs/components/Inspector/ConsoleExportModal.js +51 -51
  23. package/dist/commonjs/components/Inspector/CrashTab.js +17 -17
  24. package/dist/commonjs/components/Inspector/DebuggingTab.js +24 -24
  25. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +2 -2
  26. package/dist/commonjs/components/Inspector/FabLauncher.js +2 -2
  27. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +2 -2
  28. package/dist/commonjs/components/Inspector/InspectorHeader.js +10 -10
  29. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +10 -10
  30. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +1 -0
  31. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +222 -222
  32. package/dist/commonjs/components/Inspector/NetworkExportModal.d.ts +10 -0
  33. package/dist/commonjs/components/Inspector/NetworkExportModal.js +333 -0
  34. package/dist/commonjs/components/Inspector/NetworkTab.js +48 -41
  35. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +11 -12
  36. package/dist/commonjs/components/Inspector/ReduxDetail.js +17 -19
  37. package/dist/commonjs/components/Inspector/ReduxTab.js +5 -5
  38. package/dist/commonjs/components/Inspector/SettingsPanel.js +3 -6
  39. package/dist/commonjs/components/Inspector/SocketCard.js +2 -2
  40. package/dist/commonjs/components/Inspector/SupportPage.js +5 -5
  41. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  42. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +97 -0
  43. package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +2 -0
  44. package/dist/commonjs/components/Inspector/UiInspectorDetail.js +485 -0
  45. package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  46. package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +199 -0
  47. package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +2 -0
  48. package/dist/commonjs/components/Inspector/UiInspectorTab.js +117 -0
  49. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  50. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +148 -0
  51. package/dist/commonjs/components/Inspector/index.d.ts +28 -0
  52. package/dist/commonjs/components/Inspector/index.js +1 -0
  53. package/dist/commonjs/components/LogCard.js +9 -7
  54. package/dist/commonjs/constants/index.js +1 -1
  55. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  56. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  57. package/dist/commonjs/constants/version.d.ts +1 -1
  58. package/dist/commonjs/constants/version.js +1 -1
  59. package/dist/commonjs/customHooks/crashHandler.d.ts +1 -1
  60. package/dist/commonjs/customHooks/crashHandler.js +6 -6
  61. package/dist/commonjs/customHooks/uiInspectorManager.d.ts +22 -0
  62. package/dist/commonjs/customHooks/uiInspectorManager.js +1 -0
  63. package/dist/commonjs/helpers/index.js +1 -3
  64. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -0
  65. package/dist/commonjs/helpers/searchQueryParser.js +7 -5
  66. package/dist/commonjs/helpers/shareFormatter.d.ts +16 -0
  67. package/dist/commonjs/helpers/shareFormatter.js +16 -9
  68. package/dist/commonjs/helpers/uiInspectorEngine.d.ts +62 -0
  69. package/dist/commonjs/helpers/uiInspectorEngine.js +19 -0
  70. package/dist/commonjs/i18n/locales/ar.json +1 -1
  71. package/dist/commonjs/i18n/locales/bn.json +1 -1
  72. package/dist/commonjs/i18n/locales/de.json +1 -1
  73. package/dist/commonjs/i18n/locales/en.json +1 -1
  74. package/dist/commonjs/i18n/locales/es.json +1 -1
  75. package/dist/commonjs/i18n/locales/fr.json +1 -1
  76. package/dist/commonjs/i18n/locales/gu.json +1 -1
  77. package/dist/commonjs/i18n/locales/hi.json +1 -1
  78. package/dist/commonjs/i18n/locales/id.json +1 -1
  79. package/dist/commonjs/i18n/locales/it.json +1 -1
  80. package/dist/commonjs/i18n/locales/ja.json +1 -1
  81. package/dist/commonjs/i18n/locales/kn.json +1 -1
  82. package/dist/commonjs/i18n/locales/ko.json +1 -1
  83. package/dist/commonjs/i18n/locales/ml.json +1 -1
  84. package/dist/commonjs/i18n/locales/mr.json +1 -1
  85. package/dist/commonjs/i18n/locales/nl.json +1 -1
  86. package/dist/commonjs/i18n/locales/pa.json +1 -1
  87. package/dist/commonjs/i18n/locales/pl.json +1 -1
  88. package/dist/commonjs/i18n/locales/pt.json +1 -1
  89. package/dist/commonjs/i18n/locales/ru.json +1 -1
  90. package/dist/commonjs/i18n/locales/ta.json +1 -1
  91. package/dist/commonjs/i18n/locales/te.json +1 -1
  92. package/dist/commonjs/i18n/locales/tr.json +1 -1
  93. package/dist/commonjs/i18n/locales/vi.json +1 -1
  94. package/dist/commonjs/i18n/locales/zh.json +1 -1
  95. package/dist/commonjs/index.d.ts +3 -1
  96. package/dist/commonjs/index.js +3 -3
  97. package/dist/commonjs/native/NativeInspector.d.ts +2 -0
  98. package/dist/commonjs/native/NativeInspector.js +1 -1
  99. package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
  100. package/dist/commonjs/types/editor.d.ts +31 -0
  101. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +73 -75
  102. package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  103. package/dist/esm/components/Inspector/BoxModelVisualizer.js +76 -0
  104. package/dist/esm/components/Inspector/ConsoleExportModal.js +67 -67
  105. package/dist/esm/components/Inspector/CrashTab.js +58 -58
  106. package/dist/esm/components/Inspector/DebuggingTab.js +89 -89
  107. package/dist/esm/components/Inspector/DeviceInfoTab.js +2 -2
  108. package/dist/esm/components/Inspector/FabLauncher.js +21 -21
  109. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +23 -23
  110. package/dist/esm/components/Inspector/InspectorHeader.js +26 -26
  111. package/dist/esm/components/Inspector/MediaGalleryTab.js +151 -151
  112. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +1 -0
  113. package/dist/esm/components/Inspector/MediaPreviewModal.js +468 -468
  114. package/dist/esm/components/Inspector/NetworkExportModal.d.ts +10 -0
  115. package/dist/esm/components/Inspector/NetworkExportModal.js +333 -0
  116. package/dist/esm/components/Inspector/NetworkTab.js +118 -111
  117. package/dist/esm/components/Inspector/NpmStarPrompt.js +32 -33
  118. package/dist/esm/components/Inspector/ReduxDetail.js +54 -56
  119. package/dist/esm/components/Inspector/ReduxTab.js +9 -9
  120. package/dist/esm/components/Inspector/SettingsPanel.js +3 -6
  121. package/dist/esm/components/Inspector/SocketCard.js +13 -13
  122. package/dist/esm/components/Inspector/SupportPage.js +5 -5
  123. package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  124. package/dist/esm/components/Inspector/UiA11yAuditPanel.js +97 -0
  125. package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +2 -0
  126. package/dist/esm/components/Inspector/UiInspectorDetail.js +422 -0
  127. package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  128. package/dist/esm/components/Inspector/UiInspectorOverlay.js +138 -0
  129. package/dist/esm/components/Inspector/UiInspectorTab.d.ts +2 -0
  130. package/dist/esm/components/Inspector/UiInspectorTab.js +117 -0
  131. package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  132. package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +148 -0
  133. package/dist/esm/components/Inspector/index.d.ts +28 -0
  134. package/dist/esm/components/Inspector/index.js +1 -0
  135. package/dist/esm/components/LogCard.js +57 -55
  136. package/dist/esm/constants/index.js +1 -1
  137. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  138. package/dist/esm/constants/telemetryConfig.js +1 -1
  139. package/dist/esm/constants/version.d.ts +1 -1
  140. package/dist/esm/constants/version.js +1 -1
  141. package/dist/esm/customHooks/crashHandler.d.ts +1 -1
  142. package/dist/esm/customHooks/crashHandler.js +6 -6
  143. package/dist/esm/customHooks/uiInspectorManager.d.ts +22 -0
  144. package/dist/esm/customHooks/uiInspectorManager.js +1 -0
  145. package/dist/esm/helpers/index.js +4 -6
  146. package/dist/esm/helpers/searchQueryParser.d.ts +1 -0
  147. package/dist/esm/helpers/searchQueryParser.js +7 -5
  148. package/dist/esm/helpers/shareFormatter.d.ts +16 -0
  149. package/dist/esm/helpers/shareFormatter.js +20 -13
  150. package/dist/esm/helpers/uiInspectorEngine.d.ts +48 -0
  151. package/dist/esm/helpers/uiInspectorEngine.js +19 -0
  152. package/dist/esm/i18n/locales/ar.json +1 -1
  153. package/dist/esm/i18n/locales/bn.json +1 -1
  154. package/dist/esm/i18n/locales/de.json +1 -1
  155. package/dist/esm/i18n/locales/en.json +1 -1
  156. package/dist/esm/i18n/locales/es.json +1 -1
  157. package/dist/esm/i18n/locales/fr.json +1 -1
  158. package/dist/esm/i18n/locales/gu.json +1 -1
  159. package/dist/esm/i18n/locales/hi.json +1 -1
  160. package/dist/esm/i18n/locales/id.json +1 -1
  161. package/dist/esm/i18n/locales/it.json +1 -1
  162. package/dist/esm/i18n/locales/ja.json +1 -1
  163. package/dist/esm/i18n/locales/kn.json +1 -1
  164. package/dist/esm/i18n/locales/ko.json +1 -1
  165. package/dist/esm/i18n/locales/ml.json +1 -1
  166. package/dist/esm/i18n/locales/mr.json +1 -1
  167. package/dist/esm/i18n/locales/nl.json +1 -1
  168. package/dist/esm/i18n/locales/pa.json +1 -1
  169. package/dist/esm/i18n/locales/pl.json +1 -1
  170. package/dist/esm/i18n/locales/pt.json +1 -1
  171. package/dist/esm/i18n/locales/ru.json +1 -1
  172. package/dist/esm/i18n/locales/ta.json +1 -1
  173. package/dist/esm/i18n/locales/te.json +1 -1
  174. package/dist/esm/i18n/locales/tr.json +1 -1
  175. package/dist/esm/i18n/locales/vi.json +1 -1
  176. package/dist/esm/i18n/locales/zh.json +1 -1
  177. package/dist/esm/index.d.ts +3 -1
  178. package/dist/esm/index.js +7 -7
  179. package/dist/esm/native/NativeInspector.d.ts +2 -0
  180. package/dist/esm/native/NativeInspector.js +1 -1
  181. package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
  182. package/dist/esm/types/editor.d.ts +31 -0
  183. package/ios/NetworkInspectorModule.mm +314 -16
  184. package/package.json +1 -1
  185. package/src/native/NativeInspector.ts +37 -0
  186. package/src/native/NativeNetworkInspector.ts +2 -0
@@ -1,6 +1,6 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(a,i,n,o){o===void 0&&(o=n);var s=Object.getOwnPropertyDescriptor(i,n);(!s||("get"in s?!i.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return i[n]}}),Object.defineProperty(a,o,s)}):(function(a,i,n,o){o===void 0&&(o=n),a[o]=i[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(a,i){Object.defineProperty(a,"default",{enumerable:!0,value:i})}):function(a,i){a.default=i}),__importStar=this&&this.__importStar||(function(){var a=function(i){return a=Object.getOwnPropertyNames||function(n){var o=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[o.length]=s);return o},a(i)};return function(i){if(i&&i.__esModule)return i;var n={};if(i!=null)for(var o=a(i),s=0;s<o.length;s++)o[s]!=="default"&&__createBinding(n,i,o[s]);return __setModuleDefault(n,i),n}})(),__importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),helpers_1=require("../../helpers"),NetworkIcons_1=require("../NetworkIcons"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnalyticsFilterModal=({visible:a,onClose:i})=>{const{analyticsEvents:n,analyticsSearch:o,analyticsFilters:s,setAnalyticsFilters:v}=(0,InspectorContext_1.useInspector)(),[e,c]=(0,react_1.useState)(()=>({...s,categories:new Set(s.categories),screens:new Set(s.screens),sources:new Set(s.sources||["all"]),userTypes:new Set(s.userTypes||["all"])}));(0,react_1.useEffect)(()=>{a&&c({...s,categories:new Set(s.categories),screens:new Set(s.screens),sources:new Set(s.sources||["all"]),userTypes:new Set(s.userTypes||["all"])})},[a,s]);const y=(0,react_1.useMemo)(()=>{const t=new Set;for(const l of n){const r=l.screenName||l.params?.firebase_screen||l.params?.screen_name||l.params?.firebase_screen_class||l.screenClass;r&&typeof r=="string"&&r.trim()!==""&&t.add(r.trim())}return Array.from(t)},[n]),u=t=>{c(l=>{const r=new Set(l.categories);return t==="all"?{...l,categories:new Set(["all"])}:(r.delete("all"),r.has(t)?(r.delete(t),r.size===0&&r.add("all")):r.add(t),{...l,categories:r})})},C=t=>{c(l=>{const r=new Set(l.screens);return r.has(t)?r.delete(t):r.add(t),{...l,screens:r}})},_=t=>{c(l=>{const r=new Set(l.sources);return t==="all"?{...l,sources:new Set(["all"])}:(r.delete("all"),r.has(t)?(r.delete(t),r.size===0&&r.add("all")):r.add(t),{...l,sources:r})})},T=t=>{c(l=>{const r=new Set(l.userTypes);return t==="all"?{...l,userTypes:new Set(["all"])}:(r.delete("all"),r.has(t)?(r.delete(t),r.size===0&&r.add("all")):r.add(t),{...l,userTypes:r})})},p=t=>{c(l=>({...l,[t]:!l[t]}))},A=t=>{c(l=>({...l,timeWindow:t}))},m=t=>{c(l=>({...l,payloadComplexity:t}))},d=t=>{c(l=>({...l,sortBy:t}))},g=()=>{c({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},b=()=>{v({...e,categories:new Set(e.categories),screens:new Set(e.screens),sources:new Set(e.sources),userTypes:new Set(e.userTypes)}),i()},f=()=>{c({...s,categories:new Set(s.categories),screens:new Set(s.screens),sources:new Set(s.sources||["all"]),userTypes:new Set(s.userTypes||["all"])}),i()},S=(0,react_1.useMemo)(()=>{let t=n;if(o){const l=o.toLowerCase();t=t.filter(r=>r.name.toLowerCase().includes(l)||JSON.stringify(r.params||{}).toLowerCase().includes(l)||(r.screenName??"").toLowerCase().includes(l)||(r.pageTitle??"").toLowerCase().includes(l))}if(e.categories.size>0&&!e.categories.has("all")&&(t=t.filter(l=>{const r=(0,helpers_1.getEventCategory)(l.name);return e.categories.has(r)})),e.timeWindow!=="all"){const l=Date.now(),r=e.timeWindow==="1m"?l-60*1e3:e.timeWindow==="5m"?l-300*1e3:e.timeWindow==="15m"?l-900*1e3:l-3600*1e3;t=t.filter(P=>P.timestamp>=r)}if(e.sources.size>0&&!e.sources.has("all")&&(t=t.filter(l=>e.sources.has(l.source||"manual"))),e.userTypes.size>0&&!e.userTypes.has("all")&&(t=t.filter(l=>{const r=!!(l.userId&&l.userId.trim()!=="");return!!(e.userTypes.has("identified")&&r||e.userTypes.has("anonymous")&&!r)})),e.payloadComplexity!=="all"&&(t=t.filter(l=>{const r=l.params?Object.keys(l.params).length:0;return e.payloadComplexity==="none"?r===0:e.payloadComplexity==="simple"?r>=1&&r<=5:e.payloadComplexity==="heavy"?r>5:!0})),e.onlyConversions){const l=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout"];t=t.filter(r=>l.some(P=>r.name.toLowerCase().includes(P)))}return e.screens.size>0&&(t=t.filter(l=>{const r=l.screenName||l.params?.firebase_screen||l.params?.screen_name||l.params?.firebase_screen_class||l.screenClass||"";return e.screens.has(r)})),e.hasRevenue&&(t=t.filter(l=>{const r=l.params?.value??l.params?.price;return r!=null&&Number(r)>0})),e.hasItems&&(t=t.filter(l=>Array.isArray(l.params?.items)&&l.params.items.length>0)),e.hasUserProps&&(t=t.filter(l=>l.userProperties&&Object.keys(l.userProperties).length>0)),e.hasParams&&(t=t.filter(l=>l.params&&Object.keys(l.params).length>0)),t.length},[n,o,e]),h=e.categories.has("all")||e.categories.size===0,w=e.sources.has("all")||e.sources.size===0,x=e.userTypes.has("all")||e.userTypes.size===0;return<react_native_1.Modal visible={a}transparent animationType="fade"onRequestClose={f}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(a,i,n,o){o===void 0&&(o=n);var s=Object.getOwnPropertyDescriptor(i,n);(!s||("get"in s?!i.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return i[n]}}),Object.defineProperty(a,o,s)}):(function(a,i,n,o){o===void 0&&(o=n),a[o]=i[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(a,i){Object.defineProperty(a,"default",{enumerable:!0,value:i})}):function(a,i){a.default=i}),__importStar=this&&this.__importStar||(function(){var a=function(i){return a=Object.getOwnPropertyNames||function(n){var o=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[o.length]=s);return o},a(i)};return function(i){if(i&&i.__esModule)return i;var n={};if(i!=null)for(var o=a(i),s=0;s<o.length;s++)o[s]!=="default"&&__createBinding(n,i,o[s]);return __setModuleDefault(n,i),n}})(),__importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),i18n_1=require("../../i18n"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),helpers_1=require("../../helpers"),NetworkIcons_1=require("../NetworkIcons"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnalyticsFilterModal=({visible:a,onClose:i})=>{const{analyticsEvents:n,analyticsSearch:o,analyticsFilters:s,setAnalyticsFilters:x}=(0,InspectorContext_1.useInspector)(),[e,c]=(0,react_1.useState)(()=>({...s,categories:new Set(s.categories),screens:new Set(s.screens),sources:new Set(s.sources||["all"]),userTypes:new Set(s.userTypes||["all"])}));(0,react_1.useEffect)(()=>{a&&c({...s,categories:new Set(s.categories),screens:new Set(s.screens),sources:new Set(s.sources||["all"]),userTypes:new Set(s.userTypes||["all"])})},[a,s]);const f=(0,react_1.useMemo)(()=>{const t=new Set;for(const l of n){const r=l.screenName||l.params?.firebase_screen||l.params?.screen_name||l.params?.firebase_screen_class||l.screenClass;r&&typeof r=="string"&&r.trim()!==""&&t.add(r.trim())}return Array.from(t)},[n]),u=t=>{c(l=>{const r=new Set(l.categories);return t==="all"?{...l,categories:new Set(["all"])}:(r.delete("all"),r.has(t)?(r.delete(t),r.size===0&&r.add("all")):r.add(t),{...l,categories:r})})},m=t=>{c(l=>{const r=new Set(l.screens);return r.has(t)?r.delete(t):r.add(t),{...l,screens:r}})},_=t=>{c(l=>{const r=new Set(l.sources);return t==="all"?{...l,sources:new Set(["all"])}:(r.delete("all"),r.has(t)?(r.delete(t),r.size===0&&r.add("all")):r.add(t),{...l,sources:r})})},T=t=>{c(l=>{const r=new Set(l.userTypes);return t==="all"?{...l,userTypes:new Set(["all"])}:(r.delete("all"),r.has(t)?(r.delete(t),r.size===0&&r.add("all")):r.add(t),{...l,userTypes:r})})},p=t=>{c(l=>({...l,[t]:!l[t]}))},A=t=>{c(l=>({...l,timeWindow:t}))},C=t=>{c(l=>({...l,payloadComplexity:t}))},y=t=>{c(l=>({...l,sortBy:t}))},g=()=>{c({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},b=()=>{x({...e,categories:new Set(e.categories),screens:new Set(e.screens),sources:new Set(e.sources),userTypes:new Set(e.userTypes)}),i()},d=()=>{c({...s,categories:new Set(s.categories),screens:new Set(s.screens),sources:new Set(s.sources||["all"]),userTypes:new Set(s.userTypes||["all"])}),i()},S=(0,react_1.useMemo)(()=>{let t=n;if(o){const l=o.toLowerCase();t=t.filter(r=>r.name.toLowerCase().includes(l)||JSON.stringify(r.params||{}).toLowerCase().includes(l)||(r.screenName??"").toLowerCase().includes(l)||(r.pageTitle??"").toLowerCase().includes(l))}if(e.categories.size>0&&!e.categories.has("all")&&(t=t.filter(l=>{const r=(0,helpers_1.getEventCategory)(l.name);return e.categories.has(r)})),e.timeWindow!=="all"){const l=Date.now(),r=e.timeWindow==="1m"?l-60*1e3:e.timeWindow==="5m"?l-300*1e3:e.timeWindow==="15m"?l-900*1e3:l-3600*1e3;t=t.filter(P=>P.timestamp>=r)}if(e.sources.size>0&&!e.sources.has("all")&&(t=t.filter(l=>e.sources.has(l.source||"manual"))),e.userTypes.size>0&&!e.userTypes.has("all")&&(t=t.filter(l=>{const r=!!(l.userId&&l.userId.trim()!=="");return!!(e.userTypes.has("identified")&&r||e.userTypes.has("anonymous")&&!r)})),e.payloadComplexity!=="all"&&(t=t.filter(l=>{const r=l.params?Object.keys(l.params).length:0;return e.payloadComplexity==="none"?r===0:e.payloadComplexity==="simple"?r>=1&&r<=5:e.payloadComplexity==="heavy"?r>5:!0})),e.onlyConversions){const l=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout"];t=t.filter(r=>l.some(P=>r.name.toLowerCase().includes(P)))}return e.screens.size>0&&(t=t.filter(l=>{const r=l.screenName||l.params?.firebase_screen||l.params?.screen_name||l.params?.firebase_screen_class||l.screenClass||"";return e.screens.has(r)})),e.hasRevenue&&(t=t.filter(l=>{const r=l.params?.value??l.params?.price;return r!=null&&Number(r)>0})),e.hasItems&&(t=t.filter(l=>Array.isArray(l.params?.items)&&l.params.items.length>0)),e.hasUserProps&&(t=t.filter(l=>l.userProperties&&Object.keys(l.userProperties).length>0)),e.hasParams&&(t=t.filter(l=>l.params&&Object.keys(l.params).length>0)),t.length},[n,o,e]),h=e.categories.has("all")||e.categories.size===0,w=e.sources.has("all")||e.sources.size===0,v=e.userTypes.has("all")||e.userTypes.size===0;return<react_native_1.Modal visible={a}transparent animationType="fade"onRequestClose={d}>
2
2
  <react_native_1.View style={styles.backdrop}>
3
- <react_native_1.Pressable style={react_native_1.StyleSheet.absoluteFill}onPress={f}/>
3
+ <react_native_1.Pressable style={react_native_1.StyleSheet.absoluteFill}onPress={d}/>
4
4
 
5
5
  <react_native_1.View style={styles.modalCard}>
6
6
 
@@ -10,19 +10,19 @@
10
10
  <NetworkIcons_1.FilterIcon color={AppColors_1.AppColors.brandPurple}size={15}/>
11
11
  </react_native_1.View>
12
12
  <react_native_1.View>
13
- <react_native_1.Text style={styles.headerTitle}>Analytics Filters</react_native_1.Text>
13
+ <react_native_1.Text style={styles.headerTitle}>{(0,i18n_1.t)("analytics.filtersTitle","Analytics Filters")}</react_native_1.Text>
14
14
  <react_native_1.Text style={styles.headerSubtitle}>
15
- GA4 Telemetry Dimensions & Metrics
15
+ {(0,i18n_1.t)("analytics.filtersSubtitle","GA4 Telemetry Dimensions & Metrics")}
16
16
  </react_native_1.Text>
17
17
  </react_native_1.View>
18
18
  </react_native_1.View>
19
19
 
20
20
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:8}}>
21
21
  <react_native_1.TouchableOpacity onPress={g}hitSlop={8}style={styles.resetBtn}>
22
- <react_native_1.Text style={styles.resetBtnText}>Reset All</react_native_1.Text>
22
+ <react_native_1.Text style={styles.resetBtnText}>{(0,i18n_1.t)("common.resetAll","Reset All")}</react_native_1.Text>
23
23
  </react_native_1.TouchableOpacity>
24
24
 
25
- <react_native_1.TouchableOpacity onPress={f}hitSlop={10}style={styles.closeBtn}>
25
+ <react_native_1.TouchableOpacity onPress={d}hitSlop={10}style={styles.closeBtn}>
26
26
  <NetworkIcons_1.CloseWhite/>
27
27
  </react_native_1.TouchableOpacity>
28
28
  </react_native_1.View>
@@ -34,7 +34,7 @@
34
34
  <react_native_1.View style={styles.section}>
35
35
  <react_native_1.View style={styles.sectionHeaderRow}>
36
36
  <NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
37
- <react_native_1.Text style={styles.sectionTitle}>TIME HORIZON</react_native_1.Text>
37
+ <react_native_1.Text style={styles.sectionTitle}>{(0,i18n_1.t)("analytics.timeHorizon","TIME HORIZON")}</react_native_1.Text>
38
38
  </react_native_1.View>
39
39
  <react_native_1.View style={styles.chipsWrap}>
40
40
  {[{key:"all",label:"All Time"},{key:"1m",label:"Last 1 min"},{key:"5m",label:"Last 5 mins"},{key:"15m",label:"Last 15 mins"},{key:"1h",label:"Last 1 hour"}].map(t=><TouchableScale_1.default key={t.key}onPress={()=>A(t.key)}style={[styles.filterPill,e.timeWindow===t.key&&styles.filterPillActive]}>
@@ -49,41 +49,41 @@
49
49
  <react_native_1.View style={styles.section}>
50
50
  <react_native_1.View style={styles.sectionHeaderRow}>
51
51
  <NetworkIcons_1.TargetGoalIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
52
- <react_native_1.Text style={styles.sectionTitle}>EVENT CATEGORIES</react_native_1.Text>
52
+ <react_native_1.Text style={styles.sectionTitle}>{(0,i18n_1.t)("analytics.eventCategories","EVENT CATEGORIES")}</react_native_1.Text>
53
53
  </react_native_1.View>
54
54
  <react_native_1.View style={styles.chipsWrap}>
55
55
  <TouchableScale_1.default onPress={()=>u("all")}style={[styles.filterPill,h&&styles.filterPillActive]}>
56
56
  {h&&<NetworkIcons_1.CheckIcon color={AppColors_1.AppColors.white}size={12}/>}
57
57
  <react_native_1.Text style={[styles.filterPillText,h&&styles.filterPillTextActive]}>
58
- All Categories
58
+ {(0,i18n_1.t)("analytics.allCategories","All Categories")}
59
59
  </react_native_1.Text>
60
60
  </TouchableScale_1.default>
61
61
 
62
62
  <TouchableScale_1.default onPress={()=>u("ecommerce")}style={[styles.filterPill,e.categories.has("ecommerce")&&styles.filterPillActive]}>
63
63
  <NetworkIcons_1.CartIcon color={e.categories.has("ecommerce")?AppColors_1.AppColors.white:AppColors_1.AppColors.amber700}size={13}/>
64
64
  <react_native_1.Text style={[styles.filterPillText,e.categories.has("ecommerce")&&styles.filterPillTextActive]}>
65
- Ecommerce
65
+ {(0,i18n_1.t)("analytics.ecommerce","Ecommerce")}
66
66
  </react_native_1.Text>
67
67
  </TouchableScale_1.default>
68
68
 
69
69
  <TouchableScale_1.default onPress={()=>u("page_view")}style={[styles.filterPill,e.categories.has("page_view")&&styles.filterPillActive]}>
70
70
  <NetworkIcons_1.GlobeIcon color={e.categories.has("page_view")?AppColors_1.AppColors.white:AppColors_1.AppColors.sky600}size={13}/>
71
71
  <react_native_1.Text style={[styles.filterPillText,e.categories.has("page_view")&&styles.filterPillTextActive]}>
72
- Screens & Pages
72
+ {(0,i18n_1.t)("analytics.screensAndPages","Screens & Pages")}
73
73
  </react_native_1.Text>
74
74
  </TouchableScale_1.default>
75
75
 
76
76
  <TouchableScale_1.default onPress={()=>u("system")}style={[styles.filterPill,e.categories.has("system")&&styles.filterPillActive]}>
77
77
  <NetworkIcons_1.BoltIcon color={e.categories.has("system")?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}size={13}/>
78
78
  <react_native_1.Text style={[styles.filterPillText,e.categories.has("system")&&styles.filterPillTextActive]}>
79
- System & Lifecycle
79
+ {(0,i18n_1.t)("analytics.systemAndLifecycle","System & Lifecycle")}
80
80
  </react_native_1.Text>
81
81
  </TouchableScale_1.default>
82
82
 
83
83
  <TouchableScale_1.default onPress={()=>u("custom")}style={[styles.filterPill,e.categories.has("custom")&&styles.filterPillActive]}>
84
84
  <NetworkIcons_1.SparkleIcon color={e.categories.has("custom")?AppColors_1.AppColors.white:AppColors_1.AppColors.brandPurple}size={13}/>
85
85
  <react_native_1.Text style={[styles.filterPillText,e.categories.has("custom")&&styles.filterPillTextActive]}>
86
- Custom Events
86
+ {(0,i18n_1.t)("analytics.customEvents","Custom Events")}
87
87
  </react_native_1.Text>
88
88
  </TouchableScale_1.default>
89
89
  </react_native_1.View>
@@ -93,50 +93,48 @@
93
93
  <react_native_1.View style={styles.section}>
94
94
  <react_native_1.View style={styles.sectionHeaderRow}>
95
95
  <NetworkIcons_1.MoneyIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
96
- <react_native_1.Text style={styles.sectionTitle}>
97
- MONETIZATION & ATTRIBUTES
98
- </react_native_1.Text>
96
+ <react_native_1.Text style={styles.sectionTitle}>{(0,i18n_1.t)("analytics.monetizationAttributes","MONETIZATION & ATTRIBUTES")}</react_native_1.Text>
99
97
  </react_native_1.View>
100
98
  <react_native_1.View style={styles.chipsWrap}>
101
99
  <TouchableScale_1.default onPress={()=>p("onlyConversions")}style={[styles.filterPill,e.onlyConversions&&styles.filterPillActive]}>
102
100
  <NetworkIcons_1.TargetGoalIcon color={e.onlyConversions?AppColors_1.AppColors.white:AppColors_1.AppColors.brandPurple}size={13}/>
103
101
  <react_native_1.Text style={[styles.filterPillText,e.onlyConversions&&styles.filterPillTextActive]}>
104
- Conversion Events Only
102
+ {(0,i18n_1.t)("analytics.conversionEventsOnly","Conversion Events Only")}
105
103
  </react_native_1.Text>
106
104
  </TouchableScale_1.default>
107
105
 
108
106
  <TouchableScale_1.default onPress={()=>p("hasRevenue")}style={[styles.filterPill,e.hasRevenue&&styles.filterPillActive]}>
109
107
  <NetworkIcons_1.MoneyIcon color={e.hasRevenue?AppColors_1.AppColors.white:AppColors_1.AppColors.emerald600}size={13}/>
110
108
  <react_native_1.Text style={[styles.filterPillText,e.hasRevenue&&styles.filterPillTextActive]}>
111
- With Revenue (Value &gt; 0)
109
+ {(0,i18n_1.t)("analytics.withRevenue","With Revenue (Value > 0)")}
112
110
  </react_native_1.Text>
113
111
  </TouchableScale_1.default>
114
112
 
115
113
  <TouchableScale_1.default onPress={()=>p("hasItems")}style={[styles.filterPill,e.hasItems&&styles.filterPillActive]}>
116
114
  <NetworkIcons_1.PackageBoxIcon color={e.hasItems?AppColors_1.AppColors.white:AppColors_1.AppColors.amber700}size={13}/>
117
115
  <react_native_1.Text style={[styles.filterPillText,e.hasItems&&styles.filterPillTextActive]}>
118
- With Items Payload
116
+ {(0,i18n_1.t)("analytics.withItemsPayload","With Items Payload")}
119
117
  </react_native_1.Text>
120
118
  </TouchableScale_1.default>
121
119
 
122
120
  <TouchableScale_1.default onPress={()=>p("hasUserProps")}style={[styles.filterPill,e.hasUserProps&&styles.filterPillActive]}>
123
121
  <NetworkIcons_1.SparkleIcon color={e.hasUserProps?AppColors_1.AppColors.white:AppColors_1.AppColors.brandPurple}size={13}/>
124
122
  <react_native_1.Text style={[styles.filterPillText,e.hasUserProps&&styles.filterPillTextActive]}>
125
- With User Properties
123
+ {(0,i18n_1.t)("analytics.withUserProperties","With User Properties")}
126
124
  </react_native_1.Text>
127
125
  </TouchableScale_1.default>
128
126
 
129
127
  <TouchableScale_1.default onPress={()=>p("hasParams")}style={[styles.filterPill,e.hasParams&&styles.filterPillActive]}>
130
128
  <NetworkIcons_1.CodeBracketsIcon color={e.hasParams?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={13}/>
131
129
  <react_native_1.Text style={[styles.filterPillText,e.hasParams&&styles.filterPillTextActive]}>
132
- With Custom Params
130
+ {(0,i18n_1.t)("analytics.withCustomParams","With Custom Params")}
133
131
  </react_native_1.Text>
134
132
  </TouchableScale_1.default>
135
133
 
136
134
  <TouchableScale_1.default onPress={()=>p("onlyDuplicates")}style={[styles.filterPill,e.onlyDuplicates&&styles.filterPillActive]}>
137
135
  <NetworkIcons_1.RepeatIcon color={e.onlyDuplicates?AppColors_1.AppColors.white:AppColors_1.AppColors.rose600}size={13}/>
138
136
  <react_native_1.Text style={[styles.filterPillText,e.onlyDuplicates&&styles.filterPillTextActive]}>
139
- Frequent Only (&gt; 1×)
137
+ {(0,i18n_1.t)("analytics.frequentOnly","Frequent Only (> 1\xD7)")}
140
138
  </react_native_1.Text>
141
139
  </TouchableScale_1.default>
142
140
  </react_native_1.View>
@@ -146,27 +144,27 @@
146
144
  <react_native_1.View style={styles.section}>
147
145
  <react_native_1.View style={styles.sectionHeaderRow}>
148
146
  <NetworkIcons_1.UserIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
149
- <react_native_1.Text style={styles.sectionTitle}>USER IDENTIFICATION</react_native_1.Text>
147
+ <react_native_1.Text style={styles.sectionTitle}>{(0,i18n_1.t)("analytics.userIdentification","USER IDENTIFICATION")}</react_native_1.Text>
150
148
  </react_native_1.View>
151
149
  <react_native_1.View style={styles.chipsWrap}>
152
- <TouchableScale_1.default onPress={()=>T("all")}style={[styles.filterPill,x&&styles.filterPillActive]}>
153
- {x&&<NetworkIcons_1.CheckIcon color={AppColors_1.AppColors.white}size={12}/>}
154
- <react_native_1.Text style={[styles.filterPillText,x&&styles.filterPillTextActive]}>
155
- All Users
150
+ <TouchableScale_1.default onPress={()=>T("all")}style={[styles.filterPill,v&&styles.filterPillActive]}>
151
+ {v&&<NetworkIcons_1.CheckIcon color={AppColors_1.AppColors.white}size={12}/>}
152
+ <react_native_1.Text style={[styles.filterPillText,v&&styles.filterPillTextActive]}>
153
+ {(0,i18n_1.t)("analytics.allUsers","All Users")}
156
154
  </react_native_1.Text>
157
155
  </TouchableScale_1.default>
158
156
 
159
157
  <TouchableScale_1.default onPress={()=>T("identified")}style={[styles.filterPill,e.userTypes.has("identified")&&styles.filterPillActive]}>
160
158
  <NetworkIcons_1.UserCheckIcon color={e.userTypes.has("identified")?AppColors_1.AppColors.white:AppColors_1.AppColors.greenColor}size={13}/>
161
159
  <react_native_1.Text style={[styles.filterPillText,e.userTypes.has("identified")&&styles.filterPillTextActive]}>
162
- Identified (User ID)
160
+ {(0,i18n_1.t)("analytics.identifiedUser","Identified (User ID)")}
163
161
  </react_native_1.Text>
164
162
  </TouchableScale_1.default>
165
163
 
166
164
  <TouchableScale_1.default onPress={()=>T("anonymous")}style={[styles.filterPill,e.userTypes.has("anonymous")&&styles.filterPillActive]}>
167
165
  <NetworkIcons_1.UserIcon color={e.userTypes.has("anonymous")?AppColors_1.AppColors.white:AppColors_1.AppColors.grayTextWeak}size={13}/>
168
166
  <react_native_1.Text style={[styles.filterPillText,e.userTypes.has("anonymous")&&styles.filterPillTextActive]}>
169
- Anonymous
167
+ {(0,i18n_1.t)("analytics.anonymousUser","Anonymous")}
170
168
  </react_native_1.Text>
171
169
  </TouchableScale_1.default>
172
170
  </react_native_1.View>
@@ -176,25 +174,25 @@
176
174
  <react_native_1.View style={styles.section}>
177
175
  <react_native_1.View style={styles.sectionHeaderRow}>
178
176
  <NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
179
- <react_native_1.Text style={styles.sectionTitle}>EVENT SOURCE</react_native_1.Text>
177
+ <react_native_1.Text style={styles.sectionTitle}>{(0,i18n_1.t)("analytics.eventSource","EVENT SOURCE")}</react_native_1.Text>
180
178
  </react_native_1.View>
181
179
  <react_native_1.View style={styles.chipsWrap}>
182
180
  <TouchableScale_1.default onPress={()=>_("all")}style={[styles.filterPill,w&&styles.filterPillActive]}>
183
181
  {w&&<NetworkIcons_1.CheckIcon color={AppColors_1.AppColors.white}size={12}/>}
184
182
  <react_native_1.Text style={[styles.filterPillText,w&&styles.filterPillTextActive]}>
185
- All Sources
183
+ {(0,i18n_1.t)("analytics.allSources","All Sources")}
186
184
  </react_native_1.Text>
187
185
  </TouchableScale_1.default>
188
186
 
189
187
  <TouchableScale_1.default onPress={()=>_("firebase")}style={[styles.filterPill,e.sources.has("firebase")&&styles.filterPillActive]}>
190
188
  <react_native_1.Text style={[styles.filterPillText,e.sources.has("firebase")&&styles.filterPillTextActive]}>
191
- Firebase / GA SDK
189
+ {(0,i18n_1.t)("analytics.firebaseGaSdk","Firebase / GA SDK")}
192
190
  </react_native_1.Text>
193
191
  </TouchableScale_1.default>
194
192
 
195
193
  <TouchableScale_1.default onPress={()=>_("manual")}style={[styles.filterPill,e.sources.has("manual")&&styles.filterPillActive]}>
196
194
  <react_native_1.Text style={[styles.filterPillText,e.sources.has("manual")&&styles.filterPillTextActive]}>
197
- In-App Logger
195
+ {(0,i18n_1.t)("analytics.inAppLogger","In-App Logger")}
198
196
  </react_native_1.Text>
199
197
  </TouchableScale_1.default>
200
198
  </react_native_1.View>
@@ -204,10 +202,10 @@
204
202
  <react_native_1.View style={styles.section}>
205
203
  <react_native_1.View style={styles.sectionHeaderRow}>
206
204
  <NetworkIcons_1.CodeBracketsIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
207
- <react_native_1.Text style={styles.sectionTitle}>PAYLOAD COMPLEXITY</react_native_1.Text>
205
+ <react_native_1.Text style={styles.sectionTitle}>{(0,i18n_1.t)("analytics.payloadComplexity","PAYLOAD COMPLEXITY")}</react_native_1.Text>
208
206
  </react_native_1.View>
209
207
  <react_native_1.View style={styles.chipsWrap}>
210
- {[{key:"all",label:"All Payloads"},{key:"none",label:"0 Params"},{key:"simple",label:"1 - 5 Params"},{key:"heavy",label:"> 5 Params"}].map(t=><TouchableScale_1.default key={t.key}onPress={()=>m(t.key)}style={[styles.filterPill,e.payloadComplexity===t.key&&styles.filterPillActive]}>
208
+ {[{key:"all",label:"All Payloads"},{key:"none",label:"0 Params"},{key:"simple",label:"1 - 5 Params"},{key:"heavy",label:"> 5 Params"}].map(t=><TouchableScale_1.default key={t.key}onPress={()=>C(t.key)}style={[styles.filterPill,e.payloadComplexity===t.key&&styles.filterPillActive]}>
211
209
  <react_native_1.Text style={[styles.filterPillText,e.payloadComplexity===t.key&&styles.filterPillTextActive]}>
212
210
  {t.label}
213
211
  </react_native_1.Text>
@@ -216,15 +214,15 @@
216
214
  </react_native_1.View>
217
215
 
218
216
 
219
- {y.length>0&&<react_native_1.View style={styles.section}>
217
+ {f.length>0&&<react_native_1.View style={styles.section}>
220
218
  <react_native_1.View style={styles.sectionHeaderRow}>
221
219
  <NetworkIcons_1.PinIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
222
220
  <react_native_1.Text style={styles.sectionTitle}>
223
- DISCOVERED SCREENS ({y.length})
221
+ DISCOVERED SCREENS ({f.length})
224
222
  </react_native_1.Text>
225
223
  </react_native_1.View>
226
224
  <react_native_1.View style={styles.chipsWrap}>
227
- {y.map(t=>{const l=e.screens.has(t);return<TouchableScale_1.default key={t}onPress={()=>C(t)}style={[styles.filterPill,l&&styles.filterPillActive]}>
225
+ {f.map(t=>{const l=e.screens.has(t);return<TouchableScale_1.default key={t}onPress={()=>m(t)}style={[styles.filterPill,l&&styles.filterPillActive]}>
228
226
  <NetworkIcons_1.PinIcon color={l?AppColors_1.AppColors.white:AppColors_1.AppColors.amber700}size={12}/>
229
227
  <react_native_1.Text style={[styles.filterPillText,l&&styles.filterPillTextActive]}>
230
228
  {t}
@@ -237,34 +235,34 @@
237
235
  <react_native_1.View style={styles.section}>
238
236
  <react_native_1.View style={styles.sectionHeaderRow}>
239
237
  <NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
240
- <react_native_1.Text style={styles.sectionTitle}>SORT ORDER</react_native_1.Text>
238
+ <react_native_1.Text style={styles.sectionTitle}>{(0,i18n_1.t)("analytics.sortOrder","SORT ORDER")}</react_native_1.Text>
241
239
  </react_native_1.View>
242
240
  <react_native_1.View style={styles.chipsWrap}>
243
- <TouchableScale_1.default onPress={()=>d("time_desc")}style={[styles.filterPill,e.sortBy==="time_desc"&&styles.filterPillActive]}>
241
+ <TouchableScale_1.default onPress={()=>y("time_desc")}style={[styles.filterPill,e.sortBy==="time_desc"&&styles.filterPillActive]}>
244
242
  <NetworkIcons_1.ClockIcon color={e.sortBy==="time_desc"?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>
245
243
  <react_native_1.Text style={[styles.filterPillText,e.sortBy==="time_desc"&&styles.filterPillTextActive]}>
246
- Newest First (Default)
244
+ {(0,i18n_1.t)("analytics.newestFirstDefault","Newest First (Default)")}
247
245
  </react_native_1.Text>
248
246
  </TouchableScale_1.default>
249
247
 
250
- <TouchableScale_1.default onPress={()=>d("time_asc")}style={[styles.filterPill,e.sortBy==="time_asc"&&styles.filterPillActive]}>
248
+ <TouchableScale_1.default onPress={()=>y("time_asc")}style={[styles.filterPill,e.sortBy==="time_asc"&&styles.filterPillActive]}>
251
249
  <NetworkIcons_1.HourglassIcon color={e.sortBy==="time_asc"?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>
252
250
  <react_native_1.Text style={[styles.filterPillText,e.sortBy==="time_asc"&&styles.filterPillTextActive]}>
253
- Oldest First
251
+ {(0,i18n_1.t)("analytics.oldestFirst","Oldest First")}
254
252
  </react_native_1.Text>
255
253
  </TouchableScale_1.default>
256
254
 
257
- <TouchableScale_1.default onPress={()=>d("revenue_desc")}style={[styles.filterPill,e.sortBy==="revenue_desc"&&styles.filterPillActive]}>
255
+ <TouchableScale_1.default onPress={()=>y("revenue_desc")}style={[styles.filterPill,e.sortBy==="revenue_desc"&&styles.filterPillActive]}>
258
256
  <NetworkIcons_1.MoneyIcon color={e.sortBy==="revenue_desc"?AppColors_1.AppColors.white:AppColors_1.AppColors.emerald600}size={12}/>
259
257
  <react_native_1.Text style={[styles.filterPillText,e.sortBy==="revenue_desc"&&styles.filterPillTextActive]}>
260
- Highest Revenue
258
+ {(0,i18n_1.t)("analytics.highestRevenue","Highest Revenue")}
261
259
  </react_native_1.Text>
262
260
  </TouchableScale_1.default>
263
261
 
264
- <TouchableScale_1.default onPress={()=>d("count_desc")}style={[styles.filterPill,e.sortBy==="count_desc"&&styles.filterPillActive]}>
262
+ <TouchableScale_1.default onPress={()=>y("count_desc")}style={[styles.filterPill,e.sortBy==="count_desc"&&styles.filterPillActive]}>
265
263
  <NetworkIcons_1.FlameIcon color={e.sortBy==="count_desc"?AppColors_1.AppColors.white:AppColors_1.AppColors.darkOrange}size={12}/>
266
264
  <react_native_1.Text style={[styles.filterPillText,e.sortBy==="count_desc"&&styles.filterPillTextActive]}>
267
- Most Frequent
265
+ {(0,i18n_1.t)("analytics.mostFrequent","Most Frequent")}
268
266
  </react_native_1.Text>
269
267
  </TouchableScale_1.default>
270
268
  </react_native_1.View>
@@ -273,8 +271,8 @@
273
271
 
274
272
 
275
273
  <react_native_1.View style={styles.footer}>
276
- <react_native_1.TouchableOpacity onPress={f}style={styles.discardBtn}activeOpacity={.8}>
277
- <react_native_1.Text style={styles.discardBtnText}>Discard</react_native_1.Text>
274
+ <react_native_1.TouchableOpacity onPress={d}style={styles.discardBtn}activeOpacity={.8}>
275
+ <react_native_1.Text style={styles.discardBtnText}>{(0,i18n_1.t)("common.discard","Discard")}</react_native_1.Text>
278
276
  </react_native_1.TouchableOpacity>
279
277
 
280
278
  <react_native_1.TouchableOpacity onPress={b}style={styles.applyBtn}activeOpacity={.85}>
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { BoxModelMetrics } from '../../types';
3
+ interface BoxModelVisualizerProps {
4
+ boxModel: BoxModelMetrics;
5
+ compact?: boolean;
6
+ }
7
+ export declare const BoxModelVisualizer: React.FC<BoxModelVisualizerProps>;
8
+ export {};
@@ -0,0 +1,76 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BoxModelVisualizer=void 0;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),BoxModelVisualizer=({boxModel:e,compact:a=!1})=>{const{margin:t,border:o,padding:i,content:r}=e;return<react_native_1.View style={visualizerStyles.container}>
2
+
3
+ <react_native_1.View style={visualizerStyles.marginBox}>
4
+ <react_native_1.View style={visualizerStyles.labelRow}>
5
+ <react_native_1.Text style={visualizerStyles.boxLabelMargin}>MARGIN</react_native_1.Text>
6
+ </react_native_1.View>
7
+ <react_native_1.Text style={visualizerStyles.valueTop}>{t.top}</react_native_1.Text>
8
+
9
+ <react_native_1.View style={visualizerStyles.middleRow}>
10
+ <react_native_1.Text style={visualizerStyles.valueLeft}>{t.left}</react_native_1.Text>
11
+
12
+
13
+ <react_native_1.View style={visualizerStyles.borderBox}>
14
+ <react_native_1.View style={visualizerStyles.labelRow}>
15
+ <react_native_1.Text style={visualizerStyles.boxLabelBorder}>BORDER</react_native_1.Text>
16
+ </react_native_1.View>
17
+ <react_native_1.Text style={visualizerStyles.valueTop}>{o.top}</react_native_1.Text>
18
+
19
+ <react_native_1.View style={visualizerStyles.middleRow}>
20
+ <react_native_1.Text style={visualizerStyles.valueLeft}>{o.left}</react_native_1.Text>
21
+
22
+
23
+ <react_native_1.View style={visualizerStyles.paddingBox}>
24
+ <react_native_1.View style={visualizerStyles.labelRow}>
25
+ <react_native_1.Text style={visualizerStyles.boxLabelPadding}>PADDING</react_native_1.Text>
26
+ </react_native_1.View>
27
+ <react_native_1.Text style={visualizerStyles.valueTop}>{i.top}</react_native_1.Text>
28
+
29
+ <react_native_1.View style={visualizerStyles.middleRow}>
30
+ <react_native_1.Text style={visualizerStyles.valueLeft}>{i.left}</react_native_1.Text>
31
+
32
+
33
+ <react_native_1.View style={visualizerStyles.contentBox}>
34
+ <react_native_1.Text style={visualizerStyles.contentDimensions}>
35
+ {r.width} × {r.height}
36
+ </react_native_1.Text>
37
+ </react_native_1.View>
38
+
39
+ <react_native_1.Text style={visualizerStyles.valueRight}>{i.right}</react_native_1.Text>
40
+ </react_native_1.View>
41
+
42
+ <react_native_1.Text style={visualizerStyles.valueBottom}>{i.bottom}</react_native_1.Text>
43
+ </react_native_1.View>
44
+
45
+ <react_native_1.Text style={visualizerStyles.valueRight}>{o.right}</react_native_1.Text>
46
+ </react_native_1.View>
47
+
48
+ <react_native_1.Text style={visualizerStyles.valueBottom}>{o.bottom}</react_native_1.Text>
49
+ </react_native_1.View>
50
+
51
+ <react_native_1.Text style={visualizerStyles.valueRight}>{t.right}</react_native_1.Text>
52
+ </react_native_1.View>
53
+
54
+ <react_native_1.Text style={visualizerStyles.valueBottom}>{t.bottom}</react_native_1.Text>
55
+ </react_native_1.View>
56
+
57
+
58
+ {!a&&<react_native_1.View style={visualizerStyles.legendContainer}>
59
+ <react_native_1.View style={visualizerStyles.legendItem}>
60
+ <react_native_1.View style={[visualizerStyles.legendSwatch,{backgroundColor:"#F59E0B2B",borderColor:"#F59E0B"}]}/>
61
+ <react_native_1.Text style={visualizerStyles.legendText}>Margin</react_native_1.Text>
62
+ </react_native_1.View>
63
+ <react_native_1.View style={visualizerStyles.legendItem}>
64
+ <react_native_1.View style={[visualizerStyles.legendSwatch,{backgroundColor:"#FDE0473D",borderColor:"#EAB308"}]}/>
65
+ <react_native_1.Text style={visualizerStyles.legendText}>Border</react_native_1.Text>
66
+ </react_native_1.View>
67
+ <react_native_1.View style={visualizerStyles.legendItem}>
68
+ <react_native_1.View style={[visualizerStyles.legendSwatch,{backgroundColor:"#10B9812B",borderColor:"#10B981"}]}/>
69
+ <react_native_1.Text style={visualizerStyles.legendText}>Padding</react_native_1.Text>
70
+ </react_native_1.View>
71
+ <react_native_1.View style={visualizerStyles.legendItem}>
72
+ <react_native_1.View style={[visualizerStyles.legendSwatch,{backgroundColor:"#4F46E52B",borderColor:"#4F46E5"}]}/>
73
+ <react_native_1.Text style={visualizerStyles.legendText}>Content</react_native_1.Text>
74
+ </react_native_1.View>
75
+ </react_native_1.View>}
76
+ </react_native_1.View>};exports.BoxModelVisualizer=BoxModelVisualizer;const visualizerStyles=react_native_1.StyleSheet.create({container:{alignItems:"center",marginVertical:8},marginBox:{width:"100%",backgroundColor:"#F59E0B1A",borderWidth:1,borderColor:"#F59E0B66",borderRadius:8,padding:6,alignItems:"center"},borderBox:{flex:1,backgroundColor:"#FDE04724",borderWidth:1,borderColor:"#EAB30877",borderRadius:6,padding:6,alignItems:"center",marginHorizontal:4},paddingBox:{flex:1,backgroundColor:"#10B9811A",borderWidth:1,borderColor:"#10B98166",borderRadius:4,padding:6,alignItems:"center",marginHorizontal:4},contentBox:{flex:1,backgroundColor:"#4F46E524",borderWidth:1,borderColor:"#4F46E577",borderRadius:3,paddingVertical:12,paddingHorizontal:8,alignItems:"center",justifyContent:"center",marginHorizontal:4,minHeight:40},labelRow:{position:"absolute",top:3,left:6},boxLabelMargin:{fontSize:9,fontFamily:AppFonts_1.AppFonts.medium,color:"#D97706",letterSpacing:.5},boxLabelBorder:{fontSize:9,fontFamily:AppFonts_1.AppFonts.medium,color:"#CA8A04",letterSpacing:.5},boxLabelPadding:{fontSize:9,fontFamily:AppFonts_1.AppFonts.medium,color:"#059669",letterSpacing:.5},middleRow:{flexDirection:"row",alignItems:"center",width:"100%",marginVertical:2},valueTop:{fontSize:11,fontFamily:AppFonts_1.AppFonts.semiBold,color:AppColors_1.AppColors.grayText,marginBottom:2},valueBottom:{fontSize:11,fontFamily:AppFonts_1.AppFonts.semiBold,color:AppColors_1.AppColors.grayText,marginTop:2},valueLeft:{fontSize:11,fontFamily:AppFonts_1.AppFonts.semiBold,color:AppColors_1.AppColors.grayText,marginRight:2},valueRight:{fontSize:11,fontFamily:AppFonts_1.AppFonts.semiBold,color:AppColors_1.AppColors.grayText,marginLeft:2},contentDimensions:{fontSize:12,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple},legendContainer:{flexDirection:"row",justifyContent:"center",gap:16,marginTop:12},legendItem:{flexDirection:"row",alignItems:"center",gap:6},legendSwatch:{width:12,height:12,borderRadius:3,borderWidth:1},legendText:{fontSize:11,fontFamily:AppFonts_1.AppFonts.medium,color:AppColors_1.AppColors.grayTextWeak}});