@capawesome/capacitor-maps-launcher 0.0.1

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 (42) hide show
  1. package/CapawesomeCapacitorMapsLauncher.podspec +17 -0
  2. package/LICENSE +21 -0
  3. package/Package.swift +28 -0
  4. package/README.md +292 -0
  5. package/android/build.gradle +58 -0
  6. package/android/src/main/AndroidManifest.xml +10 -0
  7. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/MapsLauncher.java +200 -0
  8. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/MapsLauncherPlugin.java +117 -0
  9. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/classes/CustomException.java +20 -0
  10. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/classes/CustomExceptions.java +15 -0
  11. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/classes/options/Destination.java +57 -0
  12. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/classes/options/NavigateOptions.java +54 -0
  13. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/classes/results/GetAvailableAppsResult.java +29 -0
  14. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/classes/results/GetDefaultAppResult.java +25 -0
  15. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/interfaces/Callback.java +5 -0
  16. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/interfaces/EmptyCallback.java +5 -0
  17. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/interfaces/NonEmptyResultCallback.java +7 -0
  18. package/android/src/main/java/io/capawesome/capacitorjs/plugins/mapslauncher/interfaces/Result.java +7 -0
  19. package/android/src/main/res/.gitkeep +0 -0
  20. package/dist/docs.json +329 -0
  21. package/dist/esm/definitions.d.ts +195 -0
  22. package/dist/esm/definitions.js +47 -0
  23. package/dist/esm/definitions.js.map +1 -0
  24. package/dist/esm/index.d.ts +4 -0
  25. package/dist/esm/index.js +7 -0
  26. package/dist/esm/index.js.map +1 -0
  27. package/dist/esm/web.d.ts +7 -0
  28. package/dist/esm/web.js +13 -0
  29. package/dist/esm/web.js.map +1 -0
  30. package/dist/plugin.cjs.js +74 -0
  31. package/dist/plugin.cjs.js.map +1 -0
  32. package/dist/plugin.js +77 -0
  33. package/dist/plugin.js.map +1 -0
  34. package/ios/Plugin/Classes/Options/Destination.swift +36 -0
  35. package/ios/Plugin/Classes/Options/NavigateOptions.swift +23 -0
  36. package/ios/Plugin/Classes/Results/GetAvailableAppsResult.swift +16 -0
  37. package/ios/Plugin/Enums/CustomError.swift +36 -0
  38. package/ios/Plugin/Info.plist +24 -0
  39. package/ios/Plugin/MapsLauncher.swift +182 -0
  40. package/ios/Plugin/MapsLauncherPlugin.swift +71 -0
  41. package/ios/Plugin/Protocols/Result.swift +5 -0
  42. package/package.json +94 -0
@@ -0,0 +1,117 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import androidx.annotation.Nullable;
5
+ import com.getcapacitor.Logger;
6
+ import com.getcapacitor.Plugin;
7
+ import com.getcapacitor.PluginCall;
8
+ import com.getcapacitor.PluginMethod;
9
+ import com.getcapacitor.annotation.CapacitorPlugin;
10
+ import io.capawesome.capacitorjs.plugins.mapslauncher.classes.CustomException;
11
+ import io.capawesome.capacitorjs.plugins.mapslauncher.classes.options.NavigateOptions;
12
+ import io.capawesome.capacitorjs.plugins.mapslauncher.classes.results.GetAvailableAppsResult;
13
+ import io.capawesome.capacitorjs.plugins.mapslauncher.classes.results.GetDefaultAppResult;
14
+ import io.capawesome.capacitorjs.plugins.mapslauncher.interfaces.EmptyCallback;
15
+ import io.capawesome.capacitorjs.plugins.mapslauncher.interfaces.NonEmptyResultCallback;
16
+ import io.capawesome.capacitorjs.plugins.mapslauncher.interfaces.Result;
17
+
18
+ @CapacitorPlugin(name = "MapsLauncher")
19
+ public class MapsLauncherPlugin extends Plugin {
20
+
21
+ public static final String ERROR_UNKNOWN_ERROR = "An unknown error has occurred.";
22
+ public static final String TAG = "MapsLauncherPlugin";
23
+
24
+ private MapsLauncher implementation;
25
+
26
+ @Override
27
+ public void load() {
28
+ super.load();
29
+ this.implementation = new MapsLauncher(this);
30
+ }
31
+
32
+ @PluginMethod
33
+ public void getAvailableApps(PluginCall call) {
34
+ try {
35
+ NonEmptyResultCallback<GetAvailableAppsResult> callback = new NonEmptyResultCallback<>() {
36
+ @Override
37
+ public void success(@NonNull GetAvailableAppsResult result) {
38
+ resolveCall(call, result);
39
+ }
40
+
41
+ @Override
42
+ public void error(Exception exception) {
43
+ rejectCall(call, exception);
44
+ }
45
+ };
46
+ implementation.getAvailableApps(callback);
47
+ } catch (Exception exception) {
48
+ rejectCall(call, exception);
49
+ }
50
+ }
51
+
52
+ @PluginMethod
53
+ public void getDefaultApp(PluginCall call) {
54
+ try {
55
+ NonEmptyResultCallback<GetDefaultAppResult> callback = new NonEmptyResultCallback<>() {
56
+ @Override
57
+ public void success(@NonNull GetDefaultAppResult result) {
58
+ resolveCall(call, result);
59
+ }
60
+
61
+ @Override
62
+ public void error(Exception exception) {
63
+ rejectCall(call, exception);
64
+ }
65
+ };
66
+ implementation.getDefaultApp(callback);
67
+ } catch (Exception exception) {
68
+ rejectCall(call, exception);
69
+ }
70
+ }
71
+
72
+ @PluginMethod
73
+ public void navigate(PluginCall call) {
74
+ try {
75
+ NavigateOptions options = new NavigateOptions(call);
76
+ EmptyCallback callback = new EmptyCallback() {
77
+ @Override
78
+ public void success() {
79
+ resolveCall(call);
80
+ }
81
+
82
+ @Override
83
+ public void error(Exception exception) {
84
+ rejectCall(call, exception);
85
+ }
86
+ };
87
+ implementation.navigate(options, callback);
88
+ } catch (Exception exception) {
89
+ rejectCall(call, exception);
90
+ }
91
+ }
92
+
93
+ private void rejectCall(@NonNull PluginCall call, @NonNull Exception exception) {
94
+ String message = exception.getMessage();
95
+ if (message == null) {
96
+ message = ERROR_UNKNOWN_ERROR;
97
+ }
98
+ String code = null;
99
+ if (exception instanceof CustomException) {
100
+ code = ((CustomException) exception).getCode();
101
+ }
102
+ Logger.error(TAG, message, exception);
103
+ call.reject(message, code);
104
+ }
105
+
106
+ private void resolveCall(@NonNull PluginCall call) {
107
+ call.resolve();
108
+ }
109
+
110
+ private void resolveCall(@NonNull PluginCall call, @Nullable Result result) {
111
+ if (result == null) {
112
+ call.resolve();
113
+ } else {
114
+ call.resolve(result.toJSObject());
115
+ }
116
+ }
117
+ }
@@ -0,0 +1,20 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.classes;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import androidx.annotation.Nullable;
5
+
6
+ public class CustomException extends Exception {
7
+
8
+ @Nullable
9
+ private final String code;
10
+
11
+ public CustomException(@Nullable String code, @NonNull String message) {
12
+ super(message);
13
+ this.code = code;
14
+ }
15
+
16
+ @Nullable
17
+ public String getCode() {
18
+ return code;
19
+ }
20
+ }
@@ -0,0 +1,15 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.classes;
2
+
3
+ public class CustomExceptions {
4
+
5
+ public static final CustomException APP_NOT_AVAILABLE = new CustomException(
6
+ "APP_NOT_AVAILABLE",
7
+ "The requested navigation app is not installed or cannot be launched."
8
+ );
9
+ public static final CustomException DESTINATION_INVALID = new CustomException(
10
+ null,
11
+ "destination must contain either coordinates or an address, but not both."
12
+ );
13
+ public static final CustomException DESTINATION_MISSING = new CustomException(null, "destination must be provided.");
14
+ public static final CustomException LAUNCH_FAILED = new CustomException("LAUNCH_FAILED", "The navigation app could not be launched.");
15
+ }
@@ -0,0 +1,57 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.classes.options;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import androidx.annotation.Nullable;
5
+ import io.capawesome.capacitorjs.plugins.mapslauncher.classes.CustomExceptions;
6
+ import org.json.JSONObject;
7
+
8
+ public class Destination {
9
+
10
+ @Nullable
11
+ private final String address;
12
+
13
+ @Nullable
14
+ private final Double latitude;
15
+
16
+ @Nullable
17
+ private final Double longitude;
18
+
19
+ public Destination(@NonNull JSONObject object) throws Exception {
20
+ boolean hasLatitude = object.has("latitude") && !object.isNull("latitude");
21
+ boolean hasLongitude = object.has("longitude") && !object.isNull("longitude");
22
+ boolean hasCoordinates = hasLatitude && hasLongitude;
23
+ String addressValue = object.isNull("address") ? null : object.optString("address", null);
24
+ boolean hasAddress = addressValue != null && !addressValue.trim().isEmpty();
25
+ if (hasCoordinates == hasAddress) {
26
+ throw CustomExceptions.DESTINATION_INVALID;
27
+ }
28
+ if (hasCoordinates) {
29
+ this.latitude = object.getDouble("latitude");
30
+ this.longitude = object.getDouble("longitude");
31
+ this.address = null;
32
+ } else {
33
+ this.latitude = null;
34
+ this.longitude = null;
35
+ this.address = addressValue;
36
+ }
37
+ }
38
+
39
+ @Nullable
40
+ public String getAddress() {
41
+ return address;
42
+ }
43
+
44
+ @Nullable
45
+ public Double getLatitude() {
46
+ return latitude;
47
+ }
48
+
49
+ @Nullable
50
+ public Double getLongitude() {
51
+ return longitude;
52
+ }
53
+
54
+ public boolean hasCoordinates() {
55
+ return latitude != null && longitude != null;
56
+ }
57
+ }
@@ -0,0 +1,54 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.classes.options;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import androidx.annotation.Nullable;
5
+ import com.getcapacitor.JSObject;
6
+ import com.getcapacitor.PluginCall;
7
+ import io.capawesome.capacitorjs.plugins.mapslauncher.classes.CustomExceptions;
8
+
9
+ public class NavigateOptions {
10
+
11
+ @Nullable
12
+ private final String app;
13
+
14
+ @NonNull
15
+ private final Destination destination;
16
+
17
+ @Nullable
18
+ private final Destination start;
19
+
20
+ @Nullable
21
+ private final String travelMode;
22
+
23
+ public NavigateOptions(@NonNull PluginCall call) throws Exception {
24
+ JSObject destinationObject = call.getObject("destination");
25
+ if (destinationObject == null) {
26
+ throw CustomExceptions.DESTINATION_MISSING;
27
+ }
28
+ this.destination = new Destination(destinationObject);
29
+ JSObject startObject = call.getObject("start");
30
+ this.start = startObject == null ? null : new Destination(startObject);
31
+ this.app = call.getString("app");
32
+ this.travelMode = call.getString("travelMode");
33
+ }
34
+
35
+ @Nullable
36
+ public String getApp() {
37
+ return app;
38
+ }
39
+
40
+ @NonNull
41
+ public Destination getDestination() {
42
+ return destination;
43
+ }
44
+
45
+ @Nullable
46
+ public Destination getStart() {
47
+ return start;
48
+ }
49
+
50
+ @Nullable
51
+ public String getTravelMode() {
52
+ return travelMode;
53
+ }
54
+ }
@@ -0,0 +1,29 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.classes.results;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import com.getcapacitor.JSArray;
5
+ import com.getcapacitor.JSObject;
6
+ import io.capawesome.capacitorjs.plugins.mapslauncher.interfaces.Result;
7
+ import java.util.List;
8
+
9
+ public class GetAvailableAppsResult implements Result {
10
+
11
+ @NonNull
12
+ private final List<String> apps;
13
+
14
+ public GetAvailableAppsResult(@NonNull List<String> apps) {
15
+ this.apps = apps;
16
+ }
17
+
18
+ @Override
19
+ @NonNull
20
+ public JSObject toJSObject() {
21
+ JSArray appsArray = new JSArray();
22
+ for (String app : apps) {
23
+ appsArray.put(app);
24
+ }
25
+ JSObject result = new JSObject();
26
+ result.put("apps", appsArray);
27
+ return result;
28
+ }
29
+ }
@@ -0,0 +1,25 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.classes.results;
2
+
3
+ import androidx.annotation.NonNull;
4
+ import androidx.annotation.Nullable;
5
+ import com.getcapacitor.JSObject;
6
+ import io.capawesome.capacitorjs.plugins.mapslauncher.interfaces.Result;
7
+ import org.json.JSONObject;
8
+
9
+ public class GetDefaultAppResult implements Result {
10
+
11
+ @Nullable
12
+ private final String app;
13
+
14
+ public GetDefaultAppResult(@Nullable String app) {
15
+ this.app = app;
16
+ }
17
+
18
+ @Override
19
+ @NonNull
20
+ public JSObject toJSObject() {
21
+ JSObject result = new JSObject();
22
+ result.put("app", app == null ? JSONObject.NULL : app);
23
+ return result;
24
+ }
25
+ }
@@ -0,0 +1,5 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.interfaces;
2
+
3
+ public interface Callback {
4
+ void error(Exception exception);
5
+ }
@@ -0,0 +1,5 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.interfaces;
2
+
3
+ public interface EmptyCallback extends Callback {
4
+ void success();
5
+ }
@@ -0,0 +1,7 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.interfaces;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ public interface NonEmptyResultCallback<T extends Result> extends Callback {
6
+ void success(@NonNull T result);
7
+ }
@@ -0,0 +1,7 @@
1
+ package io.capawesome.capacitorjs.plugins.mapslauncher.interfaces;
2
+
3
+ import com.getcapacitor.JSObject;
4
+
5
+ public interface Result {
6
+ JSObject toJSObject();
7
+ }
File without changes
package/dist/docs.json ADDED
@@ -0,0 +1,329 @@
1
+ {
2
+ "api": {
3
+ "name": "MapsLauncherPlugin",
4
+ "slug": "mapslauncherplugin",
5
+ "docs": "",
6
+ "tags": [],
7
+ "methods": [
8
+ {
9
+ "name": "getAvailableApps",
10
+ "signature": "() => Promise<GetAvailableAppsResult>",
11
+ "parameters": [],
12
+ "returns": "Promise<GetAvailableAppsResult>",
13
+ "tags": [
14
+ {
15
+ "name": "since",
16
+ "text": "0.1.0"
17
+ }
18
+ ],
19
+ "docs": "Get the navigation apps that are installed and can be launched.\n\nOn iOS, Apple Maps is always included. Google Maps and Waze are only\nincluded if the corresponding `LSApplicationQueriesSchemes` entries are\nadded to the `Info.plist` file of your app.\n\nOnly available on Android and iOS.",
20
+ "complexTypes": [
21
+ "GetAvailableAppsResult"
22
+ ],
23
+ "slug": "getavailableapps"
24
+ },
25
+ {
26
+ "name": "getDefaultApp",
27
+ "signature": "() => Promise<GetDefaultAppResult>",
28
+ "parameters": [],
29
+ "returns": "Promise<GetDefaultAppResult>",
30
+ "tags": [
31
+ {
32
+ "name": "since",
33
+ "text": "0.1.0"
34
+ }
35
+ ],
36
+ "docs": "Get the navigation app that is configured as the default handler for\nnavigation intents.\n\nReturns `null` if the default app is not part of the curated list of\nsupported apps or if no default app is set (i.e. the system shows a\nchooser).\n\nOnly available on Android.",
37
+ "complexTypes": [
38
+ "GetDefaultAppResult"
39
+ ],
40
+ "slug": "getdefaultapp"
41
+ },
42
+ {
43
+ "name": "navigate",
44
+ "signature": "(options: NavigateOptions) => Promise<void>",
45
+ "parameters": [
46
+ {
47
+ "name": "options",
48
+ "docs": "",
49
+ "type": "NavigateOptions"
50
+ }
51
+ ],
52
+ "returns": "Promise<void>",
53
+ "tags": [
54
+ {
55
+ "name": "since",
56
+ "text": "0.1.0"
57
+ }
58
+ ],
59
+ "docs": "Launch a navigation app with turn-by-turn directions to a destination.\n\nIf no `app` is provided, the system default behavior is used (a chooser on\nAndroid, Apple Maps on iOS).\n\nOnly available on Android and iOS.",
60
+ "complexTypes": [
61
+ "NavigateOptions"
62
+ ],
63
+ "slug": "navigate"
64
+ }
65
+ ],
66
+ "properties": []
67
+ },
68
+ "interfaces": [
69
+ {
70
+ "name": "GetAvailableAppsResult",
71
+ "slug": "getavailableappsresult",
72
+ "docs": "",
73
+ "tags": [
74
+ {
75
+ "text": "0.1.0",
76
+ "name": "since"
77
+ }
78
+ ],
79
+ "methods": [],
80
+ "properties": [
81
+ {
82
+ "name": "apps",
83
+ "tags": [
84
+ {
85
+ "text": "0.1.0",
86
+ "name": "since"
87
+ }
88
+ ],
89
+ "docs": "The navigation apps that are installed and can be launched.",
90
+ "complexTypes": [
91
+ "NavigationApp"
92
+ ],
93
+ "type": "NavigationApp[]"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "name": "GetDefaultAppResult",
99
+ "slug": "getdefaultappresult",
100
+ "docs": "",
101
+ "tags": [
102
+ {
103
+ "text": "0.1.0",
104
+ "name": "since"
105
+ }
106
+ ],
107
+ "methods": [],
108
+ "properties": [
109
+ {
110
+ "name": "app",
111
+ "tags": [
112
+ {
113
+ "text": "0.1.0",
114
+ "name": "since"
115
+ }
116
+ ],
117
+ "docs": "The navigation app that is configured as the default handler.\n\nReturns `null` if the default app is not part of the curated list of\nsupported apps or if no default app is set.",
118
+ "complexTypes": [
119
+ "NavigationApp"
120
+ ],
121
+ "type": "NavigationApp | null"
122
+ }
123
+ ]
124
+ },
125
+ {
126
+ "name": "NavigateOptions",
127
+ "slug": "navigateoptions",
128
+ "docs": "",
129
+ "tags": [
130
+ {
131
+ "text": "0.1.0",
132
+ "name": "since"
133
+ }
134
+ ],
135
+ "methods": [],
136
+ "properties": [
137
+ {
138
+ "name": "app",
139
+ "tags": [
140
+ {
141
+ "text": "0.1.0",
142
+ "name": "since"
143
+ }
144
+ ],
145
+ "docs": "The navigation app to launch.\n\nIf not provided, the system default behavior is used (a chooser on\nAndroid, Apple Maps on iOS).",
146
+ "complexTypes": [
147
+ "NavigationApp"
148
+ ],
149
+ "type": "NavigationApp"
150
+ },
151
+ {
152
+ "name": "destination",
153
+ "tags": [
154
+ {
155
+ "text": "0.1.0",
156
+ "name": "since"
157
+ }
158
+ ],
159
+ "docs": "The destination to navigate to.",
160
+ "complexTypes": [
161
+ "Destination"
162
+ ],
163
+ "type": "Destination"
164
+ },
165
+ {
166
+ "name": "start",
167
+ "tags": [
168
+ {
169
+ "text": "0.1.0",
170
+ "name": "since"
171
+ }
172
+ ],
173
+ "docs": "The start location of the route.\n\nIf not provided, the current location of the device is used.\n\n**Note**: The support depends on the selected app. Apple Maps supports it\nfully, Google Maps opens the directions preview instead of starting\nturn-by-turn navigation, and Waze ignores it.",
174
+ "complexTypes": [
175
+ "Destination"
176
+ ],
177
+ "type": "Destination"
178
+ },
179
+ {
180
+ "name": "travelMode",
181
+ "tags": [
182
+ {
183
+ "text": "'driving'",
184
+ "name": "default"
185
+ },
186
+ {
187
+ "text": "0.1.0",
188
+ "name": "since"
189
+ }
190
+ ],
191
+ "docs": "The travel mode to use for the directions.\n\n**Note**: The support depends on the selected app and is best-effort.\nWaze only supports driving and ignores this option.",
192
+ "complexTypes": [
193
+ "TravelMode"
194
+ ],
195
+ "type": "TravelMode"
196
+ }
197
+ ]
198
+ },
199
+ {
200
+ "name": "Destination",
201
+ "slug": "destination",
202
+ "docs": "A destination is either defined by its coordinates or by its address, but\nnot both.",
203
+ "tags": [
204
+ {
205
+ "text": "0.1.0",
206
+ "name": "since"
207
+ }
208
+ ],
209
+ "methods": [],
210
+ "properties": [
211
+ {
212
+ "name": "address",
213
+ "tags": [
214
+ {
215
+ "text": "'Apple Park, Cupertino, CA'",
216
+ "name": "example"
217
+ },
218
+ {
219
+ "text": "0.1.0",
220
+ "name": "since"
221
+ }
222
+ ],
223
+ "docs": "The address of the destination.\n\nMust be provided without `latitude` and `longitude`.",
224
+ "complexTypes": [],
225
+ "type": "string | undefined"
226
+ },
227
+ {
228
+ "name": "latitude",
229
+ "tags": [
230
+ {
231
+ "text": "37.3349",
232
+ "name": "example"
233
+ },
234
+ {
235
+ "text": "0.1.0",
236
+ "name": "since"
237
+ }
238
+ ],
239
+ "docs": "The latitude of the destination.\n\nMust be provided together with `longitude` and without `address`.",
240
+ "complexTypes": [],
241
+ "type": "number | undefined"
242
+ },
243
+ {
244
+ "name": "longitude",
245
+ "tags": [
246
+ {
247
+ "text": "-122.009",
248
+ "name": "example"
249
+ },
250
+ {
251
+ "text": "0.1.0",
252
+ "name": "since"
253
+ }
254
+ ],
255
+ "docs": "The longitude of the destination.\n\nMust be provided together with `latitude` and without `address`.",
256
+ "complexTypes": [],
257
+ "type": "number | undefined"
258
+ }
259
+ ]
260
+ }
261
+ ],
262
+ "enums": [
263
+ {
264
+ "name": "NavigationApp",
265
+ "slug": "navigationapp",
266
+ "members": [
267
+ {
268
+ "name": "AppleMaps",
269
+ "value": "'appleMaps'",
270
+ "tags": [
271
+ {
272
+ "text": "0.1.0",
273
+ "name": "since"
274
+ }
275
+ ],
276
+ "docs": "Apple Maps.\n\nOnly available on iOS."
277
+ },
278
+ {
279
+ "name": "GoogleMaps",
280
+ "value": "'googleMaps'",
281
+ "tags": [
282
+ {
283
+ "text": "0.1.0",
284
+ "name": "since"
285
+ }
286
+ ],
287
+ "docs": "Google Maps."
288
+ },
289
+ {
290
+ "name": "Waze",
291
+ "value": "'waze'",
292
+ "tags": [
293
+ {
294
+ "text": "0.1.0",
295
+ "name": "since"
296
+ }
297
+ ],
298
+ "docs": "Waze."
299
+ }
300
+ ]
301
+ }
302
+ ],
303
+ "typeAliases": [
304
+ {
305
+ "name": "TravelMode",
306
+ "slug": "travelmode",
307
+ "docs": "The travel mode to use for the directions.\n\n- `driving`: Driving directions.\n- `walking`: Walking directions.\n- `bicycling`: Bicycling directions.\n- `transit`: Public transit directions.",
308
+ "types": [
309
+ {
310
+ "text": "'driving'",
311
+ "complexTypes": []
312
+ },
313
+ {
314
+ "text": "'walking'",
315
+ "complexTypes": []
316
+ },
317
+ {
318
+ "text": "'bicycling'",
319
+ "complexTypes": []
320
+ },
321
+ {
322
+ "text": "'transit'",
323
+ "complexTypes": []
324
+ }
325
+ ]
326
+ }
327
+ ],
328
+ "pluginConfigs": []
329
+ }