@javascriptcommon/react-native-carplay 2.3.11 → 2.4.1-beta.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 (134) hide show
  1. package/android/build.gradle +110 -0
  2. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  3. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  4. package/android/gradle.properties +20 -0
  5. package/android/gradlew +234 -0
  6. package/android/gradlew.bat +89 -0
  7. package/android/src/main/AndroidManifest.xml +30 -0
  8. package/android/src/main/AndroidManifestNew.xml +30 -0
  9. package/android/src/main/java/org/birkir/carplay/CarPlayModule.kt +321 -0
  10. package/android/src/main/java/org/birkir/carplay/CarPlayPackage.kt +18 -0
  11. package/android/src/main/java/org/birkir/carplay/CarPlayService.kt +35 -0
  12. package/android/src/main/java/org/birkir/carplay/CarPlaySession.kt +126 -0
  13. package/android/src/main/java/org/birkir/carplay/parser/Ext.kt +11 -0
  14. package/android/src/main/java/org/birkir/carplay/parser/Parser.kt +18 -0
  15. package/android/src/main/java/org/birkir/carplay/parser/RCTGridTemplate.kt +28 -0
  16. package/android/src/main/java/org/birkir/carplay/parser/RCTListTemplate.kt +64 -0
  17. package/android/src/main/java/org/birkir/carplay/parser/RCTMapTemplate.kt +128 -0
  18. package/android/src/main/java/org/birkir/carplay/parser/RCTMessageTemplate.kt +28 -0
  19. package/android/src/main/java/org/birkir/carplay/parser/RCTPaneTemplate.kt +24 -0
  20. package/android/src/main/java/org/birkir/carplay/parser/RCTSearchTemplate.kt +41 -0
  21. package/android/src/main/java/org/birkir/carplay/parser/RCTTabTemplate.kt +157 -0
  22. package/android/src/main/java/org/birkir/carplay/parser/RCTTemplate.kt +419 -0
  23. package/android/src/main/java/org/birkir/carplay/parser/TemplateParser.kt +35 -0
  24. package/android/src/main/java/org/birkir/carplay/screens/CarScreen.kt +76 -0
  25. package/android/src/main/java/org/birkir/carplay/screens/CarScreenContext.kt +10 -0
  26. package/android/src/main/java/org/birkir/carplay/utils/EventEmitter.kt +167 -0
  27. package/android/src/main/java/org/birkir/carplay/utils/VirtualRenderer.kt +75 -0
  28. package/ios/RCTConvert+RNCarPlay.h +7 -8
  29. package/ios/RCTConvert+RNCarPlay.m +3 -2
  30. package/ios/RNCarPlay.h +11 -14
  31. package/ios/RNCarPlay.m +749 -945
  32. package/ios/RNCarPlayViewController.h +10 -0
  33. package/ios/RNCarPlayViewController.m +50 -0
  34. package/lib/CarPlay.d.ts +183 -0
  35. package/lib/CarPlay.d.ts.map +1 -0
  36. package/lib/index.d.ts +44 -0
  37. package/lib/index.d.ts.map +1 -0
  38. package/lib/interfaces/Action.d.ts +13 -0
  39. package/lib/interfaces/Action.d.ts.map +1 -0
  40. package/lib/interfaces/AlertAction.d.ts +6 -0
  41. package/lib/interfaces/AlertAction.d.ts.map +1 -0
  42. package/lib/interfaces/BarButton.d.ts +39 -0
  43. package/lib/interfaces/BarButton.d.ts.map +1 -0
  44. package/lib/interfaces/CarColor.d.ts +2 -0
  45. package/lib/interfaces/CarColor.d.ts.map +1 -0
  46. package/lib/interfaces/GridButton.d.ts +24 -0
  47. package/lib/interfaces/GridButton.d.ts.map +1 -0
  48. package/lib/interfaces/Header.d.ts +15 -0
  49. package/lib/interfaces/Header.d.ts.map +1 -0
  50. package/lib/interfaces/ListItem.d.ts +90 -0
  51. package/lib/interfaces/ListItem.d.ts.map +1 -0
  52. package/lib/interfaces/ListItemUpdate.d.ts +15 -0
  53. package/lib/interfaces/ListItemUpdate.d.ts.map +1 -0
  54. package/lib/interfaces/ListSection.d.ts +21 -0
  55. package/lib/interfaces/ListSection.d.ts.map +1 -0
  56. package/lib/interfaces/Maneuver.d.ts +31 -0
  57. package/lib/interfaces/Maneuver.d.ts.map +1 -0
  58. package/lib/interfaces/MapButton.d.ts +27 -0
  59. package/lib/interfaces/MapButton.d.ts.map +1 -0
  60. package/lib/interfaces/NavigationAlert.d.ts +44 -0
  61. package/lib/interfaces/NavigationAlert.d.ts.map +1 -0
  62. package/lib/interfaces/NavigationInfo.d.ts +17 -0
  63. package/lib/interfaces/NavigationInfo.d.ts.map +1 -0
  64. package/lib/interfaces/NavigationStep.d.ts +17 -0
  65. package/lib/interfaces/NavigationStep.d.ts.map +1 -0
  66. package/lib/interfaces/Pane.d.ts +29 -0
  67. package/lib/interfaces/Pane.d.ts.map +1 -0
  68. package/lib/interfaces/PauseReason.d.ts +8 -0
  69. package/lib/interfaces/PauseReason.d.ts.map +1 -0
  70. package/lib/interfaces/Place.d.ts +11 -0
  71. package/lib/interfaces/Place.d.ts.map +1 -0
  72. package/lib/interfaces/TextConfiguration.d.ts +6 -0
  73. package/lib/interfaces/TextConfiguration.d.ts.map +1 -0
  74. package/lib/interfaces/TimeRemainingColor.d.ts +2 -0
  75. package/lib/interfaces/TimeRemainingColor.d.ts.map +1 -0
  76. package/lib/interfaces/TravelEstimates.d.ts +37 -0
  77. package/lib/interfaces/TravelEstimates.d.ts.map +1 -0
  78. package/lib/interfaces/VoiceControlState.d.ts +8 -0
  79. package/lib/interfaces/VoiceControlState.d.ts.map +1 -0
  80. package/lib/navigation/NavigationSession.d.ts +18 -0
  81. package/lib/navigation/NavigationSession.d.ts.map +1 -0
  82. package/lib/navigation/Trip.d.ts +22 -0
  83. package/lib/navigation/Trip.d.ts.map +1 -0
  84. package/lib/templates/ActionSheetTemplate.d.ts +18 -0
  85. package/lib/templates/ActionSheetTemplate.d.ts.map +1 -0
  86. package/lib/templates/AlertTemplate.d.ts +17 -0
  87. package/lib/templates/AlertTemplate.d.ts.map +1 -0
  88. package/lib/templates/ContactTemplate.d.ts +36 -0
  89. package/lib/templates/ContactTemplate.d.ts.map +1 -0
  90. package/lib/templates/GridTemplate.d.ts +38 -0
  91. package/lib/templates/GridTemplate.d.ts.map +1 -0
  92. package/lib/templates/InformationTemplate.d.ts +28 -0
  93. package/lib/templates/InformationTemplate.d.ts.map +1 -0
  94. package/lib/templates/ListTemplate.d.ts +127 -0
  95. package/lib/templates/ListTemplate.d.ts.map +1 -0
  96. package/lib/templates/ListTemplate.js +24 -16
  97. package/lib/templates/MapTemplate.d.ts +171 -0
  98. package/lib/templates/MapTemplate.d.ts.map +1 -0
  99. package/lib/templates/NowPlayingTemplate.d.ts +31 -0
  100. package/lib/templates/NowPlayingTemplate.d.ts.map +1 -0
  101. package/lib/templates/PointOfInterestTemplate.d.ts +33 -0
  102. package/lib/templates/PointOfInterestTemplate.d.ts.map +1 -0
  103. package/lib/templates/SearchTemplate.d.ts +32 -0
  104. package/lib/templates/SearchTemplate.d.ts.map +1 -0
  105. package/lib/templates/SearchTemplate.js +2 -2
  106. package/lib/templates/TabBarTemplate.d.ts +27 -0
  107. package/lib/templates/TabBarTemplate.d.ts.map +1 -0
  108. package/lib/templates/Template.d.ts +82 -0
  109. package/lib/templates/Template.d.ts.map +1 -0
  110. package/lib/templates/VoiceControlTemplate.d.ts +18 -0
  111. package/lib/templates/VoiceControlTemplate.d.ts.map +1 -0
  112. package/lib/templates/android/AndroidNavigationBaseTemplate.d.ts +19 -0
  113. package/lib/templates/android/AndroidNavigationBaseTemplate.d.ts.map +1 -0
  114. package/lib/templates/android/MessageTemplate.d.ts +16 -0
  115. package/lib/templates/android/MessageTemplate.d.ts.map +1 -0
  116. package/lib/templates/android/NavigationTemplate.d.ts +44 -0
  117. package/lib/templates/android/NavigationTemplate.d.ts.map +1 -0
  118. package/lib/templates/android/PaneTemplate.d.ts +13 -0
  119. package/lib/templates/android/PaneTemplate.d.ts.map +1 -0
  120. package/lib/templates/android/PlaceListMapTemplate.d.ts +58 -0
  121. package/lib/templates/android/PlaceListMapTemplate.d.ts.map +1 -0
  122. package/lib/templates/android/PlaceListNavigationTemplate.d.ts +51 -0
  123. package/lib/templates/android/PlaceListNavigationTemplate.d.ts.map +1 -0
  124. package/lib/templates/android/RoutePreviewNavigationTemplate.d.ts +60 -0
  125. package/lib/templates/android/RoutePreviewNavigationTemplate.d.ts.map +1 -0
  126. package/package.json +3 -3
  127. package/react-native-carplay.podspec +3 -3
  128. package/src/CarPlay.ts +28 -16
  129. package/src/interfaces/ListItem.ts +14 -8
  130. package/src/interfaces/ListSection.ts +1 -1
  131. package/src/templates/ListTemplate.ts +64 -44
  132. package/src/templates/NowPlayingTemplate.ts +10 -3
  133. package/src/templates/SearchTemplate.ts +2 -2
  134. package/README.md +0 -633
@@ -0,0 +1,75 @@
1
+ package org.birkir.carplay.utils
2
+
3
+ import android.app.Presentation
4
+ import android.content.Context
5
+ import android.hardware.display.DisplayManager
6
+ import android.os.Bundle
7
+ import android.util.Log
8
+ import android.view.Display
9
+ import android.view.ViewGroup
10
+ import androidx.car.app.AppManager
11
+ import androidx.car.app.CarContext
12
+ import androidx.car.app.SurfaceCallback
13
+ import androidx.car.app.SurfaceContainer
14
+ import com.facebook.react.ReactApplication
15
+ import com.facebook.react.ReactRootView
16
+
17
+ /**
18
+ * Renders the view tree into a surface using VirtualDisplay. It runs the ReactNative component registered
19
+ */
20
+ class VirtualRenderer(private val context: CarContext, private val moduleName: String) {
21
+
22
+ private var rootView: ReactRootView? = null
23
+
24
+ init {
25
+ context.getCarService(AppManager::class.java).setSurfaceCallback(object : SurfaceCallback {
26
+ override fun onSurfaceAvailable(surfaceContainer: SurfaceContainer) {
27
+ val surface = surfaceContainer.surface
28
+ if (surface == null) {
29
+ Log.w(TAG, "surface is null")
30
+ } else {
31
+ renderPresentation(surfaceContainer)
32
+ }
33
+ }
34
+ })
35
+ }
36
+
37
+ private fun renderPresentation(container: SurfaceContainer) {
38
+ val manager = context.getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
39
+ val display = manager.createVirtualDisplay(
40
+ "AndroidAutoMapTemplate",
41
+ container.width,
42
+ container.height,
43
+ container.dpi,
44
+ container.surface,
45
+ DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION,
46
+ )
47
+ val presentation = MapPresentation(context, display.display, moduleName)
48
+ presentation.show()
49
+ }
50
+
51
+ inner class MapPresentation(context: Context, display: Display, private val moduleName: String) :
52
+ Presentation(context, display) {
53
+ override fun onCreate(savedInstanceState: Bundle?) {
54
+ super.onCreate(savedInstanceState)
55
+ val instanceManager =
56
+ (context.applicationContext as ReactApplication).reactNativeHost.reactInstanceManager
57
+ if (rootView == null) {
58
+ Log.d(TAG, "onCreate: rootView is null, initializing rootView")
59
+ rootView = ReactRootView(context).apply {
60
+ startReactApplication(instanceManager, moduleName)
61
+ runApplication()
62
+ }
63
+ } else {
64
+ (rootView?.parent as? ViewGroup)?.removeView(rootView)
65
+ }
66
+ rootView?.let {
67
+ setContentView(it)
68
+ }
69
+ }
70
+ }
71
+
72
+ companion object {
73
+ const val TAG = "VirtualRenderer"
74
+ }
75
+ }
@@ -3,17 +3,16 @@
3
3
  #import <CarPlay/CarPlay.h>
4
4
  #import <React/RCTConvert.h>
5
5
 
6
- API_AVAILABLE(ios(12.0))
7
6
  @interface RCTConvert (RNCarPlay)
8
7
 
9
8
  + (CPTripEstimateStyle)CPTripEstimateStyle:(id)json;
10
9
  + (CPPanDirection)CPPanDirection:(id)json;
11
- + (CPAssistantCellPosition)CPAssistantCellPosition:(id)json API_AVAILABLE(ios(15.0));
12
- + (CPAssistantCellVisibility)CPAssistantCellVisibility:(id)json API_AVAILABLE(ios(15.0));
13
- + (CPAssistantCellActionType)CPAssistantCellActionType:(id)json API_AVAILABLE(ios(15.0));
14
- + (CPMapButton *)CPMapButton:(id)json withHandler:(void (^)(CPMapButton *_Nonnull mapButton))handler;
15
- + (CPRouteChoice *)CPRouteChoice:(id)json;
16
- + (MKMapItem *)MKMapItem:(id)json;
17
- + (CPPointOfInterest *)CPPointOfInterest:(id)json API_AVAILABLE(ios(14.0));
10
+ + (CPAssistantCellPosition)CPAssistantCellPosition:(id)json;
11
+ + (CPAssistantCellVisibility)CPAssistantCellVisibility:(id)json;
12
+ + (CPAssistantCellActionType)CPAssistantCellActionType:(id)json;
13
+ + (CPMapButton*)CPMapButton:(id)json withHandler:(void (^)(CPMapButton * _Nonnull mapButton))handler;
14
+ + (CPRouteChoice*)CPRouteChoice:(id)json;
15
+ + (MKMapItem*)MKMapItem:(id)json;
16
+ + (CPPointOfInterest*)CPPointOfInterest:(id)json;
18
17
  + (CPAlertActionStyle)CPAlertActionStyle:(id)json;
19
18
  @end
@@ -35,6 +35,7 @@ RCT_ENUM_CONVERTER(CPAssistantCellActionType, (@{
35
35
  @"startCall": @(CPAssistantCellActionTypeStartCall)
36
36
  }), CPAssistantCellActionTypeStartCall, integerValue)
37
37
 
38
+
38
39
  + (CPMapButton*)CPMapButton:(id)json withHandler:(void (^)(CPMapButton * _Nonnull mapButton))handler {
39
40
  CPMapButton *mapButton = [[CPMapButton alloc] initWithHandler:handler];
40
41
 
@@ -43,7 +44,7 @@ RCT_ENUM_CONVERTER(CPAssistantCellActionType, (@{
43
44
  }
44
45
 
45
46
  if ([json objectForKey:@"focusedImage"]) {
46
- [mapButton setImage:[RCTConvert UIImage:json[@"focusedImage"]]];
47
+ [mapButton setFocusedImage:[RCTConvert UIImage:json[@"focusedImage"]]];
47
48
  }
48
49
 
49
50
  if ([json objectForKey:@"disabled"]) {
@@ -70,7 +71,7 @@ RCT_ENUM_CONVERTER(CPAssistantCellActionType, (@{
70
71
  return [[CPRouteChoice alloc] initWithSummaryVariants:[RCTConvert NSStringArray:json[@"additionalInformationVariants"]] additionalInformationVariants:[RCTConvert NSStringArray:json[@"selectionSummaryVariants"]] selectionSummaryVariants:[RCTConvert NSStringArray:json[@"summaryVariants"]]];
71
72
  }
72
73
 
73
- + (CPPointOfInterest*)CPPointOfInterest:(id)json API_AVAILABLE(ios(14.0)){
74
+ + (CPPointOfInterest*)CPPointOfInterest:(id)json {
74
75
  MKMapItem *location = [RCTConvert MKMapItem:json[@"location"]];
75
76
  NSString *title = [RCTConvert NSString:json[@"title"]];
76
77
  NSString *subtitle = [RCTConvert NSString:json[@"subtitle"]];
package/ios/RNCarPlay.h CHANGED
@@ -5,13 +5,10 @@
5
5
  #import "RCTConvert+RNCarPlay.h"
6
6
  #import "RNCPStore.h"
7
7
 
8
- API_AVAILABLE(ios(12.0))
9
- typedef void (^SearchResultUpdateBlock)(NSArray<CPListItem *> *_Nonnull);
10
- typedef void (^SelectedResultBlock)(void);
8
+ typedef void(^SearchResultUpdateBlock)(NSArray<CPListItem *> * _Nonnull);
9
+ typedef void(^SelectedResultBlock)(void);
11
10
 
12
- API_AVAILABLE(ios(12.0))
13
- @interface RNCarPlay : RCTEventEmitter <RCTBridgeModule, CPInterfaceControllerDelegate, CPSearchTemplateDelegate, CPListTemplateDelegate, CPMapTemplateDelegate, CPTabBarTemplateDelegate, CPPointOfInterestTemplateDelegate, CPNowPlayingTemplateObserver>
14
- {
11
+ @interface RNCarPlay : RCTEventEmitter<RCTBridgeModule, CPInterfaceControllerDelegate, CPSearchTemplateDelegate, CPListTemplateDelegate, CPMapTemplateDelegate, CPTabBarTemplateDelegate, CPPointOfInterestTemplateDelegate, CPNowPlayingTemplateObserver> {
15
12
  CPInterfaceController *interfaceController;
16
13
  CPWindow *window;
17
14
  SearchResultUpdateBlock searchResultBlock;
@@ -19,14 +16,14 @@ API_AVAILABLE(ios(12.0))
19
16
  BOOL isNowPlayingActive;
20
17
  }
21
18
 
22
- @property(nonatomic, retain) CPInterfaceController * _Nonnull interfaceController;
23
- @property(nonatomic, retain) CPWindow * _Nonnull window;
24
- @property(nonatomic, copy) SearchResultUpdateBlock _Nullable searchResultBlock;
25
- @property(nonatomic, copy) SelectedResultBlock _Nullable selectedResultBlock;
26
- @property(nonatomic) BOOL isNowPlayingActive;
27
- @property(nullable, nonatomic, copy) void (^listImageRowHandler)(CPListImageRowItem * _Nonnull item, NSInteger index, dispatch_block_t _Nonnull completionBlock) API_AVAILABLE(ios(14.0));
19
+ @property (nonatomic, retain) CPInterfaceController *interfaceController;
20
+ @property (nonatomic, retain) CPWindow *window;
21
+ @property (nonatomic, copy) SearchResultUpdateBlock searchResultBlock;
22
+ @property (nonatomic, copy) SelectedResultBlock selectedResultBlock;
23
+ @property (nonatomic) BOOL isNowPlayingActive;
28
24
 
29
- + (void)connectWithInterfaceController:(CPInterfaceController *_Nonnull)interfaceController window:(CPWindow *_Nonnull)window;
30
- + (void)disconnect;
25
+ + (void) connectWithInterfaceController:(CPInterfaceController*)interfaceController window:(CPWindow*)window;
26
+ + (void) disconnect;
27
+ - (NSArray<CPListSection*>*) parseSections:(NSArray*)sections templateId:(NSString *)templateId;
31
28
 
32
29
  @end