@complexify/expo-mapbox-navigation 1.3.2 → 1.3.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoMapboxNavigation.types.js","sourceRoot":"","sources":["../src/ExpoMapboxNavigation.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ViewStyle, StyleProp } from \"react-native/types\";\n\ntype ProgressEvent = {\n distanceRemaining: number;\n distanceTraveled: number;\n durationRemaining: number;\n fractionTraveled: number;\n};\n\nexport type ExpoMapboxNavigationViewProps = {\n coordinates: Array<{ latitude: number; longitude: number }>;\n waypointIndices?: number[];\n useRouteMatchingApi?: boolean;\n locale?: string;\n routeProfile?: string;\n routeExcludeList?: string[];\n mapStyle?: string;\n mute?: boolean;\n routeColor?: string;\n routeAlternateColor?: string;\n routeCasingColor?: string;\n routeAlternateCasingColor?: string;\n traversedRouteColor?: string;\n maneuverArrowColor?: string;\n onRouteProgressChanged?: (event: { nativeEvent: ProgressEvent }) => void;\n onCancelNavigation?: () => void;\n onWaypointArrival?: (event: {\n nativeEvent: ProgressEvent | undefined;\n }) => void;\n onFinalDestinationArrival?: () => void;\n onRouteChanged?: () => void;\n onUserOffRoute?: () => void;\n onRoutesLoaded?: () => void;\n style?: StyleProp<ViewStyle>;\n\n // Top Banner (1)\n topBannerBackgroundColor?: string;\n topBannerPrimaryTextColor?: string;\n topBannerSecondaryTextColor?: string;\n topBannerDistanceTextColor?: string;\n topBannerSeparatorColor?: string;\n\n // Information Stack (2)\n informationStackBackgroundColor?: string;\n informationStackTextColor?: string;\n\n // Bottom Banner (3)\n bottomBannerBackgroundColor?: string;\n bottomBannerTimeRemainingTextColor?: string;\n bottomBannerDistanceRemainingTextColor?: string;\n bottomBannerArrivalTimeTextColor?: string;\n\n // Resume Button (4)\n resumeButtonBackgroundColor?: string;\n resumeButtonTextColor?: string;\n resumeButtonBorderColor?: string;\n\n // Speed Limit View (5)\n speedLimitBackgroundColor?: string;\n speedLimitTextColor?: string;\n speedLimitBorderColor?: string;\n\n // Floating Stack (6)\n floatingStackBackgroundColor?: string;\n floatingButtonsBackgroundColor?: string;\n floatingButtonsTextColor?: string;\n floatingButtonsBorderColor?: string;\n\n // Way Name Label (8)\n wayNameViewBackgroundColor?: string;\n wayNameViewTextColor?: string;\n\n // Steps List\n stepsBackgroundColor?: string;\n stepsPrimaryTextColor?: string;\n stepsSecondaryTextColor?: string;\n stepsManeuverViewPrimaryColor?: string;\n stepsManeuverViewSecondaryColor?: string;\n stepsSeparatorColor?: string;\n\n // Lane View\n laneViewBackgroundColor?: string;\n laneViewForegroundColor?: string;\n laneViewSeparatorColor?: string;\n\n // Next Banner View\n nextBannerBackgroundColor?: string;\n nextBannerPrimaryTextColor?: string;\n nextBannerSecondaryTextColor?: string;\n nextBannerDistanceTextColor?: string;\n\n // Progress Bar\n progressBarProgressColor?: string;\n progressBarBackgroundColor?: string;\n\n // Maneuver View (Direction Arrow)\n maneuverViewPrimaryColor?: string;\n maneuverViewSecondaryColor?: string;\n maneuverViewPrimaryColorHighlighted?: string;\n maneuverViewSecondaryColorHighlighted?: string;\n\n // Instructions View\n instructionsTextColor?: string; // Color for all instruction text\n instructionsBackgroundColor?: string; // Background color for instruction panels\n\n // Instructions Card\n instructionsCardBackgroundColor?: string;\n instructionsCardSeparatorColor?: string;\n instructionsCardHighlightedSeparatorColor?: string;\n\n // Exit View\n exitViewForegroundColor?: string;\n exitViewBorderColor?: string;\n exitViewHighlightColor?: string;\n\n // Route Shield\n routeShieldForegroundColor?: string;\n routeShieldBorderColor?: string;\n routeShieldHighlightColor?: string;\n\n // Distance Labels\n distanceRemainingColor?: string;\n distanceUnitColor?: string;\n distanceValueColor?: string;\n\n // Navigation Map\n routeAnnotationSelectedColor?: string;\n routeAnnotationColor?: string;\n routeAnnotationTextColor?: string;\n routeAnnotationSelectedTextColor?: string;\n routeAnnotationMoreTimeTextColor?: string;\n routeAnnotationLessTimeTextColor?: string;\n waypointColor?: string;\n waypointStrokeColor?: string;\n\n // Feedback\n feedbackBackgroundColor?: string;\n feedbackTextColor?: string;\n feedbackCellColor?: string;\n feedbackSubtypeCircleColor?: string;\n feedbackSubtypeCircleOutlineColor?: string;\n\n // End of Route\n endOfRouteButtonTextColor?: string;\n endOfRouteCommentBackgroundColor?: string;\n endOfRouteCommentTextColor?: string;\n endOfRouteContentBackgroundColor?: string;\n endOfRouteTitleTextColor?: string;\n\n // Road Shield Colors\n roadShieldBlackColor?: string;\n roadShieldBlueColor?: string;\n roadShieldGreenColor?: string;\n roadShieldRedColor?: string;\n roadShieldWhiteColor?: string;\n roadShieldYellowColor?: string;\n roadShieldDefaultColor?: string;\n\n // Button Properties\n buttonTextColor?: string;\n cancelButtonTintColor?: string;\n previewButtonTintColor?: string;\n startButtonTintColor?: string;\n dismissButtonBackgroundColor?: string;\n dismissButtonTextColor?: string;\n backButtonBackgroundColor?: string;\n backButtonTintColor?: string;\n backButtonTextColor?: string;\n backButtonBorderColor?: string;\n\n // Navigation View\n navigationViewBackgroundColor?: string;\n\n // Distance Label Properties\n distanceLabelUnitTextColor?: string;\n distanceLabelValueTextColor?: string;\n\n // Rating Control\n ratingControlNormalColor?: string;\n ratingControlSelectedColor?: string;\n\n // Steps Properties\n stepsBackgroundViewColor?: string;\n stepsTableHeaderTintColor?: string;\n stepsTableHeaderTextColor?: string;\n stepInstructionsBackgroundColor?: string;\n stepTableViewCellBackgroundColor?: string;\n\n // Next Instruction\n nextInstructionNormalTextColor?: string;\n nextInstructionContainedTextColor?: string;\n\n // Secondary Label Properties\n secondaryLabelNormalTextColor?: string;\n\n // Stylable Label\n stylableLabelNormalTextColor?: string;\n\n // CarPlay Properties\n carPlayCompassBackgroundColor?: string;\n};\n"]}
1
+ {"version":3,"file":"ExpoMapboxNavigation.types.js","sourceRoot":"","sources":["../src/ExpoMapboxNavigation.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ViewStyle, StyleProp } from \"react-native/types\";\n\ntype ProgressEvent = {\n distanceRemaining: number;\n distanceTraveled: number;\n durationRemaining: number;\n fractionTraveled: number;\n};\n\nexport type ExpoMapboxNavigationViewProps = {\n coordinates: Array<{ latitude: number; longitude: number }>;\n waypointIndices?: number[];\n useRouteMatchingApi?: boolean;\n locale?: string;\n routeProfile?: string;\n routeExcludeList?: string[];\n mapStyle?: string;\n mute?: boolean;\n routeColor?: string;\n routeAlternateColor?: string;\n routeCasingColor?: string;\n routeAlternateCasingColor?: string;\n traversedRouteColor?: string;\n maneuverArrowColor?: string;\n onRouteProgressChanged?: (event: { nativeEvent: ProgressEvent }) => void;\n onCancelNavigation?: () => void;\n onWaypointArrival?: (event: {\n nativeEvent: ProgressEvent | undefined;\n }) => void;\n onFinalDestinationArrival?: () => void;\n onRouteChanged?: () => void;\n onUserOffRoute?: () => void;\n onRoutesLoaded?: () => void;\n style?: StyleProp<ViewStyle>;\n\n // Top Banner (1)\n topBannerBackgroundColor?: string;\n topBannerPrimaryTextColor?: string;\n topBannerSecondaryTextColor?: string;\n topBannerDistanceTextColor?: string;\n topBannerSeparatorColor?: string;\n\n // Information Stack (2)\n informationStackBackgroundColor?: string;\n informationStackTextColor?: string;\n\n // Bottom Banner (3)\n bottomBannerBackgroundColor?: string;\n bottomBannerTimeRemainingTextColor?: string;\n bottomBannerDistanceRemainingTextColor?: string;\n bottomBannerArrivalTimeTextColor?: string;\n\n // Resume Button (4)\n resumeButtonBackgroundColor?: string;\n resumeButtonTextColor?: string;\n resumeButtonBorderColor?: string;\n\n // Speed Limit View (5)\n speedLimitBackgroundColor?: string;\n speedLimitTextColor?: string;\n speedLimitBorderColor?: string;\n\n // Floating Stack (6)\n floatingStackBackgroundColor?: string;\n floatingButtonsBackgroundColor?: string;\n floatingButtonsTextColor?: string;\n floatingButtonsBorderColor?: string;\n\n // Way Name Label (8)\n wayNameViewBackgroundColor?: string;\n wayNameViewTextColor?: string;\n\n // Steps List\n stepsBackgroundColor?: string;\n stepsPrimaryTextColor?: string;\n stepsSecondaryTextColor?: string;\n stepsManeuverViewPrimaryColor?: string;\n stepsManeuverViewSecondaryColor?: string;\n stepsSeparatorColor?: string;\n\n // Lane View\n laneViewBackgroundColor?: string;\n laneViewForegroundColor?: string;\n laneViewSeparatorColor?: string;\n\n // Next Banner View\n nextBannerBackgroundColor?: string;\n nextBannerPrimaryTextColor?: string;\n nextBannerSecondaryTextColor?: string;\n nextBannerDistanceTextColor?: string;\n\n // Progress Bar\n progressBarProgressColor?: string;\n progressBarBackgroundColor?: string;\n\n // Maneuver View (Direction Arrow)\n maneuverViewPrimaryColor?: string;\n maneuverViewSecondaryColor?: string;\n maneuverViewPrimaryColorHighlighted?: string;\n maneuverViewSecondaryColorHighlighted?: string;\n\n // Instructions View\n instructionsTextColor?: string; // Color for all instruction text\n instructionsBackgroundColor?: string; // Background color for instruction panels\n\n // Instructions Card\n instructionsCardBackgroundColor?: string;\n instructionsCardSeparatorColor?: string;\n instructionsCardHighlightedSeparatorColor?: string;\n\n // Exit View\n exitViewForegroundColor?: string;\n exitViewBorderColor?: string;\n exitViewHighlightColor?: string;\n\n // Route Shield\n routeShieldForegroundColor?: string;\n routeShieldBorderColor?: string;\n routeShieldHighlightColor?: string;\n\n // Distance Labels\n distanceRemainingColor?: string;\n distanceUnitColor?: string;\n distanceValueColor?: string;\n\n // Navigation Map\n routeAnnotationSelectedColor?: string;\n routeAnnotationColor?: string;\n routeAnnotationTextColor?: string;\n routeAnnotationSelectedTextColor?: string;\n routeAnnotationMoreTimeTextColor?: string;\n routeAnnotationLessTimeTextColor?: string;\n waypointColor?: string;\n waypointStrokeColor?: string;\n\n // Feedback\n feedbackBackgroundColor?: string;\n feedbackTextColor?: string;\n feedbackCellColor?: string;\n feedbackSubtypeCircleColor?: string;\n feedbackSubtypeCircleOutlineColor?: string;\n\n // End of Route\n endOfRouteButtonTextColor?: string;\n endOfRouteCommentBackgroundColor?: string;\n endOfRouteCommentTextColor?: string;\n endOfRouteContentBackgroundColor?: string;\n endOfRouteTitleTextColor?: string;\n\n // Road Shield Colors\n roadShieldBlackColor?: string;\n roadShieldBlueColor?: string;\n roadShieldGreenColor?: string;\n roadShieldRedColor?: string;\n roadShieldWhiteColor?: string;\n roadShieldYellowColor?: string;\n roadShieldDefaultColor?: string;\n\n // Button Properties\n buttonTextColor?: string;\n cancelButtonTintColor?: string;\n previewButtonTintColor?: string;\n startButtonTintColor?: string;\n dismissButtonBackgroundColor?: string;\n dismissButtonTextColor?: string;\n backButtonBackgroundColor?: string;\n backButtonTintColor?: string;\n backButtonTextColor?: string;\n backButtonBorderColor?: string;\n\n // Navigation View\n navigationViewBackgroundColor?: string;\n\n // Distance Label Properties\n distanceLabelUnitTextColor?: string;\n distanceLabelValueTextColor?: string;\n\n // Rating Control\n ratingControlNormalColor?: string;\n ratingControlSelectedColor?: string;\n\n // Steps Properties\n stepsBackgroundViewColor?: string;\n stepsTableHeaderTintColor?: string;\n stepsTableHeaderTextColor?: string;\n stepInstructionsBackgroundColor?: string;\n stepTableViewCellBackgroundColor?: string;\n\n // Next Instruction\n nextInstructionNormalTextColor?: string;\n nextInstructionContainedTextColor?: string;\n\n // Secondary Label Properties\n secondaryLabelNormalTextColor?: string;\n\n // Stylable Label\n stylableLabelNormalTextColor?: string;\n\n // CarPlay Properties\n carPlayCompassBackgroundColor?: string;\n};\n"]}
@@ -2,9 +2,6 @@ import Foundation
2
2
  import MapboxMaps
3
3
  import MapboxNavigationUIKit
4
4
  import UIKit
5
- import MapboxNavigation
6
- import MapboxCoreNavigation
7
- import MapboxDirections
8
5
 
9
6
  class CustomDayStyle: StandardDayStyle {
10
7
  var customSpeedLimitTextColor: UIColor?
@@ -26,63 +23,6 @@ class CustomDayStyle: StandardDayStyle {
26
23
  var customFloatingButtonsBorderColor: UIColor?
27
24
  var customFloatingButtonsTextColor: UIColor?
28
25
 
29
- // Information Stack (2)
30
- var customInformationStackBackgroundColor: UIColor?
31
- var customInformationStackTextColor: UIColor?
32
-
33
- // Steps List
34
- var customStepsBackgroundColor: UIColor?
35
- var customStepsPrimaryTextColor: UIColor?
36
- var customStepsSecondaryTextColor: UIColor?
37
- var customStepsManeuverViewPrimaryColor: UIColor?
38
- var customStepsManeuverViewSecondaryColor: UIColor?
39
- var customStepsSeparatorColor: UIColor?
40
-
41
- // Lane View
42
- var customLaneViewBackgroundColor: UIColor?
43
- var customLaneViewForegroundColor: UIColor?
44
- var customLaneViewSeparatorColor: UIColor?
45
-
46
- // Next Banner View
47
- var customNextBannerBackgroundColor: UIColor?
48
- var customNextBannerPrimaryTextColor: UIColor?
49
- var customNextBannerSecondaryTextColor: UIColor?
50
- var customNextBannerDistanceTextColor: UIColor?
51
-
52
- // Progress Bar
53
- var customProgressBarProgressColor: UIColor?
54
- var customProgressBarBackgroundColor: UIColor?
55
-
56
- // Maneuver View
57
- var customManeuverViewPrimaryColor: UIColor?
58
- var customManeuverViewSecondaryColor: UIColor?
59
- var customManeuverViewPrimaryColorHighlighted: UIColor?
60
- var customManeuverViewSecondaryColorHighlighted: UIColor?
61
-
62
- // Instructions Card
63
- var customInstructionsCardBackgroundColor: UIColor?
64
- var customInstructionsCardSeparatorColor: UIColor?
65
- var customInstructionsCardHighlightedSeparatorColor: UIColor?
66
-
67
- // Exit View
68
- var customExitViewForegroundColor: UIColor?
69
- var customExitViewBorderColor: UIColor?
70
- var customExitViewHighlightColor: UIColor?
71
-
72
- // Route Shield
73
- var customRouteShieldForegroundColor: UIColor?
74
- var customRouteShieldBorderColor: UIColor?
75
- var customRouteShieldHighlightColor: UIColor?
76
-
77
- // Distance Labels
78
- var customDistanceRemainingColor: UIColor?
79
- var customDistanceUnitColor: UIColor?
80
- var customDistanceValueColor: UIColor?
81
-
82
- // Rating Control
83
- var customRatingControlNormalColor: UIColor?
84
- var customRatingControlSelectedColor: UIColor?
85
-
86
26
  required init() {
87
27
  super.init()
88
28
  styleType = .day
@@ -168,138 +108,5 @@ class CustomDayStyle: StandardDayStyle {
168
108
  // Set default values for floating buttons
169
109
  FloatingButton.appearance(for: traitCollection).borderWidth = 1.0
170
110
  FloatingButton.appearance(for: traitCollection).cornerRadius = 4.0
171
-
172
- // Information Stack
173
- if let bgColor = customInformationStackBackgroundColor {
174
- StepsBackgroundView.appearance(for: traitCollection).backgroundColor = bgColor
175
- }
176
- if let textColor = customInformationStackTextColor {
177
- StepsTableHeaderView.appearance(for: traitCollection).normalTextColor = textColor
178
- }
179
-
180
- // Steps List
181
- if let bgColor = customStepsBackgroundColor {
182
- StepInstructionsView.appearance(for: traitCollection).backgroundColor = bgColor
183
- }
184
- if let primaryTextColor = customStepsPrimaryTextColor {
185
- PrimaryLabel.appearance(for: traitCollection, whenContainedInInstancesOf: [StepInstructionsView.self])
186
- .normalTextColor = primaryTextColor
187
- }
188
- if let secondaryTextColor = customStepsSecondaryTextColor {
189
- SecondaryLabel.appearance(for: traitCollection, whenContainedInInstancesOf: [StepInstructionsView.self])
190
- .normalTextColor = secondaryTextColor
191
- }
192
- if let maneuverPrimaryColor = customStepsManeuverViewPrimaryColor {
193
- ManeuverView.appearance(for: traitCollection, whenContainedInInstancesOf: [StepInstructionsView.self])
194
- .primaryColor = maneuverPrimaryColor
195
- }
196
- if let maneuverSecondaryColor = customStepsManeuverViewSecondaryColor {
197
- ManeuverView.appearance(for: traitCollection, whenContainedInInstancesOf: [StepInstructionsView.self])
198
- .secondaryColor = maneuverSecondaryColor
199
- }
200
- if let separatorColor = customStepsSeparatorColor {
201
- SeparatorView.appearance(for: traitCollection).backgroundColor = separatorColor
202
- }
203
-
204
- // Lane View
205
- if let bgColor = customLaneViewBackgroundColor {
206
- LanesView.appearance(for: traitCollection).backgroundColor = bgColor
207
- }
208
- if let fgColor = customLaneViewForegroundColor {
209
- LaneView.appearance(for: traitCollection).primaryColor = fgColor
210
- }
211
- if let separatorColor = customLaneViewSeparatorColor {
212
- // Apply to lane view separators if available
213
- }
214
-
215
- // Next Banner View
216
- if let bgColor = customNextBannerBackgroundColor {
217
- NextBannerView.appearance(for: traitCollection).backgroundColor = bgColor
218
- }
219
- if let primaryTextColor = customNextBannerPrimaryTextColor {
220
- NextInstructionLabel.appearance(for: traitCollection, whenContainedInInstancesOf: [NextBannerView.self])
221
- .normalTextColor = primaryTextColor
222
- }
223
- if let secondaryTextColor = customNextBannerSecondaryTextColor {
224
- // Apply to secondary text in next banner
225
- }
226
- if let distanceTextColor = customNextBannerDistanceTextColor {
227
- DistanceLabel.appearance(for: traitCollection, whenContainedInInstancesOf: [NextBannerView.self])
228
- .valueTextColor = distanceTextColor
229
- }
230
-
231
- // Progress Bar
232
- if let progressColor = customProgressBarProgressColor {
233
- // Apply to progress bar progress color
234
- }
235
- if let bgColor = customProgressBarBackgroundColor {
236
- // Apply to progress bar background
237
- }
238
-
239
- // Maneuver View
240
- if let primaryColor = customManeuverViewPrimaryColor {
241
- ManeuverView.appearance(for: traitCollection).primaryColor = primaryColor
242
- }
243
- if let secondaryColor = customManeuverViewSecondaryColor {
244
- ManeuverView.appearance(for: traitCollection).secondaryColor = secondaryColor
245
- }
246
- if let primaryHighlightedColor = customManeuverViewPrimaryColorHighlighted {
247
- ManeuverView.appearance(for: traitCollection).primaryColorHighlighted = primaryHighlightedColor
248
- }
249
- if let secondaryHighlightedColor = customManeuverViewSecondaryColorHighlighted {
250
- ManeuverView.appearance(for: traitCollection).secondaryColorHighlighted = secondaryHighlightedColor
251
- }
252
-
253
- // Instructions Card
254
- if let bgColor = customInstructionsCardBackgroundColor {
255
- InstructionsCardContainerView.appearance(for: traitCollection).customBackgroundColor = bgColor
256
- }
257
- if let separatorColor = customInstructionsCardSeparatorColor {
258
- InstructionsCardContainerView.appearance(for: traitCollection).separatorColor = separatorColor
259
- }
260
- if let highlightedSeparatorColor = customInstructionsCardHighlightedSeparatorColor {
261
- InstructionsCardContainerView.appearance(for: traitCollection).highlightedSeparatorColor = highlightedSeparatorColor
262
- }
263
-
264
- // Exit View
265
- if let fgColor = customExitViewForegroundColor {
266
- ExitView.appearance(for: traitCollection).foregroundColor = fgColor
267
- }
268
- if let borderColor = customExitViewBorderColor {
269
- ExitView.appearance(for: traitCollection).borderColor = borderColor
270
- }
271
- if let highlightColor = customExitViewHighlightColor {
272
- ExitView.appearance(for: traitCollection).highlightColor = highlightColor
273
- }
274
-
275
- // Route Shield
276
- if let fgColor = customRouteShieldForegroundColor {
277
- GenericRouteShield.appearance(for: traitCollection).foregroundColor = fgColor
278
- }
279
- if let borderColor = customRouteShieldBorderColor {
280
- GenericRouteShield.appearance(for: traitCollection).borderColor = borderColor
281
- }
282
- if let highlightColor = customRouteShieldHighlightColor {
283
- GenericRouteShield.appearance(for: traitCollection).highlightColor = highlightColor
284
- }
285
-
286
- // Distance Labels
287
- if let remainingColor = customDistanceRemainingColor {
288
- DistanceRemainingLabel.appearance(for: traitCollection).normalTextColor = remainingColor
289
- }
290
- if let unitColor = customDistanceUnitColor {
291
- DistanceLabel.appearance(for: traitCollection).unitTextColor = unitColor
292
- }
293
- if let valueColor = customDistanceValueColor {
294
- DistanceLabel.appearance(for: traitCollection).valueTextColor = valueColor
295
- }
296
-
297
- // Rating Control
298
- if let normalColor = customRatingControlNormalColor {
299
- RatingControl.appearance(for: traitCollection).normalColor = normalColor
300
- }
301
- if let selectedColor = customRatingControlSelectedColor {
302
- RatingControl.appearance(for: traitCollection).selectedColor = selectedColor
303
- }
304
111
  }
305
112
  }
@@ -18,6 +18,9 @@ Pod::Spec.new do |s|
18
18
  s.dependency 'ExpoModulesCore'
19
19
  s.dependency 'MapboxMaps', ENV['ExpoNavigationMapboxMapsVersion']
20
20
  s.dependency 'Turf', '~> 3.0'
21
+ s.dependency 'MapboxNavigation', '~> 2.14.0'
22
+ s.dependency 'MapboxCoreNavigation', '~> 2.14.0'
23
+ s.dependency 'MapboxDirections', '~> 2.11.0'
21
24
 
22
25
  s.source_files = "**/*.{h,m,swift}"
23
26
  s.exclude_files = ["Frameworks/*.xcframework/**/*.h"]
@@ -209,209 +209,6 @@ public class ExpoMapboxNavigationModule: Module {
209
209
  view.controller.setSpeedLimitBorderColor(hexColor: hexColor)
210
210
  }
211
211
  }
212
-
213
- Prop("stepsBackgroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
214
- if let hexColor = color {
215
- view.controller.setStepsBackgroundColor(hexColor: hexColor)
216
- }
217
- }
218
-
219
- Prop("stepsPrimaryTextColor") { (view: ExpoMapboxNavigationView, color: String?) in
220
- if let hexColor = color {
221
- view.controller.setStepsPrimaryTextColor(hexColor: hexColor)
222
- }
223
- }
224
-
225
- Prop("stepsSecondaryTextColor") { (view: ExpoMapboxNavigationView, color: String?) in
226
- if let hexColor = color {
227
- view.controller.setStepsSecondaryTextColor(hexColor: hexColor)
228
- }
229
- }
230
-
231
- Prop("stepsManeuverViewPrimaryColor") { (view: ExpoMapboxNavigationView, color: String?) in
232
- if let hexColor = color {
233
- view.controller.setStepsManeuverViewPrimaryColor(hexColor: hexColor)
234
- }
235
- }
236
-
237
- Prop("laneViewBackgroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
238
- if let hexColor = color {
239
- view.controller.setLaneViewBackgroundColor(hexColor: hexColor)
240
- }
241
- }
242
-
243
- Prop("stepsManeuverViewSecondaryColor") { (view: ExpoMapboxNavigationView, color: String?) in
244
- if let hexColor = color {
245
- view.controller.customDayStyle.customStepsManeuverViewSecondaryColor = UIColor(hex: hexColor)
246
- view.controller.update()
247
- }
248
- }
249
-
250
- Prop("stepsSeparatorColor") { (view: ExpoMapboxNavigationView, color: String?) in
251
- if let hexColor = color {
252
- view.controller.customDayStyle.customStepsSeparatorColor = UIColor(hex: hexColor)
253
- view.controller.update()
254
- }
255
- }
256
-
257
- Prop("laneViewForegroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
258
- if let hexColor = color {
259
- view.controller.customDayStyle.customLaneViewForegroundColor = UIColor(hex: hexColor)
260
- view.controller.update()
261
- }
262
- }
263
-
264
- // Next Banner View
265
- Prop("nextBannerBackgroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
266
- if let hexColor = color {
267
- view.controller.setNextBannerBackgroundColor(hexColor: hexColor)
268
- }
269
- }
270
-
271
- Prop("nextBannerPrimaryTextColor") { (view: ExpoMapboxNavigationView, color: String?) in
272
- if let hexColor = color {
273
- view.controller.setNextBannerPrimaryTextColor(hexColor: hexColor)
274
- }
275
- }
276
-
277
- Prop("nextBannerSecondaryTextColor") { (view: ExpoMapboxNavigationView, color: String?) in
278
- if let hexColor = color {
279
- view.controller.setNextBannerSecondaryTextColor(hexColor: hexColor)
280
- }
281
- }
282
-
283
- Prop("nextBannerDistanceTextColor") { (view: ExpoMapboxNavigationView, color: String?) in
284
- if let hexColor = color {
285
- view.controller.setNextBannerDistanceTextColor(hexColor: hexColor)
286
- }
287
- }
288
-
289
- // Progress Bar
290
- Prop("progressBarProgressColor") { (view: ExpoMapboxNavigationView, color: String?) in
291
- if let hexColor = color {
292
- view.controller.setProgressBarProgressColor(hexColor: hexColor)
293
- }
294
- }
295
-
296
- Prop("progressBarBackgroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
297
- if let hexColor = color {
298
- view.controller.setProgressBarBackgroundColor(hexColor: hexColor)
299
- }
300
- }
301
-
302
- // Maneuver View
303
- Prop("maneuverViewPrimaryColor") { (view: ExpoMapboxNavigationView, color: String?) in
304
- if let hexColor = color {
305
- view.controller.setManeuverViewPrimaryColor(hexColor: hexColor)
306
- }
307
- }
308
-
309
- Prop("maneuverViewSecondaryColor") { (view: ExpoMapboxNavigationView, color: String?) in
310
- if let hexColor = color {
311
- view.controller.setManeuverViewSecondaryColor(hexColor: hexColor)
312
- }
313
- }
314
-
315
- Prop("maneuverViewPrimaryColorHighlighted") { (view: ExpoMapboxNavigationView, color: String?) in
316
- if let hexColor = color {
317
- view.controller.setManeuverViewPrimaryColorHighlighted(hexColor: hexColor)
318
- }
319
- }
320
-
321
- Prop("maneuverViewSecondaryColorHighlighted") { (view: ExpoMapboxNavigationView, color: String?) in
322
- if let hexColor = color {
323
- view.controller.setManeuverViewSecondaryColorHighlighted(hexColor: hexColor)
324
- }
325
- }
326
-
327
- // Instructions Card
328
- Prop("instructionsCardBackgroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
329
- if let hexColor = color {
330
- view.controller.setInstructionsCardBackgroundColor(hexColor: hexColor)
331
- }
332
- }
333
-
334
- Prop("instructionsCardSeparatorColor") { (view: ExpoMapboxNavigationView, color: String?) in
335
- if let hexColor = color {
336
- view.controller.setInstructionsCardSeparatorColor(hexColor: hexColor)
337
- }
338
- }
339
-
340
- Prop("instructionsCardHighlightedSeparatorColor") { (view: ExpoMapboxNavigationView, color: String?) in
341
- if let hexColor = color {
342
- view.controller.setInstructionsCardHighlightedSeparatorColor(hexColor: hexColor)
343
- }
344
- }
345
-
346
- // Exit View
347
- Prop("exitViewForegroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
348
- if let hexColor = color {
349
- view.controller.setExitViewForegroundColor(hexColor: hexColor)
350
- }
351
- }
352
-
353
- Prop("exitViewBorderColor") { (view: ExpoMapboxNavigationView, color: String?) in
354
- if let hexColor = color {
355
- view.controller.setExitViewBorderColor(hexColor: hexColor)
356
- }
357
- }
358
-
359
- Prop("exitViewHighlightColor") { (view: ExpoMapboxNavigationView, color: String?) in
360
- if let hexColor = color {
361
- view.controller.setExitViewHighlightColor(hexColor: hexColor)
362
- }
363
- }
364
-
365
- // Route Shield
366
- Prop("routeShieldForegroundColor") { (view: ExpoMapboxNavigationView, color: String?) in
367
- if let hexColor = color {
368
- view.controller.setRouteShieldForegroundColor(hexColor: hexColor)
369
- }
370
- }
371
-
372
- Prop("routeShieldBorderColor") { (view: ExpoMapboxNavigationView, color: String?) in
373
- if let hexColor = color {
374
- view.controller.setRouteShieldBorderColor(hexColor: hexColor)
375
- }
376
- }
377
-
378
- Prop("routeShieldHighlightColor") { (view: ExpoMapboxNavigationView, color: String?) in
379
- if let hexColor = color {
380
- view.controller.setRouteShieldHighlightColor(hexColor: hexColor)
381
- }
382
- }
383
-
384
- // Distance Labels
385
- Prop("distanceRemainingColor") { (view: ExpoMapboxNavigationView, color: String?) in
386
- if let hexColor = color {
387
- view.controller.setDistanceRemainingColor(hexColor: hexColor)
388
- }
389
- }
390
-
391
- Prop("distanceUnitColor") { (view: ExpoMapboxNavigationView, color: String?) in
392
- if let hexColor = color {
393
- view.controller.setDistanceUnitColor(hexColor: hexColor)
394
- }
395
- }
396
-
397
- Prop("distanceValueColor") { (view: ExpoMapboxNavigationView, color: String?) in
398
- if let hexColor = color {
399
- view.controller.setDistanceValueColor(hexColor: hexColor)
400
- }
401
- }
402
-
403
- // Rating Control
404
- Prop("ratingControlNormalColor") { (view: ExpoMapboxNavigationView, color: String?) in
405
- if let hexColor = color {
406
- view.controller.setRatingControlNormalColor(hexColor: hexColor)
407
- }
408
- }
409
-
410
- Prop("ratingControlSelectedColor") { (view: ExpoMapboxNavigationView, color: String?) in
411
- if let hexColor = color {
412
- view.controller.setRatingControlSelectedColor(hexColor: hexColor)
413
- }
414
- }
415
212
  }
416
213
  }
417
214
  }
@@ -96,6 +96,11 @@ class ExpoMapboxNavigationViewController: UIViewController {
96
96
 
97
97
  let customDayStyle = CustomDayStyle()
98
98
 
99
+ private var bottomSheetViewController: UIViewController?
100
+ private var bottomSheetPanGestureRecognizer: UIPanGestureRecognizer?
101
+ private var bottomSheetTopConstraint: NSLayoutConstraint?
102
+ private let bottomSheetHeight: CGFloat = 300 // Adjust this value as needed
103
+
99
104
  init() {
100
105
  super.init(nibName: nil, bundle: nil)
101
106
  mapboxNavigation = ExpoMapboxNavigationViewController.navigationProvider.mapboxNavigation
@@ -344,151 +349,6 @@ class ExpoMapboxNavigationViewController: UIViewController {
344
349
  update()
345
350
  }
346
351
 
347
- func setStepsBackgroundColor(hexColor: String) {
348
- customDayStyle.customStepsBackgroundColor = UIColor(hex: hexColor)
349
- update()
350
- }
351
-
352
- func setStepsPrimaryTextColor(hexColor: String) {
353
- customDayStyle.customStepsPrimaryTextColor = UIColor(hex: hexColor)
354
- update()
355
- }
356
-
357
- func setStepsSecondaryTextColor(hexColor: String) {
358
- customDayStyle.customStepsSecondaryTextColor = UIColor(hex: hexColor)
359
- update()
360
- }
361
-
362
- func setStepsManeuverViewPrimaryColor(hexColor: String) {
363
- customDayStyle.customStepsManeuverViewPrimaryColor = UIColor(hex: hexColor)
364
- update()
365
- }
366
-
367
- func setLaneViewBackgroundColor(hexColor: String) {
368
- customDayStyle.customLaneViewBackgroundColor = UIColor(hex: hexColor)
369
- update()
370
- }
371
-
372
- func setNextBannerBackgroundColor(hexColor: String) {
373
- customDayStyle.customNextBannerBackgroundColor = UIColor(hex: hexColor)
374
- update()
375
- }
376
-
377
- func setNextBannerPrimaryTextColor(hexColor: String) {
378
- customDayStyle.customNextBannerPrimaryTextColor = UIColor(hex: hexColor)
379
- update()
380
- }
381
-
382
- func setNextBannerSecondaryTextColor(hexColor: String) {
383
- customDayStyle.customNextBannerSecondaryTextColor = UIColor(hex: hexColor)
384
- update()
385
- }
386
-
387
- func setNextBannerDistanceTextColor(hexColor: String) {
388
- customDayStyle.customNextBannerDistanceTextColor = UIColor(hex: hexColor)
389
- update()
390
- }
391
-
392
- func setProgressBarProgressColor(hexColor: String) {
393
- customDayStyle.customProgressBarProgressColor = UIColor(hex: hexColor)
394
- update()
395
- }
396
-
397
- func setProgressBarBackgroundColor(hexColor: String) {
398
- customDayStyle.customProgressBarBackgroundColor = UIColor(hex: hexColor)
399
- update()
400
- }
401
-
402
- func setManeuverViewPrimaryColor(hexColor: String) {
403
- customDayStyle.customManeuverViewPrimaryColor = UIColor(hex: hexColor)
404
- update()
405
- }
406
-
407
- func setManeuverViewSecondaryColor(hexColor: String) {
408
- customDayStyle.customManeuverViewSecondaryColor = UIColor(hex: hexColor)
409
- update()
410
- }
411
-
412
- func setManeuverViewPrimaryColorHighlighted(hexColor: String) {
413
- customDayStyle.customManeuverViewPrimaryColorHighlighted = UIColor(hex: hexColor)
414
- update()
415
- }
416
-
417
- func setManeuverViewSecondaryColorHighlighted(hexColor: String) {
418
- customDayStyle.customManeuverViewSecondaryColorHighlighted = UIColor(hex: hexColor)
419
- update()
420
- }
421
-
422
- func setInstructionsCardBackgroundColor(hexColor: String) {
423
- customDayStyle.customInstructionsCardBackgroundColor = UIColor(hex: hexColor)
424
- update()
425
- }
426
-
427
- func setInstructionsCardSeparatorColor(hexColor: String) {
428
- customDayStyle.customInstructionsCardSeparatorColor = UIColor(hex: hexColor)
429
- update()
430
- }
431
-
432
- func setInstructionsCardHighlightedSeparatorColor(hexColor: String) {
433
- customDayStyle.customInstructionsCardHighlightedSeparatorColor = UIColor(hex: hexColor)
434
- update()
435
- }
436
-
437
- func setExitViewForegroundColor(hexColor: String) {
438
- customDayStyle.customExitViewForegroundColor = UIColor(hex: hexColor)
439
- update()
440
- }
441
-
442
- func setExitViewBorderColor(hexColor: String) {
443
- customDayStyle.customExitViewBorderColor = UIColor(hex: hexColor)
444
- update()
445
- }
446
-
447
- func setExitViewHighlightColor(hexColor: String) {
448
- customDayStyle.customExitViewHighlightColor = UIColor(hex: hexColor)
449
- update()
450
- }
451
-
452
- func setRouteShieldForegroundColor(hexColor: String) {
453
- customDayStyle.customRouteShieldForegroundColor = UIColor(hex: hexColor)
454
- update()
455
- }
456
-
457
- func setRouteShieldBorderColor(hexColor: String) {
458
- customDayStyle.customRouteShieldBorderColor = UIColor(hex: hexColor)
459
- update()
460
- }
461
-
462
- func setRouteShieldHighlightColor(hexColor: String) {
463
- customDayStyle.customRouteShieldHighlightColor = UIColor(hex: hexColor)
464
- update()
465
- }
466
-
467
- func setDistanceRemainingColor(hexColor: String) {
468
- customDayStyle.customDistanceRemainingColor = UIColor(hex: hexColor)
469
- update()
470
- }
471
-
472
- func setDistanceUnitColor(hexColor: String) {
473
- customDayStyle.customDistanceUnitColor = UIColor(hex: hexColor)
474
- update()
475
- }
476
-
477
- func setDistanceValueColor(hexColor: String) {
478
- customDayStyle.customDistanceValueColor = UIColor(hex: hexColor)
479
- update()
480
- }
481
-
482
- func setRatingControlNormalColor(hexColor: String) {
483
- customDayStyle.customRatingControlNormalColor = UIColor(hex: hexColor)
484
- update()
485
- }
486
-
487
- func setRatingControlSelectedColor(hexColor: String) {
488
- customDayStyle.customRatingControlSelectedColor = UIColor(hex: hexColor)
489
- update()
490
- }
491
-
492
352
  func update(){
493
353
  calculateRoutesTask?.cancel()
494
354
 
@@ -562,6 +422,13 @@ class ExpoMapboxNavigationViewController: UIViewController {
562
422
  bottomBanner.distanceFormatter.locale = currentLocale
563
423
  bottomBanner.dateFormatter.locale = currentLocale
564
424
 
425
+ // Add pan gesture recognizer to bottom banner
426
+ let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handleBottomBannerPan(_:)))
427
+ bottomBanner.view.addGestureRecognizer(panGesture)
428
+
429
+ // Setup bottom sheet
430
+ setupBottomSheet()
431
+
565
432
  let navigationOptions = NavigationOptions(
566
433
  mapboxNavigation: self.mapboxNavigation!,
567
434
  voiceController: ExpoMapboxNavigationViewController.navigationProvider.routeVoiceController,
@@ -624,6 +491,76 @@ class ExpoMapboxNavigationViewController: UIViewController {
624
491
  navigationMapView?.maneuverArrowColor = arrowColor
625
492
  }
626
493
  }
494
+
495
+ private func setupBottomSheet() {
496
+ bottomSheetViewController = UIViewController()
497
+ guard let bottomSheet = bottomSheetViewController else { return }
498
+
499
+ bottomSheet.view.backgroundColor = .white
500
+ bottomSheet.view.layer.cornerRadius = 16
501
+ bottomSheet.view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
502
+ bottomSheet.view.clipsToBounds = true
503
+
504
+ // Add shadow
505
+ bottomSheet.view.layer.shadowColor = UIColor.black.cgColor
506
+ bottomSheet.view.layer.shadowOffset = CGSize(width: 0, height: -2)
507
+ bottomSheet.view.layer.shadowRadius = 3
508
+ bottomSheet.view.layer.shadowOpacity = 0.2
509
+
510
+ addChild(bottomSheet)
511
+ view.addSubview(bottomSheet.view)
512
+ bottomSheet.didMove(toParent: self)
513
+
514
+ bottomSheet.view.translatesAutoresizingMaskIntoConstraints = false
515
+
516
+ // Position bottom sheet initially off screen
517
+ bottomSheetTopConstraint = bottomSheet.view.topAnchor.constraint(equalTo: view.bottomAnchor)
518
+
519
+ NSLayoutConstraint.activate([
520
+ bottomSheet.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
521
+ bottomSheet.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
522
+ bottomSheet.view.heightAnchor.constraint(equalToConstant: bottomSheetHeight),
523
+ bottomSheetTopConstraint!
524
+ ])
525
+
526
+ // Add some sample content to the bottom sheet
527
+ let label = UILabel()
528
+ label.text = "Bottom Sheet Content"
529
+ label.textAlignment = .center
530
+
531
+ bottomSheet.view.addSubview(label)
532
+ label.translatesAutoresizingMaskIntoConstraints = false
533
+ NSLayoutConstraint.activate([
534
+ label.centerXAnchor.constraint(equalTo: bottomSheet.view.centerXAnchor),
535
+ label.topAnchor.constraint(equalTo: bottomSheet.view.topAnchor, constant: 20)
536
+ ])
537
+ }
538
+
539
+ @objc private func handleBottomBannerPan(_ gesture: UIPanGestureRecognizer) {
540
+ let translation = gesture.translation(in: view)
541
+ let velocity = gesture.velocity(in: view)
542
+
543
+ switch gesture.state {
544
+ case .changed:
545
+ // Update bottom sheet position based on pan
546
+ let newConstant = view.frame.height - bottomSheetHeight + translation.y
547
+ bottomSheetTopConstraint?.constant = min(view.frame.height, max(newConstant, view.frame.height - bottomSheetHeight))
548
+
549
+ case .ended:
550
+ // Determine whether to show or hide based on velocity and position
551
+ let shouldShow = velocity.y < 0 || bottomSheetTopConstraint?.constant ?? 0 < view.frame.height - bottomSheetHeight/2
552
+
553
+ UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut) {
554
+ self.bottomSheetTopConstraint?.constant = shouldShow ?
555
+ self.view.frame.height - self.bottomSheetHeight :
556
+ self.view.frame.height
557
+ self.view.layoutIfNeeded()
558
+ }
559
+
560
+ default:
561
+ break
562
+ }
563
+ }
627
564
  }
628
565
  extension ExpoMapboxNavigationViewController: NavigationViewControllerDelegate {
629
566
  func navigationViewController(_ navigationViewController: NavigationViewController, didRerouteAlong route: Route) {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@complexify/expo-mapbox-navigation",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "Expo module for Mapbox's Navigation SDK",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -100,7 +100,7 @@ export type ExpoMapboxNavigationViewProps = {
100
100
  maneuverViewSecondaryColorHighlighted?: string;
101
101
 
102
102
  // Instructions View
103
- instructionsTextColor?: string; // Color for all instruction text
103
+ instructionsTextColor?: string; // Color for all instruction text
104
104
  instructionsBackgroundColor?: string; // Background color for instruction panels
105
105
 
106
106
  // Instructions Card