@iternio/react-native-auto-play 0.1.0 → 0.1.2

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 (37) hide show
  1. package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/VirtualRenderer.kt +16 -5
  2. package/ios/Types.swift +2 -0
  3. package/ios/hybrid/HybridAutoPlay.swift +5 -7
  4. package/ios/hybrid/HybridCarPlayDashboard.swift +7 -3
  5. package/ios/hybrid/HybridCluster.swift +1 -1
  6. package/ios/scenes/AutoPlayScene.swift +41 -31
  7. package/lib/specs/CarPlayDashboard.nitro.d.ts +1 -1
  8. package/lib/specs/VoiceInput.nitro.d.ts +8 -0
  9. package/nitrogen/generated/ios/ReactNativeAutoPlay-Swift-Cxx-Bridge.hpp +9 -9
  10. package/nitrogen/generated/ios/c++/HybridCarPlayDashboardSpecSwift.hpp +3 -1
  11. package/nitrogen/generated/ios/swift/HybridCarPlayDashboardSpec.swift +1 -1
  12. package/nitrogen/generated/ios/swift/HybridCarPlayDashboardSpec_cxx.swift +12 -4
  13. package/nitrogen/generated/shared/c++/HybridCarPlayDashboardSpec.hpp +1 -1
  14. package/package.json +1 -1
  15. package/src/specs/CarPlayDashboard.nitro.ts +1 -1
  16. package/lib/specs/HybridAndroidAutoTelemetry.nitro.d.ts +0 -15
  17. package/lib/specs/HybridAutoPlay.nitro.d.ts +0 -64
  18. package/lib/specs/HybridAutoPlay.nitro.js +0 -1
  19. package/lib/specs/HybridCarPlayDashboard.nitro.d.ts +0 -22
  20. package/lib/specs/HybridCarPlayDashboard.nitro.js +0 -1
  21. package/lib/specs/HybridCluster.nitro.d.ts +0 -19
  22. package/lib/specs/HybridCluster.nitro.js +0 -1
  23. package/lib/specs/HybridGridTemplate.nitro.d.ts +0 -14
  24. package/lib/specs/HybridGridTemplate.nitro.js +0 -1
  25. package/lib/specs/HybridInformationTemplate.nitro.d.ts +0 -13
  26. package/lib/specs/HybridInformationTemplate.nitro.js +0 -1
  27. package/lib/specs/HybridListTemplate.nitro.d.ts +0 -13
  28. package/lib/specs/HybridListTemplate.nitro.js +0 -1
  29. package/lib/specs/HybridMapTemplate.nitro.d.ts +0 -25
  30. package/lib/specs/HybridMapTemplate.nitro.js +0 -1
  31. package/lib/specs/HybridMessageTemplate.nitro.d.ts +0 -12
  32. package/lib/specs/HybridMessageTemplate.nitro.js +0 -1
  33. package/lib/specs/HybridSearchTemplate.nitro.d.ts +0 -13
  34. package/lib/specs/HybridSearchTemplate.nitro.js +0 -1
  35. package/lib/types/GestureEvents.d.ts +0 -37
  36. package/lib/types/GestureEvents.js +0 -1
  37. /package/lib/specs/{HybridAndroidAutoTelemetry.nitro.js → VoiceInput.nitro.js} +0 -0
@@ -43,6 +43,10 @@ class VirtualRenderer(
43
43
  private val isCluster: Boolean = false
44
44
  ) {
45
45
  private lateinit var uiManager: FabricUIManager
46
+ private fun isUiManagerInitialized(): Boolean {
47
+ return ::uiManager.isInitialized
48
+ }
49
+
46
50
  private lateinit var display: Display
47
51
  private lateinit var reactContext: ReactContext
48
52
 
@@ -51,6 +55,9 @@ class VirtualRenderer(
51
55
  private var reactSurfaceId: Int? = null
52
56
 
53
57
  private lateinit var reactRootView: ReactRootView
58
+ private fun isReactRootViewInitialized(): Boolean {
59
+ return ::reactRootView.isInitialized
60
+ }
54
61
 
55
62
  private var height: Int = 0
56
63
  private var width: Int = 0
@@ -270,7 +277,7 @@ class VirtualRenderer(
270
277
  val reactNativeScale = virtualScreenDensity / mainScreenDensity * BuildConfig.SCALE_FACTOR
271
278
 
272
279
  if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
273
- if (!this::uiManager.isInitialized) {
280
+ if (!isUiManagerInitialized()) {
274
281
  // this makes sure we have all required instances
275
282
  // no matter if the app is launched on the phone or AA first
276
283
  return
@@ -299,7 +306,7 @@ class VirtualRenderer(
299
306
 
300
307
  var splashScreenView: View? = null
301
308
 
302
- if (!this@VirtualRenderer::reactRootView.isInitialized) {
309
+ if (!isReactRootViewInitialized()) {
303
310
  splashScreenView =
304
311
  if (isCluster) getClusterSplashScreen(context, height, width) else null
305
312
 
@@ -470,11 +477,15 @@ class VirtualRenderer(
470
477
  val renderer = virtualRenderer[moduleId]
471
478
 
472
479
  if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
473
- renderer?.reactSurfaceId?.let {
474
- renderer.uiManager.stopSurface(it)
480
+ if (renderer?.isUiManagerInitialized() == true) {
481
+ renderer.reactSurfaceId?.let {
482
+ renderer.uiManager.stopSurface(it)
483
+ }
475
484
  }
476
485
  } else {
477
- renderer?.reactRootView?.unmountReactApplication()
486
+ if (renderer?.isReactRootViewInitialized() == true) {
487
+ renderer.reactRootView.unmountReactApplication()
488
+ }
478
489
  }
479
490
 
480
491
  virtualRenderer.remove(moduleId)
package/ios/Types.swift CHANGED
@@ -18,4 +18,6 @@ enum AutoPlayError: Error {
18
18
  case propertyNotFoundError(String)
19
19
  case unsupportedVersion(String)
20
20
  case invalidTemplateType(String)
21
+ case noUiWindow(String)
22
+ case initReactRootViewFailed(String)
21
23
  }
@@ -129,15 +129,13 @@ class HybridAutoPlay: HybridAutoPlaySpec {
129
129
  scene,
130
130
  interfaceController in
131
131
  let carPlayTemplate = template.getTemplate()
132
-
132
+
133
133
  if carPlayTemplate is CPMapTemplate {
134
- await MainActor.run {
135
- scene.initRootView()
134
+ try await MainActor.run {
135
+ try scene.initRootView()
136
136
  }
137
137
  }
138
138
 
139
- await template.invalidate()
140
-
141
139
  let _ = try await interfaceController.setRootTemplate(
142
140
  carPlayTemplate,
143
141
  animated: false
@@ -162,9 +160,9 @@ class HybridAutoPlay: HybridAutoPlaySpec {
162
160
 
163
161
  return try await RootModule.withInterfaceController {
164
162
  interfaceController in
165
-
163
+
166
164
  let carPlayTemplate = template.getTemplate()
167
-
165
+
168
166
  if carPlayTemplate is CPAlertTemplate {
169
167
  let animated = try await
170
168
  !interfaceController.dismissTemplate(
@@ -30,9 +30,13 @@ class HybridCarPlayDashboard: HybridCarPlayDashboardSpec {
30
30
  }
31
31
  }
32
32
 
33
- func initRootView() throws {
34
- let scene = try SceneStore.getDashboardScene()
35
- scene?.initRootView()
33
+ func initRootView() throws -> Promise<Void> {
34
+ return Promise.async {
35
+ guard let scene = try SceneStore.getDashboardScene() else { return }
36
+ try await MainActor.run {
37
+ try scene.initRootView()
38
+ }
39
+ }
36
40
  }
37
41
 
38
42
  func setButtons(buttons: [NitroCarPlayDashboardButton]) throws -> Promise<
@@ -60,7 +60,7 @@ class HybridCluster: HybridClusterSpec {
60
60
  let scene = try SceneStore.getClusterScene(
61
61
  clusterId: clusterId
62
62
  )
63
- scene?.initRootView()
63
+ try scene?.initRootView()
64
64
  }
65
65
  } else {
66
66
  throw AutoPlayError.unsupportedVersion(
@@ -9,7 +9,7 @@ import CarPlay
9
9
 
10
10
  class AutoPlayScene: UIResponder {
11
11
  var initialProperties: [String: Any] = [:]
12
- var moduleName: String?
12
+ let moduleName: String
13
13
  var window: UIWindow?
14
14
  var isConnected = false
15
15
  var interfaceController: AutoPlayInterfaceController?
@@ -17,7 +17,11 @@ class AutoPlayScene: UIResponder {
17
17
  var traitCollection = UIScreen.main.traitCollection
18
18
  var safeAreaInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
19
19
 
20
- override init() {}
20
+ override init() {
21
+ fatalError(
22
+ "init() should never be called - use init(moduleName: String) instead"
23
+ )
24
+ }
21
25
 
22
26
  init(moduleName: String) {
23
27
  self.moduleName = moduleName
@@ -35,6 +39,13 @@ class AutoPlayScene: UIResponder {
35
39
  current
36
40
  }
37
41
 
42
+ // Get trait collection from the CarPlay interface controller
43
+ if let carTraitCollection = interfaceController?.interfaceController
44
+ .carTraitCollection
45
+ {
46
+ self.traitCollection = carTraitCollection
47
+ }
48
+
38
49
  if let window = self.window {
39
50
  ViewUtils.showLaunchScreen(window: window)
40
51
  safeAreaInsets = window.safeAreaInsets
@@ -46,46 +57,45 @@ class AutoPlayScene: UIResponder {
46
57
  self.window = nil
47
58
  isConnected = false
48
59
 
49
- guard let moduleName = self.moduleName else {
50
- return
51
- }
52
-
53
60
  SceneStore.removeScene(moduleName: moduleName)
54
61
  }
55
62
 
56
63
  func setState(state: VisibilityState) {
57
- guard let moduleName = self.moduleName else {
58
- return
59
- }
60
-
61
64
  SceneStore.setState(moduleName: moduleName, state: state)
62
65
  }
63
66
 
64
- func initRootView() {
65
- DispatchQueue.main.async {
66
- guard let window = self.window else {
67
- return
68
- }
69
- guard let moduleName = self.moduleName else {
70
- return
71
- }
72
-
73
- guard
74
- let rootView = ViewUtils.getRootView(
75
- moduleName: moduleName,
76
- initialProps: self.initialProperties
77
- )
78
- else { return }
79
-
80
- window.rootViewController = AutoPlaySceneViewController(
81
- view: rootView,
82
- moduleName: moduleName
67
+ @MainActor
68
+ func initRootView() throws {
69
+ guard let window = self.window else {
70
+ throw AutoPlayError.noUiWindow(
71
+ "window nil for module: \(moduleName)"
72
+ )
73
+ }
74
+
75
+ guard
76
+ let rootView = ViewUtils.getRootView(
77
+ moduleName: moduleName,
78
+ initialProps: self.initialProperties
79
+ )
80
+ else {
81
+ throw AutoPlayError.initReactRootViewFailed(
82
+ "could not create react root view for module: \(moduleName)"
83
83
  )
84
- window.makeKeyAndVisible()
85
84
  }
85
+
86
+ window.rootViewController = AutoPlaySceneViewController(
87
+ view: rootView,
88
+ moduleName: moduleName
89
+ )
90
+ window.makeKeyAndVisible()
86
91
  }
87
92
 
88
93
  open func traitCollectionDidChange(traitCollection: UITraitCollection) {
94
+ if self.traitCollection.userInterfaceStyle
95
+ == traitCollection.userInterfaceStyle
96
+ {
97
+ return
98
+ }
89
99
  self.traitCollection = traitCollection
90
100
  TemplateStore.traitCollectionDidChange()
91
101
  }
@@ -93,7 +103,7 @@ class AutoPlayScene: UIResponder {
93
103
  open func safeAreaInsetsDidChange(safeAreaInsets: UIEdgeInsets) {
94
104
  self.safeAreaInsets = safeAreaInsets
95
105
  HybridAutoPlay.emitSafeAreaInsets(
96
- moduleName: moduleName!,
106
+ moduleName: moduleName,
97
107
  safeAreaInsets: safeAreaInsets
98
108
  )
99
109
  }
@@ -16,7 +16,7 @@ export interface CarPlayDashboard extends HybridObject<{
16
16
  }> {
17
17
  addListener(eventType: EventName, callback: () => void): CleanupCallback;
18
18
  setButtons(buttons: Array<NitroCarPlayDashboardButton>): Promise<void>;
19
- initRootView(): void;
19
+ initRootView(): Promise<void>;
20
20
  addListenerColorScheme(callback: (payload: ColorScheme) => void): CleanupCallback;
21
21
  }
22
22
  export {};
@@ -0,0 +1,8 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+ import type { CleanupCallback } from '../types/Event';
3
+ export interface VoiceInput extends HybridObject<{
4
+ android: 'kotlin';
5
+ ios: 'swift';
6
+ }> {
7
+ registerVoiceInputListener(callback: (voiceInputResult?: string, error?: string) => void): CleanupCallback;
8
+ }
@@ -613,15 +613,6 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay::bridge::swift {
613
613
  using std__weak_ptr_HybridCarPlayDashboardSpec_ = std::weak_ptr<HybridCarPlayDashboardSpec>;
614
614
  inline std__weak_ptr_HybridCarPlayDashboardSpec_ weakify_std__shared_ptr_HybridCarPlayDashboardSpec_(const std::shared_ptr<HybridCarPlayDashboardSpec>& strong) noexcept { return strong; }
615
615
 
616
- // pragma MARK: Result<void>
617
- using Result_void_ = Result<void>;
618
- inline Result_void_ create_Result_void_() noexcept {
619
- return Result<void>::withValue();
620
- }
621
- inline Result_void_ create_Result_void_(const std::exception_ptr& error) noexcept {
622
- return Result<void>::withError(error);
623
- }
624
-
625
616
  // pragma MARK: std::function<void(const std::string& /* clusterId */)>
626
617
  /**
627
618
  * Specialized version of `std::function<void(const std::string&)>`.
@@ -759,6 +750,15 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay::bridge::swift {
759
750
  using std__weak_ptr_HybridClusterSpec_ = std::weak_ptr<HybridClusterSpec>;
760
751
  inline std__weak_ptr_HybridClusterSpec_ weakify_std__shared_ptr_HybridClusterSpec_(const std::shared_ptr<HybridClusterSpec>& strong) noexcept { return strong; }
761
752
 
753
+ // pragma MARK: Result<void>
754
+ using Result_void_ = Result<void>;
755
+ inline Result_void_ create_Result_void_() noexcept {
756
+ return Result<void>::withValue();
757
+ }
758
+ inline Result_void_ create_Result_void_(const std::exception_ptr& error) noexcept {
759
+ return Result<void>::withError(error);
760
+ }
761
+
762
762
  // pragma MARK: std::function<void(std::optional<bool> /* animated */)>
763
763
  /**
764
764
  * Specialized version of `std::function<void(std::optional<bool>)>`.
@@ -98,11 +98,13 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
98
98
  auto __value = std::move(__result.value());
99
99
  return __value;
100
100
  }
101
- inline void initRootView() override {
101
+ inline std::shared_ptr<Promise<void>> initRootView() override {
102
102
  auto __result = _swiftPart.initRootView();
103
103
  if (__result.hasError()) [[unlikely]] {
104
104
  std::rethrow_exception(__result.error());
105
105
  }
106
+ auto __value = std::move(__result.value());
107
+ return __value;
106
108
  }
107
109
  inline std::function<void()> addListenerColorScheme(const std::function<void(ColorScheme /* payload */)>& callback) override {
108
110
  auto __result = _swiftPart.addListenerColorScheme(callback);
@@ -17,7 +17,7 @@ public protocol HybridCarPlayDashboardSpec_protocol: HybridObject {
17
17
  // Methods
18
18
  func addListener(eventType: EventName, callback: @escaping () -> Void) throws -> () -> Void
19
19
  func setButtons(buttons: [NitroCarPlayDashboardButton]) throws -> Promise<Void>
20
- func initRootView() throws -> Void
20
+ func initRootView() throws -> Promise<Void>
21
21
  func addListenerColorScheme(callback: @escaping (_ payload: ColorScheme) -> Void) throws -> () -> Void
22
22
  }
23
23
 
@@ -158,13 +158,21 @@ open class HybridCarPlayDashboardSpec_cxx {
158
158
  }
159
159
 
160
160
  @inline(__always)
161
- public final func initRootView() -> bridge.Result_void_ {
161
+ public final func initRootView() -> bridge.Result_std__shared_ptr_Promise_void___ {
162
162
  do {
163
- try self.__implementation.initRootView()
164
- return bridge.create_Result_void_()
163
+ let __result = try self.__implementation.initRootView()
164
+ let __resultCpp = { () -> bridge.std__shared_ptr_Promise_void__ in
165
+ let __promise = bridge.create_std__shared_ptr_Promise_void__()
166
+ let __promiseHolder = bridge.wrap_std__shared_ptr_Promise_void__(__promise)
167
+ __result
168
+ .then({ __result in __promiseHolder.resolve() })
169
+ .catch({ __error in __promiseHolder.reject(__error.toCpp()) })
170
+ return __promise
171
+ }()
172
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__resultCpp)
165
173
  } catch (let __error) {
166
174
  let __exceptionPtr = __error.toCpp()
167
- return bridge.create_Result_void_(__exceptionPtr)
175
+ return bridge.create_Result_std__shared_ptr_Promise_void___(__exceptionPtr)
168
176
  }
169
177
  }
170
178
 
@@ -60,7 +60,7 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
60
60
  // Methods
61
61
  virtual std::function<void()> addListener(EventName eventType, const std::function<void()>& callback) = 0;
62
62
  virtual std::shared_ptr<Promise<void>> setButtons(const std::vector<NitroCarPlayDashboardButton>& buttons) = 0;
63
- virtual void initRootView() = 0;
63
+ virtual std::shared_ptr<Promise<void>> initRootView() = 0;
64
64
  virtual std::function<void()> addListenerColorScheme(const std::function<void(ColorScheme /* payload */)>& callback) = 0;
65
65
 
66
66
  protected:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iternio/react-native-auto-play",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Android Auto and Apple CarPlay for react-native",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -17,6 +17,6 @@ interface NitroCarPlayDashboardButton extends BaseCarPlayDashboardButton {
17
17
  export interface CarPlayDashboard extends HybridObject<{ ios: 'swift' }> {
18
18
  addListener(eventType: EventName, callback: () => void): CleanupCallback;
19
19
  setButtons(buttons: Array<NitroCarPlayDashboardButton>): Promise<void>;
20
- initRootView(): void;
20
+ initRootView(): Promise<void>;
21
21
  addListenerColorScheme(callback: (payload: ColorScheme) => void): CleanupCallback;
22
22
  }
@@ -1,15 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { CleanupCallback } from '../types/Event';
3
- import type { Telemetry } from '../types/Telemetry';
4
- export interface HybridAndroidAutoTelemetry extends HybridObject<{
5
- android: 'kotlin';
6
- }> {
7
- /**
8
- * Register a listener for Android Auto telemetry data. Should be registered only after the telemetry permissions are granted otherwise no data will be received.
9
- * @param callback the callback to receive the telemetry data
10
- * @param error the error message if the telemetry listener failed to start
11
- * @returns callback to remove the listener
12
- * @namespace Android
13
- */
14
- registerTelemetryListener(callback: (tlm?: Telemetry, error?: string) => void): CleanupCallback;
15
- }
@@ -1,64 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { TemplateConfig } from '../templates/Template';
3
- import type { CleanupCallback, EventName, SafeAreaInsets, VisibilityState } from '../types/Event';
4
- import type { NitroAction } from '../utils/NitroAction';
5
- export interface NitroTemplateConfig extends TemplateConfig {
6
- id: string;
7
- }
8
- export interface HybridAutoPlay extends HybridObject<{
9
- android: 'kotlin';
10
- ios: 'swift';
11
- }> {
12
- /**
13
- * attach a listener for didConnect and didDisconnect
14
- * @namespace all
15
- * @param eventType generic events
16
- * @returns callback to remove the listener
17
- */
18
- addListener(eventType: EventName, callback: () => void): CleanupCallback;
19
- /**
20
- * adds a listener for the session/scene state
21
- * fires willAppear & didAppear when the scene/session is visible
22
- * fires willDisappear & didDisappear when the scene/session is not visible
23
- * @param moduleName on of @AutoPlayModules, a cluster scene uuid or your main for the WindowApplicationSceneDelegate
24
- */
25
- addListenerRenderState(moduleName: string, callback: (payload: VisibilityState) => void): CleanupCallback;
26
- /**
27
- * sets the specified template as root template, initializes a new stack
28
- * Promise might contain an error message in case setting root template failed
29
- * can be used on any Android screen/iOS scene
30
- */
31
- setRootTemplate(templateId: string): Promise<void>;
32
- /**
33
- * push a template to the AutoPlayRoot Android screen/iOS scene
34
- */
35
- pushTemplate(templateId: string): Promise<void>;
36
- /**
37
- * remove the top template from the stack
38
- * @param animate - defaults to true
39
- */
40
- popTemplate(animate?: boolean): Promise<void>;
41
- /**
42
- * remove all templates from the stack except the root template
43
- * @param animate - defaults to true
44
- */
45
- popToRootTemplate(animate?: boolean): Promise<void>;
46
- /**
47
- * removes all templates until the specified one is the top template
48
- */
49
- popToTemplate(templateId: string, animate?: boolean): Promise<void>;
50
- /**
51
- * callback for safe area insets changes
52
- * @param insets the insets that you use to determine the safe area for this view.
53
- */
54
- addSafeAreaInsetsListener(moduleName: string, callback: (insets: SafeAreaInsets) => void): CleanupCallback;
55
- /**
56
- * update a templates headerActions
57
- */
58
- setTemplateHeaderActions(templateId: string, headerActions?: Array<NitroAction>): void;
59
- /**
60
- * Check if AutoPlay is connected.
61
- * @returns true if AutoPlay is connected, false otherwise.
62
- */
63
- isConnected(): boolean;
64
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,22 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { CleanupCallback, EventName } from '../types/Event';
3
- import type { ColorScheme } from '../types/RootComponent';
4
- import type { NitroImage } from '../utils/NitroImage';
5
- export interface BaseCarPlayDashboardButton {
6
- titleVariants: Array<string>;
7
- subtitleVariants: Array<string>;
8
- onPress: () => void;
9
- launchHeadUnitScene?: boolean;
10
- }
11
- interface NitroCarPlayDashboardButton extends BaseCarPlayDashboardButton {
12
- image: NitroImage;
13
- }
14
- export interface HybridCarPlayDashboard extends HybridObject<{
15
- ios: 'swift';
16
- }> {
17
- addListener(eventType: EventName, callback: () => void): CleanupCallback;
18
- setButtons(buttons: Array<NitroCarPlayDashboardButton>): Promise<void>;
19
- initRootView(): void;
20
- addListenerColorScheme(callback: (payload: ColorScheme) => void): CleanupCallback;
21
- }
22
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,19 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { CleanupCallback } from '../types/Event';
3
- import type { ColorScheme } from '../types/RootComponent';
4
- import type { NitroAttributedString } from '../utils/NitroAttributedString';
5
- type ClusterEventName = 'didConnect' | 'didConnectWithWindow' | 'didDisconnect' | 'didDisconnectFromWindow';
6
- export type ZoomEvent = 'in' | 'out';
7
- export interface HybridCluster extends HybridObject<{
8
- android: 'kotlin';
9
- ios: 'swift';
10
- }> {
11
- addListener(eventType: ClusterEventName, callback: (clusterId: string) => void): CleanupCallback;
12
- initRootView(clusterId: string): Promise<void>;
13
- setAttributedInactiveDescriptionVariants(clusterId: string, attributedInactiveDescriptionVariants: Array<NitroAttributedString>): void;
14
- addListenerColorScheme(callback: (clusterId: string, payload: ColorScheme) => void): CleanupCallback;
15
- addListenerZoom(callback: (clusterId: string, payload: ZoomEvent) => void): CleanupCallback;
16
- addListenerCompass(callback: (clusterId: string, payload: boolean) => void): CleanupCallback;
17
- addListenerSpeedLimit(callback: (clusterId: string, payload: boolean) => void): CleanupCallback;
18
- }
19
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,14 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { NitroGridTemplateConfig } from '../templates/GridTemplate';
3
- import type { NitroGridButton } from '../utils/NitroGrid';
4
- import type { NitroTemplateConfig } from './HybridAutoPlay.nitro';
5
- interface GridTemplateConfig extends NitroTemplateConfig, NitroGridTemplateConfig {
6
- }
7
- export interface HybridGridTemplate extends HybridObject<{
8
- android: 'kotlin';
9
- ios: 'swift';
10
- }> {
11
- createGridTemplate(config: GridTemplateConfig): void;
12
- updateGridTemplateButtons(templateId: string, buttons: Array<NitroGridButton>): void;
13
- }
14
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { NitroInformationTemplateConfig } from '../templates/InformationTemplate';
3
- import type { NitroTemplateConfig } from './HybridAutoPlay.nitro';
4
- interface InformationTemplateConfig extends NitroTemplateConfig, NitroInformationTemplateConfig {
5
- }
6
- export interface HybridInformationTemplate extends HybridObject<{
7
- android: 'kotlin';
8
- ios: 'swift';
9
- }> {
10
- createInformationTemplate(config: InformationTemplateConfig): void;
11
- updateInformationTemplateSections(templateId: string, section: NitroInformationTemplateConfig['section']): void;
12
- }
13
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { NitroListTemplateConfig } from '../templates/ListTemplate';
3
- import type { NitroTemplateConfig } from './HybridAutoPlay.nitro';
4
- interface ListTemplateConfig extends NitroTemplateConfig, NitroListTemplateConfig {
5
- }
6
- export interface HybridListTemplate extends HybridObject<{
7
- android: 'kotlin';
8
- ios: 'swift';
9
- }> {
10
- createListTemplate(config: ListTemplateConfig): void;
11
- updateListTemplateSections(templateId: string, sections: NitroListTemplateConfig['sections']): void;
12
- }
13
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,25 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { NavigationAlertCallbacks, NitroMapTemplateConfig, TripSelectorCallback, VisibleTravelEstimate } from '../templates/MapTemplate';
3
- import type { TripConfig, TripPoint, TripPreviewTextConfiguration, TripsConfig } from '../types/Trip';
4
- import type { NitroNavigationAlert } from '../utils/NitroAlert';
5
- import type { NitroManeuver } from '../utils/NitroManeuver';
6
- import type { NitroMapButton } from '../utils/NitroMapButton';
7
- import type { NitroTemplateConfig } from './HybridAutoPlay.nitro';
8
- interface MapTemplateConfig extends NitroTemplateConfig, NitroMapTemplateConfig {
9
- }
10
- export interface HybridMapTemplate extends HybridObject<{
11
- android: 'kotlin';
12
- ios: 'swift';
13
- }> {
14
- createMapTemplate(config: MapTemplateConfig): void;
15
- showNavigationAlert(templateId: string, alert: NitroNavigationAlert): NavigationAlertCallbacks;
16
- showTripSelector(templateId: string, trips: Array<TripsConfig>, selectedTripId: string | undefined, textConfig: TripPreviewTextConfiguration, onTripSelected: (tripId: string, routeId: string) => void, onTripStarted: (tripId: string, routeId: string) => void, onBackPressed: () => void, mapButtons: Array<NitroMapButton>): TripSelectorCallback;
17
- hideTripSelector(templateId: string): void;
18
- setTemplateMapButtons(templateId: string, buttons?: Array<NitroMapButton>): void;
19
- updateVisibleTravelEstimate(templateId: string, visibleTravelEstimate: VisibleTravelEstimate): void;
20
- updateTravelEstimates(templateId: string, steps: Array<TripPoint>): void;
21
- updateManeuvers(templateId: string, maneuvers: NitroManeuver): void;
22
- startNavigation(templateId: string, trip: TripConfig): void;
23
- stopNavigation(templateId: string): void;
24
- }
25
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { NitroMessageTemplateConfig } from '../templates/MessageTemplate';
3
- import type { NitroTemplateConfig } from './HybridAutoPlay.nitro';
4
- interface MessageTemplateConfig extends NitroTemplateConfig, NitroMessageTemplateConfig {
5
- }
6
- export interface HybridMessageTemplate extends HybridObject<{
7
- android: 'kotlin';
8
- ios: 'swift';
9
- }> {
10
- createMessageTemplate(config: MessageTemplateConfig): void;
11
- }
12
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,13 +0,0 @@
1
- import type { HybridObject } from 'react-native-nitro-modules';
2
- import type { NitroSearchTemplateConfig } from '../templates/SearchTemplate';
3
- import type { NitroTemplateConfig } from './HybridAutoPlay.nitro';
4
- interface SearchTemplateConfig extends NitroTemplateConfig, NitroSearchTemplateConfig {
5
- }
6
- export interface HybridSearchTemplate extends HybridObject<{
7
- android: 'kotlin';
8
- ios: 'swift';
9
- }> {
10
- createSearchTemplate(config: SearchTemplateConfig): void;
11
- updateSearchResults(templateId: string, results: NitroSearchTemplateConfig['results']): void;
12
- }
13
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,37 +0,0 @@
1
- type Translation = {
2
- x: number;
3
- y: number;
4
- };
5
- type Velocity = {
6
- x: number;
7
- y: number;
8
- };
9
- /**
10
- * @param translation screen coordinate offset
11
- * @param velocity only reported on iOS/CarPlay
12
- */
13
- export type PanGestureWithTranslationEventPayload = {
14
- translation: Translation;
15
- velocity?: Velocity;
16
- };
17
- /**
18
- * @param x screen coordinate of the pinch center
19
- * @param y screen coordinate of the pinch center
20
- * @param scaleFactor value > 0.0 and < 2.0 when 1.0 means no scaling, > 1.0 zoom in and < 1.0 zoom out, value == 2.0 is a double tap
21
- * @namespace Android
22
- */
23
- export type PinchGestureEventPayload = {
24
- x: number;
25
- y: number;
26
- scaleFactor: number;
27
- };
28
- /**
29
- * @param x screen coordinate of the press event
30
- * @param y screen coordinate of the press event
31
- * @namespace Android
32
- */
33
- export type PressEventPayload = {
34
- x: number;
35
- y: number;
36
- };
37
- export {};
@@ -1 +0,0 @@
1
- export {};