@iternio/react-native-auto-play 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +59 -10
  2. package/android/src/automotive/AndroidManifest-nonnav.xml +0 -2
  3. package/android/src/automotive/AndroidManifest.xml +0 -2
  4. package/android/src/main/AndroidManifest-nonnav.xml +0 -2
  5. package/android/src/main/AndroidManifest.xml +0 -2
  6. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoService.kt +3 -27
  7. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAutoPlayTiming.kt +122 -0
  8. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/Parser.kt +49 -14
  9. package/installTimers.ts +3 -0
  10. package/installTimers.web.ts +2 -0
  11. package/ios/hybrid/HybridAutoPlayTiming.swift +123 -0
  12. package/jest.js +2 -0
  13. package/lib/components/SafeAreaView.js +1 -1
  14. package/lib/hybrid/HybridAutoPlayTiming.d.ts +2 -0
  15. package/lib/hybrid/HybridAutoPlayTiming.js +2 -0
  16. package/lib/hybrid/HybridVoice.js +2 -2
  17. package/lib/index.js +0 -2
  18. package/lib/index.web.d.ts +75 -0
  19. package/lib/index.web.js +72 -1
  20. package/lib/installTimers.d.ts +1 -0
  21. package/lib/installTimers.js +8 -0
  22. package/lib/installTimers.web.d.ts +1 -0
  23. package/lib/installTimers.web.js +2 -0
  24. package/lib/scenes/CarPlayDashboardScene.d.ts +3 -3
  25. package/lib/specs/AutoPlayTiming.nitro.d.ts +27 -0
  26. package/lib/specs/AutoPlayTiming.nitro.js +1 -0
  27. package/lib/types/Image.d.ts +6 -1
  28. package/lib/types/Telemetry.d.ts +1 -1
  29. package/lib/utils/AutoPlayTimers.d.ts +21 -0
  30. package/lib/utils/AutoPlayTimers.js +45 -0
  31. package/lib/utils/NitroColor.d.ts +1 -0
  32. package/lib/utils/NitroColor.js +8 -0
  33. package/lib/utils/NitroImage.d.ts +5 -2
  34. package/lib/utils/NitroImage.js +2 -2
  35. package/lib/utils/NitroManeuver.js +1 -3
  36. package/lib-cjs/Constants.js +9 -0
  37. package/lib-cjs/components/MapTemplateContext.js +10 -0
  38. package/lib-cjs/components/SafeAreaInsetsContext.js +21 -0
  39. package/lib-cjs/components/SafeAreaView.js +22 -0
  40. package/lib-cjs/components/WindowInformationWrapper.js +20 -0
  41. package/lib-cjs/hooks/useAndroidAutoTelemetry.js +115 -0
  42. package/lib-cjs/hooks/useFocusedEffect.js +35 -0
  43. package/lib-cjs/hooks/useMapTemplate.js +13 -0
  44. package/lib-cjs/hooks/useSafeAreaInsets.js +9 -0
  45. package/lib-cjs/hooks/useVoiceInput.js +42 -0
  46. package/lib-cjs/hybrid/HybridAndroidAutoTelemetry.js +4 -0
  47. package/lib-cjs/hybrid/HybridAndroidWindowInformation.js +4 -0
  48. package/lib-cjs/hybrid/HybridAutoPlay.js +5 -0
  49. package/lib-cjs/hybrid/HybridVoice.js +61 -0
  50. package/lib-cjs/index.js +71 -0
  51. package/lib-cjs/index.web.js +98 -0
  52. package/lib-cjs/scenes/AutoPlayCluster.js +140 -0
  53. package/lib-cjs/scenes/CarPlayDashboardScene.js +100 -0
  54. package/lib-cjs/specs/AndroidAutoTelemetry.nitro.js +2 -0
  55. package/lib-cjs/specs/AndroidAutomotive.nitro.js +16 -0
  56. package/lib-cjs/specs/AndroidWindowInformation.nitro.js +2 -0
  57. package/lib-cjs/specs/AutoPlay.nitro.js +2 -0
  58. package/lib-cjs/specs/CarPlayDashboard.nitro.js +2 -0
  59. package/lib-cjs/specs/Cluster.nitro.js +2 -0
  60. package/lib-cjs/specs/GridTemplate.nitro.js +2 -0
  61. package/lib-cjs/specs/InformationTemplate.nitro.js +2 -0
  62. package/lib-cjs/specs/ListTemplate.nitro.js +2 -0
  63. package/lib-cjs/specs/MapTemplate.nitro.js +2 -0
  64. package/lib-cjs/specs/MessageTemplate.nitro.js +2 -0
  65. package/lib-cjs/specs/SearchTemplate.nitro.js +2 -0
  66. package/lib-cjs/specs/SignInTemplate.nitro.js +2 -0
  67. package/lib-cjs/specs/Voice.nitro.js +2 -0
  68. package/lib-cjs/templates/GridTemplate.js +41 -0
  69. package/lib-cjs/templates/InformationTemplate.js +49 -0
  70. package/lib-cjs/templates/ListTemplate.js +33 -0
  71. package/lib-cjs/templates/MapTemplate.js +168 -0
  72. package/lib-cjs/templates/MessageTemplate.js +50 -0
  73. package/lib-cjs/templates/SearchTemplate.js +32 -0
  74. package/lib-cjs/templates/SignInTemplate.js +55 -0
  75. package/lib-cjs/templates/Template.js +40 -0
  76. package/lib-cjs/types/Button.js +12 -0
  77. package/lib-cjs/types/Event.js +2 -0
  78. package/lib-cjs/types/Image.js +2 -0
  79. package/lib-cjs/types/Maneuver.js +77 -0
  80. package/lib-cjs/types/RootComponent.js +2 -0
  81. package/lib-cjs/types/SignInMethod.js +22 -0
  82. package/lib-cjs/types/Telemetry.js +24 -0
  83. package/lib-cjs/types/Text.js +8 -0
  84. package/lib-cjs/types/Trip.js +2 -0
  85. package/lib-cjs/types/Voice.js +2 -0
  86. package/lib-cjs/utils/ErrorUtil.js +34 -0
  87. package/lib-cjs/utils/NitroAction.js +129 -0
  88. package/lib-cjs/utils/NitroAlert.js +19 -0
  89. package/lib-cjs/utils/NitroAttributedString.js +14 -0
  90. package/lib-cjs/utils/NitroColor.js +32 -0
  91. package/lib-cjs/utils/NitroGrid.js +12 -0
  92. package/lib-cjs/utils/NitroImage.js +97 -0
  93. package/lib-cjs/utils/NitroManeuver.js +79 -0
  94. package/lib-cjs/utils/NitroMapButton.js +33 -0
  95. package/lib-cjs/utils/NitroOptionsPanel.js +66 -0
  96. package/lib-cjs/utils/NitroSection.js +112 -0
  97. package/nitro.json +10 -0
  98. package/nitrogen/generated/android/ReactNativeAutoPlay+autolinking.cmake +2 -0
  99. package/nitrogen/generated/android/ReactNativeAutoPlayOnLoad.cpp +16 -0
  100. package/nitrogen/generated/android/c++/JActiveCarUxRestrictions.hpp +1 -1
  101. package/nitrogen/generated/android/c++/JAlertActionStyle.hpp +1 -1
  102. package/nitrogen/generated/android/c++/JAlertDismissalReason.hpp +1 -1
  103. package/nitrogen/generated/android/c++/JAppFocusState.hpp +1 -1
  104. package/nitrogen/generated/android/c++/JAssetImage.hpp +18 -18
  105. package/nitrogen/generated/android/c++/JAutoText.hpp +1 -1
  106. package/nitrogen/generated/android/c++/JBooleanTelemetryItem.hpp +1 -1
  107. package/nitrogen/generated/android/c++/JCarUxRestrictions.hpp +1 -1
  108. package/nitrogen/generated/android/c++/JChargingConnector.hpp +1 -1
  109. package/nitrogen/generated/android/c++/JClusterEventName.hpp +1 -1
  110. package/nitrogen/generated/android/c++/JColorScheme.hpp +1 -1
  111. package/nitrogen/generated/android/c++/JDistance.hpp +1 -1
  112. package/nitrogen/generated/android/c++/JDistanceUnits.hpp +1 -1
  113. package/nitrogen/generated/android/c++/JDurationWithTimeZone.hpp +1 -1
  114. package/nitrogen/generated/android/c++/JEventName.hpp +1 -1
  115. package/nitrogen/generated/android/c++/JForkType.hpp +1 -1
  116. package/nitrogen/generated/android/c++/JGlyphImage.hpp +1 -1
  117. package/nitrogen/generated/android/c++/JGoogleSignIn.hpp +1 -1
  118. package/nitrogen/generated/android/c++/JGoogleSignInAccount.hpp +1 -1
  119. package/nitrogen/generated/android/c++/JGridImageSize.hpp +1 -1
  120. package/nitrogen/generated/android/c++/JGridTemplateConfig.hpp +1 -1
  121. package/nitrogen/generated/android/c++/JHybridAutoPlayTimingSpec.cpp +59 -0
  122. package/nitrogen/generated/android/c++/JHybridAutoPlayTimingSpec.hpp +64 -0
  123. package/nitrogen/generated/android/c++/JImageLane.hpp +1 -1
  124. package/nitrogen/generated/android/c++/JInformationTemplateConfig.hpp +1 -1
  125. package/nitrogen/generated/android/c++/JInputSignIn.hpp +1 -1
  126. package/nitrogen/generated/android/c++/JKeepType.hpp +1 -1
  127. package/nitrogen/generated/android/c++/JKeyboardType.hpp +1 -1
  128. package/nitrogen/generated/android/c++/JLaneGuidance.hpp +1 -1
  129. package/nitrogen/generated/android/c++/JListImageType.hpp +1 -1
  130. package/nitrogen/generated/android/c++/JListTemplateConfig.hpp +1 -1
  131. package/nitrogen/generated/android/c++/JLocation.hpp +1 -1
  132. package/nitrogen/generated/android/c++/JManeuverState.hpp +1 -1
  133. package/nitrogen/generated/android/c++/JManeuverType.hpp +1 -1
  134. package/nitrogen/generated/android/c++/JMapTemplateConfig.hpp +1 -1
  135. package/nitrogen/generated/android/c++/JMessageTemplateConfig.hpp +1 -1
  136. package/nitrogen/generated/android/c++/JNavigationAlertAction.hpp +1 -1
  137. package/nitrogen/generated/android/c++/JNitroAction.hpp +1 -1
  138. package/nitrogen/generated/android/c++/JNitroActionType.hpp +1 -1
  139. package/nitrogen/generated/android/c++/JNitroAlignment.hpp +1 -1
  140. package/nitrogen/generated/android/c++/JNitroAttributedString.hpp +1 -1
  141. package/nitrogen/generated/android/c++/JNitroAttributedStringImage.hpp +1 -1
  142. package/nitrogen/generated/android/c++/JNitroBaseMapTemplateConfig.hpp +1 -1
  143. package/nitrogen/generated/android/c++/JNitroButtonStyle.hpp +1 -1
  144. package/nitrogen/generated/android/c++/JNitroChargerLocation.hpp +1 -1
  145. package/nitrogen/generated/android/c++/JNitroChargerOutlet.hpp +1 -1
  146. package/nitrogen/generated/android/c++/JNitroColor.hpp +9 -5
  147. package/nitrogen/generated/android/c++/JNitroGridButton.hpp +1 -1
  148. package/nitrogen/generated/android/c++/JNitroLoadingManeuver.hpp +1 -1
  149. package/nitrogen/generated/android/c++/JNitroMapButton.hpp +1 -1
  150. package/nitrogen/generated/android/c++/JNitroMapButtonType.hpp +1 -1
  151. package/nitrogen/generated/android/c++/JNitroMessageManeuver.hpp +1 -1
  152. package/nitrogen/generated/android/c++/JNitroNavigationAlert.hpp +1 -1
  153. package/nitrogen/generated/android/c++/JNitroOptionsPanelChargerSection.hpp +1 -1
  154. package/nitrogen/generated/android/c++/JNitroOptionsPanelConfig.hpp +1 -1
  155. package/nitrogen/generated/android/c++/JNitroOptionsPanelGridSection.hpp +1 -1
  156. package/nitrogen/generated/android/c++/JNitroRoutingManeuver.hpp +1 -1
  157. package/nitrogen/generated/android/c++/JNitroRow.hpp +1 -1
  158. package/nitrogen/generated/android/c++/JNitroSection.hpp +1 -1
  159. package/nitrogen/generated/android/c++/JNitroSectionType.hpp +1 -1
  160. package/nitrogen/generated/android/c++/JNumericTelemetryItem.hpp +1 -1
  161. package/nitrogen/generated/android/c++/JOffRampType.hpp +1 -1
  162. package/nitrogen/generated/android/c++/JOnRampType.hpp +1 -1
  163. package/nitrogen/generated/android/c++/JPermissionRequestResult.hpp +1 -1
  164. package/nitrogen/generated/android/c++/JPinSignIn.hpp +1 -1
  165. package/nitrogen/generated/android/c++/JPoint.hpp +1 -1
  166. package/nitrogen/generated/android/c++/JPreferredImageLane.hpp +1 -1
  167. package/nitrogen/generated/android/c++/JQrSignIn.hpp +1 -1
  168. package/nitrogen/generated/android/c++/JRemoteImage.hpp +1 -1
  169. package/nitrogen/generated/android/c++/JRouteChoice.hpp +1 -1
  170. package/nitrogen/generated/android/c++/JSafeAreaInsets.hpp +1 -1
  171. package/nitrogen/generated/android/c++/JSearchTemplateConfig.hpp +1 -1
  172. package/nitrogen/generated/android/c++/JSignInMethods.hpp +1 -1
  173. package/nitrogen/generated/android/c++/JSignInTemplateConfig.hpp +1 -1
  174. package/nitrogen/generated/android/c++/JStringTelemetryItem.hpp +1 -1
  175. package/nitrogen/generated/android/c++/JTelemetry.hpp +1 -1
  176. package/nitrogen/generated/android/c++/JTextInputType.hpp +1 -1
  177. package/nitrogen/generated/android/c++/JTrafficSide.hpp +1 -1
  178. package/nitrogen/generated/android/c++/JTravelEstimates.hpp +1 -1
  179. package/nitrogen/generated/android/c++/JTripConfig.hpp +1 -1
  180. package/nitrogen/generated/android/c++/JTripPoint.hpp +1 -1
  181. package/nitrogen/generated/android/c++/JTripPreviewTextConfiguration.hpp +1 -1
  182. package/nitrogen/generated/android/c++/JTripSelectorCallback.hpp +1 -1
  183. package/nitrogen/generated/android/c++/JTripsConfig.hpp +1 -1
  184. package/nitrogen/generated/android/c++/JTurnType.hpp +1 -1
  185. package/nitrogen/generated/android/c++/JVehicleTelemetryItem.hpp +1 -1
  186. package/nitrogen/generated/android/c++/JVisibilityState.hpp +1 -1
  187. package/nitrogen/generated/android/c++/JVisibleTravelEstimate.hpp +1 -1
  188. package/nitrogen/generated/android/c++/JVoiceAudioEncoding.hpp +1 -1
  189. package/nitrogen/generated/android/c++/JVoiceInputChunk.hpp +1 -1
  190. package/nitrogen/generated/android/c++/JVoiceInputResult.hpp +1 -1
  191. package/nitrogen/generated/android/c++/JWaypointCoordinate.hpp +1 -1
  192. package/nitrogen/generated/android/c++/JWindowInformation.hpp +1 -1
  193. package/nitrogen/generated/android/c++/JZoomEvent.hpp +1 -1
  194. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/AssetImage.kt +15 -15
  195. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void.kt +0 -2
  196. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_ActiveCarUxRestrictions.kt +0 -2
  197. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_AlertDismissalReason.kt +0 -2
  198. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_AppFocusState.kt +0 -2
  199. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_ColorScheme.kt +0 -2
  200. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_Point.kt +0 -2
  201. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_Point_double.kt +0 -2
  202. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_Point_std__optional_Point_.kt +0 -2
  203. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_SafeAreaInsets.kt +0 -2
  204. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_VisibilityState.kt +0 -2
  205. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_VoiceInputChunk.kt +0 -2
  206. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_WindowInformation.kt +0 -2
  207. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_bool.kt +0 -2
  208. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_Location__std__optional_std__string_.kt +0 -2
  209. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_Telemetry_.kt +0 -2
  210. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_bool_.kt +0 -2
  211. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_std__string__std__optional_GoogleSignInAccount_.kt +0 -2
  212. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string.kt +0 -2
  213. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_ColorScheme.kt +0 -2
  214. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_ZoomEvent.kt +0 -2
  215. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_bool.kt +0 -2
  216. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_std__string.kt +0 -2
  217. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAndroidAutoTelemetrySpec.kt +2 -0
  218. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAndroidAutomotiveSpec.kt +2 -0
  219. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAndroidWindowInformationSpec.kt +2 -0
  220. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAutoPlaySpec.kt +2 -0
  221. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAutoPlayTimingSpec.kt +65 -0
  222. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridClusterSpec.kt +2 -0
  223. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridGridTemplateSpec.kt +2 -0
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridInformationTemplateSpec.kt +2 -0
  225. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridListTemplateSpec.kt +2 -0
  226. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMapTemplateSpec.kt +2 -0
  227. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMessageTemplateSpec.kt +2 -0
  228. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridSearchTemplateSpec.kt +2 -0
  229. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridSignInTemplateSpec.kt +2 -0
  230. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridVoiceSpec.kt +2 -0
  231. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroColor.kt +9 -4
  232. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.cpp +17 -0
  233. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.hpp +35 -9
  234. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Umbrella.hpp +5 -0
  235. package/nitrogen/generated/ios/ReactNativeAutoPlayAutolinking.mm +8 -0
  236. package/nitrogen/generated/ios/ReactNativeAutoPlayAutolinking.swift +12 -0
  237. package/nitrogen/generated/ios/c++/HybridAutoPlayTimingSpecSwift.cpp +11 -0
  238. package/nitrogen/generated/ios/c++/HybridAutoPlayTimingSpecSwift.hpp +88 -0
  239. package/nitrogen/generated/ios/swift/AssetImage.swift +13 -13
  240. package/nitrogen/generated/ios/swift/HybridAutoPlayTimingSpec.swift +56 -0
  241. package/nitrogen/generated/ios/swift/HybridAutoPlayTimingSpec_cxx.swift +154 -0
  242. package/nitrogen/generated/ios/swift/NitroColor.swift +20 -2
  243. package/nitrogen/generated/shared/c++/AssetImage.hpp +18 -18
  244. package/nitrogen/generated/shared/c++/HybridAutoPlayTimingSpec.cpp +22 -0
  245. package/nitrogen/generated/shared/c++/HybridAutoPlayTimingSpec.hpp +63 -0
  246. package/nitrogen/generated/shared/c++/NitroColor.hpp +7 -3
  247. package/package.json +12 -6
  248. package/src/components/SafeAreaView.tsx +1 -1
  249. package/src/hybrid/HybridAutoPlayTiming.ts +5 -0
  250. package/src/hybrid/HybridVoice.ts +2 -2
  251. package/src/index.ts +0 -3
  252. package/src/index.web.ts +166 -0
  253. package/src/installTimers.ts +9 -0
  254. package/src/installTimers.web.ts +2 -0
  255. package/src/specs/AutoPlayTiming.nitro.ts +25 -0
  256. package/src/types/Image.ts +6 -1
  257. package/src/types/Telemetry.ts +1 -1
  258. package/src/utils/AutoPlayTimers.ts +60 -0
  259. package/src/utils/NitroColor.ts +10 -1
  260. package/src/utils/NitroImage.ts +14 -8
  261. package/src/utils/NitroManeuver.ts +1 -4
  262. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HeadlessTaskService.kt +0 -36
  263. package/lib/AutoPlayHeadlessJsTask.d.ts +0 -5
  264. package/lib/AutoPlayHeadlessJsTask.js +0 -14
  265. package/src/AutoPlayHeadlessJsTask.ts +0 -22
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAndroidAutoTelemetry = void 0;
4
+ const react_1 = require("react");
5
+ const react_native_1 = require("react-native");
6
+ const HybridAndroidAutoTelemetry_1 = require("../hybrid/HybridAndroidAutoTelemetry");
7
+ const HybridAutoPlay_1 = require("../hybrid/HybridAutoPlay");
8
+ /**
9
+ * Hook to check if the telemetry permissions are granted. If the permissions are not granted, it will request them from the user.
10
+ *
11
+ * @namespace Android
12
+ * @param requestTelemetryPermissions If true, the telemetry permissions will be requested from the user. Can be set to false initially, in case other permissions need to be requested first, so the permission request dialogs do not overlap.
13
+ * @param requiredPermissions The permissions to check.
14
+ */
15
+ const useAndroidAutoTelemetry = ({ requestTelemetryPermissions = true, requiredPermissions = [], automotivePermissionRequest, isAndroidAutomotive = false, }) => {
16
+ const [permissionsGranted, setPermissionsGranted] = (0, react_1.useState)(null);
17
+ const [telemetry, setTelemetry] = (0, react_1.useState)(undefined);
18
+ const [error, setError] = (0, react_1.useState)(undefined);
19
+ const [isConnected, setIsConnected] = (0, react_1.useState)(isAndroidAutomotive);
20
+ (0, react_1.useEffect)(() => {
21
+ if (isAndroidAutomotive) {
22
+ return;
23
+ }
24
+ const removeDidConnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didConnect', () => setIsConnected(true));
25
+ const removeDidDisconnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didDisconnect', () => setIsConnected(false));
26
+ setIsConnected(HybridAutoPlay_1.HybridAutoPlay.isConnected());
27
+ return () => {
28
+ removeDidConnect();
29
+ removeDidDisconnect();
30
+ };
31
+ }, [isAndroidAutomotive]);
32
+ (0, react_1.useEffect)(() => {
33
+ const checkPermissions = async () => {
34
+ const state = await Promise.all(requiredPermissions.map((permission) => react_native_1.PermissionsAndroid.check(permission).catch(() => false)));
35
+ setPermissionsGranted(state.every((granted) => granted));
36
+ };
37
+ void checkPermissions();
38
+ }, [requiredPermissions]);
39
+ (0, react_1.useEffect)(() => {
40
+ if (!isConnected || !permissionsGranted) {
41
+ return;
42
+ }
43
+ try {
44
+ const remove = HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry?.registerTelemetryListener(setTelemetry);
45
+ return () => remove?.();
46
+ }
47
+ catch (e) {
48
+ if (e instanceof Error) {
49
+ setError(`${e.name}: ${e.message}\n${e.stack ?? ''}`.trim());
50
+ }
51
+ else {
52
+ setError(String(e));
53
+ }
54
+ }
55
+ return;
56
+ }, [isConnected, permissionsGranted]);
57
+ (0, react_1.useEffect)(() => {
58
+ if (!requestTelemetryPermissions || requiredPermissions.length === 0) {
59
+ return;
60
+ }
61
+ if (permissionsGranted !== false) {
62
+ // either wait for permission request to finish or do nothing in case permissions are granted already
63
+ return;
64
+ }
65
+ if (automotivePermissionRequest?.message != null) {
66
+ HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry?.requestAutomotivePermissions(requiredPermissions, automotivePermissionRequest.message, automotivePermissionRequest.grantButtonText, automotivePermissionRequest.cancelButtonText)
67
+ .then(({ granted, denied }) => {
68
+ const isGranted = granted.length === requiredPermissions.length;
69
+ setPermissionsGranted(isGranted);
70
+ if (!isGranted) {
71
+ setError(`Android Automotive permissions denied: [${denied.join(',')}]`);
72
+ }
73
+ })
74
+ .catch((e) => {
75
+ const message = e instanceof Error ? e.message : String(e);
76
+ setError(message);
77
+ });
78
+ return;
79
+ }
80
+ // PermissionsAndroid is not aware of Android Auto related permissions
81
+ react_native_1.PermissionsAndroid.requestMultiple(requiredPermissions)
82
+ .then((result) => {
83
+ const isGranted = requiredPermissions.every((permission) => result[permission] === 'granted');
84
+ if (!isGranted) {
85
+ console.warn('Android Auto telemetry permissions not granted');
86
+ return;
87
+ }
88
+ setPermissionsGranted(true);
89
+ })
90
+ .catch((e) => console.error('Android Auto telemetry permissions error', e));
91
+ }, [
92
+ requestTelemetryPermissions,
93
+ requiredPermissions,
94
+ permissionsGranted,
95
+ automotivePermissionRequest?.cancelButtonText,
96
+ automotivePermissionRequest?.grantButtonText,
97
+ automotivePermissionRequest?.message,
98
+ ]);
99
+ return {
100
+ /**
101
+ * null on pending permission check, True if the telemetry permissions are granted, false otherwise.
102
+ */
103
+ permissionsGranted,
104
+ /**
105
+ * The telemetry data, might be a partial update not containing all properties of the regular timed updates.
106
+ * For example gear changes are emitted immediately without all the other telemetry data.
107
+ */
108
+ telemetry,
109
+ /**
110
+ * The error message if the telemetry listener failed to start.
111
+ */
112
+ error,
113
+ };
114
+ };
115
+ exports.useAndroidAutoTelemetry = useAndroidAutoTelemetry;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFocusedEffect = useFocusedEffect;
4
+ const react_1 = require("react");
5
+ const HybridAutoPlay_1 = require("../hybrid/HybridAutoPlay");
6
+ /**
7
+ * An effect hook that only runs when the CarPlay/Android Auto screen is visible to the user and dependencies have changed.
8
+ * It behaves like `useEffect`, but the effect function is only executed if the screen is visible.
9
+ *
10
+ * @param moduleName The name of the root module to listen to for focus changes - one of AutoPlayModules or a cluster uuid.
11
+ * @param effect The effect function to run.
12
+ * @param deps An array of dependencies for the effect.
13
+ */
14
+ function useFocusedEffect(moduleName, effect, deps) {
15
+ const [isFocused, setIsFocused] = (0, react_1.useState)(false);
16
+ const effectRef = (0, react_1.useRef)(effect);
17
+ (0, react_1.useEffect)(() => {
18
+ effectRef.current = effect;
19
+ }, [effect]);
20
+ (0, react_1.useEffect)(() => {
21
+ return HybridAutoPlay_1.HybridAutoPlay.addListenerRenderState(moduleName, (state) => {
22
+ if (state === 'willAppear' || state === 'willDisappear') {
23
+ // react on actual visibility changes only
24
+ return;
25
+ }
26
+ setIsFocused(state === 'didAppear');
27
+ });
28
+ }, [moduleName]);
29
+ (0, react_1.useEffect)(() => {
30
+ if (!isFocused) {
31
+ return;
32
+ }
33
+ return effectRef.current();
34
+ }, [isFocused, ...deps]);
35
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMapTemplate = void 0;
4
+ const react_1 = require("react");
5
+ const MapTemplateContext_1 = require("../components/MapTemplateContext");
6
+ /**
7
+ * provides access to the map template
8
+ * obviously this works only on the map template component and its children
9
+ */
10
+ const useMapTemplate = () => {
11
+ return (0, react_1.useContext)(MapTemplateContext_1.MapTemplateContext);
12
+ };
13
+ exports.useMapTemplate = useMapTemplate;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSafeAreaInsets = void 0;
4
+ const react_1 = require("react");
5
+ const SafeAreaInsetsContext_1 = require("../components/SafeAreaInsetsContext");
6
+ const useSafeAreaInsets = () => {
7
+ return (0, react_1.useContext)(SafeAreaInsetsContext_1.SafeAreaInsetsContext);
8
+ };
9
+ exports.useSafeAreaInsets = useSafeAreaInsets;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useVoiceInput = void 0;
4
+ const react_1 = require("react");
5
+ const HybridAutoPlay_1 = require("../hybrid/HybridAutoPlay");
6
+ const useVoiceInput = () => {
7
+ const [isConnected, setIsConnected] = (0, react_1.useState)(false);
8
+ const [voiceInputResult, setVoiceInputResult] = (0, react_1.useState)();
9
+ /**
10
+ * Resets the voice input result to undefined. This is useful when you want to clear the voice input result after processing it.
11
+ */
12
+ const resetVoiceInputResult = (0, react_1.useCallback)(() => {
13
+ setVoiceInputResult(undefined);
14
+ }, []);
15
+ (0, react_1.useEffect)(() => {
16
+ const removeDidConnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didConnect', () => setIsConnected(true));
17
+ const removeDidDisconnect = HybridAutoPlay_1.HybridAutoPlay.addListener('didDisconnect', () => setIsConnected(false));
18
+ setIsConnected(HybridAutoPlay_1.HybridAutoPlay.isConnected());
19
+ return () => {
20
+ removeDidConnect();
21
+ removeDidDisconnect();
22
+ };
23
+ }, []);
24
+ (0, react_1.useEffect)(() => {
25
+ if (!isConnected) {
26
+ return;
27
+ }
28
+ const remove = HybridAutoPlay_1.HybridAutoPlay.addListenerVoiceInput((coordinates, query) => {
29
+ if (coordinates || query) {
30
+ setVoiceInputResult({ coordinates, query });
31
+ }
32
+ else {
33
+ setVoiceInputResult(undefined);
34
+ }
35
+ });
36
+ return () => {
37
+ remove();
38
+ };
39
+ }, [isConnected]);
40
+ return { voiceInputResult, resetVoiceInputResult };
41
+ };
42
+ exports.useVoiceInput = useVoiceInput;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HybridAndroidAutoTelemetry = void 0;
4
+ exports.HybridAndroidAutoTelemetry = null;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HybridAndroidWindowInformation = void 0;
4
+ exports.HybridAndroidWindowInformation = null;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HybridAutoPlay = void 0;
4
+ const react_native_nitro_modules_1 = require("react-native-nitro-modules");
5
+ exports.HybridAutoPlay = react_native_nitro_modules_1.NitroModules.createHybridObject('AutoPlay');
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HybridVoice = void 0;
4
+ const react_native_1 = require("react-native");
5
+ const react_native_nitro_modules_1 = require("react-native-nitro-modules");
6
+ const NitroImage_1 = require("../utils/NitroImage");
7
+ const _native = react_native_nitro_modules_1.NitroModules.createHybridObject('Voice');
8
+ const startVoiceInput = async (options) => {
9
+ const { onChunk, silenceThresholdMs, maxDurationMs, listeningText, listeningImage, preferSpeechToText, language, startSound, endSound, encoding, } = options ?? {};
10
+ const listeningImageRepeats = listeningImage?.type === 'asset' ? listeningImage.repeats : undefined;
11
+ const startSoundUri = startSound != null ? react_native_1.Image.resolveAssetSource(startSound)?.uri : undefined;
12
+ const endSoundUri = endSound != null ? react_native_1.Image.resolveAssetSource(endSound)?.uri : undefined;
13
+ return await _native.startVoiceInput(silenceThresholdMs, maxDurationMs, listeningText, NitroImage_1.NitroImageUtil.convert(listeningImage), listeningImageRepeats, preferSpeechToText, onChunk, language, startSoundUri, endSoundUri, encoding);
14
+ };
15
+ exports.HybridVoice = {
16
+ /**
17
+ * Returns true if all permissions required for voice input are granted.
18
+ * On iOS: checks both microphone and speech recognition authorization.
19
+ * On Android: checks RECORD_AUDIO permission.
20
+ */
21
+ hasVoiceInputPermission: () => _native.hasVoiceInputPermission(),
22
+ /**
23
+ * Request all permissions required for voice input.
24
+ * On iOS: requests microphone permission then speech recognition authorization.
25
+ * On Android: requests RECORD_AUDIO via car context when connected, otherwise
26
+ * via the React Native application context.
27
+ * Returns true only if all required permissions were granted.
28
+ */
29
+ requestVoiceInputPermission: () => _native.requestVoiceInputPermission(),
30
+ /**
31
+ * Start an in-app voice session.
32
+ *
33
+ * When preferSpeechToText is true:
34
+ * iOS — streams audio buffers into SFSpeechRecognizer during recording;
35
+ * onChunk fires with partial transcription results; resolves with
36
+ * { transcription } or falls back to { audio } if unavailable.
37
+ * Android — checks SpeechRecognizer availability upfront; if available it
38
+ * owns the mic and streams partial results via onChunk; if not
39
+ * available falls back to PCM recording.
40
+ *
41
+ * When preferSpeechToText is false (default):
42
+ * Both platforms record raw PCM; onChunk fires with audio chunks;
43
+ * resolves with { audio }.
44
+ *
45
+ * @param silenceThresholdMs ms of silence before auto-stop (default 1500)
46
+ * @param maxDurationMs hard cap on recording duration (default 10000)
47
+ * @param listeningText iOS only — text shown on CPVoiceControlTemplate
48
+ * @param preferSpeechToText request STT transcription instead of raw PCM
49
+ * @param onChunk optional streaming callback
50
+ * @param language specify the language for the SpeechRecognizer, falls back to system language if not set
51
+ * @param encoding PCM encoding for onChunk audio and the final result (default LINEAR16)
52
+ */
53
+ startVoiceInput,
54
+ /**
55
+ * Stop the active voice session early.
56
+ * For PCM mode: resolves startVoiceInput with audio captured so far.
57
+ * For STT mode: finalises the recognition request.
58
+ * No-op if no session is active.
59
+ */
60
+ stopVoiceInput: () => _native.stopVoiceInput(),
61
+ };
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.setIconFont = exports.CarUxRestrictions = exports.AutoPlayModules = exports.HybridAndroidAutomotive = exports.HybridVoice = exports.HybridAutoPlay = exports.HybridAndroidWindowInformation = exports.HybridAndroidAutoTelemetry = void 0;
18
+ const react_native_1 = require("react-native");
19
+ const react_native_nitro_modules_1 = require("react-native-nitro-modules");
20
+ const HybridAndroidAutoTelemetry_1 = require("./hybrid/HybridAndroidAutoTelemetry");
21
+ Object.defineProperty(exports, "HybridAndroidAutoTelemetry", { enumerable: true, get: function () { return HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry; } });
22
+ const HybridAndroidWindowInformation_1 = require("./hybrid/HybridAndroidWindowInformation");
23
+ Object.defineProperty(exports, "HybridAndroidWindowInformation", { enumerable: true, get: function () { return HybridAndroidWindowInformation_1.HybridAndroidWindowInformation; } });
24
+ const HybridAutoPlay_1 = require("./hybrid/HybridAutoPlay");
25
+ Object.defineProperty(exports, "HybridAutoPlay", { enumerable: true, get: function () { return HybridAutoPlay_1.HybridAutoPlay; } });
26
+ const HybridVoice_1 = require("./hybrid/HybridVoice");
27
+ Object.defineProperty(exports, "HybridVoice", { enumerable: true, get: function () { return HybridVoice_1.HybridVoice; } });
28
+ exports.HybridAndroidAutomotive = react_native_1.Platform.OS === 'android'
29
+ ? react_native_nitro_modules_1.NitroModules.createHybridObject('AndroidAutomotive')
30
+ : null;
31
+ /**
32
+ * These are the static module names for the app running on the mobile device, head unit screen and the CarPlay dashboard.
33
+ * Clusters generate uuids on native side that are passed in the RootComponentInitialProps
34
+ */
35
+ var AutoPlayModules;
36
+ (function (AutoPlayModules) {
37
+ AutoPlayModules["App"] = "main";
38
+ AutoPlayModules["AutoPlayRoot"] = "AutoPlayRoot";
39
+ AutoPlayModules["CarPlayDashboard"] = "CarPlayDashboard";
40
+ })(AutoPlayModules || (exports.AutoPlayModules = AutoPlayModules = {}));
41
+ __exportStar(require("./Constants"), exports);
42
+ __exportStar(require("./components/SafeAreaView"), exports);
43
+ __exportStar(require("./hooks/useAndroidAutoTelemetry"), exports);
44
+ __exportStar(require("./hooks/useFocusedEffect"), exports);
45
+ __exportStar(require("./hooks/useMapTemplate"), exports);
46
+ __exportStar(require("./hooks/useSafeAreaInsets"), exports);
47
+ __exportStar(require("./hooks/useVoiceInput"), exports);
48
+ __exportStar(require("./scenes/AutoPlayCluster"), exports);
49
+ __exportStar(require("./scenes/CarPlayDashboardScene"), exports);
50
+ var AndroidAutomotive_nitro_1 = require("./specs/AndroidAutomotive.nitro");
51
+ Object.defineProperty(exports, "CarUxRestrictions", { enumerable: true, get: function () { return AndroidAutomotive_nitro_1.CarUxRestrictions; } });
52
+ __exportStar(require("./templates/GridTemplate"), exports);
53
+ __exportStar(require("./templates/InformationTemplate"), exports);
54
+ __exportStar(require("./templates/ListTemplate"), exports);
55
+ __exportStar(require("./templates/MapTemplate"), exports);
56
+ __exportStar(require("./templates/MessageTemplate"), exports);
57
+ __exportStar(require("./templates/SearchTemplate"), exports);
58
+ __exportStar(require("./templates/SignInTemplate"), exports);
59
+ __exportStar(require("./templates/Template"), exports);
60
+ __exportStar(require("./types/Button"), exports);
61
+ __exportStar(require("./types/Event"), exports);
62
+ __exportStar(require("./types/Image"), exports);
63
+ __exportStar(require("./types/Maneuver"), exports);
64
+ __exportStar(require("./types/RootComponent"), exports);
65
+ __exportStar(require("./types/SignInMethod"), exports);
66
+ __exportStar(require("./types/Telemetry"), exports);
67
+ __exportStar(require("./types/Text"), exports);
68
+ __exportStar(require("./types/Trip"), exports);
69
+ __exportStar(require("./utils/ErrorUtil"), exports);
70
+ var NitroImage_1 = require("./utils/NitroImage");
71
+ Object.defineProperty(exports, "setIconFont", { enumerable: true, get: function () { return NitroImage_1.setIconFont; } });
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ // Web/Jest stub for the native CarPlay/Android Auto surface. Nothing here talks to a real native
3
+ // module — every function call resolves to `undefined` (or an already-resolved promise, which is
4
+ // indistinguishable from `undefined` to an `await`er) rather than throwing. Types are preserved by
5
+ // casting against the real exports, so callers still get full type-checking/autocomplete.
6
+ //
7
+ // Anything below that's already safe as-is (pure types, plain enums, or modules that neither
8
+ // create native objects nor import anything that does) is re-exported directly instead of stubbed.
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.SignInTemplate = exports.SearchTemplate = exports.MapTemplate = exports.MessageTemplate = exports.InformationTemplate = exports.GridTemplate = exports.ListTemplate = exports.Template = exports.HybridVoice = exports.HybridAutoPlay = exports.HybridAndroidWindowInformation = exports.HybridAndroidAutoTelemetry = exports.HybridAndroidAutomotive = exports.CarPlayDashboard = exports.AutoPlayCluster = exports.useAndroidAutoTelemetry = exports.useVoiceInput = exports.useFocusedEffect = exports.SafeAreaView = exports.useSafeAreaInsets = exports.AutoPlayModules = exports.CarUxRestrictions = void 0;
25
+ exports.setIconFont = setIconFont;
26
+ const react_1 = require("react");
27
+ const react_native_1 = require("react-native");
28
+ function noop() {
29
+ return undefined;
30
+ }
31
+ /** Any property access returns a no-op function, so any method call is safe regardless of name. */
32
+ function createNoopObject() {
33
+ return new Proxy({}, {
34
+ get: (_target, prop) => (prop === 'then' || prop === 'toJSON' ? undefined : noop),
35
+ });
36
+ }
37
+ function createNoopClass() {
38
+ function NoopInstance() {
39
+ return createNoopObject();
40
+ }
41
+ return NoopInstance;
42
+ }
43
+ __exportStar(require("./Constants"), exports);
44
+ __exportStar(require("./hooks/useMapTemplate"), exports);
45
+ var AndroidAutomotive_nitro_1 = require("./specs/AndroidAutomotive.nitro");
46
+ Object.defineProperty(exports, "CarUxRestrictions", { enumerable: true, get: function () { return AndroidAutomotive_nitro_1.CarUxRestrictions; } });
47
+ __exportStar(require("./types/Button"), exports);
48
+ __exportStar(require("./types/Event"), exports);
49
+ __exportStar(require("./types/Image"), exports);
50
+ __exportStar(require("./types/Maneuver"), exports);
51
+ __exportStar(require("./types/RootComponent"), exports);
52
+ __exportStar(require("./types/SignInMethod"), exports);
53
+ __exportStar(require("./types/Telemetry"), exports);
54
+ __exportStar(require("./types/Text"), exports);
55
+ __exportStar(require("./types/Trip"), exports);
56
+ __exportStar(require("./utils/ErrorUtil"), exports);
57
+ var AutoPlayModules;
58
+ (function (AutoPlayModules) {
59
+ AutoPlayModules["App"] = "main";
60
+ AutoPlayModules["AutoPlayRoot"] = "AutoPlayRoot";
61
+ AutoPlayModules["CarPlayDashboard"] = "CarPlayDashboard";
62
+ })(AutoPlayModules || (exports.AutoPlayModules = AutoPlayModules = {}));
63
+ const NO_INSETS = { top: 0, bottom: 0, left: 0, right: 0 };
64
+ const useSafeAreaInsets = () => NO_INSETS;
65
+ exports.useSafeAreaInsets = useSafeAreaInsets;
66
+ const SafeAreaView = (props) => (0, react_1.createElement)(react_native_1.View, props);
67
+ exports.SafeAreaView = SafeAreaView;
68
+ function setIconFont(_name, _glyphMap) { }
69
+ const useFocusedEffect = () => { };
70
+ exports.useFocusedEffect = useFocusedEffect;
71
+ const useVoiceInput = () => ({
72
+ voiceInputResult: undefined,
73
+ resetVoiceInputResult: () => { },
74
+ });
75
+ exports.useVoiceInput = useVoiceInput;
76
+ const useAndroidAutoTelemetry = () => ({
77
+ permissionsGranted: null,
78
+ telemetry: undefined,
79
+ error: undefined,
80
+ });
81
+ exports.useAndroidAutoTelemetry = useAndroidAutoTelemetry;
82
+ exports.AutoPlayCluster = createNoopObject();
83
+ exports.CarPlayDashboard = createNoopObject();
84
+ exports.HybridAndroidAutomotive = null;
85
+ var HybridAndroidAutoTelemetry_1 = require("./hybrid/HybridAndroidAutoTelemetry");
86
+ Object.defineProperty(exports, "HybridAndroidAutoTelemetry", { enumerable: true, get: function () { return HybridAndroidAutoTelemetry_1.HybridAndroidAutoTelemetry; } });
87
+ var HybridAndroidWindowInformation_1 = require("./hybrid/HybridAndroidWindowInformation");
88
+ Object.defineProperty(exports, "HybridAndroidWindowInformation", { enumerable: true, get: function () { return HybridAndroidWindowInformation_1.HybridAndroidWindowInformation; } });
89
+ exports.HybridAutoPlay = createNoopObject();
90
+ exports.HybridVoice = createNoopObject();
91
+ exports.Template = createNoopClass();
92
+ exports.ListTemplate = createNoopClass();
93
+ exports.GridTemplate = createNoopClass();
94
+ exports.InformationTemplate = createNoopClass();
95
+ exports.MessageTemplate = createNoopClass();
96
+ exports.MapTemplate = createNoopClass();
97
+ exports.SearchTemplate = createNoopClass();
98
+ exports.SignInTemplate = createNoopClass();
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AutoPlayCluster = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_native_1 = require("react-native");
9
+ const react_native_nitro_modules_1 = require("react-native-nitro-modules");
10
+ const SafeAreaInsetsContext_1 = require("../components/SafeAreaInsetsContext");
11
+ const WindowInformationWrapper_1 = require("../components/WindowInformationWrapper");
12
+ const NitroImage_1 = require("../utils/NitroImage");
13
+ const HybridCluster = react_native_nitro_modules_1.NitroModules.createHybridObject('Cluster');
14
+ class Cluster {
15
+ component = null;
16
+ attributedInactiveDescriptionVariants = [];
17
+ /**
18
+ * Holds all cluster scene/session IDs and if they have a window/surface connected
19
+ */
20
+ clusters = {};
21
+ constructor() {
22
+ HybridCluster.addListener('didConnect', (clusterId) => {
23
+ if (this.clusters[clusterId] != null) {
24
+ // in case didConnectWithWindow fires before didConnect
25
+ return;
26
+ }
27
+ this.clusters[clusterId] = false;
28
+ this.applyAttributedInactiveDescriptionVariants();
29
+ });
30
+ HybridCluster.addListener('didConnectWithWindow', (clusterId) => {
31
+ this.clusters[clusterId] = false;
32
+ this.registerComponent().catch((e) => {
33
+ console.error(e);
34
+ });
35
+ });
36
+ HybridCluster.addListener('didDisconnectFromWindow', (clusterId) => {
37
+ if (this.clusters[clusterId] == null) {
38
+ // in case didDisconnect fires before didDisconnectFromWindow
39
+ return;
40
+ }
41
+ this.clusters[clusterId] = false;
42
+ });
43
+ HybridCluster.addListener('didDisconnect', (clusterId) => {
44
+ delete this.clusters[clusterId];
45
+ });
46
+ }
47
+ async registerComponent() {
48
+ const { component } = this;
49
+ if (component == null) {
50
+ return;
51
+ }
52
+ const clusterIds = Object.entries(this.clusters)
53
+ .filter(([_, registered]) => !registered)
54
+ .map(([clusterId]) => clusterId);
55
+ for (const clusterId of clusterIds) {
56
+ react_native_1.AppRegistry.registerComponent(clusterId, () => (props) => react_1.default.createElement(SafeAreaInsetsContext_1.SafeAreaInsetsProvider, {
57
+ moduleName: clusterId,
58
+ // biome-ignore lint/correctness/noChildrenProp: there is no other way in a ts file
59
+ children: react_1.default.createElement(WindowInformationWrapper_1.WindowInformationWrapper, {
60
+ moduleName: clusterId,
61
+ component,
62
+ componentProps: props,
63
+ }),
64
+ }));
65
+ this.clusters[clusterId] = true;
66
+ await HybridCluster.initRootView(clusterId);
67
+ }
68
+ this.applyAttributedInactiveDescriptionVariants();
69
+ }
70
+ applyAttributedInactiveDescriptionVariants() {
71
+ if (react_native_1.Platform.OS !== 'ios') {
72
+ return;
73
+ }
74
+ const variants = this.attributedInactiveDescriptionVariants.map((v) => ({
75
+ ...v,
76
+ images: v.images?.map((i) => ({ ...i, image: NitroImage_1.NitroImageUtil.convert(i.image) })),
77
+ }));
78
+ for (const clusterId of Object.keys(this.clusters)) {
79
+ HybridCluster.setAttributedInactiveDescriptionVariants(clusterId, variants);
80
+ }
81
+ }
82
+ setComponent(component) {
83
+ if (this.component != null) {
84
+ throw new Error('ClusterScene.setComponent can be called once only');
85
+ }
86
+ this.component = component;
87
+ return this.registerComponent();
88
+ }
89
+ /**
90
+ * sets the text that is shown while no navigation is ongoing
91
+ * applies specified strings to all connected cluster of content type "Instruction Card"
92
+ * @namespace iOS
93
+ */
94
+ setAttributedInactiveDescriptionVariants(attributedInactiveDescriptionVariants) {
95
+ if (react_native_1.Platform.OS !== 'ios') {
96
+ console.warn(`ClusterScene.setAttributedInactiveDescriptionVariants not supported for ${react_native_1.Platform.OS}`);
97
+ return;
98
+ }
99
+ this.attributedInactiveDescriptionVariants = attributedInactiveDescriptionVariants;
100
+ this.applyAttributedInactiveDescriptionVariants();
101
+ }
102
+ addListenerColorScheme(callback) {
103
+ return HybridCluster.addListenerColorScheme(callback);
104
+ }
105
+ /**
106
+ * add listener for cluster zoom buttons
107
+ * @namespace iOS
108
+ */
109
+ addListenerZoom(callback) {
110
+ if (react_native_1.Platform.OS !== 'ios') {
111
+ return;
112
+ }
113
+ return HybridCluster.addListenerZoom(callback);
114
+ }
115
+ /**
116
+ * add listener for compass enable/disable
117
+ * @namespace iOS
118
+ */
119
+ addListenerCompass(callback) {
120
+ if (react_native_1.Platform.OS !== 'ios') {
121
+ return;
122
+ }
123
+ return HybridCluster.addListenerCompass(callback);
124
+ }
125
+ /**
126
+ * add listener for speed limit enable/disable
127
+ * @namespace iOS
128
+ */
129
+ addListenerSpeedLimit(callback) {
130
+ if (react_native_1.Platform.OS !== 'ios') {
131
+ return;
132
+ }
133
+ return HybridCluster.addListenerSpeedLimit(callback);
134
+ }
135
+ }
136
+ /**
137
+ * @namespace Android
138
+ * @namespace iOS >= 15.4
139
+ */
140
+ exports.AutoPlayCluster = new Cluster();