@neoskola/auto-play 0.1.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 (674) hide show
  1. package/README.md +759 -0
  2. package/ReactNativeAutoPlay.podspec +43 -0
  3. package/android/CMakeLists.txt +29 -0
  4. package/android/build.gradle +155 -0
  5. package/android/fix-prefab.gradle +51 -0
  6. package/android/gradle.properties +12 -0
  7. package/android/src/main/AndroidManifest.xml +53 -0
  8. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  9. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/ActivityRenderStateProvider.kt +81 -0
  10. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoScreen.kt +143 -0
  11. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoService.kt +203 -0
  12. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoSession.kt +273 -0
  13. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoTelemetryHolder.kt +133 -0
  14. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoTelemetryObserver.kt +201 -0
  15. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HeadlessTaskService.kt +36 -0
  16. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAndroidAutoTelemetry.kt +7 -0
  17. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAutoPlay.kt +292 -0
  18. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridCluster.kt +94 -0
  19. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridGridTemplate.kt +24 -0
  20. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridInformationTemplate.kt +24 -0
  21. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridListTemplate.kt +25 -0
  22. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMapTemplate.kt +157 -0
  23. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMessageTemplate.kt +15 -0
  24. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridNeoSkolaTemplate.kt +25 -0
  25. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridSearchTemplate.kt +23 -0
  26. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/ReactNativeAutoPlayPackage.kt +19 -0
  27. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/VirtualRenderer.kt +519 -0
  28. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/AndroidAutoTemplate.kt +81 -0
  29. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/GridTemplate.kt +77 -0
  30. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/InformationTemplate.kt +85 -0
  31. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/ListTemplate.kt +86 -0
  32. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/MapTemplate.kt +419 -0
  33. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/MessageTemplate.kt +68 -0
  34. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/NeoSkolaTemplate.kt +53 -0
  35. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/Parser.kt +754 -0
  36. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/RoutePreviewTemplate.kt +75 -0
  37. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/SearchTemplate.kt +91 -0
  38. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/TripPreviewTemplate.kt +199 -0
  39. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/utils/AppInfo.kt +34 -0
  40. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/utils/BitmapCache.kt +60 -0
  41. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/utils/Debouncer.kt +19 -0
  42. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/utils/ReactContextResolver.kt +60 -0
  43. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/utils/SymbolFont.kt +111 -0
  44. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/utils/ThreadUtil.kt +19 -0
  45. package/android/src/main/res/drawable/alt_route.xml +9 -0
  46. package/android/src/main/res/drawable/ic_chevron_backward.xml +9 -0
  47. package/android/src/main/res/drawable/ic_chevron_forward.xml +9 -0
  48. package/android/src/main/res/drawable/ic_notification.xml +7 -0
  49. package/android/src/main/res/font/materialsymbolsoutlined_regular.ttf +0 -0
  50. package/android/src/main/res/layout/cluster_splashscreen.xml +22 -0
  51. package/android/src/main/res/xml/automotive_app_desc.xml +4 -0
  52. package/ios/Assets/MaterialSymbolsOutlined-Regular.ttf +0 -0
  53. package/ios/Bridge.h +8 -0
  54. package/ios/ReactHelpers/NitroConvert.h +19 -0
  55. package/ios/ReactHelpers/NitroConvert.m +21 -0
  56. package/ios/ReactHelpers/NitroLinkingManager.h +18 -0
  57. package/ios/ReactHelpers/NitroLinkingManager.m +44 -0
  58. package/ios/ReactHelpers/NitroSurface.h +10 -0
  59. package/ios/ReactHelpers/NitroSurface.m +51 -0
  60. package/ios/ReactHelpers/RCTLinkingManager+Custom.mm +39 -0
  61. package/ios/Types.swift +23 -0
  62. package/ios/extensions/CarPlayExtensions.swift +145 -0
  63. package/ios/extensions/CarPlayTemplateExtensions.swift +87 -0
  64. package/ios/extensions/NitroImageExtensions.swift +33 -0
  65. package/ios/extensions/UIImage+Toggle.swift +58 -0
  66. package/ios/hybrid/HybridAutoPlay.swift +339 -0
  67. package/ios/hybrid/HybridCarPlayDashboard.swift +77 -0
  68. package/ios/hybrid/HybridCluster.swift +181 -0
  69. package/ios/hybrid/HybridGridTemplate.swift +35 -0
  70. package/ios/hybrid/HybridInformationTemplate.swift +37 -0
  71. package/ios/hybrid/HybridListTemplate.swift +36 -0
  72. package/ios/hybrid/HybridMapTemplate.swift +170 -0
  73. package/ios/hybrid/HybridMessageTemplate.swift +16 -0
  74. package/ios/hybrid/HybridNeoSkolaTemplate.swift +33 -0
  75. package/ios/hybrid/HybridSearchTemplate.swift +35 -0
  76. package/ios/scenes/AutoPlayInterfaceController.swift +224 -0
  77. package/ios/scenes/AutoPlayScene.swift +110 -0
  78. package/ios/scenes/AutoPlaySceneViewController.swift +36 -0
  79. package/ios/scenes/ClusterSceneDelegate.swift +174 -0
  80. package/ios/scenes/DashboardSceneDelegate.swift +128 -0
  81. package/ios/scenes/HeadUnitSceneDelegate.swift +84 -0
  82. package/ios/scenes/SceneStore.swift +90 -0
  83. package/ios/scenes/WindowApplicationSceneDelegate.swift +92 -0
  84. package/ios/templates/AutoPlayTemplate.swift +49 -0
  85. package/ios/templates/GridTemplate.swift +110 -0
  86. package/ios/templates/InformationTemplate.swift +74 -0
  87. package/ios/templates/ListTemplate.swift +87 -0
  88. package/ios/templates/MapTemplate.swift +756 -0
  89. package/ios/templates/MessageTemplate.swift +55 -0
  90. package/ios/templates/NeoSkolaTemplate.swift +124 -0
  91. package/ios/templates/Parser.swift +877 -0
  92. package/ios/templates/SearchTemplate.swift +166 -0
  93. package/ios/templates/TemplateStore.swift +45 -0
  94. package/ios/utils/RootModule.swift +107 -0
  95. package/ios/utils/SymbolFont.swift +199 -0
  96. package/ios/utils/ViewUtils.swift +39 -0
  97. package/lib/AutoPlayHeadlessJsTask.d.ts +4 -0
  98. package/lib/AutoPlayHeadlessJsTask.js +15 -0
  99. package/lib/components/MapTemplateContext.d.ts +7 -0
  100. package/lib/components/MapTemplateContext.js +6 -0
  101. package/lib/components/SafeAreaInsetsContext.d.ts +7 -0
  102. package/lib/components/SafeAreaInsetsContext.js +17 -0
  103. package/lib/components/SafeAreaView.d.ts +2 -0
  104. package/lib/components/SafeAreaView.js +18 -0
  105. package/lib/hooks/useAndroidAutoTelemetry.d.ts +35 -0
  106. package/lib/hooks/useAndroidAutoTelemetry.js +74 -0
  107. package/lib/hooks/useFocusedEffect.d.ts +9 -0
  108. package/lib/hooks/useFocusedEffect.js +32 -0
  109. package/lib/hooks/useMapTemplate.d.ts +5 -0
  110. package/lib/hooks/useMapTemplate.js +9 -0
  111. package/lib/hooks/useSafeAreaInsets.d.ts +1 -0
  112. package/lib/hooks/useSafeAreaInsets.js +5 -0
  113. package/lib/hooks/useVoiceInput.d.ts +8 -0
  114. package/lib/hooks/useVoiceInput.js +38 -0
  115. package/lib/index.d.ts +40 -0
  116. package/lib/index.js +42 -0
  117. package/lib/index.web.d.ts +0 -0
  118. package/lib/index.web.js +1 -0
  119. package/lib/scenes/AutoPlayCluster.d.ts +44 -0
  120. package/lib/scenes/AutoPlayCluster.js +129 -0
  121. package/lib/scenes/CarPlayDashboardScene.d.ts +35 -0
  122. package/lib/scenes/CarPlayDashboardScene.js +88 -0
  123. package/lib/specs/AndroidAutoTelemetry.nitro.d.ts +15 -0
  124. package/lib/specs/AndroidAutoTelemetry.nitro.js +1 -0
  125. package/lib/specs/AutoPlay.nitro.d.ts +71 -0
  126. package/lib/specs/AutoPlay.nitro.js +1 -0
  127. package/lib/specs/CarPlayDashboard.nitro.d.ts +22 -0
  128. package/lib/specs/CarPlayDashboard.nitro.js +1 -0
  129. package/lib/specs/Cluster.nitro.d.ts +19 -0
  130. package/lib/specs/Cluster.nitro.js +1 -0
  131. package/lib/specs/GridTemplate.nitro.d.ts +14 -0
  132. package/lib/specs/GridTemplate.nitro.js +1 -0
  133. package/lib/specs/InformationTemplate.nitro.d.ts +13 -0
  134. package/lib/specs/InformationTemplate.nitro.js +1 -0
  135. package/lib/specs/ListTemplate.nitro.d.ts +13 -0
  136. package/lib/specs/ListTemplate.nitro.js +1 -0
  137. package/lib/specs/MapTemplate.nitro.d.ts +28 -0
  138. package/lib/specs/MapTemplate.nitro.js +1 -0
  139. package/lib/specs/MessageTemplate.nitro.d.ts +12 -0
  140. package/lib/specs/MessageTemplate.nitro.js +1 -0
  141. package/lib/specs/NeoSkolaTemplate.nitro.d.ts +13 -0
  142. package/lib/specs/NeoSkolaTemplate.nitro.js +1 -0
  143. package/lib/specs/SearchTemplate.nitro.d.ts +13 -0
  144. package/lib/specs/SearchTemplate.nitro.js +1 -0
  145. package/lib/templates/GridTemplate.d.ts +28 -0
  146. package/lib/templates/GridTemplate.js +29 -0
  147. package/lib/templates/InformationTemplate.d.ts +52 -0
  148. package/lib/templates/InformationTemplate.js +45 -0
  149. package/lib/templates/ListTemplate.d.ts +77 -0
  150. package/lib/templates/ListTemplate.js +29 -0
  151. package/lib/templates/MapTemplate.d.ts +151 -0
  152. package/lib/templates/MapTemplate.js +125 -0
  153. package/lib/templates/MessageTemplate.d.ts +55 -0
  154. package/lib/templates/MessageTemplate.js +43 -0
  155. package/lib/templates/NeoSkolaTemplate.d.ts +25 -0
  156. package/lib/templates/NeoSkolaTemplate.js +22 -0
  157. package/lib/templates/SearchTemplate.d.ts +55 -0
  158. package/lib/templates/SearchTemplate.js +28 -0
  159. package/lib/templates/Template.d.ts +77 -0
  160. package/lib/templates/Template.js +33 -0
  161. package/lib/types/Button.d.ts +77 -0
  162. package/lib/types/Button.js +9 -0
  163. package/lib/types/Event.d.ts +18 -0
  164. package/lib/types/Event.js +1 -0
  165. package/lib/types/Glyphmap.d.ts +4105 -0
  166. package/lib/types/Glyphmap.js +4105 -0
  167. package/lib/types/Image.d.ts +27 -0
  168. package/lib/types/Image.js +1 -0
  169. package/lib/types/Maneuver.d.ts +205 -0
  170. package/lib/types/Maneuver.js +61 -0
  171. package/lib/types/RootComponent.d.ts +35 -0
  172. package/lib/types/RootComponent.js +1 -0
  173. package/lib/types/Telemetry.d.ts +64 -0
  174. package/lib/types/Telemetry.js +14 -0
  175. package/lib/types/Text.d.ts +23 -0
  176. package/lib/types/Text.js +5 -0
  177. package/lib/types/Trip.d.ts +69 -0
  178. package/lib/types/Trip.js +1 -0
  179. package/lib/utils/NitroAction.d.ts +32 -0
  180. package/lib/utils/NitroAction.js +126 -0
  181. package/lib/utils/NitroAlert.d.ts +43 -0
  182. package/lib/utils/NitroAlert.js +16 -0
  183. package/lib/utils/NitroAttributedString.d.ts +22 -0
  184. package/lib/utils/NitroAttributedString.js +11 -0
  185. package/lib/utils/NitroColor.d.ts +14 -0
  186. package/lib/utils/NitroColor.js +21 -0
  187. package/lib/utils/NitroGrid.d.ts +16 -0
  188. package/lib/utils/NitroGrid.js +9 -0
  189. package/lib/utils/NitroImage.d.ts +24 -0
  190. package/lib/utils/NitroImage.js +32 -0
  191. package/lib/utils/NitroManeuver.d.ts +45 -0
  192. package/lib/utils/NitroManeuver.js +78 -0
  193. package/lib/utils/NitroMapButton.d.ts +12 -0
  194. package/lib/utils/NitroMapButton.js +30 -0
  195. package/lib/utils/NitroSection.d.ts +23 -0
  196. package/lib/utils/NitroSection.js +62 -0
  197. package/nitro.json +56 -0
  198. package/nitrogen/generated/.gitattributes +1 -0
  199. package/nitrogen/generated/android/ReactNativeAutoPlay+autolinking.cmake +104 -0
  200. package/nitrogen/generated/android/ReactNativeAutoPlay+autolinking.gradle +27 -0
  201. package/nitrogen/generated/android/ReactNativeAutoPlayOnLoad.cpp +168 -0
  202. package/nitrogen/generated/android/ReactNativeAutoPlayOnLoad.hpp +25 -0
  203. package/nitrogen/generated/android/c++/JAlertActionStyle.hpp +62 -0
  204. package/nitrogen/generated/android/c++/JAlertDismissalReason.hpp +62 -0
  205. package/nitrogen/generated/android/c++/JAssetImage.hpp +80 -0
  206. package/nitrogen/generated/android/c++/JAutoText.hpp +70 -0
  207. package/nitrogen/generated/android/c++/JClusterEventName.hpp +65 -0
  208. package/nitrogen/generated/android/c++/JColorScheme.hpp +59 -0
  209. package/nitrogen/generated/android/c++/JDistance.hpp +62 -0
  210. package/nitrogen/generated/android/c++/JDistanceUnits.hpp +68 -0
  211. package/nitrogen/generated/android/c++/JDurationWithTimeZone.hpp +61 -0
  212. package/nitrogen/generated/android/c++/JEventName.hpp +59 -0
  213. package/nitrogen/generated/android/c++/JForkType.hpp +59 -0
  214. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  215. package/nitrogen/generated/android/c++/JFunc_void_AlertDismissalReason.hpp +77 -0
  216. package/nitrogen/generated/android/c++/JFunc_void_ColorScheme.hpp +77 -0
  217. package/nitrogen/generated/android/c++/JFunc_void_Point.hpp +77 -0
  218. package/nitrogen/generated/android/c++/JFunc_void_Point_double.hpp +77 -0
  219. package/nitrogen/generated/android/c++/JFunc_void_Point_std__optional_Point_.hpp +78 -0
  220. package/nitrogen/generated/android/c++/JFunc_void_SafeAreaInsets.hpp +78 -0
  221. package/nitrogen/generated/android/c++/JFunc_void_VisibilityState.hpp +77 -0
  222. package/nitrogen/generated/android/c++/JFunc_void_bool.hpp +75 -0
  223. package/nitrogen/generated/android/c++/JFunc_void_std__optional_Location__std__optional_std__string_.hpp +79 -0
  224. package/nitrogen/generated/android/c++/JFunc_void_std__optional_Telemetry__std__optional_std__string_.hpp +85 -0
  225. package/nitrogen/generated/android/c++/JFunc_void_std__optional_bool_.hpp +76 -0
  226. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  227. package/nitrogen/generated/android/c++/JFunc_void_std__string_ColorScheme.hpp +78 -0
  228. package/nitrogen/generated/android/c++/JFunc_void_std__string_ZoomEvent.hpp +78 -0
  229. package/nitrogen/generated/android/c++/JFunc_void_std__string_bool.hpp +76 -0
  230. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__string.hpp +76 -0
  231. package/nitrogen/generated/android/c++/JGlyphImage.hpp +71 -0
  232. package/nitrogen/generated/android/c++/JGridTemplateConfig.hpp +211 -0
  233. package/nitrogen/generated/android/c++/JHybridAndroidAutoTelemetrySpec.cpp +80 -0
  234. package/nitrogen/generated/android/c++/JHybridAndroidAutoTelemetrySpec.hpp +65 -0
  235. package/nitrogen/generated/android/c++/JHybridAutoPlaySpec.cpp +258 -0
  236. package/nitrogen/generated/android/c++/JHybridAutoPlaySpec.hpp +75 -0
  237. package/nitrogen/generated/android/c++/JHybridClusterSpec.cpp +184 -0
  238. package/nitrogen/generated/android/c++/JHybridClusterSpec.hpp +71 -0
  239. package/nitrogen/generated/android/c++/JHybridGridTemplateSpec.cpp +146 -0
  240. package/nitrogen/generated/android/c++/JHybridGridTemplateSpec.hpp +66 -0
  241. package/nitrogen/generated/android/c++/JHybridInformationTemplateSpec.cpp +145 -0
  242. package/nitrogen/generated/android/c++/JHybridInformationTemplateSpec.hpp +66 -0
  243. package/nitrogen/generated/android/c++/JHybridListTemplateSpec.cpp +154 -0
  244. package/nitrogen/generated/android/c++/JHybridListTemplateSpec.hpp +66 -0
  245. package/nitrogen/generated/android/c++/JHybridMapTemplateSpec.cpp +335 -0
  246. package/nitrogen/generated/android/c++/JHybridMapTemplateSpec.hpp +76 -0
  247. package/nitrogen/generated/android/c++/JHybridMessageTemplateSpec.cpp +116 -0
  248. package/nitrogen/generated/android/c++/JHybridMessageTemplateSpec.hpp +65 -0
  249. package/nitrogen/generated/android/c++/JHybridNeoSkolaTemplateSpec.cpp +119 -0
  250. package/nitrogen/generated/android/c++/JHybridNeoSkolaTemplateSpec.hpp +66 -0
  251. package/nitrogen/generated/android/c++/JHybridSearchTemplateSpec.cpp +132 -0
  252. package/nitrogen/generated/android/c++/JHybridSearchTemplateSpec.hpp +66 -0
  253. package/nitrogen/generated/android/c++/JImageLane.hpp +81 -0
  254. package/nitrogen/generated/android/c++/JInformationTemplateConfig.hpp +219 -0
  255. package/nitrogen/generated/android/c++/JKeepType.hpp +62 -0
  256. package/nitrogen/generated/android/c++/JLaneGuidance.hpp +112 -0
  257. package/nitrogen/generated/android/c++/JListTemplateConfig.hpp +215 -0
  258. package/nitrogen/generated/android/c++/JLocation.hpp +61 -0
  259. package/nitrogen/generated/android/c++/JManeuverType.hpp +89 -0
  260. package/nitrogen/generated/android/c++/JMapTemplateConfig.hpp +307 -0
  261. package/nitrogen/generated/android/c++/JMessageTemplateConfig.hpp +217 -0
  262. package/nitrogen/generated/android/c++/JNavigationAlertAction.hpp +79 -0
  263. package/nitrogen/generated/android/c++/JNeoSkolaTemplateConfig.hpp +179 -0
  264. package/nitrogen/generated/android/c++/JNitroAction.hpp +111 -0
  265. package/nitrogen/generated/android/c++/JNitroActionType.hpp +62 -0
  266. package/nitrogen/generated/android/c++/JNitroAlignment.hpp +59 -0
  267. package/nitrogen/generated/android/c++/JNitroAttributedString.hpp +91 -0
  268. package/nitrogen/generated/android/c++/JNitroAttributedStringImage.hpp +70 -0
  269. package/nitrogen/generated/android/c++/JNitroBaseMapTemplateConfig.hpp +201 -0
  270. package/nitrogen/generated/android/c++/JNitroButtonStyle.hpp +68 -0
  271. package/nitrogen/generated/android/c++/JNitroColor.hpp +61 -0
  272. package/nitrogen/generated/android/c++/JNitroGridButton.hpp +91 -0
  273. package/nitrogen/generated/android/c++/JNitroImage.cpp +26 -0
  274. package/nitrogen/generated/android/c++/JNitroImage.hpp +75 -0
  275. package/nitrogen/generated/android/c++/JNitroLoadingManeuver.hpp +57 -0
  276. package/nitrogen/generated/android/c++/JNitroManeuver.cpp +39 -0
  277. package/nitrogen/generated/android/c++/JNitroManeuver.hpp +143 -0
  278. package/nitrogen/generated/android/c++/JNitroMapButton.hpp +87 -0
  279. package/nitrogen/generated/android/c++/JNitroMapButtonType.hpp +59 -0
  280. package/nitrogen/generated/android/c++/JNitroMessageManeuver.hpp +78 -0
  281. package/nitrogen/generated/android/c++/JNitroNavigationAlert.hpp +134 -0
  282. package/nitrogen/generated/android/c++/JNitroRoutingManeuver.hpp +221 -0
  283. package/nitrogen/generated/android/c++/JNitroRow.hpp +111 -0
  284. package/nitrogen/generated/android/c++/JNitroSection.hpp +106 -0
  285. package/nitrogen/generated/android/c++/JNitroSectionType.hpp +59 -0
  286. package/nitrogen/generated/android/c++/JNumericTelemetryItem.hpp +61 -0
  287. package/nitrogen/generated/android/c++/JOffRampType.hpp +65 -0
  288. package/nitrogen/generated/android/c++/JOnRampType.hpp +77 -0
  289. package/nitrogen/generated/android/c++/JPoint.hpp +61 -0
  290. package/nitrogen/generated/android/c++/JPreferredImageLane.hpp +89 -0
  291. package/nitrogen/generated/android/c++/JRouteChoice.hpp +159 -0
  292. package/nitrogen/generated/android/c++/JSafeAreaInsets.hpp +73 -0
  293. package/nitrogen/generated/android/c++/JSearchTemplateConfig.hpp +218 -0
  294. package/nitrogen/generated/android/c++/JStringTelemetryItem.hpp +61 -0
  295. package/nitrogen/generated/android/c++/JTelemetry.hpp +84 -0
  296. package/nitrogen/generated/android/c++/JTrafficSide.hpp +59 -0
  297. package/nitrogen/generated/android/c++/JTravelEstimates.hpp +74 -0
  298. package/nitrogen/generated/android/c++/JTripConfig.hpp +77 -0
  299. package/nitrogen/generated/android/c++/JTripPoint.hpp +80 -0
  300. package/nitrogen/generated/android/c++/JTripPreviewTextConfiguration.hpp +69 -0
  301. package/nitrogen/generated/android/c++/JTripSelectorCallback.hpp +68 -0
  302. package/nitrogen/generated/android/c++/JTripsConfig.hpp +95 -0
  303. package/nitrogen/generated/android/c++/JTurnType.hpp +80 -0
  304. package/nitrogen/generated/android/c++/JVariant_GlyphImage_AssetImage.cpp +26 -0
  305. package/nitrogen/generated/android/c++/JVariant_GlyphImage_AssetImage.hpp +75 -0
  306. package/nitrogen/generated/android/c++/JVariant_PreferredImageLane_ImageLane.cpp +26 -0
  307. package/nitrogen/generated/android/c++/JVariant_PreferredImageLane_ImageLane.hpp +81 -0
  308. package/nitrogen/generated/android/c++/JVehicleTelemetryItem.hpp +70 -0
  309. package/nitrogen/generated/android/c++/JVisibilityState.hpp +65 -0
  310. package/nitrogen/generated/android/c++/JVisibleTravelEstimate.hpp +59 -0
  311. package/nitrogen/generated/android/c++/JZoomEvent.hpp +59 -0
  312. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/AlertActionStyle.kt +22 -0
  313. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/AlertDismissalReason.kt +22 -0
  314. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/AssetImage.kt +53 -0
  315. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/AutoText.kt +44 -0
  316. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ClusterEventName.kt +23 -0
  317. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ColorScheme.kt +21 -0
  318. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Distance.kt +41 -0
  319. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/DistanceUnits.kt +24 -0
  320. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/DurationWithTimeZone.kt +41 -0
  321. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/EventName.kt +21 -0
  322. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ForkType.kt +21 -0
  323. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void.kt +80 -0
  324. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_AlertDismissalReason.kt +80 -0
  325. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_ColorScheme.kt +80 -0
  326. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_Point.kt +80 -0
  327. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_Point_double.kt +80 -0
  328. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_Point_std__optional_Point_.kt +80 -0
  329. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_SafeAreaInsets.kt +80 -0
  330. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_VisibilityState.kt +80 -0
  331. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_bool.kt +80 -0
  332. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_Location__std__optional_std__string_.kt +80 -0
  333. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_Telemetry__std__optional_std__string_.kt +80 -0
  334. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_bool_.kt +80 -0
  335. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string.kt +80 -0
  336. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_ColorScheme.kt +80 -0
  337. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_ZoomEvent.kt +80 -0
  338. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_bool.kt +80 -0
  339. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string_std__string.kt +80 -0
  340. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/GlyphImage.kt +47 -0
  341. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/GridTemplateConfig.kt +72 -0
  342. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAndroidAutoTelemetrySpec.kt +62 -0
  343. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAutoPlaySpec.kt +118 -0
  344. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridClusterSpec.kt +107 -0
  345. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridGridTemplateSpec.kt +62 -0
  346. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridInformationTemplateSpec.kt +62 -0
  347. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridListTemplateSpec.kt +62 -0
  348. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMapTemplateSpec.kt +107 -0
  349. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridMessageTemplateSpec.kt +57 -0
  350. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridNeoSkolaTemplateSpec.kt +62 -0
  351. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridSearchTemplateSpec.kt +62 -0
  352. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ImageLane.kt +41 -0
  353. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/InformationTemplateConfig.kt +75 -0
  354. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/KeepType.kt +22 -0
  355. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/LaneGuidance.kt +41 -0
  356. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ListTemplateConfig.kt +72 -0
  357. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Location.kt +41 -0
  358. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ManeuverType.kt +31 -0
  359. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/MapTemplateConfig.kt +96 -0
  360. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/MessageTemplateConfig.kt +78 -0
  361. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NavigationAlertAction.kt +48 -0
  362. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NeoSkolaTemplateConfig.kt +69 -0
  363. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAction.kt +63 -0
  364. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroActionType.kt +22 -0
  365. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAlignment.kt +21 -0
  366. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAttributedString.kt +41 -0
  367. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAttributedStringImage.kt +41 -0
  368. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroBaseMapTemplateConfig.kt +66 -0
  369. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroButtonStyle.kt +24 -0
  370. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroColor.kt +41 -0
  371. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroGridButton.kt +48 -0
  372. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroImage.kt +59 -0
  373. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroLoadingManeuver.kt +38 -0
  374. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroManeuver.kt +72 -0
  375. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroMapButton.kt +48 -0
  376. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroMapButtonType.kt +21 -0
  377. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroMessageManeuver.kt +47 -0
  378. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroNavigationAlert.kt +69 -0
  379. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroRoutingManeuver.kt +92 -0
  380. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroRow.kt +63 -0
  381. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroSection.kt +44 -0
  382. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroSectionType.kt +21 -0
  383. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NumericTelemetryItem.kt +41 -0
  384. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/OffRampType.kt +23 -0
  385. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/OnRampType.kt +27 -0
  386. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Point.kt +41 -0
  387. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/PreferredImageLane.kt +47 -0
  388. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ReactNativeAutoPlayOnLoad.kt +35 -0
  389. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/RouteChoice.kt +50 -0
  390. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/SafeAreaInsets.kt +50 -0
  391. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/SearchTemplateConfig.kt +81 -0
  392. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/StringTelemetryItem.kt +41 -0
  393. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Telemetry.kt +53 -0
  394. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TrafficSide.kt +21 -0
  395. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TravelEstimates.kt +44 -0
  396. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripConfig.kt +41 -0
  397. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripPoint.kt +47 -0
  398. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripPreviewTextConfiguration.kt +47 -0
  399. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripSelectorCallback.kt +42 -0
  400. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripsConfig.kt +41 -0
  401. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TurnType.kt +28 -0
  402. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Variant_GlyphImage_AssetImage.kt +59 -0
  403. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Variant_PreferredImageLane_ImageLane.kt +59 -0
  404. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/VehicleTelemetryItem.kt +44 -0
  405. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/VisibilityState.kt +23 -0
  406. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/VisibleTravelEstimate.kt +21 -0
  407. package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ZoomEvent.kt +21 -0
  408. package/nitrogen/generated/ios/ReactNativeAutoPlay+autolinking.rb +60 -0
  409. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.cpp +322 -0
  410. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.hpp +1578 -0
  411. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Umbrella.hpp +277 -0
  412. package/nitrogen/generated/ios/ReactNativeAutoPlayAutolinking.mm +105 -0
  413. package/nitrogen/generated/ios/ReactNativeAutoPlayAutolinking.swift +160 -0
  414. package/nitrogen/generated/ios/c++/HybridAutoPlaySpecSwift.cpp +11 -0
  415. package/nitrogen/generated/ios/c++/HybridAutoPlaySpecSwift.hpp +193 -0
  416. package/nitrogen/generated/ios/c++/HybridCarPlayDashboardSpecSwift.cpp +11 -0
  417. package/nitrogen/generated/ios/c++/HybridCarPlayDashboardSpecSwift.hpp +122 -0
  418. package/nitrogen/generated/ios/c++/HybridClusterSpecSwift.cpp +11 -0
  419. package/nitrogen/generated/ios/c++/HybridClusterSpecSwift.hpp +150 -0
  420. package/nitrogen/generated/ios/c++/HybridGridTemplateSpecSwift.cpp +11 -0
  421. package/nitrogen/generated/ios/c++/HybridGridTemplateSpecSwift.hpp +131 -0
  422. package/nitrogen/generated/ios/c++/HybridInformationTemplateSpecSwift.cpp +11 -0
  423. package/nitrogen/generated/ios/c++/HybridInformationTemplateSpecSwift.hpp +137 -0
  424. package/nitrogen/generated/ios/c++/HybridListTemplateSpecSwift.cpp +11 -0
  425. package/nitrogen/generated/ios/c++/HybridListTemplateSpecSwift.hpp +137 -0
  426. package/nitrogen/generated/ios/c++/HybridMapTemplateSpecSwift.cpp +11 -0
  427. package/nitrogen/generated/ios/c++/HybridMapTemplateSpecSwift.hpp +277 -0
  428. package/nitrogen/generated/ios/c++/HybridMessageTemplateSpecSwift.cpp +11 -0
  429. package/nitrogen/generated/ios/c++/HybridMessageTemplateSpecSwift.hpp +119 -0
  430. package/nitrogen/generated/ios/c++/HybridNeoSkolaTemplateSpecSwift.cpp +11 -0
  431. package/nitrogen/generated/ios/c++/HybridNeoSkolaTemplateSpecSwift.hpp +119 -0
  432. package/nitrogen/generated/ios/c++/HybridSearchTemplateSpecSwift.cpp +11 -0
  433. package/nitrogen/generated/ios/c++/HybridSearchTemplateSpecSwift.hpp +128 -0
  434. package/nitrogen/generated/ios/swift/AlertActionStyle.swift +44 -0
  435. package/nitrogen/generated/ios/swift/AlertDismissalReason.swift +44 -0
  436. package/nitrogen/generated/ios/swift/AssetImage.swift +103 -0
  437. package/nitrogen/generated/ios/swift/AutoText.swift +82 -0
  438. package/nitrogen/generated/ios/swift/ClusterEventName.swift +48 -0
  439. package/nitrogen/generated/ios/swift/ColorScheme.swift +40 -0
  440. package/nitrogen/generated/ios/swift/Distance.swift +47 -0
  441. package/nitrogen/generated/ios/swift/DistanceUnits.swift +52 -0
  442. package/nitrogen/generated/ios/swift/DurationWithTimeZone.swift +47 -0
  443. package/nitrogen/generated/ios/swift/EventName.swift +40 -0
  444. package/nitrogen/generated/ios/swift/ForkType.swift +40 -0
  445. package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
  446. package/nitrogen/generated/ios/swift/Func_void_AlertDismissalReason.swift +47 -0
  447. package/nitrogen/generated/ios/swift/Func_void_ColorScheme.swift +47 -0
  448. package/nitrogen/generated/ios/swift/Func_void_Point.swift +47 -0
  449. package/nitrogen/generated/ios/swift/Func_void_Point_double.swift +47 -0
  450. package/nitrogen/generated/ios/swift/Func_void_Point_std__optional_Point_.swift +47 -0
  451. package/nitrogen/generated/ios/swift/Func_void_SafeAreaInsets.swift +47 -0
  452. package/nitrogen/generated/ios/swift/Func_void_VisibilityState.swift +47 -0
  453. package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
  454. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
  455. package/nitrogen/generated/ios/swift/Func_void_std__optional_Location__std__optional_std__string_.swift +54 -0
  456. package/nitrogen/generated/ios/swift/Func_void_std__optional_bool_.swift +54 -0
  457. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  458. package/nitrogen/generated/ios/swift/Func_void_std__string_ColorScheme.swift +47 -0
  459. package/nitrogen/generated/ios/swift/Func_void_std__string_ZoomEvent.swift +47 -0
  460. package/nitrogen/generated/ios/swift/Func_void_std__string_bool.swift +47 -0
  461. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string.swift +47 -0
  462. package/nitrogen/generated/ios/swift/GlyphImage.swift +81 -0
  463. package/nitrogen/generated/ios/swift/GridTemplateConfig.swift +387 -0
  464. package/nitrogen/generated/ios/swift/HybridAutoPlaySpec.swift +66 -0
  465. package/nitrogen/generated/ios/swift/HybridAutoPlaySpec_cxx.swift +365 -0
  466. package/nitrogen/generated/ios/swift/HybridCarPlayDashboardSpec.swift +59 -0
  467. package/nitrogen/generated/ios/swift/HybridCarPlayDashboardSpec_cxx.swift +197 -0
  468. package/nitrogen/generated/ios/swift/HybridClusterSpec.swift +62 -0
  469. package/nitrogen/generated/ios/swift/HybridClusterSpec_cxx.swift +249 -0
  470. package/nitrogen/generated/ios/swift/HybridGridTemplateSpec.swift +57 -0
  471. package/nitrogen/generated/ios/swift/HybridGridTemplateSpec_cxx.swift +149 -0
  472. package/nitrogen/generated/ios/swift/HybridInformationTemplateSpec.swift +57 -0
  473. package/nitrogen/generated/ios/swift/HybridInformationTemplateSpec_cxx.swift +149 -0
  474. package/nitrogen/generated/ios/swift/HybridListTemplateSpec.swift +57 -0
  475. package/nitrogen/generated/ios/swift/HybridListTemplateSpec_cxx.swift +156 -0
  476. package/nitrogen/generated/ios/swift/HybridMapTemplateSpec.swift +67 -0
  477. package/nitrogen/generated/ios/swift/HybridMapTemplateSpec_cxx.swift +304 -0
  478. package/nitrogen/generated/ios/swift/HybridMessageTemplateSpec.swift +56 -0
  479. package/nitrogen/generated/ios/swift/HybridMessageTemplateSpec_cxx.swift +130 -0
  480. package/nitrogen/generated/ios/swift/HybridNeoSkolaTemplateSpec.swift +57 -0
  481. package/nitrogen/generated/ios/swift/HybridNeoSkolaTemplateSpec_cxx.swift +149 -0
  482. package/nitrogen/generated/ios/swift/HybridSearchTemplateSpec.swift +57 -0
  483. package/nitrogen/generated/ios/swift/HybridSearchTemplateSpec_cxx.swift +149 -0
  484. package/nitrogen/generated/ios/swift/ImageLane.swift +85 -0
  485. package/nitrogen/generated/ios/swift/InformationTemplateConfig.swift +417 -0
  486. package/nitrogen/generated/ios/swift/KeepType.swift +44 -0
  487. package/nitrogen/generated/ios/swift/LaneGuidance.swift +97 -0
  488. package/nitrogen/generated/ios/swift/ListTemplateConfig.swift +406 -0
  489. package/nitrogen/generated/ios/swift/Location.swift +47 -0
  490. package/nitrogen/generated/ios/swift/ManeuverType.swift +80 -0
  491. package/nitrogen/generated/ios/swift/MapTemplateConfig.swift +733 -0
  492. package/nitrogen/generated/ios/swift/MessageTemplateConfig.swift +485 -0
  493. package/nitrogen/generated/ios/swift/NavigationAlertAction.swift +81 -0
  494. package/nitrogen/generated/ios/swift/NeoSkolaTemplateConfig.swift +397 -0
  495. package/nitrogen/generated/ios/swift/NitroAction.swift +243 -0
  496. package/nitrogen/generated/ios/swift/NitroActionType.swift +44 -0
  497. package/nitrogen/generated/ios/swift/NitroAlignment.swift +40 -0
  498. package/nitrogen/generated/ios/swift/NitroAttributedString.swift +78 -0
  499. package/nitrogen/generated/ios/swift/NitroAttributedStringImage.swift +73 -0
  500. package/nitrogen/generated/ios/swift/NitroBaseMapTemplateConfig.swift +402 -0
  501. package/nitrogen/generated/ios/swift/NitroButtonStyle.swift +52 -0
  502. package/nitrogen/generated/ios/swift/NitroCarPlayDashboardButton.swift +160 -0
  503. package/nitrogen/generated/ios/swift/NitroColor.swift +47 -0
  504. package/nitrogen/generated/ios/swift/NitroGridButton.swift +95 -0
  505. package/nitrogen/generated/ios/swift/NitroImage.swift +18 -0
  506. package/nitrogen/generated/ios/swift/NitroLoadingManeuver.swift +36 -0
  507. package/nitrogen/generated/ios/swift/NitroManeuver.swift +19 -0
  508. package/nitrogen/generated/ios/swift/NitroMapButton.swift +114 -0
  509. package/nitrogen/generated/ios/swift/NitroMapButtonType.swift +40 -0
  510. package/nitrogen/generated/ios/swift/NitroMessageManeuver.swift +133 -0
  511. package/nitrogen/generated/ios/swift/NitroNavigationAlert.swift +264 -0
  512. package/nitrogen/generated/ios/swift/NitroRoutingManeuver.swift +494 -0
  513. package/nitrogen/generated/ios/swift/NitroRow.swift +263 -0
  514. package/nitrogen/generated/ios/swift/NitroSection.swift +89 -0
  515. package/nitrogen/generated/ios/swift/NitroSectionType.swift +40 -0
  516. package/nitrogen/generated/ios/swift/OffRampType.swift +48 -0
  517. package/nitrogen/generated/ios/swift/OnRampType.swift +64 -0
  518. package/nitrogen/generated/ios/swift/Point.swift +47 -0
  519. package/nitrogen/generated/ios/swift/PreferredImageLane.swift +107 -0
  520. package/nitrogen/generated/ios/swift/RouteChoice.swift +128 -0
  521. package/nitrogen/generated/ios/swift/SafeAreaInsets.swift +99 -0
  522. package/nitrogen/generated/ios/swift/SearchTemplateConfig.swift +456 -0
  523. package/nitrogen/generated/ios/swift/TrafficSide.swift +40 -0
  524. package/nitrogen/generated/ios/swift/TravelEstimates.swift +70 -0
  525. package/nitrogen/generated/ios/swift/TripConfig.swift +47 -0
  526. package/nitrogen/generated/ios/swift/TripPoint.swift +69 -0
  527. package/nitrogen/generated/ios/swift/TripPreviewTextConfiguration.swift +69 -0
  528. package/nitrogen/generated/ios/swift/TripSelectorCallback.swift +47 -0
  529. package/nitrogen/generated/ios/swift/TripsConfig.swift +59 -0
  530. package/nitrogen/generated/ios/swift/TurnType.swift +68 -0
  531. package/nitrogen/generated/ios/swift/Variant_GlyphImage_AssetImage.swift +18 -0
  532. package/nitrogen/generated/ios/swift/Variant_PreferredImageLane_ImageLane.swift +18 -0
  533. package/nitrogen/generated/ios/swift/VisibilityState.swift +48 -0
  534. package/nitrogen/generated/ios/swift/VisibleTravelEstimate.swift +40 -0
  535. package/nitrogen/generated/ios/swift/ZoomEvent.swift +40 -0
  536. package/nitrogen/generated/shared/c++/AlertActionStyle.hpp +80 -0
  537. package/nitrogen/generated/shared/c++/AlertDismissalReason.hpp +80 -0
  538. package/nitrogen/generated/shared/c++/AssetImage.hpp +98 -0
  539. package/nitrogen/generated/shared/c++/AutoText.hpp +86 -0
  540. package/nitrogen/generated/shared/c++/ClusterEventName.hpp +84 -0
  541. package/nitrogen/generated/shared/c++/ColorScheme.hpp +76 -0
  542. package/nitrogen/generated/shared/c++/Distance.hpp +80 -0
  543. package/nitrogen/generated/shared/c++/DistanceUnits.hpp +88 -0
  544. package/nitrogen/generated/shared/c++/DurationWithTimeZone.hpp +79 -0
  545. package/nitrogen/generated/shared/c++/EventName.hpp +76 -0
  546. package/nitrogen/generated/shared/c++/ForkType.hpp +62 -0
  547. package/nitrogen/generated/shared/c++/GlyphImage.hpp +89 -0
  548. package/nitrogen/generated/shared/c++/GridTemplateConfig.hpp +129 -0
  549. package/nitrogen/generated/shared/c++/HybridAndroidAutoTelemetrySpec.cpp +21 -0
  550. package/nitrogen/generated/shared/c++/HybridAndroidAutoTelemetrySpec.hpp +66 -0
  551. package/nitrogen/generated/shared/c++/HybridAutoPlaySpec.cpp +31 -0
  552. package/nitrogen/generated/shared/c++/HybridAutoPlaySpec.hpp +90 -0
  553. package/nitrogen/generated/shared/c++/HybridCarPlayDashboardSpec.cpp +24 -0
  554. package/nitrogen/generated/shared/c++/HybridCarPlayDashboardSpec.hpp +75 -0
  555. package/nitrogen/generated/shared/c++/HybridClusterSpec.cpp +27 -0
  556. package/nitrogen/generated/shared/c++/HybridClusterSpec.hpp +82 -0
  557. package/nitrogen/generated/shared/c++/HybridGridTemplateSpec.cpp +22 -0
  558. package/nitrogen/generated/shared/c++/HybridGridTemplateSpec.hpp +70 -0
  559. package/nitrogen/generated/shared/c++/HybridInformationTemplateSpec.cpp +22 -0
  560. package/nitrogen/generated/shared/c++/HybridInformationTemplateSpec.hpp +69 -0
  561. package/nitrogen/generated/shared/c++/HybridListTemplateSpec.cpp +22 -0
  562. package/nitrogen/generated/shared/c++/HybridListTemplateSpec.hpp +71 -0
  563. package/nitrogen/generated/shared/c++/HybridMapTemplateSpec.cpp +32 -0
  564. package/nitrogen/generated/shared/c++/HybridMapTemplateSpec.hpp +116 -0
  565. package/nitrogen/generated/shared/c++/HybridMessageTemplateSpec.cpp +21 -0
  566. package/nitrogen/generated/shared/c++/HybridMessageTemplateSpec.hpp +63 -0
  567. package/nitrogen/generated/shared/c++/HybridNeoSkolaTemplateSpec.cpp +22 -0
  568. package/nitrogen/generated/shared/c++/HybridNeoSkolaTemplateSpec.hpp +66 -0
  569. package/nitrogen/generated/shared/c++/HybridSearchTemplateSpec.cpp +22 -0
  570. package/nitrogen/generated/shared/c++/HybridSearchTemplateSpec.hpp +69 -0
  571. package/nitrogen/generated/shared/c++/ImageLane.hpp +85 -0
  572. package/nitrogen/generated/shared/c++/InformationTemplateConfig.hpp +133 -0
  573. package/nitrogen/generated/shared/c++/KeepType.hpp +63 -0
  574. package/nitrogen/generated/shared/c++/LaneGuidance.hpp +86 -0
  575. package/nitrogen/generated/shared/c++/ListTemplateConfig.hpp +129 -0
  576. package/nitrogen/generated/shared/c++/Location.hpp +79 -0
  577. package/nitrogen/generated/shared/c++/ManeuverType.hpp +85 -0
  578. package/nitrogen/generated/shared/c++/MapTemplateConfig.hpp +164 -0
  579. package/nitrogen/generated/shared/c++/MessageTemplateConfig.hpp +141 -0
  580. package/nitrogen/generated/shared/c++/NavigationAlertAction.hpp +87 -0
  581. package/nitrogen/generated/shared/c++/NeoSkolaTemplateConfig.hpp +126 -0
  582. package/nitrogen/generated/shared/c++/NitroAction.hpp +120 -0
  583. package/nitrogen/generated/shared/c++/NitroActionType.hpp +80 -0
  584. package/nitrogen/generated/shared/c++/NitroAlignment.hpp +76 -0
  585. package/nitrogen/generated/shared/c++/NitroAttributedString.hpp +83 -0
  586. package/nitrogen/generated/shared/c++/NitroAttributedStringImage.hpp +84 -0
  587. package/nitrogen/generated/shared/c++/NitroBaseMapTemplateConfig.hpp +114 -0
  588. package/nitrogen/generated/shared/c++/NitroButtonStyle.hpp +88 -0
  589. package/nitrogen/generated/shared/c++/NitroCarPlayDashboardButton.hpp +100 -0
  590. package/nitrogen/generated/shared/c++/NitroColor.hpp +79 -0
  591. package/nitrogen/generated/shared/c++/NitroGridButton.hpp +92 -0
  592. package/nitrogen/generated/shared/c++/NitroLoadingManeuver.hpp +75 -0
  593. package/nitrogen/generated/shared/c++/NitroMapButton.hpp +93 -0
  594. package/nitrogen/generated/shared/c++/NitroMapButtonType.hpp +76 -0
  595. package/nitrogen/generated/shared/c++/NitroMessageManeuver.hpp +97 -0
  596. package/nitrogen/generated/shared/c++/NitroNavigationAlert.hpp +127 -0
  597. package/nitrogen/generated/shared/c++/NitroRoutingManeuver.hpp +188 -0
  598. package/nitrogen/generated/shared/c++/NitroRow.hpp +113 -0
  599. package/nitrogen/generated/shared/c++/NitroSection.hpp +90 -0
  600. package/nitrogen/generated/shared/c++/NitroSectionType.hpp +76 -0
  601. package/nitrogen/generated/shared/c++/NumericTelemetryItem.hpp +79 -0
  602. package/nitrogen/generated/shared/c++/OffRampType.hpp +64 -0
  603. package/nitrogen/generated/shared/c++/OnRampType.hpp +68 -0
  604. package/nitrogen/generated/shared/c++/Point.hpp +79 -0
  605. package/nitrogen/generated/shared/c++/PreferredImageLane.hpp +93 -0
  606. package/nitrogen/generated/shared/c++/RouteChoice.hpp +94 -0
  607. package/nitrogen/generated/shared/c++/SafeAreaInsets.hpp +91 -0
  608. package/nitrogen/generated/shared/c++/SearchTemplateConfig.hpp +138 -0
  609. package/nitrogen/generated/shared/c++/StringTelemetryItem.hpp +79 -0
  610. package/nitrogen/generated/shared/c++/Telemetry.hpp +100 -0
  611. package/nitrogen/generated/shared/c++/TrafficSide.hpp +62 -0
  612. package/nitrogen/generated/shared/c++/TravelEstimates.hpp +91 -0
  613. package/nitrogen/generated/shared/c++/TripConfig.hpp +81 -0
  614. package/nitrogen/generated/shared/c++/TripPoint.hpp +89 -0
  615. package/nitrogen/generated/shared/c++/TripPreviewTextConfiguration.hpp +87 -0
  616. package/nitrogen/generated/shared/c++/TripSelectorCallback.hpp +76 -0
  617. package/nitrogen/generated/shared/c++/TripsConfig.hpp +82 -0
  618. package/nitrogen/generated/shared/c++/TurnType.hpp +69 -0
  619. package/nitrogen/generated/shared/c++/VehicleTelemetryItem.hpp +88 -0
  620. package/nitrogen/generated/shared/c++/VisibilityState.hpp +84 -0
  621. package/nitrogen/generated/shared/c++/VisibleTravelEstimate.hpp +76 -0
  622. package/nitrogen/generated/shared/c++/ZoomEvent.hpp +76 -0
  623. package/package.json +75 -0
  624. package/react-native.config.js +16 -0
  625. package/src/AutoPlayHeadlessJsTask.ts +19 -0
  626. package/src/components/MapTemplateContext.tsx +15 -0
  627. package/src/components/SafeAreaInsetsContext.tsx +32 -0
  628. package/src/components/SafeAreaView.tsx +24 -0
  629. package/src/hooks/useAndroidAutoTelemetry.ts +112 -0
  630. package/src/hooks/useFocusedEffect.ts +42 -0
  631. package/src/hooks/useMapTemplate.ts +10 -0
  632. package/src/hooks/useSafeAreaInsets.ts +6 -0
  633. package/src/hooks/useVoiceInput.ts +54 -0
  634. package/src/index.ts +56 -0
  635. package/src/index.web.ts +0 -0
  636. package/src/scenes/AutoPlayCluster.ts +160 -0
  637. package/src/scenes/CarPlayDashboardScene.ts +121 -0
  638. package/src/specs/AndroidAutoTelemetry.nitro.ts +14 -0
  639. package/src/specs/AutoPlay.nitro.ts +94 -0
  640. package/src/specs/CarPlayDashboard.nitro.ts +22 -0
  641. package/src/specs/Cluster.nitro.ts +27 -0
  642. package/src/specs/GridTemplate.nitro.ts +11 -0
  643. package/src/specs/InformationTemplate.nitro.ts +13 -0
  644. package/src/specs/ListTemplate.nitro.ts +13 -0
  645. package/src/specs/MapTemplate.nitro.ts +51 -0
  646. package/src/specs/MessageTemplate.nitro.ts +9 -0
  647. package/src/specs/NeoSkolaTemplate.nitro.ts +10 -0
  648. package/src/specs/SearchTemplate.nitro.ts +13 -0
  649. package/src/templates/GridTemplate.ts +73 -0
  650. package/src/templates/InformationTemplate.ts +131 -0
  651. package/src/templates/ListTemplate.ts +130 -0
  652. package/src/templates/MapTemplate.ts +343 -0
  653. package/src/templates/MessageTemplate.ts +109 -0
  654. package/src/templates/NeoSkolaTemplate.ts +58 -0
  655. package/src/templates/SearchTemplate.ts +98 -0
  656. package/src/templates/Template.ts +109 -0
  657. package/src/types/Button.ts +91 -0
  658. package/src/types/Event.ts +18 -0
  659. package/src/types/Glyphmap.ts +4107 -0
  660. package/src/types/Image.ts +32 -0
  661. package/src/types/Maneuver.ts +247 -0
  662. package/src/types/RootComponent.ts +38 -0
  663. package/src/types/Telemetry.ts +71 -0
  664. package/src/types/Text.ts +26 -0
  665. package/src/types/Trip.ts +79 -0
  666. package/src/utils/NitroAction.ts +234 -0
  667. package/src/utils/NitroAlert.ts +62 -0
  668. package/src/utils/NitroAttributedString.ts +29 -0
  669. package/src/utils/NitroColor.ts +34 -0
  670. package/src/utils/NitroGrid.ts +25 -0
  671. package/src/utils/NitroImage.ts +65 -0
  672. package/src/utils/NitroManeuver.ts +166 -0
  673. package/src/utils/NitroMapButton.ts +47 -0
  674. package/src/utils/NitroSection.ts +103 -0
package/README.md ADDED
@@ -0,0 +1,759 @@
1
+
2
+
3
+
4
+
5
+
6
+ # React Native Auto Play
7
+
8
+ **React Native Auto Play** provides a comprehensive solution for integrating your React Native application with both **Apple CarPlay** and **Android Auto**. This library allows you to build automotive-specific user interfaces using familiar React Native components and concepts.
9
+
10
+ [![npm version](https://img.shields.io/npm/v/@iternio/react-native-auto-play.svg)](https://www.npmjs.com/package/@iternio/react-native-auto-play)
11
+ [![npm downloads](https://img.shields.io/npm/dm/@iternio/react-native-auto-play.svg)](https://www.npmjs.com/package/@iternio/react-native-auto-play)
12
+ [![License](https://img.shields.io/npm/l/@iternio/react-native-auto-play.svg)](https://github.com/Iternio-Planning-AB/react-native-auto-play/blob/master/LICENSE.md)
13
+
14
+ ## Features
15
+
16
+ - **Cross-Platform:** Write once, run on both Apple CarPlay and Android Auto.
17
+ - **Both Architectures:** Supports both the legacy and the new React Native architecture.
18
+ - **Template-Based UI:** Utilize a rich set of templates like `MapTemplate`, `ListTemplate`, `GridTemplate`, and more to build UIs that comply with automotive design guidelines.
19
+ - **Navigation APIs:** Build full-featured navigation experiences with APIs for trip management, maneuvers, and route guidance.
20
+ - **Dashboard & Cluster Support:** Extend your app's presence to the CarPlay Dashboard (CarPlay only) and instrument cluster displays (CarPlay & Android Auto).
21
+ - **Hooks-Based API:** A modern and intuitive API using React Hooks (`useMapTemplate`, `useVoiceInput`, etc.) for interacting with the automotive system.
22
+ - **Headless Operation:** Runs in the background to keep the automotive experience alive even when the main app is not in the foreground.
23
+ - **Powered by [NitroModules](https://nitro.margelo.com/)**
24
+
25
+ ## Installation
26
+
27
+ 1. **Install the package and its peer dependencies:**
28
+
29
+ ```bash
30
+ yarn add @iternio/react-native-auto-play react-native-nitro-modules
31
+ ```
32
+
33
+ 2. **For iOS, install the pods:**
34
+
35
+ ```bash
36
+ cd ios && pod install && cd ..
37
+ ```
38
+
39
+ 3. **For Android, the library will be autolinked.**
40
+
41
+ ## Platform Setup
42
+
43
+ ### iOS
44
+
45
+ #### Bundle identifier
46
+ To get the CarPlay app showing up you need to set a proper Bundle Identifier:
47
+ - Open `example.xcodeproj`
48
+ - Select the example target, go to the **Signing & Capabilities** tab.
49
+ - Under **Signing > Bundle Identifier**, enter your unique bundle ID (e.g., `at.g4rb4g3.autoplay.example`).
50
+
51
+ #### Entitlements
52
+ Create a `Entitlements.plist` file in your project, paste the content below and adjust the **com.apple.developer.carplay-maps** key to your needs. Check [Apple docs](https://developer.apple.com/documentation/carplay/requesting-carplay-entitlements) for details.
53
+
54
+ ```xml
55
+ <?xml version="1.0" encoding="UTF-8"?>
56
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
57
+ <plist version="1.0">
58
+ <dict>
59
+ <key>com.apple.developer.carplay-maps</key>
60
+ <true/>
61
+ <key>application-identifier</key>
62
+ <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
63
+ </dict>
64
+ </plist>
65
+ ```
66
+ - Open `example.xcodeproj`
67
+ - Select the example target, go to the **Build Settings tab** and filter for entitlement.
68
+ - On **Code Signing Entitlements** enter the path to the Entitlements.plist file you just created.
69
+
70
+ #### Scene delegates
71
+ Depending on your needs you need to set up the scene delegates. The library brings following delegates:
72
+
73
+ - WindowApplicationSceneDelegate - The main scene visible on your mobile device
74
+ - HeadUnitSceneDelegate - The main scene on CarPlay device
75
+ - DashboardSceneDelegate - Scene visible on the CarPlay overview screen usualy with some other widgets like calendar, weather or music.
76
+ - ClusterSceneDelegate - Scene visible on a cars instrument cluster.
77
+
78
+ Paste this into your Info.plist and adjust it to your needs. Check [Apple docs](https://developer.apple.com/documentation/carplay/displaying-content-in-carplay) for details.
79
+ ```xml
80
+ <key>UIApplicationSceneManifest</key>
81
+ <dict>
82
+ <key>CPSupportsDashboardNavigationScene</key>
83
+ <true/>
84
+ <key>CPSupportsInstrumentClusterNavigationScene</key>
85
+ <true/>
86
+ <key>UIApplicationSupportsMultipleScenes</key>
87
+ <true/>
88
+ <key>UISceneConfigurations</key>
89
+ <dict>
90
+ <key>CPTemplateApplicationDashboardSceneSessionRoleApplication</key>
91
+ <array>
92
+ <dict>
93
+ <key>UISceneClassName</key>
94
+ <string>CPTemplateApplicationDashboardScene</string>
95
+ <key>UISceneConfigurationName</key>
96
+ <string>CarPlayDashboard</string>
97
+ <key>UISceneDelegateClassName</key>
98
+ <string>DashboardSceneDelegate</string>
99
+ </dict>
100
+ </array>
101
+ <key>CPTemplateApplicationInstrumentClusterSceneSessionRoleApplication</key>
102
+ <array>
103
+ <dict>
104
+ <key>UISceneClassName</key>
105
+ <string>CPTemplateApplicationInstrumentClusterScene</string>
106
+ <key>UISceneConfigurationName</key>
107
+ <string>CarPlayCluster</string>
108
+ <key>UISceneDelegateClassName</key>
109
+ <string>ClusterSceneDelegate</string>
110
+ </dict>
111
+ </array>
112
+ <key>CPTemplateApplicationSceneSessionRoleApplication</key>
113
+ <array>
114
+ <dict>
115
+ <key>UISceneClassName</key>
116
+ <string>CPTemplateApplicationScene</string>
117
+ <key>UISceneConfigurationName</key>
118
+ <string>CarPlayHeadUnit</string>
119
+ <key>UISceneDelegateClassName</key>
120
+ <string>HeadUnitSceneDelegate</string>
121
+ </dict>
122
+ </array>
123
+ <key>UIWindowSceneSessionRoleApplication</key>
124
+ <array>
125
+ <dict>
126
+ <key>UISceneClassName</key>
127
+ <string>UIWindowScene</string>
128
+ <key>UISceneConfigurationName</key>
129
+ <string>WindowApplication</string>
130
+ <key>UISceneDelegateClassName</key>
131
+ <string>WindowApplicationSceneDelegate</string>
132
+ </dict>
133
+ </array>
134
+ </dict>
135
+ </dict>
136
+ ```
137
+
138
+ #### MapTemplate
139
+ if you want to make use of the MapTemplate and render react components you need to add this to your AppDelegate.swift
140
+ This should cover old and new architecture, adjust to your needs!
141
+
142
+ ```swift
143
+ @objc func getRootViewForAutoplay(
144
+ moduleName: String,
145
+ initialProperties: [String: Any]?
146
+ ) -> UIView? {
147
+ if RCTIsNewArchEnabled() {
148
+ if let factory = reactNativeFactory?.rootViewFactory as? ExpoReactRootViewFactory {
149
+ return factory.superView(
150
+ withModuleName: moduleName,
151
+ initialProperties: initialProperties,
152
+ launchOptions: nil
153
+ )
154
+ }
155
+
156
+ return reactNativeFactory?.rootViewFactory.view(
157
+ withModuleName: moduleName,
158
+ initialProperties: initialProperties
159
+ )
160
+ }
161
+
162
+ if let rootView = window?.rootViewController?.view as? RCTRootView {
163
+ return RCTRootView(
164
+ bridge: rootView.bridge,
165
+ moduleName: moduleName,
166
+ initialProperties: initialProperties
167
+ )
168
+ }
169
+
170
+ return nil
171
+ }
172
+ ```
173
+
174
+ #### MapTemplate maneuver dark & light mode
175
+ It is recommended to attach a listener to MapTemplate.onAppearanceDidChange and send maneuver updates based on this to make sure the colors are applied properly.
176
+ Reason for this is that CarPlay does not allow for color updates on maneuvers shown on the screen. You need to send maneuvers with a new id to get them updated properly on the screen.
177
+ The color properties do not need to handle the mode change, best practice is to use ThemedColor whenever possible and set appropriate light and dark mode colors.
178
+ This is mainly required on CarPlay for now since Android Auto lacks light mode.
179
+
180
+ #### Dashboard buttons
181
+ In case you wanna open up your CarPlay app from one of the CarPlay dashboard buttons set `launchHeadUnitScene` on the button and add this to your Info.plist. Make sure to apply your "Bundle Identifier" instead of the example one.
182
+ ```xml
183
+ <key>CFBundleURLTypes</key>
184
+ <array>
185
+ <dict>
186
+ <key>CFBundleTypeRole</key>
187
+ <string>Editor</string>
188
+ <key>CFBundleURLSchemes</key>
189
+ <array>
190
+ <string>at.g4rb4g3.autoplay.example</string>
191
+ </array>
192
+ </dict>
193
+ </array>
194
+ ```
195
+
196
+ ### Android Auto
197
+ No platform specific setup required - we got you covered with all the required stuff.
198
+
199
+ ### Android Auto Customization
200
+ You can customize certain behaviors of the library on Android Auto by setting properties in your app's `android/gradle.properties` file.
201
+
202
+ - **Telemetry Update Interval**: Control how often telemetry data is updated.
203
+ ```properties
204
+ ReactNativeAutoPlay_androidTelemetryUpdateInterval=4000
205
+ ```
206
+ The value is in milliseconds. The default is `4000`.
207
+
208
+ - **UI Scale Factor**: Apply a scaling factor to the React Native UI rendered on the car screen. This does not affect the templates.
209
+ ```properties
210
+ ReactNativeAutoPlay_androidAutoScaleFactor=1.5f
211
+ ```
212
+ The default value is `1.5`.
213
+
214
+ - **Cluster Splash Screen**: Customize the splash screen shown on the instrument cluster.
215
+ ```properties
216
+ # Delay in milliseconds after the root component is rendered before the splash screen hides.
217
+ ReactNativeAutoPlay_clusterSplashDelayMs=1000
218
+ # Duration of the splash screen fade out animation in milliseconds.
219
+ ReactNativeAutoPlay_clusterSplashDurationMs=500
220
+ ```
221
+ The default values are `1000` for the delay and `500` for the duration.
222
+
223
+ ## Icons
224
+ The library is using [Material Symbols](https://fonts.google.com/icons) for iconography. The font is bundled with the library, so no extra setup is required. You can use these icons on both Android Auto and CarPlay.
225
+
226
+ It is also possible to use custom bundled images (e.g. PNG, WEBP or Vector Drawables). Make sure to add them to your native projects.
227
+ - iOS: Add to your `Images.xcassets`
228
+ - Android: Add to `res/drawable`
229
+
230
+ ## Usage
231
+
232
+ ### 1. Register the AutoPlay Components
233
+
234
+ You need to register your AutoPlay components in your app's entry file (e.g., `index.js`). This includes setting up the headless task that runs when CarPlay or Android Auto is connected.
235
+
236
+ ```javascript
237
+ // index.js
238
+ import { AppRegistry } from 'react-native';
239
+ import { name as appName } from './app.json';
240
+ import App from './src/App';
241
+ import registerAutoPlay from './src/AutoPlay'; // Your AutoPlay setup
242
+
243
+ AppRegistry.registerComponent(appName, () => App);
244
+ registerAutoPlay();
245
+ ```
246
+
247
+ ### 2. Create the AutoPlay Experience
248
+
249
+ Create a file (e.g., `src/AutoPlay.js`) to define your automotive UI. This is where you will configure your templates and the React components they will render.
250
+
251
+ ```tsx
252
+ // src/AutoPlay.tsx
253
+ import {
254
+ AutoPlayCluster,
255
+ CarPlayDashboard,
256
+ HybridAutoPlay,
257
+ MapTemplate,
258
+ useMapTemplate,
259
+ } from '@iternio/react-native-auto-play';
260
+ import React, { useEffect } from 'react';
261
+ import { Platform, Text, View } from 'react-native';
262
+
263
+ // A simple component that can be reused across different screens
264
+ const MyCarScreen = ({ title }: { title: string }) => (
265
+ <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
266
+ <Text style={{ color: 'white', fontSize: 24 }}>{title}</Text>
267
+ </View>
268
+ );
269
+
270
+ // The React component to be rendered inside the MapTemplate
271
+ const MapScreen = () => {
272
+ const mapTemplate = useMapTemplate();
273
+
274
+ useEffect(() => {
275
+ // Show an alert on the car screen when the component mounts
276
+ mapTemplate?.showAlert({
277
+ id: 'welcome-alert',
278
+ title: { text: 'Welcome!' },
279
+ subtitle: { text: 'Your app is now running on the car screen.' },
280
+ durationMs: 5000,
281
+ priority: 'low',
282
+ });
283
+ }, [mapTemplate]);
284
+
285
+ return <MyCarScreen title="Hello, Map!" />;
286
+ };
287
+
288
+ const registerAutoPlay = () => {
289
+ const onConnect = () => {
290
+ // When a car is connected, create a MapTemplate and set it as the root
291
+ const rootTemplate = new MapTemplate({
292
+ component: MapScreen, // Render our map component
293
+ headerActions: {
294
+ android: [
295
+ {
296
+ type: 'image',
297
+ image: { name: 'search', type: 'glyph' },
298
+ onPress: () => console.log('Search pressed'),
299
+ },
300
+ {
301
+ type: 'image',
302
+ image: { name: 'cog', type: 'glyph' },
303
+ onPress: () => console.log('Settings pressed'),
304
+ },
305
+ ],
306
+ ios: {
307
+ leadingNavigationBarButtons: [
308
+ {
309
+ type: 'image',
310
+ image: { name: 'search', type: 'glyph' },
311
+ onPress: () => console.log('Search pressed'),
312
+ },
313
+ ],
314
+ trailingNavigationBarButtons: [
315
+ {
316
+ type: 'image',
317
+ image: { name: 'cog', type: 'glyph' },
318
+ onPress: () => console.log('Settings pressed'),
319
+ },
320
+ ],
321
+ },
322
+ },
323
+ });
324
+
325
+ rootTemplate.setRootTemplate();
326
+ };
327
+
328
+ // Register components for the Dashboard and Cluster
329
+ if (Platform.OS === 'ios') {
330
+ CarPlayDashboard.setComponent(() => <MyCarScreen title="Hello, Dashboard!" />);
331
+ }
332
+ AutoPlayCluster.setComponent(() => <MyCarScreen title="Hello, Cluster!" />);
333
+
334
+
335
+ // Add listeners for car connection and disconnection events
336
+ HybridAutoPlay.addListener('didConnect', onConnect);
337
+ HybridAutoPlay.addListener('didDisconnect', () => {
338
+ console.log('Car disconnected');
339
+ });
340
+ };
341
+ export default registerAutoPlay;
342
+ ```
343
+
344
+ ## API Reference
345
+
346
+ ### Main Object
347
+
348
+ - `HybridAutoPlay`: The primary interface for interacting with the native module, handling connection status and events.
349
+
350
+ ### Core Types
351
+
352
+ #### AutoText
353
+ Most text props accept `AutoText` so you can localize and provide variants. You can pass either a string or an object with `text`/`variants` as used throughout the example app.
354
+
355
+ #### AutoImage
356
+ Images are provided as `AutoImage` objects with a `type` and `name`. The built-in icon set is Material Symbols (see **Icons**). You can also use bundled images from your native project.
357
+
358
+ #### RootComponentInitialProps
359
+ All root components rendered by templates/scenes receive `RootComponentInitialProps`:
360
+
361
+ - `id`: Module identifier (e.g. `AutoPlayRoot`, `CarPlayDashboard`, or a cluster UUID).
362
+ - `rootTag`: React Native root tag.
363
+ - `colorScheme`: `'light' | 'dark'` initial color scheme (listen to `onAppearanceDidChange` on `MapTemplate` for updates).
364
+ - `window`: `{ width, height, scale }`.
365
+
366
+ ### Template Configs (Props)
367
+
368
+ Below is a concise overview of the most important props per template. Optional props are marked as **optional**. Required props are marked as **required**.
369
+
370
+ #### MapTemplateConfig
371
+
372
+ | Prop | Type | Required | Notes |
373
+ | --- | --- | --- | --- |
374
+ | `component` | `React.ComponentType<RootComponentInitialProps>` | ✅ | React component to render on the map surface. |
375
+ | `onStopNavigation` | `(template: MapTemplate) => void` | ✅ | Called when navigation is stopped by the system. |
376
+ | `headerActions` | `MapHeaderActions<MapTemplate>` | ❌ | Top action strip. See **Header Actions** below. |
377
+ | `mapButtons` | `MapButtons<MapTemplate>` | ❌ | 1–4 map buttons shown on the map. |
378
+ | `visibleTravelEstimate` | `'first'` `'last'` | ❌ | Which travel estimate to display. |
379
+ | `onDidPan` / `onDidUpdateZoomGestureWithCenter` | callbacks | ❌ | Map gesture events. |
380
+ | `onAppearanceDidChange` | `(colorScheme) => void` | ❌ | Listen for light/dark mode changes. |
381
+ | `onAutoDriveEnabled` | `(template) => void` | ⚠️ | Android-only auto drive callback. Make sure to take action when receiving this and simulate a drive to the set destination. [Check Android docs for details](https://developer.android.com/reference/androidx/car/app/navigation/NavigationManagerCallback#onAutoDriveEnabled()) |
382
+
383
+ #### ListTemplateConfig
384
+
385
+ | Prop | Type | Required | Notes |
386
+ | --- | --- | --- | --- |
387
+ | `title` | `AutoText` | ✅ | Header title. |
388
+ | `sections` | `Section<ListTemplate>` | ❌ | List sections/rows. Not providing anything here will result in a loading indicator on Android and an empty list on iOS. |
389
+ | `headerActions` | `HeaderActions<ListTemplate>` | ❌ | Header actions. See **Header Actions** below. |
390
+ | `mapConfig` | `BaseMapTemplateConfig<ListTemplate>` | ❌ | Android map-with-content layout. |
391
+
392
+ #### GridTemplateConfig
393
+
394
+ | Prop | Type | Required | Notes |
395
+ | --- | --- | --- | --- |
396
+ | `title` | `AutoText` | ✅ | Header title. |
397
+ | `buttons` | `GridButton<GridTemplate>[]` | ✅ | Grid items. Providing an empty array will result in a loading indicator on Android and an empty template on iOS. |
398
+ | `headerActions` | `HeaderActions<GridTemplate>` | ❌ | Header actions. See **Header Actions** below. |
399
+ | `mapConfig` | `BaseMapTemplateConfig<GridTemplate>` | ❌ | Android map-with-content layout. |
400
+
401
+ #### SearchTemplateConfig
402
+
403
+ | Prop | Type | Required | Notes |
404
+ | --- | --- | --- | --- |
405
+ | `title` | `AutoText` | ✅ | Header title. |
406
+ | `results` | `SearchSection<SearchTemplate>` | ❌ | Initial results. |
407
+ | `headerActions` | `HeaderActions<SearchTemplate>` | ❌ | Header actions. See **Header Actions** below. |
408
+ | `searchHint` | `string` | ❌ | Android-only placeholder. |
409
+ | `initialSearchText` | `string` | ❌ | Android-only initial value. |
410
+ | `onSearchTextChanged` | `(text) => void` | ✅ | Fired on text input changes. |
411
+ | `onSearchTextSubmitted` | `(text) => void` | ✅ | Fired on submit. |
412
+
413
+ #### InformationTemplateConfig
414
+
415
+ | Prop | Type | Required | Notes |
416
+ | --- | --- | --- | --- |
417
+ | `title` | `AutoText` | ✅ | Header title. |
418
+ | `items` | `InformationItems` | ❌ | 1–4 rows. |
419
+ | `actions` | platform-specific | ❌ | Up to 2 buttons on Android, up to 3 on iOS. |
420
+ | `headerActions` | `HeaderActions<InformationTemplate>` | ❌ | Header actions. See **Header Actions** below. |
421
+ | `mapConfig` | `BaseMapTemplateConfig<InformationTemplate>` | ❌ | Android map-with-content layout. |
422
+
423
+ #### MessageTemplateConfig
424
+
425
+ | Prop | Type | Required | Notes |
426
+ | --- | --- | --- | --- |
427
+ | `message` | `AutoText` | ✅ | Main message text. |
428
+ | `title` | `AutoText` | ❌ | Android header title. |
429
+ | `image` | `AutoImage` | ❌ | Android-only image above the message. |
430
+ | `actions` | platform-specific | ❌ | Up to 2 buttons on Android, up to 3 on iOS. |
431
+ | `headerActions` | `HeaderActionsAndroid<MessageTemplate>` | ❌ | Android-only header actions. |
432
+ | `mapConfig` | `BaseMapTemplateConfig<MessageTemplate>` | ❌ | Android map-with-content layout. |
433
+
434
+ ### Header Actions (Important)
435
+
436
+ On Android, header actions may be omitted, although this is not recommended. If `headerActions` is `undefined`, the system automatically renders the app icon in the header. Because Android Auto enforces monochrome icons, this can result in a poor-looking button.
437
+
438
+ **Use these rules to avoid crashes:**
439
+
440
+ 1. **For List/Grid/Information/Search/Message templates on Android**, always pass the structured object format (alignment is implicit via `startHeaderAction`/`endHeaderActions`):
441
+
442
+ ```ts
443
+ const headerActions: HeaderActions<MyTemplate> = {
444
+ android: {
445
+ startHeaderAction: { type: 'back', onPress: (t) => HybridAutoPlay.popTemplate() },
446
+ endHeaderActions: [
447
+ { type: 'image', image: { name: 'help', type: 'glyph' }, onPress: () => {} },
448
+ ],
449
+ },
450
+ ios: {
451
+ backButton: { type: 'back', onPress: (t) => HybridAutoPlay.popTemplate() },
452
+ trailingNavigationBarButtons: [
453
+ { type: 'image', image: { name: 'close', type: 'glyph' }, onPress: () => {} },
454
+ ],
455
+ },
456
+ };
457
+ ```
458
+
459
+ ⚠️ **Do not pass a raw array of actions** to `headerActions` on Android for these templates. Arrays are only valid for **MapTemplate** header actions (see below). Passing an array for header-based templates results in actions without alignment and can crash on Android.
460
+
461
+ 2. **For MapTemplate on Android**, you can use the array format (1–4 actions) for the action strip:
462
+
463
+ ```ts
464
+ const mapHeaderActions: MapTemplateConfig['headerActions'] = {
465
+ android: [
466
+ { type: 'image', image: { name: 'list', type: 'glyph' }, onPress: () => {} },
467
+ { type: 'image', image: { name: 'search', type: 'glyph' }, onPress: () => {} },
468
+ ],
469
+ ios: {
470
+ leadingNavigationBarButtons: [
471
+ { type: 'image', image: { name: 'list', type: 'glyph' }, onPress: () => {} },
472
+ ],
473
+ },
474
+ };
475
+ ```
476
+
477
+ **Header action shapes (structured overview):**
478
+
479
+ | Platform | Property | Shape | Limits / Notes |
480
+ | --- | --- | --- | --- |
481
+ | Android (header templates) | `headerActions.android` | `{ startHeaderAction?, endHeaderActions? }` | `endHeaderActions`: 1–2 buttons. `startHeaderAction` can be `appIcon`/`back`/custom. |
482
+ | Android (MapTemplate) | `headerActions.android` | `ActionButton[]` | 1–4 action strip buttons. |
483
+ | iOS | `headerActions.ios` | `{ backButton?, leadingNavigationBarButtons?, trailingNavigationBarButtons? }` | Each list supports 1–2 buttons. `backButton` optional (system back is added if omitted). |
484
+
485
+ ### Actions & Button Types (Quick Reference)
486
+
487
+ - **Android header actions** use `startHeaderAction` + `endHeaderActions`:
488
+ - `startHeaderAction`: `AppButton | BackButton | ActionButton`
489
+ - `endHeaderActions`: 1–2 buttons
490
+ - **If `headerActions` is omitted**: Android renders the **app icon** automatically.
491
+ - **iOS header actions** use:
492
+ - `backButton` (optional, otherwise iOS provides a default back action)
493
+ - `leadingNavigationBarButtons` (1–2)
494
+ - `trailingNavigationBarButtons` (1–2)
495
+ - **MapTemplate map buttons**: 1–4 buttons, including the special `pan` button.
496
+
497
+ ### Event & Listener APIs
498
+
499
+ This section lists the available listeners and lifecycle callbacks so you can wire up connection state, visibility, cluster settings, and system events.
500
+
501
+ #### HybridAutoPlay listeners
502
+
503
+ | API | Payload | Notes |
504
+ | --- | --- | --- |
505
+ | `HybridAutoPlay.addListener(event, cb)` | event: `'didConnect'` `'didDisconnect'` | Connection changes for the head unit. |
506
+ | `HybridAutoPlay.addListenerRenderState(moduleName, cb)` | `cb(visibility: 'willAppear' \| 'didAppear' \| 'willDisappear' \| 'didDisappear')` | Use `AutoPlayModules.*` or a cluster UUID. |
507
+ | `HybridAutoPlay.addListenerVoiceInput(cb)` | `cb(location?, query?)` | Android-only voice input. |
508
+ | `HybridAutoPlay.addSafeAreaInsetsListener(moduleName, cb)` | `cb(insets)` | Safe area inset changes for any module. |
509
+
510
+ ```ts
511
+ import { AutoPlayModules, HybridAutoPlay } from '@iternio/react-native-auto-play';
512
+
513
+ const cleanup = HybridAutoPlay.addListener('didConnect', () => {
514
+ console.log('Head unit connected');
515
+ });
516
+
517
+ const removeVisibility = HybridAutoPlay.addListenerRenderState(
518
+ AutoPlayModules.AutoPlayRoot,
519
+ (state) => console.log('AutoPlayRoot state', state)
520
+ );
521
+ ```
522
+
523
+ #### Template lifecycle callbacks
524
+
525
+ All templates accept these lifecycle callbacks in their config:
526
+
527
+ - `onWillAppear(animated?)`
528
+ - `onDidAppear(animated?)`
529
+ - `onWillDisappear(animated?)`
530
+ - `onDidDisappear(animated?)`
531
+ - `onPopped()` (not supported on all iOS templates, see notes in code)
532
+
533
+ ```ts
534
+ const template = new ListTemplate({
535
+ title: { text: 'Menu' },
536
+ onWillAppear: () => console.log('will appear'),
537
+ onPopped: () => console.log('popped forever'),
538
+ });
539
+ ```
540
+
541
+ #### MapTemplate callbacks
542
+
543
+ Map-specific callbacks live on `MapTemplateConfig`:
544
+
545
+ - `onDidPan({ x, y })`
546
+ - `onDidUpdateZoomGestureWithCenter({ x, y }, scale)`
547
+ - `onClick({ x, y })` (Android)
548
+ - `onDoubleClick({ x, y })` (Android)
549
+ - `onAppearanceDidChange(colorScheme)`
550
+ - `onAutoDriveEnabled(template)` (Android)
551
+ - `onStopNavigation(template)` (**required**)
552
+
553
+ #### AutoPlayCluster listeners (instrument cluster)
554
+
555
+ | API | Payload | Notes |
556
+ | --- | --- | --- |
557
+ | `AutoPlayCluster.addListenerColorScheme(cb)` | `(clusterId, colorScheme)` | iOS + Android. |
558
+ | `AutoPlayCluster.addListenerZoom(cb)` | `(clusterId, zoomEvent)` | iOS only. |
559
+ | `AutoPlayCluster.addListenerCompass(cb)` | `(clusterId, enabled)` | iOS only. |
560
+ | `AutoPlayCluster.addListenerSpeedLimit(cb)` | `(clusterId, enabled)` | iOS only. |
561
+
562
+ ```ts
563
+ const removeCompass = AutoPlayCluster.addListenerCompass((clusterId, enabled) => {
564
+ console.log('Cluster', clusterId, 'compass', enabled);
565
+ });
566
+ ```
567
+
568
+ #### CarPlayDashboard listeners (iOS)
569
+
570
+ | API | Payload | Notes |
571
+ | --- | --- | --- |
572
+ | `CarPlayDashboard.addListener(event, cb)` | event: `'didConnect'` `'didDisconnect'` | Connection changes for the dashboard scene. |
573
+ | `CarPlayDashboard.addListenerRenderState(cb)` | `cb(visibility)` | Scene visibility changes. |
574
+ | `CarPlayDashboard.addListenerColorScheme(cb)` | `cb(colorScheme)` | Light/dark changes. |
575
+
576
+ ### Localization
577
+ The library allows you to pass distances and durations and formats them according to the system defaults.
578
+ For iOS make sure to provide all supported app languages in Info.plist CFBundleLocalizations for this to work properly, missing languages will use CFBundleDevelopmentRegion as fallback which is **en** most of the time. This results in a mix up with the region which might result in **en**_AT instead of **de**_AT for example.
579
+
580
+ ### Component Props
581
+
582
+ #### RootComponentInitialProps
583
+
584
+ Every component registered with a template (e.g., via `MapTemplate`'s `component` prop) or a scene (e.g., `CarPlayDashboard.setComponent`) receives `RootComponentInitialProps` as its props. This object contains important information about the environment where the component is being rendered.
585
+
586
+ - `id`: A unique identifier for the screen. Can be `AutoPlayRoot` for the main screen, `CarPlayDashboard` for the dashboard, or a UUID for cluster displays.
587
+ - `rootTag`: The React Native root tag for the view.
588
+ - `colorScheme`: The initial color scheme (`'dark'` or `'light'`). Listen for changes with the `onAppearanceDidChange` event on the template.
589
+ - `window`: An object containing the dimensions and scale of the screen:
590
+ - `width`: The width of the screen.
591
+ - `height`: The height of the screen.
592
+ - `scale`: The screen's scale factor.
593
+
594
+ **iOS Specific Properties:**
595
+
596
+ On iOS, the component registered with `AutoPlayCluster.setComponent` receives additional props in its `RootComponentInitialProps` that indicate user preferences for the cluster display. You can also listen for changes to these settings.
597
+
598
+ - `compass: boolean`: Indicates if the compass display is enabled by the user. The initial value is passed as a prop.
599
+ - `speedLimit: boolean`: Indicates if the speed limit display is enabled by the user. The initial value is passed as a prop.
600
+
601
+ You can listen for changes to these settings using listeners on the `AutoPlayCluster` object:
602
+
603
+ ```tsx
604
+ // Listen for compass setting changes
605
+ const compassCleanup = AutoPlayCluster.addListenerCompass((clusterId, isEnabled) => {
606
+ console.log(`Compass is now ${isEnabled ? 'enabled' : 'disabled'} for cluster ${clusterId}`);
607
+ });
608
+
609
+ // Listen for speed limit setting changes
610
+ const speedLimitCleanup = AutoPlayCluster.addListenerSpeedLimit((clusterId, isEnabled) => {
611
+ console.log(`Speed limit is now ${isEnabled ? 'enabled' : 'disabled'} for cluster ${clusterId}`);
612
+ });
613
+
614
+ // Don't forget to clean up the listeners when your component unmounts
615
+ useEffect(() => {
616
+ return () => {
617
+ compassCleanup();
618
+ speedLimitCleanup();
619
+ };
620
+ }, []);
621
+ ```
622
+
623
+
624
+ ### Templates
625
+
626
+ | Template | Purpose | Notes |
627
+ | --- | --- | --- |
628
+ | `MapTemplate` | Navigation, map rendering | Use as root; supports map buttons & navigation APIs. |
629
+ | `ListTemplate` | Lists/menus | Supports sections, radio/toggle rows. |
630
+ | `GridTemplate` | Action grid | Use `GridButton` items. |
631
+ | `SearchTemplate` | Search UI | Android-only search bar callbacks. |
632
+ | `InformationTemplate` | Info panels | Android uses PaneTemplate; iOS uses InformationTemplate. |
633
+ | `MessageTemplate` | Modal messages | Always shown on top until popped. |
634
+
635
+ **Template quick examples:**
636
+
637
+ ```ts
638
+ // MapTemplate
639
+ const map = new MapTemplate({
640
+ component: MapScreen,
641
+ onStopNavigation: () => {},
642
+ headerActions: { android: [{ type: 'image', image: { name: 'list', type: 'glyph' }, onPress: () => {} }] },
643
+ });
644
+ map.setRootTemplate();
645
+
646
+ // ListTemplate
647
+ new ListTemplate({
648
+ title: { text: 'Destinations' },
649
+ sections: [{ type: 'default', title: 'Recent', items: [{ type: 'default', title: { text: 'Home' }, onPress: () => {} }] }],
650
+ headerActions: { android: { startHeaderAction: { type: 'back', onPress: () => {} } } },
651
+ }).push();
652
+ ```
653
+
654
+ ### Hooks
655
+
656
+ - `useMapTemplate()`: Get a reference to the parent `MapTemplate` instance.
657
+ - `useVoiceInput()`: Access voice input functionality - Android Auto only.
658
+ - `useSafeAreaInsets()`: Get safe area insets for any root component.
659
+ - `useFocusedEffect()`: A useEffect alternative that executes when the specified component is visible to the user - use any of the `AutoPlayModules` enum or a cluster uuid to sepcify the component the effect should listen for.
660
+ - `useAndroidAutoTelemetry()`: Access to car telemetry data on Android Auto.
661
+ ```tsx
662
+ import {
663
+ useAndroidAutoTelemetry,
664
+ AndroidAutoTelemetryPermissions,
665
+ } from '@iternio/react-native-auto-play';
666
+
667
+ const MyComponent = () => {
668
+ const { telemetry, permissionsGranted, error } = useAndroidAutoTelemetry({
669
+ requiredPermissions: [
670
+ AndroidAutoTelemetryPermissions.Speed,
671
+ AndroidAutoTelemetryPermissions.Energy,
672
+ AndroidAutoTelemetryPermissions.Odometer,
673
+ ],
674
+ });
675
+
676
+ if (!permissionsGranted) {
677
+ return <Text>Waiting for telemetry permissions...</Text>;
678
+ }
679
+
680
+ if (error) {
681
+ return <Text>Error getting telemetry: {error}</Text>;
682
+ }
683
+
684
+ return (
685
+ <View>
686
+ <Text>Speed: {telemetry?.speed?.value} km/h</Text>
687
+ <Text>Fuel Level: {telemetry?.fuelLevel?.value}%</Text>
688
+ <Text>Battery Level: {telemetry?.batteryLevel?.value}%</Text>
689
+ <Text>Range: {telemetry?.range?.value} km</Text>
690
+ <Text>Odometer: {telemetry?.odometer?.value} km</Text>
691
+ </View>
692
+ );
693
+ }
694
+ ```
695
+ The `telemetry` object may contain the following fields. Each field is an object with a `value` and a `timestamp`.
696
+ - `speed`: Speed in km/h.
697
+ - `fuelLevel`: Fuel level in %.
698
+ - `batteryLevel`: Battery level in %.
699
+ - `range`: Range in km.
700
+ - `odometer`: Odometer in km.
701
+ - `vehicle`: Vehicle information (model name, model year, manufacturer).
702
+
703
+
704
+ ### Scenes
705
+
706
+ - `CarPlayDashboard`: A component to render content on the CarPlay dashboard (CarPlay only).
707
+ - `AutoPlayCluster`: A component to render content on the instrument cluster (CarPlay & Android Auto).
708
+
709
+ **Scene APIs (overview):**
710
+
711
+ **CarPlayDashboard (iOS)**
712
+ - `setComponent(component)` — register the React component (call once).
713
+ - `setButtons(buttons)` — **required** to make the dashboard visible.
714
+ - `addListener(event, cb)` — `didConnect` / `didDisconnect`.
715
+ - `addListenerRenderState(cb)` — scene visibility callbacks.
716
+ - `addListenerColorScheme(cb)` — light/dark changes.
717
+
718
+ ```ts
719
+ CarPlayDashboard.setButtons([
720
+ {
721
+ titleVariants: ['Open App'],
722
+ subtitleVariants: ['Dashboard shortcut'],
723
+ image: { name: 'directions_car', type: 'glyph' },
724
+ onPress: () => console.log('open app'),
725
+ },
726
+ ]);
727
+ ```
728
+
729
+ **AutoPlayCluster**
730
+ - `setComponent(component)` — register the cluster component.
731
+ - `setAttributedInactiveDescriptionVariants(variants)` — iOS only inactive text.
732
+ - `addListenerColorScheme(cb)` / `addListenerZoom(cb)` / `addListenerCompass(cb)` / `addListenerSpeedLimit(cb)`.
733
+
734
+ ## Known Issues
735
+
736
+ ### iOS
737
+
738
+ - **Broken exceptions with `react-native-skia`**: When using `react-native-skia` up to version `2.4.7`, exceptions on iOS are not reported correctly. This is fixed in newer versions of `react-native-skia`. For more details, see this [pull request](https://github.com/Shopify/react-native-skia/pull/3595).
739
+ - **AppState on iOS**: The `AppState` module from React Native does not work correctly on iOS because this library uses scenes, which are not supported by the stock `AppState` module. This library provides a custom state listener that works for both Android and iOS. Use `HybridAutoPlay.addListenerRenderState` instead of `AppState`.
740
+ - **Timers stop on screen lock**: iOS stops all timers when the device's main screen is turned off. To ensure timers continue to run (which is often necessary for background tasks related to autoplay), a patch for `react-native` is required. A patch is included in the root `patches/` directory and can be applied using `patch-package`.
741
+ - **expo-splash-screen stuck on iOS**: The `expo-splash-screen` module is broken on iOS because it does not support scenes, which are used by this library. This can cause the splash screen to be stuck on either the mobile device or on CarPlay. To fix this, a patch for `expo-splash-screen` is included in the root `patches/` directory and can be applied using `patch-package`. After applying the patch, you can hide the splash screen for a specific scene by passing the module name to the `hide` or `hideAsync` function. The module name can be one of the values from the `AutoPlayModules` enum or the UUID of a cluster screen.
742
+ ```tsx
743
+ import { hideAsync } from 'expo-splash-screen';
744
+ import { AutoPlayModules } from '@iternio/react-native-auto-play';
745
+
746
+ // Hide the splash screen for the main app
747
+ hideAsync(AutoPlayModules.App);
748
+
749
+ // Hide the splash screen for the CarPlay screen
750
+ hideAsync(AutoPlayModules.AutoPlayRoot);
751
+ ```
752
+
753
+ ## Contributing
754
+
755
+ Contributions are welcome! Please submit a pull request.
756
+
757
+ ## License
758
+
759
+ This project is licensed under the MIT License - see the [LICENSE](../../LICENSE.md) file for details.